В чем преимущество uvm_event
над SystemVerilog event
? Может кто-нибудь объяснить небольшим псевдокодом?uvm_event и разница в верификации системы
ответ
UVM - это не что иное, как библиотека обертки, разработанная над SystemVerilog. Итак, события uvm_event
и SystemVerilog те же, но uvm_event
имеет некоторые дополнительные функции.
Класс uvm_event является обертка класса вокруг конструкции событий SystemVerilog . Он предоставляет некоторые дополнительные услуги, такие как установка обратных вызовов и поддержание количества официантов.
Традиционное мероприятие SystemVerilog не имеет функциональность передачи данных когда событие. В то время как uvm_event
добавляет эту функцию. Таким образом, вы можете передать дескриптор класса транзакции, когда запускается какое-либо событие.
Так же, как традиционные SV события, uvm_event также триггерных и упорные триггерные режимы (в то время как SV имеет wait(ev.triggered)
и @(ev)
аналогов).
Вы также можете добавить обратные вызовы при каждом запуске события. Это делается путем регистрации класса обратного вызова с определенным событием.
Что касается событий, то они кажутся дорогостоящими с точки зрения накладных расходов. Вы можете получить много примеров на uvm_event
, например this one.
Там нет преимущества использования uvm_event
над тем, что в основной SystemVerilog event
конструкции, если не нужны дополнительные функциональные возможности, предоставляемые в uvm_event
дополнительные функции, включают в себя добавление uvm_object ассоциироваться с курком, и бронирование информации, например, отслеживая количество официантов и последний раз, когда был запущен uvm_event.
Я не видел много пользы для этих дополнительных функций, а события в целом обычно слишком низкого уровня для большинства тестируемых стендов.