In reply to hisingh:
In reply to ben@SystemVerilog.us:
…I have a few more questions to conclude the thread :: EDALINK
Via +define+M_A ::
[Q1] Both the $display() execute in the re-active region .
Is there a predefined order in which the $display() ( within the property V/S within the pass / fail action block ) should execute ?
i.e Should the $display() within the property execute before the Pass / Fail action block ??
[Ben]See diagram in SVA evaluation - SystemVerilog - Verification Academy
The Observed region is where the evaluation of the property expressions when they are triggered. That would include any function calls (user-defined functions or system functions, like $display). The action blocks are executed in the reactive region, after the Observed Region. Thus, your $display in the sequence_match_item would execute before a $display in the Action block.
[Q2] Can I say the following ::
(a) The assignment to local variables ldata take place in re-active region .
(b) The local variables ldata are assigned the preponed Value sampled for rdata*
[Ben] NO, what you say is not correct. local variable are executed where the property is executed, in the Observed region, see my diagram in the link above. Values of signals used in the assignment are the ones in the Preponed region. Thus,
($rose(a), v1=sig1) // In the Observed region, v1=sig1 value in the Preponed region.
**
Via +define+M_S ::
[Q3] I observe that $display() within the property reports different values than the $display() executed within the subroutine .
Is it cause the preponed values are used in $display within the property ?
[Q4] Is there a defined order in which the $display() be executed within the subroutine , within the property and the pass / fail action block ?
[/quote] See below
ap: assert property(@ (posedge clk) sig1 |-> sig2 );
else ($display("sig1 sampled %b, sig1 in Reactive region %b",
$sampled(sig1), sig1);