WARN Command
Monitors the circuit during simulation and generates warning messages for undesirable conditions.
| Command | WARN |
|---|---|
| Abbreviation | WA |
| Category | Simulation Control |
Function
The WARN command is used to monitor the circuit during simulation and obtain messages concerning the occurrence of undesirable situations such as timing problems, switching hazards, wire-tie conflicts, and oscillations.
Previously-set WARN conditions are cancelled using the NO prefix. Unless explicitly indicated, keyword options that support the keyword=value field format also support this format with the NO prefix. For example:
NO WARN SPIKE=sig1
cancels the specific request to generate a warning message whenever a spike hazard occurs at signal sig1. All keyword options support the keyword: field format with the NO prefix. For example:
NO WARN SPIKE:
cancels all warning messages for the occurrence of spike hazards.
Warning messages for oscillations (OSCILLATION), wire-tie conflicts (CONFLICT), strobe errors (STROBE), primary input changes while the circuit is unstable (UNSTABLE), and all part timing checks (SETUP, HOLD, PW) are enabled by default. All other warnings are initially disabled.
Usage
See the Sections Setting Simulation Warnings and Setting Simulation Breakpoints in Simulation Options for a complete description of the WARN command.
The WARN command can be restricted to a specified interval of tests, for patterns, or time, for waveforms, with the PRANGE keyword option:
WARN PRANGE=<prange spec>
Warn On A Transition To Unknown
The MEMLATCH keyword specifies a transition from a known state to an unknown state at a SIMIC primitive D-latch or edge-triggered flip-flop due to a sensitized unknown input (e.g., unknown clock):
WARN MEMLATCH=<signals_ff>
triggers a warning when an unknown input value is sensitized at a built-in memory element whose output is one of the specified signals, while:
WARN MEMLATCH:
triggers a warning when the state of any built-in memory element becomes unknown due to a sensitized unknown input.
The X keyword specifies a level transition from a known state to an unknown state, 1→X, 0→X:
WARN X=<signals>
triggers a warning when any of the specified signals becomes unknown, while:
WARN X:
triggers a warning when any signal becomes unknown.
Warn On The Occurrence Of Timing Hazards
The timing hazards described in this section are primarily due to the distribution of propagation delays within the circuit.
The HAZARD keyword is a shorthand designation of all switching hazards— pulse, spike, or near. The command:
WARN HAZARD=<signals>
triggers a warning when a pulse, spike, or near hazard occurs at any of the specified signals. For example, the command:
WARN HAZARD=sig1
is equivalent to:
WARN PULSE=sig1 SPIKE=sig1 NEAR=sig1
The command:
WARN HAZARD:
triggers a warning when a pulse, spike, or near hazard occurs at any signal.
The MEMSPIKE keyword specifies the occurrence of a spike hazard at a flip-flop primitive, and is therefore a subset of SPIKE. It narrows focus to spikes that could cause steady-state errors. The command:
WARN MEMSPIKE=<signals_ff>
triggers a warning when a spike hazard occurs at any of the specified flip-flop output signals, while:
WARN MEMSPIKE:
triggers a warning when a spike hazard occurs at any flip-flop. When a spike occurs at a flip-flop for which the MEMSPIKE keyword option has been specified, the warn message will contain memspike as the cause of the warning, rather than spike.
The NEAR keyword specifies the occurrence of a near hazard (see also DEFINE NEAR). The command:
WARN NEAR=<signals>
triggers a warning when a near hazard occurs at any of the specified signals, while:
WARN NEAR:
triggers a warning when a near hazard occurs at any signal.
The PULSE keyword specifies the occurrence of a pulse hazard (see also DEFINE PULSE). The command:
WARN PULSE=<signals>
triggers a warning when a pulse hazard occurs at any of the specified signals, while:
WARN PULSE:
triggers a warning when a pulse hazard occurs at any signal.
The SPIKE keyword specifies the occurrence of a spike hazard. The command:
WARN SPIKE=<signals>
triggers a warning when a spike hazard occurs at any of the specified signals, while:
WARN SPIKE:
triggers a warning when a spike hazard occurs at any signal.
The STROBE keyword specifies the condition that a strobe error occurs at any primary output or bus. This is only defined for tester emulation mode. The command:
WARN STROBE:
triggers a warning for this situation.
The UNSTABLE keyword designates the condition that a change of primary input state has occurred while the circuit was still in an unstable state (loss of fundamental mode of operation for waveform and tester emulation modes). The command:
WARN UNSTABLE:
triggers a warning for this situation.
Warn On The Occurrence Of Timing Check Violations
Warning messages can be requested for timing check violations at SIMIC latches and flip-flops. The PARTS keyword is used to specify which memory elements to monitor for the selected timing check(s). The command:
WARN PARTS=<parts_ff> <timing-check>: ...
selects specific memory elements to monitor. For example,
WARN PART=ff1,ff2 SETUP.D: PW:
triggers warning messages for data setup-time and all pulse-width check violations at the memory elements named ff1 and ff2.
The command:
WARN PARTS: <timing-check>: ...
triggers warning messages when violations of the specified timing checks occur at any memory element. For example,
WARN PART: SETUP: HOLD: PW:
will cause any timing check violation at any memory element to trigger a warning message.
Warn On The Occurrence Of Wire-tie Conflicts
The CONFLICT keyword specifies a wire-tie conflict. The command:
WARN CONFLICT=<signals>
triggers a warning when a wire-tie conflict occurs at any of the specified signals, while the command:
WARN CONFLICT:
triggers a warning when any wire-tie conflict occurs.
The CONFLICT keyword accepts the same type of signal specification as the LIST keyword.
Warn On Oscillation
The OSCILLATION keyword specifies excessive activity in response to a single change of input state (see also DEFINE OSCILLATION). The command:
WARN OSCILLATION:
triggers a warning when any signal exhibits excessive activity.
Suppressing Excessive Messages On A Per-Signal Basis
The STOP keyword option controls the maximum number of per-condition warning messages SIMIC issues for each signal. The command form is:
WARN STOP=<integer>
By default, SIMIC will only display 10 SPIKE messages, 10 PULSE messages, etc., for each signal. Thus, SIMIC's default is equivalent to:
WARN STOP=10
The STOP limit must be an integer ranging from 1 to 511.
To prevent any messages from being suppressed, use the command:
NO WARN STOP:
Directing Warn Messages
By default, warning messages are directed to the terminal. The command:
NO WARN TERM:
disables warn messages at the terminal. These messages can be re-enabled at the terminal with the command:
WARN TERM:
Warn messages can also be directed a file with the FILE keyword. The form:
WARN FILE=<file name>
explicitly specifies a file name, and possibly its extension. The command:
WARN FILE:
specifies a file with the default file name (see DEFINE FILE). If the second form is used, or if no file extension is specified in the first form, the file's default extension is wrn.
Regardless of how they were enabled, warn messages to a file are disabled with the command:
NO WARN FILE: