TLM Sockets

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 passthrough 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.  Passthrough sockets are used to enable connections to cross hierarchical boundaries.

There are eight socket types: the cross of blocking and nonblocking, passthrough 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.

Contents
TLM SocketsEach uvm_tlm_*_socket class is derived from a corresponding uvm_tlm_*_socket_base class.
uvm_tlm_b_initiator_socketIS-A forward port; has no backward path except via the payload contents
uvm_tlm_b_target_socketIS-A forward imp; has no backward path except via the payload contents.
uvm_tlm_nb_initiator_socketIS-A forward port; HAS-A backward imp
uvm_tlm_nb_target_socketIS-A forward imp; HAS-A backward port
uvm_tlm_b_passthrough_initiator_socketIS-A forward port;
uvm_tlm_b_passthrough_target_socketIS-A forward export;
uvm_tlm_nb_passthrough_initiator_socketIS-A forward port; HAS-A backward export
uvm_tlm_nb_passthrough_target_socketIS-A forward export; HAS-A backward port

uvm_tlm_b_initiator_socket

IS-A forward port; has no backward path except via the payload contents

Summary
uvm_tlm_b_initiator_socket
IS-A forward port; has no backward path except via the payload contents
Class Hierarchy
uvm_tlm_b_initiator_socket_base#(T)
uvm_tlm_b_initiator_socket
Class Declaration
class uvm_tlm_b_initiator_socket #(
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_initiator_socket_base #(T)
Methods
newConstruct a new instance of this socket
ConnectConnect this socket to the specified uvm_tlm_b_target_socket

new

function new( string  name,
uvm_component  parent )

Construct a new instance of this socket

Connect

Connect this socket to the specified uvm_tlm_b_target_socket

uvm_tlm_b_target_socket

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);
Summary
uvm_tlm_b_target_socket
IS-A forward imp; has no backward path except via the payload contents.
Class Hierarchy
uvm_tlm_b_target_socket_base#(T)
uvm_tlm_b_target_socket
Class Declaration
class uvm_tlm_b_target_socket #(
    type  IMP  =  int,
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_target_socket_base #(T)
Methods
newConstruct a new instance of this socket imp is a reference to the class implementing the b_transport() method.
ConnectConnect this socket to the specified uvm_tlm_b_initiator_socket

new

function new ( string  name,   
uvm_component  parent,   
IMP  imp  =  null )

Construct a new instance of this socket imp is a reference to the class implementing the b_transport() method.  If not specified, it is assume to be the same as parent.

Connect

Connect this socket to the specified uvm_tlm_b_initiator_socket

uvm_tlm_nb_initiator_socket

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);
Summary
uvm_tlm_nb_initiator_socket
IS-A forward port; HAS-A backward imp
Class Hierarchy
uvm_tlm_nb_initiator_socket_base#(T,P)
uvm_tlm_nb_initiator_socket
Class Declaration
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)
Methods
newConstruct a new instance of this socket imp is a reference to the class implementing the nb_transport_bw() method.
ConnectConnect this socket to the specified uvm_tlm_nb_target_socket

new

function new( string  name,   
uvm_component  parent,   
IMP  imp  =  null )

Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_bw() method.  If not specified, it is assume to be the same as parent.

Connect

Connect this socket to the specified uvm_tlm_nb_target_socket

uvm_tlm_nb_target_socket

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);
Summary
uvm_tlm_nb_target_socket
IS-A forward imp; HAS-A backward port
Class Hierarchy
uvm_tlm_nb_target_socket_base#(T,P)
uvm_tlm_nb_target_socket
Class Declaration
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)
Methods
newConstruct a new instance of this socket imp is a reference to the class implementing the nb_transport_fw() method.
connectConnect this socket to the specified uvm_tlm_nb_initiator_socket

new

function new ( string  name,   
uvm_component  parent,   
IMP  imp  =  null )

Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_fw() method.  If not specified, it is assume to be the same as parent.

connect

function void connect( this_type  provider )

Connect this socket to the specified uvm_tlm_nb_initiator_socket

uvm_tlm_b_passthrough_initiator_socket

IS-A forward port;

Summary
uvm_tlm_b_passthrough_initiator_socket
IS-A forward port;
Class Hierarchy
uvm_tlm_b_passthrough_initiator_socket_base#(T)
uvm_tlm_b_passthrough_initiator_socket
Class Declaration
class uvm_tlm_b_passthrough_initiator_socket #(
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_passthrough_initiator_socket_base #(T)

uvm_tlm_b_passthrough_target_socket

IS-A forward export;

Summary
uvm_tlm_b_passthrough_target_socket
IS-A forward export;
Class Hierarchy
uvm_tlm_b_passthrough_target_socket_base#(T)
uvm_tlm_b_passthrough_target_socket
Class Declaration
class uvm_tlm_b_passthrough_target_socket #(
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_passthrough_target_socket_base #(T)

uvm_tlm_nb_passthrough_initiator_socket

IS-A forward port; HAS-A backward export

Summary
uvm_tlm_nb_passthrough_initiator_socket
IS-A forward port; HAS-A backward export
Class Hierarchy
uvm_tlm_nb_passthrough_initiator_socket_base#(T,P)
uvm_tlm_nb_passthrough_initiator_socket
Class Declaration
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)

uvm_tlm_nb_passthrough_target_socket

IS-A forward export; HAS-A backward port

Summary
uvm_tlm_nb_passthrough_target_socket
IS-A forward export; HAS-A backward port
Class Hierarchy
uvm_tlm_nb_passthrough_target_socket_base#(T,P)
uvm_tlm_nb_passthrough_target_socket
Class Declaration
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)
Methods
connectConnect this socket to the specified uvm_tlm_nb_initiator_socket

connect

function void connect( this_type  provider )

Connect this socket to the specified uvm_tlm_nb_initiator_socket

class uvm_tlm_b_initiator_socket #(
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_initiator_socket_base #(T)
IS-A forward port; 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 imp; has no backward path except via the payload contents.
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 port; HAS-A backward imp
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 imp; HAS-A backward 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;
class uvm_tlm_b_passthrough_target_socket #(
    type  T  =  uvm_tlm_generic_payload
) extends uvm_tlm_b_passthrough_target_socket_base #(T)
IS-A forward 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 port; HAS-A backward export
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)
IS-A forward export; HAS-A backward port
function new( string  name,
uvm_component  parent )
Construct a new instance of this socket
function new ( string  name,   
uvm_component  parent,   
IMP  imp  =  null )
Construct a new instance of this socket imp is a reference to the class implementing the b_transport() method.
function new( string  name,   
uvm_component  parent,   
IMP  imp  =  null )
Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_bw() method.
function new ( string  name,   
uvm_component  parent,   
IMP  imp  =  null )
Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_fw() method.
function void connect( this_type  provider )
Connect this socket to the specified uvm_tlm_nb_initiator_socket
function void connect( this_type  provider )
Connect this socket to the specified uvm_tlm_nb_initiator_socket