uvm_event和系统verilog事件的区别

uvm_event and system verilog event difference

uvm_event 相对于 SystemVerilog event 的优势是什么? 有人可以用小伪代码解释一下吗?

UVM 只不过是一个基于 SystemVerilog 开发的包装器库。因此,uvm_event 和 SystemVerilog 事件是相同的,但 uvm_event 具有一些额外的功能。

来自UVM Class reference

The uvm_event class is a wrapper class around the SystemVerilog event construct. It provides some additional services such as setting callbacks and maintaining the number of waiters.

传统的 Systemverilog 事件没有在触发事件时传递数据的功能。而 uvm_event 添加此功能。因此,您可以在触发某些事件时传递事务 class 句柄。

就像传统的 SV 事件一样,uvm_event 也有 触发和持续触发模式(而 SV 有 wait(ev.triggered)@(ev) 对应物) .

您还可以在触发事件时添加回调。这是通过为特定事件注册回调 class 来完成的。

就事件而言,它们的开销似乎很大。您可以在 uvm_event 上获得许多示例,例如 this one

除非您需要 uvm_event 附加功能包括添加一个 uvm_object 与触发器相关联,以及预订信息,例如跟踪服务员人数和上次触发 uvm_event 的时间。

我没有看到这些附加功能有多大用处,而且对于大多数测试平台来说,事件通常级别太低而无法处理。