When to deine UVM_NO_WAIT_FOR_NBA

In uvm_globals.svh I see a task.

task uvm_wait_for_nba_region;

ifndef UVM_NO_WAIT_FOR_NBA .... else
repeat (UVM_POUND_ZERO_COUNT) #0; endif

endtask

My questions:

  1. When is one expected to define this macro UVM_NO_WAIT_FOR_NBA.
    I am assuming that by default we are not expected to define this.
  2. If I define the above macro, the code reaches the else part of
    the task. I could not find the definition for `UVM_POUND_ZERO_COUNT

Not sure if I am missing something

Thanks

Logie.

In reply to logie:

This is used as a workaround for the fact that earlier versions of SystemVerilog did not support non-blocking assignments to class variables. (the code that is inside the …)

And there is also a comment saying you would need to define this if the UVM library was `included in a program block instead of a module. This is also not needed. Only the earliest version of SV had a restriction about NBA’s in program blocks.