(1) 如在scoreboard中,对driver的某些变量使用config_db机制进行设置,则称为非直线设置; 1//my_scoreboard.sv2functionvoid my_scoreboard::build_phase(uvm_phase phase);3...4uvm_config_db#(int)::set(this.m_parent,"i_agt.drv","pre_num",200);5...6endfunction78//my_scoreboard.sv9functionvoi...
在class内部使用uvm_config_db命令时,第一个参数通常是关键字this(此class对象的句柄,无论component对象位于testbench内的哪个位置)。如果在此class范围内set或get变量,则inst_name 通常是空字符串“”,因为完整路径字符串引用了this构造的component的内容。 当component尝试set或get subcomponent时,该component通常仍然设...
uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",100); uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",109); 当上面两个语句同时出现在测试用例的build_phase中时,driver最终获取到的值将会是109。像上面的这种用法看起来完全是 胡闹,没有任何意义。 验证中写代码的一个...
我们首先在env的build_phase()中执行如下set uvm_config_db#( jelly_bean_agent_config )::set( .cntxt ( this ), .inst_name ( "jb_agent1*" ), .field_name( "jb_agent_cfg" ), .value( jb_env_cfg.jb_agent_cfg1 ) ); uvm_config_db#( jelly_bean_agent_config )::set( .cntxt ( ...
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,以最⾼层为准(...
("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(th...
uvm_config_db#(int)::get(this, "", "pre_num", pre_num); 这里的关键是build_phase中的super.build_phase语句,当执行到driver的super.build_phase时,会自动执行get语句。这种做法的前 提是: 第一,my_driver必须使用uvm_component_utils宏注册; ...
Config机制 本质是半个全局变量 Config机制是用来传递数据的 比如在case(派生自uvm_test)中build_phase中可如下配置: Uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 在driver中的build_phase中设置为: Uvm_c...uvm config_db config文件: 传递config class env中set agent中...
uvm_config_db#(virtual Bus_if)::get(this,"","Bus_if1",Bus_if1)) begin `uvm_fatal("In agent","virtual interface not got successful"); end */ /* uvm_config_db # (virtual Bus_if)::set(this,"monitor","Bus_if1",Bus_if1); uvm_config_db # (vi...
uvm_config_db#(virtual des_if)::get(this, "", "des_if", vif)) `uvm_fatal("DRV", "Could not get vif") endfunction virtual task run_phase(uvm_phase phase); super.run_phase(phase); forever begin Item m_item; `uvm_info("DRV", $sformatf("Wait for item from se...