In case of $monitor it prints the value whenever there is change in variable. Is there any alternate way in UVM to achieve the same functionality without writing any conditions?
$monitor
is a very simplistic debugging task. It is almost equivalent to
fork
forever @* $display(variables);
join_none
Except that $monitor guarantees to print only once at the end of a timestep, and there can only be one `$monitor.
You could try
fork
forever @*begin
uvm_wait_for_nba_region(); // should eliminate most duplicate triggers
`uvm_info(...)
join_none