Как изменить подробность uvm для объекта в компоненте

Я столкнулся с проблемой при настройке детализации объекта в компоненте. Я хочу установить уровень детализации определенных компонентов (uvm_test_top.env.subenv_a) на UVM_HIGH, аргумент командной строки следующий:

1.+UVM_VERBOSITY=UVM_LOW

2.+uvm_set_verbosity=*subenv_a*,_ALL_,UVM_HIGH,build,0 

Объект (object_a) выполнит некоторые настройки на этапе сборки компонента: subenv_a.

Я не видел, чтобы информация UVM_HIGH в object_a была напечатана, а информация UVM_HIGH для всех компонентов в компоненте subenv_a будет напечатана.

Кажется, что команда «+ uvm_set_verbosity» действует только на компонент, но не на объект в компоненте.

Итак, что мне делать, чтобы распечатать информацию UVM_HIGH для объекта в компоненте.

Спасибо Кен


person ken    schedule 27.11.2017    source источник


Ответы (1)


Только классы, производные от uvm_component, знают свое происхождение. Под знаниями я имею в виду, что uvm_component настроен для связи родителей с детьми в качестве базы данных, по которой можно перемещаться через именованную иерархию. Ты сможешь:

  • Выведите свой object_a из uvm_report_object вместо uvm_object. Затем из вашего компонента сделайте object_a_h.set_report_handler(get_report_handler);. Теперь все сообщения от object_a выглядят так, как если бы они были отправлены вашим компонентом, и имеют одинаковые настройки отчета.
  • Передайте this в качестве контекста вашему object_a и используйте макрос uvm_info_context() вместо uvm_info. Это имеет тот же эффект, что и выше.
  • Используйте уникальный идентификатор сообщения в object_a и добавьте дополнительный +uvm_set_verbosity переключатель для этого идентификатора.
  • Выведите свой object_a из uvm_component вместо uvm_object и сделайте свой компонент его родительским. Это может быть самое простое решение, но при большом количестве таких объектов накладные расходы больше всего.
person dave_59    schedule 27.11.2017
comment
Спасибо, Дэйв, я использовал первый способ. - person ken; 28.11.2017