在top_tb中通过config_db机制的set函数设置virtual interface时,set函数的第一个函数为null。在这种情况下,UVM会自动把第一个单数替换为uvm_root::get(),即uvm_top。换句话说,以下两种写法完全等价: uvm_config_db#(virtual my_if)::set(null,"uvm_test_top.env.i_agt.drv","vif", input_vif); uvm_c...
(2) uvm_config_db::set的参数解释: 1initialbegin2uvm_config_db#(virtual my_if)::set(null,"uvm_test_top.env.i_agt.drv","vif",input_if);3end45initialbegin6uvm_config_db#(virtual my_if)::set(uvm_root::get(),"uvm_test_top.env.i_agt.drv","vif",input_if);7end 注1:在top m...
uvm_config_db #(bit)::set(null, str_re,"test_var",1'b1);if( uvm_config_db #(bit)::get(null,str,"test_var", test_var) ) $display("Get the test_var from path: %s",str);else$display("Not get the test_var from path: %s",str);str="uvm_test.*.monitor"; $display("%s ...
uvm_config_db#(virtual DUT_if)::set(null, "uvm_test_top", "DUT_vif", _if);//注册interface run_test("test"); end initial begin $dumpfile ("dump.vcd"); $dumpvars; end endmodule config_db::set一共有4个参数。 头两个参数的作用是合起来形成一个范围,只有在这个范围内的单位才可以通过...
null关键字参数被UVM识别并转换为uvm_top句柄。在module(而不是class)里调用的uvm_config_db指令将使用cntxt句柄null,而带有通配符的inst_name字符串将是UVM build_phase()期间在factory中构建的component之一。 这个inst_name不会是空字符串“”,但必须是一个字符串路径,即使它只是通配符字符串“*”。
cntxt可以为null,这时inst_name提供完整的层次信息,cntxt为null和uvm_root::get是等价的,他们都表示uvm_topcntxt可以为this,表示cntxt为当前层次。inst_name可以为空。如果在build前进行set,则使用 cntxt 层次结构来确定优先级,层次结构越高,优先级越高; 同一层次结构的set后面的配置会覆盖前面的配置。如果...
config_db.set(null, "my_param_key", my_param); ``` ### 步骤 3:从uvm_config_db中获取配置参数 在这一步中,我们将从uvm_config_db中获取之前添加的配置参数。以下是示例代码: ```verilog // 从uvm_config_db中获取配置参数 int my_param_val; ...
uvm_config_db #(virtual spi_if)::set(null, "", "vif", vif)end endmodule classs spi_drv extend uvm_driver;virtual spi_if vif;uvm_config_db #(virtual spi_if)::get(this, "", "vif", vif);endclass 对于config 机制只需要掌握两个原则:⼀是不同层次进⾏set,以最⾼层为准(...
uvm_config_db的唯一方法是设置、获取、存在和wait_modified。在config_db中使用复杂类型并不常见。 如果所使用的类型具有构造函数(即可以为null),则可以进行如下测试: 代码语言:javascript 复制 if (uvm_config_db(mytype)::get(..., myobj) && myobj !=null) //Entry exists and not null else // ...
void uvm_config_db #( type T = int )::set( uvm_component cntxt , string inst_name , ...