Simulator Output

In this topic:

The List File

SIMetrix produces a list file by default. This receives all text output except for the Monte Carlo log. This includes operating point results, model parameters, noise analysis results, sensitivity analysis results, pole-zero analysis results and tabulated vectors specified by .PRINT.

The list file is generated in the same directory as the netlist. It has the same name as the netlist but with the extension .OUT.

There are a number of options that control the list file output.

Option name Description
PARAMLOG Valid values:
Full All instance and model parameter values reported
Given All user specified model parameters and parameterised instance parameters
Brief Parameterised model and instance parameters
None None

Default = Given
EXPAND Flag. If specified, the netlist with all sub-circuits expanded will be output to the list file
EXPANDFILE String. If specified the expand netlist will be output to the specified file rather than the list file
NOMOD Same as PARAMLOG=none. Model parameters will not be output
WIDTH Page width in number of characters. (The list file is formatted assuming that it will be read or printed using a fixed width font such as Courier.) The default is 80 but any value may be used not just 80 and 132 as in SPICE 2.
OPINFO If set DC operating point info file is created for all analyses (except .SENS). Normally it is created only for .OP analyses

The Binary Data File

The simulation data is stored in a binary data file. The format is proprietary to SIMetrix and is not compatible with SPICE 'raw' files.

The name and location of the binary file depends on configuration settings and in what mode the simulator is run. Usually, the file is located in the directory specified by the TEMPDATADIR configuration setting (see Configuration Settings) and is named according to the analysis type and appended with the extension .sxdat. E.g.tran1.sxdat, ac2.sxdat, dc3.sxdat etc. The name and location can be overridden at the program command line if operated in non-GUI mode or at the front end Run command line if run in GUI mode.

Only the SIMetrix front end can read the simulator's binary data file. When run in GUI mode, the file is automatically loaded and in fact it is not usually necessary to know anything about it except perhaps when it grows very large and fills up your disk. If the simulator is run in non-GUI mode, it becomes necessary to explicitly load the data into the front end when the run is complete. This can be done with the command shell menu File > Data > Load.... After the data is loaded, the results can be plotted in the usual manner. See User's Manual/Graphs,Probes and Data Analysis/Saving Data/Restoring Simulation Data for further details.

Output Data Names

For transient, DC and AC analyses, SIMetrix calculates and stores the circuit's node voltages and device pin currents and these are all given unique names. If using probing techniques with the front end's schematic editor you don't usually need to know anything about the names used. However there are situations where it is necessary or helpful to know how these names are derived. An example is when compiling an expression relating voltages and currents to be used in a .PRINT statement. Another is when plotting results created by simulating a netlist that was not generated using the schematic editor. The names used are documented in the following notes.

Top Level Node Voltages

The vector names used for node voltages at the top level (i.e. not in a subcircuit) are simply the name of the node used in the netlist.

Subcircuit Node Voltages

For nodes within a subcircuit, the name is prefixed with the subcircuit reference and a '.'. For example:

X1 N1 N2 N3 SubName
X2 N4 N5 N6 SubName

.SUBCKT 1 2 3 SubName
X3 N1 2 N3 SubName2
R1 VIN 0 1k
...
.ENDS

.SUBCKT 1 2 3 SubName2
V1 VCC 0 5
...
.ENDS

The internal node VIN in definition SubName referenced by X1 would be called X1.VIN. The same node referenced by X2 would be called X2.VIN. The node VCC defined in subcircuit SubName2 would be named X1.X3.VCC and X2.X3.VCC for X1 and X2 respectively.

Nodes with Non-standard Names

A non-standard node name is one that begins with a digit or which contains one or more of the characters:

\ " % & + - * / ^ < > [ ] ' @ { }

These are legal but introduce problems when accessing the voltage data that they carry. The above characters can be used in arithmetic expressions so cause a conflict if used as a node name. In order to access the voltage data on a node so named, use the Vec() function:

Vec('node_name')

Example with .PRINT and node called V+

.PRINT TRAN {Vec('V+')}

A similar syntax is required when using the front end plotting commands.

Device Pin Currents

Device pin currents are named in the following form:

device_name#pin_name

For primitive devices (i.e. not sub-circuits) pin_name must comply with the table in Device Lines. For example the current into the collector of Q23 would be Q23#c.

The pin names for sub-circuits depend on whether the pinnames: specifier (see Subcircuit Instance) is included in the netlist entry for the device. If it is the pin current name will be the name listed after pinnames:. If it isn't then they are numbered in sequence starting from 1. The order is the same as the order they appear in the netlist device line. For example, if the subcircuit line is:

X$U10 N1 N2 N3 N4 N5 LM324 pinnames: VINP VINN VP VN VOUT

The current into the last pin (connected to N5) would be U10#VOUT

(Note that 'X$' is stripped off as explained above in Device Lines).

If the netlist line is:

X$U10 N1 N2 N3 N4 N5 LM324

The same current would be U10#5

Internal Device Values

Some devices have internal nodes or sources and the voltages or currents associated with these may be output by the simulator. These are named in a similar manner to pin currents i.e.

device_name#internal_name

The internal_name depends on the device. For example, bipolar transistors create an internal node for each terminal that specifies a corresponding resistance parameter. So if the RE parameter is specified an internal node will be created called emitter.

Note that internal device values are only output if explicitly enabled using the ".KEEP /INTERNAL" statement. See .KEEP.