Hardware Reference
In-Depth Information
a_disable: assert property (
1
disable iff (reset)
2
@( posedge clk) a |=> b
3
) else $error("FAIL");
4
Fig. 13.1
Simple concurrent assertion with a disable clause
condition is cumbersome, so SVA provides various reset constructs with which to
declare reset conditions and specify their scopes.
A reset is asynchronous if the associated reset condition is checked at every
time step during the evaluation of the underlying property. SVA provides three
asynchronous resets: disable iff , accept_on , and reject_on . A reset is syn-
chronous if the associated reset condition is governed by a clock and checked only
in time steps in which the clocking event occurs. SVA provides two synchronous
resets: sync_accept_on and sync_reject_on .Apartfrom disable iff ,allof
the resets are referred to collectively as abort operators.
13.1.1
Disable Clause
A disable clause is specified with the compound keyword disable iff . It defines
a top-level asynchronous reset condition that applies throughout the evaluation
of a concurrent assertion. The reset condition is called the disable condition of
the disable clause. With the exception of overriding an incoming default disable
condition (see below), all nesting of disable clauses is illegal.
The meaning of a disable clause is that the current ( not the sampled) value
of the disable condition is checked continuously throughout the evaluation of the
underlying property of the concurrent assertion. If the disable condition is true in
any time between the start of an evaluation attempt in the Observed region and the
end of the evaluation attempt then the evaluation attempt is disabled. The evaluation
of the property thus stops and neither passes nor fails. Instead, the overall result of
the evaluation is disabled . If the disable condition neither is nor becomes true during
the evaluation, then the evaluation either passes or fails according to the result of the
evaluation of the underlying property.
Figure 13.1 gives a simple example. A disable clause may be specified either
before or after an explicit clocking event control in a concurrent assertion, but it
must precede all other terms of the underlying property. In this example, the disable
condition is reset . The underlying property appears in Line 3 and is singly clocked
by posedge clk .
Figure 13.2 shows a possible waveform for a_disable . The attempt that begins
at time 20 is disabled by the transition to 1'b1 of reset at time 35. In the absence
of the disable clause, this attempt would have failed at time 40, but, because it is
preempted, no failure occurs and the failing action block in Line 4 does not execute.
Search WWH ::




Custom Search