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
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. This is equivalent
to adding the inferred condition in the iff clause of the clocking event.
For example,
always
@(posedge clk) begin
if (rst) ...
else begin
...
a: assert property (a |->
b);
c: cover property (a
&& b);
...
end
end
this is equivalent to writing
always
@(posedge clk) begin
if (rst) ...
else begin
...
...
end
end
a:
assert property (@(posedge clk iff $sampled(!rst))
a |-> b);
c:
cover property (@(posedge
clk iff $sampled(!rst)) a && b);