# Uvm\_tlm\_fifo

**URL:** <https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312>\
**Category:** UVM\
**Tags:** UVM, tlm\_fifo\
**Created:** [April 6, 2018, 12:53pm UTC](https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312 "2018-04-06T12:53:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dhee\_27](https://verificationacademy.com/forums/letter_avatar_proxy/v4/letter/d/bc79bd/32.png) [@Dhee\_27](https://verificationacademy.com/forums/u/Dhee_27)\
**Post date:** [April 6, 2018, 12:53pm UTC](https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312/1 "2018-04-06T12:53:48Z")

</div>

Hi ,

I have a question related to uvm\_tlm\_fifo,  
as seen in port and export communication , the implementation of the port is given by the consumers implementation port and connected via the export , so in case of put method , the producer’s put will call the consumer’s put method, but in the case of tlm\_fifo does the fifo provide the implementation of producer’s put ?  
and if not, the fifo is then connected to the consumer which implements a get port , so how does the consumer get the implementation?

any help in this regard will be of great help!!

Cheers,  
Dheeraj

---

<div class="post-metadata">

**Author:** ![tfitz](https://verificationacademy.com/forums/user_avatar/verificationacademy.com/tfitz/32/3025_2.png) [@tfitz](https://verificationacademy.com/forums/u/tfitz)\
**Post date:** [April 6, 2018, 1:56pm UTC](https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312/2 "2018-04-06T13:56:36Z")

</div>

[See the UVM Cookbook](https://verificationacademy.com/cookbook/analysisport).  
As with any TLM communication in UVM, the uvm\_tlm\_fifo includes a put\_export that connects to the producer’s put\_port. When the producer calls put(), the implementation in the fifo puts the data into the fifo queue.  
On the other side of the uvm\_tlm\_fifo, the consumer can call get() from its get\_port and the get\_export in the fifo implements the function to return the data.

---

<div class="post-metadata">

**Author:** ![chr\_sue](https://verificationacademy.com/forums/user_avatar/verificationacademy.com/chr_sue/32/1199_2.png) [@chr\_sue](https://verificationacademy.com/forums/u/chr_sue)\
**Post date:** [April 6, 2018, 5:41pm UTC](https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312/3 "2018-04-06T17:41:53Z")

</div>

_In reply to [Dhee\_27](https://verificationacademy.com/forums/t/uvm-tlm-fifo/34312/2):_

The uvm\_tlm\_fifo has only an export and it is provding a set of blocking methods (get, put, peek) and nonblocking methods try\_put, try\_get, try\_peek. Additionally there are more methods defined like can\_put …  
By connection a component with a port to the uvm\_tlm\_fifo export per definition the component with the port can execute all the methods provided by the uvm\_tlm\_fifo.
