config_db 是参数化的,它的类型可以是标量、类句柄、队列、列表,甚至是虚拟接口。通过uvm_config_db::set 和 uvm_config_db::get 函数进行全局存储和检索数据库中的信息。二、set和get函数 1、set函数 set函数的原型为 static function void set(uvm_component cntxt,string inst_name,string field_name,T ...
第四个参数:和set不同,此时的value是那个要从数据库检索值(也就是要从盒子里取得value)的变量。 get 如果成功返回 1 ,如果数据库中没有找到此类资源则返回 0;set是空函数没有返回值。 3、其他说明 inst_name和field_name都可以包含通配符或正则表达式。 cntxt可以为null,这时inst_name提供完整的层次信息,cntxt...
uvm_config_db#(virtual my_if)::set(null, "uvm_test_top", "vif", input_if); 2. 收信(Get): 在`my_driver`或其他UVM组件中,他们在开始工作之前会通过`uvm_config_db#(...)::get(...)`来“收信” - 即查找并获取接口实例的地址。 // 在my_driver中 - 收信 virtual my_if vif; if (...
这里我们知道set的内容放到了一个键值对联合数组m_rsc里了,由于这个键值对联合数组是一个static类型,所以通过uvm_config_db类都可以访问,并且这个键值对联合数组在set函数里就已经做了优先级替换的判断了,于是这就回答了我们上面提出的第一个问题。 剩下的get函数无非就是到键值对联合数组里取值,就比较简单了。 至...
的一些功能进行了扩展,在写入操作上重载了uvm_resource_db的set 函数,在读操作上新建了一个get 函数。 让我们来看看这两个静态函数set and get 函数(有点类似于存储器的写和读功能),首先来看,uvm_config_db 的set 函数。再看uvm_config_db 的get 函数。
对于uvm_config_db来说,在调用get()函数检索数据库的时候,get()函数传递的{cntxt,”.”, inst_name}会作为uvm_re_match()的str的实参,set()函数设置的{cntxt,”.”, inst_name}在经过uvm_glob_to_re()处理后作为uvm_re_match()的实参,这也就是为什么set()参数的inst_name支持正则格式,而get()参数...
I have been trying to set queue values in config db at run phase of test and trying to get that using uvm_config_db in sequence but I am not successful in this(nothing is been obtained in the get call from uvm_config_db), only below mentioned error appears, please let me know were...
//| uvm_config_db#(int)::set(this, "*", "A");// // The parameter value "int" identifies the configuration type as // an int property.// // The <set> and <get> methods provide the same API and // semantics as the set/get_config_* functions in <uvm_component>.//--- c...
// Inside build_phase of componentA and componentAA if (!uvm_config_db#(int)::get(this, "", "m_num_tx", m_num_tx)) begin `uvm_warning("CFG", "m_num_tx not set; using default") end `uvm_info("CFG_GET", $sformatf("Attempting to retrieve dif_pkt_type for %s", get_full...
("e0", this); // Get virtual IF handle from the top level and pass it to everything // in the env level if(!uvm_config_db#(virtual des_if)::get(this, "", "des_if", vif)) `uvm_fatal("TEST", "Did not get vif") uvm_config_db#(virtual des_if)::set(...