config_db 传参intf的问题
来源:互联网 发布:mac云盘下载速度慢 编辑:程序博客网 时间:2024/06/12 00:08
Case
对于不同的配置可能某些信号位宽不一样的interface,一般的想法是声明可以传参的interface,如下:
在top层instance的时候,可以根据实际的情况进行传参。如下:
然而,使用config_db的时候会碰一个问题:config_db_set去set到需要用到的地方。如下:
如果uvm_config_db中传的参数的值不等于intf声明的default值,那么会直接报错提示没有找到该interface的声明,从而没办法达到预期的传参的目的。
Cause
uvm_config_db去找virtual OCP_if #(...)时,有点像是去找templete,如果传参与default不一样,比如是DataWidth==32,那么uvm_config_db会去找 OCP_if#(parameter DataWidth=32 .....), 当然就找不到,因为templete只有OCP_if#(parameter DataWidth=64 .....).
Solution 1
所以Interface传参对于UVM来说挺鸡肋的,还不如直接用define.
对于图1,直接用DataWidth=`MBUS_DWIDTH可以绕过这个问题,但没有根本解决。如果在一个env里面既有32又有64的datawidth的interface怎么办呢?通过简单的define就不够用了。
解决的办法就是,然后需要为VIP的config class里面加上一个变量DATA_WIDTH用以标明实际的datawidth,其driver,monitor,packet都以这个变量来识别真正的数据位宽。在top层连线的时候,注意不同的intf位宽不一样。interface声明中,define `MBUS_DWIDTH设定为最大的位宽。
Solution 2
整个env不用config_db来拿virtual interface,
1.top instance interface的时候进行传参
2.在的component中,在declare virtual interface的时候,不要传参了,直接decare。然后通过自建vif assign function,一层一层往下assign,这样就能够保持interface传参的特性。
如下另一个env的做法:
declare直接是: virtual interface OCP_if vif;
- config_db 传参intf的问题
- uvm的config_db
- lua-intf的小技巧
- cisco帧中继的INTF模式
- interface_to_usbdev() -- 根据usb_interface指针intf获取usb_device的地址。
- 读取二代身份证上的相片,函数GetBmp(char * Wlt_File,int intf) 怎么用?
- frame-relay intf-type
- TestLink couldn’t write config_db.inc.php
- 利用lua-intf来调用C++函数
- 问题背后的问题
- 关于问题的问题
- 问题背后的问题
- 有问题的问题?.?
- 的问题
- 问题++: firefox的关闭问题
- 问题:input类型的问题
- 百鸡问题的问题
- 5.4 关于问题的问题
- 占位
- 占位
- 占位
- 占位
- 占位
- config_db 传参intf的问题
- 【2016-12-25】(EI & ISTP)2017年第二届嵌入式系统和移动软件工程IEEE国际会议(ESMSE'2017)
- 跨平台跨系统通用stdint.h、inttypes.h
- POJ 3667 Hotel(线段树+区间合并+延迟标记)
- 占位
- timer定时器
- 获取当天的开始时间、结束时间等等的一个工具类
- 解决Memsql中group_concat内部排序问题
- 人生感悟(换位思考)