PORT及FIFO是UVM各个验证部件间传输数据的通道,本文主要内容是对uvm_analysis_port及uvm_tlm_fifo/uvm_tlm_analysis_fifo进行详细分析,解决新人对这块比较绕和头疼的问题。 一、analysis port/export/imp的结构,作用及使用指南 1.1 PORT是UVM各个验证部件间传输数据的通道,UVM中port及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 uvm_tlm_fifo Example `...
对于uvm_tlm_fifo来讲,存放的数据类型是固定的,因为作为一个fifo里面存放的数据肯定类型是一致的。uvm_tlm_fifo还提供put、get以及peek对应的端口。 uvm_put_imp #(T,this_type)blocking_put_export;uvm_put_imp #(T,this_type)nonblocking_put_export;uvm_get_peek_imp #(T,this_type)blocking_get_export;...
对于uvm_tlm_fifo来讲,存放的数据类型是固定的,因为作为一个fifo里面存放的数据肯定类型是一致的。uvm_tlm_fifo还提供put、get以及peek对应的端口。 uvm_put_imp #(T,this_type)blocking_put_export;uvm_put_imp #(T,this_type)nonblocking_put_export;uvm_get_peek_imp #(T,this_type)blocking_get_export;...
在monitor与FIFO的连接关系中,monitor中依然是analysis_port,FIFO中是uvm_analysis_imp,数据流和控制流的方向相同。 在scoreboard与FIFO的连接关系中,scoreboard中使用blocking_get_port端口,FIFO中使用的是一个get端口的IMP 。 使用fifo的好处是可以通过for循环进行多个端口的连接。使用fifo的多个端口通信例子如下: ...
A.TLM中的get( )操作会从TLM FIFO返回一个事务,并从FIFO删除该事务B.interface便于设计重用,当两个块之间有两个信号之间的连接,并使用特定协议传输,应当考虑接口C.TLM port和export之间连接建立了两个组件之间的通信机制D.TLM ports/FIFO可用于driver和sequencer之间的连接E.当producer组件和consumer组件需要通信时,...
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...
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)。
当producer向fifo中put一个transaction时,如果fifo已满则阻塞,否则成功将transaction放入fifo并立即返回。如果fifo中存在transaction,get操作将立即返回这个transaction,并且从fifo中删除这个transaction,否则它将阻塞直到能够获取一个transaction。 因此,两次连续的get() 将向consumer产生不同的transaction。而 peek()方法返回...
连接producer_1组件和consumer_2组件的一种非常常见的方法是使用uvm_tlm_fifo组件。uvm_tlm_fifo是参数化的FIFO以指定存储在fifo中的对象类型,具有put export和get exports。uvm_tlm_fifo的构造函数具有一个用于指示fifo的最大深度(默认为1)的参数。 classproducer_1_consumer_2extendsuvm_component; ...