Hardware Reference
In-Depth Information
Table 7.7
Control type values
Va l u e
Control
Description
Lock
Prohibit any control changes
1
Unlock
Allow control changes
2
On
Enable
3
Off
Disable
4
Kill
Kill assertions
5
6
PassOn
Enable execution of success action blocks
7
PassOff
Disable execution of success action blocks
8
FailOn
Enable execution of fail action blocks
9
FailOff
Disable execution of fail action blocks
10
NonvacuousOn
Enable execution of action blocks on non-vacuous success
11
VacuousOff
Disable execution of action blocks on vacuous success
turn off assert statements while leaving cover statements on. Similarly, concurrent
assertions cannot be set apart from immediate assertions when different control is
required for each group. Such fine-grained control is often needed in debugging
during development phases of a design project.
We now discuss $assertcontrol 8 , a control task that assimilates the function-
ality of the tasks described in the preceding sections as well as provides additional
fine-grained control and flexibility. It has the following syntax:
$assercontrol( control_type[ , [assertion_type][ , [directive_type]
[ , [levels][ , list_of_scopes_or_assertions]]]] );
The first argument control_type is an integer which specifies the type of
control that is applied on the selected assertions. The control functions and their
corresponding argument values are enumerated in Table 7.7 . The control functions
include all the features of the tasks in the preceding sections.
A model under development in a diverse environment of collaborating engineers
is often entangled with control tasks that are suitable to individual portions of the
design, but may be intruding on other portions when integrated to execute together.
In such cases, the designer often needs to have overriding control to make progress.
A locking feature is provided to assist in overriding control. When lock is enabled
on an assertion, subsequent change in control is prohibited until lock is disabled. For
instance, if an assertion was turned off before lock was enabled, it remains turned off
regardless of any further invocation of $asserton or $assertcontrol to turn it on.
lock can be disabled at a later time to continue controlling the assertion execution.
Similar actions of lock are applicable on controlling action blocks as well. Applying
lock to assertions contained in a power domain while controlling other assertions in
the system is a common application.
8 $assertcontrol was introduced in 2012 LRM [ 8 ].
 
Search WWH ::




Custom Search