在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6096|回复: 6

[求助] uvm_config_db::get问题请教

[复制链接]
发表于 2013-1-5 18:45:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
刚接触UVM,在看代码时遇到一些疑惑:
function void my_driver::build_phase(uvm_phase phase);
     super.build_phase(phase);
     if(!uvm_config_db#(virtual my_if)::get(this, "", "my_if", vif))
       `uvm_fatal("my_driver", "Error in Getting interface");
     ap = new("ap", this);

endfunction

问题如下:
1、在上面代码中if(!uvm_config_db#(virtual my_if)::get(this, "", "my_if", vif))的作用是什么?是不是判断在当下components中是否存在my_if么?

2、class reference中说uvm_config_db#()::get(cntxt,inst_name,field_name,value)
功能是从cntxt下寻找inst_name路径下名叫fild_name的变量并得到他的值,那参数中的最后一个value是什么作用呢?

3、在上例中,get的返回值应该是my_if的值,那这个值又是什么呢?


谢谢各位前辈
 楼主| 发表于 2013-1-6 10:47:12 | 显示全部楼层
今天继续看了看上面的问题,书上说是将其他component设置给此component的参数通过这个gonfig_db机制的get行为接收过来,哪位大神解释一下上面这个function的作用吧!!!!
发表于 2013-1-6 11:07:52 | 显示全部楼层
可以简单理解为传递实体例化的接口,配合uvm_config_db #(virtual xxx)::set使用
 楼主| 发表于 2013-1-6 11:09:28 | 显示全部楼层
刚才请教了一位同事,原来我以上的理解都是不太正确的啊!!!
get通常与set是一对的,就是将一些变量存储一个表之中,需要的时候可以取用,set可以改变某些变量的值。
对于以上,其作用并不是判断存在不存在这个my_if,而是判断在这个表中my_if是不是已经存在,如果写进去了,那么将这个my_if在表中的值赋给vif。get的返回值存在为1,不存在为0.
 楼主| 发表于 2013-1-6 11:17:03 | 显示全部楼层
回复 3# ericfh
谢谢你的回答,在一些代码中,见过用set设置某些变量的值,是不是可以理解为通过set将某个路径下的某个参数的值存在一个以此路径为索引的表中,当需要时,通过get来得到这个设置的值?
发表于 2013-1-13 21:36:06 | 显示全部楼层
可以设置一个配置来让这个DB set和GET配对,检查你的错误。
发表于 2013-1-18 14:42:35 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-25 14:05 , Processed in 0.019290 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表