uvm_config_db::get问题请教
时间:10-02
整理:3721RD
点击:
刚接触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的值,那这个值又是什么呢?
谢谢各位前辈
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的值,那这个值又是什么呢?
谢谢各位前辈
今天继续看了看上面的问题,书上说是将其他component设置给此component的参数通过这个gonfig_db机制的get行为接收过来,哪位大神解释一下上面这个function的作用吧!
可以简单理解为传递实体例化的接口,配合uvm_config_db #(virtual xxx)::set使用
刚才请教了一位同事,原来我以上的理解都是不太正确的啊!
get通常与set是一对的,就是将一些变量存储一个表之中,需要的时候可以取用,set可以改变某些变量的值。
对于以上,其作用并不是判断存在不存在这个my_if,而是判断在这个表中my_if是不是已经存在,如果写进去了,那么将这个my_if在表中的值赋给vif。get的返回值存在为1,不存在为0.
谢谢你的回答,在一些代码中,见过用set设置某些变量的值,是不是可以理解为通过set将某个路径下的某个参数的值存在一个以此路径为索引的表中,当需要时,通过get来得到这个设置的值?
可以设置一个配置来让这个DB set和GET配对,检查你的错误。
学习了