TLM Channel Classes

This section defines built-in TLM channel classes.

Contents
TLM Channel ClassesThis 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

REQType of the request transactions conveyed by this channel.
RSPType of the reponse 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_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_exportThe put_export provides both the blocking and non-blocking put interface methods to the request FIFO:
get_peek_response_exportThe get_peek_response_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:
get_peek_request_exportThe get_peek_export provides all the blocking and non-blocking get and peek interface methods to the response FIFO:
put_response_exportThe put_export provides both the blocking and non-blocking put interface methods to the response FIFO:
request_apTransactions 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_apTransactions 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_exportExports a single interface that allows a master to put requests and get or peek responses.
slave_exportExports a single interface that allows a slave to get or peek requests and to put responses.
Methods
newThe name and parent are the standard uvm_component constructor arguments.

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.

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
Class Declaration
class uvm_tlm_transport_channel #(
    type  REQ  =  int,
    type  RSP  =  REQ
) extends uvm_tlm_req_rsp_channel #(REQ, RSP)
Ports
transport_exportThe put_export provides both the blocking and non-blocking transport interface methods to the response FIFO:
Methods
newThe name and parent are the standard uvm_component constructor arguments.

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.

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.
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.