uvm_config_db#(virtual my_if)::set(null, "uvm_test_top", "vif", input_if); 2. 收信(Get): 在`my_driver`或其他UVM组件中,他们在开始工作之前会通过`uvm_config_db#(...)::get(...)`来“收信” - 即查找并获取接口实例的地址。 // 在my_driver中 - 收信 virtual my_if vif; if (...
一、uvm_config_db简介 uvm_config_db的全称是configuration database,它是建立在 uvm_resource_db 之上的便利层,resource database储存的是与scope字符串相关联的name-value对(如下图所示) 。uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问数...
uvm_config_db#(virtual DUT_if)::set(null, "uvm_test_top", "DUT_vif", _if);//注册interface run_test("test"); end initial begin $dumpfile ("dump.vcd"); $dumpvars; end endmodule config_db::set一共有4个参数。 头两个参数的作用是合起来形成一个范围,只有在这个范围内的单位才可以通过...
简单说就是字符串的正则匹配,在UVM内部是通过uvm_glob_to_re()和uvm_re_match()这两个函数来实现的,它们是在uvm_config_db背后默默工作的功臣。 在TB调用uvm_config_db::set()的时候,set函数会将参数cntxt和inst_name拼接起来后,调用用uvm_glob_to_re()转换格式,再存到uvm_resource类里的scope字符串变量...
(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 ...
· 在module环境中如果要使用uvm_config_db::set,则传递的第一个参数uvm_component cntxt用来表示当前的层次,由于当前层次为最高层,所以用户可以设置为null,也可以设置为uvm_root::get()来表示uvm_root的全局实例。 · 在使用被配置变量时,应当确保先进行了uvm_config_db::get的操作,获得了正确的值以后再使用...
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。
### 步骤 2:向uvm_config_db中添加配置参数 在这一步中,我们将配置参数添加到uvm_config_db中,以便后续测试用例可以获取这些参数。以下是示例代码: ```verilog // 添加配置参数到uvm_config_db中 int my_param = 10; config_db.set(null, "my_param_key", my_param); ...
config_db机制分为set和get两个操作。 在top_tb中执行set操作: initial begin uvm_config_db#(virtual my_if)::set(null, "uvm_test_top", "vif", input_if);end 在my_driver中执行get操作: virtual function void build_phase(uvm_phase phase);super.build_phase(phase);`uvm_info("my_driver","bu...