Мне интересно, можно ли переопределить тест, указанный в командной строке, через + UVM_TESTNAME с помощью + uvm_set_type_override.
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));
Используется фабрика, но я не знаю, были ли введены актуальные переопределения. Я также вижу код в следующем,
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
Мне интересно, исполняется ли когда-нибудь часть "else" выше?или при каких условиях это выполняется?