[source]

Class uvm_tlm_if

uvm_pkg::uvm_tlm_if <T, P> + b_transport() + nb_transport_bw(): uvm_tlm_sync_e + nb_transport_fw(): uvm_tlm_sync_e

Inheritance Diagram of uvm_tlm_if

Base class type to define the transport functions.

Parameters

Name

Default value

Description

T

uvm_tlm_generic_payload

P

uvm_tlm_phase_e

Functions

virtual function uvm_tlm_sync_e nb_transport_fw ( uvm_tlm_generic_payload t, uvm_tlm_phase_e p, uvm_tlm_time delay ) [source]

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.

virtual function uvm_tlm_sync_e nb_transport_bw ( uvm_tlm_generic_payload t, uvm_tlm_phase_e p, uvm_tlm_time delay ) [source]

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(&quot;initiator_socket&quot;, 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

Tasks

virtual function b_transport ( uvm_tlm_generic_payload t, uvm_tlm_time delay ) [source]

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.