Hardware Reference
In-Depth Information
assertion main reset expression (the argument of
disable iff
statement) which
is never sampled as explained in detail in Sect.
13.1.1
. Sampling of variables is
explained in detail in Appendix
A
.
The value of the main assertion reset is not sampled in concurrent assertions.
4.4.4
Reset
Usually, we are interested in checking an assertion only when the reset signal
is inactive.
disable iff
operator is used to specify the reset expression of the
assertion. If the main assertion clock is explicitly specified,
disable iff
should
immediately follow it. If the assertion clock is omitted,
disable iff
should be the
first operator in the assertion body. There may be at most one
disable iff
operator
in the whole assertion.
If the disable condition is true between the start of an evaluation attempt in the
Observed region and the end of the evaluation attempt then the overall evaluation of
the property results in disabled. The evaluation attempt is discarded (neither success
nor failure). Such attempts are called
disabled
. The reset is asynchronous, in the
sense that it is monitored at every time step, and not only at the ticks of the assertion
clock. Therefore, it also makes it sensitive to 0-width simulation glitches. The
sensitivity can be removed by applying
$sampled
function to the disable expression
(or its component variables). This makes the disable condition insensitive to such
glitches like the body of the concurrent assertion.
Example 4.8.
Consider assertion
a1
a1:
assert property
(@(
posedge
clk)
disable iff
(rst)
req |->
nexttime
[2] ack);
with the timing diagram shown in Fig.
4.11
.
In this example, there are three assertion evaluation attempts beginning at times
20, 40, and 70 that satisfy the antecedent signal
req
.
5
First two of them are disabled,
and therefore the assertion does not fail even though there is no
ack
received. The
last attempt is normal, and it succeeds because
ack
is received in two cycles after
req
is issued. Refer to Chap.
13
for detailed discussion about assertion resets.
t
As we mentioned, the
disable iff
expression acts asynchronously. Its eva-
luation goes on evaluating regardless of the occurrence of the clock tick of the
associated assertion. And, should it evaluate to true, all evaluation attempts of that
assertion that are “in flight” are declared disabled.
5
One could be tempted to say that the attempts begin at times 15, 35, and 65, but recall that the
attempts are synchronized with the rising edge of the clock.
Search WWH ::
Custom Search