tlm_req_rsp_channel #(REQ,RSP)

The 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
tlm_req_rsp_channel #(REQ,RSP)
The tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.
Class Hierarchy
tlm_req_rsp_channel#(REQ,RSP)
Class Declaration
class tlm_req_rsp_channel #(
   type REQ = int,
   type RSP = REQ
) extends ovm_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 ovm_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,  
ovm_component parent = null,
int request_fifo_size = 1,
int response_fifo_size = 1)

The name and parent are the standard ovm_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.

tlm_transport_channel #(REQ,RSP)

A tlm_transport_channel is a 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
tlm_transport_channel #(REQ,RSP)
A tlm_transport_channel is a tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface.
Class Hierarchy
Class Declaration
class tlm_transport_channel #(
   type REQ = int,
   type RSP = REQ
) extends 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 ovm_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,  
ovm_component parent = null)

The name and parent are the standard ovm_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.

virtual class ovm_object extends ovm_void
The ovm_object class is the base class for all OVM data and hierarchical classes.
class ovm_report_object extends ovm_object
The ovm_report_object provides an interface to the OVM reporting facility.
virtual class ovm_component extends ovm_report_object
The ovm_component class is the root base class for OVM components.
class tlm_req_rsp_channel #(type REQ = int,
type RSP = REQ) extends ovm_component
The tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.
function new (string name,  
ovm_component parent = null,
int request_fifo_size = 1,
int response_fifo_size = 1)
The name and parent are the standard ovm_component constructor arguments.
class tlm_transport_channel #(
   type REQ = int,
   type RSP = REQ
) extends tlm_req_rsp_channel #(REQ, RSP)
A tlm_transport_channel is a tlm_req_rsp_channel #(REQ,RSP) that implements the transport interface.
function new (string name,  
ovm_component parent = null)
The name and parent are the standard ovm_component constructor arguments.