(2)二者的差异在于uvm_tlm_analysis_fifo有一个analysis_export端口,并且有一个write函数,而uvm_tlm_fifo没有; 3.使用FIFO通信 (1) FIFO的本质是一块缓存加两个IMP,可以在实例化时,通过指定fifo的size参数来指定FIFO缓存的上限, 默认情况下为1.若要把缓存设置为无限大小,将传入的size参数设置为0即可. function...
而对于uvm_tlm_analysis_fifo则比较特殊,因为我们通常不会在uvm_tlm_analysis_fifo中创建出任何的uvm_component,所以uvm_tlm_analysis_fifo所在层次的hierarchy一般也不会影响到UVM环境的运行,所以理论上我们在创建uvm_tlm_analysis_fifo实例时是可以缺省参数parent的,这样UVM环境的拓扑结构就会如图9所示,uvm_tlm_analysis...
通常我们环境中的两个uvm_component之间进行通信时,都会用一个uvm_tlm_analysis_fifo作为媒介,发送数据的组件(如monitor)内部定义一个uvm_analysis_port连接fifo的analysis_export,对应的通信方法是write;接受数据的组件内定义一个uvm_blocking_get_port连接到fifo的blocking_get_export,通信方法用的是get。 那么在这个uv...
uvm_analysis_imp #(T,uvm_tlm_analysis_fifo #(T))analysis_export; 整个数据流是initiator把数据push到fifo中,target需要的时候把数据从fifo中get出来,注意target定义的都是port端口,fifo的端口都是imp,这样的好处是uvm_tlm_analysis_fifo既可以实现一端到多端的目的端(已经内置各种数据处理函数)又可以实现数据缓...
在UVM(Universal Verification Methodology)中,uvm_tlm_analysis_fifo 是一个用于传输分析端口数据的 FIFO(先进先出)队列。设置 uvm_tlm_analysis_fifo 的深度通常是通过构造函数参数来完成的。以下是关于如何设置 uvm_tlm_analysis_fifo 深度的详细解答: 查找uvm_tlm_analysis_fifo 的文档或源代码: 在UVM 的官方文档...
uvm_analysis_portX Exports 当您向父组件提升imp(请参阅下一部分)时使用导出。与端口类似,每个导出都是uvm_port_base类的一个子类,而...。 FIFOsTLM1定义了两个FIFO;uvm_tlm_fifo和uvm_tlm_analysis_fifo。见下面的组件图和类图。TLM1FIFO类图 ChannelsTLM1 ...
UVM:4.3.4 FIFO 上的端口调试,1.uvm_tlm_analysis_fifo有众多端口:1)所有圆圈表示的export虽然名字中有export,但本质上都是IMP。2)peek和get的区别
3.端口实例2 - uvm_tlm_analysis_fifo 另外一种带缓存能力的 analysis port ,叫做 uvm_tlm_analysis_fifo,其本质为 一块 FIFO 加一组端口,如下图所示,共有 3 类,12 import 为一类,包含 一族 *_put_export 、一族 *_get_export 和一族 *_peek_export ,似乎上述都是 export,其实这只是取名为 exp...
uvm_tlm_fifo似乎是解决此类问题的好方法,存储数据包直到需要为止。但是,uvm_tlm_fifo没有analysis export,因此无法将其直接连接到monitor的analysis port。UVM中的uvm_tlm_analysis_fifo可以满足此需求, uvm_tlm_analysis_fifo具有analysis export,因此可以将其直接连接到monitor的analysis port。
在my_env中使用uvm_tlm_analysis_fifo类例化一个fifo。引入connect_phase,将fifo的analysis_export端口连接到i_agt.ap,fifo的blocking_get_export端口连接到mdl.port。(mdl为my_model类的例化对象) 使用fifo的原因:analysis_port是非阻塞性质的, ap.write函数调用完成后马上返回,不会等待数据被接收。