uvm_tlm_analysis_fifo类继承于uvm_tlm_fifo,它具有单一TLM端口的数据特性,同时该类又有一个uvm_analysis_imp端口analysis_export并且实现了write()函数。 uvm_analysis_imp #(T,uvm_tlm_analysis_fifo #(T))analysis_export; 整个数据流是initiator把数据push到fifo中,target需要的时候把数据从fifo中get出来,注意...
uvm_tlm_fifo,顾名思义就是具有所有TLM接口方法的FIFO,producer可以将transaction放入uvm_tlm_fifo,consumer独立地从fifo获取transaction 在上图中componentA将一个transaction放到fifo中(put操作,如果fifo满会被block),componentB从fifo中获取一个transaction(get操作,如果fifo空会被block)。 两次连续的get()操作会获得不...
uvm_tlm_analysis_fifo uvm_tlm_fifo 在TLM FIFO中,Producer push到FIFO和consumer 从FIFO pop是相互独立的。 Producer的put_port必须连接到TLM FIFO的put_export,consumer 的get_port必须连接至TLM FIFO的get_export。在连接阶段,与uvm_tIm_fifo的连接建立在更高的层次级别(例如env类)。 uvm_tlm_fifo Methods u...
uvm_tlm_fifo是参数化的FIFO以指定存储在fifo中的对象类型,具有put export和get exports。uvm_tlm_fifo的构造函数具有一个用于指示fifo的最大深度(默认为1)的参数。 代码语言:javascript 复制 classproducer_1_consumer_2extendsuvm_component;producer_1 producer1_inst;consumer_2 consumer2_inst;uvm_tlm_fifo#(si...
1.uvm_tlm_analysis_fifo(参数化的类) (1) uvm_tlm_analysis_fifo中的*_export,虽然名字中有export,但是本质上都是IMP; (2) uvm_tlm_analysis_fifo内的缓冲使用system verilog中的mailbox实现; (3)需要补充fifo的相关函数,如put,get,try_put,try_get; ...
UVM 提供了 uvm_tlm_fifo来促进这种进程间通信。uvm_tlm_fifo实现了所有的TLM接⼝⽅法,因此producer将transaction放⼊uvm_tlm_fifo,⽽consumer则独⽴从fifo中获取transaction,如下图所⽰。 当producer向fifo中put一个transaction时,如果fifo已满则阻塞,否则成功将transaction放入fifo并立即返回。如果fifo中存在...
FIFO的端口定义为uvm_tlm_analysis_fifo,由于将monitor封装到agent中,所以monitor的端口对外用agent的端口表示。 在connect phase中,连接格式:端口名.connect(FIFO名.端口类型)。使用FIFO通信后,有三个优点,首先是在接收transaction的组件中不用建立一个write函数,可以主动进行数据接收,不用跟着发送端的节奏。其次,在FIF...
1.uvm_put/get_port与uvm_tlm_fifo使用示例(blocking) 1.1 top.sv 1moduletop;2import uvm_pkg::*;3`include"uvm_macros.svh"45import example_pkg::*;67initialrun_test("communication_test");8endmodule: top 1.2 example_pkg.sv 1package example_pkg;2import uvm_pkg::*;3`include"uvm_macros.svh...
m是FIFO 内部的缓存,用mailbox 实现。 4)get被调用时,同样会有transaction 从get_ap 上发出: 2.FIFO 有两种类型,另一种是uvm_tlm_fifo。区别在于前者有一个analysis_export,并且有一个write 函数,而后者没有。 3.UVM 提供了调试FIFO的函数 1)used 查询FIFO 缓存中有多少transaction。
这个设计的层次包含两个组件,producer和consumer。producer包含三个组件,stim、fifo和conv。consumer包含两个组件,fifo和drv。这两个fifo都是uvm_tlm_fifo组件的例化。 从顶层角度看,producer的put_port与consumer的put_export相连。在上图中,A、B、D和F是标准的 peer-to-peer连接。连接A的代码为: ...