Hardware Reference
In-Depth Information
The sequential property defined by sequence s is true in clock tick i iff there is no finite
trace fragment i W j witnessing inability of sequence s with the initial point i to have a
match. Sequence s should not admit an empty match.
When we introduced this definition, we were familiar only with bounded
sequences—sequences all of whose matches happen within a finite time interval.
For bounded sequences, the definition of sequential property can be simplified: the
sequential property defined by a bounded sequence is true iff the sequence has at
least one match (Sect. 6.2 ). 5 Using the sequence operators described in this chapter,
sequences built on top of infinite delay or repetition ranges are unbounded , i.e., they
can have arbitrarily long matches. For such sequences, the definition of sequential
property cannot be simplified any more.
In our example, sequence ##[ * ] gnt is unbounded. Any finite trace fragment
does not witness the inability of this sequence to match. Indeed, the fact that gnt
did not assume high value during first 1,000 clock ticks starting from the sequence
initial point, does not prevent gnt to assume high value in the future. Therefore,
sequential property ##[ * ] gnt is true, regardless of the actual values of gnt , and
assertions a2_wrong and a3_wrong pass even if req is never granted. The correct
solution was provided in Example 6.23 :
a4: assert property (@( posedge clk) req |=> s_eventually gnt);
An alternative way to encode this assertion is discussed in Chap. 11 .
Although a sequential property of the form ##[ * ]s is meaningless, since it is a
tautology, the sequence ##[ * ]s itself is not. We saw in Example 6.46 that operator
##[ * ] modified the meaning of the implication. Namely, assertion
initial
a_always: assert property (@( posedge clk) ##[ * ] s |-> p);
checks implication s |-> p in every clock cycle, whereas assertion
initial
a_once: assert property (@( posedge clk) s |-> p);
checks this implication only once.
The definition of sequential property should be clear at this point for both
bounded and unbounded sequences. However, its rationale has not been explained
yet. Even worse, the behavior or assertions a2_wrong and a3_wrong is nonintuitive
according to this definition. Nevertheless, this definition has many advantages that
will be explained only in Chaps. 10 and 22 . In this chapter, we will only provide one
additional example, further clarifying the definition of sequential property.
We mentioned in Example 6.34 that a sequential property of the form
a[ * ] ##1 b is equivalent to property a until b . This equivalence is intuitive,
and it is conditioned by the definition of the sequential property. Indeed, property
a[ * ] ##1 b fails iff there is a finite fragment of the trace witnessing that sequence
a[ * ] ##1 b cannot have a match. This only happens if before the first occurrence of
5 As follows from the definition, all sequence matches should be non-empty.
Search WWH ::




Custom Search