Hardware Reference
In-Depth Information
Or, since
req
is a Boolean expression (or a signal), the assertion can be written
more simply as
a3:
assert property
(req |=> !req);
or as
a4:
assert property
(
not strong
(req[
*
2]);
t
Example 10.15.
If there is no acknowledgment
ack
after
req
, then in two clock
ticks
rtry
should be asserted.
Solution:
This can be reformulated as “if there is a request then either at the next
tick there should be an acknowledgment, or in two cycles
rtry
should be asserted”:
a1:
assert property
(
req
implies
(
nexttime
ack)
or nexttime
[2] rtry);
The same assertion may be rewritten as:
a2:
assert property
(
req
implies
(
nexttime
(ack
or nexttime
rtry));
If
req
,
ack
, and
rtry
are Boolean expressions then the assertion can be
simplified as follows:
t
a:
assert property
(req |=> (ack
or
##1 rtry));
Bounded Eventually and Always Operators
eventually
[m:n] p
s_eventually
[m:n] p
s_eventually
[m:$] p
always
[m:n] p
s_always
[m:n] p
always
[m:$] p
The bounded forms of the operators
eventually
and
always
, both weak and
strong, are derived operators that are defined using weak and strong forms of
nexttime
, respectively.
1. Let
m
0.
eventually
[m:m] p
is the same as
nexttime
[m] p
.Thisisa
simple equivalence between weak forms. Similarly,
(
s_eventually
[m:m] p)
is equivalent to
s_nexttime
[m] p
.
2. Let
m
0,
n
>
m
.
eventually
[m:n] p
is
defined
recursively
as
eventually
[m:n-1] p
or nexttime
[n] p
.
This recursive definition can be expanded into a disjunction of
n-m+1
nexttime
properties. For example,
eventually
[2:4] p
is equivalent to
nexttime
[2] p
or nexttime
[3] p
or nexttime
[4] p
.
Search WWH ::
Custom Search