DEFINE Command
Defines simulation parameters, patterns, vectors, and aliases.
| Command | DEFINE |
|---|---|
| Abbreviation | DE |
| Category | Stimulus Definition & Application |
Function
The DEFINE command can be used to define global simulation parameters and the default file name.
The DEFINE command is used to define primary input stimuli.
The DEFINE command is used to define vector alias names that group signals and assign the group an output format for PRINT/WRITE operations.
The DEFINE command is used to initiate tester emulation mode and to define timing generators and strobes.
Defining Global Parameters
BTGDELAY
The BTGDELAY keyword controls whether loading is propagated through ON ideal switches (BTGN and BTGP) to dynamically adjust driver delays. By default, SIMIC performs dynamic delay modification. The command:
DEFINE BTGDELAY=STATIC
forces fixed delays at drivers of ideal switches. The command:
DEFINE BTGDELAY=DYNAMIC
enables dynamic delay modification.
FILE
The FILE keyword specifies the default file name:
DEFINE FILE=<file name>
The name, <file name>, is prefixed to the default file extension associated with particular run commands to systematize file naming. It should not contain an extension. Example:
DEFINE FILE=mycircuit
NEAR
The NEAR keyword defines the window for near hazard analysis. By default, this window is 2×(average gate propagation delay). The multiplier can be changed from its default value of 2 to another value with:
DEFINE NEAR=<integer>
The SIMIC default is equivalent to:
DEFINE NEAR=2
OSCILLATION
The OSCILLATION keyword defines the threshold for excessive activity.
By default, a signal's activity is excessive it executes 10 level transitions in response to a single change of input state. Excessively active signals are forced to X until the next input event. This definition can be changed with:
DEFINE OSCILLATION=<integer>
The SIMIC default is equivalent to:
DEFINE OSCILLATION=10
The maximum specifiable value is 255. Oscillation checks can be disabled with the command:
DEFINE OSCILLATION=INFINITE
PULSE
The PULSE keyword defines the width of pulse hazards. By default, this width is 3×(average gate propagation delay). The multiplier can be changed from its default value of 3 to another value with:
DEFINE PULSE=<integer>
The SIMIC default is equivalent to:
DEFINE PULSE=3
RDEPTH
The RDEPTH keyword defines the correspondence between the gate-level RESISTIVE drive strength and switch-level series depth. By default, this drive strength corresponds to a depth of 3. This default can be changed with:
DEFINE RDEPTH=<integer>
The SIMIC default is equivalent to:
DEFINE RDEPTH=3
STABILITY
The STABILITY keyword controls whether decays are included in the definition of circuit state stability. The command:
DEFINE STABILITY=POSTDECAY
defines the circuit state to be stable only after all transitions to non-tristating values have occurred, and all tristated signals with finite decay have decayed, in response to a primary input event. This is the SIMIC default. The command:
DEFINE STABILITY=PREDECAY
defines the circuit state to be stable after all transitions to non-tristating values have occurred, in response to a primary input event.
XADDRESS
The XADDRESS keyword controls handling of unknown (X) address lines at the ROM and RAM (RAMA, RAMB, and RAMC) SIMIC primitives. By default, if four or fewer address lines are unknown, SIMIC exhaustively reads all possibly addressed locations to set differing output lines to X, or writes data to all possibly addressed locations. If the number of unknown address lines exceeds this threshold, output data is all-X on a read, and the entire RAM contents are set to X on a write. The command:
DEFINE XADDRESS=<integer>
changes the threshold to the specified number. The SIMIC default is equivalent to:
DEFINE XADDRESS=4
Defining Primary Input Stimuli
Primary input stimuli are defined using the command form:
DEFINE <pw><name>.<width><defaults>= $
<sequence>
where:
<pw>is either a P (for patterns) or W (for waveforms),<name>is a user-defined name for the input sequence, immediately following the<pw>designator; combined, the two entries form the sequence's complete name,<width>is the number of signals for which the input sequence is defined,<defaults>(optional) specifies default attributes of the stimulus sequence appearing on the right side of the equal sign, and<sequence>is the stimulus sequence being defined.
The optional <defaults> on the left side of the equal sign are:
.<duration>.<format>.<strength>
where:
<duration>, called the default duration, is- for patterns, the number of tests to maintain each input state of
<sequence>before applying the next one. If unspecified, each input state is maintained for one test (the default duration is 1) - for waveforms, the amount of time to maintain each input state of
<sequence>before applying the next one. If unspecified, the default duration is 0, which means that all stimulus timing must be described in<sequence>
- for patterns, the number of tests to maintain each input state of
<format>is the default format (radix) of<sequence>(BINARY, OCTAL, HEXADECIMAL, INTEGER). If unspecified, the default is BINARY, and<strength>is the default strength of<sequence>(POWER, DRIVING, RESISTIVE, FLOATING). If unspecified, the default is DRIVING.
A single dot (.) separates adjacent options on the left side of the equal sign.
For example, the command:
define pall.3 = 000 001 010 011 100 101 110 111
defines a pattern, since the <pw> character is P. The pattern's name is, pall, and its width is 3. Since there are no <duration>, <format>, or <strength> specifications following the width entry, the default duration of each stimulus state is one test, the radix of <sequence> is BINARY, and the stimuli have DRIVING strength. See Input Stimuli for a complete description of these options and specification of the sequence, <sequence>.
Defining Vector Aliases
The DEFINE command may be used to group signals at run time, assign a name to each group, its vector alias, and associate a radix with each group for PRINT/WRITE output. The format for this command is:
DEFINE V<name>.<format>=<signals>
where <name> is a user-supplied alias for the vector, and <format> is one of the following format specifications:
- LEVEL – individual levels for each bit.
- OCTAL – octal representation.
- HEXADECIMAL – hexadecimal representation.
- INTEGER1 (INT1) – One's complement representation.
- INTEGER2 – Two's complement representation.
- POSINTEGER – Positive integer representation.
Except for the one's complement specification, which can only be INTEGER1 or INT1, any valid specification prefix is sufficient.
For example, to display a, b, c, and d together in hexadecimal format, and e, f, g, and h together in integer format, the following commands can be used:
DEFINE VAB.HEX=a,b,c,d
DEFINE VEF.INT=e,f,g,h
PRINT LIST=vab*vef
Initiating Tester Emulation Mode
The PERIOD keyword defines a master period corresponding to a tester cycle. The start of each interval begins a new test. The default test period is defined with the command:
DEFINE PERIOD=<time>
where <time> is the number of time-units in each test period. Defining a period automatically switches SIMIC into tester emulation mode, and it will remain in tester emulation mode until the master test period is explicitly removed. This is accomplished by setting the value to 0 with the command:
DEFINE PERIOD=0
Defining Timing Generators
This section presents a syntactic overview of defining timing generators. See Tester Emulation for a complete description.
Timing generator formats and drive envelopes (time-sets) are specified with the DEFINE command. If the primary input does not tristate, the following format may be used to define a timing generator:
DEFINE T<name>.<dformat>=<dmarks>
where <name> is a user-defined name for the time-set, <dformat> is one of the drive mask types listed below, and <dmarks> is a list of marks, or timing values, whose order and number depends on the <dformat> selected:
- NRZ (Non-Return-to-Zero).
- RZ (Return-to-Zero)
- RO (Return-to-One).
- RC (Return-to-Complement)
For example,
DEFINE TDAT1.NRZ=20,40
defines a timing generator named tdat1 with a NRZ format that delays transition to logic-1 by 20 time-units (from the beginning of the tester cycle), and transitions to logic-0 by 40 time-units.
The correct number of timing marks on the right, and their significance, depends on the selected drive mask.
If the primary input does tristate, the following format may be used to define a timing generator:
DEFINE T<name>.<dformat>.<eformat>= $
<dmarks>;<emarks>
where the additional <eformat> option is one of the enable masks listed below, controlling the mode of driving/ tristating transitions, and the additional <emarks> field specifies the times at which these transitions should occur:
- NE (No-Envelope)
- RD (Return-to-Drive)
- RF (Return-to-Float)
For example,
DEFINE TDAT2.NRZ.NE=20,40;50,70
Note the addition of <eformat>, which selects one of the enable formats described above, and <emarks> which is a list of timing values, whose order and number depends on the selected enable format.
defines a NRZ timing generator named tdat2 with the same characteristics as tdat1 above for driven transitions. However, for tdat2, transitions from driving to floating are delayed 50 time-units (from the beginning of the tester cycle), and transitions from floating to driving are delayed 70 time-units.
Defining Strobes
SIMIC supports two different types of strobes. The first is a point (or edge) strobe (SP), and the second is a window strobe (SW). The format for defining a strobe is:
DEFINE S<name>.<sformat>=<smarks>
where <name> is the user-defined name for the strobe, <sformat> is either SP (for a point strobe), or SW (for a window strobe), and <smarks> is a single value for SP, indicating the time to fire the strobe, or two values for SW, indicating the time to start and the time to stop the window strobe, respectively. All times are in time-units, relative to the start of the period.
For example, the following command defines a window strobe, whose window begins at time 600 and ends at time 700:
DEFINE SDEMO1.SW=600,700
To define a point strobe at time 800:
DEFINE SDEMO2.SP=800