uvm_config_db#(virtual my_if)::set(uvm_root::get(),"uvm_test_top.env.i_agt.drv","vif", input_vif); set及get函数中第三个参数可以与get函数中第四个参数不一样。 umv_config_db#(int)::set(this,"env.i_agt.drv","p_num",100); umv_config_db#(int)::set(this,"","p_num",...
弄UVM的验证工程的过程种,发现之前resource这块学得不到位,来这补充一下,先补充uvm_config_db,就拿我自己那个工程的代码来举例子说明uvm_config_db是怎么用的。 我的工程中主要是对virtual interface用到了config_db,流程是这样的: 1.在testbench中例化了interface,然后通过config_db::set来把interface这个样的一...
(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...
21 if(!uvm_config_db#(virtual my_if)::get(this, "", "vif", vif)) 22 `uvm_fatal("my_driver", "virtual interface must be set for vif!!!") 23 endfunction 【例1-使用cfg机制修改发包数】 【使用cfg_db机制配置接口】 【总结】 cfg_db用于用于在UVM验证平台间传递参数。 cfg_db一般在buil...
通常sequence不会直接发送给sequencer,而是通过virtual_sequence和virtual_sequencer; raise_objection和drop_objection往往伴随sequence的启动; 第二种:default_sequence 采用default_sequence启动,实际上还是调用了start任务, uvm_config_db#(uvm_object_wrapper)::set(this,"env.fish_agt.sqr.main_phase","default_sequen...
// Setp pattern queue and place into config db uvm_config_db#(bit[`LENGTH-1:0])::set(this, "*", "ref_pattern", pattern); // Create sequence and randomise it seq = gen_item_seq::type_id::create("seq"); seq.randomize(); endfunction virtual task run_phase(uvm...
config_db机制对通配符的支持 check_config_usage phase机制 phase的执行顺序 UVM树的遍历 phase的跳转 超时退出 objection机制 objection与task phase 控制objection的最佳选择 set_drain_time的使用 field automation机制 通过域的自动化,在注册UVM类的同时可以声明今后会参与到对象拷贝、克隆、打印等操作的成员变量。
uvm_config_db#(virtual chnl_intf)::set(uvm_root::get(), "uvm_test_top", "ch0_vif", chnl0_if); uvm_config_db#(virtual chnl_intf)::set(uvm_root::get(), "uvm_test_top", "ch1_vif", chnl1_if); uvm_config_db#(virtual chnl_intf)::set(uvm_root::get(), "uvm_test_top"...
传送到验证平台下层各组件的虚假口中 run_test();/运行测试 end这里的 uvm_config_db#(virtual apb_if):set对应之前driver里边的uvm_config_db#(virtual apb_if):get也就是在顶层set,底层get,然后通过uvm_config_db这个类似数据库的玩意,实现从顶层module到底层class中接口的链接,从而driver中的信息流进dut里边...
vir_sqr = virtual_sequencer::type_id::create("vir_sqr", this); // set the sequence uvm_config_db#(uvm_object_wrapper)::set(this, "vir_sqr.main_phase", "default_sequence", my_sequence::type_id::get() ); endfunction : build_phase ...