Region scheduling between active and NBA

module tb_top;
    bit a,b;

    initial begin
        b = 1;
        a <= b;
        b = 0;
        #1; $display(" a = %0d",a);
    end
endmodule

above code displays a = 1;

b=1 and b=0 should all happen at same delta cycle in active region. and a<=b happens in same delta cycle in NBA region. why b=0 does not trigger a re-evaluate event of variable a?

or let me put it this way, in this case,is a=1 a deterministic behavior or race condition?

Thanks,
Jeff

In reply to Jeff_Li_90:

Blocking and non blocking are both procedural statements executing in the active region. They both evaluate the RHS in the order they get executed and only once. The only difference is the NBA schedules the update to the LHS in the NBA region with the value it evaluated in the active region.