使用uvm_component_utils宏注册my_drv,uvm_field_int注册控制变量pre_num 2.并且在build_phase中调用super.build_phase() (当执行到driver的super.build_ phase时,会自动执行get语句,driver的父类中有get语句) 文件:src/ch3/section3.5/3.5.3/my_driver.sv 7 int pre_num; 8 `uvm_component_utils_begin(my...
uvm_config_db#(my_config)::set(this,"env.i_agt.drv","cfg", cfg); uvm_config_db#(my_config)::set(this,"env.i_agt.mon","cfg", cfg); ...endfunctionendclass 每个需要参数类的组件中通过注册的方式,省去get的语句: class my_driver extends uvm_driver#(my_transaction); my_config cfg;...
声明一个uvm_sequence_library_cfg类的对象 调用该对象的构造函数new,并配置相应形参 使用config_db::set设置default_sequence.config与default_sequence 方案②:使用6.1.2中的方法3启动sequence,步骤如下: 手动实例化seq 配置参数 使用config_db::set设置default_sequence 代码示例 方案① function void my_case0::...
UVM_INFO @0: uvm_test_top.env.i_agt.mon [CFGPRT] visible resources: # vif [/^uvm_test_top\.env\.i_agt\.mon$/] : (virtual my_if) X X x x #-…# UVM_INFO @0: uvm_test_top.env.mdl [CFGPRT] visible resources: # rm_value [/^uvm_test_top\.env\.mdl$/] : (int)10#...
cfg2.strl="c2"; `uvm_config_db #(uvm object)::set(this,"cl", "cfg", cfgl); `uvm_config_db #(uvm object)::set(this,"c2", "cfg", cfg2); cl = compl::type_id::create("cl", this); c2 = compl::type_id::create("c2", this); ...
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;my_config cfg;...function void bulid_phase(uvm_phase phase);....
1.使用聚合参数后,可以将此参数类的指针放在virtual sequencer中: 2.当sequence 要动态改变验证平台某个变量时,如下: 3.甚至可以将interface 也放入聚合参数: 4.这样,无论是driver 还是monitor 中,都可以直接用cfg.vif,不必在使用config_db 来得到interface: ...
uvm_sequence_libraryuvm_sequence_library_cfg preface uvm_sequence_library_cfg记录uvm_sequence_library中各种参数配置的⼀个数据结构 uvm_sequence_library类继承⾃uvm_sequence #(REQ,RSP);该类提供了⼀个仓库的功能,可以把⼀系列的sequence注册到本lib中,然后指定任意的sequence被按照指定的模式执⾏指定...
foreach (mem_cfg[i])uvm_config_db#(mem_cfg)::set(null, “mem”, $sformatf(“mem[%0d]”, i), mem_cfgs[i]); 更多小技巧 对于直接从UVM组件类派生的组件(例如uvm_component,uvm_test,uvm_env,uvm_agent等),请勿调用super.build_phase。这样可以避免使用代价高昂的apply_config_settings。
(4)UVM提供了一个类uvm_sequence_library_cfg来对sequence library进行配置: uvm_sequence_library_cfg cfg; super.build_phase(phase); cfg = new("cfg", UVM_SEQ_LIB_RANDC, 5, 20); uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", simple_seq...