# 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 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.

Contents

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_b_passthrough_target_socket | IS-A forward export;
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

## 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 |
new | Construct a new instance of this socket
Connect | Connect this socket to the specified uvm_tlm_b_target_socket

### Methods

### 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 |
new | Construct a new instance of this socket imp is a reference to the class implementing the b_transport() method.
Connect | Connect this socket to the specified uvm_tlm_b_initiator_socket

### Methods

### 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 |
new | Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_bw() method.
Connect | Connect this socket to the specified uvm_tlm_nb_target_socket

### Methods

### 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 |
new | Construct a new instance of this socket imp is a reference to the class implementing the nb_transport_fw() method.
connect | Connect this socket to the specified uvm_tlm_nb_initiator_socket

### Methods

### 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 |
connect | Connect this socket to the specified uvm_tlm_nb_initiator_socket

### Methods

### 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