The following defines the TLM implementation (imp) classes.
uvm_*_imp ports | The following defines the TLM implementation (imp) classes. |
uvm_*_imp #(T,IMP) | Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. |
uvm_*_imp #(REQ, RSP, IMP, REQ_IMP, RSP_IMP) | Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. |
Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. Each imp port instance must be connected to the component instance that implements the associated interface, typically the imp port’s parent. All other connections-- e.g. to other ports and exports-- are prohibited.
The asterisk in uvm_*_imp may be any of the following
blocking_put nonblocking_put put blocking_get nonblocking_get get blocking_peek nonblocking_peek peek blocking_get_peek nonblocking_get_peek get_peek
Type parameters
T | The type of transaction to be communicated by the imp |
IMP | The type of the component implementing the interface. That is, the class to which this imp will delegate. |
The interface methods are implemented in a component of type IMP, a handle to which is passed in a constructor argument. The imp port delegates all interface calls to this component.
uvm_*_imp #(T,IMP) | |
Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. | |
Methods | |
new | Creates a new unidirectional imp port with the given name and parent. |
Creates a new unidirectional imp port with the given name and parent. The parent must implement the interface associated with this port. Its type must be the type specified in the imp’s type-parameter, IMP.
function new (string name, IMP parent);
Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. Each imp port instance must be connected to the component instance that implements the associated interface, typically the imp port’s parent. All other connections-- e.g. to other ports and exports-- are prohibited.
The interface represented by the asterisk is any of the following
blocking_transport nonblocking_transport transport blocking_master nonblocking_master master blocking_slave nonblocking_slave slave
Type parameters
REQ | Request transaction type |
RSP | Response transaction type |
IMP | Component type that implements the interface methods, typically the the parent of this imp port. |
REQ_IMP | Component type that implements the request side of the interface. Defaults to IMP. For master and slave imps only. |
RSP_IMP | Component type that implements the response side of the interface. Defaults to IMP. For master and slave imps only. |
The interface methods are implemented in a component of type IMP, a handle to which is passed in a constructor argument. The imp port delegates all interface calls to this component.
The master and slave imps have two modes of operation.
The second mode is needed when a component instantiates more than one imp port, as in the uvm_tlm_req_rsp_channel #(REQ,RSP) channel.
uvm_*_imp #(REQ, RSP, IMP, REQ_IMP, RSP_IMP) | |
Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports. | |
Methods | |
new | Creates a new bidirectional imp port with the given name and parent. |
Creates a new bidirectional imp port with the given name and parent. The parent, whose type is specified by IMP type parameter, must implement the interface associated with this port.
Transport imp constructor
function new(string name, IMP imp)
Master and slave imp constructor
The optional req_imp and rsp_imp arguments, available to master and slave imp ports, allow the requests and responses to be handled by different subcomponents. If they are specified, they must point to the underlying component that implements the request and response methods, respectively.
function new(string name, IMP imp, REQ_IMP req_imp=imp, RSP_IMP rsp_imp=imp)
The uvm_tlm_req_rsp_channel contains a request FIFO of type REQ and a response FIFO of type RSP.
class uvm_tlm_req_rsp_channel #( type REQ = int, type RSP = REQ ) extends uvm_component