Each uvm_tlm_*_socket class is derived from a corresponding uvm_tlm_*_socket_base class. The base class contains most of the implementation of the class, The derived classes (in this file) contain the connection semantics.
Sockets come in several flavors: Each socket is either an initiator or a target, a pass-through or a terminator. Further, any particular socket implements either the blocking interfaces or the nonblocking interfaces. Terminator sockets are used on initiators and targets as well as interconnect components as shown in the figure above. Pass-through sockets are used to enable connections to cross hierarchical boundaries.
There are eight socket types: the cross of blocking and nonblocking, pass-through and termination, target and initiator
Sockets are specified based on what they are (IS-A) and what they contains (HAS-A). IS-A and HAS-A are types of object relationships. IS-A refers to the inheritance relationship and HAS-A refers to the ownership relationship. For example if you say D is a B that means that D is derived from base B. If you say object A HAS-A B that means that B is a member of A.
UVM TLM Sockets | Each uvm_tlm_*_socket class is derived from a corresponding uvm_tlm_*_socket_base class. |
uvm_tlm_b_initiator_socket | IS-A forward port; has no backward path except via the payload contents |
uvm_tlm_b_target_socket | IS-A forward imp; has no backward path except via the payload contents. |
uvm_tlm_nb_initiator_socket | IS-A forward port; HAS-A backward imp |
uvm_tlm_nb_target_socket | IS-A forward imp; HAS-A backward port |
uvm_tlm_b_passthrough_initiator_socket | IS-A forward port; |
uvm_tlm_nb_passthrough_initiator_socket | IS-A forward port; HAS-A backward export |
uvm_tlm_nb_passthrough_target_socket | IS-A forward export; HAS-A backward port |
IS-A forward port; has no backward path except via the payload contents
uvm_tlm_b_initiator_socket | |||||||||||||||||
IS-A forward port; has no backward path except via the payload contents | |||||||||||||||||
Class Hierarchy | |||||||||||||||||
| |||||||||||||||||
Class Declaration | |||||||||||||||||
|
IS-A forward imp; has no backward path except via the payload contents.
The component instantiating this socket must implement a b_transport() method with the following signature
task b_transport(T t, uvm_tlm_time delay);
uvm_tlm_b_target_socket | ||||||||||||||||||||||
IS-A forward imp; has no backward path except via the payload contents. | ||||||||||||||||||||||
Class Hierarchy | ||||||||||||||||||||||
| ||||||||||||||||||||||
Class Declaration | ||||||||||||||||||||||
|
IS-A forward port; HAS-A backward imp
The component instantiating this socket must implement a nb_transport_bw() method with the following signature
function uvm_tlm_sync_e nb_transport_bw(T t, ref P p, input uvm_tlm_time delay);
uvm_tlm_nb_initiator_socket | |||||||||||||||||||||||||||
IS-A forward port; HAS-A backward imp | |||||||||||||||||||||||||||
Class Hierarchy | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
Class Declaration | |||||||||||||||||||||||||||
|
IS-A forward imp; HAS-A backward port
The component instantiating this socket must implement a nb_transport_fw() method with the following signature
function uvm_tlm_sync_e nb_transport_fw(T t, ref P p, input uvm_tlm_time delay);
uvm_tlm_nb_target_socket | |||||||||||||||||||||||||||
IS-A forward imp; HAS-A backward port | |||||||||||||||||||||||||||
Class Hierarchy | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
Class Declaration | |||||||||||||||||||||||||||
|
IS-A forward port;
uvm_tlm_b_passthrough_initiator_socket | |||||||||||||||||
IS-A forward port; | |||||||||||||||||
Class Hierarchy | |||||||||||||||||
| |||||||||||||||||
Class Declaration | |||||||||||||||||
|
IS-A forward port; HAS-A backward export
uvm_tlm_nb_passthrough_initiator_socket | ||||||||||||||||||||||
IS-A forward port; HAS-A backward export | ||||||||||||||||||||||
Class Hierarchy | ||||||||||||||||||||||
| ||||||||||||||||||||||
Class Declaration | ||||||||||||||||||||||
|
IS-A forward export; HAS-A backward port
uvm_tlm_nb_passthrough_target_socket | ||||||||||||||||||||||
IS-A forward export; HAS-A backward port | ||||||||||||||||||||||
Class Hierarchy | ||||||||||||||||||||||
| ||||||||||||||||||||||
Class Declaration | ||||||||||||||||||||||
|
IS-A forward port; has no backward path except via the payload contents
class uvm_tlm_b_initiator_socket #( type T = uvm_tlm_generic_payload ) extends uvm_tlm_b_initiator_socket_base #(T)
IS-A forward imp; has no backward path except via the payload contents.
class uvm_tlm_b_target_socket #( type IMP = int, type T = uvm_tlm_generic_payload ) extends uvm_tlm_b_target_socket_base #(T)
IS-A forward port; HAS-A backward imp
class uvm_tlm_nb_initiator_socket #( type IMP = int, type T = uvm_tlm_generic_payload, type P = uvm_tlm_phase_e ) extends uvm_tlm_nb_initiator_socket_base #(T,P)
IS-A forward imp; HAS-A backward port
class uvm_tlm_nb_target_socket #( type IMP = int, type T = uvm_tlm_generic_payload, type P = uvm_tlm_phase_e ) extends uvm_tlm_nb_target_socket_base #(T,P)
IS-A forward port;
class uvm_tlm_b_passthrough_initiator_socket #( type T = uvm_tlm_generic_payload ) extends uvm_tlm_b_passthrough_initiator_socket_base #(T)
IS-A forward port; HAS-A backward export
class uvm_tlm_nb_passthrough_initiator_socket #( type T = uvm_tlm_generic_payload, type P = uvm_tlm_phase_e ) extends uvm_tlm_nb_passthrough_initiator_socket_base #(T,P)
IS-A forward export; HAS-A backward port
class uvm_tlm_nb_passthrough_target_socket #( type T = uvm_tlm_generic_payload, type P = uvm_tlm_phase_e ) extends uvm_tlm_nb_passthrough_target_socket_base #(T,P)