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(this, "e0.a0.*", "des_if", vif); // Setp pattern queue and place into config db uvm_config_db#(bit[`LENGTH...
set和get方法是静态的,所以必须使用 ::三、一个示例 在test中set:class my_test extends uvm_test;my_config cfg;...function void bulid_phase(uvm_phase phase);...uvm_config_db#(my_config)::set(this,"env","cfg",cfg);...endfunctionendclass 在test.env中get:class my_env extends uvm_env;...
virtualtaskpre_body();if(uvm_config_db#(int)::get(null, get_full_name(),"count", count)) `uvm_info("seq0", $sformatf("get count value %0d via config_db", count), UVM_MEDIUM)else`uvm_error("seq0","can't get count value!") #10000; uvm_config_db#(bit)::set(uvm_root::...
//if (!uvm_config_db#(diff_packet)::get(this, "", "dif_pkt_type", my_dif_pkt_type)) begin if (!uvm_config_db#(diff_packet)::get(this, get_full_name(), "dif_pkt_type", my_dif_pkt_type)) begin `uvm_warning("CFG", $sformatf("dif_pkt_type not set; defaulting to COMPA...
uvm_config_db#(int)::set(null,"uvm_test_top.fifo_env.wr_agt.drv","wr_stop_sig",wr_stop_sig) get函数为: uvm_config_db#(int)::get(this,"","wr_stop_sig",wr_stop_sig); 因为是在top中set,第一个参数为null,会自动替换为uvm_root::get(),即uvm_top。
get exists wait_modified 今天我们就通过这四个method来一点点揭开uvm_config_db神秘的面纱。 首先我们最先有的疑惑就是,当我们调用set这个function的时候,我们所set的变量被存在了何处? 我们看到uvm_config_db是从uvm_resource_db继承而来的。 这个uvm_resource是个什么数据类型?
1.config_db::set 的第二个参数是字符串,经常出错,可以通过get_full_name 来获得。对driver 进行设置: 对sequence 某个参数设置,可以: 2.但在build_phase 时,整棵UVM 树还为形成,会引起空指针错误。要想这么做有两种方法: 1)都在new 中create
对于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()参数...
综上,uvm_config_db::set()和uvm_resource_db::set()是没有任何继承继承关系的。 从user的角度来讲,uvm_config_db::set/get是经常用到的。 第一个参数是uvm_component,所以一定要特别留心在sequence中参数设定的时候,这里不能是this,必须要是一个uvm_component的类型。