UVM_TLM

1、UVM_TLM 1.0

TLM通信中的术语:

  1、put操作:发起者发送数据至目标。

  2、get操作:发起者从目标获取数据。

  3、transport操作:一次put操作 + 一次get操作,A向B发起一个req,B返回给A应答rsp。

  4、peek操作:发起者从目标获取数据(同get一样)。但是目标中的数据还存在(与get的区别)。

  5、port、export:发起者的端口为port,目标的端口为export,port/export体现的是控制流。

2、port与export:

1、port、export、transport的类型:

  有blocking和nonblocking之分;

  有put、get、peek之分;

 blocking:用于阻塞端口,在事件等待的情况下用。

 nonblocking:用于非阻塞端口,数据传输。

2、port、export、imp连接及使用:

--------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

 

总结:port-export-imp的使用时,端口类型固定,端口数目为1对1.

3、analysis_port的使用:

analysis_port(analysis_export)可以连接多个analysis_imp,以广播的形式。

总结:analysis_port一般用在数据包分发到不同的component的情况,如driver中通过ap的方式把pkt发送至ref_model,和scb。

4、tlm_fifo的使用:

uvm_tlm_fifo是uvm_component类型的,它里面内置了多个端口。

 

agentscoreboard之间添加一个uvm_analysis_fifoFIFO的本质是一块缓存加两个IMP
monitorFIFO连接关系中,monitor中依然是analysis_portFIFO中是uvm_analysis_imp,数据流和控制流的方向相同。
scoreboardFIFO的连接关系中,scoreboard中使用blocking_get_port端口,FIFO中使用的是一个get端口的IMP 。
使用fifo的好处是可以通过for循环进行多个端口的连接。使用fifo的多个端口通信例子如下:

---------------------------------------------------------------------------------------------------------------

//uvm_blocking_get_port就是图b 中scoreboard的get_port端。

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

 

// 高亮第一部分为mdl通过fifo将16个exp_port采集的ref_model参考数据连接到scb的代码;

// 高亮第二部分为o_agt通过fifo将act_port采集的dut输出数据连接到scb的代码;

//注意FIFO中的analysis_exportblocking_get_export虽然名字中有关键字export,但是其类型却是IMP

---------------------------------------------------------------------------------------------------------------

 

posted on 2016-08-20 10:32  hematologist  阅读(567)  评论(0编辑  收藏  举报

导航