Hardware Reference
In-Depth Information
￿ Default reporting and the execution of action blocks of deferred assertions are
scheduled in the Reactive region in the case of observed deferred assertions and
in the Postponed region for the final deferred assertions.
￿ An action block of a deferred assertion may only be a subroutine call. The
contents of the body of the subroutine of final deferred assertions is restricted
to passive statements because the subroutine executes in a region that does not
allow any further generation of events in the current time step.
4.3.1
Deferred Assertion Simulation
Deferred assertions evaluate like immediate assertions, but the results are tentative,
contingent upon possible re-execution of the same assertion in the time slot. This
can happen, for example in Fig. 4.4 when the enclosing process of an assertion is
sensitive to variables with values that fluctuate before they stabilize in the Active
region. The immediate assertions shown in that figure would fire on every such
change if the expression a==b becomes false.
The difference between observed and final deferred assertions is in the extent of
glitch filtering. Observed assertions filter glitches that occur in a single scheduling
region set, Active or Reactive. The example in Fig. 4.4 illustrates a glitch occurring
in the Active region. In contrast, final assertions filter glitches that are created by the
interaction between Active and Reactive regions. Such a glitch can be created when
the assignment to a in Fig. 4.4 is made in the Active region (i.e., inside a module )
and that of b in the Reactive region (i.e., inside a program ) in the same time slot.
In that case the glitch spans both regions and would not be filtered by the observed
deferred assertion.
The reporting of deferred assertions is delayed (hence their name), and
the deferred assertion actions are placed into a deferred assertion report queue
of the currently executing process. If a deferred assertion flush point is reached in
the process, the queue is cleared and thus no reports will be generated.
When a process in which a deferred assertion exists retriggers in the same time
slot, the results of the assertion, in contrast to immediate assertions, are not reported
immediately. Instead, depending on the kind of deferred assertion, reporting is
scheduled in the Observed region for observed assertions and in the Postponed
region for final assertions, pending further determination. If the process retriggers
in the same time slot before the Observed region, respectively Postponed region, is
reached, the previous result of the assertion is flushed from the deferred assertion
report queue. Therefore, the simulation control in the Observed region, respectively
Postponed region, sees at most one copy of the result of the assertion, which is then
said to mature . In the case of observed assertions, the result and if present the action
block subroutine of the matured entry are scheduled in the Reactive region and
executed in there. For final assertions, once the Postponed region is reached, each
pending report that has not been flushed from the deferred final assertion queue
matures and is executed.
Search WWH ::




Custom Search