# uvm_tlm_fifo_base #(T)

This class is the base for uvm_tlm_fifo#(T). It defines the TLM exports through which all transaction-based FIFO operations occur. It also defines default implementations for each interface method provided by these exports.

The interface methods provided by the put_export and the get_peek_export are defined and described by uvm_tlm_if_base #(T1,T2). See the TLM Overview section for a general discussion of TLM interface definition and usage.

Parameter type

T | The type of transactions to be stored by this FIFO.

Summary

uvm_tlm_fifo_base #(T)
This class is the base for uvm_tlm_fifo#(T).
Class Hierarchy
uvm_void
uvm_object
uvm_report_object
uvm_component
uvm_tlm_fifo_base#(T)
Class Declaration
> virtual class uvm_tlm_fifo_base #(
> | type | T | = | int
> ) extends uvm_component
Ports |
put_export | The put_export provides both the blocking and non-blocking put interface methods to any attached port:
get_peek_export | The get_peek_export provides all the blocking and non-blocking get and peek interface methods:
put_ap | Transactions passed via put or try_put (via any port connected to the put_export) are sent out this port via its write method.
get_ap | Transactions passed via get, try_get, peek, or try_peek (via any port connected to the get_peek_export) are sent out this port via its write method.
Methods |
new | The name and parent are the normal uvm_component constructor arguments.

### Ports

### put_export

The put_export provides both the blocking and non-blocking put interface methods to any attached port:

>     task put (input T t)
>     function bit can_put ()
>     function bit try_put (input T t)

Any put port variant can connect and send transactions to the FIFO via this export, provided the transaction types match. See uvm_tlm_if_base #(T1,T2) for more information on each of the above interface methods.

### get_peek_export

The get_peek_export provides all the blocking and non-blocking get and peek interface methods:

>     task get (output T t)
>     function bit can_get ()
>     function bit try_get (output T t)
>     task peek (output T t)
>     function bit can_peek ()
>     function bit try_peek (output T t)

Any get or peek port variant can connect to and retrieve transactions from the FIFO via this export, provided the transaction types match. See uvm_tlm_if_base #(T1,T2) for more information on each of the above interface methods.

### put_ap

Transactions passed via put or try_put (via any port connected to the put_export) are sent out this port via its write method.

>     function void write (T t)

All connected analysis exports and imps will receive put transactions. See uvm_tlm_if_base #(T1,T2) for more information on the write interface method.

### get_ap

Transactions passed via get, try_get, peek, or try_peek (via any port connected to the get_peek_export) are sent out this port via its write method.

>     function void write (T t)

All connected analysis exports and imps will receive get transactions. See uvm_tlm_if_base #(T1,T2) for more information on the write method.

### Methods

### new

> function new(
> | string | name, |  |
> | uvm_component | parent | = | null
> )

The name and parent are the normal uvm_component constructor arguments. The parent should be null if the uvm_tlm_fifo is going to be used in a statically elaborated construct (e.g., a module). The size indicates the maximum size of the FIFO. A value of zero indicates no upper bound.

> virtual class uvm_void

The uvm_void class is the base class for all UVM classes.

> virtual class uvm_object extends uvm_void

The uvm_object class is the base class for all UVM data and hierarchical classes.

> class uvm_report_object extends uvm_object

The uvm_report_object provides an interface to the UVM reporting facility.

> virtual class uvm_component extends uvm_report_object

The uvm_component class is the root base class for UVM components.

> virtual class uvm_tlm_fifo_base #(
> | type | T | = | int
> ) extends uvm_component

This class is the base for uvm_tlm_fifo#(T).
This class provides storage of transactions between two independently running processes.
The put_export provides both the blocking and non-blocking put interface methods to any attached port:
The get_peek_export provides all the blocking and non-blocking get and peek interface methods:

> function new(
> | string | name, |  |
> | uvm_component | parent | = | null
> )

The name and parent are the normal uvm_component constructor arguments.

> virtual class uvm_tlm_if_base #(
> | type | T1 | = | int,
> | type | T2 | = | int
> )

This class declares all of the methods of the TLM API.