установить и получить значения очереди с помощью uvm_config_db

Я пытался установить значения очереди в config db на этапе запуска теста и пытался получить это, последовательно используя uvm_config_db, но мне это не удалось (ничего не было получено при вызове get из uvm_config_db), появляется только указанная ниже ошибка , пожалуйста, дайте мне знать, если я иду не так, и как это исправить. Также, кажется, типографская ошибка в UVM_ERROR из BCL, вместо «[RNFNAME] Resrouce» должно быть «[RNFNAME] Resource».

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
person Emman    schedule 18.09.2017    source источник
comment
Ваша функция набора config_db не имеет смысла. Третий аргумент для установки — это строка, представляющая собой имя поля. vmmcentral.com/uvm_vmm_ik/files3/base/   -  person noobuntu    schedule 18.09.2017


Ответы (2)


3-й аргумент uvm_config_db — это строка.

Полная подпись метода set: 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);
person Karan Shah    schedule 19.09.2017

Вы можете установить значение в компоненте, используя

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]);
person saurabh jaipurkar    schedule 07.02.2019