This proposal corrects an incomplete fix for item 1381 regarding when an evaluation attempt takes place under inferred enabling condition from an always block.
P1800-2008-draft1,
17.13.5, p. 289 (IEEE Std 1800™-2005)
Replace
Another
inference made from the context is the enabling condition for a property. Such derivation
takes place when a property is placed in an if..else block or a case block. The
enabling condition assumed from the context is used as the antecedent of the
property. A concurrent assertion embedded in procedural code
specifies that a new evaluation attempt of the underlying property_spec begins
at every occurrence of the inferred clocking event.
With
Another inference made from the context is
the enabling condition for a property. Such derivation takes place when a
property is placed in an if..else block or a case block. A concurrent assertion embedded in
procedural code in an if...else block or a case block specifies that a new evaluation
attempt of the underlying property_spec begins at every occurrence of the (inferred)
clocking event provided that the condition leading to the location of the
assertion in the block is true. If the
condition is false then no evaluation attempt is started.
For example,
always
@(posedge clk) begin
if (rst) ...
else begin
...
aa: assert property (a |->
b);
cc: cover property (a
&& b);
...
end
end
If the
sampled value of rst is false at a given tick of the inferred clocking event posedge
clk then the
evaluation attempts of the assert property statement aa and the cover property statement cc are not started at that clock tick.