TLM2 Types

Summary
TLM2 Types
Enumerations
uvm_tlm_phase_eNonblocking transport synchronization state values between an initiator and a target.
uvm_tlm_sync_ePre-defined phase state values for the nonblocking transport Base Protocol between an initiator and a target.
Macros
`UVM_TLM_TASK_ERRORDefines Not-Yet-Implemented TLM tasks
`UVM_TLM_FUNCTION_ERRORDefines Not-Yet-Implemented TLM functions

uvm_tlm_phase_e

Nonblocking transport synchronization state values between an initiator and a target.

UNINITIALIZED_PHASEDefaults for constructor
BEGIN_REQBeginning of request phase
END_REQEnd of request phase
BEGIN_RESPBeginning of response phase
END_RESPEnd of response phase

uvm_tlm_sync_e

Pre-defined phase state values for the nonblocking transport Base Protocol between an initiator and a target.

UVM_TLM_ACCEPTEDTransaction has been accepted
UVM_TLM_UPDATEDTransaction has been modified
UVM_TLM_COMPLETEDExecution of transaction is complete

`UVM_TLM_TASK_ERROR

Defines Not-Yet-Implemented TLM tasks

`UVM_TLM_FUNCTION_ERROR

Defines Not-Yet-Implemented TLM functions

uvm_tlm_if

Base class type to define the transport functions.

Summary
uvm_tlm_if
Base class type to define the transport functions.
Class Declaration
class uvm_tlm_if #(
    type  T  =  uvm_tlm_generic_payload,
    type  P  =  uvm_tlm_phase_e
)
tlm transport methodsEach of the interface methods take a handle to the transaction to be transported and a reference argument for the delay.
nb_transport_fwForward path call.
nb_transport_bwImplementation of the backward path.
b_transportExecute a blocking transaction.

tlm transport methods

Each of the interface methods take a handle to the transaction to be transported and a reference argument for the delay.  In addition, the nonblocking interfaces take a reference argument for the phase.

nb_transport_fw

virtual function uvm_tlm_sync_e nb_transport_fw(
    t,
    ref  p,
    input  uvm_tlm_time  delay
)

Forward path call.  The first call to this method for a transaction marks the initial timing point.  Every call to this method may mark a timing point in the execution of the transaction.  The timing annotation argument allows the timing points to be offset from the simulation times at which the forward path is used.  The final timing point of a transaction may be marked by a call to nb_transport_bw or a return from this or subsequent call to nb_transport_fw.

See TLM2 Interfaces, Ports, Exports and Transport Interfaces Subset for more details on the semantics and rules of the nonblocking transport interface.

nb_transport_bw

virtual function uvm_tlm_sync_e nb_transport_bw(
    t,
    ref  p,
    input  uvm_tlm_time  delay
)

Implementation of the backward path.  This function MUST be implemented in the INITIATOR component class.

Every call to this method may mark a timing point, including the final timing point, in the execution of the transaction.  The timing annotation argument allows the timing point to be offset from the simulation times at which the backward path is used.  The final timing point of a transaction may be marked by a call to nb_transport_fw or a return from this or subsequent call to nb_transport_bw.

See TLM2 Interfaces, Ports, Exports and Transport Interfaces Subset for more details on the semantics and rules of the nonblocking transport interface.

Example

class master extends uvm_component;

uvm_tlm_nb_initiator_socket #(trans, uvm_tlm_phase_e, this_t) initiator_socket;

...
function void build_phase(uvm_phase phase);

initiator_socket = new(“initiator_socket”, this, this);

   endfunction

   function uvm_tlm_sync_e nb_transport_bw(ref trans t,
                                  ref uvm_tlm_phase_e p,
                                  input uvm_tlm_time delay);
       transaction = t;
       state = p;
       return UVM_TLM_ACCEPTED;
   endfunction

   ...
endclass

b_transport

virtual task b_transport(
    t,
    uvm_tlm_time  delay
)

Execute a blocking transaction.  Once this method returns, the transaction is assumed to have been executed.  Whether that execution is successful or not must be indicated by the transaction itself.

The callee may modify or update the transaction object, subject to any constraints imposed by the transaction class.  The initiator may re-use a transaction object from one call to the next and across calls to b_transport().

The call to b_transport shall mark the first timing point of the transaction.  The return from b_transport shall mark the final timing point of the transaction.  The timing annotation argument allows the timing points to be offset from the simulation times at which the task call and return are executed.

class uvm_tlm_if #(
    type  T  =  uvm_tlm_generic_payload,
    type  P  =  uvm_tlm_phase_e
)
Base class type to define the transport functions.
virtual function uvm_tlm_sync_e nb_transport_fw(
    t,
    ref  p,
    input  uvm_tlm_time  delay
)
Forward path call.
virtual function uvm_tlm_sync_e nb_transport_bw(
    t,
    ref  p,
    input  uvm_tlm_time  delay
)
Implementation of the backward path.
virtual task b_transport(
    t,
    uvm_tlm_time  delay
)
Execute a blocking transaction.
Sockets group together all the necessary core interfaces for transportation and binding, allowing more generic usage models than just TLM core interfaces.