The History Files
Saving signal event history information for simulation display and analysis programs.
Description
If requested, SIMIC can save signal event history information in binary files. The purpose of these files is to interface to simulation display and analysis programs. Two files are created: the general history file and the sequential history file. Both files store information in a compressed format to significantly reduce their size.
Access routines can be provided to allow easy generation of other formats from the history file format. Contact Genashor to find out if a particular format conversion program is already available or can be provided.
The General History File
The default extension for this file is hig. This file contains:
- Circuit statistics. This is used to check the integrity between this and the sequential history file and to provide information on the signals that are included in the history.
-
Circuit state dump information. These are snapshots of the state of the network at specified intervals. The snapshots are used to provide a fast way of "jumping" from one time to another. It also provides a method of "resyncing" the state of the network when history information is suppressed (with the
PRANGEkeyword option).
The Sequential History File
The default extension for this file is his. This file contains signal, time, and test information for simulation events, as well as indications of when history information is suppressed during the simulation.
Enabling History File Generation
History file generation is enabled by selecting the signals to trace with the HISTORY (HI) command's LIST (LI) keyword option:
HISTORY LIST:
to select all signals not masked by the STRING option, or:
HISTORY LIST=<list of signals>
to select the signals specified in <list of signals> not masked by the STRING option.
The STRING masking options are described in Name-Based Filtering below.
The NO prefix may be used with the LIST keyword to remove signals. For example, the sequence of commands:
HISTORY LIST:
NO HISTORY LIST=abc,def
would cause all signals (not filtered by the STRING option) to be traced in the History file, except signals abc and def.
Restricting History Output To A Specified Interval
HISTORY output can be restricted to a specified test (patterns) or time (waveforms) with the PRANGE option of the HISTORY command. See Simulation Options & Timing for information on restricting simulation options to a specified simulation interval.
Specifying a Dump Interval
Once enabled, dumps to the General History file are performed every 100 test steps (by default). This default can be changed with the PSTEP (PS) keyword option:
HISTORY PSTEP=<n>
where <n> is the test interval to perform the dumps. The dumps can be disabled with the command:
NO HISTORY PSTEP:
Specifying the History File Names
By default, SIMIC uses the default file name to construct the history file names. This default can be overridden with the FILE (FI) keyword option:
HISTORY FILE=<file name>
The default file name can be re-specified with:
HISTORY FILE:
It is important to note that the default extension should not be overridden, since the general and sequential history files must have unique names.
Name-Based Filtering
Overview
While the LIST keyword provides flexibility in selecting and excluding signals to be traced in the History file, this method can be inconvenient for situations where many signals distributed throughout the circuit should be excluded. One such situation arises in standard cell methodologies, where the values of certain (or all) signals internal to the library cells either need not, or should not, be saved for display.
SIMIC supports a methodology of automatically filtering signals based either on their names, or on the names of the parts that generate them. This systematic filtering mechanism does not by itself select new signals or reject previously selected signals; rather it acts as a screen for signals specified in future LIST keyword-fields.
LIST specifications when the NO command prefix is used.
Two basic types of name-based filters are currently supported:
- Part name filtering. A signal is filtered if the lowest-level component of the generating part's hierarchical name is numeric or alphanumeric (that is, non-numeric).
- Signal name filtering. A signal is filtered if its hierarchical name matches any predefined filtering pattern (template).
Obviously, naming conventions for parts and signals internal to library cells must be compatible with these two filter types, in order to fully take advantage of SIMIC's automatic name-based filtering.
By default, no name-based filtering is performed for the
HISTORYcommand.
Filtering Based On Part Names
If the parts that generate internal cell signals are all assigned, say, numeric names, then part name filtering can be used to automatically exclude these signals.
For example, suppose that a cell library has a full-adder cell, and that this cell is defined as shown in Figure 31 below. Signals and1, and2, and and3 are all internal to the cell, and their generating parts have been assigned instance names whose characters are strictly numerics (0-9). The remaining signals, sum and carry-out, are not internal signals, and their generating part names are not numeric (although some characters in these names may be numerics, e.g., or1).
Figure 31: Full-Adder Cell For Numeric Filtering
c= Full-Adder cell
t=full-adder i=a,b,carry-in o=sum,carry-out
p=xor t=exor i=a,b,carry-in o=sum
p=1 t=and i=a,carry-in o=and1
p=2 t=and i=b,carry-in o=and2
p=3 t=and i=a,b o=and3
p=or1 t=or i=and1,and2,and3 o=carry-out
A filter for the internal signals is set up with the NO prefix and the STRING (STRI) keyword option (the NO prefix specifies "do not include names of the specified type"):
NO HISTORY STRING=&NUMERIC
Any prefix of the word NUMERIC is valid (e.g., &N, &NU, etc.).
Caution: SIMIC will also accept NUMERIC, without the leading &. This would be another valid name-based filter whose effects are entirely different from &NUMERIC. See Filtering Based On Signal Names below.
Filtering will occur when subsequent signals are specified with the HISTORY command's LIST keyword.
Note that the hierarchical part name of the instantiated full-adder need not be numeric; only the lowest component of the part name is relevant. For example, suppose that two full-adder instances in the circuit are:
p=a t=full-adder i=a1,b1,cin1 o=s1,cout1
p=b t=full-adder i=a2,b2,cin2 o=s2,cout2
The names of the parts generating the internal signals will be a.1, a.2, a.3, b.1, b.2, and b.3; the lowest components of these hierarchical names are all numeric. If the command:
HISTORY LIST:
is issued after the above command, then the output signals of these six parts will not be present in the History file.
A filter can be removed (disabled) by re-specifying it without the NO prefix:
HISTORY STRING=&NUMERIC
Filters can be introduced and removed as necessary. For example, the run command sequence:
NO HISTORY STRING=&NUMERIC
HISTORY LIST=a.()
HISTORY STRING=&NUMERIC
HISTORY LIST=b.()
causes signals a.and1, a.and2, and a.and3 to be absent from the History file, and signals b.and1, b.and2, b.and3 to be included (a specification such as a.() is a wildcard—it means "all signals whose names begin with a."). See the Simulation Output documentation for a full description of signal name specification.
In addition to numeric part name filtering, SIMIC also supports filtering of signals whose generating elements have alphanumeric (non-numeric) part names. This filter is introduced with the command:
NO HISTORY STRING=&ALPHANUMERIC
Any prefix of the word ALPHANUMERIC is valid (e.g., &A, &AL, etc.).
This filter is removed with the command:
HISTORY STRING=&ALPHANUMERIC
To use this filter for the full-adder cell, the part naming convention would be reversed; the parts generating signals and1, and2, and and3, would be assigned non-numeric names, while the parts generating sum and carry-out would be assigned numeric names.
The &NUMERIC and &ALPHANUMERIC filters are complementary; specifying both would filter all subsequently-specified signals. SIMIC issues a warning message if both filters are activated, and will perform the filtering.
Filtering Based On Signal Names
The second type of name-based filter operates on signal names. Here, a filter is specified as a template or pattern. If a signal's hierarchical name contains this pattern, it is excluded from the History file.
Signal-name based filters are activated with the command:
NO HISTORY STRING=<template>
Pattern Strings Without "?"
The simplest form of <template> is a character string, possibly quoted. For example, the command:
NO HISTORY STRING=and
would filter all signals whose names contain the substring "and". Thus, if the circuit contains two instances of the full-adder cell illustrated in Figure 31:
p=a0 t=full-adder i=x0,y0,cin o=sum0,cout0
p=a1 t=full-adder i=x1,y1,cout0 o=sum1,cout1
then any of the signals a0.and1, a0.and2, a0.and3, a1.and1, a1.and2, or a1.and3 would be filtered, since their names all contain "and".
Multiple pattern strings may be specified in a single command. For example:
HISTORY STRING=and,xor LIST:
would filter all signals that contain "and" or "xor" as a substring.
A signal name filter can be removed (disabled) by re-specifying it without the NO prefix:
HISTORY STRING=<template>
Filters can be introduced and removed as necessary. For example, the run command sequence:
NO HISTORY STRING=and
HISTORY LIST=a.()
HISTORY STRING=and
HISTORY LIST=b.()
causes signals a.and1, a.and2, and a.and3 to be absent from the History file, and signals b.and1, b.and2, b.and3 to be included.
SIMIC does not assign any significance to the filter template. For example, the command:
NO HISTORY STRING=NUMERIC
would cause all subsequently specified signals containing the substring "NUMERIC" to be filtered from the signals included in the History file.
Templates such as "and" are not good choices for filters, since this character sequence is likely to be used within part names. For example, this template would cause the signal operand.sum to be filtered from the History file, since "and" is a substring of "operand". A better method would be to use special characters in the names of internal cell signals. Figure 32 illustrates a full-adder library cell definition using the "?" character in internal signal names. The appropriate filter would be activated with the command:
NO HISTORY STRING="?"
Pattern Strings With "?"
Pattern strings may contain the wildcard character "?" which matches any single character in the signal name. This allows more precise matching. For example, suppose that the full-adder cell signals were named as shown in Figure 32:
Figure 32: Full-Adder Cell For "?" Signal Name Filtering
c= Full-Adder cell
t=full-adder i=a,b,carry-in o=sum,carry-out
p=xor t=exor i=a,b,carry-in o=sum
p=1 t=and i=a,carry-in o=@and1
p=2 t=and i=b,carry-in o=@and2
p=3 t=and i=a,b o=@and3
p=or1 t=or i=@and1,@and2,@and3 o=carry-out
Note that all internal cell signals are prefixed with an "@" character. The pattern string:
HISTORY STRING=?and LIST:
would filter signals whose names contain any character followed by "and". Thus, signals like @and1, @and2, and @and3 would be filtered, but a signal named expand (which contains "and" but not "?and") would not be filtered.
Similarly, the pattern:
HISTORY STRING=@??? LIST:
would filter any signal whose name begins with "@" followed by exactly three characters. This would match @and1, @and2, @and3, but not @carry (too many characters after "@").
Note: The pattern matching is case-sensitive. Signal names must match the exact case of the pattern string.
Repetition Templates
The general form of <template> is:
<repetition> * <character-string>
where <repetition> is an integer specifying the minimum number of repetitions of the character string <character-string>. Optional spaces may be placed before or after the asterisk. For example:
NO HISTORY STRING=2*"?"
would cause filtering of subsequently specified signals whose names contain two or more question marks, regardless of their distribution.
As another example:
NO HISTORY STRING=2*"."
would cause filtering of all signals at a hierarchical depth greater than 2.
Combining Filter Types
The NUMERIC, NONUMERIC, and string pattern options may be combined in a single command. For example:
HISTORY STRING=NONUMERIC,@??? LIST:
would filter signals generated by non-numeric parts and signals whose names match the pattern @???.
Removing Filters
To remove name-based filtering, use the NO prefix:
NO HISTORY STRING:
This removes all previously specified string filters and reverts to no filtering.