Heartbeat Monitor Vs Watchdog timer

Hi,
Can you provide me the difference between implementing the heartbeat monitor & Watchdog Timer?

Thanks in advance,
SANJAIKUMAR KANNAN

In reply to sanjai_483:

A watchdog timer is an informal name giving to some amount of simulation time allowed before issuing a fatal error. It can be set on the command line using
+UVM_TIMEOUT
or by calling
uvm_root::set_timeout()
.

A heartbeat monitor is another kind watchdog timer, except that it adds a check for some activity during the timeout period. If there is no activity, only then does it issue a fatal error. The class
uvm_heartbeat
measures activity by the number of objections raised/dropped, and it’s up to the user to create a process that generates a periodic heartbeat event.

In the past, the UVM Cookbook has recommended against continually raising/dropping objections because it creates a lot of simulation overhead, especially in large SOC environments with many interfaces and levels of testbench hierarchy. There have been some performance improvements to the UVM objection mechanism over the years, but I would still use some caution before using this. For some smaller environments, it won’t make much difference.