Можно ли переопределить тест uvm, указанный через +UVM_TESTNAME=test1, также имея +uvm_set_type_override=test1,test2?

Мне интересно, можно ли переопределить тест, указанный в командной строке через +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"? или при каком условии он выполняется?


person Gautam    schedule 11.02.2019    source источник


Ответы (1)


Похоже, что существует проблема с порядком обработки командной строки в UVMUVM_TESTNAME, который обрабатывается отдельно перед всеми остальными параметрами.

Можно установить переопределение перед вызовом run_test() в начальном блоке.

Но какой смысл задавать имя теста, а затем переопределять его в той же командной строке? Почему бы не использовать переопределенное имя теста в качестве теста?

person dave_59    schedule 11.02.2019
comment
спасибо за ответ, я согласен, что для таких вещей не так много вариантов использования. Единственное место, которое я считаю полезным, — это слои сценариев, которые подготавливают командную строку моделирования, и где-то посередине есть +UVM_TESTNAME=‹›, и мы хотели быть уверены, что переопределили с требуемым именем теста. Опять же, не так много вариантов использования. Мне просто интересно, можно ли переопределить что-либо, зарегистрированное в factory. - person Gautam; 11.02.2019