# TLM Port Classes

The following classes define the TLM port classes.

Contents

TLM Port Classes | The following classes define the TLM port classes.
uvm_*_port #(T) | These unidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.
uvm_*_port #(REQ,RSP) | These bidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.

## uvm_*_port #(T)

These unidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions. A port can be connected to any compatible port, export, or imp port. Unless its min_size is 0, a port must be connected to at least one implementation of its associated interface.

The asterisk in uvm_*_port is any of the following

>     blocking_put
>     nonblocking_put
>     put

>     blocking_get
>     nonblocking_get
>     get

>     blocking_peek
>     nonblocking_peek
>     peek

>     blocking_get_peek
>     nonblocking_get_peek
>     get_peek

Type parameters

T | The type of transaction to be communicated by the export. The type T is not restricted to class handles and may be a value type such as int,enum,struct or similar.

Ports are connected to interface implementations directly via uvm_*_imp #(T,IMP) ports or indirectly via hierarchical connections to uvm_*_port #(T) and uvm_*_export #(T) ports.

Summary

uvm_*_port #(T)
These unidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.
Methods |
new | The name and parent are the standard uvm_component constructor arguments.

### Methods

### new

The name and parent are the standard uvm_component constructor arguments. The min_size and max_size specify the minimum and maximum number of interfaces that must have been connected to this port by the end of elaboration.

>     function new (string name,
>                   uvm_component parent,
>                   int min_size=1,
>                   int max_size=1)

## uvm_*_port #(REQ,RSP)

These bidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions. A port can be connected to any compatible port, export, or imp port. Unless its min_size is 0, a port must be connected to at least one implementation of its associated interface.

The asterisk in uvm_*_port is any of the following

>     blocking_transport
>     nonblocking_transport
>     transport

>     blocking_master
>     nonblocking_master
>     master

>     blocking_slave
>     nonblocking_slave
>     slave

Ports are connected to interface implementations directly via uvm_*_imp #(REQ,RSP,IMP,REQ_IMP,RSP_IMP) ports or indirectly via hierarchical connections to uvm_*_port #(REQ,RSP) and uvm_*_export #(REQ,RSP) ports.

Type parameters

REQ | The type of request transaction to be communicated by the export
RSP | The type of response transaction to be communicated by the export

Summary

uvm_*_port #(REQ,RSP)
These bidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.
Methods |
new | The name and parent are the standard uvm_component constructor arguments.

### Methods

### new

The name and parent are the standard uvm_component constructor arguments. The min_size and max_size specify the minimum and maximum number of interfaces that must have been supplied to this port by the end of elaboration.

function new (string name, uvm_component parent, int min_size=1, int max_size=1)

> virtual class uvm_component extends uvm_report_object

The uvm_component class is the root base class for UVM components.
Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports.
These unidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.
The unidirectional uvm_*_export is a port that forwards or promotes an interface implementation from a child component to its parent.
Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected ports and exports.
These bidirectional ports are instantiated by components that require, or use, the associated interface to convey transactions.
The bidirectional uvm_*_export is a port that forwards or promotes an interface implementation from a child component to its parent.