I have read that concurrent assertions use 3 regions of the event scheduler: Preponed(for sampling), Observed(for evaluation) and Re-Active(for results). What about immediate and deferred-immediate assertions? Since it is said that immediate assertions behave like any other assignment statement, is it safe to say that it operates in the Active region and deferred immediate assertions in the Inactive(#0) region?
In reply to Augmentium:
Yes, Immediate assertions and blocking assignment statement both are executed in active region.
Deferred immediate assertions executed in the Inactive(#0) region same as blocking assignments with a #0 delay.
In reply to Rahulkumar:
Nothing ever executes in the inactive region.
All immediate assertions execute in the active region (or whatever region the current proctorial code is executing in). Because of zero-delay glitches, It’s possible for the same immediate assertion to execute multiple time in the same time slot. A deferred assertion makes sure only the last time the assertion executes triggersthe action block once.
assert final is only need take care of cases where the reactive region makes assignment to signals that could affect the evaluation of an immediate assertion.