我想知道是否有可能通过+ uvm_set_type_override经由+ UVM_TESTNAME重写命令行指定的测试。
I have tried it and this is what i see in prints in log.
UVM_INFO @ 0: reporter [RNTST] Running test Test1...
UVM_INFO @ 0: reporter [UVM_CMDLINE_PROC] Applying type override from the command line: +uvm_set_type_override=Test1,Test2
所以,在我看来,测试组件被创建,然后再覆盖工厂应用?
我看到uvm_root.svh代码以下几部分
// if test now defined, create it using common factory
if (test_name != "") begin
if(m_children.exists("uvm_test_top")) begin
uvm_report_fatal("TTINST",
"An uvm_test_top already exists via a previous call to run_test", UVM_NONE);
#0; // forces shutdown because $finish is forked
end
$cast(uvm_test_top, factory.create_component_by_name(test_name,
"", "uvm_test_top", null));
它使用的是工厂,但我不知道是否actully覆盖放入。我也看到在下面的代码。
begin
if(test_name=="")
uvm_report_info("RNTST", "Running test ...", UVM_LOW);
else if (test_name == uvm_test_top.get_type_name())
uvm_report_info("RNTST", {"Running test ",test_name,"..."}, UVM_LOW);
else
uvm_report_info("RNTST", {"Running test ",uvm_test_top.get_type_name()," (via factory override for test \"",test_name,"\")..."}, UVM_LOW);
end
如果在上面的“其他”部分执行过我想知道?或者在什么样的条件呢执行?
它似乎有与在UVM-UVM_TESTNAME命令行处理排序的问题所有其他选项之前得到处理分开。
这是可能调用RUN_TEST()在初始块之前设定覆写。
但是,什么是设置测试的名称,然后重写它的同一命令行上的点?为什么不使用重写的测试名称作为测试?