SIMetrix SPICE Simulator Manual
SIMetrix SPICE Simulator Manual
Trademarks
PSpice is a trademark of Cadence Design Systems Inc.
Star-Hspice is a trademark of Synopsis Inc.
Contact
Catena Software Ltd., Terence House, 24 London Road,
Thatcham, RG18 4LQ, United Kingdom
Table of Contents
Chapter 1 Introduction
The SIMetrix Simulator - What is it? ................................ 11
A Short History of SPICE................................................. 11
Subcircuits....................................................................... 40
Overview .................................................................. 40
Subcircuit Definition ................................................. 40
Subcircuit Instance................................................... 42
Passing Parameters to Subcircuits .......................... 42
Nesting Subcircuits .................................................. 43
Global Nodes ........................................................... 43
Subcircuit Preprocessing ......................................... 43
Model Binning.................................................................. 44
Overview .................................................................. 44
Defining Binned Models ........................................... 44
Example ................................................................... 44
Language Differences ..................................................... 45
Inline Comment ........................................................ 45
Unlabelled Device Parameters................................. 45
LOG() and PWR() .................................................... 46
Customising Device Configuration .................................. 46
Overview .................................................................. 46
What does the Device Configuration File do?.......... 47
Creating a Device Configuration File ....................... 47
4
Table of Contents
5
Simulator Reference Manual
6
Table of Contents
7
Simulator Reference Manual
.KEEP............................................................................ 203
.LIB ................................................................................ 206
SIMetrix Native Form ............................................. 206
HSPICE Form ........................................................ 206
.MODEL......................................................................... 207
.NODESET .................................................................... 210
.NOISE .......................................................................... 211
.OP ................................................................................ 214
.OPTIONS ..................................................................... 215
.PARAM......................................................................... 228
.POST_PROCESS ........................................................ 230
.PRINT........................................................................... 230
.PZ................................................................................. 233
.SENS............................................................................ 233
.SETSOA....................................................................... 233
Examples ............................................................... 237
.SUBCKT and .ENDS.................................................... 237
.TEMP ........................................................................... 238
.TF ................................................................................. 238
.TRACE ......................................................................... 240
.TRAN............................................................................ 241
Real Time Noise Analysis ............................................. 243
8
Table of Contents
9
Simulator Reference Manual
10
Chapter 1 Introduction
Chapter 1 Introduction
This manual provides full reference documentation for the SIMetrix simulator.
Essentially the simulator receives a netlist as its input and creates a binary data file and
list file as its output. The netlist defines the circuit topology and also specifies the
analyses to be performed by the simulator. The netlist may directly include any device
models required or these may be automatically imported from a device model library.
The simulator may be operated in GUI mode or non-GUI mode. GUI mode is the
normal method of operation and requires the SIMetrix front end. In non-GUI mode the
simulator runs stand alone in a non-interactive fashion and may be set to run at low
priority in the background.
The analog simulator is a derivation of SPICE 3 developed by the CAD/IC group at the
University of California at Berkeley while the event driven digital simulator is based
on XSPICE from the Georgia Technical Research Institute. However, only about 50%
of the SIMetrix simulator code can be directly traced to these programs. We have
rewritten some parts while added our own original code to others. The additions and
changes we have made are to improve speed, add new functionality and improve
convergence.
We have not, however, implemented all of the original SPICE3 features. We have
omitted items that we feel are of limited use. A summary of the differences between
SIMetrix, SPICE2 and SPICE3 can be found in “SIMetrix vs SPICE” on page 300
From the beginning SPICE was made publicly and freely available in source code form
(in FORTRAN) and this led to its wide acceptance throughout the industry. In the early
11
Simulator Reference Manual
1980s it was run mainly on DEC VAX machines with PC versions for DOS appearing
in the mid 1980s
SPICE3 started to appear at around the same time. SPICE3 is written in 'C' and was
developed for UNIX machines. It features a front end known as Nutmeg which
consists of a graphical waveform viewer and interactive command shell but no
schematic entry. The simulator itself is an improvement on SPICE2 but not a vast one
with only small developments to improve convergence problems. The last version of
SPICE3 to be released was SPICE3f.5.
12
Chapter 2 Running the Simulator
To open the simulator command window, select the schematic then press the F11 key.
It has a toggle action, pressing it again will hide it. If you have already selected an
analysis mode using the Choose Analysis dialog, you will see the simulator controls
already present.
The window has a popup menu selected with the right key. The top item Edit file at
cursor will open a text editor with the file name pointed to by the cursor or selected text
item if there is one.
The simulator command window can be resized using the splitter bar between it and
the schematic drawing area.
You can add anything you like to this window not just simulator commands. The
contents are simply appended to the netlist before being presented to the simulator. So,
you can place .PARAM controls, device models, inductor coupling specifications,
.OPTION controls or simply comments. The Choose Analysis dialog will parse and
possibly modify analysis controls and some .OPTIONS settings but will leave
everything else intact.
• Find out the default name generated by the schematic editor's netlist generator.
To do this, place the mouse cursor over the net of interest then press control-S.
The net name will be displayed in the command shell's message window.
• Force a net name of your choice. For this, use a terminal or small terminal
symbol. These can be found under the Parts|Connectors menu. After placing on
the schematic, select it then press F7 to edit its name. This name will be used to
name the net to which it is connected.
13
Simulator Reference Manual
Pressing the Parameters button will open another dialog from which you can edit
parameter values:
You can also bring up this box directly using the menu Parts|Edit Additional
Parameters....
Note you can only supply constant values by this method. If you wish to define a
parameter as an expression, you will need to use shift-F7 - see below.
14
Chapter 2 Running the Simulator
Another situation where the usual device editing methods are unsuitable is when you
need to define a parameter as an expression.
In these situations you can use shift-F7. This will edit the device's literal value
including any model names exactly as it will be placed in the netlist. shift-F7 bypasses
all smart algorithms and presents you with the raw values and you must also supply
raw values. For example, here is what you might enter for a MOSFET referencing a
model called N1
N1 L={LL-2*EDGE} W={WW-2*EDGE}
Overview
The simulator can be run in a non-interactive non-GUI mode independently of the
front end. This is useful for running simulation ‘batches’ controlled by a proprietary
script or batch language such as shell scripts or DOS batch files.
Under Windows, the simulator will run as a ‘console mode’ application and no GUI
elements will be created.
When run in this mode, the simulator will read in the specified netlist, run the
simulation then close and return control to the calling program. It will generate a
binary data file and a list file.
Syntax
The command syntax is as follows:
PATH;pathname
PATH;pathname
Note that the /config switch if present must always appear be the
first argument to the command.
mode Mode of operation. Default = -1. Valid values are -1, 0, 1 and 2
but only -1 and 1 are meaningful for stand-alone operation. 0
and 2 are used when starting the simulator process from the
front end. -1 (same as omitting /gui) runs the simulator in
console mode with all messages output to the console or
terminal window. 1 enables GUI mode where the simulator runs
in a stand-alone mode but displays a graphical status box
showing messages and simulator progress. This mode is used by
the ‘asynchronous’ menus in the front end.
analysis_line If /an switch is specified, analysis_line specifies the analysis to
be performed and overrides all analysis lines specified in the
netlist.
list_filename Name of list file. Default is main netlist file name with
extension .OUT. Enclose path name in quotes if it contains
spaces.
options List of options valid for .OPTIONS control.
netlist_file File name of netlist.
data_file File to receive binary data output.
/check If specified, the netlist will be read in and parsed but no
simulation will be run. Used to check syntax
/nolist If specified, no list file will be created
/lowPriority If specified, the simulator will be run as a low priority process,
i.e. in the background. Recommended for long runs.
/nodata Only vectors explicitly specified using .KEEP or .PRINT will
be output to the binary file. Equivalent to ‘.KEEP /nov /noi
/nodig’ in the netlist.
/k If specified, the program will not finally terminate until the user
has pressed enter and a message to that effect will be displayed.
Under Windows, if the program is not called from the DOS
prompt but from another program, a console will be created for
receiving messages. The console will close when the program
exits sometimes before the user has had a chance to read the
messages. This switch delays the exit of the program and hence
the destruction of the console.
16
Chapter 2 Running the Simulator
Aborting
Press cntrl-C - you will be asked to confirm. The simulation will be paused while
waiting for your response and will continue if you enter ‘No’. This is an effective
means of pausing the run if you need CPU cycles for another task, or you wish to copy
the data file. See “Reading Data” below.
Reading Data
A data file will be created for the simulation results as normal (see “The Binary Data
File” on page 24). You can read this file with the waveform viewer using the Load
Data menu. However, it is strongly recommended that the simulation is paused first by
pressing cntrl-C.
Important: if you read the data file before the simulation is complete or aborted, the file
entries that provide the size of each vector will not have been filled. This means that
the waveform viewer will have to scan the whole file in order to establish the size of
the vectors. This could take a considerable time if the data file is large.
Configuration Settings
Configuration settings consist of a number of persistent global options as well as the
locations for installed model libraries.
When the simulator is run in GUI mode, its configuration settings are controlled by the
front end and stored wherever the front ends settings are stored. See the User's Manual
for more details.
The settings when run in non-GUI mode are stored in a configuration file which in fact
defaults to the same location as the default location for the front end’s settings. You can
change this location using the /config switch detailed above (page 15)
[Options]
option_settings
[Models]
model_libraries
Where:
17
Simulator Reference Manual
Global Settings
Data Buffering
The simulator buffers data before writing it to disk. By doing so the binary data file can
be organised more efficiently allowing data to be recovered from it quickly. There is a
relationship between buffer size and read in time as illustrated by the following table.
This shows the time taken to read in a 14MByte vector from a 1GByte data file with
the system disk cache cleared. The tests were performed with three different buffer
sizes on two different systems. One system was a relatively old notebook computer
with an IDE disk system. The other was a modern machine with a high performance
SCSI Ultra 320 disk.
18
Chapter 2 Running the Simulator
Note that the buffer size referred to in the above table is for each vector.
By default, the simulator won't allocate more than 10% of your system RAM to vector
buffers. Clearly if you are running a large circuit and saving many vectors, the buffer
sizes could reduce to levels that would make data retrieval very slow. In this case you
may wish to consider increasing the memory that is allowed for these buffers. Two
configuration settings control the vector buffering. These are:
• MaxVectorBufferSize. This sets the maximum size that will be used for any
individual vector. The default is 32768 bytes. If you have a high performance
SCSI disk system, you may benefit from increasing this value
• TotalVectorBufferSize. This sets the maximum amount of memory in bytes used
for all buffers. It defaults to a value equal to 10% of your system RAM. This is
usually sufficient for most applications but if you are simulating a very large
circuit and have sufficient RAM you may like to increase this value
The disk will not be written to until the buffers are full. With an all analog circuit all
the buffers reach their full state at the same time so they all get written to disk at the
same time. If you have 2G of RAM and are simulating a large circuit, approximately
200M of data will be written to the disk at regular intervals. This will result in a pause
in the simulation coupled with a great deal of disk activity.
Note that both MaxVectorBufferSize and TotalVectorBufferSize may be set from the
front end using the Set command. See the User’s Manual for details.
Netlist Format
The SIMetrix netlist format follows the general format used for all SPICE and SPICE
compatible simulators. However, with so many SPICE derivatives and with two
significantly different versions of SPICE itself (SPICE 2 and SPICE 3) it is not
possible to define a standard SPICE format. SIMetrix has been developed to be as
compatible as possible with model libraries that can be obtained from external sources.
For discrete devices, models are usually SPICE 2 compatible but some use extensions
originally developed for PSpice. IC designers usually receive model files from
fabrication companies and these tend to be developed for Star-Hspice. SIMetrix is
compatible with all of these but simultaneous compatibility with all formats is not
technically possible due to a small number of syntax details - such as the character
used for in line comments. To overcome these minor difficulties, a language
19
Simulator Reference Manual
declaration can be placed at the top of the netlist and any file included using .INC
(page 203) or the Star-Hspice variant of .LIB (page 206). This is described in the
following sections.
File Format
A complete netlist consists of:
• A title line
• Optional language declaration
• Device lines
• Control lines
• Comment lines
The title line must be the first line of the file and may be empty. The remaining lines -
with some exceptions - may be placed in any order
All other lines are defined by their first non-whitespace character as follows.
Language Declaration
SIMetrix is able to read PSpice, Star-Hspice and native SIMetrix netlists, but in
some cases needs to be instructed what format netlist it is reading. Currently there are
three areas where simultaneous compatibility has not been possible. These are:
*#SIMETRIX
*#HSPICE
*#PSPICE
The language declaration must be placed at the top of the file immediately below the
title line. It can also be placed in files referenced using .INC or the HSPICE version
of .LIB in which case it will apply only to that file and any others that it calls. A
language declaration placed anywhere else in a file will be ignored.
20
Chapter 2 Running the Simulator
Comments
Any line other than a language declaration beginning with a '*' is defined as a comment
and will be ignored. Also anything between a semi-colon ';' ('$' in HSPICE mode) and
the end of the line will be treated as comment and will also be ignored. Some SPICE
simulators require the '*' character to be the first character of the line. SIMetrix allows
it to be preceded by white space (spaces and tabs).
Device Lines
Device lines usually follow the following basic form but each type of device tends to
have its own nuances:
value may be an actual number e.g. in the case of passive components such as resistors,
or it may be a model name in the case of semiconductor devices such as bipolar
transistors. Models are defined using a .MODEL control line.
nodelist is a list of netnames. The number and order of these is device dependent. The
netname itself may consist of any collection of non-control ASCII characters except
whitespace and '.'. All other ASCII characters are accepted although it is suggested that
the following characters are avoided if possible:
\"%&+-*/^<>[]'@{}
If any of these characters are used in a netname, a special syntax will be needed to plot
any signal voltage on that net. This is explained in “Output Data Names” on page 25.
In addition the characters ‘[‘, ‘]’, ‘%’, ‘!’ and ‘~’ have a special meaning when used
with XSPICE devices and therefore should be avoided at all times.
The name is the circuit reference of the device. The first letter of this name determines
the type of device as shown in the table below.
The Pin Names column in the following table is relevant to the vector name used for
values of device pin current. See “Output Data Names” on page 25.
21
Simulator Reference Manual
D 2 Diode 72 P, N
E 4 Voltage controlled voltage 114 P, N, CP, CN
source
F 2 Current controlled current 68 P, N
source
G 4 Voltage controlled current 112 P, N, CP, CN
source
H 2 Current controlled voltage 70 P, N
source
I 2 Fixed current source 71 P, N
J 3 JFET 84 D, G, S
K 0 Coupling for inductors 122
L 2 Inductor 78 P, N
M 4 MOSFET 88 D, G, S, B
N - Not used
O 4 Lossy transmission line 86 P1, N1, P2, N2
P - Not used
Q 3-5 Bipolar transistor 56 C, B, E, S, DT
R 2 Resistor 98 P, N
S 4 Voltage controlled switch 113 P, N, CP, CN
T 4 Lossless transmission line 111 P1, N1, P2, N2
U - Not used
V 2 Voltage source 114 P, N
W - Not used
X Any Subcircuit 110
Y - Not used
Z 3 GaAs FET 77 D, G, S
IGBT 82 C, G, E
To remove the naming restriction that this system imposes, SIMetrix supports an
extension to the above to allow the user to use any name for all devices. If the device
letter is followed by a dollar '$' symbol (by default but can be changed - see below), the
remainder of the name following the '$' will be used as the device name. E.g.:
Q$TR23
22
Chapter 2 Running the Simulator
will define a bipolar transistor with the name TR23. All output generated by the
simulator will refer to TR23 not Q$TR23.
The above mechanism can be disabled and also the character can be changed by adding
a parameter to the language declaration (see page 20). To disable, add this to the top of
the netlist:
*#SIMETRIX sep=none
*#SIMETRIX sep=character
character must be a single letter, anything else will be ignored. Although any character
will be accepted it should clearly not be alpha-numeric.
The above mechanism will also be disabled if HSPICE or PSPICE languages are
specified.
Simulator Controls
Instructions to the simulator other than device definitions and comments are referred to
as controls and always begin with a period '.' .
Full documentation for SIMetrix controls see “Command Reference” on page 186
Simulator Output
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.
23
Simulator Reference Manual
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 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 page 17) and is named according to the
analysis type and appended with the extension .sxdat. [Link], [Link],
[Link] 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 the User's Manual for further details.
24
Chapter 2 Running the Simulator
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.
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
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')
25
Simulator Reference Manual
A similar syntax is required when using the front end plotting commands.
device_name#pin_name
For primitive devices (i.e. not sub-circuits) pin_name must comply with the table on
page 21. 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” on page 110) 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:
The current into the last pin (connected to N5) would be U10#VOUT
X$U10 N1 N2 N3 N4 N5 LM324
Some devices have internal nodes and the voltages on these are output by the
simulator. These are named in a similar manner to pin currents i.e.
device_name#internal_node_name
26
Chapter 3 Simulator Devices
Overview
This chapter is an introduction to the “Analog Device Reference” on page 52 and the
“Digital/Mixed Signal Device Reference” on page 128.
The device reference chapters describe all simulator devices at the netlist level. The
netlist consists of a list of component definitions, along with simulator commands,
which the simulator can understand. Simple components, such as resistors just need a
value to define them. Other more complicated devices such as transistors need a
number of parameters to describe their characteristics.
The device references includes details of all device and model parameters. Using the
schematic editor and model library you may not often need to read this section. Some
of the devices, however, have advanced options not directly supported by the user
interface. For example, many devices allow a local temperature to be specified. This
requires the component value to be appended with TEMP=…. This device parameter
and others are documented here.
Note that many parts either supplied with SIMetrix or available from component
manufacturers are implemented as subcircuits. These are circuit designs to simulate the
behaviour of high level devices such as opamps. SIMetrix (and all other SPICE
simulators) do not have an opamp device built in but use these macro models instead.
Full documentation for these devices is beyond the scope of this manual but can
sometimes be obtained from their suppliers.
Most of the devices that use this framework are digital or mixed signal devices and the
reference for these can be found at “Digital/Mixed Signal Device Reference” on
page 128. However there are three all analog devices that are also XSPICE devices.
These are:
Vector Connections
Some models feature an arbitrary number of inputs or/and outputs. For example, an
AND gate can have any number of inputs. It would be inflexible to have a separate
model for every configuration of AND gate so a method of grouping connections
together has been devised. These are known as vector connections. Vector connections
are enclosed in square brackets. E.g. the netlist entry for an AND gate is:
27
Simulator Reference Manual
The pins in_0 in_1 to in_n form a single vector connection. Any number of pins may
be placed inside the square brackets, in fact the same model may be used for devices
with different numbers of inputs.
Some devices have a minimum and/or maximum number of pins that may be used in a
vector connection. This is known as vector bounds and if they apply will be listed in
the vector bounds column of the Connection Details table provided with every device
definition.
Connection Types
In the device references that follow, each has a table titled Connection Details. Each
table have a “Type” column and some have an “Allowed types” column. The type
referred to here is the type of electrical connection e.g. voltage, current, differential or
single-ended. Some devices allow some or all of their connections to be specified with
a range of types. For example, the analog-digital converter described on page 169 has a
single ended voltage input by default. However, using a simple modification to the
netlist entry, an ADC can be specified with a differential voltage input or even a
differential current. Changing the type of connection involves no changes to the
.MODEL control, only to the netlist entry.
The following table lists all the available types. The modifier is the text used to alter a
connection type at the netlist level. This is explained below
Description Modifier
With the models supplied with SIMetrix, only the first four in the above table are ever
offered as options. The others are used but are always compulsory, and an
understanding of their meaning is not necessary to make full use the system.
28
Chapter 3 Simulator Devices
As well as type, all connections also have a flow referring to the direction of the signal
flow. This can be in, out or inout. Voltage, current and digital connections may be in or
out while the conductance and resistance connections may only be inout. Voltage
inputs are always open circuit, current inputs are always short circuit, voltage outputs
always have zero output impedance and current outputs always have infinite output
impedance.
The conductance connections are a combined voltage input and current output
connected in parallel. If the output is made to be proportional to the input, the
connection would be a conductor with a constant of proportionality equal to its
conductance, hence the name.
Similarly, the resistance connections are a combined current input and voltage output
connected in series. If the output is made to be proportional to the input, the connection
would be a resistor with a constant of proportionality equal to its resistance.
If a model allows one or more of its connections to be given a different type, this can
be done by preceding the connection entry with the appropriate modifier listed in the
table above. For example if you wish to specify a 4 bit ADC with a differential voltage
input, the netlist entry would be something like:
Using Expressions
Overview
Expressions consist of arithmetic operators, functions, variables and constants and may
be employed in the following locations:
• As device parameters
• As model parameters
• To define a variable (see “.PARAM” on page 228) which can itself be used in an
expression
• As the governing expression used for arbitrary sources (see page 52).
29
Simulator Reference Manual
Device parameter expressions must usually be enclosed with either single quotation
marks ( ' ) double quotation marks ( " ) or braces ( '{' and '}' ). The expression need not
be so enclosed if it consists of a single variable. For example:
Expression Syntax
The expression describing an arbitrary source consists of the following elements:
• Circuit variables
• Parameters
• Constants.
• Operators
• Functions
• Look up tables
These are described in the following sections
Circuit Variables
Circuit variables may only be used in expressions used to define arbitrary sources and
to define variables that themselves are accessed only in arbitrary source expressions.
Circuit variables allow an expression to reference voltages and currents in any part of
the circuit being simulated.
V(node_name)
30
Chapter 3 Simulator Devices
Where node_name is the name of the node carrying the voltage of interest. If using the
schematic editor nodenames are normally allocated by the netlist generator. For
information on how to display and edit the schematic's node names, refer to
“Displaying Net and Pin Names” on page 13.
I(source_name)
Where source_name is the name of a voltage source carrying the current of interest.
The source may be a fixed voltage source, a current controlled voltage source, a
voltage controlled voltage source or an arbitrary voltage source. It is legal for an
expression used in an arbitrary source to reference itself e.g.:
B1 n1 n2 V=100*I(B1)
Parameters
These are defined using the .PARAM control. See page 228 for details. For example
.PARAM res=100
B1 n1 n2 V=res*I(B1)
For release 4 and later it is possible to put circuit variables in .PARAM controls. For
example:
Built-in Parameters
Parameter Description
name
31
Simulator Reference Manual
Constants
Apart from simple numeric values, arbitrary expressions may also contain the
following built-in constants:
PI 3.14159265358979323846 π
E 2.71828182845904523536 e
TRUE 1.0
FALSE 0.0
ECHARGE 1.6021918e-19 Charge on an electron in
coulombs
BOLTZ 1.3806226e-23 Boltzman's constant
If the simulator is run from the front end in GUI mode, it is also possible to access
variables defined on the Command Shell command line or in a script. The variable
must be global and enclosed in braces. E.g.
amp_gain could be defined in a script using the LET command. E.g. “Let
global:amp_gain = 100”
Operators
These are listed below and are listed in order of precedence. Precedence controls the
order of evaluation. So 3*4 + 5*6 = (3*4) + (5*6) = 42 and 3+4*5+6 = 3 + (4*5) + 6 =
29 as '*' has higher precedence than '+'.
Operator Description
32
Chapter 3 Simulator Devices
Operator Description
These are Boolean in nature either accepting or returning Boolean values or both. A
Boolean value is either TRUE or FALSE. FALSE is defined as equal to zero and
TRUE is defined as not equal to zero. So, the comparison and equality operators return
1.0 if the result of the operation is true otherwise they return 0.0.
v(n1)==5.0
These operators are intended to be used with the IF() function described below.
Digital Operators
These are the operators '&', '|' and '~'. These were introduced in release 2.0 as a simple
means of implementing digital gates in the analog domain. Their function has largely
been superseded by gates in the event driven simulator but they are nevertheless still
supported.
Although they are used in a digital manner the functions implemented by these
operators are continuous in nature. They are defined as follows:
33
Simulator Reference Manual
Where:
These values default to 2.2, 2.1, 5 and 0 respectively. These values are typical for high
speed CMOS logic (74HC family). They can be changed with four simulator options
set by the .OPTIONS simulator control. These are respectively,
LOGICTHRESHHIGH, LOGICTHRESHLOW, LOGICHIGH, LOGICLOW
To change the lower input threshold to 1.9, add the following line to the netlist:
.OPTIONS LOGICTHRESHLOW=1.9
To find out how to add additional lines to the netlist when using the schematic editor,
refer to “Adding Extra Netlist Lines” on page 13.
34
Chapter 3 Simulator Devices
Functions
Function Description
35
Simulator Reference Manual
Function Description
To specify Monte Carlo tolerance for a model parameter, use an expression containing
one of the following 12 functions:
GAUSS Gaussian No
GAUSSL Gaussian Yes
UNIF Uniform No
UNIFL Uniform Yes
WC Worst case No
WCL Worst case Yes
GAUSSE Gaussian logarithmic No
GAUSSEL Gaussian logarithmic Yes
UNIFE Uniform logarithmic No
UNIFEL Uniform logarithmic Yes
WCE Worst case logarithmic No
WCEL Worst case logarithmic Yes
Look-up Tables
Expressions may contain any number of look-up tables. This allows a transfer function
of a device to be specified according to - say - measured values without having to
obtain a mathematical equation. Look-up tables are specified in terms of x, y value
pairs which describe a piece-wise linear transfer function.
Where:
xy_pairs A sequence of comma separated pairs of constant values that
define the input and output values of the table. For each pair, the
first value is the x or input value and the second is the y or
output value. Only explicit numeric constants may be used.
Even internal constants such as PI may not be used.
input_expression Expression defining the input or x values of the table.
Example
2
:b1_p / V
-2
-4
v 1/V 5V /div
It is possible to assign expressions to component values which are evaluated when the
circuit is simulated. This has a number of uses. For example you might have a filter
design for which several component values affect the roll off frequency. Rather than
recalculate and change each component every time you wish to change the roll of
frequency it is possible to enter the formula for the component's value in terms of this
frequency.
37
Simulator Reference Manual
Example
{C1}
C1
1
{2/(2*pi*f 0*C1*alpha)} {2/(2*pi*f 0*C1*alpha)}
VOUT
R2 R1
AC 1 0
V1 E1
{C1*alpha*alpha/4}
C2
The above circuit is that of a two pole low-pass filter. C1 is fixed and R1=R2. The
design equations are:
R1=R2=2/(2*pi*f0*C1*alpha)
C2=C1*alpha*alpha/4
where f0 is the cut off frequency and alpha is the damping factor.
V1 V1_P 0 AC 1 0
C2 0 R1_P {C1*alpha*alpha/4}
C1 VOUT R1_N {C1}
E1 VOUT 0 R1_P 0 1
R1 R1_P R1_N {2/(2*pi*f0*C1*alpha)}
R2 R1_N V1_P {2/(2*pi*f0*C1*alpha)}
Before running the above circuit you must assign values to the variables. This can be
done by one of three methods:
.PARAM f0 1k
.PARAM alpha 1
.PARAM C1 10n
38
Chapter 3 Simulator Devices
Let f0=1k
Let alpha=1
Let C1=10n
If you then wanted to alter the damping factor to 0.8 you only need to type in its new
value:
Let alpha=0.8
To execute the Let commands from within a script, prefix the parameter names with
global:. E.g. “Let global:f0=1k”
In many cases the .PARAM approach is more convenient as the values can be stored
with the schematic.
Optimisation
Overview
An optimisation algorithm may be enabled for expressions used to define arbitrary
sources and any expression containing a swept parameter. This can improve
performance if a large number of such expressions are present in a design.
The optimiser dramatically improves the simulation performance of the power device
models developed by Infineon. See “Optimiser Performance” below.
Why is it Needed?
The simulator’s core algorithms use the Newton-Raphson iteration method to solve
non-linear equations. This method requires the differential of each equation to be
calculated and for arbitrary sources, this differentiation is performed symbolically. So
as well calculating the user supplied expression, the simulator must also evaluate the
expression’s differential with respect to each dependent variable. These differential
expressions nearly always have some sub-expressions in common with sub-
expressions in the main equation and other differentials. Calculation speed can be
improved by arranging to evaluate these sub-expressions only once. This is the main
task performed by the optimiser. However, it also eliminates factors found on both the
numerator and denominator of an expression as well as collecting constants together
wherever possible.
The optimiser will automatically be enabled for any arbitrary source or swept
expression that uses a function defined using .FUNC (see “.FUNC” on page 195). To
enable for all expressions, use the following option setting:
.OPTIONS optimise=2
39
Simulator Reference Manual
.OPTIONS optimise=0
Optimiser Performance
The optimisation algorithm was added to SIMetrix primarily to improve the
performance of some publicly available power device models from Infineon. These
models make extensive use of arbitrary sources and many expressions are defined
using .FUNC.
The performance improvement gained for these model is in some cases dramatic. For
example a simple switching PSU circuit using a SGP02N60 IGBT ran around 5 times
faster with the optimiser enabled and there are other devices that show an even bigger
improvement.
Accuracy
The optimiser simply changes the efficiency of evaluation and doesn’t change the
calculation being performed in any way. However, performing a calculation in a
different order can alter the least significant digits in the final result. In some
simulations, these tiny changes can result in much larger changes in circuit solution.
So, you may find that switching the optimiser on and off may change the results
slightly.
Subcircuits
Overview
Subcircuits are a method of defining a circuit block which can be referenced any
number of times by a single netlist line or schematic device. Subcircuits are the method
used to define many device models such as op-amps.
Subcircuit Definition
Subcircuits begin with the .SUBCKT control and end with .ENDS. A subcircuit
definition is of the form:
40
Chapter 3 Simulator Devices
page 29.
definition_lines List of valid device and model lines. In
addition, .NODESET, .IC and .KEEP lines
may also be placed in a subcircuit.
Example
.ends
• Directly in the netlist. This is the best place if the subcircuit is specific to a
particular design. If you are entering the circuit using the schematic editor, see
“Adding Extra Netlist Lines” on page 13. to find out how to add additional lines
to the netlist.
• Put in a separate file and pull in to the schematic with .INC (page 203) control
placed in the netlist.
• Put in a library file and reference in schematic with SIMetrix form of .LIB
(page 206) control placed in the netlist. Similar to 2. but more efficient if library
has many models not used in the schematic. Only the devices required will be
read in.
• Put in a library file and install as a model library. See User's Manual for full
details.
41
Simulator Reference Manual
Subcircuit Instance
Once a subcircuit has been defined, any number of instances of it may be created.
These are of the form:
So:
** Definition
.SUBCKT Filter IN OUT params: C1=1n alpha=1 f0=1k
C2 0 R1_P {C1*alpha*alpha/4}
C1 OUT R1_N {C1}
E1 OUT 0 R1_P 0 1
R1 R1_P R1_N {2/(2*pi*f0*C1*alpha)}
R2 R1_N IN {2/(2*pi*f0*C1*alpha)}
.ENDS
** Subcircuit instance
X1 V1_P VOUT Filter : C1=10n alpha=1 f0=10k
** AC source
V1 V1_P 0 AC 1 0
In the above example the parameters after params: in the .subckt line define default
values should any parameters be omitted from the subcircuit instance line. It is not
compulsory to define defaults but is generally recommended.
Note
In the syntax definition for both subcircuit definitions and subcircuit instances, the
params: specifier is shown as optional. This is for compatibility with Star-Hspice
and is new for release 4. If params: is included the '=' separating the parameter names
and their values becomes optional.
42
Chapter 3 Simulator Devices
Nesting Subcircuits
Subcircuit definitions may contain both calls to other subcircuits and local subcircuit
definitions.
Calls to subcircuits may not be recursive. A subcircuit may not directly or indirectly
call its own definition.
Global Nodes
Sometimes it is desirable to refer to a node at the circuit's top level from within a
subcircuit without having to explicitly pass it. This is sometimes useful for supply
rails.
• '#' prefix. Any node within a subcircuit prefixed with '#' will connect to a top
level node of the same name without the '#' prefix.
• '$g_' prefix. Any node in the circuit prefixed '$g_' will be treated as global
• Using .GLOBAL see page 196
The second approach is compatible with PSpice. The third approach is compatible
with Star-Hspice
Note the first two approaches are subtly different. In the second approach the '$g_'
prefix must be applied to all connected nodes, whereas in the first approach the '#'
prefix must be applied only to subcircuit nodes.
Subcircuit Preprocessing
SIMetrix features a netlist preprocessor that is usually used for SIMPLIS simulations
and was developed for that purpose. The preprocessor has some features that aren’t
available in the native simulator and for this reason it would be useful to be able to use
the preprocessor for SIMetrix simulations.
It is not necessary to apply the preprocessor to the entire netlist. Any subcircuit call
that defines preprocessor variables using the ‘vars:’ specifier will be passed to the
preprocessor. For example:
calls the ELEC_CAP_L13 subcircuit but passes it through the preprocessor first. This
model is a model for an electrolytic capacitor and uses a number of .IF controls to
select model features according to the LEVEL parameter.
The preprocessor also provides a means of generating multiple devices using .WHILE.
For information on the preprocessor, see the SIMPLIS Reference Manual. A PDF
version of this is available on the install CD.
43
Simulator Reference Manual
Model Binning
Overview
Some devices can be binned. This means that a number of different model definitions
can be provided for the same device with each being valid over a limited range of some
device parameter or parameters. The simulator will automatically select the
appropriate model according to the value given for the device parameters.
Currently only BSIM3 MOSFETs may be binned. The binning is controlled by the
length and width device parameters (L and W) while the LMIN, LMAX, WMIN and
WMAX model parameters specify the valid range for each model.
Important Note
The binned models should be placed directly in the netlist or called using either .INC
or the Star-Hspice form of .LIB. They will not work correctly when installed as a
model library or accessed with the SIMetrix form of .LIB.
root_name.id
root_name Name used by the device to call the model. Must be the same for
all model definitions in a set
id Arbitrary name that must be unique for each model in a set. This
would usually be a number but this is not a requirement
Each model definition must also contain a MIN/MAX parameter pair for each bin
control parameter. For the BSIM3 MOSFET there are two bin control parameters,
namely L and W with corresponding MIN/MAX pairs LMIN/LMAX and WMIN/
WMAX. For a binned BSIM3 model, all four must be present. These parameters define
the range of L and W over which the model is valid. When a model is required, the
simulator searches all models with the same root_name for a definition whose LMIN/
LMAX and WMIN/WMAX parameters are compatible with the device's L and W.
Example
.MODEL N1.1 NMOS LEVEL=49 ... parameters ...
+ LMIN=1u LMAX=4u WMIN=1u WMAX=4u
44
Chapter 3 Simulator Devices
Language Differences
SIMetrix is compatible with some PSpice and Star-Hspice extensions mainly so
that it can read external model files. Some aspects of these alternative formats are
incompatible with the SIMetrix native format and in such cases it is necessary to
declare the language being used. See “Language Declaration” on page 20 for details on
how to do this.
The following sections describe the incompatibilities between the three languages.
Inline Comment
Star-Hspice uses the dollar ('$') symbol for inline comments while SIMetrix and
PSpice use a semi-colon (';'). The language declaration described above determines
what character is used.
The following lines are legal in Star-Hspice mode but illegal in SIMetrix mode.
.PARAM area=2
Q1 C B E S N1 area
Q1 will have an area of 2. Conversely the following is legal in SIMetrix but is illegal in
Star-Hspice:
.PARAM area=2
Q1 C B E S N1 area area
The problem is that SIMetrix does not require '=' to separate parameter names with
their values whereas Star-Hspice does. area is a legal BJT parameter name so in the
first example SIMetrix can't tell whether area refers to the name of the BJT parameter
or the name of the .PARAM parameter defined in the previous line. Star-Hspice can
tell the difference because if area meant the BJT parameter name it would be followed
by an '='.
45
Simulator Reference Manual
.PARAM area=2
Q1 C B E S N1 area=area
Although Hspice always requires the '=' to separate parameter names and values, it
continues to be optional in SIMetrix even in Hspice mode. It only becomes
compulsory where an ambiguity needs to be resolved as in the second example above.
SIMetrix:
B1 1 2 V=expression
PSpice
E1 1 2 VALUE = {expression }
Star-Hspice
E1 1 2 VOL = 'expression'
Note that the function LN() always means log to base e and LOG10() always means
log to base 10. We recommend that these functions are always used in preference to
LOG to avoid confusion.
Overview
Models for discrete devices and for integrated circuit processes come from a variety of
sources and are often designed for particular simulators, in particular, PSpice and
Hspice. These simulators are not generally compatible with each other so it is not easy
for SIMetrix to be simultaneously compatible with both. Further, SIMetrix itself needs
to retain backward compatibility with its own earlier versions.
An example of conflict can be found with the standard diode. The SIMetrix diode with
no level parameter specified is mainly compatible with PSpice. But the standard
Hspice diode is quite different and not compatible. The SIMetrix Level=3 diode is
however compatible with Hspice both for level=1 and level=3. To use Hspice level=1
diode models the user has to edit the model so that level is changed to 3.
It is not always convenient to modify model files and for this reason SIMetrix provides
an alternative in the form of the device configuration file. This provides a means of
changing the access to particular device model including re-mapping level numbers.
The following section describes how to setup a device configuration file.
46
Chapter 3 Simulator Devices
The DCF can add new entries to the table so providing additional methods of accessing
a device. It can also modify existing entries to point to a new device.
Format
Each line in the DCF maps a single device and consists of up to 4 assigned parameters.
These are described in the following table.
Keyword Description
To modify an existing mapping, you only need to provide the model name, device and
level. The modelname and level must point to an existing combination that is already
in use (see table on page 48), e.g. ModelName=D and Level=1, and device would then
be set to the new device that this combination is to point to, e.g. Diode3. So this is what
the line would be:
ModelName=D,Level=1,Device=Diode3
The above would make level 1 diodes use the same model as level=3. Here is another
example:
ModelName=R,Level=0,Device=HspiceRes
47
Simulator Reference Manual
Level=0 is the level value when the LEVEL parameter is not specified. In the case of
resistors, no .MODEL statement is required at all, so the above line will change the
default model used for all resistors to the Hspice model instead of the native SIMetrix
model.
It is also possible to add a new mapping in which case the level and modelname
parameters must be currently unused. Also when creating a new mapping the ‘Letter’
parameter must be specified. ‘Letter’ is the first letter of the component reference
traditionally used to identify the type of device in SPICE netlists. For example ‘Q’
refers to BJTs and ‘D’ refers to diodes.
For example, the following entries define LEVEL=55 as a valid level for accessing the
EKV model:
ModelName=NMOS,Level=55,Device=EKV,Letter=M
ModelName=PMOS,Level=55,Device=EKV,Letter=M
Note that two entries are required in order to support both n-channel and p-channel
devices. The above doesn’t change the existing level (44) it adds an additional level.
Both 44 and 55 will be accepted and be equivalent.
When defining a new mapping the letter must be specified and usually this should be
the letter conventionally used for the class of device. If defining a new mapping for a
MOSFET, the letter ‘M’ should be used, for a diode the letter ‘D’ should be used and
so on.
The following table shows all built in device mappings. Note that this describes
devices that are built in to the simulator binary. A number of devices are defined in
external DLLs. Mappings for these are shown in the next table.
npn BJT 0 Q
pnp BJT 0 Q
npn BJT 1 Q
pnp BJT 1 Q
lpnp BJT 0 Q
lpnp BJT 1 Q
d Diode 0 D
d Diode 1 D
d Diode3 3 D
njf JFET2 0 J
njf JFET 1 J
48
Chapter 3 Simulator Devices
pjf JFET2 0 J
pjf JFET 1 J
nmf MES 0 Z
pmf MES 0 Z
nmos Mos1 0 M
nmos Mos1 1 M
nmos Mos2 2 M
nmos Mos3 3 M
nmos Vmos 17 M
pmos Mos1 0 M
pmos Mos1 1 M
pmos Mos2 2 M
pmos Mos3 3 M
pmos Vmos 17 M
r Resistor 0 R
res Resistor 0 R
r HspiceRes 2 R
c Capacitor 0 C
cap Capacitor 0 C
sw Switch 0 S
vswitch Switch 0 S
ltra LTRA 0 O
nmos BSIM3 8 M
pmos BSIM3 8 M
nmos BSIM3psp 7 M
pmos BSIM3psp 7 M
nmos MOS49 49 M
pmos MOS49 49 M
nmos MOS53 53 M
49
Simulator Reference Manual
pmos MOS53 53 M
nmos BSIM4V4.5 14 M
pmos BSIM4V4.5 14 M
nmos EKV 44 M
pmos EKV 44 M
nmos MNE_902 102 M
pmos MPE_902 102 M
nmos MNE_903 103 M
pmos MPE_903 103 M
nmos MN_902 202 M
pmos MP_902 202 M
nmos MN_903 203 M
pmos MP_903 203 M
nmos MN_3002 302 M
pmos MP_3002 302 M
nmos MN_40 400 M
pmos MP_40 400 M
nmos MNE_1100 500 M
pmos MPE_1100 500 M
nmos MN_1100 600 M
pmos MP_1100 600 M
nmos MNE_1101 501 M
pmos MPE_1101 501 M
nmos MN_11010 601 M
pmos MP_11010 601 M
nmos MN_11011 611 M
pmos MP_11011 611 M
nmos MN_3100 700 M
pmos MP_3100 700 M
npn TNS_503 103 Q
pnp TPS_503 103 Q
npn TNS_504 104 Q
pnp TPS_504 104 Q
50
Chapter 3 Simulator Devices
51
Simulator Reference Manual
Overview
This chapter provides the full details of every option and parameter available with
every primitive analog device that the simulator supports.
For documentation on digital and mixed signal devices supplied with SIMetrix, please
see “Digital/Mixed Signal Device Reference” on page 128.
Arbitrary Source
Netlist Entry
Voltage source:
Bxxxx n+ n- [MIN=min_value] [MAX=max_value] V=expression
Current source:
Bxxxx n+ n- [MIN=min_value] [MAX=max_value] I=expression
Charge source:
Bxxxx n+ n- Q=expression
Flux source:
Bxxxx n+ n- FLUX=expression
Note that if MIN and/or MAX parameters are specified, they must precede the defining
expression.
52
Chapter 4 Analog Device Reference
Charge and flux sources implement capacitors and inductors respectively. See “Charge
and Flux Devices” below for details.
If the source is a current, the direction of flow is into the positive node (n+).
If the expression is used in a feedback loop then these conditions are more or less
essential for reliable and rapid convergence. If the arbitrary source is used open loop
then these conditions can be relaxed especially if the input signal is well defined e.g.
derived directly from a signal source.
Some functions are not continuous in nature. E.g. the STP() and SGN() functions are
not. These may nevertheless be used in an expression as long as the end result is
continuous.
Similarly, the IF() function should be used with care. The following IF() function is
continuous:
IF(v1>v2, 0, (v1-v2)*2)
When v1=v2 both true and false values equate to zero so the function has no abrupt
change. The function still has a discontinuous first derivative with respect to both v1
and v2 which is still undesirable but will work satisfactorily in most situations.
IF(v1>v2, 0, 5)
The result of this will switch abruptly from 0 to 5 when v1=v2. This is not something
that the simulator can be guaranteed to handle and cannot be implemented in real life.
A better, albeit less intuitive method, of achieving the intent of the above is:
(TANH((v2-v1)*factor)+1)*2.5+2.5
where factor is some number that determines the abruptness of the switching action.
For a value of 147, 95% of the full output will be achieved with just 10mV overdrive.
B1 n1 n2 Q = C*V(n1,n2)
53
Simulator Reference Manual
B1 n1 n2 flux = L * i(B1)
The main benefit of this feature is that it makes it possible to define non-linear
capacitors and inductors directly. Previously, this was only possible by making up a
circuit consisting of a number of components including a primitive capacitor.
As with voltage and current arbitrary sources, it is possible to use any combination of
voltages and currents in the expression. So, for example, the following defines a
transformer:
This examples also demonstrates the use of expressions within subcircuits. (See
“Using Expressions” on page 29)
Once again, with an appropriate schematic symbol, the device can be placed on the
schematic as a block as shown below:
54
Chapter 4 Analog Device Reference
D2 U1
ideal R5 1000
1meg
C1
270u
powerconv : ef f =0.7 R1
v1 V2 E1 1K
pulse (100 0 0 1m) 12
The expression for an arbitrary source must refer to other voltages and/or currents on
the schematic. Currents are referenced as voltage sources and voltages as netnames.
Netnames are usually allocated by the netlister. For information on how to display and
edit the schematic's netnames, refer to “Displaying Net and Pin Names” on page 13.
R4
n1
10k
1K B1 1K
R1 V=V(n2)*V(n1) R2
n2
1K
R3
In the above circuit the voltage across B1 will be equal to the product of the voltages at
nodes n1 and n2.
which can be added to the netlist manually. (To find out how to add additional lines to
the netlist when using the schematic editor, refer to “Adding Extra Netlist Lines” on
page 13). A symbol could be defined for it and then placed on the schematic as a block
as shown below:
55
Simulator Reference Manual
R4
1K
R1 X1
1K
R2
1K
R3 MULT
1K
This can also be added to the schematic in the same way as for the multiplier described
above.
56
Chapter 4 Analog Device Reference
The symbols ' × ' and ' ÷ ' in the Area column means that the specified parameter
should be multiplied or divided by the area factor respectively.
57
Simulator Reference Manual
58
Chapter 4 Analog Device Reference
Notes
The bipolar junction transistor model in SPICE is an adaptation of the integral charge
control model of Gummel and Poon.
59
Simulator Reference Manual
This modified Gummel-Poon model extends the original model to include several
effects at high bias levels. The model will automatically simplify to the simpler Ebers-
Moll model when certain parameters are not specified.
The dc model is defined by the parameters IS, BF, NF, ISE, IKF, and NE which
determine the forward current gain characteristics, IS, BR, NR, ISC, IKR, and NC
which determine the reverse current gain characteristics, and VAF and VAR which
determine the output conductance for forward and reverse regions. Three ohmic
resistances RB, RC, and RE are included, where RB can be high current dependent.
Base charge storage is modelled by forward and reverse transit times, TF and TR, the
forward transit time TF being bias dependent if desired, and non-linear depletion layer
capacitances which are determined by CJE, VJE, and MJE for the B-E junction, CJC,
VJC, and MJC for the B-C junction and CJS, VJS, and MJS for the C-S (Collector-
Substrate) junction. The temperature dependence of the saturation current, IS, is
determined by the energy-gap, EG, and the saturation current temperature exponent,
XTI. Additionally base current temperature dependence is modelled by the beta
temperature exponent XTB in the new model.
References
60
Chapter 4 Analog Device Reference
Model Syntax
Model Parameters
61
Simulator Reference Manual
62
Chapter 4 Analog Device Reference
63
Simulator Reference Manual
Notes
The VBIC model is only available with Micron versions.
[Link]
Model Syntax
Model Parameters
Model parameters are identical to the non-thermal version except for the addition of
the following:
Notes
The VBIC model is only available with Micron versions.
This model is the same as the VBIC non-thermal model except for the addition of self-
heating effects. Use the non-thermal version if you do not need self-heating as its
implementation is simpler and will run faster.
The thermal_node may be used to connect external thermal networks to model thermal
flow. Power in watts is represented by current and temperature rise in Kelvin is
represented by the voltage. Note that the voltage is temperature rise above the
simulation temperature, not an absolute value.
65
Simulator Reference Manual
Where:
collector Collector node
base Base node
emitter Emitter node
substrate Substrate node
modelname Model name as used with .MODEL statement
Notes
The model was implemented from Verilog-A code. It has received only minor changes
from the original supplied by the developers. These changes are to implement PNP
devices and to overcome a problem in the original model whereby it is possible for it to
converge to an erroneous state.
The SIMetrix implementation of this model has been tested using the benchmark
results provided by the developers. The majority of the tests showed a match of better
than 0.1%. A few were over 1% with one deviating by 7%. These were investigated
and it was found that the reference data was in error probably because of insufficient
convergence tolerance.
Capacitor
Netlist Entry
n1 Node 1
n2 Node 2
model_name (Optional) Name of model . Must begin with a letter but can
66
Chapter 4 Analog Device Reference
67
Simulator Reference Manual
C Capacitor multiplier 1
TC1 First order temperature coefficient 1/°C 0
TC2 Second order temperature coefficient 1/°C2 0
Model format:
Model parameters:
Description
This device is now obsolete. Use a standard capacitor with BRANCH=1.
This is like a standard capacitor but the internal implementation is different and
permits the specification of an initial condition which works without having to specify
the transient UIC switch. Also, unlike normal initial conditions, the initial voltage is
applied with a zero source resistance.
In some circumstances, large value capacitors are better implemented using this device
than the standard capacitor but note that during the DC operating point solution, the
device looks like a short circuit, not an open circuit as is the case with the normal
SPICE device.
68
Chapter 4 Analog Device Reference
Example
R2
1K
0.1
R1
1K
F1
In the above circuit, the current in the output of F1 (flowing from top to bottom) will
be 0.1 times the current in R2.
69
Simulator Reference Manual
Polynomial Specification
The following is an extract from the SPICE2G.6 user manual explaining polynomial
sources.
SPICE allows circuits to contain dependent sources characterised by any of the four
equations
i=f(v)
v=f(v)
i=f(i)
v=f(i)
Suppose that the function is one-dimensional (that is, a function of one argument).
Then the function value fv is determined by the following expression in fa (the function
argument):
Suppose now that the function is two-dimensional, with arguments fa and fb. Then the
function value fv is determined by the following expression:
Consider now the case of a three-dimensional polynomial function with arguments fa,
fb, and fc. Then the function value fv is determined by the following expression:
70
Chapter 4 Analog Device Reference
Current Source
Netlist Entry
n+ Positive node
n- Negative node
dcvalue Value of source for dc operating point analysis
magnitude AC magnitude for AC sweep analysis.
phase phase for AC sweep analysis
transient_spec Specification for time varying source. Can be one of following:
Pulse - see page 115
Piece wise linear - see page 116
Sine - see page 118
Exponential - see page 119
Single frequency FM - see page 120
71
Simulator Reference Manual
n+ Anode
n- Cathode
model_name Name of model defined in a .MODEL control (page 207). Must
begin with a letter but can contain any character except
whitespace and ' . ' .
area Area multiplying factor. Area scales up the device. E.g. an area
of 3 would make the device behave like 3 diodes in parallel.
Default is 1.
OFF Instructs simulator to calculate operating point analysis with
device initially off. This is used in latching circuits such as
thyristors and bistables to induce a particular state. See “.OP” on
page 214 for more details.
vd Initial condition for diode voltage. This only has an effect if the
UIC parameter is specified on the .TRAN control (page 241).
local_temp Local temperature. Overrides specification in .OPTIONS
(page 215) or .TEMP (page 238) controls.
mult Level 3 only. Similar to area. See below.
periphery Level 3 only. Junction periphery used for calculating sidewall
effects.
length Level 3 only. Used to calculate area. See below.
width Level 3 only. Used to calculate area. See below.
mult Device multiplier. Equivalent to putting mult devices in parallel.
dtemp Differential temperature. Similar to local_temp but is specified
relative to circuit temperature. If both TEMP and DTEMP are
specified, TEMP takes precedence.
Examples
D1 D2 D3
D1N4148 5 BYT12 D1N914 TEMP=100
72
Chapter 4 Analog Device Reference
The symbols ' × ' and ' ÷ ' in the Area column means that the specified parameter
should be multiplied or divided by the area factor respectively.
Notes The dc characteristics of the diode are determined by the parameters IS, N,
ISR, NR and IKF. An ohmic resistance, RS, is included. Charge storage
73
Simulator Reference Manual
effects are modelled by a transit time, TT, and a non-linear depletion layer
capacitance which is determined by the parameters CJO, VJ, and M. The
temperature dependence of the saturation current is defined by the
parameters EG, the energy and XTI, the saturation current temperature
exponent. Reverse breakdown is modelled by an exponential increase in the
reverse diode current and is determined by the parameters BV and IBV
(both of which are positive numbers).
74
Chapter 4 Analog Device Reference
The parameters CJSW and JSW are scaled by the instance parameter PJ whose default
value is 0.0.
If L and W instance parameters are supplied, the diode is scaled by the factor:
M*(L*SHRINK-XW)*(W*SHRINK-XW)
otherwise it is scaled by M*AREA.
n+ Anode
n- Cathode
model_name Name of model defined in a .MODEL control (page 207). Must
begin with a letter but can contain any character except
whitespace and ' . ' .
local_temp Local temperature. Overrides specification in .OPTIONS
75
Simulator Reference Manual
Basic Equations
The model is based on the paper “A Simple Diode Model with Reverse Recovery” by
Peter Lauritzen and Cliff Ma. (See references). The model’s governing equations are
quite simple and are as follows:
qe – qm
i d = ------------------
TT
dq m qm ( qe – qm )
+ ------------- – ----------------------- = 0
dt TAU TT
vd
q e = IS ⋅ TAU ⋅ exp -------------- – 1
N ⋅ Vt
In addition the model uses the standard SPICE equations for junction capacitance and
temperature dependence of IS.
76
Chapter 4 Analog Device Reference
References
Peter O. Lauritzen, Cliff L. Ma, A Simple Diode Model with Reverse Recovery, IEEE
Transactions on Power Electronics, Vol. 6, No 2, pp 188-191, April 1991.
GaAsFET
Netlist Entry
The symbols ' × ' and ' ÷ ' in the Area column means that parameter should be
multiplied or divided by the area factor respectively.
77
Simulator Reference Manual
Notes The GaAsFET model is derived from the model developed by Statz. The
DC characteristics are defined by parameters VTO, B and BETA, which
determine the variation of drain current with gate voltage, ALPHA, which
determines saturation voltage, and LAMBDA, which determines the output
conductance. IS determines the gate-source and gate-drain dc
characteristics.
Inductor (Ideal)
Netlist Entry
n1 Node 1
n2 Node 2
value Value in henries
init_cond Initial current in inductor. Only effective if UIC option is
specified on .TRAN control.
BRANCH set to 0 or 1. 1 is default value. This parameter determines the
internal formulation of the inductor and affects how the IC
parameter is implemented. When BRANCH=1, the inductor
looks like a short circuit during DC operating point and the IC
parameter has no effect unless UIC is specified for a transient
analysis. If BRANCH=0, the inductor looks like a current
78
Chapter 4 Analog Device Reference
See Also
Inductor (Saturable)
Netlist Entry
n1 Node 1
n2 Node 2
modelname Model name referring to a .MODEL control describing the core
characteristics. See details below.
num_turns Number of turns on winding
le Effective path length of core in metres. Default = PATH/100.
PATH is defined in .MODEL.
Jiles-Atherton Parameters
79
Simulator Reference Manual
The AHMODE parameter selects the equation used for the anhysteric function, that is
the non-linear curve describing the saturating behaviour. When set to 0 the function is
the same as that used by PSpice. When set to 1 the function is the original equation
proposed by Jiles and Atherton. See the [Link] technical note for
details.
If the UE parameters is specified either on the device line or in the model, an air gap
value is calculated and the parameters GAP and GAPM are ignored. See the Jiles-
[Link] technical note for the formula used.
80
Chapter 4 Analog Device Reference
The parameter names and their default values for the Jiles-Atherton model are
compatible with PSpice, but the netlist entry is different.
Implementing Transformers
This model describes only a 2 terminal inductor. A transformer can be created using a
combination of controlled sources along with a single inductor. The SIMetrix
schematic editor uses this method.
The schematic editor provides a means of creating transformers and this uses an
arrangement of controlled sources to fabricate a non-inductive transformer. Any
inductor can be added to this arrangement to create an inductive transformer. The
method is simple and efficient. The following shows how a non-inductive three
winding transformer can be created from simple controlled sources:
F1 0 n1 E1 1
E1 W1A W1B n1 0 1
F2 0 n1 E2 1
E2 W2A W2B n1 0 1
F3 0 n1 E3 1
E3 W3A W3B n1 0 1
Note that you cannot use the mutual inductor device with the saturable inductor.
Replace Lxxx with the reference for the inductor. (e.g. L23 etc.). You will find vectors
with the names Lxxx#B Lxxx#H available for plotting in the waveform viewer.
References
1. Theory of Ferromagnetic Hysteresis, [Link], D.L. Atherton, Journal of
Magnetism and Magnetic Materials, 1986 p48-60.
2. On the Parameter Identification and Application of the Jiles-Atherton Hysteresis
Model for Numerical Modelling of Measured Characteristics, D Lederer, H
Igarashi, A Kost and T Honma, IEEE Transactions on Magnetics, Vol. 35, No. 3,
May 1999
81
Simulator Reference Manual
Model format
Model parameters
Description
This is like a standard inductor but the internal implementation is different and permits
the specification of a current initial condition which works without having to specify
the transient UIC switch.
In some circumstances, large value inductors are better implemented using this device
than the standard inductor but note that during the DC operating point solution, the
device looks like an open circuit, not a short circuit as is the case with the normal
SPICE device.
Note that this type of inductor cannot be coupled using the 'K' device.
82
Chapter 4 Analog Device Reference
same name)
kp Transconductance (overrides model parameter of the same
name)
tau Ambipolar recombination lifetime (overrides model parameter
of the same name)
wb Base width in metres (overrides model parameter of the same
name)
Model syntax
83
Simulator Reference Manual
Notes
The IGBT model is based on the model developed by Allen R. Hefner at the National
Institute of Standards and Technology. The parameter names, default values and units
have been chosen to be compatible with the PSpice implementation of the same model.
Modelling Buffer Layer IGBT’s for Circuit Simulation, Allen R. Hefner Jr, IEEE
Transactions on Power Electronics, Vol. 10, No. 2, March 1995
Junction FET
Netlist Entry
84
Chapter 4 Analog Device Reference
The symbols ' × ' and ' ÷ ' in the Area column means that parameter should be
multiplied or divided by the area factor respectively.
85
Simulator Reference Manual
Examples
Q1 Q2
Model Syntax
86
Chapter 4 Analog Device Reference
Model Parameters
The parameters REL and ABS control the way the line is simulated rather than its
electrical characteristics. More accurate results (at the expense of simulation time) can
be obtained by using lower values.
REL and ABS are model parameters that control the setting of breakpoints.
A breakpoint is a point in time when an analysis is unconditionally
performed. The more there are the more accurate the result but the longer it
will take to arrive. Reducing REL and/or ABS will yield greater precision.
Example
T1
RG58_10m
The above could represent a 10 metre length of RG58 cable. The parameters would be
described in a .model control e.g.
87
Simulator Reference Manual
MOSFET
Note Level 1,2,3 and 17 MOSFETs are described in this section. For BSIM3
devices see page 94 and for BSIM4 see page 95. For MOS9, MOS11 and
other Philips devices see page 123
Netlist Entry
88
Chapter 4 Analog Device Reference
89
Simulator Reference Manual
90
Chapter 4 Analog Device Reference
CJ Default
91
Simulator Reference Manual
control - see page 215) DEFL and DEFW respectively. These values in turn default to
100 microns.
The above models differ from all other SIMetrix (and SPICE) models in that they
contain many geometry relative parameters. The geometry of the device (length, width
etc.) is entered on a per component basis and various electrical characteristics are
calculated from parameters which are scaled according to those dimensions. This is
approach is very much geared towards integrated circuit simulation and is
inconvenient for discrete devices. If you are modelling a particular device by hand we
recommend you use the level 17 model which is designed for discrete vertical devices.
92
Chapter 4 Analog Device Reference
In SIMetrix version 5.2 and earlier, this model used a level parameter value of 7
instead of the current 17. The number was changed so that a PSpice compatible BSIM3
model (level=7) could be offered. In order to retain backward compatibility, any level
7 model containing the parameters cgdmax, cgdmin, xg1cgd, xg2cgd or vtcgd will
automatically be switched to level=17.
The level 17 MOSFET was developed to model discrete vertical MOS transistors
rather than the integrated lateral devices that levels 1 to 3 are aimed at. Level 17 is
based on level 1 but has the following important additions and changes:
To model gate-drain capacitance quickly and to acceptable accuracy set the five Cgd
parameters as follows:
1. Set CGDMIN to minimum possible value of Cgd i.e. when device is off and drain
voltage at maximum.
2. Set CGDMAX to maximum value of Cgd i.e. when device is on with drain-source
voltage low and gate-source voltage high. If this value is not known use twice the
value of Cgd for Vgd=0.
93
Simulator Reference Manual
BSIM3 MOSFETs
Notes
The BSIM3 model is only available with the Micron versions of SIMetrix. Three
versions are supplied namely 3.1, 3.24 and 3.3. Our implementation of version 3.1
includes all bug fixes applied to the latest version but the device equations and
supported parameters are for the original version 3.1. See below to find out how to
switch versions.
BSIM3 models can be accessed using one of four values for the LEVEL parameter:
The following Star-Hspice parameters are supported when using level 49/53:
CJGATE, HDIF, LDIF, WMLT, XL, XW, IS, N, NDS, VNDS, PHP,
LMLT, CTA, CTP, PTA, PTP, TREF, RD, RS, RDC, RSC, CBD, CBS, FC, TT,
LD, WD, EG, GAP1, GAP2, XLREF, XWREF, ACM, CALCACM, TLEV, TLEVC
The 'M' instance parameter has also been implemented with all variants. This specifies
the number of equivalent parallel devices.
94
Chapter 4 Analog Device Reference
Version Selector
The VERSION parameter can be specified to select which version is used. As detailed
above, SIMetrix supports three different BSIM3 versions although 8 versions have
been released by Berkeley. The following table shows which version will actually be
used according to the VERSION parameter value.
3.0 3.1
3.1 3.1
3.2 3.24
3.21 3.24
3.22 3.24
3.23 3.24
3.24 3.24
3.3 3.3
not specified 3.3
Note that a second decimal point will be ignored so 3.2.4 is the same as 3.24. If the
version parameter is set to a value not listed above, SIMetrix will raise an error
condition. This can be overridden by setting .OPTION AnyVersion.
Further Documentation
Original Berkeley documentation is provided on the CDROM in PDF form.
Process Binning
BSIM3 devices may be binned according to length and width. Refer to “Model
Binning” on page 44 for details.
BSIM4 MOSFETs
Notes
The BSIM4 model is only available with the Micron versions of SIMetrix.
Versions 4.21, 4.3, 4.4 and 4.5 are currently supported. To set the version to be used,
use the VERSION parameter as defined in the following table:
95
Simulator Reference Manual
4.0 4.21
4.1 4.21
4.2 4.21
4.21 4.21
4.3 4.3
4.4 4.4
4.5 4.5
4.6 4.6
4.61 4.61
Omitted 4.61
Other See notes
Note that a second decimal point will be ignored so 4.2.1 is the same as 4.21. If the
version parameter is set to a value not listed above, SIMetrix will raise an error
condition. This can be overridden by setting .OPTION AnyVersion.
The implementation is standard Berkeley but with the addition of the 'M' instance
parameter which specifies the number of equivalent parallel devices.
Further Documentation
Original Berkeley documentation is provided on the CDROM in PDF form. Note the
document covers version 4.61 of the model. Earlier versions are available from the
BSIM3/4 web site at [Link]
Process Binning
BSIM4 devices may be binned according to length and width. Refer to “Model
Binning” on page 44 for details. Note the multi-fingered devices are binned according
to width per finger. This is a change from SIMetrix versions 5.3 and earlier. To restore
behaviour of the earlier versions, set option BinOnTotalWidth using:
.options BinOnTotalWidth
EKV MOSFETs
Notes
This is the Enz-Krummenacher-Vittoz MOSFET model version 2.6 and is only
available with the Micron versions of SIMetrix.
96
Chapter 4 Analog Device Reference
Our version implements the full charge conserving capacitance model but in the
absence of benchmark circuits this is not yet fully tested. The DC characteristics have
been successfully tested using published test circuits and results.
GMIN
GMIN
For BSIM3, BSIM4 and EKV devices, and also for LEVEL1-3 and LEVEL 17 devices
if the NEWGMIN .OPTIONS setting is set, the GMIN implementation is:
OLDMOSGMIN
MOSGMIN
OLDMOSGMIN
PSP MOSFET
Netlist Entry
97
Simulator Reference Manual
Notes
Resistor
Netlist Entry
n1 Node 1
n2 Node 2
98
Chapter 4 Analog Device Reference
model_name (Optional) Name of model. Must begin with a letter but can
contain any character except whitespace and ' . '
value Resistance (W)
length Length of resistive element in metres. Only used if value is
omitted. See notes below
width Width of resistive element in metres. Only used if value is
omitted. See notes below
ac_resistance Resistance used for AC analyses and for the calculation of
thermal noise. If omitted, value defaults to final resistance
value.
local_temp Resistor temperature (°C)
tc1 First order temperature coefficient
tc2 Second order temperature coefficient
mult Device multiplier. Equivalent to putting mult devices in parallel.
dtemp Differential temperature. Similar to local_temp but is specified
relative to circuit temperature. If both TEMP and DTEMP are
specified, TEMP takes precedence.
Notes
99
Simulator Reference Manual
Notes
The flicker noise parameters are proprietary to SIMetrix. Flicker noise voltage is:
Where:
Vr = Voltage across resistor.
The equation has been formulated so that KF is constant for a given resistive material.
i.e. the noise current is independent of resistance. This doesn't have any particular basis
in physical laws and is implemented this way simply for convenience. When resistor
dimensions and resistivity are unavailable, the value of KF will need to be extracted
for each individual value.
100
Chapter 4 Analog Device Reference
101
Simulator Reference Manual
Resistance Calculation
In the following reff is the effective non-temperature adjusted resistance used for DC
analyses, reffac is the effective non-temperature adjusted resistance used for AC
analyses.
reff = SCALE*RES/M
If instance AC parameter is specified:
raceff = AC*SCALE/M
otherwise if RAC given
raceff = SCALE*RAC/M
otherwise
raceff = reff
102
Chapter 4 Analog Device Reference
Capacitance Calculation
BULK
capeff = M*SCALE*C
otherwise if model parameter CAP is given
capeff = M*SCALE*CAP
otherwise
Calculation of COX
If COX given
coxmod = COX
otherwise if THICK <> 0 AND DI<>0
coxmod = 8.8542149e-012*DI/THICK
otherwise if THICK <> 0 AND DI=0
coxmod = 3.453148e-011/THICK
otherwise
coxmod = 0.0
103
Simulator Reference Manual
Temperature Scaling
Resistance
tscale = 1+(tc1inst+tdelta*tc2inst)*tdelta
where
tdelta = tinst-TREF-273.15
tc1inst = if instance TC1 given: TC1 else TC1R
tc2inst = if instance TC2 given: TC2 else TC2R
tinst = [global circuit temperature] + DTEMP (Kelvin)
Capacitance
ACRESMOD Parameter
This parameter controls the calculation of resistance in AC analysis. With
ACRESMOD=0 AC analysis uses the large signal resistance value, that is the value of
resistance calculated during the DC analysis. If ACRESMOD=1, the small signal
resistance is used, that is, the value of dv/di at the operating point. If the resistance is
defined as an expression containing circuit variables (i.e. it is voltage dependent), the
large signal resistance is different to the small signal resistance.
This resistor model has been developed primarily for compatibility with Hspice
models. Hspice itself always uses the large signal resistance. However, this will create
a discrepancy between AC analysis and a transient analysis of a small signal. To
resolve this discrepancy, set ACRESMOD to 1.
To overcome this, a device configuration file can be created that maps this resistor
model to the default. For full details see “Customising Device Configuration” on
page 46. The line required to make this resistor the default is:
104
Chapter 4 Analog Device Reference
ModelName=R,Device=HspiceRes,Level=0
Connection details
in Input in v v, vd, i, id
out Output out v v, vd, i, id
Model format
Model parameters
105
Simulator Reference Manual
Description
This device implements an arbitrary linear transfer function expressed in the frequency
domain using the 'S' variable. The operation and specification of the device is
illustrated with the following examples.
Examples
1/(s+1)
LAP1
LAP1-OUTP
V1 1K
AC 1 0 R1
This is a simple first order roll off with a 1 second time constant as shown below
400m
200m
100m
40m
20m
Frequency / Hertz
106
Chapter 4 Analog Device Reference
The laplace expression has been entered how it might have been written down without
any attempt to simplify it. The above actually simplifies to (0.1*s+1)/(1.1*s+1)
500m
200m
100m
Frequency / Hertz
The above expression is a second order response that is slightly underdamped. The
following graph shows the transient response.
107
Simulator Reference Manual
0.8
0.6
0.4
0.2
0
0 2 4 6 8 10
Time/mSecs 2mSecs/div
The S-domain transfer block has a number of built in functions to implement standard
filter response. Here is an example. This is a 5th order chebyshev with -3dB at 100Hz
and 0.5dB passband ripple.
108
Chapter 4 Analog Device Reference
100m
10m
1m
100µ
10µ
Frequency / Hertz
Operators:
+-*/^
^ means raise to power. Only integral powers may be specified.
Constants
Any decimal number following normal rules. SPICE style engineering suffixes are
accepted.
S Variable
This can be raised to a power with '^' or by simply placing a constant directly after it
(with no spaces). E.g. s^2 is the same as s2.
Where:
order Integer specifying order of filter. There is no maximum limit but
in practice orders larger than about 50 tend to give accuracy
109
Simulator Reference Manual
problems.
cut-off -3dB Frequency in Hertz
passband_ripple Chebyshev only. Passband ripple spec. in dB
Limitations
SIMetrix expands the expression you enter to create a quotient of two polynomials. If
the constant terms of both numerator and denominator are both zero, both are divided
by S. That process is repeated until one or both of the polynomials has a non-zero
constant term.
• The order the denominator must be greater than or equal to that of the numerator.
• The constant term of the denominator may not be zero.
Subcircuit Instance
Netlist Entry
110
Chapter 4 Analog Device Reference
pin1, pin2 etc. If the pinnames: keyword is included the names following it
will be used to name subcircuit current vectors generated by the
simulator.
subcircuit_name Subcircuit name referred to in subcircuit definition (i.e. with
.SUBCKT control page 237)
m Multiplier. If present, the subcircuit will be multiplied by m as if
there were m devices in parallel. m may be an expression in
which case it must be enclosed by curly braces: ‘{‘, ‘}’.
.OPTIONS DisableSubcktMultiplier
expression1 etc. Parameter expressions. See “Using Expressions” on page 29.
See “Subcircuits” on page 40 for more information.
Transmission Line
Netlist Entry
These remaining parameters control the way the line is simulated rather than its
electrical characteristics. More accurate results (at the expense of simulation time) can
be obtained by using lower values.
111
Simulator Reference Manual
Example
T1
Z0=50 TD=1u
SPICE2 polynomial sources are also supported in order to maintain compatibility with
commercially available libraries for IC's. (Most operational amplifier models for
example use several polynomial sources). In general, however the arbitrary source (see
page 52) is more flexible and easier to use.
Gxxxx nout+ nout- POLY( num_inputs ) vc1+ vc1- vc2+ vc2- ...
+ polynomial_specification
112
Chapter 4 Analog Device Reference
RON On resistance Ω 1
ROFF Off resistance Ω 1/GMIN
VON Voltage at which switch begins to turn on V 1
VOFF Voltage at which switch begins to turn off V 0
GMIN is a simulation parameter which defaults to 10-12 but which can changed using
the .OPTION control (page 215).
113
Simulator Reference Manual
SPICE2 polynomial sources are also supported in order to maintain compatibility with
commercially available libraries for ICs. (Most opamp models for example use several
polynomial sources). In general, however the arbitrary source is more flexible and
easier to use.
Exxxx nout+ nout- POLY( num_inputs ) vc1+ vc1- vc2+ vc2- ...
polynomial_specification
Voltage Source
Netlist Entry
N+ Positive node
N- Negative node
DCOP If this is specified, the voltage source will only be active during
the DC operating point solution. In other analyses, it will behave
like an open circuit. This is an effective method of creating a
‘hard’ initial condition. See “Alternative Initial Condition
Implementations” on page 203 for an example.
INFCAP If specified, the voltage source will behave as an infinite
capacitor. During the DC operating point solution it will behave
like an open circuit. In the subsequent analysis, it will behave
like a voltage source with a value equal to the solution found
114
Chapter 4 Analog Device Reference
during the operating point. Note that the device is inactive for
DC sweeps - as all capacitors are.
dcvalue Value of source for dc operating point analysis
magnitude AC magnitude for AC sweep analysis.
phase phase for AC sweep analysis
transient_spec Specification for time varying source as described in the
following table.
Pulse Source
PULSE ( v1 v2 [td [tr [tf [pw [per ]]]]] )
Where:
115
Simulator Reference Manual
a. Time step is set up by the .TRAN simulator control which defines a transient
analysis. Refer to “.TRAN” on page 241
b. Stop time refers to the end time of the transient analysis.
SIMetrix deviates from standard SPICE in the action taken for a pulse width of zero.
Standard SPICE treats a zero pulse width as if it had been omitted and changes it to the
stop time. In SIMetrix a zero pulse width means just that.
Both the above examples give a pulse lasting 5µS with a period of 10µS, rise and fall
times of 100nS and a delay of 0. The voltage source has a 0V base line and a pulse of
5V while the current source has a 0mA base line and a pulse of 1mA.
← PW →← TF →
→ ← TD
t=0
→ ← TR
Examples
V1 I1
pulse ( 0 5 0 100n 100n 5u 10u ) pulse ( 0 1mA 0 100n 100n 5u 10u )
Each pair of values (ti vi) specifies that the value of the source is vi at time = ti. The
value of the source at intermediate values of time is determined by using linear
interpolation on the input values.
Although the example given below is for a voltage source, the PWL stimulus may be
used for current sources as well.
116
Chapter 4 Analog Device Reference
Example
V1
pwl ( 0 -5 10n -5 11n -3 17n -3 18n -7 50n -7 )
Gives:-
1: :r1_p
-3.5
-4
-4.5
-5
V
-5.5
-6
-6.5
-70 20 40 60 80 100
Time/nSecs 20nSecs/div
This performs the same function as the normal piece wise linear source except that the
values are read from a file named filename.
The file contains a list of time voltage pairs in text form separated by any whitespace
character (space, tab, new line). It is not necessary to add the '+' continuation character
for new lines but they will be ignored if they are included. Any non-numeric data
contained in the file will also be ignored.
Notes
The PWLFILE source is considerably more efficient at reading large PWL definitions
than the standard PWL source. Consequently it is recommended that all PWL
definitions with more than 200 points are defined in this way.
The data output by Show /file is directly compatible with the PWLFILE source making
it possible to save the output of one simulation and use it as a stimulus for another. It is
recommended, however, that the results are first interpolated to evenly spaced points
using the Interp() function.
117
Simulator Reference Manual
The PWLFILE source is a feature of SIMetrix and does not form part of standard
SPICE.
Note, you can use the simulator controls .FILE and .ENDF to define the contents of the
file. E.g.
This will be read in much more efficiently than the standard PWL and is recommended
for large definitions. See “.FILE and .ENDF” on page 194 .
Sinusoidal Source
SIN[E] ( vo va [freq [delay [theta [ phase]]]] )
Where:
0 to delay: vo
delay to Stop time vo + va.e-(t-delay)..[Link](2.π.(freq.(t - delay) + phase/360))
118
Chapter 4 Analog Device Reference
Example
V1
sin ( 0 1 100meg 10nS )
1: :r1_p
0.8
0.6
0.4
0.2
0
V
-0.2
-0.4
-0.6
-0.8
-10 5 10 15 20 25
Time/nSecs 5nSecs/div
Exponential Source
EXP ( v1 v2 [td1 [tau1 [td2 [tau2 ]]]] )
Where:
Defined by:
119
Simulator Reference Manual
Single Frequency FM
SFFM ( vo va [fc [mdi [fs ]]] )
Where:
Noise Source
noise interval rms_value [start_time [stop_time]]
Source generates a random value at interval with distribution such that spectrum of
signal generated is approximately flat up to frequency equal to 1/(2*interval).
Amplitude of noise is rms_value volts. start_time and stop_time provide a means of
specifying a time window over which the source is enabled. Outside this time window,
the source will be zero. If stop_time is omitted or zero a value of infinity will be
assumed.
120
Chapter 4 Analog Device Reference
Sine Parameters
if t>0 OR DELAY<0
else
PEAK×SIN( PHASE×π/180) + OFFSET
Where:
f = FREQ + t×RAMP
t = time - tref - DELAY
time is the global simulation time
tref is the reference time for this spec
121
Simulator Reference Manual
Pulse Parameters
V0 Offset 0 No
V1 Positive pulse 1.0 No
value
V2 Negative pules -1.0 No
value
RISE Rise time i.e time PERIOD/1000 No
to change from V2
to V1
FALL Fall time i.e time PERIOD/1000 No
to change from V1
to V2
WIDTH Positive pulse (PERIOD-RISE-FALL)/2 No
width
PERIOD Period N/A Yes
DELAY Delay before start 0 No
CYCLES Number of -1 No
complete cycles. -1
means infinity
RISE, FALL, WIDTH and PERIOD must be greater than zero. DELAY must be
greater than or equal to zero
Mutual Inductor
Specifies coupling between two inductors.
Netlist Entry
Kxxxx l1 l2 coupling_factor
L1 L2
1mH 1mH
122
Chapter 4 Analog Device Reference
d i L1 di L 2
v L1 = L1 +M
dt dt
di L 2 d i L1
v L2 = L2 +M
dt dt
M
K=
L1 . L2
Notes
You can only couple ideal inductors using this method. The saturable inductor devices
may not be coupled in this way. See “Inductor (Saturable)” on page 79 for more
information.
To use the mutual inductor directly on a schematic you will need to add the device line
to the netlist. See “Adding Extra Netlist Lines” on page 13 for information about how
to do this.
If you wish to couple more than two inductors, the coupling coefficient (K value) must
be specified for every possible combination of two inductors. An error will result if
this is not done.
For iron cored transformers values of K between 0.99 and 0.999 are typical. For
ferrites lower values should be used. If the windings are concentric (i.e. one on top of
the other) then 0.98 to 0.99 are reasonable. If the windings are side by side on a
sectioned former, K values are lower - perhaps 0.9 to 0.95. The addition of air gaps
tends to lower K values.
Example
A transformer with 25:1 turns ratio and primary inductance of 10mH
** Inductors
Lprimary N1 N2 10m
Lsecondary N3 N4 16u
123
Simulator Reference Manual
diode which is usually used with MOS9 and MOS11. These models are only available
with the Micron versions of SIMetrix. Fully supported modes are:
The MOS9 and JUNCAP devices have been tested by comparing the simulations of a
benchmark design between SIMetrix and PSTAR. Simulations of bias point, DC
sweep, AC frequency sweep, transient and noise were carried out. The comparison
showed near identical results, in most cases within 0.01%.
124
Chapter 4 Analog Device Reference
Notes
The geometric binned version of MOS 11.01 id not yet integrated with the library
binning system. So, to use the binning features of this model, you will need to
manually generate separate model names for each bin.
Some other simulator products add junction capacitance parameters to the original
Philips model. Star-Hspice level 50 is the most common of these. These parameters
need to be modelled with an external device using either a standard SPICE diode or a
JUNCAP device.
The Philips model uses JUNCAP and the usual procedure is to make up the complete
model using a subcircuit of MOS9/11 and JUNCAP devices.
125
Simulator Reference Manual
Currently, 3 terminal Mextram devices are not available, due to the confusion
regarding the optional substrate node in SPICE BJTs.
Currently the gate thermal noise of the MOS9/11 device is not implemented for real-
time noise analysis. In practice the effect of this noise component is usually small and
only occurs at high frequencies. To investigate the contribution of this component to
overall circuit behaviour, it can be disabled in AC noise analysis by setting the option
NoMos9GateNoise.
Examples
The following is an example showing an nmos MOS 9 device
126
Chapter 4 Analog Device Reference
Documentation
Original Philips documentation on these models can be found in a number of PDF files
on the installation CDROM.
127
Simulator Reference Manual
Family Parameters
These identify the logic family to which the input and outputs belong. Logic families
are explained in detail on page 276. Most models have three family parameters:
Output Parameters
Parameter Description
name
128
Chapter 5 Digital/Mixed Signal Device Reference
Input Parameters
Parameter Description
name
sink_current Current that the input sinks. Positive current flows into the
device so this parameter is usually negative. The total of all
the input sink currents are added together when a node is in
the logic '0' state. If the total sink load current is
arithmetically smaller (i.e. more negative) than the
MIN_SINK parameter of the device driving the node, then it
will be forced to an UNKNOWN state. This is used to
implement fan out limitations in bipolar logic.
source_current Current that the input sources. Positive current flows into the
device. The total of all the input source currents are added
together when a node is in the logic '1' state. If the total
source load current is larger than the MAX_SOURCE
parameter of the device driving the node, then it will be
forced to an UNKNOWN state. This is used to implement
fan out limitations in bipolar logic.
Delays
Most digital devices have at least one model parameter that specifies a time delay.
Unless otherwise noted, all delays are inertial. This means that glitches shorter than the
delay time will be swallowed and not passed on. For example, the following
waveforms show the input and output of a gate that has a propagation delay of 10nS.
The first pulse is only 5nS so does not appear at the output. The second pulse is 20nS
so therefore is present at the output delayed by 10nS.
Input
Output
0 20 40 60 80
Time/nSecs 20nSecs/div
The Buffer device has an optional stored delay (also known as transport delay)
parameter that makes possible the specification of pure delays.
And Gate
Netlist entry:
129
Simulator Reference Manual
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
Device operation
• If the model parameter OPEN_C is false, The output will be at logic '0' if either
input is at logic '0'. Otherwise, if any input is UNKNOWN, the output will be
UNKNOWN. Otherwise the output will be at logic '1'.
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If either input is at logic '0' the output strength will be
STRONG. Otherwise if any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be HI-IMPEDANCE
allowing a pull-up resistor to force it to the logic '1' state.
130
Chapter 5 Digital/Mixed Signal Device Reference
D-type Latch
D SET Q
EN
QN
RST
Netlist entry
Connection details
Model format
Model parameters
131
Simulator Reference Manual
Device Operation
The device is a level triggered latch with a single data input, complimentary outputs
and active high asynchronous set and reset. The operation of the device is illustrated in
the following diagram:
DATA
ENABLE
OUTPUT
0 1 2 3 4 5
Time/µSecs 1µSecs/div
data_delay+fall_delay
enable_delay+fall_delay
data_delay+rise_delay
The asynchronous inputs (set and reset) override the action of the enable and data
lines.
132
Chapter 5 Digital/Mixed Signal Device Reference
D SET Q
QN
RST
Netlist entry
Connection details
Model format
Model parameters
133
Simulator Reference Manual
Device Operation
The device is an edge triggered D-type flip flop with active high asynchronous set and
reset. The operation of the device is illustrated by the following diagram
CLOCK
RESET
0 1 2 3 4 5
Time/µSecs 1µSecs/div
clk_delay+fall_delay
reset_delay+fall_delay
clk_delay+rise_delay
134
Chapter 5 Digital/Mixed Signal Device Reference
Buffer
Netlist entry
Connection details
in Input in d
out Output out d
Model format
Model parameters
135
Simulator Reference Manual
Device Operation
This device is a simple buffer with a single input and output. It can optionally be
specified to have an open collector (open_c parameter) or open emitter (open_e
parameter) output. Further, if the stored_delay parameter is specified, the device will
act as a pure delay. This means that it will pass pulses that are shorter than the delay
time whereas normally (delay specified by rise_delay and fall_delay) such pulse would
be swallowed. (stored_delay is also known as transport delay)
Note the difference between open emitter and open collector operation. These modes
have been designed to be as close to as possible to real devices, in particular their
behaviour into an open circuit. An open emitter output, when switching from high to
low is likely to follow the voltage on the device's base due to the base-emitter
capacitance so the output state follows the input state. An open collector (or open
drain) output on the other hand will remain in the low state when its input switches.
Frequency Divider
Freq. Div
Netlist entry
136
Chapter 5 Digital/Mixed Signal Device Reference
Connection details
Model format
Model parameters
Device Operation
This device is a positive edge triggered frequency divider. Three model parameters
allow arbitrary definition of the divide ratio, output duty cycle, output phase and initial
delay. Operation of the frequency divider is illustrated by the following diagram which
shows the output of a frequency divider with a DIV_FACTOR of 10 and two
alternative values of HIGH_CYCLES.
137
Simulator Reference Manual
Clock
high_cycles=1
high_cycles=4
0 10 20 30 40 50
Time/µSecs 10µSecs/div
The above was carried out with I_COUNT=0. I_COUNT is the initial value of the
internal counter. The output first goes high when it attains a value of 1 or
1+DIVIDE_RATIO so when I_COUNT is zero (the default) the output first goes high
after the first rising edge. If I_COUNT is set to 5 the output first goes high after the 6th
rising edge and if I_COUNT is -20, the 21st rising edge.
Connection details
Model format
Model parameters
138
Chapter 5 Digital/Mixed Signal Device Reference
Device Operation
This device has the defined initial state (IC parameter) and initial strength (IS
parameter) during the DC operating point solution, then reverts to HI-IMPEDANCE
for the remainder of the analysis.
Digital Pulse
Netlist entry
Connection details
Instance parameters
Model format
Model parameters
139
Simulator Reference Manual
Device Operation
This device supplies a repetitive or single pulse of defined period, delay and width.
Optionally, the device may be specified to have an open emitter output allowing
several pulse sources to be wire OR'ed to create complex pulses. All 5 main .MODEL
parameters may also be specified on the device line as instance parameters in which
case they override any values specified in the .MODEL control.
If OPEN_OUT is specified and true, a pull down resistor must be connected to the
output.
Connection details
Model format
140
Chapter 5 Digital/Mixed Signal Device Reference
Model parameters
Device Operation
The digital signal source provides a multi bit arbitrary digital signal defined in a file.
File Format
The file is in ASCII format and is in the form of a table each row being on a new line.
The first column defines the time values while the entries in the remaining columns
define the output value for each of the outputs. So the total number of columns must be
the number of outputs plus one. The output values must appear in the same order as the
outputs in the netlist entry. So, the values for out_0 will be in column 2, out_1 in
column 3 etc.
The file may include blank lines and comment lines beginning with a '*'.
The output values must specify the state as well as the strength using the following
codes:
Code State-Strength
0S LOW-STRONG
1S HIGH-STRONG
US UNKNOWN-STRONG
0R LOW-RESISTIVE
1R HIGH-RESISTIVE
UR UNKNOWN-RESISTIVE
0Z LOW-HI-Z
1Z HIGH-HI-Z
141
Simulator Reference Manual
Code State-Strength
UZ UNKNOWN-HI-Z
0U LOW-UNDETERMINED
1U HIGH-UNDETERMINED
UU UNKNOWN-UNDETERMINED
Example
U2 OUT_0
SOURCE
OUT_1
OUT_2
OUT_3 4.7k
R1
V1
1n 2.5
C1
142
Chapter 5 Digital/Mixed Signal Device Reference
OUT_0
OUT_1
OUT_2
OUT_3
0 20 40 60 80
Time/µSecs 20µSecs/div
An error will result if the file fails in any way to comply with the format. There must
be the exact number of entries in each row and the time values must be monotonic.
Totally blank lines or lines containing only white space are permitted but any other
non-comment line not complying with the format will fail.
Inverter
Netlist entry
Connection details
in Input in d
out Output out d
Model format
143
Simulator Reference Manual
Model parameters
Device Operation
If the OPEN_C parameter is not specified or is FALSE, this device simply inverts the
state of its input. I.e. if the input is logic '0' the output will be logic '1' and vice-versa. If
the input is UNKNOWN the output will also be UNKNOWN.
If OPEN_C is TRUE, the output state is always at logic '0' and the input determines its
strength. If the input is at logic '1' the output strength is STRONG and if it is at logic '0'
the output strength is HI-IMPEDANCE. The output strength will be
UNDETERMINED if the input is UNKNOWN.
JK Flip Flop
Netlist entry
144
Chapter 5 Digital/Mixed Signal Device Reference
Connection details
j J input in d
k K input in d
clk Clock in d
set Asynchronous set in d
reset Asynchronous reset in d
out Data output out d
nout Inverted data output out d
Model format
Model parameters
145
Simulator Reference Manual
Device Operation
The following circuit and graph illustrate the operation of this device:
Counter_4
U3
D0
D1
U1-J
D2
U1
D3 JK_FlipFlop
SET U1-Q
J Q
U2
U1-CLK U1-QN
K QN
U1-K RST
U1-CLK
U1-J
U1-K
U1-Q
U1-QN
0 2 4 6 8 10 12 14 16 18 20
Time/µSecs 2µSecs/div
clk_delay+rise_delay
clk_delay+fall_delay
The following table describes the operation of the device when both inputs are at
known states: The output can only change on a positive edge of the clock.
146
Chapter 5 Digital/Mixed Signal Device Reference
0 0 No change
0 1 0
1 0 1
1 1 toggle
When either input is UNKNOWN, the situation is more complicated. There are some
circumstances when a known state can be clocked to the output even if one of the
inputs is unknown. The following table describes the operation for all possible input
states. X means UNKNOWN.
0 0 0 0
0 0 1 1
0 0 X X
0 1 0 0
0 1 1 0
0 1 X 0
0 X 0 0
0 X 1 X
0 X X X
1 0 0 1
1 0 1 1
1 0 X 1
1 1 0 1
1 1 1 0
1 1 X X
1 X 0 1
1 X 1 X
1 X X X
X 0 0 X
X 0 1 1
X 0 X X
147
Simulator Reference Manual
X 1 0 X
X 1 1` 0
X 1 X X
X X 0 X
X X 1 X
X X X X
Connection details
in Input in d, vector
out Output out d, vector
Instance Parameters
Model format
148
Chapter 5 Digital/Mixed Signal Device Reference
Model parameters
Device Operation
149
Simulator Reference Manual
Nand Gate
Netlist entry
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
Device operation
• If the model parameter OPEN_C is false, The output will be at logic '1' if either
input is at logic '0'. Otherwise, if any input is UNKNOWN, the output will be
UNKNOWN. Otherwise the output will be at logic '0'.
150
Chapter 5 Digital/Mixed Signal Device Reference
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If either input is at logic '0' the output strength will be
HI-IMPEDANCE allowing a pull-up resistor to force it to the logic '1' state.
Otherwise if any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be STRONG.
Nor Gate
Netlist entry
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
151
Simulator Reference Manual
Device operation
• If the model parameter OPEN_C is false, The output will be at logic '0' if either
input is at logic '1'. Otherwise, if any input is UNKNOWN, the output will be
UNKNOWN. Otherwise the output will be at logic '1'.
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If either input is at logic '1' the output strength will be
STRONG. Otherwise if any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be HI-IMPEDANCE
allowing a pull-up resistor to force it to the logic '1' state.
Open-Collector Buffer
Netlist entry
Connection details
in Input in d
out Output out d
Model format
Model parameters
152
Chapter 5 Digital/Mixed Signal Device Reference
Device Operation
The logic description for the open-collector buffer is described by the following table
0 0 STRONG
1 1 HI-IMPEDANCE
UNKNOWN UNKNOWN UNDETERMINED
Open-Emitter Buffer
Netlist entry
Connection details
in Input in d
out Output out d
Model format
Model parameters
Device Operation
153
Simulator Reference Manual
The logic description for the open-collector buffer is described by the following table
0 0 HI-IMPEDANCE
1 1 STRONG
UNKNOWN UNKNOWN UNDETERMINED
Or Gate
Netlist entry
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
Device operation
• If the model parameter OPEN_C is false, The output will be at logic '1' if either
input is at logic '1'. Otherwise, if any input is UNKNOWN, the output will be
UNKNOWN. Otherwise the output will be at logic '0'.
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If either input is at logic '1' the output strength will be
HI-IMPEDANCE allowing a pull-up resistor to force it to the logic '1' state.
Otherwise if any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be STRONG.
Pulldown Resistor
Netlist entry
Connection details
Model format
Model parameters
155
Simulator Reference Manual
Device Operation
This is a single terminal device that can provide either a RESISTIVE or STRONG
logic '0'. When resistive it can be used for wire-OR connected open emitter outputs. If
STRONG is specified (by the STRONG parameter) its main application is as a digital
ground connection.
Pullup Resistor
Netlist entry
Connection details
Model format
Model parameters
Device Operation
This is a single terminal device that can provide either a RESISTIVE or STRONG
logic '1'. When resistive it can be used for wire-AND connected open collector outputs.
If STRONG is specified (by the STRONG parameter) its main application is as a
digital VCC connection.
156
Chapter 5 Digital/Mixed Signal Device Reference
Connection details
Model format
Model parameters
Device Operation
This device is provided for compatibility with other XSPICE products and is not
recommended for new designs. In some circumstances, this device can consume large
quantities of system (i.e. your PC's) RAM as it uses an inefficient method of storing
state history. RAM's can also be implemented using the arbitrary logic block (see
page 281) which is much more efficient. An example of a simple 256X8 RAM can be
found amongst the supplied example circuits (Examples\ALB_Examples\[Link]
and [Link]).
Set-Reset Flip-Flop
Netlist entry
Connection details
s S input in d
r R input in d
clk Clock in d
set Asynchronous set in d
reset Asynchronous reset in d
out Data output out d
nout Inverted data output out d
Model format
Model parameters
158
Chapter 5 Digital/Mixed Signal Device Reference
Device Operation
The SR flip flop is similar to a JK flip flop except that the output is UNKNOWN when
both S and R inputs are high. In a JK the output toggles in the same circumstances.
The following table describes the operation of the device when both inputs are at
known states: The output can only change on a positive edge on the clock.
0 0 No change
0 1 0
1 0 1
1 1 UNKNOWN
When either input is UNKNOWN, the situation is more complicated. There are some
circumstances when a known state can be clocked to the output even if one of the
inputs is unknown. The following table describes the operation for possible input
states. X means UNKNOWN.
0 0 0 0
0 0 1 1
0 0 X X
0 1 0 0
0 1 1 0
0 1 X 0
0 X 0 0
0 X 1 X
0 X X X
1 0 0 1
159
Simulator Reference Manual
1 0 1 1
1 0 X 1
1 1 0 X
1 1 1 X
1 1 X X
1 X 0 X
1 X 1 X
1 X X X
X 0 0 X
X 0 1 1
X 0 X X
X 1 0 X
X 1 1` X
X 1 X X
X X 0 X
X X 1 X
X X X X
SR Latch
Netlist entry
Connection details
s S input in d
r R input in d
enable Enable in d
set Asynchronous set in d
reset Asynchronous reset in d
out Data output out d
nout Inverted data output out d
160
Chapter 5 Digital/Mixed Signal Device Reference
Model format
Model parameters
Device Operation
This device is identical to the SR flip flop except that it is level not edge triggered.
That is the output may change whenever the enable input is high.
161
Simulator Reference Manual
State Machine
Netlist entry
Axxxx [ in_0 in_1 .. in_n ] clk reset [ out_0 out_1 .. out_n ] model_name
Connection details
Model format
Model parameters
162
Chapter 5 Digital/Mixed Signal Device Reference
Notes
0 0S 0S 0 0 -> 3
0 1 -> 1
1 0 -> 0
1 1 -> 0
1 0S 1S 0 0 -> 0
0 1 -> 2
1 0 -> 0
1 1 -> 0
2 1S 0S 0 0 -> 1
0 1 -> 3
1 0 -> 0
1 1 -> 0
3 1S 1S 0 0 -> 2
0 1 -> 0
1 0 -> 0
1 1 -> 0
See Examples\Digital_Devices\state_updown.sxsch
Connection details
t Toggle input in d
clk Clock in d
set Asynchronous set in d
reset Asynchronous reset in d
out Data output out d
nout Inverted data output out d
163
Simulator Reference Manual
Model format
Model parameters
Device Operation
The operation of the toggle flip flop is illustrated by the following diagrams. When the
T input is high, the output toggles on each rising edge of the clock. If the T input is
UNKNOWN the output will be UNKNOWN.
164
Chapter 5 Digital/Mixed Signal Device Reference
U3 U1-T
Toggle
U1
SET U1-QP
T
U2
U1-CK
RST
U1-CK
U1-QP
U1-T
0 2 4 6 8 10 12 14
Time/µSecs 2µSecs/div
clk_delay+fall_delay
Tri-State Buffer
Netlist entry
165
Simulator Reference Manual
Connection details
in Input in d
enable Enable in d
out Output out d
Model format
Model parameters
Device Operation
This is a three terminal buffer device. The output state is equal to the input state and the
output strength is determined by the enable input as follows:
0 HI-IMPEDANCE
1 STRONG
UNKNOWN UNDETERMINED
166
Chapter 5 Digital/Mixed Signal Device Reference
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
Device Operation
• If the OPEN_C parameter is FALSE, the output is at logic '1' if an even number
of inputs are at logic '1'. If any input is UNKNOWN the output will be
UNKNOWN, otherwise the output will be at logic '0'.
167
Simulator Reference Manual
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If n even number of inputs are at logic '1' the output
strength will be HI-IMPEDANCE allowing a pull-up resistor to force it to the
logic '1' state. If any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be STRONG.
Exclusive OR Gate
Netlist entry
Connection details
in Input in d, vector 2 - ∞
out Output out d n/a
Model format
Model parameters
168
Chapter 5 Digital/Mixed Signal Device Reference
Device Operation
• If the OPEN_C parameter is FALSE, the output is at logic '1' if an odd number of
inputs are at logic '1'. If any input is UNKNOWN the output will be
UNKNOWN, otherwise the output will be at logic '0'.
• If the model parameter OPEN_C is true the device will be open collector. In this
case the output logic state is always '0'. The state of the inputs instead determines
the strength of the output. If an odd number of inputs are at logic '1' the output
strength will be HI-IMPEDANCE allowing a pull-up resistor to force it to the
logic '1' state. If any input is UNKNOWN the output strength will be
UNDETERMINED. Otherwise the output strength will be STRONG.
Analog-Digital Converter
Netlist entry
Connection details
Model format
169
Simulator Reference Manual
Model parameters
Device Operation
This is a 1-32 bit analog to digital converter. The operation of this device is illustrated
by the following diagrams:
170
Chapter 5 Digital/Mixed Signal Device Reference
ADC_4
U1
U1-In In D0 U1-D0
D1 U1-D1
U2 U1-Clock D2 U1-D2
V1 D3 U1-D3
Pulse(-2.5 2.5 0 160u 160u)
Data_Valid U1-Data_Valid
convert_time
U1-Clock
U1-D0
U1-D1
U1-D2
U1-D3
U1-Data_Valid
1
Analog in / V
0
-1
-2
Time/µSecs 20µSecs/div
171
Simulator Reference Manual
convert_time
data_valid_delay
U1-Clock
U1-Data_Valid
U1-D0
19 20 21 22 23 24
Time/µSecs 1µSecs/div
Conversion timings.
The ADC starts the conversion at the rising edge of the clock. The analog input signal
is also sampled at this point. The output data changes in response to this,
CONVERT_TIME seconds later. At the same time the data_valid output goes low
(inactive) then high again after a delay equal to DATA_VALID_DELAY. It is possible
to start a new conversion before the previous conversion is complete provided it is
started later than MIN_CLOCK seconds after the previous conversion was started.
MIN_CLOCK must always be less than CONVERT_TIME. If the MIN_CLOCK
specification is violated, the conversion will not start.
Connection details
in Input inout g
out Output out d
Model format
172
Chapter 5 Digital/Mixed Signal Device Reference
Model parameters
Device Operation
The analog-digital interface bridge is the main device used to connect analog signals to
digital inputs. The device produces a digital signal that is in the logic '1' state when the
analog input is above the high threshold (IN_HIGH) and a logic '0' state when it is
below the low threshold (IN_LOW). When the analog input is in between these two
states the output will be in the UNKNOWN state. The changes in state will be delayed
according to the RISE_DELAY and FALL_DELAY parameters.
The analog input presents a load to its driving circuit according to the digital load that
is being driven. In other words the digital load is reflected to the analog input. Both
static (i.e. DC) and dynamic (i.e. capacitance) elements of the load are reflected. To
accurately reflect the sink and source currents, the interface bridge needs to know the
voltage levels of the device it is driving. The digital device will (usually) have a
SINK_CURRENT and a SOURCE_CURRENT model parameter each of which apply
at defined logic voltage levels. These levels must be specified in the OUT_LOW and
OUT_HIGH parameters of the AD interface bridge model. The input is modelled by a
current source in parallel with a resistor. The values of these components are calculated
from the above mentioned parameters and the digital load.
173
Simulator Reference Manual
Input clamp
HC00
U1-IN2 U1-OUT
V1
Pulse(0 5 0 5u 5u 50u 100u) U1
U1-OUT
0
30 35 40 45 50 55 60 65 70
Time/µSecs 5µSecs/div
The graph shows the input and output of the NAND gate. Because the input is analog
an implicit AD interface bridge will have been connected by the simulator. In the
above example the parameters for this bridge have been set to:
174
Chapter 5 Digital/Mixed Signal Device Reference
+ out_family = "HC"
+ out_low = 0
+ out_high = 5
+ clamp_bias=0.5
+ clamp_res=10
+ time_tol=10u
The last parameter, TIME_TOL has been deliberately set ridiculously high to
demonstrate what happens without time step control on the input. The input thresholds
of the HC gate are 2.1 and 2.2 volts yet the output in the above example doesn't switch
until the input has reached 0V. Because there is little activity in the analog circuit, the
time steps are quite large. In fact in the above example the transient timepoints are at
55uS, 55.04uS, 56.2uS, 57.8uS and 60uS. The timepoint at 57.8u is just before the 2.2
volt threshold is reached and it isn't until the next time point, 2.2uS later that the lower
threshold is broken. The result is the location of the negative edge at the output is
delayed by approx. 2.2uS from where it should be. The problem is that the analog
system knows nothing of what is happening in the digital domain so carries on with
large timesteps oblivious to the errors in the digital system.
To overcome this problem. SIMetrix features a mechanism (not in the original XSPICE
system) that detects that the threshold has been passed and cuts back the time step to
ensure that the digital edge occurs at an accurate point. The accuracy of this
mechanism is controlled by the TIME_TOL parameter. The smaller this parameter, the
more accurately the exact threshold will be hit at the expense of short time steps and
longer simulation runs. TIME_TOL defaults to 100pS and in most applications this is a
good choice. The following shows the result when TIME_TOL is set to the default.
U1-OUT
0
50 52 54 56 58 60 62
Time/µSecs 2µSecs/div
The effect of not correctly simulating the threshold point has serious consequences
when attempting to simulate relaxation oscillators constructed with digital inverters as
the following graphs illustrate:
175
Simulator Reference Manual
-2
-2
0 0.2 0.4 0.6 0.8 1
Time/mSecs 200µSecs/div
The top trace is without threshold control and the bottom trace is with it.
Digital-Analog Converter
Netlist entry
Connection details
Model format
176
Chapter 5 Digital/Mixed Signal Device Reference
Model parameters
Device Operation
This device is a 1-32 bit digital to analog converter. Its operation is illustrated by the
following diagrams.
Counter_4 DAC_4
U2 U4
U3 U2-D0
D0 D0
U2-D1 U1-OUT
D1 D1 OUT
U2-D2
D2 D2
U2-D3
D3 D3
177
Simulator Reference Manual
U2-D0
U2-D1
U2-D2
U2-D3
1.5
0.5
0
-0.5
-1
-1.5
-2
-2.5
0 10 20 30 40 50
Time/µSecs 10µSecs/div
DAC waveforms
U2-D0
U2-D1
U2-D2
U2-D3
400
200
-200
-400
Time/µSecs 5nSecs/div
output_slew_time
178
Chapter 5 Digital/Mixed Signal Device Reference
In offset binary mode the D-A converter produce an output voltage equal to:
where n is the number of bits and code is the digital input code represented as an
unsigned number between 0 and 2n-1.
where n is the number of bits and code is the digital input code represented as a signed
number between -2n/2 and 2n/2-1.
Whenever the input code changes, the output is set on a trajectory to reach the target
value in the time specified by OUTPUT_SLEW_TIME. UNKNOWN states are
ignored. That is the input will be assumed to be at the most recent known state.
Connection details
in Input in d
out Output inout g
Model format
179
Simulator Reference Manual
Model parameters
DC characteristics
This digital to analog interface bridge is the main device used to connect digital signals
to analog devices. The output provides an analog voltage and source resistance
according to the state and strength of the driving digital input. The output has a non-
linear characteristic that is a simplified model of a typical digital output stage. The
following graphs show the output characteristics for the supplied high speed CMOS
DA bridge. This has the following model parameters:
180
Chapter 5 Digital/Mixed Signal Device Reference
knee_low
60
Slope = g_pulldown
50
Output
Current/mA
40
30
20
10
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
v1/V 500mV/div
In the above graph, the slope of the curve at V=0 is determined by the
G_PULLDOWN parameter. The ‘knee smoothing band’ is a transitional area where
the output switches from a constant resistance to a constant current. The smoothing
characteristic is a quadratic and is calculated to be smooth at all points. This is required
for good convergence behaviour. The knee smoothing band starts at KNEE_LOW-
V_SMOOTH and finishes at KNEE_LOW+V_SMOOTH.
181
Simulator Reference Manual
Slope = g_pullup
-10
-20
Output
Current/mA
-30
-40
-50
0 1 2 3 4 5
v1/V 1V/div
knee_high
For the HI-IMPEDANCE strength, the output will look like a resistor of value 1/
G_HIZ connected to a voltage half way between the two analog output states. (1G
connected to 2.5V in the above example.)
When the input state is UNKNOWN the output will be as if it were half way between
the two known states. This is a compromise solution. The UNKNOWN state does not
have a parallel in the analog domain so instead it is treated as a transitional state. In
some cases the UNKNOWN state occurs in transitional cases although this is not the
correct meaning of UNKNOWN.
Switching Characteristics
When the logic state at the input changes, the output will transition from the current
state to the target state in a time determined by T_RISE or T_FALL according to the
direction of the state change.
182
Chapter 5 Digital/Mixed Signal Device Reference
Connection details
Instance Parameters
Model format
Model parameters
183
Simulator Reference Manual
Device Operation
The frequency characteristic described by the above example follows a square law. The
two arrays CNTL_ARRAY and FREQ_ARRAY must be the same length. These define
the frequency output for a given analog input.
In order to control the accuracy of the phase of the output signal, this model may cut
back the analog time step. At each analog time point, the required frequency is
calculated and the digital output is set at that frequency. If the analog input changes by
too large an amount between time points, the digital output phase could be
substantially in error as the frequency is constant between analog time points. The
actual error is calculated and if this exceeds PHASE_TOL, the time point is rejected
and a time point at which the error will be in tolerance is estimated.
Note: This model was included with the original XSPICE code but the SIMetrix
version has been completely re-written. The original did not have any phase error
control and could not give accurate results unless the analog time step was artificially
kept small.
Connection details
in Input inout g g, gd
out Output out d d
Model format
184
Chapter 5 Digital/Mixed Signal Device Reference
Model parameters
Device Operation
If initial input voltage lies between the hysteresis thresholds, the output state is
determined by the init_cond parameter.
185
Simulator Reference Manual
Overview
Simulator commands instruct the simulator how to read in and simulate the circuit. All
simulator commands begin with a period ( . ) .
For the remainder of this chapter and elsewhere in this manual, simulator commands
are referred to as ‘Controls’ to distinguish them from commands entered in the
command shell.
The schematic editor supports some of the controls described in this chapter but not all.
Unsupported analysis controls may be added manually to the schematic's netlist. See
“Adding Extra Netlist Lines” on page 13 for details.
.MODEL and .SUBCKT controls may also appear in model library files (in fact that is
where they would usually reside) see User's Manual for details. The .ALIAS control
may only appear in model library files.
.AC 190
.DC 193
.ENDF 194
.ENDS 237
.FILE 194
.GLOBAL 196
.GRAPH 196
.IC 202
.INC 203
.KEEP 203
.LIB 206
.MODEL 207
.NODESET 210
.NOISE 211
.OP 214
.OPTIONS 215
.PARAM 228
186
Chapter 6 Command Reference
.PRINT 230
.PZ 233
.SENS 233
.SETSOA 233
.SUBCKT 237
.TEMP 238
.TF 238
.TRACE 240
.TRAN 241
As well as providing 6 modes, each of the modes can sweep in four different ways.
These are linear, decade, octave and list.
187
Simulator Reference Manual
Syntax
All the swept analysis modes use the same general syntax to specify the sweep
parameters. However, to maintain compatibility with SPICE and its derivatives
including earlier versions of SIMetrix, each analysis mode allows variations to this
standard syntax. The general syntax is described below while the variations allowed
for each analysis mode are described in the section dedicated to that analysis mode.
All of the analysis modes can optionally be entered in a similar manner to .MODEL
statements i.e. as an unordered list of parameter names followed by their values. For
example, the following is a perfectly legal noise analysis specification:
In the various forms of the syntax described in the following sections, some of the
parameter names may be omitted as long as they are entered in a particular order. It is
sometimes, however, easier to remember parameter names rather than a default order,
so the method described above may be more convenient for some users.
sweep_spec:
One of the following:
Where
188
Chapter 6 Command Reference
Where:
Syntax
The general form is:
Where:
189
Simulator Reference Manual
Examples
AC sweep of voltage source V5 from -300mV to 300mV. Repeat 6 times for parameter
restail from 450 to 550.
.AC
.AC inner_sweep_spec [ F frequency ] [ SWEEP outer_sweep_spec ]
190
Chapter 6 Command Reference
For non-frequency sweeps, a new dc operating point may be calculated at each step
depending on what is being swept. If a capacitor, inductor or an ‘AC only’ model
parameter is being swept, then no new dc operating point will be required. Otherwise
one will be performed. An ‘AC only’ parameter is one that does not affect DC
operating point such as device capacitance.
Notes
An AC analysis calculates the small signal frequency response of the circuit about the
dc operating point. The latter is automatically calculated prior to commencing the
frequency sweep. One or more inputs may be specified for AC analysis by using
voltage or current sources with the AC specification (See “Voltage Source” on
page 114). The results of an AC analysis are always complex.
Examples
Sweep voltage source V1 100 points from -100mV to 100mV. Frequency = 100kHz
Sweep resistor R1 with values 10k 12k 15k 18k 22k 27k 33k, Frequency =1.1KHz
.AC DEVICE R1 LIST 10k 12k 15k 18k 22k 27k 33k F=1.1K
191
Simulator Reference Manual
.ALIAS
.ALIAS alias_name device_name device_type
This control may only be used in device model library files. It is not recognised by the
simulator. It permits a device model or subcircuit to be referenced by a different name.
This allows one model definition to be used for multiple part numbers.
Example
.MODEL BC547C NPN
+ IS=7.59E-15 VAF=19.3 BF=500 IKF=0.0710 NE=1.3808
+ ISE=7.477E-15 IKR=0.03 ISC=2.00E-13 NC=1.2 NR=1 BR=5
+ RC=0.75 CJC=6.33E-12 FC=0.5 MJC=0.33 VJC=0.65
+ CJE=1.25E-11 MJE=0.55 VJE=0.65 TF=4.12E-10 ITF=0.4 VTF=3
+ XTF=12.5 RB=172 IRB=0.000034 RBM=65
The above would provide identical definitions for both BC547C and BC549C bipolar
transistors.
Notes .ALIAS definitions will recognise models defined in other files provided
the file in which the alias resides and the file in which the model definition
resides are part of the same library specification. A library specification is a
single pathname possibly with a wildcard ('?' or '*') to refer to multiple
files. E.g. \simetrix\models\*.mod is a library specification and refers to all
files with the extension '.mod' in the directory \simetrix\models.
192
Chapter 6 Command Reference
.DC
.DC inner_sweep_spec [ SWEEP outer_sweep_spec ]
Spice compatible:
.DC device_name start stop step
Examples
193
Simulator Reference Manual
.DC V1 0 5 0.1
Decade (i.e. logarithmic) sweep. Sweep V1 from 1mV to 1V with 25 points per decade
.DC V1 DEC 25 1m 1v
Note that the DEVICE keyword has been omitted. This is the default sweep mode for
.DC.
Do 1000 Monte Carlo steps. This performs the same task as a Monte Carlo analysis
applied to a DC operating point. In other products and earlier versions of SIMetrix this
task would take a long time as the operating point is solved from scratch each time.
With the mode described by the following example, the operating point need only be
calculated from scratch once. All subsequent steps are seeded by the previous one and
usually require only a few iterations. The end result is a sometimes spectacular
increase in speed.
Note the STP keyword is necessary to signify the start-stop-step method of defining a
linear sweep. Alternatively LIN can be used which defines the sweep in terms of the
total number of points. The following is equivalent to the above:
The .FILE control allows the contents of a file referenced in a .MODEL control to be
placed directly in the netlist. Files are referenced in arbitrary logic blocks (page 281),
PWLFILE voltage and current sources (page 117), digital sources (page 140) and
digital state machines (page 162). Each of these may refer to files defined using .FILE
and .ENDF.
194
Chapter 6 Command Reference
Example
.MODEL COUNT_8 d_logic_block file=counter_def
.FILE counter_def
PORT (DELAY = 10n) CountOut out[0:7] ;
Count = Count + 1 ;
CountOut = count ;
.ENDF
The .MODEL control refers to a file called ‘counter_def’. This could be a real disk file
called counter_def or counter_def.ldf, but in the above example it is instead defined
directly in the netlist using .FILE and .ENDF
Important Note
.FILE and .ENDF will not be recognised in library files.
.FUNC
.FUNC name ( arglist ) { body }
name Name of function. Must begin with a letter and not match one of
the built in functions.
arglist List of comma separated argument names
body Body of function. This is an expression referring to the names in
arglist that defines the operation performed by the function
.FUNC defines a function that can be used in a model or device parameter expression,
a parameter defined using .PARAM or in an arbitrary source expression.
Examples
.FUNC FREQ(V) { (V)*120K }
.FUNC SWEEP(V) { SIN(TIME*FREQ(v)*2*PI) }
Optimiser
Any expression that uses a function defined with .FUNC will be automatically
processed by an optimisation algorithm. For more information see “Optimisation” on
page 39
.OPTIONS optimise=2
195
Simulator Reference Manual
To disable:
.OPTIONS optimise=0
.GLOBAL
.GLOBAL node [ node... ]
Identifies nodes as global. This allows nodes specified at the top level of a circuit to be
accessed within a subcircuit definition. For more information see “Subcircuits” on
page 40.
.GRAPH
Parameters
.GRAPH signal_name|"expression"
+ [ persistence = persistence ]
+ [ axisname = axisname ]
+ [ graphname = graphname ]
+ [ axistype = digital|grid|axis|auto ]
+ [ curvelabel = curvelabel ]
+ [ xlabel = xlabel ]
+ [ ylabel = ylabel ]
+ [ xunit = xunit ]
+ [ yunit = yunit ]
+ [ xmin = xmin ]
+ [ ymin = ymin ]
+ [ xmax = xmax ]
+ [ ymax = ymax ]
+ [ analysis = analyses_list ]
+ [ ylog = lin|log|auto ]
+ [ xlog = lin|log|auto ]
+ [ nowarn = true|false ]
+ [ initXLims = true|false]
+ [ complete = true|false ]
+ [ order = order ]
+ [ colour = colour ]
.GRAPH instructs SIMetrix to plot a graph of the specified signal or expression. The
graph can be plotted incrementally as the simulation proceeds or may be delayed until
the run is complete.
196
Chapter 6 Command Reference
197
Simulator Reference Manual
198
Chapter 6 Command Reference
199
Simulator Reference Manual
bbggrr
The .GRAPH control is the underlying simulator mechanism used by the schematic's
fixed probes. See User's Manual for details.
.GRAPH supersedes the older and less flexible .TRACE (page 240). The latter is,
however, still supported and may sometimes be convenient for specifying multiple
signals on one line.
Conflicting values of ylog and xlog are resolved by plotting the curves on separate
axes or graph sheets respectively.
200
Chapter 6 Command Reference
SIMetrix - from version 5 - now has the ability to incrementally evaluate some
expressions and there is no longer a recommendation to set complete=true. However,
certain expression cannot be incrementally evaluated and when such expressions are
entered, incremental plotting will automatically be disabled and the plot won't appear
until the run is complete.
201
Simulator Reference Manual
Examples
.GRAPH C2_P curveLabel="Amplifier output" nowarn=true
Plots the vector C2_P and gives it the label ‘Amplifier output’. As NOWARN is
TRUE, no warning will be given if C2_P does not exist.
.GRAPH vout_quad
+ axisType="grid"
+ axisName="grid1"
+ persistence=2
+ curveLabel="Quadrature"
+ nowarn=true
+ analysis = TRAN|DC
.GRAPH vout
+ axisType="grid"
+ axisName="grid1"
+ persistence=2
+ curveLabel="In Phase"
+ yLabel="Filter Outputs"
+ nowarn=true
+ analysis = TRAN|DC
The above illustrates the use of the parameters AXISTYPE and AXISNAME. Both the
vectors specified by the above .GRAPH controls will be plotted on the same but
separate grid. Because both grids have been given the AXISNAME grid1, each curve
will be plotted on the same one. If the values of axisname for the above were different,
each curve would be plotted on a separate grid. The ANALYSIS parameter has been
specified in both cases, so plots will only be created for transient and dc sweep
analyses.
.IC
.IC V(node1)=val1 [ V(node2)=val2 ]...
OR
node1, node2 etc. Name of circuit node (or net) to which initial condition is to be
applied. See notes below.
val1, val2 etc. Voltage to be applied to net as initial condition.
If the UIC parameter is specified with the .TRAN control no DC operating point will
be calculated so an initial condition will set the bias point in the same way as an IC=...
parameter on a BJT, capacitor, diode, JFET or MOSFET.
202
Chapter 6 Command Reference
If the UIC parameter is absent from the .TRAN control then a DC operating point is
calculated before the transient analysis. In this case the net voltages specified on the
.IC control are forced to the desired initial values during the DC operating point
solution. Once transient analysis begins this constraint is released. By default the
voltage force is effectively carried out via a 1Ω resistor. This can be changed with the
option setting ICRES. (page 215).
Will force a voltage of 3.5 volts between nodes 2 and 3 during the DC operating point
solution. This has two advantages over .IC:
This will behave identically to the voltage source in the above example during the DC
operating point but during a subsequent small-signal or transient analysis will present a
10µF capacitance to nodes 2 and 3.
.INC
.INC pathname
.KEEP
.KEEP signal_spec [signal_spec ...]
This control tells the simulator what values to store during a simulation. By default, all
top level voltages and currents and digital data are stored.
203
Simulator Reference Manual
204
Chapter 6 Command Reference
Notes
.KEEP may be used inside a sub-circuit definition in which case .KEEP operates at a
local level. For example .KEEP *v inside a sub-circuit definition specifies that all
voltages within that subcircuit (for all instances) will be saved. .KEEP **v does the
same but also includes any descendant sub-circuit instances.
In earlier versions, voltage also meant currents in voltage sources and inductors as
these values are obtained as part of the matrix solution. This is no longer the case,
voltage and current mean what they say.
Examples
205
Simulator Reference Manual
.LIB
There are two forms of .LIB and the behaviour of each is completely different from
each other. The SIMetrix Native Form specifies a file or group of files to be searched
for any model or subcircuit that has not yet been found. The HSPICE version is a
selective version of .INC but unlike .INC it doesn't include the whole file, just a
specified portion of it.
pathname File system path name specifying a single file or, by using a
wildcard (* or ?), a group of files. If the path name contains
spaces, it must be enclosed in quotation marks (").
The SIMetrix form of this control specifies a pathname to be searched for model and
subcircuit libraries. Any number of .LIB controls may be specified and wildcards (i.e.
* and ? ) may be used.
If a model or subcircuit is called up by a device line but that definition was not present
in the netlist, SIMetrix will search for it in files specified using the .LIB control.
SIMetrix will also search for definitions for unresolved parameters specified in
expressions. These are defined using .PARAM (see page 228).
Example
The following control instructs the simulator to search all files with the .mod extension
in c:\Spice Model Library\ for any required subcircuits or device models.
HSPICE Form
.LIB 'filename' entryname
.LIB entryname
and
.ENDL
.LIB calls may be nested as long as they are not recurrent. That is a .LIB call within a
.LIB .ENDL block may not call itself but it may call another block within the same
file. (HSPICE itself does not permit this).
206
Chapter 6 Command Reference
.LIB 'c:\models\fab1\process_a\[Link]' SS
.MODEL
.MODEL modelname modeltype ( param1=val1 [ param2=val2 ]... )
This control specifies a set of model parameters that are used by one or more devices.
.model controls often reside in model libraries.
modelname Model name. Any text string to uniquely identify model. Must
begin with a letter but may contain any legal ASCII character
other than a space and period '.' .
modeltype Model type. See tables below for possible values
param1, param2 etc. Parameter name.
Valid values depend on the model type.
(See “Simulator Devices” on page 27)
val1, val2 etc. Parameter value.
207
Simulator Reference Manual
208
Chapter 6 Command Reference
C Capacitor
CORE Jiles-Atherton core model
CORENH Simple core model
D Diode
LTRA Lossy transmission line
NIGBT IGBT
NJF N-channel JFET
NMF N-channel GaAsFET
NMOS N-channel MOSFET
NPN NPN BJT (Bipolar junction transistor)
PJF P-channel JFET
PMF P-channel GaAsFET
PMOS P-channel MOSFET
PNP PNP BJT
R Resistor
SW Voltage controlled switch
It is possible to define SOA limits within the .MODEL statement. To do this, add one
or more parameters in the following format:
Example
209
Simulator Reference Manual
.NODESET
.NODESET V(node1)=val1 [ V(node2)=val2 ]...
OR
.NODESET node1 val1 [ node2 val2 ]
This control sets an initial guess voltage at the specified node for the dc operating point
solution.
node1, node2 etc. Name of circuit node (or net) to which nodeset is to be applied.
See notes below.
val1, val2 etc. Nodeset voltage to be applied.
Initially nodesets work exactly the same way as initial conditions. The nodeset voltage
is applied via a 1 Ohm (by default but can be changed using NODESETRES option -
see page 215) resistor and the solution is completed to convergence (by any of the
methods). The nodeset is then released and the solution repeated. If the nodeset voltage
is close to the actual solution the convergence of the second solution should be rapid.
Nodesets can be used to force a particular solution for circuits that have more than one
stable state. Consider the following circuit:
5V
V1
1K 1K
R1 R2
4.60195 0.0646829
10k 10k
R5 R6 .nodeset
0
Q2 Q1
Q2N2222 Q2N2222
100k 100k
R3 R4
A nodeset has been applied to the collector of Q1. This has forced Q1 to be on and Q2
to be off. If the nodeset were absent the solution would actually leave both Q1 and Q2
partially on. In real life this would not be stable but it is numerically accurate.
210
Chapter 6 Command Reference
The other application of nodesets is to help convergence for the DC bias point. With
SIMetrix, it is rarely necessary to use nodeset's to find the DC solution of a circuit.
They can, however, be useful for speeding up the operating point analysis for circuits
that have already been solved. You may wish to do this for a Monte-Carlo analysis, for
example. SIMetrix features a method of creating nodesets for this purpose using the
SaveRhs command. See “Using Nodesets” on page 260.
Nodeset's should not be confused with initial conditions. (see “.IC” on page 202).
Initial conditions tie a node to a particular voltage and keep it there throughout the DC
operating point analysis. Nodesets merely suggest a possible solution but do not force
it.
.NOISE
.NOISE inner_sweep_spec [ V ] pos_node [ VN ] neg_node
+ [[ INSRC ] in_source ]
+ [ F frequency ] [SWEEP outer_sweep_spec]
Spice Compatible
.NOISE V(pos_node [, neg_out_node ]) in_source
+ DEC|LIN|OCT num_points start stop interval
This control instructs the simulator to perform a small signal noise analysis.
211
Simulator Reference Manual
Notes
During noise analysis the simulator calculates the total noise measured between
pos_node and neg_node at each frequency point. It also calculates and outputs this
noise referred back to an input specified by in_source. As for all other analysis modes
a DC operating point analysis is carried out first but, unlike AC analysis, the results of
this analysis are not made available. The simulator outputs vectors covering the
contribution from each noise generating device to the total output noise. The names of
these vectors begin with the component reference of the device followed by a suffix to
indicate the source of the noise within the device. A listing of the suffixes is given
below. It is important to note that it is not the noise being generated by each device that
is output but the proportion of that noise that is propagated to the output.
The magnitude of any AC independent voltage or current source on the circuit has no
effect on the results of a noise analysis. Unlike SPICE and earlier versions of SIMetrix,
it is not necessary to specify an AC parameter for the source used for the noise input
source. For the first form shown above, the input source is in fact optional. If it is
omitted the input referred noise will not be calculated.
All noise results are in V/√Hz except input noise referred back to a current source
which is in A/√Hz. In standard SPICE3 the noise values produced for MOS2 and
BSIM3 devices are in V2/Hz. For consistency, these have now been changed to V/√Hz.
The original SPICE3 behaviour can be restored by setting the simulator option
OldMosNoise (see “.OPTIONS” on page 215)
212
Chapter 6 Command Reference
A noise output file may also be created from the front end. Select the command shell
menu Graphs and Data|Create Noise Output File to create a text file with a summary of
noise results. Included is a list of the integrated noise output for every device listed in
order of magnitude. Select Graphs and Data|View Noise Output File to view the file.
Note that this is a front end feature and is not implemented by the simulator.
Examples
Run noise analysis from 100Hz to 1MHz with 25 points per decade. Calculate noise at
node named vout and noise referred back to voltage source vin:
Decade sweep resistor RSource from 100 to 10K with 25 points per decade. Frequency
= 1kHz
213
Simulator Reference Manual
.OP
.OP
This control instructs the simulator to perform a DC operating point analysis. Note that
a DC operating point analysis is carried out automatically for transient (unless the UIC
parameter is specified), AC, DC, transfer function and noise analyses.
DC operating point analysis attempts to find a stable bias point for the circuit. It does
this by first applying an initial guess and then uses an iterative algorithm to converge
on a solution. If it fails to find a solution by this method the simulator then attempts
three further strategies.
For the first, a method known as ‘source stepping’ is employed. For this all voltage and
current sources in the circuit are initially set to near zero and the solution found. The
sources are then gradually increased until they reach their final value.
If this approach fails a second strategy ‘GMIN stepping’ is invoked. This conditions
the solution matrix by increasing the diagonal term such that it is dominant. If large
enough, convergence is virtually guaranteed. If successful then the diagonal term is
reduced and a further solution sought using the previous solution as a starting point.
This procedure is repeated until the diagonal term is returned to its correct value.
Increasing the diagonal term is in a way similar, but by no means identical, to placing a
small resistance at each node of the circuit.
If source stepping fails a final strategy, ‘pseudo transient analysis’ is invoked. This is
the most powerful technique employed and nearly always succeeds. However, it is also
the slowest which is why it is left until last. For more information on DC convergence
see “Convergence and Accuracy” on page 256.
IMPORTANT: It is not necessary to include .OP if other analyses are specified. All
other analysis modes will perform an operating point anyway so including .OP will
simply cause it to be done twice. However, with .NOISE, .TF, .SENS and .PZ the
results of the operating point analysis are not output. If the bias point of the circuit is
required when running one of these analysis modes, a .OP will be needed.
‘OFF’ Parameters
Some semiconductor devices feature the device parameter OFF. If there are devices in
the circuit which specify this parameter, the bias point solution is found in two stages.
In stage 1 the devices with OFF specified are treated as if their output terminals are
open circuit and the operating point algorithm completes to convergence. In stage 2,
The OFF state is then released and the solution restarted but initialised with the results
of stage 1.
The result of this procedure is that OFF devices that are part of latching circuits are
induced to be in the OFF state. Note that the OFF parameter only affects circuits that
have more than one possible DC solution such as bistables. If the OFF parameter is
214
Chapter 6 Command Reference
specified in - say - an amplifier circuit - with a unique solution, the final result will be
the same. It will just take a little longer to arrive at it.
Nodesets
Nodesets work in a similar way to the OFF parameter in that the solution is found in
two stages. In the first the nodeset is applied and the solution found. It is then released
and convergence continues. Nodeset are an aid to convergence and, like the OFF
parameter, can coerce a particular solution if there is more than 1 stable state. See
“.NODESET” on page 210 for details
Initial Conditions
Initial conditions force a particular voltage at a circuit node during bias point solution.
The force is released for any subsequent analysis. See “.IC” on page 202 for more
details.
NOOPINFO If set, the operating point info file is not created for .OP analysis
OPINFO If set, the operating point info file is created for other analyses
as well as .OP. (Does not apply to .SENS - operating point
information is not available for this mode at all)
OPINFOFILE Sets name of file to receive operating point info. Outputs to list
file if this option is not specified.
.OPTIONS
.OPTIONS [ opt1 [=val1]] ...
This control allows the setting of various options specific to the simulator.
215
Simulator Reference Manual
ABSTOL 1p Units = A
The absolute current error tolerance. It
is sometimes desirable to increase this
for circuits that carry large currents
(>1A) to speed the solution and aid
convergence.
ABSTOLMAX 1µ Units = A
ABSTOL selectively relaxed to this
value if needed to allow transient
analysis to continue.
ACCT false Full simulation timing statistics are
generated if this is enabled.
ALLACI false Instructs simulator to save all device
currents in an AC analysis. Usually,
only currents for simple devices are
evaluated and stored. Equivalent to
“.KEEP /allaci”, but unlike .KEEP,
.OPTION values can be defined on the
Run command line.
ANYVERSION false If true, BSIM3 and BSIM4 models will
be unconditionally accepted even if an
invalid version parameter is supplied.
BINDIAG false If enabled, a report about selection of
binned models will be output to the list
file. See “Model Binning” on page 44
BINONTOTALWIDTH false For backward compatibility affecting
BSIM4 models. Multi-fingered BSIM4
devices are binned according to width
per finger. SIMetrix versions 5.3 and
earlier binned according to total width.
Set this option for version 5.3
behaviour.
CHGTOL 1e-14 Units = Coulombs
The absolute charge tolerance.
DCOPSEQUENCE gmin| Operating point strategy sequence
source| order. See “Controlling DC Method
pta Sequence” on page 265 for details
DEFAD 0 Unit = m2
Default value for MOSFET AD device
parameter. Applies to levels 1-3 and
level 49/53. Does not apply to level 8
or Philips MOS9 devices
216
Chapter 6 Command Reference
DEFAS 0 Unit = m2
As DEFAD but for AS parameter
DEFL 100µ Unit = metres
As DEFAD but for L parameter
DEFNRD 0 As DEFAD but for NRD parameter
DEFNRS 0 As DEFAD but for NRS parameter
DEFPD 0 Unit = metres
As DEFAD but for PD parameter
DEFPS 0 Unit = metres
As DEFAD but for PS parameter
DEFW 100µ Unit = metres
As DEFAD but for W parameter
DEVACCT false If true, the simulator will measure load
times for each device type during a
simulator run. This information can be
obtained using the GetDeviceStats()
script function.
DIGMINTIME 1pS Unit = Seconds
Minimum digital resolution. Not yet
fully supported
DISABLESUBCKTMULTIPLIER false If true, the subcircuit multiplier
parameter, M, will be disabled. See
“Subcircuit Instance” on page 110
EXPAND false The netlist with subcircuits expanded
is output to the list file if this is
specified.
EXPANDFILE Only applies if EXPAND also
specified. Specifies a file instead of the
list file to receive the expanded netlist
FASTPOINTTOL 1.0 Value for POINTTOL used during ‘Fast
transient start’. See POINTTOL below.
FASTRELTOL 0.001 Value for RELTOL used during ‘Fast
transient start’
FLUXTOL 1e-11 Unit = [Link]
The absolute flux tolerance for
inductors.
217
Simulator Reference Manual
218
Chapter 6 Command Reference
219
Simulator Reference Manual
220
Chapter 6 Command Reference
221
Simulator Reference Manual
223
Simulator Reference Manual
224
Chapter 6 Command Reference
225
Simulator Reference Manual
226
Chapter 6 Command Reference
227
Simulator Reference Manual
VNTOL 1µ Unit = V
The absolute voltage error tolerance.
Circuits with large voltages present
(>100) may benefit from an increase in
this value. See “Accuracy and
Integration Methods” on page 266
VNTOLMAX 1m Unit = V
VNTOL selectively relaxed to this
value if needed to allow transient
analysis to continue.
WIDTH 80 Number of columns used for list file
output. This may be set to any
reasonable value and not limited to the
choice of 80 or 132 as with SPICE2
WIRETABLE none Define file containing wire table used
for the digital simulator’s wire delay.
See “Wire Delay” on page 281
.PARAM
.PARAM parameter_name [=] parameter_value [parameter_name [=]
parameter_value]...
A constant
OR
Examples
.PARAM Vthresh = 2.4
.PARAM Vthresh = {(Vhigh+Vlow)/2}
.PARAM F0 1k Alpha 1 C1 {2*c2}
.PARAM R1 {2/(2*pi*freq*C1*alpha}
228
Chapter 6 Command Reference
Netlist Order
.PARAM controls that resolve to a constant are order independent; they can be placed
anywhere in a netlist. They can even be placed after another .PARAM expression that
depends on its value (but note this does not apply in subcircuits). .PARAM controls
that are defined as an expression that depends on other .PARAMs also defined as an
expression must be placed in sequential order. For example, the following is OK:
.PARAM C2 {C1*alpha*alpha/4}
.PARAM C1 1n
.PARAM alpha 1
.PARAM R1 {2/(2*PI*F0*C2*alpha}
The first .PARAM depends on alpha and C1 which are defined later in netlist. This is
OK (as long as it is not in a subcircuit) because alpha and C1 are constants. The
fourth .PARAM depends on C2 which is defined as an expression. The definition for
must - and does in the above example - come before the definition of R1. The
following would yield an error as the definition for C2 comes after the definition of
R1:
.PARAM R1 {2/(2*PI*F0*C2*alpha}
.PARAM C1 1n
.PARAM alpha 1
.PARAM C2 {C1*alpha*alpha/4}
Note that .PARAMs inside subcircuits are local to the subcircuit. This is explained in
next section.
Subcircuit Parameters
Parameters may be declared within sub circuits. E.g
.subckt ADevice n1 n2 n3 n4
In the above example, in reference to Vthresh within the subcircuit would use the value
declared by the .PARAM declared inside the subcircuit. That value would not be
available outside the subcircuit definition. Parameters may also be passed to
subcircuits. E.g.
X1 1 2 3 4 ADevice : threshold=2.4
or
Any reference to threshold within the subcircuit definition would use that value.
229
Simulator Reference Manual
.ends
If that subcircuit is called without specifying threshold the default value of 2.4 will
be used. Note that it is not compulsory to declare default values.
.PARAM controls may be appended to the netlist created by the schematic editor. For
information on how to do this, refer to “Adding Extra Netlist Lines” on page 13.
.PARAM in Libraries
.POST_PROCESS
.POST_PROCESS scriptname [arguments]
Invokes the SIMetrix script scriptname at the end of a successful simulation. If present
arguments will be passed to the script as a single string.
scriptname may the name of an embedded file defined using .FILE and .ENDF. For
example, the following will cause the text “Simulation Complete” to be displayed in
the command shell when the run is complete:
.FILE on_complete
Echo "Simulation Complete"
.ENDF
.POST_PROCESS on_complete
For information about the SIMetrix script language, please refer to the SIMetrix script
reference manual.
.PRINT
.PRINT TRAN|AC|DC|NOISE|TF vector|{expression} ...
Instructs the simulator to output selected simulation data to the list file in tabulated
form.
Where:
230
Chapter 6 Command Reference
Notes
A traditional SPICE2 command, this was not supported by SIMetrix until release 4.0.
It is SPICE2 compatible but also supports some additional features:
funcname(nodename)
Differential voltage
funcname(nodename, nodename)
Device current
funcname(device_name)
Where:
231
Simulator Reference Manual
.PRINT controls may be placed inside a subcircuit definition in which case the device
and node names refer to local devices and nodes. Output will be listed for every
instance of the subcircuit.
For transient analysis the results are displayed at the interval specified by the time step
parameter on the .TRAN control. If this is zero or omitted, it defaults to (tstop-tstart)/
50. The data is created by interpolation unless the NORAW option (see page 215) is
specified in which case a time step is forced at the time step interval.
232
Chapter 6 Command Reference
Examples
.PRINT TRAN V(VOUT)
.PRINT TRAN VOUT
.PRINT TRAN V(VPos, VNeg)
.PRINT TRAN {Vpos-VNeg}
.PRINT AC VDB(VOUT)
.PZ
.PZ N1 N2 N3 N4 CUR|VOL POL|ZER|PZ
To view the results of the pole-zero analysis select the command shell menu Graphs
and Data|List Pole-zero results. The poles and zeros will be listed in complex form.
.SENS
.SENS V(nodename [,refnodename])| I(sourcename)
.SETSOA
.SETSOA [ LABEL=label ] [ MODEL=modelname | INST=instname ]
[DEVICE=device] [DERATING=derating] [MEAN]
[ ALLOWUNUSED ] [ ALLOWWILD ]
expr1=( min1, max1[, xwindow1] )
[ expr2=( min2, max2[, xwindow2] ) ... ]
Defines a Safe Operating Area (SOA) specification. If SOA testing is enabled the
simulator will check simulated results against this specification and record any
233
Simulator Reference Manual
violations. See .OPTIONS setting “SOAMODE” on page 226 for details on how to
enable SOA tests.
The results of SOA testing are output to the list file by default and can optionally also
be displayed in the command shell message window, or console window if run in non-
GUI mode. They are also always available via a script function GetSOAResults(). See
.OPTIONS setting “SOAOUTPUT” on page 226 for more details.
234
Chapter 6 Command Reference
Q23#c - current
in collector of
Q23
paramname Parameter
defined using
.PARAM
235
Simulator Reference Manual
#q23#c - current
in collector of
q23
paramname Parameter
defined using
.PARAM
Note that currently the use of V() and I() is not accepted and will
result in an error message being displayed.
min, max Minimum and maximum values respectively. A violation
message will be produced if the value of the associated
expression is less than min or greater than max. Use ‘*’ if the
limit is to be ignored. E.g. (*, 15) will test a maximum value of
15 but the minimum value will not be tested. min and max
values may be scaled using a .OPTIONS setting, see
“SOADERATING” on page 225.
236
Chapter 6 Command Reference
Examples
Test the voltage on the ‘p’ pin of R1. Will fail if it exceeds 0.5V
.setsoa INST=R1 vp=(*,0.5)
Test the current into pin ‘p’ of R3. Fails if it exceeds 0.5mA
.setsoa INST=R3 ip=(*,0.5m)
Test the voltage across R4. Fails if it exceeds 0.85V for at least 100uS. Will be reported
using label “%INST%, high”, which resolves to “R4, high”
.setsoa LABEL="%INST%, high" INST=R4 vd=(*,0.85,100u)
Test the voltage across R4. Fails if it exceeds 0.7V for at least 500uS
.setsoa LABEL="%INST%, low" INST=R4 vd=(*,0.7,500u)
Tests voltage between ‘c’ and ‘e’ pins for all instances of model N1. Fails if voltage
drops below -0.5V or exceeds 25V
.setsoa MODEL=N1 vce=(-0.5,25)
Tests power all devices of type resistor. Fails if this exceeds 0.25W.
.setsoa INST=* ALLOWWILD DEVICE=resistor pow=(*,0.25)
Tests the mean power in instance Q1. Fails if it exceeds “2*bjtderating”. “bjtderating”
must ne defined using a .PARAM statement.
.setsoa LABEL="%INST%, pow(q1)" INST=Q1 MEAN pow=(*,2)
derating=bjtderating
237
Simulator Reference Manual
.ENDS [ subcktname ]
Terminates a subcircuit definition. subcktname may be added for clarity but will be
ignored by SIMetrix.
Subcircuit definitions usually reside in a text file and are read in as libraries. See User's
Manual for further details.
.TEMP
.TEMP temperature
This control sets the default simulation temperature. Some devices can override this on
a per instance basis. Units are degrees centigrade.
.TF
.TF inner_sweep_spec [ V ] pos_out_node [ VN ] neg_out_node
+ [[ INSRC ] in_source ] [ F frequency ] [SWEEP outer_sweep_spec ]
238
Chapter 6 Command Reference
Spice Compatible:
.TF V( pos_out_node [, neg_out_node ]) in_source
This control instructs the simulator to perform a small signal transfer function analysis.
Notes
The SIMetrix transfer function analysis remains syntax compatible with the SPICE
version but is substantially enhanced. The SPICE version performs the analysis at a
single point with frequency = 0. The SIMetrix implementation performs a swept
analysis using the same sweep algorithm used for AC, DC and NOISE.
239
Simulator Reference Manual
Output impedance for voltage out will be called Zout. For a current output, the output
admittance will be calculated and will be named Yout.
If an input source is specified the input impedance will be calculated and called Zin.
Note that although the syntax for .TF retains compatibility with SPICE and earlier
versions of SIMetrix, the output provided is slightly different. Firstly, the data is
complex even if F=0 and secondly the names of the output vectors are different as
detailed above.
Examples
Note that in the above example the '0' in V(Vout, 0) is compulsory. If is omitted, Vin
will be assumed as the reference node.
.TRACE
.TRACE vector_name [vector_name ...] graph_id
Set up a trace. This is graph plot that is updated as the simulation runs.
240
Chapter 6 Command Reference
Note that the AutoAxis feature available for normal plotting also works for Traces. So
if a current and voltage trace are both directed to the same graph, separate axes will be
created for them.
Examples
In the above example a voltage - v1_p - and a current - q1#c - will both be traced on the
same graph. As they have different units, the AutoAxis feature will force the curves to
two different y axes.
Notes
The .TRACE control has now been largely superseded by the .GRAPH control
(page 196) which is much more flexible. However, the .TRACE control is still useful
for specifying multiple traces on a single line. .GRAPH can only specify one signal at
a time.
.TRAN
.TRAN tstop
OR
.TRAN tstep tstop [ tstart [ tmaxstep ]] [ UIC ]
+ [SNAPSTEP sstart sstop sstep]
+ [SNAPSHOT slist]
+ [SNAPMODE=DCOP|SAVESTATE|ALL]
+ [FAST=fast_start] [RTNSTEP=rtnstep [RTNSTOP=rtnstop]
+ [RTNSTART=rtnstart] ] [SWEEP sweep_spec ]
This control instructs the simulator to perform a transient analysis. In this mode the
simulator computes the behaviour of the circuit over the specified time interval. The
circuit's currents and voltages are calculated at discrete time points separated by a
variable time step. This time step is adjusted automatically by the simulator according
to circuit activity. The circuit may contain any number of time varying voltage and
current sources (stimuli) to simulate external signals, test generators etc.
tstep This defines the interval for tabulated results specified by the
.PRINT control. It also defines the output interval for all data if
the NORAW option is specified. If there are no .PRINT controls
in the netlist and NORAW is not being used, this can be set to
zero or omitted altogether as in form 1 above. If set to zero it
defaults to (tstop-tstart)/50
tstep does not control the time step used by the simulator. This is
controlled automatically according to circuit activity.
tstop Stop time. Note that if running in GUI mode, a transient analysis
can be restarted from the front end using the RestartTran
command. See User's Manual for details.
tstart Start time. This is the time at which the storage of transient
analysis outputs commences. It is not the time at which the
analysis begins; this is always zero. tstart is zero if it is omitted.
tmaxstep Maximum time step. The simulator uses the largest time step
possible to achieve the required accuracy but will not increase it
beyond this value. If not specified it is set to (tstop-tstart)/50 .
UIC If specified a DC operating point is not calculated and initial
condition specifications are used instead
fast_start If specified, the simulation will run at reduced accuracy but
higher speed for the time specified by this parameter. The
reduced accuracy is implemented by altering a number of
tolerances and internal parameters. See notes below for more
details.
rtnstep If this parameter is specified, Real Time Noise analysis will be
enabled. Note that this feature is not available with all versions
of the program. rtnstep specifies the step size of the noise
generators. See “Real Time Noise Analysis” on page 243.
rtnstart Specifies time at which real time noise generators are switched
on.
rtnstop Specifies time at which real time noise generators are switched
off.
sstart Time at which snapshot saving begins. See below for
information on snapshots.
sstop Time at which snapshot saving stops. See below for information
on snapshots
sstep Interval between snapshot points. See below for information on
snapshots
slist One or more values defining absolute times at which snap shots
are saved. See below for information on snapshots
DCOP, SAVESTATE, ALL
Snapshot mode.
DCOP: Saves bias point information only.
SAVESTATE: Saves state of circuit for subsequent reload for
small signal analysis
ALL: Both of the above
242
Chapter 6 Command Reference
Fast Start
If the FAST parameter is specified, the simulation will begin with a number of
tolerances and internal parameters altered to speed up the simulation at the expense of
accuracy. Just before the end of the fast start period, these tolerances and parameters
will be gradually restored to their normal values. Fast start is an aid for simulating
circuits such as switching power supplies and oscillators for which the initial start up
period is not of interest but takes a long simulation time. Note that although the fast
start interval can run sometimes as much as twice as quickly as normal, the fact that
accuracy is impaired can mean that the final steady state reached may not be very
accurate. This means that after the fast start period, an additional settling time may be
required for full accuracy to be reached.
Fast start sets the values of POINTTOL and RELTOL according to the value specified
by FASTPOINTTOL and FASTRELTOL respectively.
Snapshots
This feature allows the state of a simulation to be saved at user specified times during a
transient analysis. The states saved can subsequently be reloaded to perform small
signal AC analyses.
This allows the small signal response of a circuit to be examined at any point during a
transient analysis. This is especially useful in situations where a circuit is found to be
unstable in a transient run but this instability cannot be reproduced at the operating
point usually derived for an AC analysis.
The bias point information at the snapshot time may also optionally be saved. This
information is output to the list file.
To initialise a small signal analysis with snapshot data, you must specify the
SNAPSHOT step mode of a multi-step analysis. See “Multi Step Analyses” on
page 189 for details
To use real time noise analysis, the following parameters may be added to the .TRAN
analysis line.
RTNstep Source step size in seconds. This will need to be small enough
to cover the frequency range of interest. The noise magnitude
starts rolling off at about 1/3*stepsize. Default=0 i.e. real time
243
Simulator Reference Manual
Example
.TRAN 0 1m RTNstep=1u RTNstart=500u
Analysis time 1m, RTN step size 1u, real time sources start at 500u. The step size
parameter - i.e. the first parameter on the .TRAN line - must be supplied if real time
noise parameters are to be included. This is only to comply with the syntax rules not
because the step size is needed for any other purpose. In most cases, just set it to zero
as in the above example.
Test Results
To test real time noise and verify it's accuracy we ran a test on a number of circuits
which compare AC noise with real time noise. The procedure was to run real time
noise analysis 50 times then plot the averaged Fourier spectrum. This test was repeated
for different transient run times and step sizes to build a noise spectrum over several
decades. The graph below is the result of one such test. This was carried out on the
BSIM3 buffer circuit provided in one of the examples except that a value for AF - the
flicker noise parameter - was added to the models. As can be seen in the graph below
the real time noise results strongly follow the AC noise results.
Similar tests were performed on circuits containing each of the major noise generating
devices including diodes, BJTs, JFETs, resistors (including its flicker noise parameter)
and also the Philips MOS9 and MEXTRAM devices. All showed results similar to
below with a close similarity between AC noise and real time noise.
These tests were performed using a simple script. This script is called [Link] and
can be found on the installation CD at SCRIPTS\EXAMPLES.
244
Chapter 6 Command Reference
10µ
4µ
2µ 2mS RTNstep=2uS
20uS RTNstep=20nS
1µ 200n RTNstep=100p
400n
AC Noise result
200n
100n
40n
20n
Frequency / Hertz
245
Simulator Reference Manual
Overview
Monte Carlo analysis is a procedure to assess manufacturing yields by repeating
simulation runs with varying applied random variations to component parameters. The
technique is very powerful and usually gives a more realistic result than worst-case
analysis which varies component values to their extremes in a manner which produces
the worst possible result.
SIMetrix offers a level of flexibility for tolerance specification that cannot be found in
other products including some high priced UNIX based applications. It is possible, for
example, for different model parameters to be dependent on a single random variable.
This makes it possible to model the fact that a number of model parameters might be
dependent on a single physical characteristic, for example, the base width of a bipolar
transistor. Of course, lot tolerances are also implemented accounting for the matching
of devices in integrated circuits and other multiple components built onto a common
substrate. However, in many products, lot tolerances can only be applied to the same
type of device. In SIMetrix it is possible to model parametric relationships between
different types of device which occur in integrated circuits but which are rarely taken
into account.
As well as conventional multiple step Monte Carlo analysis, single step Monte Carlo
sweeps may also be performed. These are available for the four swept modes, .AC,
.DC, .NOISE and .TF. For example, a Monte Carlo analysis of the DC offset voltage of
an amplifier can be performed using a single run of .DC using a special sweep mode.
This is dramatically faster than the alternative of repeated .OP runs. This type of
analysis can also be used to analyse the gain of an amplifier at a single frequency using
.AC or .TF or even the noise, again at a single frequency, using .NOISE.
Where:
.analysis_name Dot control for analysis. Either .TRAN, .AC, .DC, .NOISE, .TF
analysis_parameters Specific parameters for that analysis
num_runs Number of runs
246
Chapter 7 Monte Carlo Analysis
Examples
Where:
.analysis_name Dot control for analysis. Either .AC, .DC, .NOISE, .TF
analysis_parameters Specific parameters for that analysis
num_points Number of points in sweep
Examples
Log File
Unless explicitly disabled with the NOMCLOG option, a log file will always be
generated for Monte Carlo analyses. It has the default name of [Link] but this
can be changed with the MCLOGFILE option. Here is an example of an actual output
Run 1: Seed=1226978751
Run 2: Seed=1521158126
247
Simulator Reference Manual
Run 1 Run 2
Device Nom. Value (Dev.) Value (Dev.)
Q10.D1:bv 5.9 5.9185638 (0.314641%) 5.8463766 (-0.90887%)
Q10.Q1:bf 220 283.10907 (28.68594%) 130.81497 (-40.5386%)
Q10.Q1:is 380a 368.7899a (-2.95004%) 219.7988a (-42.1582%)
Q11.D1:bv 5.9 5.9425623 (0.721395%) 5.8262401 (-1.25017%)
Q11.Q1:bf 220 285.27225 (29.66921%) 129.91303 (-40.9486%)
Q11.Q1:is 380a 354.1045a (-6.8146% ) 220.1177a (-42.0743%)
Q12.D1:bv 5.9 5.8957932 (-713ppm ) 5.787891 (-1.90015%)
Q12.Q1:bf 220 280.37304 (27.44229%) 130.28208 (-40.7809%)
Q12.Q1:is 380a 359.6985a (-5.34249%) 225.8706a (-40.5604%)
Q13.D1:bv 5.9 5.9020281 (343.74ppm) 5.8132485 (-1.47036%)
Q13.Q1:bf 220 280.04731 (27.29423%) 129.20488 (-41.2705%)
Q13.Q1:is 380a 367.7199a (-3.2316% ) 222.1358a (-41.5432%)
Q14.D1:bv 5.9 5.9178142 (0.301936%) 5.8096709 (-1.531% )
Q14.Q1:bf 220 276.57192 (25.71451%) 129.93424 (-40.939% )
Q14.Q1:is 380a 364.6015a (-4.05223%) 222.7107a (-41.3919%)
Q4.D1:bv 5.9 5.9398543 (0.675496%) 5.8354342 (-1.09434%)
Q4.Q1:bf 220 277.08078 (25.94581%) 127.82878 (-41.896% )
Q4.Q1:is 380a 362.7751a (-4.53287%) 225.9888a (-40.5293%)
Q7.D1:bv 5.9 5.9281884 (0.47777% ) 5.8421649 (-0.98026%)
Q7.Q1:bf 220 276.66227 (25.75558%) 129.29449 (-41.2298%)
Q7.Q1:is 380a 360.4184a (-5.15304%) 227.0065a (-40.2614%)
Q8.D1:bv 5.9 5.8811702 (-0.31915%) 5.8260238 (-1.25383%)
Q8.Q1:bf 220 280.33672 (27.42578%) 131.98533 (-40.0067%)
Q8.Q1:is 380a 361.0834a (-4.97804%) 218.837a (-42.4113%)
Q9.D1:bv 5.9 5.9001842 (31.215ppm) 5.8517296 (-0.81814%)
Q9.Q1:bf 220 281.41183 (27.91447%) 128.02565 (-41.8065%)
Q9.Q1:is 380a 358.8014a (-5.57857%) 221.6128a (-41.6809%)
The ‘Device’ column provides the name of the device and its model or instance
parameter that is being reported. Q10.D1 is a diode ref D1 inside subcircuit Q1, BV is
the model parameter.
The ‘Nom’ column displays the nominal value for that parameter.
Two columns are listed for each run. ‘Value’ is the actual value of the parameter and
‘(Dev.)’ is the deviation from the nominal.
The ‘Seed’ values displayed for each run at the top are the values used to seed the
random number generator. These can be used to set the SEED option in order to repeat
a particular random set. See below for more details.
248
Chapter 7 Monte Carlo Analysis
.OPTIONS SEED=seed_value
For example if you wanted to repeat run 2 in the above example you would add this
line:
.OPTIONS SEED=1521158126
The first run of each Monte Carlo analysis will use the same random values as run 2
above. Note this assumes that only changes in values are made to the circuit. Any
topology change will upset the sequence.
Specifying Tolerances
Overview
Tolerances for Monte Carlo analysis may be specified by one of the following
methods:
Distribution Functions
To specify Monte Carlo tolerance for a model or device parameter, define the
parameter using an expression (see “Using Expressions” on page 29) containing one of
the following 12 functions:
249
Simulator Reference Manual
The logarithmic versions are included for compatibility with release 3.1 and earlier but
are nevertheless useful for some parameters which are logarithmic in nature such as the
IS parameter for PN junctions.
The graphs below show the characteristics of the various distributions. The curves
were plotted by performing an actual Monte Carlo run with 10000 steps.
WC
4
WCE
0
350
GaussE
300
UnifE
250 Gauss
200
Unif
150
100
50
0
0 0.5 1 1.5 2
V 500mV/div
250
Chapter 7 Monte Carlo Analysis
Examples
Lot Tolerances
The lot versions of the functions specify a distribution to be applied to devices whose
tolerances track. These functions will return the same random value for all devices that
reference the same model.
Alternatively, a device can be given a lot value as was required with earlier versions of
SIMetrix. Devices must have the same lot value, and also reference the same model, in
order to track. This allows, for example, two or more chips using the same process to
be simulated together without having to rename the models.
Examples
Specify 50% uniform lot tolerance and 5% gaussian device tolerance for BF parameter
Here is an abbreviated log file for a run of a circuit using 2 devices referring to the
above model:
Run 1 Run 2
Device Nom. Value (Dev.) Value (Dev.)
Q1:bf 180 93.308486 (-48.162% ) 241.3287 (34.0715% )
Q2:bf 180 91.173893 (-49.3478%) 245.09026 (36.16126%)
Run 3 Run 4
Device Nom. Value (Dev.) Value (Dev.)
Q1:bf 180 185.95824 (3.310133%) 210.46439 (16.92466%)
Q2:bf 180 190.8509 (6.02828% ) 207.04202 (15.02335%)
For the four runs BF varies from 91 to 245 but the two devices never deviate from each
other by more than about 2.7%.
Notes
The tracking behaviour may not be as expected if the model definition resides within a
subcircuit. When a model is defined in a subcircuit, a copy of that model is created for
each device that calls the subcircuit. Here is an example:
251
Simulator Reference Manual
In the above, XQ100 and XQ101 will not track. Two devices referring to N1 inside the
subcircuit definition would track each other but different instances of the subcircuit
will not. To make XQ100 and XQ101 track, the definition of N1 should be placed
outside the subcircuit. E.g.
.ENDS
.MODEL N1 NPN IS=1.5E-15 BF={180*GAUSS(0.05)*UNIFL(0.5)}
Each of the distribution functions takes 1 or 2 arguments. The first argument is the
tolerance while the second is an optional key value. The key is an arbitrary number -
preferably an integer - which, in effect, names a random variable for which the results
of that distribution function will be based. Another call to the same distribution
function in the same model and with the same key value, will also be based on the
same random variable and return the same value for each Monte Carlo step. The key
make it possible to accommodate parameters that tend to track each other possibly
because they depend on the same physical characteristic of the device.
Example
Suppose the BF and TF parameters of a BJJT tend to track each other. That is a 50%
increase in BF tends to be accompanied by a 50% increase in TF (there is no physical
basis for this; it's just an example). The following model definition would implement
this:
For all devices using that model, BF and TF will always have a fixed relationship to
each other even though each parameter can vary by +/-50% from one device to the
next.
Here is the log of a run carried out on a circuit with two of the above devices:
Run 1 Run 2
Device Nom. Value (Dev.) Value (Dev.)
Q1:bf 180 226.52869 (25.84927%) 117.2733 (-34.8482%)
Q1:tf 10p 12.58493p (25.84927%) 6.515184p (-34.8482%)
Q2:bf 180 179.58993 (-0.22782%) 164.21785 (-8.76786%)
Q2:tf 10p 9.977218p (-0.22782%) 9.123214p (-8.76786%)
Notice that the BF and TF parameters always deviate by exactly the same amount for
each device. However, the two devices do not track each other. If this were needed, the
lot versions of the functions could be used instead. E.g.
252
Chapter 7 Monte Carlo Analysis
Run 1 Run 2
Device Nom. Value (Dev.) Value (Dev.)
Q1:bf 180 104.57858 (-41.9008%) 93.855425 (-47.8581%)
Q1:tf 10p 5.809921p (-41.9008%) 5.21419p (-47.8581%)
Q2:bf 180 104.57858 (-41.9008%) 93.855425 (-47.8581%)
Q2:tf 10p 5.809921p (-41.9008%) 5.21419p (-47.8581%)
The key mechanism described above only works for parameters within the same
model. If you wish to define a fixed relationship between parameters of different
models then you can define a random variable using .PARAM.
Note that .PARAM values used for this purpose should be defined at the top level i.e.
not in a sub-circuit. If defined in a sub-circuit they will be local to that sub-circuit so
each instance of the sub-circuit will use its own random variable.
R1 1 2 1K TOL=0.05
The above resistor will have a tolerance of 5% with a gaussian distribution by default.
This can be changed to a uniform distribution by setting including the line:
.OPTIONS MC_ABSOLUTE_RECT
in the netlist.
Multiple devices can be made to track by specifying a LOT parameter. Devices with
the same LOT name will track. E.g.
R1 1 2 1K TOL=0.05 LOT=RES1
R2 3 4 1k TOL=0.05 LOT=RES1
Deviation between tracking devices can be implemented using the MATCH parameter.
E.g.
R1 and R2 will have a tolerance of 5% but will always match each other to 0.1%.
MATCH tolerances are gaussian by default but can be changed to uniform by
specifying
253
Simulator Reference Manual
.OPTIONS MC_MATCH_RECT
If using device tolerance parameters, note that any absolute tolerance specified must be
the same for all devices within the same lot. Any devices with the same lot name but
different absolute tolerance will be treated as belonging to a different lot. For example
if a circuit has four resistors all with lot name RN1 but two of them have an absolute
tolerance of 1% and the other two have an absolute tolerance of 2%, the 1% devices
won't be matched to the 2% devices. The 1% devices will however be matched to each
other as will the 2% devices. This does not apply to match tolerances. It's perfectly OK
to have devices with different match tolerances within the same lot.
Tolerance Models
Overview
Tolerance models are an alternative method of applying tolerances to device models to
the distribution function method described in an earlier section. The distribution
function method is in general more flexible and is recommended for most applications.
However, the tolerance model method has some advantages as follows:
Definition
modelname must be the same name as the normal model for the device while
modeltype must be the same type. So for example a tolerance model for a Q2N2222
transistor might be:
This will vary the BF parameter over a +/- 50% range for all BJTs referring to the
Q2N2222 model. The above model only specifies one parameter but you can place any
parameter specified for that device in a tolerance model.
For MOSFETs the level number must be included with the tolerance model otherwise
the model will be ignored.
Important note
Note that tolerances will only be applied to parameters explicitly specified in the base
model for the device. Tolerances will not be applied to default values. If the base
model for the Q2N2222 device in the above example is:
254
Chapter 7 Monte Carlo Analysis
The BF parameter in the tolerance model would not be used as it is not specified in the
base model. If the base model was modified to:
To match devices with tolerances defined using a tolerance model, specify the LOT
parameter on the device line. E.g.
Q1 1 2 3 0 Q2N2222 LOT=lot1
Q2 4 5 6 0 Q2N2222 LOT=lot1
In the above example the BF parameter for Q1 and Q2 will always be the same.
modelname must be the same name as the base model for the device while modeltype
must be the same type. So for example a matching tolerance model for a Q2N2222
transistor might be:
Note that the components will only be matched if they all refer to the same model. Any
components with the same lot name but referring to a different model treated as if they
belong to a different lot.
255
Simulator Reference Manual
Overview
In transient and DC analyses, an iterative method is used to analyse the circuit.
Generally, iterative methods start with an initial guess for the solution to a set of
equations and then evaluate the equations with that guess. The result of that evaluation
is then used to derive a closer estimate to the final solution. This process is repeated
until a solution is found that is within the error tolerance required. SIMetrix and SPICE
use a technique known as Newton-Raphson1 iteration which usually converges
extremely rapidly. However, there are occasions when this process is either
unreasonably slow or fails altogether. Under these circumstances the simulation will
abort.
SIMetrix offers superior convergence to all other products in its price bracket and
possibly all PC based simulators generally. SIMetrix passes 100% of the circuits in the
CircuitSim90 benchmark suite compared with about 60% for unmodified SPICE3.
This performance has been achieved as a result of the following developments to the
simulator core.
• Automatic pseudo transient analysis algorithm for operating point solution. See
below for details.
• Enhancements to GMIN and source stepping algorithms to use a variable step
size. (The standard SPICE3 variants use a fixed step).
• Junction GMIN DCOP Convergence Method
• Proprietary enhancements to transient analysis algorithm.
• Improvements to device models to remove discontinuities.
With these improvements, convergence failure with SIMetrix is extremely rare.
However, it is impossible to eliminate this problem altogether and there still remain
some circuits which fail.
In this chapter we explain some of the causes of non-convergence and some of the
strategies SIMetrix uses to prevent it. Also explained is what to do in the rare event
that convergence fails.
DC Operating Point
Overview
As explained in “DC Operating Point Algorithms” on page 263 SIMetrix has four
different algorithms at its disposal to solve the DC operating point. For this analysis
mode to fail, and assuming the default settings are being used, all four algorithms must
fail.
1. Sir Isaac Newton 1674-1721 and Joseph Raphson 1648-1715. This algorithm has been
around somewhat longer than circuit simulators!
256
Chapter 8 Convergence and Accuracy
The following sections describe the possible reasons for failure of each mode and what
can be done about them.
1. Check your circuit. Check that all components are the correct way around and
have the correct values. Make sure you haven't used 'M' when you meant 'Meg'.
2. Refer to section “Source and GMIN Stepping” and see if GMIN or source
stepping can be made to work.
3. Refer to section “Pseudo Transient Analysis” to get pseudo transient analysis
converging.
4. Contact technical support. We don't officially offer a convergence fixing service
and reserve the right to decline help. However, we are always interested in non-
converging circuits and usually we will look at your circuit to see if we can
identify the problem.
There are a few options you can set to encourage these modes to converge. These are
257
Simulator Reference Manual
The reasons why this may happen are the same as for transient analysis and are
covered in “Fixes for Transient Non-convergence” on page 262.
Circuit oscillation
You will see the message
If 1. then you must disable the oscillator during the DC solution. You can do this by
one of the following methods:
1. Apply an initial condition to a point on the circuit that will break the oscillator's
feedback loop.
2. Use the capacitor/inductor PTAVAL parameter to change its value during pseudo
transient analysis. This parameter can be applied to a component or components
that form part of the oscillator. In the netlist the parameter is applied at the end of
the component line. E.g for a capacitor:
In the above a 1.2n capacitor will take the value of 1 farad during pseudo
transient analysis.
258
Chapter 8 Convergence and Accuracy
If the circuit does not have any intentionally unstable elements then diagnosis of the
problem is a little harder. Firstly, you need to rule out 4. above as a possible cause. As
explained in “DC Operating Point Algorithms” on page 263, SIMetrix adds its own
capacitors to your circuit during pseudo transient analysis in order to overcome
potential problems with regenerative action. The problem is that these added capacitors
can themselves make a circuit unstable. So the first thing to try is to inhibit the addition
of these capacitors. To do this, add the following line to the netlist (See “Adding Extra
Netlist Lines” on page 13 to find out how to add to a schematic).
.OPTIONS PTACONFIG=1
If this fails, then life gets even more complicated! If it fails with the message
then it is very likely that the circuit is oscillating or entering an unstable region. If a
different message is displayed go to “The circuit doesn't oscillate but still doesn't
converge” below. To allow diagnosis of what is happening SIMetrix provides a method
of analysing the circuit during the pseudo transient ramp. By default, no data is output
during pseudo transient analysis but this can be changed as follows:
.OPTIONS PTAOUTPUTVECS
3. Now run the simulation for a while or until it stops.
You can now probe the circuit in the normal way to see what is oscillating. Once the
oscillation has been fixed, you should be able to simulate the circuit successfully.
As there are no added capacitors, there is a risk that pseudo transient analysis can fail
for the same reason that GMIN and source stepping sometimes fail. In this case you
will get the message:
If this happens your only recourse is the final desperation measure. This is to repeat the
simulation with all valid values of ptaConfig from 2 to 15. (You can skip 7 as this is the
default). ptaConfig is a simulator option that controls some of the parameters used in
pseudo transient analysis. Most circuits pass for all settings but a few are more
selective.
259
Simulator Reference Manual
You can specify pseudo transient analysis to be accepted unconditionally at some time
after it has started. This is often a good solution to problems caused by circuit
oscillation especially if the oscillation is small and unintended. To accept pseudo
transient unconditionally, set the option:
.OPTIONS PTAACCEPTAT=time
Specify a time value that is adequate for the circuit state to settle as much as possible.
If it does work, however, this is usually the fastest method and this can be put to good
use for repetitive runs e.g. Monte Carlo. It can be made to succeed using nodesets (see
next section) and with a wisely chosen selection it is possible to speed up repetitive
runs. Assuming one of the other methods does complete to a solution, the best way of
creating nodesets is by using the SaveRHS command. This is explained in the next
section.
Using Nodesets
Nodesets have two uses, one to aid convergence and the other to bias the solution in
circuits that have more than one stable state.
Initially nodesets work exactly the same way as initial conditions. The nodeset voltage
is applied via a 1 Ohm (by default) resistor and the solution is completed to
convergence (by any of the methods). The nodeset is then released and the solution
repeated. If the nodeset voltage is close to the actual solution the convergence of the
second solution should be rapid.
This will save to the file [Link] a .nodeset control specifying the solution at
each node.
260
Chapter 8 Convergence and Accuracy
3. Paste the contents of [Link] to the netlist. Alternatively, include the file using
the .INC control. (See “Adding Extra Netlist Lines” on page 13 to find out how
to add to a schematic).
If you now repeat the DC analysis, you should now find that the solution is very rapid.
Depending on the nature of your circuit, you may also find that the solution is found
easily even if you modify the circuit. This is not, however, guaranteed.
Transient Analysis
1. There is no solution to the circuit within the numerical range of the computer
(approx. +/- 10308).
2. One or more device models contains a discontinuity or (less of a problem) a
discontinuity in its first derivative.
3. The circuit has a discontinuity caused by undamped regenerative action.
4. The solution matrix is ill-conditioned and the machine does not have sufficient
accuracy to solve it to the required tolerance.
1. and 3. above are circuit problems. A trivial example of 1. is a PN junction biased by
a large voltage. Without any series resistance, the voltage does not need to be very high
for the current in the device to exceed the range of the machine. An example of 3. is a
bistable circuit where the device capacitances are not modelled. The action of
switching state would theoretically occur in zero time, a situation the simulator cannot
be guaranteed to handle. Note also that negative valued components can cause 1. or 3.
to occur.
2. is usually a software problem that the user can do little about. However, we are not
aware of any discontinuities in the standard devices and have removed the ones we
have found in the original SPICE3 code. It is possible to create a device with the
arbitrary source that contains discontinuities. If your circuit has any of these devices in
it you should check the equations for discontinuous behaviour. In particular the
functions SGN() and U() are discontinuous and should be avoided.
4. is probably the most common cause of convergence failure in most other SPICE
products but is rare in SIMetrix. This is because we have done an extensive amount of
work to eradicate the problem.
Nevertheless we still occasionally see circuits that fail. Usually they have one, or more
likely, a combination of the following:
261
Simulator Reference Manual
By ‘very’ in the above we mean extreme. 1000V is not a very large voltage but
1000MV volts is. 1mΩ is not particularly small but 1pΩ is. If your circuit has any
extreme values, try and moderate them. Don't use non-physical values of components
if you can avoid it.
DC Sweep
DC sweep is basically a repeated DC operating point and so the issues relating to that
mode also apply to DC sweep. However, if you are sweeping a voltage or current
source, then an altogether better way of dealing with DC sweep problems is to simulate
the DC sweep using transient analysis with a slow ramp.
Using transient analysis to perform DC sweep also resolves problems that can occur
with circuits that have regions where there is more than one stable state e.g. bistables
or schmitt triggers. Consider sweeping the input voltage of a schmitt trigger circuit.
When the input voltage is between the lower and upper thresholds, the circuit has two
stable states and the DC algorithm could find either of them. As each step in a DC
analysis is initialised with the previous step, it will usually find the correct solution but
this is not guaranteed. This means that the output could change state even though the
input has not passed either threshold. This problem doesn't occur in transient analysis
as in this mode the circuit is running as it would in real life.
262
Chapter 8 Convergence and Accuracy
1. Junction initialised iteration. This is our name for the standard algorithm
sometimes simply known as ‘DC Iteration’.
2. Source stepping.
3. Diag GMIN stepping.
4. Junction GMIN stepping.
5. Pseudo transient analysis.
These are described in the following sections.
Source Stepping
Source stepping. This method - as with all the remaining methods to be described -
belong to a class of convergence strategies known as continuation methods. These all
work by repeating the iterative process while gradually varying some circuit parameter.
The circuit parameter is chosen so that at its start value the solution is known or trivial
and at its final value the solution is the operating point that is required. In source
stepping, all the circuit's power sources are gradually ramped up from zero to their
final value. While at zero, the circuit's solution is trivial; all the voltages and currents
are zero. At the first step, the supplies might be ramped up to 10% of their maximum
and the solution iterates to convergence. Then the supplies are increased and the
process is repeated. At each step the solution is initialised with the previous solution
which, if the steps are small, will be close to the new solution that is required and
convergence will therefore be relative easy to achieve.
This method is quite effective and is included in all SPICE based simulators including
those derived from SPICE2. However the SPICE versions use a fixed step size,
whereas in SIMetrix (since version 2.0), the step size is variable so if a step fails, the
step size is reduced and it tries again.
However, even with an arbitrarily small step size, this method can fail if the circuit
contains some kind of regenerative action. As the supplies are ramped it is possible for
the circuit to abruptly switch from one state to another as in a schmitt trigger. Although
circuits such as schmitt triggers do give difficulty, even circuits that do not have such
elements can also give trouble.
263
Simulator Reference Manual
This method is also effective and sometimes works for circuits for which source
stepping fails. It is included with all SPICE3 derived simulators but, as with source
stepping, the SPICE variants use a fixed step while SIMetrix uses a variable step.
GMIN stepping suffers from the same problems as source stepping but not always with
the same circuits so it always worth trying both approaches.
The received wisdom has always been that GMIN stepping is more effective than
source stepping. This has not however been borne out by our own research which has
shown the source stepping converges more often and more quickly. For this reason,
SIMetrix attempts source stepping before GMIN stepping. This is the reverse of
SPICE3 and its derivatives.
The above assumes, however, that the circuit is well modelled with all reactive
elements correctly specified. With integrated circuit design this is usually the case, but
for discrete circuits frequently is not. Opamp macro models, for example, consist of
many idealised elements that are not always damped by reactive elements. Without
such damping, pseudo transient analysis can fail for the same reason as source and
GMIN stepping. So, SIMetrix automatically adds additional capacitance to the circuit
to prevent this situation from arising.
264
Chapter 8 Convergence and Accuracy
The end result is a convergence strategy that nearly always succeeds. However, it is
generally the slowest method so in SIMetrix it is, by default, attempted last.
Although pseudo transient analysis is very powerful it is not completely infallible. Its
Achilles Heel is oscillation. Because a transient analysis is being performed it is
possible for the circuit to oscillate. If this happens, pseudo transient analysis can end
up going on forever without ever finding a stable solution. In our experience, however,
this is actually rare. A number of steps are taken to damp oscillators so that even
circuits that are designed to oscillate still succeed with pseudo transient analysis.
will force pseudo transient analysis to be attempted first followed by GMIN stepping.
Junction initialised iteration and source stepping won't be attempted at all.
If you get this error, you must first check your circuit. The simulator will tell you
where the problem is either as a node name or a device name.
If you think you circuit is OK then it is possible that the error is occurring because
during the course of iterating to a solution, some node voltages or device currents
reached very high values and the limited accuracy of the machine made it seem that the
matrix was singular. This can happen with junction initialised iteration. If this is the
case, try setting the option:
.OPTIONS NOOPITER
This will inhibit this mode and the simulator will start with source stepping. This
method, and the others that follow, don't generally suffer from this problem.
265
Simulator Reference Manual
Note that the simulation will abort if a singular matrix is detected in junction initialised
iteration. It will not automatically attempt the other methods. This is because, by far
the most common reason for singular matrices is circuit error.
is not actually due to non-convergence. It means that, because of the nature of your
circuit, to achieve the required accuracy, a time step smaller than the minimum
permissible was needed. This can happen if you perform a very long transient analysis
on a circuit with relatively short time constants. If you get this message, you can try
reducing the minimum time step with the MinTimeStep simulator option. The default
value for MinTimeStep is 1e-9*max time step and the max time step defaults to (Tstop-
Tstart)/50 where Tstop and Tstart are respectively the stop and start times of the
transient analysis. This option can be set in the user interface. See “Time Step” on
page 175 of the User’s Manual
A Simple Approach
The accuracy of the simulation can be a complicated subject. So we will start with
simple advice. If you wish to increase the accuracy of a simulation, reduce the value of
RELTOL. This defaults to 0.001 so to reduce it to say 1e-5 add the following line to the
netlist:
.OPTIONS RELTOL=1e-5
(The setting of RELTOL is supported by the front end. See User's Manual for details.)
The simulation will run slower. It might be a lot slower it might be only slightly slower.
In very unfortunate circumstances it might not simulate at all and fail with a
convergence error.
Conversely, you can speed up the simulation by increasing RELTOL, but we don't
recommend it. Increasing RELTOL beyond its default value often degrades accuracy to
an unacceptable level.
Iteration Accuracy
For DC and transient modes, the simulator essentially makes an approximation to the
true answer. For DC analysis an iterative method is used to solve the non-linear
equations which can only find the exact answer if the circuit is linear. The accuracy of
the result for non-linear circuits is determined by the number of iterations; accuracy is
improved by performing more iterations but obviously this takes longer. In order to
266
Chapter 8 Convergence and Accuracy
control the number of iterations that are performed an estimate is made of the error by
comparing two successive iterations. When this error falls below a predetermined
tolerance, the iteration is deemed to have converged and the simulator moves on the
next step or completes the run. Most SPICE simulators use something similar to the
following equations to calculate the tolerance:
For voltages:
TOL = RELTOL * instantaneous_value + VNTOL
For currents:
TOL = RELTOL * instantaneous_value + ABSTOL
"instantaneous_value" is the larger of the current and previous iterations. VNTOL has
a default value of 1µV so for voltages above 1mV, RELTOL dominates. ABSTOL has
a default of 1pA so for currents above 1nA, RELTOL dominates.
The above method of calculating tolerance works fine for many circuits using the
default values of VNTOL and ABSTOL. However, SPICE was originally designed for
integrated circuit design where voltages and currents are always small, so the default
values of ABSTOL and VNTOL may not be appropriate for - say - a 100V 20A power
supply. Suppose, that such a PSU has a current that rises to 20A at some point in the
simulation, but falls away to zero. When at 20A it has a tolerance of 20mA but when it
falls to zero the tolerance drops to ABSTOL which is 1pA. In most situations the 1pA
tolerance would be absurdly tight and would slow down the simulation. Most other
SPICE products recommend increasing ABSTOL and VNTOL for PSU circuits and
indeed this is perfectly sound advice. However, In SIMetrix the tolerance equation has
been modified to make this unnecessary in most cases. Here is the modified equation:
For voltages:
TOL = RELTOL * MAX( peak_value * POINTTOL, instantaneous_value ) + VNTOL
For currents:
TOL = RELTOL * MAX( peak_value * POINTTOL, instantaneous_value ) +
ABSTOL
peak_value is the magnitude of the largest voltage or current encountered so far for the
signal under test. POINTTOL is a new tolerance parameter and has a default value of
0.001. So for the example we gave above, peak_value would be 20 and when
instantaneous_value falls to zero the tolerance would be:
20µA is a much more reasonable tolerance for a signal that reaches 20A.
The above method has the advantage that it loosens the tolerance only for signals that
actually reach large values. Parts of a circuit that only see small voltages or currents -
such as the error amplifier of a servo-controlled power supply - would still be
simulated with appropriate precision.
267
Simulator Reference Manual
Iteration control reduces the time step by a factor of 8 if convergence to the specified
accuracy cannot be achieved after 10 iterations. (10 by default but can be changed with
ITL4 option). If convergence is successful, the time step is doubled. As this
mechanism is controlled by the success or otherwise of the iteration it is also affected
by the same tolerance options described in the above section about iteration accuracy.
The theory behind this method is beyond the scope of this manual but essentially it
controls the accuracy of the numerical integration method used to model reactive
devices such as inductors and capacitors. These devices are governed by a differential
equation. It is not possible in a non-linear circuit to solve these differential equations
exactly so a numerical method is used and this - like the iterative methods used for
non-linear devices - is approximate. In the case of numerical integration, the accuracy
is determined by the time step. The smaller the time step the greater the accuracy but
also the longer the simulation time.
TRTOL is a dimensionless value and has a default value of 7. It affects the overall
accuracy of the numerical integration without affecting the precision of the iteration.
So reducing TRTOL will increase the accuracy with which capacitors and inductors are
simulated without affecting the accuracy of the iterative method used to simulate non-
linear elements. However, in order for the simulation of reactive devices to be
accurate, the non-linear iteration must also be accurate. So, reducing TRTOL much
below unity will result in a longer simulation time but no improvement in precision.
Increasing TRTOL to a large value, however, may be appropriate in some
circumstances where the accuracy to which reactive devices are simulated is not that
important. This may be the case in a circuit where there is an interest in the steady state
but not in how it was reached.
268
Chapter 8 Convergence and Accuracy
The default LTE time step algorithm used in SIMetrix is slightly different to that used
by standard SPICE. The standard SPICE variant is also affected by ABSTOL and
VNTOL. The SIMetrix algorithm controls the time step more accurately and as a result
offers better speed-accuracy performance.
This places a limit on the amount of change allowed in a single timestep for each node.
This limit is governed by the option setting MAXVDELTAREL and
MAXVDELTAABS and is included to overcome a problem that can cause false
clocking of flip-flops. The limit can be calculated from:
MAXVDELTAABS + MAXVDELTAREL*(node_voltage)
where node_voltage is the larger of the node voltage at current time step and the node
voltage at the previous time step. The above is calculated for all voltage nodes. If the
change in voltage exceeds this limit, the time step is cut back.
Setting MAXVDELTAREL to a value of about 0.4 will usually fix problems of false
clocking in flip-flops. However, this will slow down the simulation slightly and it is
not recommended that this setting is used in circuits that do not contain flip-flops.
Accuracy of AC analyses
The small-signal analysis modes .AC, .TF and .NOISE do not use approximate
methods and their accuracy is limited only by the precision of the processor's floating
point unit. Of course the DC operating point that always precedes these analysis modes
is subject to the limitations described above. Also, the device models used for non-
linear devices are also in themselves approximations. So these modes should not be
seen as exact but they are not affected by any of the tolerance option settings.
RELTOL
Default = 0.001. This affects all DC and transient simulation modes and specifies the
relative accuracy. Reduce this value to improve precision at the expense of simulation
speed. We do not recommend increasing this value except perhaps to run a quick test.
In any case, you should never use a value larger than 0.01.
POINTTOL
269
Simulator Reference Manual
ABSTOL
Default = 1pA. This is an absolute tolerance for currents and therefore has units of
Amps. This basically affects the tolerance for very low values of current. Sometimes
worth increasing to resolve convergence problems or improve speed for power circuits.
VNTOL
TRTOL
Default = 7. This is a relative value and affects how accurately charge storage elements
are simulated. Reduce it to increase accuracy of reactive elements but there is no
benefit reducing below about 1.0. In circuits where there is more interest in the steady
state rather than how to get there, simulation speed can be improved by increasing this
value.
CHGTOL
Default = 1e-14. Minimum tolerance of capacitor charge. Some convergence and speed
improvement may be gained by increasing this for circuits with large capacitors.
Generally recommended to leave it alone.
FLUXTOL
The METHOD option can be set to TRAP ( trapezoidal - the default) or GEAR. Gear
integration can solve a common problem whereby the solution seems to oscillate
slightly. An example is shown below.
270
Chapter 8 Convergence and Accuracy
1: :q1#b 2: tran2:q1#b
6.5
5.5
5
µA
4.5
3.5
Time/µSecs 200nSecs/div
The grey curve was simulated with the default trapezoidal integration method whereas
the black used Gear integration. Note that gear integration introduces a slight
overshoot. This is a common characteristic. To find out whether such overshoots are a
consequence of the integration or are in fact a real circuit characteristic, you should
simulate the circuit with much smaller values of RELTOL (see above). It is also
suggested that you switch back to trapezoid integration when using tight tolerances;
the oscillating effect shown above will vanish if the tolerance is tight enough.
Note, you should not use Gear integration if you are simulating strongly resonant
circuits such as oscillators. Gear integration introduces a numerical damping effect
which will cause resonant circuits to decay more rapidly than they should. For
example:
271
Simulator Reference Manual
20
10
-10
-20
-30
20
10
-10
-20
-30
0 2 4 6 8 10
Time/µSecs 2µSecs/div
The above curves are the result of simulating a simple LC circuit that is completely
undamped. The top trace was the result of Gear integration and the bottom, trapezoidal.
The bottom curve is correct and agrees with theory. The top curve is inaccurate. If the
analysis was done with Gear integration but with a smaller value of RELTOL, the
damping effect would be less, so for all methods the result is ultimately accurate if the
tolerance is made small enough. But trapezoidal gives accurate results without tight
values of RELTOL.
ORDER option
This defaults to 2 and in general we recommend that it stays that way. Setting it to 1
will force Backward Euler to be used throughout which will degrade precision without
any speed improvement. It can be increased up to a value of 6 if METHOD=GEAR but
we have not found any circuits where this offers any improvement in either speed or
precision.
272
Chapter 9 Digital Simulation
Overview
As well as an analog simulator, SIMetrix incorporates an event driven digital simulator
tightly coupled to the analog portion. This system can rapidly and accurately simulate
mixed signal circuits containing both analog and digital components. Of course, an
analog only simulator can simulate a mixed signal circuit using digital models
constructed from analog components, but this approach is slow. The advantage of this
mixed-mode approach is that it is dramatically faster, typically in the order of 100
times for pure digital circuits.
The SIMetrix mixed mode simulator is based on the XSPICE system developed by the
Georgia Technical Research Institute. Although based on XSPICE, SIMetrix features
many enhancements over the original system. See “Enhancements over XSPICE” on
page 297 for details of these improvements.
If you only use digital models supplied in the device library, then you don't need to
know much about the digital simulator in order to use it. Just select the devices you
need from the parts browser and simulate in the normal way. This chapter describes
some of the inner workings of the simulator including how it interfaces to the analog
system. More importantly, perhaps, this chapter also describes how you can design
your own digital models.
Logic States
The digital simulator is described as ‘12-state’ which means that a digital signal can be
in 1 of 12 states. These 12 states are combined from 3 levels and 4 strengths as follows:
HIGH STRONG
LOW RESISTIVE
UNKNOWN HI-IMPEDANCE
UNDETERMINED
Logic levels HIGH and LOW are self-explanatory. UNKNOWN means the signal
could be either HIGH or LOW but which is not known at this stage. The start up state
of a flip-flop is an example of an UNKNOWN state. Strength refers to the driving
force behind the signal. STRONG is the highest with HI-IMPEDANCE the lowest. It
is used to resolve conflicts when two outputs are connected together. For example
consider a LOW-RESISTIVE signal (as possessed by a pull-down resistor) connected
to a HIGH-STRONG signal There is a conflict between the two logic levels but as they
are different strengths, the stronger wins and therefore the resulting level is HIGH.
273
Simulator Reference Manual
0S 1S XS 0R 1R XR 0Z 1Z XZ 0U 1U XU
0S 0S XS XS 0S 0S 0S 0S 0S 0S 0S XS XS
1S XS 1S XS 1S 1S 1S 1S 1S 1S XS 1S XS
XS XS XS XS XS XS XS XS XS XS XS XS XS
0R 0S 1S XS 0R XR XR 0R 0R 0R 0U XU XU
1R 0S 1S XS XR 1R XR 1R 1R 1R XU 1U XU
XR 0S 1S XS XR XR XR XR XR XR 1U XU XU
0Z 0S 1S XS 0R 1R XR 0Z XZ XZ 0U XU XU
1Z 0S 1S XS 0R 1R XR XZ 1Z XZ XU 1U XU
XZ 0S 1S XS 0R 1R XR XZ XZ XZ XU XU XU
0U 0S XS XS 0U XU XU 0U XU XU 0U XU XU
1U XS 1S XS XU 1U XU XU 1U XU XU 1U XU
XU XS XS XS XU XU XU XU XU XU XU XU XU
0S = LOW-STRONG
1S = HIGH-STRONG
XS = UNKNOWN-STRONG
0R = LOW-RESISTIVE
1R = HIGH-RESISTIVE
XR = UNKNOWN-RESISTIVE
0Z = LOW-HI-Z
1Z = HIGH-HI-Z
XZ = UNKNOWN-HI-Z
0U = LOW-UNDETERMINED
1U = HIGH-UNDETERMINED
XU=UNKNOWN-UNDETERMINED
274
Chapter 9 Digital Simulation
VCC
HC00 U4
D SET Q HC74
U3 QN
RST
VP
X1
TL072
VN
HC00 U4
D_A A_D D SET Q HC74
U2 U1
U3 QN
RST
VP
X1
TL072
VN
One problem with the above approach is that the A-D and D-A bridges introduce an
additional delay to the signal path which would therefore alter the performance of the
digital system even if the analog node does not present any significant load. This is
overcome by assigning a negative load to the input of the digital bridge which in effect
reduces the delay of the driving gate. In the above example U2 has a negative input
load which reduces the delay of U3.
275
Simulator Reference Manual
The name of the model used to interconnect digital to analog is always of the form:
family_name_dac
family_name_adc
For example if the family name is HC the D-A bridge is called HC_DAC. There is a
selection of A-D and D-A bridges in the model library supplied with SIMetrix. (In
[Link]).
Logic Families
The digital simulator only knows about the 12 logic states described in section “Logic
States” on page 273, It doesn't know anything about threshold voltages or output
impedances and consequently cannot directly handle the effects of interconnecting
devices from different logic families. It does however feature a mechanism of
determining the level of compatibility between families and will raise an error if
incompatible devices are interconnected. For example, ECL and high speed CMOS
operate at completely different thresholds and cannot be connected except via a special
interface gate. SIMetrix knows this so that if you attempt to connect such devices, an
error message will be displayed and the simulation will not run. Conversely, it is
perfectly OK to drive an LSTTL input from an HC output and SIMetrix will operate
normally if you do so. If you drive an HC input from an LSTTL output SIMetrix will
issue a warning as, although this may work in practice, it cannot be guaranteed to do so
under all circumstances.
Another problem arises when connecting inputs from different logic families together.
SIMetrix deals with this by treating groups of inputs as if they were all from the same
logic family provided they are compatible. This selected logic family is then used to
resolve any output-input conflict as described above. It is also used to select an analog-
digital interface bridge as described in “Analog to Digital Interfaces” on page 274
Groups of outputs from different families are dealt with in the same way as inputs
described above.
SIMetrix knows how to resolve these situations by referring to a set of three tables
called the ‘Logic Compatibility Tables’. A standard set of tables is built in to the
simulator but they can also be redefined. See “Logic Compatibility Tables” on
page 277.
276
Chapter 9 Digital Simulation
The parameters are text strings. Any name may be used that is defined in the logic
compatibility tables but you must not use the underscore character in a family name.
The families supported by the internal tables are listed in “Supported Logic Families”
on page 279
The underscore character is used to define a sub-family that has the same
characteristics as the main family as far as logic compatibility is concerned but which
will call a different interface bridge when connected to an analog node. This is used to
define schmitt trigger devices such as the 74HC14. In an all-digital circuit this behaves
exactly like a normal inverter with a slightly longer delay. When the input is connected
to an analog system an interface bridge with the appropriate hysteresis is called up
instead of the normal interface.
277
Simulator Reference Manual
It can also be specified as the configuration setting CompatTable. The format of this
file is described in the following section.
1. Header
2. In-Out resolution table
3. In-In resolution table
4. Out-Out resolution table
Header
The names of all the logic families listed in one line. The names must not use the
underscore ('_') character.
A table with the number of rows and columns equal to the number of logic families
listed in the header. The columns represent outputs and the rows inputs. The entry in
the table specifies the compatibility between the output and the input when connected
to each other. The entry may be one of three values:
Value Meaning
OK Fully compatible
WARN Not compatible but would usually function. Warn user
but allow simulation to continue.
ERR Not compatible and would never function. Abort
simulation.
A table with the number of rows and columns equal to the number of logic families
listed in the header. Both column and rows represent inputs. The table defines how
inputs from different families are treated when they are connected. The entry may be
one of four values:
278
Chapter 9 Digital Simulation
Value Meaning
Value Meaning
Internal Tables
The internal tables are documented in the on-line help system. Refer to topic “Internal
Tables” which is listed as a keyword in the index tab.
Load Delay
Overview
The digital simulator includes mechanisms to model the delay introduced when an
output is loaded. Two sources of delay are provided for, namely ‘input delay’ and ‘wire
delay’. Input delay is determined by the capacitive input while wire delay is an
additional delay caused by the capacitance of the interconnection.
Both input delay and wire delay are affected by the driving outputs ‘resistance’.
Output Resistance
Most devices that have digital outputs have three parameters to define output
resistance. Note that the resistance we are referring to here is not an actual analog
resistance but a conceptual value that when multiplied by load capacitance provides a
delay value.
Input Delay
Most digital inputs include an ‘input_load’ capacitance parameter. The total input
delay is obtained by multiplying the sum of all connected input capacitances by the
driving output’s output resistance as described above.
280
Chapter 9 Digital Simulation
Wire Delay
Wire delay is derived from the number of connected inputs following a non-linear
relationship defined in a look-up table.
The wire delay look-up table must be defined in a file containing pairs of values with
one pair per line. The first value in the pair is the number of connections and the
second is the capacitance. For example:
0 0
1 0
2 1e-12
5 10e-12
10 30e-12
To specify the wire table used for a simulation, add the line:
.OPTIONS WireTable=filename
Overview
The arbitrary logic block is an internal component that can be defined to perform any
logic function. Using a simple descriptive language it is possible to define
combinational logic elements, synchronous and asynchronous registers as well as look-
up table (ROMs) and arrays (RAMs).
Each ALB device is defined as a normal .MODEL control which refers to a separate
file containing the logic description. This section is mostly concerned with the
descriptive language used in the definition file.
An Example
We start with a simple example. The following is a description of a simple 8 bit
synchronous counter. (This definition would be put into a file referred to in a .MODEL
281
Simulator Reference Manual
control. This is described later). A circuit using this model is supplied as an example.
See EXAMPLES\ALB_Examples\[Link]
(DELAY = 10n)
says that the output delay is 10nS that is the actual output pins will change state 10nS
after the output is assigned.
CountOut
out[0:7]
defines the port as an output and specifies the actual pins used on the device. This
specifies the first 8 pins on the output port. There are two sets of pins on an ALB one
assigned for inputs and referred to as "in[a:b]" and the other assigned for outputs and
referred to as "out[a:b]". The line ends in a semi-colon which terminates the statement.
All statements must end in a semi-colon.
CLOCK=in[0]
specifies the pin used for the clock (it must always be an input pin). This is always
positive edge triggered.
DELAY=5n
WIDTH=8
Count = Count + 1 ;
282
Chapter 9 Digital Simulation
defines the operation to be performed at each clock edge. In this case the value in the
register is simply incremented by one. When it reaches 255 it will reset to 0.
CountOut = count ;
defines what appears at the output. This says that the output equals the count register.
CLOCK IN D0 A0 D0
D1 A1 D1
D2 A2 D2
D3 A3 D3
D4 A4 D4
D5 A5 D5
D6 A6 D6
D7 A7 D7
We will now make a small modification to the counter so that the counter only counts
up to 199 before resetting back to zero. Change the line:
Count = Count + 1 ;
to:
Count = Count==199 ? 0 : Count + 1 ;
This says ‘If the count equals 199 set to zero otherwise increment by one’. As before,
this will happen on each clock edge.
Count := !Reset ? 0 ;
Count = Count==199 ? 0 : Count + 1 ;
CountOut = count ;
To add the reset signal we have to add two lines to the definition. The first:
283
Simulator Reference Manual
defines the signal pin to be used for the reset and the second:
Count := !Reset ? 0 ;
defines the action to be taken. This is an asynchronous action statement. The '!' means
NOT so the line says ‘If Reset is NOT TRUE (i.e. low) set the count to zero otherwise
do nothing’. Asynchronous action statements are always of the form:
The ':' signifies that the statement is asynchronous and that the action should happen
immediately.
MultOut = in1*in2 ;
The above defines a simple combinational circuit, that of a 4X4 digital multiplier. The
inputs in1 and in2 are treated as 4 bit unsigned values so if both are zero the output will
be zero and if both are 1111 (i.e. 15) the result will be 11100001 (i.e. 225). See the
circuit EXAMPLES\ALB_Examples\[Link].
128, 131, 134, 137, 140, 143, 146, 149, 152, 156, 159, 162,
165, 168, 171, 174, 176, 179, 182, 185, 188, 191, 193, 196,
199, 201, 204, 206, 209, 211, 213, 216, 218, 220, 222, 224,
226, 228, 230, 232, 234, 236, 237, 239, 240, 242, 243, 245,
246, 247, 248, 249, 250, 251, 252, 252, 253, 254, 254, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
253, 252, 252, 251, 250, 249, 248, 247, 246, 245, 243, 242,
240, 239, 237, 236, 234, 232, 230, 228, 226, 224, 222, 220,
218, 216, 213, 211, 209, 206, 204, 201, 199, 196, 193, 191,
188, 185, 182, 179, 176, 174, 171, 168, 165, 162, 159, 156,
152, 149, 146, 143, 140, 137, 134, 131, 128, 124, 121, 118,
115, 112, 109, 106, 103, 99, 96, 93, 90, 87, 84, 81, 79, 76,
73, 70, 67, 64, 62, 59, 56, 54, 51, 49, 46, 44, 42, 39, 37,
35, 33, 31, 29, 27, 25, 23, 21, 19, 18, 16, 15, 13, 12, 10,
9, 8, 7, 6, 5, 4, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16,
18, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 42, 44, 46,
49, 51, 54, 56, 59, 62, 64, 67, 70, 73, 76, 79, 81, 84, 87,
90, 93, 96, 99, 103, 106, 109, 112, 115, 118, 121, 124 ;
ROMout = ROM[input] ;
284
Chapter 9 Digital Simulation
// asynchronous action
DTYPE := SR_DEL==1||SR_DEL==2 ? (SR_DEL==2 ? 1 : 2) ;
// synchronous action
DTYPE = D_DEL ? 1 : 2 ;
Netlist entry
285
Simulator Reference Manual
+ : parameters
Connection details
in Input in d
out Output out d
Instance parameters
Model format
Model parameters
286
Chapter 9 Digital Simulation
Notes
Usually the logic block definition would be placed in a file referred in the FILE
parameter. Alternatively the definition may be placed directly in the .MODEL control
as the value of the DEF parameter. In this case the definition must be enclosed in
quotation marks (").
The USER_SCALE parameter scales all values found in the USER parameter.
All logic definitions are divided into two sections. The first contains the ports and
register definitions and the second section consists of the assignment statements. (The
first section can be empty in very simple cases).
Identifiers used for register, port and variable names must begin with an alphabetic
character or underscore and consist of alphanumeric characters and underscores.
287
Simulator Reference Manual
Ports define a label to a single pin or sequence of pins so that they can be treated as a
single entity in the remainder of the logic definition. In the case of outputs they can
optionally also define an output delay. (If this is not specified a default output delay
defined in the devices .MODEL control is used).
port_name Any name to reference the port. Must start with a letter or
underscore and consist only of letters numbers and underscores.
Names are not case sensitive.
pin1,pin2 Identifies pin or range of pins that port accesses. See next
section for more details.
output_delay Output delay in seconds. When an output port is assigned a
value, the actual output is updated after this delay has elapsed (+
any loading delay). You may use engineering units in the normal
way. E.g. 10n is 10e-9.
The pin numbers in the port statements above, i.e. pin1 and pin2 are the positions
within the input_node_list for input ports and output_node_list for output ports.
A12 [ 1 2 3 4 ] [ A B C D ] ARB1
assigns the label output to the netlist pins A B C and D. If, for example, the value 7
is evaluated and assigned to output, pins A B and C would be set to a logic '1' and
pin D would be set to a logic '0'. Pins 1 2 3 & 4 would be used for input ports in a
similar way.
The netlist entry relates directly to a symbol definition for an arbitrary logic block.
When defining a symbol to be used with an ALB you should observe the following
rules
• The first input pin's name and the first output pin's name should both be prefixed
with a '['.
• The last input pin's name and the last output pin's name should both be suffixed
with a ']'.
288
Chapter 9 Digital Simulation
• Use Property/Pin|Edit Pin Order… to define the pin order with input pins first
then output pins.
• You should assign a MODEL property with the value 'A'.
• Edge triggered. The value of these change on the rising edge of an assigned
clock.
• Level triggered. The value of these change when an assigned enable is at a logic
'1' level.
• Combinational. The value of these change after a specified delay.
• Read-only. These are given a fixed value which cannot be changed. These would
usually be arranged in indexable arrays to implement a read only memory.
Edge and level triggered registers may be arranged in indexable arrays. Level or edge
triggered arrays form a read-write memory or RAM.
In addition to registers there are also local variables. These can be assigned a value that
can later be used in a register assignment.
All registers must be declared. Local variables are declared by simply assigning a
value to them.
EDGE ( CLOCK=input_pin_spec
[, DELAY=reg_delay]
[, WIDTH=reg_width]
[, MINCLOCK=reg_minclock]
[, HOLD=reg_hold_time]
[, ASYNCDELAY=reg_asyncdelay]
[, BITWISE=0|1 ] ) name [[array_size]]
[ = initial_condition *[, initial_condition] ] ;
input_pin_spec This specifies which input pin is the clock and must be of the
form: IN[n] where n is a pin number. See “Relationship between
ports, netlist entry and symbol definition” on page 288 for
details on how pin numbers relate to netlist entries and symbol
definitions.
reg_delay Register delay in seconds. This is the delay between the clock
rising edge and the register value changing. You can use
engineering units in the normal way.
Default: REG_DELAY parameter in .MODEL control defines
default value. This is turn has a default value of 1nS.
289
Simulator Reference Manual
LEVEL (CLOCK=input_pin_spec
[, DELAY=reg_delay]
[, WIDTH=reg_width]
[, SETUP=reg_setup_time]
[, ASYNCDELAY=reg_asyncdelay]
[, BITWISE=0|1 ] name [[array_size]]
[ = initial_condition *[, initial_condition]] ;
290
Chapter 9 Digital Simulation
input_pin_spec This specifies which input pin is the enable and must be of the
form: IN[n] where n is a pin number. See “Relationship between
ports, netlist entry and symbol definition” on page 288 for
details on how pin numbers relate to netlist entries and symbol
definitions.
reg_delay Register delay in seconds. If the enable is already high, this is
the time taken for the register to acquire new data. Otherwise it
is the delay between enable rising edge and the register value
changing. You can use engineering units in the normal way.
Default: REG_DELAY parameter in .MODEL control defines
default value. This is turn has a default value of 1nS.
reg_width Register width in bits. This has a maximum of 32.
Default: 32
reg_setup_time Register hold time. This is the time that the input data (i.e.
assignment value) must remain stable prior to an enable falling
edge, for the new value to be accepted. If the BITWISE
parameter is set to '1' (which it is by default) the setup time is
applied on a bit by bit basis. That is any individual bit in the
register that remains stable during the setup period will attain
the new value even if other bits violate the setup time. If
BITWISE is '0' then if a single bit violates the setup time, the
whole register will remain unchanged even if some bits remain
stable during the setup period. Setting BITWISE to '0' saves
system memory which can be important for large arrays (i.e.
RAMs).
Default: SETUP_TIME parameter in .MODEL control defines
default value. This in turn has a default of 0.
reg_asysncdelay Time the register takes to acquire a value set by an
asynchronous assignment. This must be less than or equal to
reg_delay.
Default: reg_delay
BITWISE value See reg_setup_time
Default: '1' for single registers, '0' for arrays.
name Register name.
array_size If specified, the register is arranged as an addressable array of
size array_size.
Default: 1
initial_condition Value assigned to register when simulation starts.
Default: 0
COMB ( [, DELAY=reg_delay]
[, WIDTH=reg_width]
[, BITWISE=0|1 ] ) name [ = initial_condition ] ;
reg_delay Register delay in seconds. You can use engineering units in the
normal way. If BITWISE is '1' (the default) this delay is applied
291
Simulator Reference Manual
292
Chapter 9 Digital Simulation
statement.
local_var Any name not already used for a port or register. This defines
the value for a local variable that can be used in subsequent
expressions. A local variable may not be used in an expression
that precedes its definition.
expr Local variables, input ports, registers and constant values
combined using arithmetic, Boolean, bitwise Boolean, shift,
conditional and relational operators. See “Expression operators”
below for detailed documentation on all operators.
clocked_register Edge or level triggered register.
index Array index. This must be smaller than the array size. Arrays are
based at 0. That is the first element is zero and the last is (array
length-1).
Expression operators
The following table lists all operators available. These are listed in order of
precedence. Precedence determines the order of evaluation. For example in the
expression:
The sub-expressions var1<var2 and var3<var4 are evaluated first and the result of that
those evaluations combined using && to yield the final result. This is because < has
higher precedence than &&. The precedence can be altered using parentheses in the
usual way.
293
Simulator Reference Manual
Example A<B ? 16 : 0
Note that the operators and their precedence are a subset of those used in the 'C'
programming language with the exception of <>.
An output can be set into a high impedance state using a modification to an output port
variable. Use the suffix .EN after the output port or port identifier to signify that the
result of the expression should control the output enable. E.g. the following is
extracted from the 74XX244 definition:
Examples
Y = !Enable ? A_Del != B_Del : 1 ;
If Enable is 0 then Y will be the result of A_Del != B_Del otherwise the result will be
1.
294
Chapter 9 Digital Simulation
USER[index]
and
DEVICE[index]
These can replace any constant value in an expression, register qualifier or port
qualifier. (Register and port qualifiers are the values in parentheses after the register/
port keyword. E.g. DELAY, HOLD, SETUP etc.).
To set USER values in a .MODEL control, assign the parameter USER. This is a vector
parameter, that is it can have any number of values and these must be enclosed in
square brackets '[' and ']'. For example:
The logic definition to which this model refers - counter_8.ldf - can use USER[0] and
USER[1] to refer to the values 10n and 5n respectively.
To set DEVICE values in a netlist, the netlist entry for the device must be appended
with:
: USER=[ values ]
For example:
The logic definition for this device can use DEVICE[0] and DEVICE[1] to access the
USER values in the netlist i.e. 10n and 5n respectively. Always remember to include
the colon. This acts as a separator between the device name and any parameters.
295
Simulator Reference Manual
Roll-back occurs when an analog time step is rejected but the digital simulation has
already advanced past the new analog time. In this case the digital simulator has to
back-track events. This mechanism is central to the operation of the mixed-mode
system and is explained in more detail in “Mixed-mode Simulator - How it Works”
below.
LOGIC '1'
HC04
HC00
U1
U2
HC02
LOGIC '0'
U3
296
Chapter 9 Digital Simulation
U1 receives an event, a rising edge at its input at time = T. U1 has a propagation delay
of 5.5nS, so on receipt of the event at its input, U1 posts an event at its output with a
time T+5.5nS. At that time this event is received by U2 and U3. U3 does not respond
to this event because one of its inputs is permanently at logic '1' so its output will
always be low. U2, however, does respond and creates a low-high event at a time
delayed by its propagation delay of 6.5nS i.e. T+5.5nS+6.5nS. Any device with an
input connected to the output of U2 will process this new event and so the process
continues.
In addition to the propagation delays described above, there are also additional delays
caused by loading effects. Each input has an effective input capacitance and each
output a resistance. For each event, an additional delay is added equal to the sum of all
capacitances on the node multiplied by the driving output's resistance.
Analog to digital interface bridges are much like a comparator. When the analog input
passes a threshold, the output state changes appropriately and a digital event is
generated.
297
Simulator Reference Manual
• Fan out implemented. The underlying mechanism for load dependent delay was
there but none of the models supported it. Static loading effects (as in bipolar
logic) was not supported at all. In SIMetrix it is.
• Input load reflected in analog to digital interfaces. The AD interfaces in XSPICE
have infinite input impedance regardless of what the digital output is driving.
SIMetrix AD interfaces reflect the digital capacitative and static load at their
inputs.
• Output strength reflected in digital to analog interfaces. The DA interfaces in
XSPICE have zero output impedance regardless of what is driving them.
SIMetrix DA interfaces reflect the strength of the digital output driving the input.
A hi-z logic state will look like a hi-z logic state when transferred to the analog
domain. This is not the case with XSPICE.
• AD interface threshold detection. All AD interfaces switch at a particular input
threshold. In the XSPICE system the output switched at the first analog timepoint
that exceeded the threshold. This could be a long way passed the threshold if the
analog time steps are large. In SIMetrix a mechanism has been implemented that
cuts back the time step so that the threshold is hit within a specified time
tolerance.
• Arbitrary logic block device. This allows the definition of any logic device using
a simple descriptive language. The language accommodates combinational logic,
synchronous and asynchronous registers as well as look up tables (i.e. ROMS)
and arrays (i.e. RAMs)
• Arbitrary analog to digital converter. Up to 32 bits with specified input range and
offset, conversion time and maximum conversion rate. Output may be in two's
complement or offset binary.
• Arbitrary digital to analogue converter. Up to 32 bit with specified input range
and offset and output slew time. Input may be in two's complement or offset
binary.
• Voltage controlled oscillator (analog in digital out). There was one of these in the
original XSPICE code but it suffered a number of problems and was scrapped.
The SIMetrix version is all new.
298
Chapter 9 Digital Simulation
299
Simulator Reference Manual
Capacitors
Inductors
MOSFETs
Resistors
Diodes
BJTs
JFETs
MOSFETs
The following devices are implemented in SPICE 3 but are not available with
SIMetrix.
Current controlled switch
Uniform Distributed RC Line
Analysis Modes
Two analysis modes available in standard SPICE 3 have not been implemented in
SIMetrix. Details follow:
Distortion analysis. (.DISTO) This has not been implemented primarily because the
usefulness of this mode is limited. The analysis only provides 2nd and 3rd harmonics
which would is inadequate for the majority of applications. SIMetrix is supplied
instead with a comprehensive suite of spectral analysis post processing functions.
Fourier analysis (.FOUR). This isn't really an analysis mode at all but a post processing
function. SIMetrix is supplied with a script - FOUR - which performs the same action
as this analysis mode. In fact it is superior because it can be applied to any signal after
the run is complete whereas the standard SPICE .FOUR analysis requires the user to
specify the signal in advance of the simulation.
301
Simulator Reference Manual
302
Index
Index
.ALIAS 192
.DC 193
.ENDF 194
.ENDS 40
.FILE 194
.FUNC 195
.GRAPH 196
.INC 203
.LIB 206
.MODEL 207
.NODESET 210
.OPTIONS 215
.OUT file 23
.PARAM 31, 38, 228
.SUBCKT 40, 237
.SXDAT files 24
.TEMP 238
.TRACE 240
A
ABS (function) 35
ABSTOL (simulator option) 216, 270
ABSTOLMAX (simulator option) 216
AC analysis 190
ACCT (simulator option) 216
ACOS (function) 35
ACOSH (function) 35
ad_converter model 169
adc_bridge model 172
adc_schmitt model 184
Analog-digital converter 169
Analog-digital interface bridge 172
Analog-digital schmitt trigger 184
And gate 129
Arbitrary logic block
language definition 281
model 148
Arbitrary source 52
charge devices 53
examples 54
303
Simulator Reference Manual
flux devices 53
look-up tables 36
non-linear capacitors and inductors 53
ASIN (function) 35
ASINH (function) 35
ASYNCDELAY - arbitrary logic block keyword 289, 290
ATAN (function) 35
ATAN2 (function) 35
ATANH (function) 35
B
Batch mode 15
B-H curves 81
BINDIAG (simulator option) 216
Bipolar junction transistor 56, 60, 64
BITWISE - arbitrary logic block keyword 289, 290, 291
BJT 56, 60, 64
model parameters 57
BSIM3 94
BSIM4 95
Buffer (digital) 135
C
Capacitor 66
model parameters 68
Capacitor with voltage initial condition 68
CCCS 69
CCVS 70
CHGTOL (simulator option) 216, 270
CLOCK - arbitrary logic block keyword 289, 290
cm_cap model 68
cm_ind model 82
COMB - arbitrary logic block keyword 291
Comments 21
inline 45
Configuration 17
Connection types 28
Constant parameters 31
Controlled digital oscillator 182
Convergence 256
COS (function) 35
COSH (function) 35
Current controlled current source 69
Current controlled switch 301
Current controlled voltage source 70
304
Index
Current source 71
D
d_and model 130
d_buffer model 135
d_dff model 133
d_dlatch model 131
d_fdiv model 137
d_inverter model 143
d_jkff model 145
d_nand model 150
d_nor model 151
d_open_c model 152
d_open_e model 153
d_or model 154
d_osc model 183
d_pulldown model 155
d_pullup model 156
d_pulse model 139
d_ram model 157
d_source model 140
d_srff model 158
d_srlatch model 161
d_state model 162
d_tff model 164
d_tristate 166
d_xnor model 167
d_xor model 168
da_converter model 176
dac_bridge model 179
Data file 24
Data names 25
DC analysis 193
DCOPSEQUENCE (simulator option) 216
DDT (function) 35
DEFAD (simulator option) 216
DEFAS (simulator option) 217
DEFL (simulator option) 217
DEFNRD (simulator option) 217
DEFNRS (simulator option) 217
DEFPD (simulator option) 217
DEFPS (simulator option) 217
DEFW (simulator option) 217
Delay
load 280
305
Simulator Reference Manual
wire 281
DELAY - arbitrary logic block keyword 289, 290, 291
Delay time (pulse source) 115
DEVICE - arbitrary logic block keyword 295
Digital devices 128
delays 129
family parameters 128, 277
input parameters 129
output parameters 128
Digital model libraries 281
Digital pulse 139
Digital signal source 140
Digital simulation 273
analog to digital interfaces 274
logic families 276
logic states 273
Digital-analog converter 176
Digital-analog interface bridge 179
DIGMINTIME (simulator option) 217
Diode 72
model parameters 73, 74
Distortion analysis 301
D-type flip flop 133
D-type latch 131
E
Ebers-Moll 60
EDGE - arbitrary logic block keyword 289
EKV 96
Embedding files in netlist 194
Exclusive NOR gate 167
Exclusive OR gate 168
EXP (function) 35
EXPAND (simulator option) 24, 217
EXPANDFILE (simulator option) 24, 217
Exponential source 119
Expressions 29–39
.PARAM 31
circuit variables 30
for arbitrary source 53
for device parameters 30
for model parameters 30
functions 35
operators 32
parameters 31
306
Index
syntax 30
F
Fall time
pulse source 115
FAMILY (model parameter) 277
FASTPOINTTOL (simulator option) 217
FASTRELTOL (simulator option) 217
Files - embedding in netlist 194
Filter response functions 109
Flicker noise, resistor 99
FLOOR (function) 35
FLUXTOL (simulator option) 217, 270
Fourier analysis 301
Frequency divider 136
G
GaAsFET 77
model parameters 77
Gate-drain capacitance 93
GAUSS (function) 36
GAUSSE (function) 36
GAUSSEL (function) 36
GAUSSL (function) 36
GEAR 220
Gear integration 271
Global nodes 43
GMIN (simulator option) 218
GMIN, MOSFET implementation 97
GMINMAXITERS (simulator option) 218
GMINMULT (simulator option) 218
GMINSTEPITERLIMIT (simulator option) 218
Gummell Poon 56
Gummel-Poon 60
H
HIGH (logic state) 273
HI-IMPEDANCE (logic strength) 273
HOLD - arbitrary logic block keyword 289
I
ICRES (simulator option) 218
IF (function) 35
IFF (function) 35
IGBT 82
IN_FAMILY (model parameter) 277
307
Simulator Reference Manual
Inductor 78
saturable 79
with hysteresis 79
Inductor with current initial condition 82
Initial conditions 202
Initial value (pulse source) 115
Integration methods 270
Internal nodes 26
Inverter (digital) 143
ITL1 (simulator option) 218
ITL2 (simulator option) 218
ITL4 (simulator option) 219
ITL7 (simulator option) 219
J
JFET 84
Jiles-Atherton 80
JK flip-flop 144
JUNCAP 123
Junction FET 84
model parameters 85
L
Language 45
Language declaration 20
Laplace block 105
LEVEL - arbitrary logic block keyword 290
LIMIT (function) 35
List file 23
LN (function) 35
Load delay 280
LOG (function) 35
LOG10 (function) 35
Logic compatibility tables 277
Logic families 276
Logic states 273
LOGICHIGH (simulator option) 34, 219
LOGICLOW (simulator option) 34, 219
LOGICTHRESHHIGH (simulator option) 34, 219
LOGICTHRESHLOW (simulator option) 34, 219
Look-up tables 36
Lossy transmission line 86
model parameters 87
LOW (logic state) 273
308
Index
M
MATCHEDSUBCIRCUITS (simulator option) 219
MAX (function) 35
MAXEVTITER (simulator option) 219
MAXOPALTER (simulator option) 219
MAXORD (simulator option) 219
MaxVectorBufferSize (global setting) 18
MC_ABSOLUTE_RECT (simulator option) 220
MC_MATCH_RECT (simulator option) 220
MCLOGFILE (simulator option) 220
METHOD (simulator option) 220, 270
Mextram 125
MIN (function) 35
MINBREAK (simulator option) 220
MINCLOCK - arbitrary logic block keyword 289
MINGMINMULTIPLIER (simulator option) 221
MINTIMESTEP (simulator option) 221
Model parameters
analog-digital bridge 173
analog-digital converter 170
arbitrary logic block 149
BJT 57
Buffer 135
capacitor 68
controlled digital oscillator 183
digital initial condition 138
digital pulse 139
digital signal source 141
digital-analog bridge 180
digital-analog converter 177
diode 73, 74
D-type flip-flop 133
D-type latch 131
exclusive NOR gate 167
exclusive OR gate 168
frequency divider 137
gaAsFET 77
inverter 144
JK flip-flop 145
junction FET 85
laplace block 105
lossy transmission line 87
MOSFET 92
NAND gate 150
309
Simulator Reference Manual
311
Simulator Reference Manual
312
Index
.OPTIONS 215
.PARAM 228
.SENS 233
.SUBCKT 237
.TEMP 238
.TRACE 240
.TRAN 241
SIN (function) 35
Single frequency FM 120
SINH (function) 35
Sinusoidal source 118
Snapshots 243
SOURCEMAXITERS (simulator option) 227
Spectrum (function) 201
SQRT (function) 35
SR latch 160
Star-Hspice 20
State machine (model) 162
States - logic 273
Stimulus
exponential source syntax 119
noise source syntax 120
piece wise linear syntax 116
pulse source syntax 115
PWL file source syntax 117
sine source syntax 118
single frequency FM syntax 120
STP (function) 35
STRONG (logic strength) 273
Subcircuits 40
.SUBCKT control 237
calling from a netlist 42
global nodes 43
nesting 43
passing parameters 42
T
Tables, look-up 36
TAN (function) 36
TANH (function) 36
TEMP (simulator option) 227
TempDataDir (global setting) 18
TIMESTATS (simulator option) 227
TLMINBREAK (simulator option) 227
TNOM (simulator option) 227
313
Simulator Reference Manual
314
Index
W
WC (function) 36
WCE (function) 36
WCEL (function) 36
WCL (function) 36
WIDTH - arbitrary logic block keyword 289, 290, 291, 292
WIDTH (simulator option) 24, 228
Wire Delay 281
WIRETABLE (simulator option) 228
X
XSPICE
devices 128
315