uvm_heartbeat

Heartbeats provide a way for environments to easily ensure that their descendants are alive.  A uvm_heartbeat is associated with a specific objection object.  A component that is being tracked by the heartbeat object must raise (or drop) the synchronizing objection during the heartbeat window.

The uvm_heartbeat object has a list of participating objects.  The heartbeat can be configured so that all components (UVM_ALL_ACTIVE), exactly one (UVM_ONE_ACTIVE), or any component (UVM_ANY_ACTIVE) must trigger the objection in order to satisfy the heartbeat condition.

Summary
uvm_heartbeat
Heartbeats provide a way for environments to easily ensure that their descendants are alive.
Methods
newCreates a new heartbeat instance associated with cntxt.
set_modeSets or retrieves the heartbeat mode.
set_heartbeatSets up the heartbeat event and assigns a list of objects to watch.
addAdd a single component to the set of components to be monitored.
removeRemove a single component to the set of components being monitored.
startStarts the heartbeat monitor.
stopStops the heartbeat monitor.

new

function new(
    string  name,   
    uvm_component  cntxt,   
    uvm_objection  objection  =  null
)

Creates a new heartbeat instance associated with cntxt.  The context is the hierarchical location that the heartbeat objections will flow through and be monitored at.  The objection associated with the heartbeat is optional, if it is left null but it must be set before the heartbeat monitor will activate.

uvm_objection myobjection = new("myobjection"); //some shared objection
class myenv extends uvm_env;
   uvm_heartbeat hb = new("hb", this, myobjection);
   ...
endclass

set_mode

function uvm_heartbeat_modes set_mode (
    uvm_heartbeat_modes  mode  =  UVM_NO_HB_MODE
)

Sets or retrieves the heartbeat mode.  The current value for the heartbeat mode is returned.  If an argument is specified to change the mode then the mode is changed to the new value.

set_heartbeat

function void set_heartbeat (
    uvm_event#(uvm_object)  e,
    ref  uvm_component  comps[$]
)

Sets up the heartbeat event and assigns a list of objects to watch.  The monitoring is started as soon as this method is called.  Once the monitoring has been started with a specific event, providing a new monitor event results in an error.  To change trigger events, you must first stop the monitor and then start with a new event trigger.

If the trigger event e is null and there was no previously set trigger event, then the monitoring is not started.  Monitoring can be started by explicitly calling start.

add

function void add (
    uvm_component  comp
)

Add a single component to the set of components to be monitored.  This does not cause monitoring to be started.  If monitoring is currently active then this component will be immediately added to the list of components and will be expected to participate in the currently active event window.

remove

function void remove (
    uvm_component  comp
)

Remove a single component to the set of components being monitored.  Monitoring is not stopped, even if the last component has been removed (an explicit stop is required).

start

function void start (
    uvm_event#(uvm_object)  e  =  null
)

Starts the heartbeat monitor.  If e is null then whatever event was previously set is used.  If no event was previously set then a warning is issued.  It is an error if the monitor is currently running and e is specifying a different trigger event from the current event.

stop

function void stop ()

Stops the heartbeat monitor.  Current state information is reset so that if start is called again the process will wait for the first event trigger to start the monitoring.

function new(
    string  name,   
    uvm_component  cntxt,   
    uvm_objection  objection  =  null
)
Creates a new heartbeat instance associated with cntxt.
function uvm_heartbeat_modes set_mode (
    uvm_heartbeat_modes  mode  =  UVM_NO_HB_MODE
)
Sets or retrieves the heartbeat mode.
function void set_heartbeat (
    uvm_event#(uvm_object)  e,
    ref  uvm_component  comps[$]
)
Sets up the heartbeat event and assigns a list of objects to watch.
function void add (
    uvm_component  comp
)
Add a single component to the set of components to be monitored.
function void remove (
    uvm_component  comp
)
Remove a single component to the set of components being monitored.
function void start (
    uvm_event#(uvm_object)  e  =  null
)
Starts the heartbeat monitor.
function void stop ()
Stops the heartbeat monitor.