In reply to dave_59:
Hi Dave,
Thank you for explanation.
For @, you said it executes in active region. Then it suspends wait for @(posedge a).
If active region queue is not empty, how can it schedules inactive region?
In order to understand this, could you please explain how those events sit?
module tb;
logic a;
//state1
initial a<=0;
//state2
initial begin
@(a) begin
a<=1;
$display(a);
end
//state3
initial $monitor("a:%0b",a)
endmodule
Based on your explanation,
state1 sits in NBA region
state2 sits in active region, @ suspend the thread. What region do a<=1 and $display sit? Still active region or NBA region?
state3 sits in postpone region.
Is this correct?