Как изменить многословность компонентов uvm после определенного условия - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь изменить детализацию UVM симуляции после выполнения определенных условий.Параметры многословности различных компонентов передаются через командную строку как + uvm_set_verbosity.Как только условия будут выполнены, моделирование должно выполняться с опцией командной строки + uvm_set_verbosity.До этого времени моделирование выполняется с низкой степенью детализации для всех компонентов.

Просматривая код библиотеки UVM, выясняется, что есть функция с именем m_set_cl_msg_args ().Эта функция вызывает три другие функции, которые, по-видимому, используют аргументы командной строки, такие как: + uvm_set_verbosity, + uvm_set_action, + uvm_set_severity.

Итак, я получил экземпляр uvm_root из сингтона uvm_coreservice и затем использовал get_children() функция из класса uvm_component для рекурсивного получения очереди всех uvm_components в симуляции.Затем вызовите функцию m_set_cl_msg_args () для всех компонентов.

Мой код выглядит следующим образом:

    begin
     uvm_root r;
     uvm_coreservice_t cs_t;
     uvm_component array_uvm[$];
     cs_t = uvm_coreservice_t::get();
     r = cs_t.get_root();

     r.get_children(array_uvm);
     foreach(array_uvm[i])
       array_uvm[i].m_set_cl_msg_args();
    end

Даже если этот код компилируется правильно, но это не меняет многословия.Любая идея ?Кроме того, я могу распечатать все компоненты в array_uvm.Итак, я предполагаю array_uvm [i] .m_set_cl_msg_args ();это неверный вызов.

У кого-либо есть другие предложения изменить многословие во время выполнения.

1 Ответ

0 голосов
/ 02 февраля 2019

Вы никогда не должны использовать функции в UVM, которые не описаны в справочном руководстве по языку.Они могут (и могут) измениться в любой ревизии.Я предполагаю, что + uvm_set_verbosity по умолчанию работает только во время 0* чтобы начать тестирование, а затем определить свой собственный переключатель для активации условной настройки.

Если вы хотите определенный компонент, используйте component_h.set_report_verbosity_level() (добавьте _hier, чтобы установить все его дочерние элементы)

Вы можете использовать метод процессора командной строки UVM get_arg_values(), чтобы указатьимя компонента (ов), который вы хотите установить, а затем используйте umm_top.find (), чтобы получить дескриптор компонента.

...