我一直试图在测试运行阶段设定在配置数据库队列值并试图获得在顺序使用uvm_config_db但我不是成功的在这(在从uvm_config_db get调用获得什么),只出现下面提到的错误请让我知道是我错了,以及如何纠正它。也有似乎是在UVM_ERROR从BCL印刷错误,而不是“[RNFNAME] Resrouce”应该是“[RNFNAME]资源”。
UVM_INFO ../tests/du_test_sanity.sv(116) @ 100000.0 ps: uvm_test_top [QUEUE_VAL] qu : '{3, 4, 2, 1, 7, 1, 1, -1, 0, 0}
UVM_ERROR @ 100000.0 ps: reporter [RNFNAME] Resrouce named not found in name map; cannot change its search priority
在测试run_phase使用以下
`uvm_info("QUEUE_VAL",$sformatf("qu : %p",qu), UVM_NONE);
foreach(qu[i])
uvm_config_db #(bit [15:0])::set(uvm_root::get(),"*",qu[i],qu[i]);
在序列我试图用get调用任务体内()读取队列值;
foreach(qu[i])
uvm_config_db #(bit [15:0])::get(uvm_root::get(), "*", qu[i], temp[i])
foreach(temp[i])
`uvm_info("COMP", $sformatf("string1 : %0h", temp[i]), UVM_LOW);
也请让我知道是否有其他可行的方法,从run_phase通过队列值进行排序
在uvm_config_db
的第三个参数是一个字符串。
设置方法的完整签名是void uvm_config_db #( type T = int )::set( uvm_component cntxt , string inst_name , string field_name , T value );
T
是正在配置的元件的类型 - 通常是虚拟接口或配置对象。cntxt
和inst_name
共同形成用于定位在数据库中的资源范围。的范围由附加的实例名到上下文的完整层次名称形成的,例如{cntxt.get_full_name(),“”,inst_name}。field_name
供应资源的名称value
是实际上将被放入数据库中的事。下面是一个例子。
interface abc a1( clk , reset );
...
uvm_config_db #(virtual abc)::set(null, "*", "my_vir_inf", a1);
您可以使用该组件设置的值
foreach(qu[i])
uvm_config_db#(int)::set(this,"*",$sformatf("qu[%0d]",i),qu[i]);
并使用其他组件获得
foreach(qu[i])
uvm_config_db#(int)::get(this,"*",$sformatf("qu[%0d]",i),temp[i]);