Hardware Reference
In-Depth Information
The explicit always operator is rarely used. The vast majority of assertions are
either written outside procedural code or inside always procedures 4
and thus have
the implicit outermost always operator.
As in the case of the explicit double always operators, an always property in the
body of a continuously monitored assertion may result in degradation of simulation
performance.
Efficiency Tip. Do not explicitly specify the outermost always in continuously
monitored assertions.
Example 5.9.
Check that signal sig may only have values 0, 1, 2, or 4.
Solution:
a1: assert property (@( posedge clk) sig inside {0, 1, 2, 4});
assuming that a1 is a standalone assertion.
Discussion: Following the efficiency tip, this assertion should not be written as
a2: assert property (@( posedge clk)
always sig inside {0, 1, 2, 4});
Although assertions a1 and a2 are equivalent, simulation performance of a2 may be
worse.
t
5.4
S_eventually Property
Property s_eventually p is true in clock tick i iff p is true in some clock tick
j i . It follows that property s_eventually p is true iff property p is true in some
clock tick, as shown in Fig. 5.4 .
The reader may wonder why the keyword s_eventually has a prefix s_ .As
explained in Chap. 10 , s_eventually is a strong operator, and in SVA names of
strong operators have a prefix s_ .
Similar to always p , property s_eventually p defines a series of evaluations
of p .Butfor s_eventually p to succeed only requires that at least one of those
evaluations succeed.
p
Fig. 5.4 s_eventually
property
clock ticks
4 See Chap. 14 for discussion about procedural concurrent assertions.
 
Search WWH ::




Custom Search