1.uvm_analysis_port是一个基于TLM基类,它为通信提供了一种写方法。TLM analysis_port将事务transaction传播到一个或多个组件。 2.uvm_analysis_port可以在不执行任何uvm_analysis_imp或uvm_analysis_export的情况下被打开。 3.单个uvm_analysis_port可以与uvm_analysis_imp或uvm_anaysis_export连接。不会报告任何错误。
1.首先我们需要造一个喇叭,也就是create一个analysis_port。 这一步的做法就是在monitor里面插入一个uvm_analysis_port类,用法如下: uvm_analysis_port#(jelly_bean_transaction) jb_ap; function void build_phase(uvm_phase phase); super.build_phase(phase); void'(uvm_resource_db#(virtual jelly_bean_if...
uvm_analysis_port是一个特别的TLM port,其接口包含一个函数write()。 uvm_analysis_port包含一个连接到它的analysis_exports列表。当组件调用analysis_port.write()时,analysis_port会遍历该列表并调用每个analysis_export的write()方法。如果没有任何连接,write()的调用就直接返回。因此,一个uvm_analysis_port可以连...
其中exp_port端口接收的transaction表示希望得到的transaction,act_port中得到的表示实际从DUT发出的transaction,如果这两者比对一致,则表示DUT正常处理了数据。 在env中,需要定义FIFO,并将各个组件的端口和FIFO链接起来,完成transaction的传递。代码如下: FIFO的端口定义为uvm_tlm_analysis_fifo,由于将monitor封装到agent中,...
UVM中的Analysis ports与常规TLM port类似,但是可以不连接或者连接到任意数量的analysis exports。 从callbacks的角度来看,analysis exports实质上是可以设置不同数量端口连接的callbacks。Analysis ports具有以事务作为参数的函数write()。每个Analysis ports都有一个被连接的analysis exports列表,当调用Analysis ports的writ...
uvm_tlm_fifo是uvm_component类型的,它里面内置了多个端口。 在agent和scoreboard之间添加一个uvm_analysis_fifo。FIFO的本质是一块缓存加两个IMP。 在monitor与FIFO的连接关系中,monitor中依然是analysis_port,FIFO中是uvm_analysis_imp,数据流和控制流的方向相同。
tlm_fifo_base中,定义了两个analysis_port,负责将trans,广播出去; 两个imp,分别实现,get,put,等等全部的interface function接口; tlm_fifo中,定义了mailbox,可以在fifo new的时候,显式指定fifo的深度;默认1 具体实现put,get等函数;(实现并不像parent中的那样具体);单纯写入mailbox,再用analysis port写出去; ...
5.1 TLM_FIFO 5.2 Analysis port 在initiator 端调用wirte()函数时, 实际上它是通过循环的方式将所有连接的 target 端内置的 write()函数进行了调用。由于函数立即返回的特点, 无论连接多少个 target 端, initiator 端调用 write()函数总是可以立即返回的。这里稍微不同于之前单一端口函数调用的是,即使没有target...
1.uvm_tlm_analysis_fifo 有众多端口: 1)所有圆圈表示的export 虽然名字中有export,但本质上都是IMP。 2)peek 和 get 的区别是peek调用时,FIFO 会把transaction 复制一份发出去,内部缓存中的transaction 数量并不会减少。 3)除了12 个IMP外,还有两个analysis_port:put_ap 和 get_ap。当blocking_put_export ...
多向通信指的是, 如果initiator与target之间的相同TLM端口数目超过一个时的处理解决办法。 comp1有两个uvm_blocking_put_port, 而comp2有两个uvm_blocking_put_imp端口, 我们对于端口例化可以给不同名字, 连接也可以通过不同名字来索引, 但问题在于comp2中需要实现两 一 ...