Hardware Reference
In-Depth Information
Until
There are only the unbounded forms of these operators:
Unbounded weak:
p1
until
p2
Unbounded strong:
p1
s_until
p2
The operator comes in two forms, weak
until
and strong
s_until
. The formal
semantics is covered in Chap.
22
.
The weak
until
property holds true provided that either
p2
is true at the first
clock tick or
p1
holds true at all clock ticks as long as
p2
is false. If there is no clock
tick at which
p2
is ever true, the property evaluates true. The strong form
s_until
is similar except when there is no clock tick at which
p2
holds true—the strong form
is false in that case.
Example 10.10.
Suppose that condition
c
must hold true between the occurrences
of conditions
e1
and
e2
but not necessarily including these clock ticks.
a1:
assert property
(e1 |=> c
until
e2);
a2:
assert property
(e1 |=> c
s_until
e2);
Discussion:
Assertion
a1
will succeed even if there are not enough clock ticks for
detecting
e2
true (provided that
c
holds till then), while
a2
will declare failure in
that situation due to the use of a strong until operator.
t
Always and S_eventually
The following are the unbounded forms of these operators:
Unbounded weak:
always
p
Unbounded strong:
s_eventually
p
Property
always
p
is true if
p
holds true at every clock tick. The operator
always
is
weak
, hence when there are no more clock ticks, the property evaluates to true. It
is equivalent to
p
until
1'b0
. Recall that
1'b0
is Boolean
false
in SystemVerilog.
Property
s_eventually
p
is true if there is a sufficient number of clock ticks to
find one at which
p
is true.
What if we negate an
always
property as
not always
p
? According to the
definition this property is true iff
always
p
is false, which means that
p
is false
at least at one clock tick. This is exactly the property
s_eventually not
p
.Itis
a strong eventuality because there must be a clock tick where
p
is false (otherwise
always
p
would be true).
It follows that
s_eventually
p
is equivalent to
not always not
p
. And also
s_eventually
p
is equivalent to
1'b1
s_until
p
.
Notice how the negation changes the strength of the resulting property. Negating
a weak
always
we obtain a strong
s_eventually
. This is because to falsify
Search WWH ::
Custom Search