Я пытаюсь изменить детализацию 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 ();это неверный вызов.
У кого-либо есть другие предложения изменить многословие во время выполнения.