UVM is nothing more than a wrapper library developed by SystemVerilog. Thus, the uvm_event and SystemVerilog events uvm_event same, but uvm_event has some additional features.
From the link to the UVM class :
The uvm_event class is a wrapper class around the SystemVerilog event construct. It provides some additional services, such as setting up callbacks and maintaining the number of waiters.
The traditional Systemverilog event does not have the functionality to transmit data when an event is triggered. So far, uvm_event adds this functionality. That way, you can pass a handle to the transaction class when an event is fired.
Like traditional SV events, uvm_event also has trigger and persistent trigger modes (whereas SV has wait(ev.triggered) and @(ev) ).
You can also add callbacks each time the event fires. This is done by registering a callback class with a specific event.
As for events, they seem expensive in terms of overhead. You can get many examples on uvm_event , like this one .
source share