Hi, All
there is a task as follow in uvm_globals.sv file.
//----------------------------------------------------------------------------
//
// Task: uvm_wait_for_nba_region
//
// Callers of this task will not return until the NBA region, thus allowing
// other processes any number of delta cycles (#0) to settle out before
// continuing. See <uvm_sequencer_base::wait_for_sequences> for example usage.
//
//----------------------------------------------------------------------------
task uvm_wait_for_nba_region;
string s;
int nba;
int next_nba;
//If `included directly in a program block, can't use a non-blocking assign,
//but it isn't needed since program blocks are in a seperate region.
`ifndef UVM_NO_WAIT_FOR_NBA
next_nba++;
nba <= next_nba;
@(nba);
`else
repeat(`UVM_POUND_ZERO_COUNT) #0;
`endif
endtask
For example, it is used in the task wait_for_sequences in uvm_sequencer_base.sv file
Who would like to explain the function of the uvm_wait_for_nba_region in details?
Best Regards
QIN