# TLM Channel Classes

This section defines built-in TLM channel classes.

Contents

TLM Channel Classes | This section defines built-in TLM channel classes.
uvm_tlm_req_rsp_channel #(REQ,RSP) | The uvm_tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.
uvm_tlm_transport_channel #(REQ,RSP) | A uvm_tlm_transport_channel is a uvm_tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface.

## uvm_tlm_req_rsp_channel #(REQ,RSP)

The uvm_tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP. These FIFOs can be of any size. This channel is particularly useful for dealing with pipelined protocols where the request and response are not tightly coupled.

#### Type parameters

REQ | Type of the request transactions conveyed by this channel.
RSP | Type of the response transactions conveyed by this channel.

Summary

uvm_tlm_req_rsp_channel #(REQ,RSP)
The uvm_tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.
Class Hierarchy
uvm_void
uvm_object
uvm_report_object
uvm_component
uvm_tlm_req_rsp_channel#(REQ,RSP)
Class Declaration
> class uvm_tlm_req_rsp_channel #(
> | type | REQ | = | int,
> | type | RSP | = | REQ
> ) extends uvm_component
Ports |
put_request_export | The put_export provides both the blocking and non-blocking put interface methods to the request FIFO:
get_peek_response_export | The get_peek_response_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:
get_peek_request_export | The get_peek_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:
put_response_export | The put_export provides both the blocking and non-blocking put interface methods to the response FIFO:
request_ap | Transactions passed via put or try_put (via any port connected to the put_request_export) are sent out this port via its write method.
response_ap | Transactions passed via put or try_put (via any port connected to the put_response_export) are sent out this port via its write method.
master_export | Exports a single interface that allows a master to put requests and get or peek responses.
slave_export | Exports a single interface that allows a slave to get or peek requests and to put responses.
Methods |
new | The name and parent are the standard uvm_component constructor arguments.

### Ports

### put_request_export

The put_export provides both the blocking and non-blocking put interface methods to the request FIFO:

>     task put (input T t);
>     function bit can_put ();
>     function bit try_put (input T t);

Any put port variant can connect and send transactions to the request FIFO via this export, provided the transaction types match.

### get_peek_response_export

The get_peek_response_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:

>     task get (output T t);
>     function bit can_get ();
>     function bit try_get (output T t);
>     task peek (output T t);
>     function bit can_peek ();
>     function bit try_peek (output T t);

Any get or peek port variant can connect to and retrieve transactions from the response FIFO via this export, provided the transaction types match.

### get_peek_request_export

The get_peek_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:

>     task get (output T t);
>     function bit can_get ();
>     function bit try_get (output T t);
>     task peek (output T t);
>     function bit can_peek ();
>     function bit try_peek (output T t);

Any get or peek port variant can connect to and retrieve transactions from the response FIFO via this export, provided the transaction types match.

### put_response_export

The put_export provides both the blocking and non-blocking put interface methods to the response FIFO:

>     task put (input T t);
>     function bit can_put ();
>     function bit try_put (input T t);

Any put port variant can connect and send transactions to the response FIFO via this export, provided the transaction types match.

### request_ap

Transactions passed via put or try_put (via any port connected to the put_request_export) are sent out this port via its write method.

>     function void write (T t);

All connected analysis exports and imps will receive these transactions.

### response_ap

Transactions passed via put or try_put (via any port connected to the put_response_export) are sent out this port via its write method.

>     function void write (T t);

All connected analysis exports and imps will receive these transactions.

### master_export

Exports a single interface that allows a master to put requests and get or peek responses. It is a combination of the put_request_export and get_peek_response_export.

### slave_export

Exports a single interface that allows a slave to get or peek requests and to put responses. It is a combination of the get_peek_request_export and put_response_export.

### Methods

### new

> function new (
> | string | name, |  |
> | uvm_component | parent | = | null,
> | int | request_fifo_size | = | 1,
> | int | response_fifo_size | = | 1
> )

The name and parent are the standard uvm_component constructor arguments. The parent must be null if this component is defined within a static component such as a module, program block, or interface. The last two arguments specify the request and response FIFO sizes, which have default values of 1.

## uvm_tlm_transport_channel #(REQ,RSP)

A uvm_tlm_transport_channel is a uvm_tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface. It is useful when modeling a non-pipelined bus at the transaction level. Because the requests and responses have a tightly coupled one-to-one relationship, the request and response FIFO sizes are both set to one.

Summary

uvm_tlm_transport_channel #(REQ,RSP)
A uvm_tlm_transport_channel is a uvm_tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface.
Class Hierarchy
uvm_void
uvm_object
uvm_report_object
uvm_component
uvm_tlm_req_rsp_channel#(REQ,RSP)
uvm_tlm_transport_channel#(REQ,RSP)
Class Declaration
> class uvm_tlm_transport_channel #(
> | type | REQ | = | int,
> | type | RSP | = | REQ
> ) extends uvm_tlm_req_rsp_channel #(REQ, RSP)
Ports |
transport_export | The put_export provides both the blocking and non-blocking transport interface methods to the response FIFO:
Methods |
new | The name and parent are the standard uvm_component constructor arguments.

### Ports

### transport_export

The put_export provides both the blocking and non-blocking transport interface methods to the response FIFO:

>     task transport(REQ request, output RSP response);
>     function bit nb_transport(REQ request, output RSP response);

Any transport port variant can connect to and send requests and retrieve responses via this export, provided the transaction types match. Upon return, the response argument carries the response to the request.

### Methods

### new

> function new (
> | string | name, |  |
> | uvm_component | parent | = | null
> )

The name and parent are the standard uvm_component constructor arguments. The parent must be null if this component is defined within a statically elaborated construct such as a module, program block, or interface.

> class uvm_tlm_req_rsp_channel #(
> | type | REQ | = | int,
> | type | RSP | = | REQ
> ) extends uvm_component

The uvm_tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.

> class uvm_tlm_transport_channel #(
> | type | REQ | = | int,
> | type | RSP | = | REQ
> ) extends uvm_tlm_req_rsp_channel #(REQ, RSP)

A uvm_tlm_transport_channel is a uvm_tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface.

> virtual class uvm_void

The uvm_void class is the base class for all UVM classes.

> virtual class uvm_object extends uvm_void

The uvm_object class is the base class for all UVM data and hierarchical classes.

> class uvm_report_object extends uvm_object

The uvm_report_object provides an interface to the UVM reporting facility.

> virtual class uvm_component extends uvm_report_object

The uvm_component class is the root base class for UVM components.

> function new (
> | string | name, |  |
> | uvm_component | parent | = | null,
> | int | request_fifo_size | = | 1,
> | int | response_fifo_size | = | 1
> )

The name and parent are the standard uvm_component constructor arguments.

> function new (
> | string | name, |  |
> | uvm_component | parent | = | null
> )

The name and parent are the standard uvm_component constructor arguments.