弄UVM的验证工程的过程种,发现之前resource这块学得不到位,来这补充一下,先补充uvm_config_db,就拿我自己那个工程的代码来举例子说明uvm_config_db是怎么用的。 我的工程中主要是对virtual interface用到了config_db,流程是这样的: 1.在testbench中例化了interface,然后通过config_db::set来把interface这个样的一...
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_config_db#(virtual my_if)::set(null, "uvm_test_top", "vif", input_if) uvm_config_db#(virtual my_if)::get(this, "", "vif", vif) 在以上两个函数set和get是使用它时要调用的函数,set表示把要处理的资源放进全局可见的数据库,get表示从全局可见的数据库输出需要的资源,使用set和get函数...
在top_tb中通过config_db机制的set函数设置virtual interface时,set函数的第一个参数为null。在这种情况下,UVM会自动把第一个参数替换为uvm_root::get(),即uvm_top 省略get语句 只要使用uvm_field_int注册,并且在build_phase中调用super.build_phase(),就可以省略在build_phase中的get语句:uvm_config_db#(int)...
通常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...
classbase_envextendsuvm_env;...stringname;virtualfunctionvoidbuild_phase(uvm_phase phase);super.build_name();// Retrieve the string that was set in config_db from the test classif(uvm_config_db #(string)::get(null,"uvm_test_top","Friend",name))`uvm_info("ENV",$sformatf("Found %s"...
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"...
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 ...
config_db机制对通配符的支持 check_config_usage phase机制 phase的执行顺序 UVM树的遍历 phase的跳转 超时退出 objection机制 objection与task phase 控制objection的最佳选择 set_drain_time的使用 field automation机制 通过域的自动化,在注册UVM类的同时可以声明今后会参与到对象拷贝、克隆、打印等操作的成员变量。
对于sequence中的资源访问,可以参考 UVM设计模式 (三) 静态类、资源管理、uvm_event、uvm_*_pool、uvm_config_db、UVM_REGEX_NO_DPI 中的"sequence中的资源访问"小节,总结了5种使用方式。 命令模式 Comand Pattern:将一个请求(命令)封装成一个对象,从而可以用不同的请求对接收者进行参数化,实现请求的发送者和...