Hardware Reference
In-Depth Information
Example 12.6. Compute the set of semantic leading clocks in the following asser-
tion and determine any requirements on the context in which the assertion appears:
a12: assert property (
a or @(ev1) b and nexttime @(ev2) c
);
Solution:
LC. b and nexttime @(ev2) c /
=
LC. b / [ LC. nexttime @(ev2) c /
( LC11 )
= f inherited g
( LC3 , LC13 )
Therefore by LC1 ,
LC. @(ev1) b and nexttime @(ev2) c / Df ev1 g
By LC3 , LC. a / Df inherited g , and so by LC11 , the set of semantic leading clocks
for the entire assertion is f ev1 ; inherited g . This means that the assertion must be in a
context that guarantees an incoming clock, either by default clocking or by inference
from a procedural context, and the incoming clock must be identical to ev1 .
t
12.2.5
Finer Points of Multiple Clocks
This section covers a few finer points regarding the use of multiple clocks in
sequences and properties.
12.2.5.1
Clocking LTL Operators
When LTL operators nexttime , always , s_eventually , until , and their variants
are used as synchronizers, it is important to remember that the time advance
specified by the LTL operator is determined by the incoming clock, not by the
leading clock or clocks of the operands. Consider the following:
module m3 ( logic a, b, clk1, clk2);
a13: assert property (
@( posedge clk1) a |-> nexttime @( posedge clk2) b
);
a14: assert property (
@( posedge clk1) a |-> ##1 @( posedge clk2) b
);
endmodule
Assertions a13 and a14 look similar, but they behave differently. In both, the
antecedent of |-> matches whenever the sampled value of a is 1'b1 at an occurrence
of posedge clk1 . Suppose that this occurs at time t 0 .In a13 , posedge clk1
Search WWH ::




Custom Search