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:

The optional <defaults> on the left side of the equal sign are:

.<duration>.<format>.<strength>

where:

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:

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:

  1. NRZ (Non-Return-to-Zero).
  2. RZ (Return-to-Zero)
  3. RO (Return-to-One).
  4. 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:

  1. NE (No-Envelope)
  2. RD (Return-to-Drive)
  3. 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