config_db机制用于在UVM验证平台间传递参数。它们通常都是成对出现的。set函数是寄信,而get函数是收信。 【在哪里用】 build_phase中使用cfg_db机制 【set 寄信】 uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",100); int:需要填写要送的东西的类型 【get 收信】 uvm_config_db#(int):...
void'(uvm_config_db#(int)::get(this.m_parent, "i_agt.drv", "pre_num", drv_pre_num));`uvm_info("my_model", $sformatf("after get, the pre_num is %0d", drv_pre_num), UVM_LOW)endfunction//或void'(uvm_config_db#(int)::get(uvm_root::get(), "uvm_test_top.env.i_agt...
在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;my_config cfg;...function void bulid_phase(uvm_pha...
uvm_config_db#(my_config)::set(this,"env","cfg",cfg); ... endfunction endclass 在test.env中get: class my_env extends uvm_env; my_config cfg; ... function void bulid_phase(uvm_phase phase); ... if(!uvm_config_db#(my_config)::get(this,"","cfg",cfg)) begin `uvm_fatal(...
uvm_config_db#(int)::set(null,"uvm_test_top.fifo_env.wr_agt.drv","wr_stop_sig",wr_stop_sig) 1. uvm_config_db#(int)::get(this,"","wr_stop_sig",wr_stop_sig); 1. 因为是在top中set,第一个参数为null,会自动替换为uvm_root::get(),即uvm_top。
if(m_cfg.active == UVM_ACTIVE) begin //create driver, sequencer end endfunction 24、什么是driver和sequencer,为什么需要它们? Driver是根据接口协议将事务转换为一组信号级切换的组件。Sequencer是一个将事务(sequence items)从sequence发送到Driver,并将Driver的响应反馈给sequence的组件。
1)因为interface 藏在cfg 里。 2)如果cfg 赋给sequencer,那么10.3.1 的sequencer 也不必使用get 得到接口。 5.my_config是一个object,不是component。使用get时,get_full_name 得到的结果是例化的名字。所以base_test中cfg 的名字要与top_tb中config_db::set一直。如: ...
`uvm_warning("GETCFG","cannot get config object from config DB") cfg = apb_config::create("cfg"); end // get virtual interface if( !uvm_config_db#(virtual apb_if)::get(this,"","vif", vif)) begin `uvm_fatal("GETVIF","cannot get vif handle from config DB") ...
uvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",case0_sequence::type_id::get()); (3)使用uvm_config_db#(uvm_sequence_base)配置default_sequence functionvoidmy_case0::build_phase(uvm_phase phase);case0_sequence cseq;super.build_phase(phase);...
uvm_add_to_seq_lib(sequenee 类名,sequence_library 类名) 一个sequenee可以加入至U不同的sequence_library中 使用 sequence_library 可以有效简化 Testcase,因为 case 中设置 sqr 的 main_phased 的 default_sequenee 是 sequence_library 类名::type_id:get() 可以使用sequence_library_cfg来控制sequence_libr...