微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > UVM中port, export, imp是什么关系啊?

UVM中port, export, imp是什么关系啊?

时间:10-02 整理:3721RD 点击:
在看UVM的手册,怎么export的变量是定义成imp类型的呢?直接定义成export类型不行吗?
下面是手册上的一个例子
class consumer extends uvm_component;
uvm_blocking_put_imp #(simple_trans, consumer) put_export;
......

我自己看了看guide line说
port可通过imp port直接连到接口的实现,也可以与port,export相连间接地连到实现
export是将子组件中的接口实现转发到父类的组件中。
所以常用的应该是port 和 imp port,我查了FIFO和subscriber的export类型都是imp port类型
但是有两个问题:
1. 明明定义的是imp port类型,变量名字却要写成*_export, 为什么?
2. export具体有哪些应用?

对于第一个问题,也许是为了理解方便,一进一出,只是命名的意义问题,我个人是这么认为的;
对于第二个问题,好像用户手册里面有类似的介绍,你可以找找看。

新人学习下。

举个例子,比如有一个monitor有一个imp,monitor的上一层是一个agent,那么monitor的imp可以通过agent的export和agent之外的port连接。

谢谢谢谢,这个例子举得太好了,浅显易懂:)

呵呵吗,学习

学习了

学习一下......

学习一下......Thanks!

学习一下......Thanks!

学习了 ~

学习了,谢谢

按照自己的理解,imp应该就是port的实现吧,它的第二个参数将component传递进去调用重写的write函数。但是对象的名字貌似起的有问题。uvm_subscriber中的imp也是这样的。export可以作为中间节点。不对的地方请指教。

我来回答一下吧,不对的地方,还请指教。
在uvm中,有三种端口,分别是port/export/imp
(1)连接关系:
a) port -> export -> imp
b) port -> imp
也就是说,任何一种连接关系,都必须以imp类型端口作为结尾。
原因:port & export 只有传递transaction的功能,并不能存储transaction。因此,port & export端口上调用的任何一种任务/函数,譬如get()/put()/transport()/peek()/write()等等,最后都是通过调用imp端口上定义的对应的任务/函数来实现对transaction的的数据处理
(2)回到你的问题上,其实在UVM中很多imp端口定义时,名字写成“export”的原因,主要是照顾了user的习惯理解。因为这个链接关系最后还是以imp作为结尾。除此之外,你还能看到在uvm_tlm_analysis_fifo的源码中,所有的export名字的端口,其实都是imp类型的,只是把它隐藏起来了,方便理解应用而已。

学习一下。。

学习了,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top