Proteus VSM PDF
Proteus VSM PDF
Proteus VSM PDF
INTRODUCTION
ABOUT PROTEUS VSM
Traditionally, circuit simulation has been a non-interactive affair. In the early days, netlists were
prepared by hand, and output consisted of reams of numbers. If you were lucky, you got a
pseudo-graphical output plotted with asterisks to show the voltage and current waveforms.
More recently, schematic capture and on screen graphing have become the norm, but the simulation
process is still non-interactive - you draw the circuit, press go, and then study the results in some kind
of post processor. This is fine if the circuit you are testing is essentially static in its behaviour e.g. an
oscillator which sits there and oscillates nicely at 1Mhz. However, if you are designing a burglar alarm,
and want to find out what happens when a would-be burglar keys the wrong PIN into the keypad, the
setting up required becomes quite impractical and one must resort to a physical prototype. This is a
shame, as working in cyberspace has so much to offer in terms of design productivity.
Only in educational circles has an attempt been made to present circuit simulation like real life
electronics where it is possible to interact with the circuit whilst it is being simulated. The problem here
has been that the animated component models have been hard coded into the program. Only limited
numbers of simple devices such as switches, light bulbs, electric motors etc. have been offered, and
these are of little use to the professional user. In addition, the quality of circuit simulation has often left
much to be desired. For example, one major product of this type has no timing information within its
digital models.
PROTEUS VSM brings you the best of both worlds. It combines a superb mixed mode circuit simulator
based on the industry standard SPICE3F5 with animated component models. And it provides an
architecture in which additional animated models may be created by anyone, including end users.
Indeed, many types of animated model can be produced without resort to coding. Consequently
PROTEUS VSM allows professional engineers to run interactive simulations of real designs, and to
reap the rewards of this approach to circuit simulation.
And then, if that were not enough, we have created a range of simulator models for popular
micro-controllers and a set of animated models for related peripheral devices such as LED and LCD
displays, keypads, an RS232 terminal and more. Suddenly it is possible to simulate complete
micro-controller systems and thus to develop the software for them without access to a physical
prototype. In a world where time to market is becoming more and more important this is a real
advantage.
It is also worth pointing out that the processing power of the modern PC is truly awesome. A 300MHz
Pentium II PC can simulate simple micro-controller designs in real time, or even faster in some cases.
And even where things slow down somewhat, the response time is more often that not useable for
software development. If you are serious about this game, you can go out and buy a 1GHz Athlon,
which is well over three times faster. This, then, debunks the other obvious objection to interactive
simulation - that it would not be fast enough.
1 of 101
INTRODUCTION
ABOUT THE DOCUMENTATION
This manual is intended to complement the information provided in the on-line help. Whereas the
manual contains background information and tutorials, the help provides context sensitive information
related to specific icons, commands and dialog forms. Help on most objects in the user interface can
be obtained by pointing with the mouse and pressing F1.
PROTEUS VSM can be used in two rather distinct ways - either for Interactive Simulation or for
Graph Based Simulation and this is reflected in the structure of the manual. Typically, you will use
interactive simulation to see if a design works at all, and graph based simulation to investigate why it
doesnt or to take very detailed measurements. However, there are no hard and fast rules. Some
elements of the system, such as Generators are relevant to both modes of use and are given their own
chapters for this reason.
Detailed, step by step tutorials are provided which take you through both types of simulation exercise.
We strongly recommend that you work through these as they will demonstrate all the basic techniques
required to get going with the software.
Information on creating VSM models is provided separately in the VSM Software Development
Kit (SDK). This is supplied with PROSPICE Professional, but not with the demonstration or
shareware versions of the product.
2 of 101
Whilst we will be drawing the schematic from scratch, the completed version can be found in the
Sample Designs offered from the Start Menu. Users who are familiar with the general operating
procedures in ISIS may choose to use this ready made design and move on to the section on the
microcontroller program.
If you are unfamiliar with ISIS, the interface and basic usage are discussed at length in A Guided tour
of the ISIS Editor and although we will touch on these issues in the following section you should take
the time to familiarise yourself with the program before proceeding.
3 of 101
Library. To select a component into the design, highlight the component name in the Objects listbox
and double click on it. A successful selection will result in the component name appearing in the
Object Selector.
Once you have selected both TRAFFIC LIGHTS and PIC16F84 into the design close the Device
Library Selector and click left once on the PIC16F84 in the Object Selector (this should highlight your
selection and a preview of the component will appear in the Overview Window at the top right of the
screen). Now left click on the Editing Window to place the component on the schematic - repeat the
process to place two sets of traffic lights on the schematic.
Movement and Orientation
We now have the building blocks on the schematic but the chances are they are not ideally positioned.
To move a component, point the mouse over it and right click (this should highlight the component),
then depress the left mouse button and drag (you should see the component outline follow the mouse
pointer) to the desired position. When you have the outline where you want release the left mouse
button and the component will move to the specified position. Note that at this point the component is
still highlighted - right click on any empty area of the Editing Window to restore the component to its
normal status.
To orient a component, right click over it in the same way as before then click on the Orientation Icon.
This will rotate the component through 90 degrees - repeat as necessary. Again, it is good practice to
right click on an empty area of the schematic when you are finished to restore the component to its
original state.
Set out the schematic in a sensible fashion ( perhaps based on the sample given ), moving and
orientating the components as required. If you are having problems we advise you to work through the
tutorial in the ISIS manual - ISIS Tutorial
For our purposes , we will ignore the 2D Graphics involved in the road junction and concentrate on
creating a simulatable circuit - for those who are interested a full discourse on the Graphics
capabilities of ISIS can be found here - 2D Graphics
Zooming and Snapping
In order to wire up the schematic it is useful to be able to zoom in to a specific area. Hitting the F6 key
will zoom around the current position of the mouse, or, alternatively, holding down the SHIFT key and
dragging a box with the left mouse button will zoom in on the contents of the dragged area. To zoom
back out again hit the F7 key, or, should you wish to zoom out until you can see the entire design, hit
the F8 key. Corresponding commands can be accessed through the View Menu.
ISIS has a very powerful feature called Real Time Snap. When the mouse pointer is positioned near to
pin ends or wires, the cursor location will be snapped onto these objects. This allows for easy editing
and manipulation of the schematic. This feature can be found in the Tools Menu and is enabled by
default.
More information on zooming and snapping can be found in The Editing Window in the ISIS manual.
Wiring Up
The easiest way to wire a circuit is to use the Wire Auto Router option on the Tools Menu. Make sure
that this is enabled ( a tick should be visible to the left of the menu option ). For more information see
The Wire Auto Router in the ISIS manual. Zoom in to the PIC until all the pins are comfortably visible
and then place the mouse pointer over the end of pin 6 (RB0/INT). You should see a small x cursor
on the end of the mouse. This indicates that the mouse is at the correct position to connect a wire to
this pin. Left click the mouse to start a wire and then move the mouse to the pin connected to the red
light on one of the sets of Traffic Lights. When you get an x cursor again over this pin left click to
complete the connection. Repeat the process to wire up both sets of Traffic Lights as given on the
4 of 101
sample circuit.
There are a couple of points worth mentioning about the wiring up process:
You can wire up in any mode - ISIS is clever enough to determine what you are doing.
When enabled, the Wire Autorouter will route around obstacles and generally find a sensible path
between connections. This means that, as a general rule, all you need to do is left click at both end
points and let ISIS take care of the path between them.
ISIS will automatically pan the screen is you nudge the edge of the Editing Window while placing a
wire. This means that you can zoom in to the most suitable level and, so long as you know the
approximate position of the target component, simply nudge the screen over until it is in view.
Alternatively, you can zoom in and out while placing wires ( using the F6 and F7 keys ).
Finally, we have to wire pin 4 to a power terminal. Select Gadgets Mode and the Terminal icon and
highlight POWER in the Object Selector. Now left click on a suitable spot and place the terminal.
Select the appropriate orientation and wire the terminal to pin 4 using the same techniques as before.
More useful information on wiring up can be found at the following places in the ISIS manual:
Wire Placement
Wire Repeat
Dragging Wires
At this point we recommend that you load the completed version of the circuit this will avoid
any confusion arising if the version you have drawn is in any way different from ours! Also, if
you have not purchased the PIC Microprocessor Model Library, you must load the pre-prepared
sample file in order to proceed.
; Temporary storage
state
l1,l2
ENDC
org
goto
halt
setports
0
setports
; Start up vector.
; Go to start up code.
org
; Interrupt vector.
goto
halt
PORTA
clrw
movwf
; Zero in to W.
5 of 101
movwf
bsf
PORTB
STATUS,RP0
clrw
movwf
TRISB
bcf
STATUS,RP0
; Reselect Bank 0.
movwf
state
; Set it.
call
movwf
incf
getmask
PORTB
state,W
andlw
movwf
0x04
state
; Wrap it around.
; Put it back in to memory.
call
goto
wait
loop
; Wait :-)
; And loop :-)
initialise clrw
loop
; Initial state.
wait
w1
PCL,F
0x41
0x23
retlw
retlw
0x14
0x32
; state==3 is Red
and Green
; state==4 is Red/Amber and Amber.
l1
call
decfsz
goto
wait2
l1
w1
return
wait2
clrf
l2
w2
decfsz
l2
goto
w2
return
END
There is, in fact, a deliberate mistake in the above code, but more of that later
Attaching the Source File
The next stage is to attach the program to our design in order that we can successfully simulate its
behaviour. We do this through the commands on the Source Menu. Go to the Source Menu now and
select the Add/Remove Source Files Command. Click on the New button, and select the TL.ASM file.
Click open and the file should appear in the Source Code Filename drop down listbox.
6 of 101
We now need to select the code generation tool for the file. For our purposes the MPASM tool will
suffice. This option should be available from the drop down listbox and so left clicking will select it in the
usual fashion. (Note that If you are planning to use a new assembler or compiler for the first time, you
will need to register it using the Define Code Generation Tools command).
We have now attached the source file to the design and specified which Code Generation Tool will be
used. A more detailed explanation on the Source Code Control System is available later in this
documentation.
7 of 101
for completeness we will step through each instruction. Hitting F11 here will jump us to the first
executable line of the getmask function. Stepping forward we see that the move operation was
successful and that we land in the correct place for adding an offset of zero onto our lookup table.
When we return to the main program therefore, we have the mask that we would expect. Single
stepping further and writing the mask to the port we can see the correct result on the schematic. Single
stepping again to increment the state is also successful as evidenced by the Register Window where
the value for the W register is incremented by 1.
The single step takes us onto the instruction designed to wrap the state around to zero when it is
incremented above 3. This, as can been seen from the Watch Window , is not performing as it should.
The state should clearly be incremented to state 1 here in order for the mask to be set correctly on the
next execution of the loop.
Finding the Bug
Closer investigation reveals that the problem is caused by ANDing with 4 instead of with 3. The states
we want are 0,1,2, 3 and any of these when ANDed with 4 gives 0. This is why when running the
simulation the state of the traffic lights does not change. The solution is simply to change the problem
instruction to AND the state with 3 instead of 4. This means that the state will increment to 3 and when
the W register is incremented to 4 the state will wrap around to 0. An alternative solution would be to
simply test for the case when the W register hits 4 and to reset it to zero.
While this short example of the debugging techniques available in Proteus VSM illustrates the basics
there is a lot of additional functionality available. It is recommended that you look at the section on
Source Level Debugging for a more detailed explanation.
8 of 101
Getting Started
The circuit we are going to simulate is an audio amplifier based on a 741 op-amp, as shown overleaf.
It shows the 741 in an unusual configuration, running from a single 5 volt supply. The feedback
resistors, R3 and R4, set the gain of the stage to be about 10. The input bias components, R1, R2 and
C1, set a false ground reference at the non-inverting input which is decoupled from the signal input.
As is normally the case, we shall perform a transient analysis on the circuit. This form of analysis is
the most useful, giving a large amount of information about the circuit. Having completed the
description of simulation with transient analysis, the other forms of analysis will be contrasted.
9 of 101
If you want, you can draw the circuit yourself, or you can load the design file ASIMTUT1.DSN from the
Samples\Tutorials directory which has the circuit ready drawn. Whatever you choose, at this point
ensure you have ISIS running and the circuit drawn.
Generators
To test the circuit, we need to provide it with a suitable input. We shall use a voltage source with a
square wave output for our test signal. A generator object will be used to generate the required signal.
To place a generator, first click left on the Gadget Mode icon, and then on the Generator icon: the
Object Selector displays a list of the available generator types. For our simulation, we want a Pulse
generator. Select the Pulse type, move the mouse over to the edit window, to the right of the IN
terminal, and click left on the wire to place the generator.
Generator objects are like most other objects in ISIS; the same procedures for previewing and
orienting the generator before placement and editing, moving, re-orienting or deleting the object after
placement apply (see GENERAL EDITING FACILITIES in the ISIS manual or GENERATORS AND
PROBES in this manual).
10 of 101
As well as being dropped onto an existing wire, as we just did, generators may be placed on the sheet,
and wired up in the normal manner. If you drag a generator off a wire, then ISIS assumes you want to
detach it, and does not drag the wire along with it, as it would do for components.
Notice how the generator is automatically assigned a reference - the terminal name IN. Whenever a
generator is wired up to an object (or placed directly on an existing wire) it is assigned the name of the
net to which it is connected. If the net does not have a name, then the name of the nearest component
pin is used by default.
Finally, we must edit the generator to define the pulse shape that we want. To edit the generator, tag it
with the right mouse button and then click left on it to access its Edit Generator dialogue form. Select
the High Voltage field and set the value to 10mV. Also set the pulse width to 0.5s.
Select the OK button to accept the changes. GENERATORS AND PROBES gives a complete
reference of the properties recognised by all the types of generator. For this circuit only one generator
is needed, but there is no limit on the number which may be placed.
Probes
Having defined the input to our circuit using a generator, we must now place probes at the points we
wish to monitor. We are obviously interested in the output, and the input after it has been biased is also
a useful point to probe. If needs be, more probes can always be added at key points and the
simulation repeated.
To place a probe, first click left on the Gadgets Mode icon, and then on the Voltage Probe icon
(ensure you have not selected a current probe by accident - we shall come to these later). Probes can
be placed onto wires, or placed and then wired, in the same manner as generators. Move the mouse
over to the edit window, to the left of U1 pin 3, and click left to place the probe on the wire joining pin 3
to R1 and R2. Be sure to place the probe on the wire, as it cannot be placed on the pin itself. Notice
the name it acquires is the name of the nearest device to which it is connected, with the pin name in
brackets. Now place the second probe by clicking left just to the left of the OUT terminal, on the wire
between the junction dot and the terminal pin.
Probe objects are like generators and most other objects in ISIS; the same procedures for previewing
and orienting the probe before placement, and editing, moving, re-orienting or deleting the probe after
placement apply (see GENERAL EDITING FACILITIES in the ISIS manual or PROBES in this
manual). Probes may be edited in order to change their reference labels. The names assigned by
default are fine in our case, but a useful tip when tagging probes is to aim for the tip of the probe, not
the body or reference label.
11 of 101
Now that we have set up the circuit ready for simulation, we need to place a graph to display the
results on.
Graphs
Graphs play an important part in simulation: they not only act as a display medium for results but
actually define what simulations are carried out. By placing one or more graphs and indicating what
sort of data you expect to see on the graph (digital, voltage, impedance, etc.) ISIS knows what type or
types of simulations to perform and which parts of a circuit need to be included in the simulation. For a
transient analysis we need an Analogue type graph. It is termed analogue rather than transient in order
to distinguish it from the Digital graph type, which is used to display results from a digital analysis,
which is really a specialised form of transient analysis. Both can be displayed against the same time
axis using a Mixed graph.
To place a graph, first select the Gadgets Mode icon, and then the Graph icon: the Object Selector
displays a list of the available graph types. Select the Analogue type, move the mouse over to the edit
window, click (and hold down) the left mouse button, drag out a rectangle of the appropriate size, and
then release the mouse button to place the graph.
Graphs behave like most objects in ISIS, though they do have a few subtleties. We will cover the
features pertinent to the tutorial as they occur, but the reference chapter on graphs is well worth a
read. You can tag a graph in the usual way with the right mouse button, and then (using the left mouse
button) drag one of the handles, or the graph as a whole, about to resize and/or reposition the graph.
We now need to add our generator and probes on to the graph. Each generator has a probe
associated with it, so there is no need to place probes directly on generators to see the input wave
forms. There are three ways of adding probes and generators to graphs:
The first method is to tag each probe/generator in turn and drag it over the graph and release it exactly as if we were repositioning the object. ISIS detects that you are trying to place the
probe/generator over the graph, restores the probe/generator to its original position, and adds a
trace to the graph with the same reference as that of the probe/generator. Traces may be
associated with the left or right axes in an analogue graph, and probes/generators will add to the
axis nearest the side they were dropped. Regardless of where you drop the probe/generator, the
new trace is always added at the bottom of any existing traces.
The second and third method of adding probes/generators to a graph both use the Add Trace
command on the graph menu; this command always adds probes to the current graph (when there is
more than one graph, the current graph is the one currently selected on the Graph menu).
12 of 101
If the Add Trace command is invoked without any tagged probes or generators, then the Add
Transient Trace dialogue form is displayed, and a probe can be selected from a list of all probes in
the design (including probes on other sheets).
If there are tagged probes/generators, invoking the Add Trace command causes you to be
prompted to Quick Add the tagged probes to the current graph; selecting the No option invokes the
Add Transient Trace dialogue form as previously described. Selecting the Yes option adds all
tagged probes/generators to the current graph in alphabetical order.
We will Quick Add our probes and the generator to the graph. Either tag the probes and generators
individually, or, more quickly, drag a tag box around the entire circuit - the Quick Add feature will
ignore all tagged objects other than probes and generators. Select the Add Trace option from the
Graph menu and answer Yes to the prompt. The traces will appear on the graph (because there is only
one graph, and it was the last used, it is deemed to be the current graph). At the moment, the traces
consist of a name (on the left of the axis), and an empty data area (the main body of the graph). If the
traces do not appear on the graph, then it is probably too small for ISIS to draw them in. Resize the
graph, by tagging it and dragging a corner, to make it sufficiently big.
As it happens, our traces (having been placed in alphabetical order) have appeared in a reasonable
order. We can however, shuffle the traces about. To do this, ensure the graph is not tagged, and click
right over the name of a trace you want to move or edit. The trace is highlighted to show that it is
tagged. You can now use the left mouse button to drag the trace up or down or to edit the trace (by
clicking left without moving the mouse) and the right button to delete the trace (i.e. remove it from the
graph). To untag all traces, click the right mouse button anywhere over the graph, but not over a trace
label (this would tag or delete the trace).
There is one final piece of setting-up to be done before we start the simulation, and this is to set the
simulation run time. ISIS will simulate the circuit according to the end time on the x-scale of the graph,
and for a new graph, this defaults to one second. For our purposes, we want the input square wave to
be of fairly high audio frequency, say about 10kHz. This needs a total period of 100s. Tag the graph
and click left on it to bring up its Edit Transient Graph dialogue form. This form has fields that allow
you to title the graph, specify its simulation start and stop times (these correspond to the left and right
most values of the x axis), label the left and right axes (these are not displayed on Digital graphs) and
also specifies general properties for the simulation run. All we need to change is the stop time from
1.00 down to 100u (you can literally type in 100u - ISIS will covert this to 100E-6) and select OK.
The design is now ready for simulation. At this point, it is probably worthwhile loading our version of the
design (ASIMTUT2.DSN) so as to avoid any problems during the actual simulation and subsequent
sections. Alternatively, you may wish to continue with the circuit you have entered yourself, and only
13 of 101
Simulation
To simulate the circuit, all you need do is invoke the Simulate command on the Graph menu (or use its
keyboard short-cut: the space bar). The Simulate command causes the circuit to be simulated and the
current graph (the one marked on the Graph menu) to be updated with the simulation results.
Do this now. The status bar indicates how far the simulation process has reached. When the
simulation is complete, the graph is redrawn with the new data. For the current release of ISIS and
simulator kernels, the start time of a graph is ignored - simulation always starts at time zero and runs
until the stop time is reached or until the simulator reaches a quiescent state. You can abort a
simulation mid-way through by pressing the ESC key.
A simulation log is maintained for the last simulation performed. You can view this log using the View
Log command on the Graph menu (or the CTRL+'V' keyboard short-cut). The simulation log of an
analogue simulation rarely makes for exciting reading, unless warnings or errors were reported, in
which case it is where you will find details of exactly what went wrong. In some cases, however, the
simulation log provides useful information that is not easily available from the graph traces.
If you invoke the Simulate command a second time, you may notice something odd - no simulation
occurs. This is because ISIS's partition management is clever enough to work out whether or not the
part(s) of a design being probed by a particular graph have changed and thus it only performs a
simulation when required. In terms of our simple circuit, nothing has changed, and therefore no
simulation takes place. If for some reason you want to always re-simulate a graph, you can check the
Always Simulate check box on the graphs Edit Transient Analysis dialogue form. If you are in doubt
as to what was actually simulated, you can check the Log Netlist check box on the same dialogue
form; this causes the simulator netlist to be included in the simulation log.
So the first simulation is complete. Looking at the traces on the graph, its hard to see any detail. To
check that the circuit is working as expected, we need to take some measurements...
Taking Measurements
A graph sitting on the schematic, alongside a circuit, is referred to as being minimised. To take timing
measurements we must first maximise the graph. To do this, first ensure the graph is not tagged, and
then click the left mouse button on the graph's title bar; the graph is redrawn so that it occupies the
entire display. Along the top of the display, the menu bar is maintained. Below this, on the left side of
the screen is an area in which the trace labels are displayed and to right of this are the traces
14 of 101
themselves. At the bottom of the display, on the left are four buttons (Max, Out, DX and DY), and to
the right of these is a status bar that displays cursor time/state information. As this is a new graph, and
we have not yet taken any measurements, there are no cursors visible on the graph, and the status bar
simply displays a title message.
The traces are colour coded, to match their respective labels. The OUT and U1(POS IP) traces are
clustered at the top of the display, whilst the IN trace lies along the bottom. To see the traces in more
detail, we need to separate the IN trace from the other two. This can be achieved by using the left
mouse button to drag the trace label to the right-hand side of the screen. This causes the right y-axis
to appear, which is scaled separately from the left. The IN trace now seems much larger, but this is
because ISIS has chosen a finer scaling for the right axis than the left. To clarify the graph, it is
perhaps best to remove the IN trace altogether, as the U1(POS IP) is just as useful. Click right on the
IN label twice to delete it. The graph now reverts to a single, left hand side, y-axis.
We shall measure two quantities:
The voltage gain of the circuit.
The approximate fall time of the output.
These measurements are taken using the Cursors.
Each graph has two cursors, referred to as the Reference and Primary cursors. The reference cursor
is displayed in red, and the primary in green. A cursor is always 'locked' to a trace, the trace a cursor
is locked to being indicated by a small 'X' which 'rides' the waveform. A small mark on both the x- and
y-axes will follow the position of the 'X' as it moves in order to facilitate accurate reading of the axes. If
moved using the keyboard, a cursor will move to the next small division in the x-axis.
Let us start by placing the Reference cursor. The same keys/actions are used to access both the
Reference and Primary cursors. Which is actually affected is selected by use of the CTRL key on the
keyboard; the Reference cursor, as it is the least used of the two, is always accessed with the CTRL
key (on the keyboard) pressed down. To place a cursor, all you need to do is point at the trace data (
not the trace label - this is used for another purpose) you want to lock the cursor to, and click left. If
the CTRL key is down, you will place (or move) the Reference cursor; if the CTRL key is not down,
then you will place (or move) the Primary cursor. Whilst the mouse button (and the bkey for the
Reference cursor) is held down, you can drag the cursor about. So, hold down (and keep down) the
CTRL key, move the mouse pointer to the right hand side of the graph, above both traces, and press
the left mouse button. The red Reference cursor appears. Drag the cursor (still with the CTRL key
down) to about 70u or 80u on the x-axis. The title on the status bar is removed, and will now display the
cursor time (in red, at the left) and the cursor voltage along with the name of the trace in question (at
15 of 101
16 of 101
Frequency Analysis
As well as transient analysis, there are several other analysis types available in analogue circuit
simulation. They are all used in much the same way, with graphs, probes and generators, but they are
all different variations on this theme. The next type of analysis that we shall consider is Frequency
analysis. In frequency analysis, the x-axis becomes frequency (on a logarithmic scale), and both
magnitude and phase of probed points may be displayed on the y-axes.
To perform a frequency analysis a Frequency graph is required. Click left on the Graph icon, to
re-display the list of graph types in the object selector, and click on the Frequency graph type. Then
place a graph on the schematic as before, dragging a box with the left mouse button. There is no need
to remove the existing transient graph, but you may wish to do so in order to create some more space
(click right twice to delete a graph).
Now to add the probes. We shall add both the voltage probes, OUT and U1(POS IP). In a frequency
graph, the two y-axes (left and right) have special meanings. The left y-axis is used to display the
magnitude of the probed signal, and the right y-axis the phase. In order to see both, we must add the
probes to both sides of the graph. Tag and drag the OUT probe onto the left of the graph, then drag it
onto the right. Each trace has a separate colour as normal, but they both have the same name. Now
tag and drag the U1(POS IP) probe onto the left side of the graph only.
Magnitude and phase values must both be specified with respect to some reference quantity. In ISIS
this is done by specifying a Reference Generator. A reference generator always has an output of 0dB
(1 volt) at 0. Any existing generator may be specified as the reference generator. All the other
17 of 101
generators are in the circuit are ignored in a frequency analysis. To specify the IN generator as the
reference in our circuit, simply tag and drag it onto the graph, as if you were adding it as a probe.
ISIS assumes that, because it is a generator, you are adding it as the reference generator, and prints
a message on status line confirming this. Make sure you have done this, or the simulation will not work
correctly.
There is no need to edit the graph properties, as the frequency range chosen by default is fine for our
purposes. However, if you do so (by pointing at the graph and pressing CTRL-E), you will see that the
Edit Frequency Graph dialogue form is slightly different from the transient case. There is no need to
label the axes, as their purpose is fixed, and there is a check box which enables the display of
magnitude plots in dB or normal units. This option is best left set to dB, as the absolute values
displayed otherwise will not be the actual values present in the circuit.
Now press the space bar (with the mouse over the frequency graph) to start the simulation. When it
has finished, click left on the graph title bar to maximise it. Considering first the OUT magnitude trace,
we can see the pass-band gain is just over 20dB (as expected), and the useable frequency range is
about 50Hz to 20kHz. The cursors work in exactly the same manner as before - you may like to use
the cursors to verify the above statement. The OUT phase trace shows the expected phase distortion at
the extremes of the response, dropping to -90 just off the right of the graph, at the unity gain
frequency. The high-pass filter effect of the input bias circuitry can be clearly seen if the U1(POS IP)
magnitude trace is examined. Notice that the x-axis scale is logarithmic, and to read values from the
axis it is best to use the cursors.
18 of 101
sweep. We want to sweep the resistor values across a range of say 100k to 5M, so set the Start
field to 100k and the Stop field to 5M. Click on OK to accept the changes.
Of course, the resistors R1 and R2 need to be altered to make them swept, rather than the fixed values
they already are. To do this, click right and then left on R1 to edit it, and alter the Value field from 470k
to X. Note that the swept variable in the graph dialogue form was left at X as well. Click on OK, and
repeat the editing on R2 to set its value to X.
Now you can simulate the graph by pointing at it and pressing the space-bar. Then, by maximising the
graph, you can see that the bias level reduces as the resistance of the bias chain increases. By 5M
it is significantly altered. Of course, altering these resistors will also have an effect on the frequency
response. We could have done an AC Sweep analysis at say 50Hz in order to see the effect on low
frequencies.
Noise Analysis
The final form of analysis available is Noise analysis. In this form of analysis the simulator will consider
the amount of thermal noise that each component will generate. All these noise contributions are then
summed (having been squared) at each probed point in the circuit. The results are plotted against the
noise bandwidth.
There are some important peculiarities to noise analysis:
The simulation time is directly proportional to the number of voltage probes (and generators) in the
circuit, since each one will be considered.
Current probes have no meaning in noise analysis, and are ignored.
A great deal of information is presented in the simulation log file.
PROSPICE computes both input and output noise. To do the former, an input reference must be
defined - this is done by dragging a generator onto the graph, as with a frequency reference. The
input noise plot then shows the equivalent noise at the input for each output point probed.
To perform a noise analysis on our circuit, we must first restore R1 and R2 back to 470k. Do this
now. Then select a Noise graph type, and place a new graph on an unused area of the schematic. It is
really only output noise we are interested in, so tag the OUT voltage probe and drag it onto the graph.
As before, the default values for the simulation are fine for our needs, but you need to set the input
reference to the input generator IN. The Edit Noise Graph dialogue form has the check box for
displaying the results in dBs. If you use this option, then be aware that 0dB is considered to be 1 volt
19 of 101
20 of 101
INTERACTIVE SIMULATION
BASIC SKILLS
The Animation Control Panel
Interactive simulations are controlled from a simple VCR like panel that behaves just like a normal
remote control. This control is situated at the bottom right of the screen. If it is not visible you need to
select the Circuit Animation option from the Graph menu. There are four buttons that you use to
control the flow of the circuits.
The STEP button allows you to step through the animation at a defined rate. If the button is pressed
and released then the simulation advances by one time step; if the button is held down then the
animation advances continuously until the button is released. The single step time increment may be
adjusted from the Animated Circuit Configuration dialog box. The step time capability is useful for
monitoring the circuits more closely and seeing in slow motion what is affecting what.
The PAUSE button suspends the animation which can then be resumed either by clicking the
PAUSE button again, or single stepped by pressing the STEP button. The simulator will also enter
the paused state if an breakpoint is encountered.
The simulation can also be paused by presing the PAUSE key on the computer keyboard.
The STOP button tells PROSPICE to stop doing a real time simulation. All animation is stopped and
the simulator is unloaded from memory. All the indicators are reset to their inactive states but the
actuators (switches etc.) retain their existing settings.
The simulation can also be stopped by pressing SHIFT-BREAK on the computer keyboard.
During an animation, the current simulation time and average CPU loading are displayed on the status
bar. If there is insufficient CPU power to run the simulation in real time, the display will read 100% and
the simulation time will cease to advance in real time. Aside from this, no harm results from simulating
very fast circuits as the system automatically regulates the amount of simulation performed per
animation frame.
21 of 101
Pick the components you want to use from the device libraries using the P button on the Device
Selector. All the active components (actuators and indicators) are contained in the library
ACTIVE.LIB, but you can use any components which have a simulator model of some kind.
Place the components on the schematic.
Edit them - click right then click left, or press CTRL-E - in order to assign appropriate values and
properties. Many models provided context sensitive help so that information about individual
properties can be viewed by placing the caret in the field andpressing F1.
Micro-processor source code can be brought under the control of PROTEUS VSM using the
commands on the Source menu. Dont forget also to assign the object code (HEX file) to the
micro-processor component on the schematic.
Wire the circuit up by clicking on the pins.
Delete components by clicking right twice.
Move components by clicking right then dragging with the left button.
If you are not using PROTEUS Lite, enable Circuit Animation on the Graph menu.
Click the PLAY button on the Animation Control Panel to run the simulation.
Where you have used virtual instruments, or microprocessor models, popup windows related to this
components may be displayed using the commands on the Debug menu.
22 of 101
INTERACTIVE SIMULATION
ANIMATION EFFECTS
Overview
As well as any active components in the circuit, a number of other animation effects may be enabled to
help you study the circuit operation. These options may be enabled using the Set Animation Options
command on the System menu. The settings are saved with the design.
23 of 101
INTERACTIVE SIMULATION
ANIMATION TIMESTEP CONTROL
Overview
Two parameters control how an interactive simulation evolves in real time. The Animation Frame Rate
determines the number of times that the screen is refreshed per second, whilst the Animation
Timestep determines by how much simulation is progressed during each frame. For real time
operation, the timestep should be set to the reciprocal of the frame rate.
24 of 101
INTERACTIVE SIMULATION
HINTS AND TIPS
Circuit Timescale
Interactive simulations will be generally be viewed in real time, so it is no use drawing circuits with
1MHz clocks, or 10kHz sinewave inputs unless you also adjust the Timestep per Frame value in the
Animated Circuits Configuration dialog box.
If you do attempt to simulate something that operates very quickly, there are several things to bear in
mind:
Given finite CPU power, only a certain amount of simulation time can be computed in a fixed
amount of real time. PROTEUS VSM is designed to maintain its animation frame rate (frames per
second) whatever, and to cut short any frames which are not completed in the available time. The
consequence of this is that very fast circuits will simulate slowly (relative to real time) but smoothly.
Analogue component models simulate very much more slowly than digital ones. On a Pentium II PC
you can simulate digital circuitry operating up to several MHz in real time but analogue circuit
electronics will manage only about 10kHz.
Consequently it is very silly to attempt to simulate clock oscillators for digital circuitry in the
analogue domain. Instead, use a Digital Clock generate and set its Isolate Before checkbox so that
the analogue clock is not simulated.
Voltage Scaling
If you intend to use coloured wires to indicate node voltages you need to give some thought as to the
range of voltages that will occur in your circuit. The default range for displayed voltages is +/-6V so if
the circuit operates at significantly different voltages from this you may need to change the Maximum
Voltage value in the Animated Circuits Configuration dialog box.
Earthing
PROSPICE will attempt to define a sensible earth point for any active circuit which does not
specifically include a ground terminal. In practice this is usually chosen as the mid-point of the battery,
or the centre tap if the circuit has a split supply. It follows that the positive terminal of the battery will sit
above ground and the negative terminal below it, corresponding to red and blue wire colours. However,
if this behaviour is not what is required, you always have the option of explicitly defining the ground
reference point using a ground terminal in ISIS.
25 of 101
VIRTUAL INSTRUMENTS
VOLTMETERS & AMMETERS
A number of interactive voltmeter and ammeter models are provided in the ACTIVE device library.
These operate in real time and can be wired into the circuit just like any other component. Once the
simulation is started they display the voltage across their terminals or the current flowing through them
in an easy to read digital format.
The supplied models cover FSDs of 100, 100m and 100u with a resolution of 3 significant figures and
a maximum number of two decimal places. Thus the VOLTMETER object can display values from
0.01V up to 99.9V, whilst the AMMETER-MILLI can display from 0.01mA to 100mA and so on.
The voltmeter models support an internal load resistance property which defaults to 100M but can be
changed by editing the component in the usual way. Leaving the value blank disables the load
resistance element of the model.
26 of 101
VIRTUAL INSTRUMENTS
OSCILLOSCOPE
Overview
The VSM Oscilloscope is supplied as standard with PROTEUS VSM Professional, but is an optional
extra for PROTEUS VSM Lite.
The VSM oscilloscope models a basic dual beam analogue unit and is specified as follows:
Dual channel or X-Y operation.
Channel gain from 20V/div to 2mV/div
Timebase from 200ms/div to 0.5us/div
Automatic voltage level triggering locked to either channel.
27 of 101
7. Rotate the trigger dial until the display locks to the required part of the input waveform. It will lock to
rising slopes if the dial points up, and falling slopes if it points down.
& See Rotary Dials for details of how to adjust the rotary controls featured in the oscilloscope.
Modes of Operation
The oscillscope can operate in 3 modes, indicated as follows:
Single Beam - neither Dual nor X-Y leds are lit In this mode, the Ch1 and Ch2 leds indicate which
channel is being displayed.
Dual Beam - the Dual led is lit. In this mode, the Ch1 and Ch2 leds indicate which channel is being
used for triggering.
X-Y mode - the X-Y led is lit.
The current mode may be cycled through these options by clicking the button next to the Dual and X-Y
mode leds.
Triggering
The VSM oscilloscope provides an automatic triggering mechanism which enables it synchronize the
timebase to the incomming waveform.
Which input channel is used for triggering is indicated by the Ch1 and Ch2 leds.
The trigger dial rotates continuously round 360 degrees and sets the voltage level and slope at
which triggering occurs. When the mark is pointing upwards, the scope triggers on rising voltages;
when the mark points downwards it triggers on a falling slope.
If no triggering occurs for more than 1 timebase period, the timebase will free run.
28 of 101
VIRTUAL INSTRUMENTS
LOGIC ANALYSER
Overview
The VSM Logic Analyser is supplied as standard with PROTEUS VSM Professional, but is an optional
extra for PROTEUS VSM Lite.
A logic analyser operates by continuously recording incoming digital data into a large capture buffer.
This is a sampling process, so there is an adjustable resolution which defines the shortest pulse that
can be recorded. A triggering section monitors the incoming data and causes the data capture
process to stop a certain time after the triggering condition has arisen.; capturing is started by arming
the instrument. The result is that the contents of the capture buffer both before and after the trigger
time can be displayed. Since the capture buffer is very large (10000 samples, in this case) a means of
zooming and panning the display is provided. Finally, movable measurement markers allow accurate
timing measurements of pulse widths and so forth.
The VSM Logic Analyser models a basic 24 channel unit specified as follows:
8 x 1 bit traces and 2 x 8 bit bus traces.
10000 x 24 bit capture buffer.
Capture resolution from 200us per sample to 0.5ns per sample with corresponding capture times
from 2s to 5ms.
Display zoom range from 1000 samples per division in to 1 sample per division.
Triggering on ANDed combination of input states and/or edges, and bus values.
Trigger positions at 0, 25, 50, 75 and 100% of the capture buffer.
Two cursors provided for taking accurate timing measurements.
29 of 101
2. Start an interactive simulation by pressing the play button on the Animation Control Panel. The
logic analyser popup window should appear.
3. Set the resolution dial to a value suitable for your application. This represents the smallest width of
pulse that can be recorded. The finer the resolution, the shorter will be the time during which data is
captured.
4. Set the combo-boxes on the left of the instrument to define the required trigger condition. For
example, if you want to trigger the instrument when the signal connected to channel 1 is high and the
signal connected to channel 3 is a rising edge, you would set the first combo-box to "High" and the
third combo-box to "Low-High".
5. Decide whether you want to view data mainly before or after the trigger condition occurs, and click
the button next to the percentage leds to selected the required trigger position.
6.
When you are ready, click the button to the left of the armed led to arm the instrument.
The armed led will light and the trigger led will be extinguished. The logic analyser will now capture
incomming data continously whilst monitoring the inputs for the trigger condition. When this occurs,
the trigger led will light. Data capture will then continue until the part of the capture buffer after the
trigger position is full, at which point the armed led will extinguish and the captured data will appear
in the display.
30 of 101
VIRTUAL INSTRUMENTS
VSM USER INTERFACE ELEMENTS
Rotary Dials
The VSM Virtual Instruments use mouse operated rotary dials (knobs) for adjusting some parameters.
The procedure for adjusting these is as follows:
To set a rotary dial:
1. Point somewhere inside the dial.
2. Press the left mouse button and hold it down.
3. Move the mouse pointer away from the dial and then around the centre of the dial, tracing out a
circular arc to rotate the dial to the required setting.
The dial will track the angle subtended by the mouse pointer from its centre. The further away you
move the mouse from the centre, the finer the degree of control that you will have.
4. Release the mouse button to fix the new position of the dial.
31 of 101
32 of 101
33 of 101
34 of 101
time/date stamps of the object code files. The command line output from the tools will be displayed in a
window. This provides an excellent way to check that everything has built without errors or warnings.
35 of 101
parameter. It is then up to the make program to decide what code generation tools are run. A good
make program will provide enormous flexibility.
36 of 101
Single Stepping
A number of options for single stepping are provided, all available from the Debug menu.
Step Over - advances by one line, unless the instruction is a sub-routine call, in which case the
entire subroutine is executed.
Step Into - executes one source code instruction. If no source window is active, it executes one
machine code instruction. These are usually the same thing anyway unless you are debugging in a
high level language.
Step Out - executes until the current sub-routine returns.
Step To - executes until the program arrives at the current line. This option is only available when a
source code window is active.
Note that apart from Step To, the single stepping commands will work without a source code window. It
is possible - although not so easy - to debug code generated by a tool for which there is no DDX
support.
Using Breakpoints
Breakpoints provide a very powerful way to investigate problems in the software or software/hardware
interaction in a design. Typically, you will set a breakpoint at the start of a subroutine that is causing
trouble, start the simulation running, and then interact with the design such that the program flow
arrives at the breakpoint. At this point, the simulation will be suspended. Thereafter you can single step
37 of 101
the program code, observing register values, memory locations and other conditions in the circuit as
you go. Turning on the Show Logic State of Pins effect can also be very instructive.
When a source code window is active, breakpoints can be set or cleared on the current line by
pressing F9. You can only set a breakpoint on a line which has object code.
If the source code is changed, PROTEUS VSM will endeavour to re-locate the breakpoints based on
sub-routine addresses in the file, and by pattern matching the object code bytes. Obviously, if you
change the code radically this can go awry but generally it works very well and you shoudnt need to
think about it.
38 of 101
39 of 101
40 of 101
Placing Graphs
The third stage of the simulation process is to define what analysis type or types you want performed.
Analysis types include analogue and digital transient analyses, frequency analyses, sweep analyses,
etc. Within ISIS, defining an analysis type is synonymous with placing a graph object of the required
analysis type. Again, as graphs are just like most other objects within ISIS, placing one is simply a
case of selecting the correct icon, selecting the required graph type, and placing the graph on the
design, alongside the circuit. Not only does this allow you to view several types of analysis
simultaneously, it fits very well with the 'drag-and-drop' methodology adopted throughout ISIS and has
the added benefit that you can view (and generate hard-copy output with) the graphs alongside the
circuit that generated them.
41 of 101
Having placed one or more graph objects, you must now specify which probe/generator data you want
to see on which graphs. Each graph displays a number of traces. The data for a trace is generally
derived from a single probe or generator. However, ISIS provides for a trace to display the data from
up to four separate probes/generators combined by a mathematical Trace Expression. For example, a
trace might be set up to display the product of the data from a voltage probe and current probe (both
monitoring the same point) so effectively displaying the power at the monitored point.
Specifying the traces to be displayed on a graph can be done in a number of ways: you can
tag-and-drag a probe onto a graph or you can tag several probes/generators and add them all to a
graph in a single operation, or for traces requiring trace expressions, you can must use a dialogue
form to select the probes and specify the expression.
42 of 101
Placing Graphs
To place a graph:
1. Obtain a list of graph types by selecting the Gadget Mode icon and then the Graph icon. The list of
graph types is displayed in the selector on the right hand side of the display.
2. Select the type of graph you wish to place from the Object Selector.
3. Place the mouse in the Editing Window at the point you wish the top left corner of the graph to
appear. Press down the left mouse button and drag the out a rectangle for the size of the graph you
wish to place, then release the mouse button.
Editing Graphs
All graphs can be moved, resized or edited to change their properties using the standard ISIS editing
techniques.
The properties of a graph are changed via its Edit... dialogue form invoked as for any object in ISIS
by either first tagging it and then clicking the left mouse button on it, or by pointing at it with mouse and
pressing CTRL+'E' on the keyboard.
43 of 101
44 of 101
Select one of the Selected Probes buttons P1 through to P4, and then select a probe or
generator from the Probes list box to be assigned to the selected trace probe. The name of the
selected generator or probe will appear alongside the Selected Probes button and the Selected
Probe name (P1 through P4) will appear in the Expression field if it is not already present.
If a trace expression is not allowed, only the P1 trace will be enabled - and the new trace will display
the data associated with the P1 probe selected.
5. Repeat steps [3] & [4] until you have selected all the generators or probes you require for the trace.
6. Enter the trace expression in the Expression field. Within the expression, the selected probes
should be represented by the names P1, P2, P3 and P4 which correspond to the probes selected
alongside the P1, P2, P3 and P4 buttons respectively.
If the trace type selected does not support a trace expression the contents of the Expression field
will be ignored.
7. Select the OK button to add the new trace to the graph.
45 of 101
Executing Simulations
Once a graph has been placed with probes and generators assigned to it, you can initiate a simulation
by pointing at the graph and pressing the space-bar. ISIS then determines which parts of the design
need to be simulated in order to update the graph, runs the simulations, and displays the new data.
Throughout the simulation process, a simulation log is maintained. In general, the log contains little of
interest. However, if simulation errors occur, or you have requested the simulation netlist to be logged
(see Editing Graphs on editing graphs for how to do this) or the analysis type results in data that is not
amenable to graphical display (e.g. an analogue Noise analysis) then you will need to view the log at
the end of the simulation run.
To update a graph and view the simulation log:
1. Either ensure the graph you want to update is the current graph and then select the Simulate
command form the Graph menu, or, place the mouse pointer over the graph you wish to update and
press the space bar.
2. At the end of the simulation, if errors have occurred, you will be prompted to Load partial results? If
you reply YES simulation data is loaded up to the time of the error and displayed on the graph. If
you reply NO the simulation log is displayed in a pop-up text viewer window.
If no errors occurred, or if you selected YES above, you can still view the simulation log by either
selecting the View Log command from the Graph menu or by using its keyboard short-cut, CTRL+V.
46 of 101
47 of 101
ANALYSIS TYPES
INTRODUCTION
There are eleven types of graph available; each one displays the results of a different type of circuit
analysis supported by PROSPICE:
Analogue
Digital
Plots logic levels against time, much like a logic analyser. Traces can
represent single data bits or the binary value of a bus.
Digital graphs are computed using Event Driven Simulation.
Mixed Mode
Frequency
Plots small signal voltage or current gains against frequency. This is also
known as a Bode plot, and both magnitude and phase can be displayed. In
addition, with the use of Trace Expressions you can produce input and
output impedance plots.
Note that plotted values are gains referenced to a specified input generator.
DC Sweep
AC Sweep
Creates a family of frequency plots with one response for each value of the
sweep variable.
Transfer
Noise
Distortion
Plots the level of 2nd and 3rd harmonic distortion against frequency. Can
also be used to plot intermodulation distortion.
Fourier
Audio
Performs a transient analysis and then plays the result through your sound
card. Can also generate Windows WAV files from circuit output.
Interactive
In addition, all types of analysis start by computing the operating point - i.e. the initial values of all node
voltages, branch currents and state variables as at time 0. Information regarding the operating point is
available from within ISIS via a point and shoot interface.
48 of 101
ANALYSIS TYPES
DC OPERATING POINT
This is the one analysis type for which there is not a corresponding graph. Instead, the information
computed can be viewed through a point and shoot user interface within ISIS.
It is important to appreciate that the operating point is computed for the Current Graph, and that there
must be a graph set up on the schematic in order to compute the operating point. The reason for this is
that without a graph, there is no way for the system to know which parts of the circuit to simulate. In
addition, the functionality related to Property Expression Evaluation and the ability to set properties on
a graph means that actual component values may depend on which graph is used.
To view operating point values:
1. Set up the circuit as for a Transient Analysis.
2. Add a graph to the circuit and add probes and generators to it appropriate to the section of circuitry
you wish to simulate.
3. Simulate the operating point by pressing ALT+SPACE. Voltage and current probes will display their
operating point DC values immediately.
4. Click on the Multimeter icon.
5. Point at any component and click left to view its operating point information
A couple of things to note:
It is possible to compute the operating point without a graph. In this case, an attempt is made to
simulate the entire schematic as one partition - i.e irrespective of any probes, generators or tapes.
This will fail if there are objects placed which have not been modelled.
Components which are actually sub-circuit parents, or which are modelled by MDF or SPICE files
will display basic operating point information only - i.e. their node voltages.
49 of 101
ANALYSIS TYPES
ANALOGUE TRANSIENT ANALYSIS
Overview
This graph type represents what you might expect to see on an oscilloscope. The x-axis shows the
advance of time, whilst the y-axis displays voltage or current. We often refer to this type of analysis as
Transient Analysis because it takes place in the time domain.
Transient analysis is perhaps the most commonly used form of analysis. Everything that you would
measure with an oscilloscope on a real prototype can be measured on an analogue graph. It can be
used to check that the circuit operates in the expected manner, to take quick measurements of gain, to
assess visually the way in which a signal is distorted, to measure the current flowing from the supply or
through individual components, and so on.
Method of computation
Technically speaking, this type of simulation can be referred to as Non-Linear Nodal Analysis, and is
the form of computation used by all SPICE simulators. Considering a single point in time, every
component in the circuit is represented as a combination of current sources and/or resistors. This
arrangement can then be described as a set simultaneous equations using Ohms law and Kirchoffs
laws, and the equations solved by Gaussian Elimination. Each time the equations are solved, the values
of the current sources and resistors are adjusted by laws built into the component models and the
process is repeated until a stable set of values results.
For a simulation involving the advance of time there are two separate stages. The first task is to
compute the operating point of the circuit - that is the voltages around the circuit at the very start of the
simulation. This is then followed by considering the effect of advancing time on the circuit, and
re-calculating the voltages at every step (iterating to convergence as described above). The size of
each time increment is crucial to the stability of the calculations, and so PROSPICE will adjust it
automatically within user defined limits. Circuits that are changing quickly, such as high switching
speed line drivers, need smaller time steps and so require more effort to simulate than circuits that
change more smoothly. The use of time step control and iterative solutions all adds up to a great deal
of calculations, which can make transient analysis seem comparatively slow.
Since the algorithm involves iteration, there is always a possibility that the solution will not converge.
Most commonly this happens at the initial time-point, meaning that the simulator cannot establish a
stable or unique set of values for the operating point. Occasionally, however, it can occur further into a
simulation where the circuit behaviour at a particular time becomes highly unpredictable. PROSPICE
implements a number of techniques to help avoid such problems, but it is not impossible to defeat. This
said, being based on Berkeley SPICE3F5 it is as good as you are going to get.
50 of 101
and the right side for current. It is possible to place a digital probe on an Analogue graph, but a Mixed
graph is usually more appropriate.
To perform a transient analysis of an analogue circuit:
1. Add generators as necessary around the circuit, to drive the circuit inputs.
& See Placing Generators for information on placing generators, and GENERATORS AND PROBES
for a discussion of the different types of analogue generators.
2. Place probes around the circuit at points of interest. These may be at points within the circuit, as
well as obvious outputs.
3. Place an Analogue Graph.
4. Add the probes (and generators, if desired) to the graph.
5. Edit the graph (point at it and press CTRL+'E', and set up the simulation stop time required, as well
as labelling the graph and setting control properties if required.
6. Start the simulation by either selecting the Simulate command on the Graph menu or pressing the
space bar.
51 of 101
ANALYSIS TYPES
ANALOGUE TRANSIENT ANALYSIS
Overview
This graph type represents what you might expect to see on an oscilloscope. The x-axis shows the
advance of time, whilst the y-axis displays voltage or current. We often refer to this type of analysis as
Transient Analysis because it takes place in the time domain.
Transient analysis is perhaps the most commonly used form of analysis. Everything that you would
measure with an oscilloscope on a real prototype can be measured on an analogue graph. It can be
used to check that the circuit operates in the expected manner, to take quick measurements of gain, to
assess visually the way in which a signal is distorted, to measure the current flowing from the supply or
through individual components, and so on.
Method of computation
Technically speaking, this type of simulation can be referred to as Non-Linear Nodal Analysis, and is
the form of computation used by all SPICE simulators. Considering a single point in time, every
component in the circuit is represented as a combination of current sources and/or resistors. This
arrangement can then be described as a set simultaneous equations using Ohms law and Kirchoffs
laws, and the equations solved by Gaussian Elimination. Each time the equations are solved, the values
of the current sources and resistors are adjusted by laws built into the component models and the
process is repeated until a stable set of values results.
For a simulation involving the advance of time there are two separate stages. The first task is to
compute the operating point of the circuit - that is the voltages around the circuit at the very start of the
simulation. This is then followed by considering the effect of advancing time on the circuit, and
re-calculating the voltages at every step (iterating to convergence as described above). The size of
each time increment is crucial to the stability of the calculations, and so PROSPICE will adjust it
automatically within user defined limits. Circuits that are changing quickly, such as high switching
speed line drivers, need smaller time steps and so require more effort to simulate than circuits that
change more smoothly. The use of time step control and iterative solutions all adds up to a great deal
of calculations, which can make transient analysis seem comparatively slow.
Since the algorithm involves iteration, there is always a possibility that the solution will not converge.
Most commonly this happens at the initial time-point, meaning that the simulator cannot establish a
stable or unique set of values for the operating point. Occasionally, however, it can occur further into a
simulation where the circuit behaviour at a particular time becomes highly unpredictable. PROSPICE
implements a number of techniques to help avoid such problems, but it is not impossible to defeat. This
said, being based on Berkeley SPICE3F5 it is as good as you are going to get.
52 of 101
and the right side for current. It is possible to place a digital probe on an Analogue graph, but a Mixed
graph is usually more appropriate.
To perform a transient analysis of an analogue circuit:
1. Add generators as necessary around the circuit, to drive the circuit inputs.
& See Placing Generators for information on placing generators, and GENERATORS AND PROBES
for a discussion of the different types of analogue generators.
2. Place probes around the circuit at points of interest. These may be at points within the circuit, as
well as obvious outputs.
3. Place an Analogue Graph.
4. Add the probes (and generators, if desired) to the graph.
5. Edit the graph (point at it and press CTRL+'E', and set up the simulation stop time required, as well
as labelling the graph and setting control properties if required.
6. Start the simulation by either selecting the Simulate command on the Graph menu or pressing the
space bar.
53 of 101
ANALYSIS TYPES
MIXED MODE TRANSIENT ANALYSIS
Overview
The mixed mode graph allows both digital traces and analogue waveforms to be displayed above the
same x-axis which represents the advance of time. Mixed mode analysis is, in fact, used whenever a
circuit contains both analogue and digital models, but the mixed mode graph is the only type capable of
displaying both types of waveform simultaneously.
Method of Computation
Mixed mode transient analysis combines both the Non-Linear Nodal Analysis of SPICE3F5 with the
Event Driven Simulation of DSIM. The detailed implementation of this is extremely complex, but the
basic algorithm may be summarized as follows:
Prior to simulation, each net is analysed to see whether analogue, digital or both types of model
connect to it. Where analogue voltages drive digital inputs, PROSPICE inserts ADC interface
objects, and where digital outputs drive analogue components, it inserts DAC interface objects.
Where several digital inputs are driven from the same net, multiple ADC objects are created so that
different logic switching levels and loading characteristic can be modelled for each input. Similarly,
in the rarer case of several digital outputs being connected together, multiple DAC objects are
created.
The operating point is established as described below.
Simulation then proceeds as for a normal analogue analysis except that the ADC generate a digital
event whenever their input voltages cross the switching threshold. As soon as this happens, the
analogue simulation is suspended, and digital simulation is carried to establish the effect of these
new events.
When digital simulation results in a change of state for a DAC interface object, the analogue
simulation is forced to simulate carefully around the switching time. In fact, the DAC outputs model
a transition time (rise or fall) and a number of timepoints will be simulated during this period
Finding the Operating Point
Establishing the operating point is especially tortuous for mixed mode simulation, because the state of
the analogue circuit affects the state of the digital components and vice versa. Essentially, PROSPICE
proceeds as follows:
Initial condition (IC) values are applied to both analogue and digital nets; other nets are assumed to
start at zero volts.
The nodal matrices are then constructed and solved as per normal SPICE simulation.
For each such iteration, the digital circuit is re-processed to allow for changes in the input to the
ADCs. Where such changes propagate through several digital models, the digital circuit is allowed
to iterate to stability.
DAC objects re-assign their outputs according to any changes of state in the digital circuit. If the
digital circuit does not settle, this is ignored as it may be a transient citation.
Iteration round this loop continues until a steady state is found, or until the iteration limit is reached.
54 of 101
55 of 101
ANALYSIS TYPES
FREQUENCY ANALYSIS
Overview
With Frequency Analysis you can see how the circuit behaves at different frequencies. Only one
frequency is considered at a time, so the plots are not like those seen on a spectrum analyser, where
all frequencies are considered together. Instead, the simulation is similar in effect to connecting a
frequency generator to the input, and looking at the output with an AC voltmeter. As well as the
magnitude, however, the phase of the probed signal can also be seen.
Frequency analysis produces frequency response or Bode plots. It is useful in checking that filters are
behaving as expected, or that amplifier stages will work correctly across the required frequency range.
Frequency graphs can also be used to plot small signal input and output impedance against frequency.
Method of computation
Frequency analysis is performed by first finding the operating point of the circuit, and then replacing
all the active components with linear models. The internal capacitances of the active devices are
calculated at the operating point, and assumed not to vary much over the working voltage swings of the
circuit. All the generators, apart from frequency reference generators (see below) are replaced by
their internal resistances. This causes power lines to be effectively connected together, as is normally
the case during frequency computations.
The analysis is then performed with complex numbers in a linear fashion. The frequency of interest is
gradually increased from the starting to the concluding frequency in even increments. The linear
nature of this analysis makes it typically much faster than transient analysis, even though complex
numbers are used.
It is important to remember that frequency analysis assumes a linear circuit. This means that a pure
sine wave at the input will produce a pure sine wave at the output, over all the frequencies probed. Of
course, no real active circuit is purely linear but many are close enough to allow this form of analysis.
There are also circuits which are not at all linear, such as line repeaters with schmitt trigger inputs. For
non-linear circuits the term 'frequency response' has no real mathematical meaning, and so any
frequency simulation will not produce meaningful results. Should you be interested in the frequency
domain behaviour of such circuits, then Fourier analysis is much more appropriate.
56 of 101
rest of the microphone model (such as modelled frequency response) need to be taken into
consideration.
The second and third techniques will be used more often. The action of dragging a generator onto a
frequency graph is different to dragging it onto a transient graph. Instead of adding the generator's
probe, the generator becomes the circuit reference point. The generator need not be a Sine generator
- DC, Pulse and Pwlin will all work as well. If you want to add the generator as a probe, it can still be
done using the Add Trace dialogue form.
The magnitude of the reference is always 1 volt, the phase is always 0 degrees. The internal resistance
of the reference generator will follow whatever was defined for the generator in the first place. This is
used for the dB calculations, i.e. 0dB = 1 volt. ISIS will limit very small values, to avoid log(0), to
-200dB.
Frequency graphs always have both left and right y-axes. The left y-axis is used to display the
magnitude of the probed signal, and the right y-axis is used to display the phase. If you drag a probe
onto the left of the graph, it will display magnitude - if you drag it onto the right, the phase. The x-axis is
used to display the frequency of the reference generator. A logarithmic scale is always used for the
frequency. The left y-axis may be displayed either in dBs or normal units, and the right y-axis is
always in degrees.
To see the frequency response of a circuit:
1. Place probes around the circuit at points of interest.
2. Place a Frequency graph.
3. Add the probes to it. Add to the left for magnitude, and to the right for phase. You may well want to
add probes twice in order to see both phase and magnitude.
4. Edit the graph (point at it and press CTRL+'E') and set the required start and stop frequencies, and
any Simulation Control Properties required.
5. Press the space bar to invoke PROSPICE.
The samples files ZIN.DSN and ZOUT.DSN show how to combine frequency graphs with trace
expressions to plot input and output impedance.
57 of 101
ANALYSIS TYPES
DC SWEEP ANALYSIS
Overview
With a DC Sweep analysis you can see how changing a circuit will affect its operation. This is
achieved using Property Expression Evaluation in the PROSPICE simulator engine. The sweep graph
defines a variable that can be swept in even steps over a user-defined range. The sweep variable can
appear in any property within the circuit, such as a resistor value, a transistor gain or even the circuit
temperature.
A DC Sweep curve shows the steady state voltage (or current) levels of the probed points around the
circuit, as the swept variable is increased. It can be used to plot the DC transfer characteristic of a
circuit by assigning the swept variable to a generator value, as well as plotting the effect of changing
component values on the operating point of the circuit.
Method of computation
In a DC sweep PROSPICE will repeatedly find the operating point of the circuit, incrementing the
swept variable between calculations. PROSPICE will re-calculate all the variables used between steps,
so the swept variable can be used as often as is required, and variables based on the swept variable
can also be used. Any circuit initialisation parameters will be honoured for every operating point
calculated.
58 of 101
59 of 101
ANALYSIS TYPES
AC SWEEP ANALYSIS
Overview
This type of analysis creates a family of frequency response curves for a different values of a swept
variable.
The main use for this graph type is in seeing how a particular component value affects the frequency
response of your circuit.
Method of Computation
This analysis is computed exactly as an ordinary frequency response except that multiple runs are
performed, one run for each value of the sweep variable.
The restriction of a linear circuit applies to this analysis as it does for a normal frequency analysis see Frequency Analysis.
60 of 101
ANALYSIS TYPES
DC TRANSFER CURVE ANALYSIS
Overview
This graph type is specifically designed for producing characteristic curve families for semiconductor
devices, although it occasionally finds other applications. Each curve consists of a plot of operating
point voltage or current against the value of a nominated input generator which is swept from one DC
value to another. An additional generator may also be stepped to produce a set of curves.
Method of Computation
This is very similar to the computation for a DC Sweep analysis except that two values can be swept.
The operating point is found for the starting value of each generator and the first generator is then
stepped through the specified range. After each sweep of the first generator, the second generators
value is incremented; a new curve is plotted for each discrete value of the second generator.
61 of 101
one more curve than the number of steps, because one step implies two discrete values.
7. Close the dialogue form and select OK to simulate the graph.
62 of 101
ANALYSIS TYPES
NOISE ANALYSIS
Overview
The SPICE simulator engine can model the thermal noise generated in resistors and semiconductor
devices. The individual contributions of noise are summed together at a voltage probe in the circuit for
a range of frequencies. The noise voltage, normalised with respect to the square root of the noise
bandwidth, can then be plotted against frequency. Traces on a noise graph always have units of V/Hz.
Two types of noise figure are computed - Output Noise and Equivalent Input Noise. The computation
of the latter enables comparison of the noise with the input signal, or input noise, since it represents
the level of noise at the input that would be required to create the actually noise at the output taking into
account the circuit gain at a particular frequency.
Placing a probe on the left axis displays output noise, whilst equivalent input noise can be displayed by
dragging the probe onto the right axis.
Noise analysis tends to produce extremely small values (of the order of nanovolts). For this reason,
there is the option to display them in dBs. The 0dB reference is 1V/Hz.
Correct modelling of noise for circuits involving IC macro models is not guaranteed in any way,
because these models may well use linear controlled sources to model basic device behaviour only.
Method of calculation
The operating point of the circuit is computed in the normal way, and then the circuit model is modified
to correctly sum the noise contributions. All generators except the input reference are ignored in noise
analysis (except during computation of the operating point) and so do not have to be removed before
the analysis. The PROSPICE engine will compute the thermal noise for each voltage probe in the
circuit, including those associated with generators and tapes, as it has no way of knowing which
probes you wish to look at after the analysis. Noise currents are not supported, and the PROSPICE
engine will ignore any current probes. A separate simulation is done for each probe in a noise
analysis, so the simulation time is roughly proportional to the number of voltage probes placed.
63 of 101
2. Add the voltage probes at the circuit outputs, or other points of interest, to the graph. see Adding
Traces To A Graph.
3. Press the space bar to invoke the PROSPICE simulator engine.
4. If the noise level needs to be reduced, examine the simulation log (CTRL+'V') to determine the
source of the noise.
64 of 101
ANALYSIS TYPES
DISTORTION ANALYSIS
Overview
Distortion analysis determines the level of distortion harmonics produced by the circuit under test.
These can be either the 2nd and 3rd harmonics of a single fundamental or the intermodulation
products of two test signals.
Distortion is created by non-linearities in a circuits transfer function - a circuit comprising linear
components only (resistors, capacitors, inductors, linear controlled sources) will not produce any
distortion. SPICE distortion analysis models distortion for diodes, bipolar transistors, JFETs and
MOSFETs.
Correct modelling of distortion for circuits involving IC macro models is not guaranteed in any way,
because these models may well use linear controlled sources to model basic device behaviour only.
Similar information can be established using a Fourier analysis, but the Distortion analysis is also able
to show how the distortion varies as the fundamental frequency is swept.
Method of Computation
This analysis is based on the small signal (AC) models for the devices in the circuit so the first step is
to compute the operating point. Each non-linear device model then contributes a complex distortion
value for the appropriate harmonics, dependent on how much the device is seeing of the input
fundamental. The extent to which these harmonics appear at the output determines the values plotted.
The process is repeated across the specified range of input frequencies. In fact, the mathematics of
this analysis is extremely complicated and involves the construction and manipulation of Taylor series
to represent the device non-linearities.
Note that complex values are used, so the analysis yields information about both the magnitude and
phase of each harmonic.
For single frequency harmonic distortion, two curves are produced for each trace on the graph - one
for 2nd harmonic and one for 3rd harmonic.
For intermodulation distortion, two input frequencies are used, specified in terms of a ratio between the
2nd frequency (F2) and the fundamental (F1). Three curves per trace are displayed showing the
intermodulation artefacts at F1+F2, F1-F2 and 2F1-F2.
Some care is needed in choosing the ratio F2/F1 since mathematically oddities can otherwise occur.
For example, if F2/F1 is 0.5, the value of F1-F2 is F2 and the value of the F1-F2 plot will then be
meaningless as it coincides with the second fundamental. In general you should try to choose irrational
numbers for this ratio. F2/F1=49/100 would be a much better choice.
Note that there is a constraint of F2/F1 < 1.
65 of 101
In either case, which curve is which may be established by placing a cursor on the graph - the curve
your are pointing at will be identified on the right hand side of the status bar.
66 of 101
ANALYSIS TYPES
FOURIER ANALYSIS
Overview
Fourier Analysis is the process of transforming time domain data into to the frequency domain and the
result is similar to that obtained by connecting up a spectrum analyser instead of an oscilloscope. It is
especially useful in analysing the harmonic content of signals, perhaps to look for particular types of
distortion but has many other uses also.
Method of Calculation
Fourier analyses are created by first executing a Transient Analysis and then performing a Fast
Fourier Transform on the resulting data. This process involves discrete time sampling of the time
domain data with the result that the use Nyquist Sampling criterion applies. Put simply, this means that
the highest frequency that can be observed is half that of the sampling frequency. However, other
misleading effects can occur due to aliasing of the sampling frequency with harmonics of the input
signal that are higher than half the sampling frequency. To minimize these effects, various types of
window can be applied to the input data prior to the FFT.
67 of 101
ANALYSIS TYPES
AUDIO ANALYSIS
Overview
PROTEUS VSM incorporates a number of features that enable you to hear the output from your
circuits (providing you have a sound card, of course!). The major component of this is the Audio
graph. This is essentially the same as an Analogue graph except that after simulation, a Windows
WAV file is generated from the time domain data and played through your sound card.
The WAV files can also be exported for use in other applications.
Method of Calculation
Audio analyses are performed in exactly the same way as for Transient Analysis except that after
simulation, the data is re-sampled at one of the standard PC sampling rates (11025, 22050 or
44100Hz) then written out in WAV format using the standard Windows functions provided for this
purpose. Finally the command is sent to play the WAV file to your audio hardware.
68 of 101
ANALYSIS TYPES
INTERACTIVE ANALYSIS
Overview
The Interactive Analysis type combines the advantages of interactive and graph based simulation. The
simulator is started in interactive mode, but the results are recorded and displayed on a graph as with
Transient Analysis.
This analysis is especially useful in examining what happens when a particular control is operated in a
design, and may be thought of as combining a storage oscilloscope and logic analyser into one
device.
Method of Computation
The method of computation is identical to that for a mixed mode transient analysis, except that the
simulator is run in interactive mode. Consequently, the operation of switches, keypads and other
actuators in the circuit will have an effect on the results. Also, the simulation will proceed at a speed
determined by the Animation Timestep rather than at the maximum rate possible.
Beware that very large amounts of data may be captured. A processor clocking at realistic speeds
will generate millions of events per second and these will occupy many megabytes if captured and
displayed on a graph - especially if you are probing data or address busses. You can quite easily
crash your system if ISIS ends up loading 20 or 30Mb of results data.
You may do better to use the Logic Analyser if it is not possible to capture the required data in a
relatively short simulation run.
As with ordinary Interactive Simulation, multi-partitioning of the circuit is not supported and any
tape objects not set to Play mode will be automatically removed from the circuit.
69 of 101
Placing Generators
To Place a Generator:
1. Obtain a list of generator types by selecting the Gadget Mode icon and then the Generator icon.
The list of generator types is then displayed in the Object Selector.
2. Select the type of generator you wish to place from the selector. ISIS will show a preview of the
generator in the Overview Window.
3. Use the Rotation and Mirror icons to orient the generator according to how you want to place it.
4. Place the mouse in the Editing Window, press down the left mouse button and drag the generator to
the correct position. Release the mouse button.
You can place a generator directly on to an existing wire by placing it such that its connection point
touches the wire. Alternatively you can place several generators in a free area of your design, and
wire to them later.
When a generator is placed unconnected to any existing wires, it is given a default name of a question
70 of 101
mark (?) to indicate that it is unannotated. When the generator is connected to a net (possibly when
placing it if it is placed directly onto an existing wire) it is assigned the name of the net, or, if the net
itself is unannotated, the component reference and pin name of the first pin connected to the net. The
name of the generator will automatically be updated as it is unwired or as it is dragged from one net to
another. You can assign your own name to the generator by editing the object, in which case the
name becomes permanent and is not updated.
& See NET NAMES in the ISIS manual for an explanation of nets and net-naming.
Editing Generators
Any generator may be edited using any of the general ISIS editing techniques, the easiest of which
are either to click right (to tag) and then left (to edit), or to point at the generator and press CTRL+E.
The Edit Generator dialogue form provides a number of common fields and then a further set of fields
that change according to the generators type. The common fields are explained below:
Name
Type
The type of generator. You can change the type of generator from the type
placed by selecting the button for the new type required.
This control determines the generator specific fields that are displayed on the
right hand side of the dialogue.
Current Source
With the exception of the DIGITAL generator, all the other types are capable
of operating either as voltage or current sources. Checking this box causes
the generator to be a current source.
Isolate Before
This check box controls whether or not a generator placed in the middle of a
wire acts to 'break' the wire to which it is connected, isolating the net to which
the generator points from the net behind it.
The check box has no affect on a generator connected directly to a net by a
single wire.
Manual Edits
DC Generators
The DC generator is used to generate a constant analogue DC voltage or current level. The generator
has a single property which specifies the output level.
Sine Generators
The Sine generator is used to produce continuous sinusoidal waves at a fixed frequency. A number of
parameters can be adjusted:
The output level is specified as a peak amplitude (VA) with optional DC offset (VO). The amplitude
71 of 101
Pulse Generators
The Pulse generator is used to produce a variety of repetitive input signals for analogue analyses.
Square, saw-tooth and triangular waveforms can be produced, as well as single short pulses.. Note that
the rise and fall times cannot be zero, so a truly square wave is not allowed. This is because
instantaneous changes in general are not allowed in PROSPICE. The operation of the pulse generator
is best described by the following diagram:
V2
V1
TR
TD
PW
TF
PER
where
PER
FREQ
V1
V2
PW
TR
TF
TD
- The period of the waveform. If none is specified, then FREQ is used instead.
- The frequency of the waveform. This defaults to one period for a transient
analysis.
- The low-level value of the output.
- The high-level of the output.
- The time for which the output is at V2 in each cycle. This does not include TR
and TF.
- The rise time - time taken between LOW and HIGH in each cycle. This defaults
to 1ns.
- The fall time - time taken between HIGH and LOW in each cycle. This defaults to
TR.
- The delay time. The output of the generator starts at V1, and will remain at this
level for TD seconds.
Exponential Generators
The Exp generator produces the waveforms as an RC circuit under charging and discharging
conditions. The parameters are best described by the diagram overleaf.
72 of 101
V2
V1
TD1
TAU1
TD2
TAU2
V1
TD1 to TD2
( t TD1)
V 1 + (V 2 V 1) 1 e TAU 1
( t TD1)
( t TD2 )
V 1 + (V 2 V 1) 1 e TAU1 + (V 1 V 2 )1 e TAU 2
TD2 to TSTOP
73 of 101
File Generators
The File generator is used to drive a circuit from an analogue signal that is specified by series of time
points and data values contained in an ASCII file. It is thus very similar to the piecewise linear
generator except that the data values are held externally rather than being given as device properties.
The dialogue form has only one field, which specifies the name of the data file. There is no default
extension for these files, and the file should be located in the same directory as the design file unless a
full path is specified.
Data File Format
The ASCII data file should be formatted with one time/voltage pair on each line separated by white
space (spaces or tabs, not commas). The time values must be in ascending order, and all values must
be simple floating point numbers (no suffixes allowed).
Example
The following example data file produces three cycles of a saw-tooth waveform with rise time 0.9ms,
fall time 0.1ms and amplitude 1V.
0
9E-4
1E-3
1.9E-3
2E-3
2.9E-3
3E-3
0
1
0
1
0
1
0
Audio Generators
The Audio generator is used to drive a circuit from a Windows WAV file. In conjunction with Audio
graphs they make it possible to hear the results of processing a sound signal through a simulated
circuit.
The filename is assumed to have a default extension of WAV, and should be located in the same
directory as the DSN file unless a full path is specified.
74 of 101
The amplitude can be specified either in terms of the maximum absolute value for positive and
negative excursions, or as a peak to peak value.
A DC offset can be specified; if this is zero the output voltage will oscillate about zero.
For stereo WAV files, you can select which channel is played, or whether to treat the data as mono.
Digital Generators
There are five sub-types of digital generator:
Single Edge - a single transition from low to high or high to low.
Single Pulse - a pair of transitions in opposite directions which together form a positive or negative
pulse waveform. You can specify either the times of each edge (start time and stop time) or the
start time and the pulse width.
Clock - a continuous pulse train of even mark-space ratio. You can specify the starting value and
the time of the first edge as well as the period or frequency. The period specifies the time for a
whole cycle, not the width of a single mark or space.
Pattern - this is the most flexible and can, in fact, generate any of the other types. The pattern
generator is defined in terms of the following parameters:
Initial State This is the value at time zero, and also the value used when finding
the operating point in a mixed mode circuit.
First Edge
This is the time when the pattern actually starts; the output will remain at the initial
state value until this time is reached.
Timing
Each step of the pattern can take the same time (Equal mark/space timing) or
can have a different time for high and low values. In this case, the Pulse width
specifies the time for logic 1 values and the Space Time specifies the time for
logic 0 values.
Transitions
The output can be defined to run continuously till the end of the simulations, with
the pattern repeating, or for a fixed number of edge transitions only.
Bit Pattern
Script - the generator will be controlled from a DIGITAL BASIC script. The generator is accessed
in the script by declaring a PIN variable with the same name as the generators reference.
75 of 101
Placing Probes
To Place a Probe:
1. First select the Gadget Mode icon, and then select either the Voltage Probe or Current Probe icon.
ISIS will show a preview of the probe in the Overview Window.
2. Use the Rotation and Mirror icons to orient the probe according to how you want to place it.
Note that, for a Current Probe correct orientation is important. Current flow is measured in the
direction indicated by the arrow enclosed in a circle which forms part of the probes symbol.
3. Place the mouse in the Editing Window, press down the left mouse button and drag the probe to the
correct position. Release the mouse button.
You can place a probe directly on to an existing wire by placing it such that its connection point
touches the wire. Alternatively you can place several probes in a free area of your design, and wire
to them later.
When a probe is placed unconnected to any existing wires, it is given a default name of a question
mark ('?') to indicate that it is unannotated. When the probe is connected to a net (possibly when
placing it if it is placed directly onto an existing wire) it is assigned the name of the net, or, if the net
itself is unannotated, the component reference and pin name of the first pin connected to the net. The
name of the probe will automatically be updated as it is unwired or as it is dragged from one net to
another. You can assign your own name to the probe by editing the probe in which case the name
becomes permanent and is not updated.
Probe Settings
The Edit Probe dialogue form allows two parameters to be adjusted:
LOAD Resistance
Voltage probes may be set to impose a load resistance on the schematic. This is useful where there
would otherwise be no DC path to ground from the point being measured.
Record Filename
Both current and voltage probes can record data to a file which can then be played back using a Tape
76 of 101
Generator. This feature allows you to create test waveforms using one circuit and then play them back
into another.
& See Tapes and Partitioning for more information.
77 of 101
A SPICE model is an ASCII netlist file. It contains no graphical information at all and cannot
therefore be placed directly on a schematic. This means that you will need an ISIS library part for
the device concerned as well as the SPICE model. Sadly, there is no standard file format
whatsoever for schematic library parts, so you will usually need to draw this yourself.
In a SPICE netlist, a model is called up by referring to a subcircuit using an X card. The binding
of circuit nodes to model nodes is determined by the order in which circuit nodes are given on the
X card. For example
XU1 46 43 32
means that node 46 of the circuit is connected to node 1 of the model. Similarly node 46 binds to
node 2 and node 32 binds to node 3. Unfortunately, this scheme means that the model nodes are
not named. Worse still, there is rarely any tie up between the model node numbers and the
physical device pin numbers - for one thing, the physical package may have NC (not connected)
pins, and these are hardly ever accounted for in numbering the nodes of a SPICE model. There
can also be major complications with a multi-element device such as a TL074 - does the model
implement one op-amp or four?
In practice, this means that some kind of explicit cross-referencing is needed to tell ISIS which
SPICE model node number to use for each pin on the device, since neither the ISIS pin name nor
the pin number can be used for the reasons given above. A special device property SPICEPINS
has been introduced to make this as painless as possible.
There are many variants of SPICE in existence. The lowest common denominator is SPICE 2 and
most models appear to be written to this standard. However, a significant number of manufacturers
declare their models to be compatible with PSPICE, a proprietary version of SPICE 2 which has
been developed extensively beyond the original standard. Whilst SPICE3F5 has many features not
supported by PSPICE, PSPICE has some primitive types that are different, and also uses a
different syntax for some of the newer things that have been added to both products. The
implication is, of course, that models specifically written for PSPICE may not work with
PROSPICE.
In short, if a 3rd party model does not work properly, the first thing to check is that it was actually
written for SPICE 2 or SPICE 3.
The really good news is that we ourselves have gathered together a large number (well over 1500 at the
time of writing) of manufacturers models and created corresponding ISIS library parts for them.
You must, of course, appreciate that we can accept no responsibility for the accuracy or even
functionality of these models, and that both ourselves and the manufacturers concerned disclaim
any liability for losses of any kind whatsoever arising out of their use. In any case, there is never
any guarantee that a circuit simulation will exactly reflect the performance of the real hardware
and it is always advisable to build and test a physical prototype before entering into large scale
production.
78 of 101
ADVANCED TOPICS
TEMPERATURE MODELLING
The SPICE3F5 kernel provides extensive support for modelling the effects of temperature. The scheme
operates as follows:
There is a global property TEMP, which will, if nothing else is done, apply to all components in the
circuit.
The temperature of individual components can be specified by giving them their own TEMP
property.
Where parameters for a device model vary according to the temperature at which they were
measured, this temperature can be specified globally and/or individually by TNOM properties.
Temperature modelling is provided for resistors, diodes, JFETs, MESFETs, BJTs, and level 1, 2, and 3
MOSFETs. BSIM models are expected to have been created for specific temperatures. No temperature
dependency is implemented for digital primitives.
In addition, it is very important to realize that most equivalent circuit models for ICs will not model
temperature effects correctly. This is because such models usually use ideal controlled sources and other
macro modelling primitives, rather than containing an exact replica of the device internals. Once such
primitives are used, it is unlikely that the model will show correct temperature dependent behaviour unless
someone has taken the trouble to make it do so.
79 of 101
ADVANCED TOPICS
PERSISTENT MODEL DATA
Certain simulator models, particular those for EPROMS, and micro-processors containing EEPROM or
flash memory are able to remember data between simulation runs, just like their real life counterparts.
This action is facilitated by the MODDATA property. Persistant model data blocks are stored in the DSN
file, and so do not persist between PROTEUS sessions unless you save the design.
To reset the persistent model data to its initial condition, use the Reset Persistent Model Data
command on the Debug menu.
80 of 101
ADVANCED TOPICS
GROUND AND POWER RAILS
Why You Need a Ground
All simulations require a ground net be defined - otherwise, placing a probe on a particular net has no
meaning as the voltage on that net must be defined in terms of a fixed reference point. In fact, there is
a further requirement that all parts of the circuit must have a DC path to ground, as probing a point in
the circuit that is attached to a floating network is equally meaningless. For example, in the circuit
below, asking for the voltage at VB is meaningless
because the secondary side is floating. In theory, we could have provided two pinned probes (as with
a real multimeter) but there are serious mathematical difficulties in solving circuits without a ground,
and more to the point, Berkeley University have not addressed them in SPICE3F5.
The key point, then, is that all sections of your circuit must have a DC path to ground. The good news
is that PROTEUS VSM checks this for you, and will report as warnings any nets which it considers do
not meet this criterion. In most cases, the simulation will then fail.
Another circuit configuration which has caused trouble in the past is shown below:
Here, the presence of coupling capacitor C1 means that the output probe has no DC path to ground.
81 of 101
Consequently, the simulator cannot resolve the operating point for the output, because the operating
point is computed with all capacitors open circuit. We have chosen to resolve this by making
capacitors very slightly leaky. Therefore, in the absence of any other DC path, the operating point at
the output is computed with C1 fully discharged.
The leakyness of capacitors is determined by the simulator control property GLEAK, which is an
admittance with default value 1E-12Mho. Setting this value to zero makes capacitors non leaky, as with
traditional SPICE simulators.
Apart from the simulation of the innards of DRAM memory circuitry we cannot foresee any problems
with this scheme, and it will save relative beginners from many strange error messages. In any case,
real capacitors generally have leakage considerably more than a million megohms.
The ground net in a circuit can be defined either explicitly or implicitly. An explicit ground is defined by
placing an unlabelled Ground terminal, as on the bottom end of RF2, above. You can also label a wire
with the text GND if space is tight.
An implicit ground can be created through the use of a power rail, single pinned generator, loaded
probe or a digital output, as well as by using any model that contains an internal grounded node.
Power Rails
PROSPICE recognises a number of entities as power rails; the rules are as follows:
Any net named GND or VSS is considered to be the ground reference. So far as PROSPICE is
concerned, GND and VSS are aliases for the same thing.
The net names VCC and VDD are considered to be the logic power rail, and will be treated as a
logic 1 by DSIM. As with GND and VSS, PROTEUS VSM assumes these two names refer to the
same net - if you really want split logic power supplies you must choose different net names.
Power terminals with names of the form +5, -5 or +10V, -10V are taken as defining fixed power
rails with reference to ground. The + and - symbols are crucial; a label such as 5.0V will not do.
Connecting two such labels with different values to the same net is an error.
The creation of a power rail also implicitly creates a ground.
An additional feature, added as part of the scheme for mixed mode simulation is that Logic IC models
can be thought of as self powering. This enables you to draw circuits such as the one below and get
sensible results, without having to draw in power supplies explicitly.
This works because the Interface Model defined for the 7400 includes a VOLTAGE property. This
causes the creation of a 5V battery between the 7400s hidden power pins (VCC and GND) such that
the VCC net acquires a potential of 5V. Other bits of circuitry connected to VCC, including the DAC
object at the 7400 output then see this voltage.
82 of 101
ADVANCED TOPICS
INITIAL CONDITIONS
Overview
Whenever any type of simulation is performed, the first thing that PROSPICE does is to compute the
operating point of the circuit - that is the steady state conditions that apply prior to any input signals
being applied. There are two distinct modes of operation associated with computing these values:
The operating point is found with all capacitors charged and inductors fluxed. In this case, a
Transient Analysis will show the behaviour of the circuit as though power were applied sufficiently
prior to time zero that by the start of the simulation everything had settled down. This is the default
mode of operation, and given the ability to specify initial conditions for particular components
and/or node voltages, serves for most purposes.
The operating point is found with all capacitors short circuited and inductors open circuit. In this
case, a Transient Analysis will show the behaviour of the circuit as though power were applied at
time 0. This mode of operation can be selected by unchecking the Compute Operating Point
option on the graph.
In either case, it is possible to specify the initial conditions for particular components or node voltages.
This is especially useful for circuits which are oscillators, or for which circuit operation depends on
particular capacitor being discharged at time zero. Indeed, the concept of a steady state operating
point is meaningless for an oscillator, and the simulation may fail completely if some initial conditions
are not given.
In the above circuit, this is achieved by adding a wire label with the text IC=0 to the probed net.
Without this assignment, PROSPICE would compute the steady state value of the voltage on C1 i.e. 1
Volt and the graph would show VC as a horizontal straight line.
For nets which interconnect only digital components, you should use logic states for initial conditions e.g. 1,0,H,L,HIGH,LOW,SHI,WHI,SLO,WLO or FLT and assign them to the BS (Boot State) property.
83 of 101
For mixed nets, you should specify an initial voltage - this will be automatically propagated as a logic
level to the digital components.
NS (NODESET) Properties
Occasionally, when a simulation fails to find the operating point, it can be useful to give SPICE a hint
as to the initial values to use for particular nets. This is different from setting the initial conditions in that
the value given is only used for the first iteration, and the net then floats to whatever value the matrix
solution converges at. It is, then, an aid to convergence and should not affect the actual operating point
solution.
Such convergence hints can be specified using the NS net property, so placing a wire label with the
text NS=10 will suggest a starting value of 10 Volts for that net.
PRECHARGE Properties
A further option for specifying the initial conditions is the PRECHARGE property. This may be assigned
to any capacitor or inductor in the circuit and specifies either voltage across the device or the current
flowing through it respectively.
The PRECHARGE property is a Labcenter specific addition to SPICE, and differs from the IC property
in that it is applied irrespective of whether the Initial DC Solution option is selected or otherwise.
84 of 101
ADVANCED TOPICS
THE DIGITAL SIMULATION PARADIGM
Nine State Model
You might think that a digital simulator would model just high and low states, but in fact DSIM models a
total of nine distinct states:
State Type
Power High
Strong
High
Weak High
Floating
Undefined
Keyword
PHI
SHI
Contention
Weak Low
Strong Low
Power Low
CON
WLO
SLO
PLO
WHI
FLT
WUD
Description
Logic 1 power rail.
Logic 1 active output.
Logic 1 passive output.
Floating output - high-impedance.
Mid voltage from analogue
source.
Mid voltage from digital conflict.
Logic 0 passive output.
Logic 0 active output.
Logic 0 power rail.
Essentially, a given state contains information about its polarity - high, low or mid-way -and its strength.
Strength is a measure of the amount of current the output can source or sink and becomes relevant if
two or more outputs are connected to the same net.
For example, if an open-collector output is wired through a resistor to VCC, then when the output is
pulling low, both a Weak High and a Strong Low are applied to the net. The Strong Low wins, and the
net goes low. On the other hand, if two tristate outputs both go active onto a net, and drive in opposite
directions, neither output wins and the result is a Contention state.
This scheme permits DSIM to simulate circuits with open-collector or open-emitter outputs and pull up
resistors, and also circuits in which tristate outputs oppose each other through resistors - a kind of
poor man's multiplexer if you like. However, it is important to remember that DSIM is a digital simulator
only and cannot model behaviour which becomes decidedly analogue. For example, connecting overly
large resistors up to TTL inputs would work OK in DSIM but would fail in practice due to insufficient
current being drawn from the inputs.
85 of 101
It is common, if not altogether sound practice to rely on the fact that unconnected TTL inputs behave
as though connected to a logic 1. This situation can arise both as result of omitted wiring, and also if
an input is connected to an inactive tristate output. DSIM has to do something in these situations since
the internal models assume true logical behaviour with inputs expected to be either high or low.
This is catered for through the FLOAT property. This may be assigned either directly to a component,
or an an Interface Model. In particular, the interface model for TTL parts has the assignment:
FLOAT=HIGH
which causes floating inputs to be interpreted as logic 1 levels.
To specify that floating inputs be taken as logic 0, use
FLOAT=LOW
Otherwise, floating inputs will be taken to be at the Undefined state. See The Undefined State for more
information.
Glitch Handling
In designing DSIM we debated at great length how it should handle the simulation of models subjected
to very short pulses. The fundamental problem is that, under these conditions, a major assumption of
the DSIM paradigm - that the models behave purely digitally - starts to break down. For example, a real
7400 subjected to a 5ns input pulse will generate some sort of pulse on its output, but not one that
meets the logic level specifications for TTL. Whether such an output pulse would clock a following
counter is then a matter dependent on very much analogue phenomena.
The best one can do is to consider the extremes, namely:
A 1ns input pulse will not propagate at all.
A 20ns pulse will come through nicely.
Somewhere in between, the gate will cease to propagate pulses properly and could be said to suppress
glitches. This gives us the concept of a Glitch Threshold Time, which can be an additional property of
the model along with the usual TDLH and TDHL.
Another subtlety concerns whether the glitch is suppressed at the input or the output of a model. To
resolve this, consider a 4-16 decoder driven from a ripple counter as shown overleaf.
The outputs of the ripple counter are staggered, and thus the possibility arises of the decoder
generating spurious pulses as the inputs pass through intermediate states. This situation is shown in
86 of 101
Taking the first glitch an example of the phenomenon, as U1(QA) falls for the first time, it beats the rise
of U1(QB) and an intermediate input state of 0 is passed to the decoder for approximately 10ns. The
question is whether the decoder can actually respond to this or not, and even more to the point, what
would happen if the input stagger was only 1ns or 1ps? Clearly, in the last two cases the real device
would not respond, and this tells us that we must handle glitches on the outputs rather than the inputs.
This is because, in the above example, the input pulses are all relatively long and would not be
considered glitches by any sensible criteria. Certain rival products make a terrible mess of this, and
will predict a response even in the 1ps case!
The really interesting part of this tale is that, if you build the above circuit, it will probably not glitch. It is
very bad design certainly, but the TDLH and TDHL of the '154 are around 22ns and this makes it a tall
order for it to respond to a 10ns input condition. With the individual components we tried, no output
pulses, other than perhaps the slightest twitches off the supply rails, were measurable.
To provide control over glitch handling, all the DSIM primitives offer user definable Glitch Threshold
Time properties named TGxx, where xx is the name of the relevant output. Our TTL models are
defined such that these properties can be overridden on the TTL components, and the values are then
defaulted such that the Glitch Threshold Times are the average of the main low-high and high-low
propagation delays. Setting the Glitch Threshold Times to zero will allow all glitches through, should
you prefer this behaviour. The graph, above, was thus created by attaching the property assignment
TGQ=0 to the 74154.
Finally, it is important to point out that if the Glitch Threshold Time is greater than either of the
low-high or high-low propagation delays, then the Glitch Threshold Time will be ignored. This is
because, after an input edge, and once the relevant time delay has elapsed, the gate output must
change its output - it cannot look into the future and see whether another input event (that might cancel
the output) is coming. Consider a symmetric gate with a propagation delay of 10ns and a Glitch
Threshold Time of 20ns. At t=0ns the input goes high and t=15ns the input goes low. You might expect
this to propagate, with the output going high at t=10ns and low again at t=25ns, so producing a pulse of
width 15ns which would be suppressed, since it is less than the Glitch Threshold Time. The reason the
pulse is not suppressed is that, at t=10ns, the output must go high - it cannot remain low for a further
87 of 101
20ns on the off chance (as in our example) a second edge comes along so producing an output pulse
it would need to suppress! Once the output has gone high at t=10ns then the second edge (at t=25ns)
is free to reset it. You will need to think carefully about this to understand it.
88 of 101
ADVANCED TOPICS
MIXED MODE INTERFACE MODELS (ITFMOD)
Overview
In designing our scheme for mixed mode simulation within PROSPICE, we gave considerable thought
to the problem of how to specify the analogue characteristics of a digital device family. These
characteristics include:
The input and output impedances of the devices.
The logic thresholds of device inputs.
The voltage levels for high and low outputs.
The rise and fall times of device outputs.
The default logic state for floating inputs.
A scheme which involved specifying all these parameters for every device in the TTL libraries, say,
would be extremely unwieldy.
In addition, a significant problem arises (for beginners, at least) in the specification of power supplies there is a tendency to plonk down a circuit such as the one below and expect sensible results. The
problem here, of course, is an implicit assumption that the 7400 has a 5V power rail obtained from its
hidden power pins which connect to VCC/GND.
All these problems are solved by the introduction of the ITFMOD component property. This is very
similar to the MODEL property in that it provides a reference to a set of property values but it also
activates a special mechanism within the netlist compiler. Essentially this works as follows:
For any device that has an ITFMOD property an additional model definition is called up during
netlisting that will specify control parameters for ADC and DAC objects, and also the pin names of
the positive and negative power supplies. In the above circuit, U1:A will have ITFMOD=TTL.
Having obtained the names of the power supply pins (VCC, GND in this case), ISIS creates a
special primitive and connects it across the power supply pins. ISIS names this object similarly to
an object on the child sheet or model, so that in the above circuit, the power supply object will be
called U1:A_#P.
89 of 101
When PROSPICE simulates a mixed mode circuit, it creates ADC and DAC objects and considers
them to belong to the objects to which they connect. In the case of the circuit above, a DAC
object will be created with the name U1:A_DAC#0000 because it forms the interface from U1:As
output.
The clever part is that on doing this, it also looks for a power supply interface object with the same
name stem i.e. U1:A, and finds U1:A_#P. It then instructs U1:A_DAC#0000 to take its properties
from U1:A_#P which in turn has inherited its properties from the model specified in the original
ITFMOD assignment. Thus the DAC object operates with parameters defined for the TTL logic
family.
Each power interface object also contains a battery which will be assigned to the VOLTAGE
property given in the interface model definition. The TTL interface model definition specifies
VOLTAGE=5V.
This means that in the above circuit, a 5V battery gets inserted between VCC and GND, because
these are the nets indicated by the power pins of the 7400 device.
The batteries have a small internal impedance (1miliohm). This means that if you assign a real
power rail to VCC/VDD (by placing a power terminal or voltage source) then this will override the
level defined by the internal batteries - in the world of simulation, a large current flow through the
batteries does not matter!
It follows that any new digital model can be assigned a device family by adding a property such as
ITFMOD=TTL
The family definitions are held in the file ITFMOD.MDF which is kept in the models directory.
Each definition can contain any or all of the properties defined for the ADC and DAC interface
primitives. In addition, the following may be given:
V+
VVOLTAGE
RINT
5V
1m
FLOAT
Finally, it is worth pointing out that any specific property e.g. TRISE, can be overridden on the parent
device, so if you want simulate a 4000 series IC with a slow rise time, you could add TRISE=10u
directly to its property list.
90 of 101
ADVANCED TOPICS
TAPES AND PARTITIONING
Overview
A unique feature of the VSM system is its ability to divide a large design into one or more sections or
partitions and simulate each individually.
There are two principal advantages associated with this:
In a fully integrated CAD exercise, the circuit for the whole design of the product will contain some
sections which you may not wish to or cannot simulate. To prevent the need for carving up the
design, some mechanism is required for determining which components in the design are actually
relevant to a given simulation experiment.
ISIS does this by considering the points being measured and, further back down the design, the
points being driven by test sources and/or power rails.
If the design consists of several stages, it will be a common requirement to see how later stages
perform when driven by the outputs of earlier stages. Whilst this could be achieved by simulating all
the stages together, this would tend to be unduly slow. Partitioning allows the results from
simulating previous stages to be captured in tapes and played back as the input for subsequent
stages.
ISIS contains logic to do this either under manual control or automatically. In the later case, it
detects when the circuitry within given partitions has changed and re-simulates only those which
have changed, or which are affected by those which have changed.
Tape Objects
91 of 101
Tape Modes
To give the maximum degree of user control, tapes have three modes:- AUTO, PLAY and RECORD. In
the following discussions, we use the terms left and right in terms of the logical dependency of the
partition tree, reading the design inputoutput, leftright.
AUTO mode
This is the default scheme and defines a mode of operation in which ISIS decides which partitions
need re-simulating, and which can use previously stored data. For most situations that require the use
of tapes, AUTO mode will prove to be the most useful.
This automatic detection is based on considering all the text that occurs within the sub-netlist related to
the partition. It follows that if any part names, values, properties, wiring etc. in that partition is changed,
a re-simulation will be performed unless a partition file already exists for that set of information.
Note also that ALL models, scripts, design global properties and so forth are included in the sub-netlist,
so changing any such object will cause a re-simulation of all automatic partitions. ISIS does not delve
into the question of whether particular models, scripts etc. are used by components in a particular
partition. If you need to overcome this, you can use the manual RECORD and PLAY modes.
Note that a TAPE object in auto mode will be removed from the circuit if an interactive simulation is
performed.
PLAY mode
This mode enables you to play a named file that you have previously recorded, either with a tape or by
adding a RECORD property to a probe. The filename of the data to be played should be entered into the
Filename field of the tape; you cannot use PLAY mode unless a filename has been entered.
When a tape is in PLAY mode, the circuitry to its left is disconnected and ignored, unless it includes
probes which are also included on the current graph.
92 of 101
Do bear in mind that you can only play data that has been recorded for the type of analysis currently
being performed. Attempts to do otherwise will result in an error.
RECORD mode
This mode causes the data present at the input of the tape to be recorded into the file named into its
Filename field; you cannot use RECORD mode unless a filename has been entered.
Another effect of record mode is to force the partition to the tapes left to be re-simulated, irrespective
of whether it has changed or not. If there is a partition to the right of the tape that is probed, then this
will also be re-simulated since it will be deemed to depend on the one to its left.
The RECORD mode for tapes is probably must useful in situations in which you want to record a
waveform once, and then lock it as the input for further experiments on the right hand side of the tape.
93 of 101
ADVANCED TOPICS
SIMULATOR CONTROL PROPERTIES
Overview
There are a large number of parameters that affect the details of how a simulation is performed. These
include things such as the maximum number of iterations allowed to find the operating point, the
tolerances that determine when a solution has converged, the integration method used and so forth.
These options are common to all types of analysis and can be adjusted separately for each graph by
editing it and clicking the SPICE Options button.
Tolerance Properties
This group of parameters determine how accurately SPICE will compute the solution. Higher accuracy
is generally achieved at the expense of longer simulation times, and in some circumstance the circuit
may fail to converge at all if you ask for too high a set of tolerances.
The most useful value here is the Truncation Error Estimation factor, or TRTOL in traditional SPICE
nomenclature. If you have results which appear overly spiky, or suffer from overshoots you should try
a lower value here.
The minimum conductance value, GMIN, defines the leakage of reverse biased semiconductor
junctions and other theoretical points of infinite impedance. Reducing this value may help achieve
convergence for circuits which fail to simulate although this may be at the expense of simulation
accuracy. See Convergence Problems for more information.
The leakage conductance, GLEAK is something we have introduced to enable solution of circuits with
DC blocking capacitors. It defines the DC leakage of capacitors, and can generally be left alone
unless you are simulating something unusual such as CMOS memory cells or the like.
Mosfet Properties
SPICE simulation of MOSFETs is based on the assumption that you are doing IC design, and
consequently implements a scheme for scaleable geometries. In practice this means that there are a
number of parameters which determine the default physical sizes for elements of the MOSFET
devices. These are values are defined here.
In addition, some models have been created which rely on the behaviour of older versions of SPICE,
and this MOSFET behaviour can be switched on or off here if you are using older MOSFET models.
Iteration Properties
The properties on the Iteration tab determine how SPICE deals with circuits that are hard to converge.
The integration method can be either Gear or Trapezoidal. The latter is provided mainly for backward
compatibility with previous versions of SPICE since Gear integration generally gives more accurate
results for a given number of time-steps. In Gear integration, high orders than 2 are possible; this
involves SPICE using more of the past history of a time-point in predicting what happens at the next
time-point.
When SPICE fails to get a convergent solution at the operating point, it tries two approaches: Gmin
Stepping and Source Stepping. The number of steps tried in each method can be set here.
Three further options determine that maximum number of iterations that will be tried at each of the
operating point, a step in a Transfer analysis, and a time-point in a Transient Analysis. Increasing
94 of 101
these determines may help in getting a result out of a hard or near unstable circuit.
Finally, two options are given that may result in faster simulations. LTRA compaction applies only for
circuits incorporating lossy transmission lines (LOSSYLINE model). The idea is that near identical
values in the data pipeline get discarded so that this data points are processed. Bypassing unchanging
elements is a general optimization that saves SPICE from re-computing the values of semiconductor
devices whose node voltages have not changed since the last evaluation.
Temperature Properties
There are two global temperature properties: TEMP - the default operating temperature , and TNOM the
parameter measurement temperature. TEMP defines the actual temperature of the circuit, whilst TNOM
is the value at which temperature dependent device parameters are taken to have been measurement.
For further discussion of temperature modelling in PROSPICE see Temperature Modelling.
=
=
=
=
RANDOM
2.00
3.00
723
95 of 101
have the affect of randomly increasing all timing properties by approximately 200-300% with a random
sequence of scaling values. The seed value of 723 causes the same sequence of pseudo-random
values to be generated for each simulation run.
INITSEED
The INITSEED property is used to seed the random initialisation value generator, used by DSIM
primitive models whose initialisation properties have been assigned the RANDOM keyword.
As with the TDSCALE and TDSEED properties described above, whilst the sequence of values
generated by the random initialisation value generator are random, the sequence as a whole is finite
and determinate. The INITSEED property provides a means of selecting which sequence of random
values is used by the DSIM simulator.
The INITSEED property should only be assigned positive integer value in the range 1-32767. The
default value for INITSEED is itself a random value (based on the date and time) and this provides a
means for randomising the sequence of values generated from one simulation run to the next.
96 of 101
ADVANCED TOPICS
TYPES OF SIMULATOR MODEL
How to tell if a Component Has a Model
PROTEUS is supplied with over 6000 library parts of which about 4000 have simulator models. The
devices which do not have models are perfectly relevant for use in PCB design, and the notion that
every part should have a model is quite untenable. It would imply, amongst other things, that we should
create a model for the 68020 processor which is not exactly a trivial job.
So, for the purposes of circuit simulation, you need to be able to tell if a component you are using has
a simulator model. In the first instance, an attempt at simulation will fail if it doesnt, generally with a
message something like:
ERROR [PSM] : No model specified for 'U1'.
The error is detected in the partitioning (PSM) phase, because up until this point, it may be that the
un-modelled component is not actually in the part of the circuit being simulated.
Occasionally you will get:
ERROR [U1] :
This means that there is a model file for the device, but that you have changed the value to a part type
that is not modelled by the MDF file. In the above example, we have changed the value of a 74LS00
gate (which is modelled) to a 74F00 gate, which isnt.
Primitive Models
A significant number of basic component types are built directly into PROSPICE. These device types
are called Primitives and include resistors, capacitors, diodes, transistors, gates, counters, latches,
memories and many more.
Primitive models require no extra files to be simulated, and are indentified by the presence of a single
PRIMITIVE property. Additional properties are specified directly within the component and are passed
to PROSPICE via the netlist. For example, a resistor will have:
PRIMITIVE=ANALOG,RESISTOR
This identifies the part as a SPICE Resistor primitive.
The standard set of simulator primitives may be found in the ASIMMDLS and DSIMMDLS libraries.
These parts provide context sensitive help for their properties, and examples of their use may be found
in the VSM SDK Documentation.
Schematic Models
Where a more complex device is to be simulated, a common approach is to draw a circuit that mimics
its action using simulator primitives. This circuit can be the actual internal electronics of the device, but
more commonly will utilize ideal current sources, voltage sources and switches to speed things along.
A schematic model is specified with the MODFILE property, which by convention we make a read only
property. For example, the 741 op-amp has the assignment:
MODFILE=OA_BIP
You will note from this, that the model file is able to model several devices - a feat which it achieves
97 of 101
VSM Models
VSM models are really primitive models which are implemented in external DLLs as opposed to inside
PROSPICE itself. They provide the means to simulate device functionality using the programming
language of your choice, although it is generally easiest to use C++.
A VSM model will have both a PRIMITIVE property (because both ISIS and PROSPICE treat it as a
primitive) and a MODDLL property which specifies the name of the DLL file in which the models code
resides.
For example, the 8052 model has
PRIMITIVE=DIGITAL,8052
MODDLL=MCS8051
Note that a model DLL can implement more than one primitive type - MCS8051.DLL implements a
number of 8051 variants.
VSM models can also implement functionality that relates to animation, such that the electrical and
graphical aspects of a components operation can be combined in fairly astounding ways. The LCD
display model is a good example of this.
Creating VSM models revolves around a number of C++ Interface classes (similar to COM). These are
documented in the VSM SDK manual.
SPICE Models
Since PROSPICE is based on Berkeley SPICE3F5 it is directly compatible with standard SPICE
models, and many of the components in the PROTEUS libraries are modelled using SPICE files
obtained from component manufacturers. SPICE models can be specified either by SUBCKT blocks or
by sets of parameters in a MODEL record. SUBCKT models will have the property assignments such
as
PRIMITIVE=ANALOG,SUBCKT
SPICEMODEL=CA3140
whereas SPICE primitive model for a transistor might have the properties:
PRIMITIVE=ANALOG,NPN
SPICEMODEL=BC108
The model itself can be stored either in an ASCII file, or in a SPICE Model Library. The name of these
files is specified by a either SPICEFILE or SPICELIB property.
Extensive detail on how to make use of manufacturers SPICE models is given in the chapter entitled
USING SPICE MODELS.
98 of 101
TROUBLESHOOTING
The Simulation Log
Whenever a simulation is performed a Simulation Log file is created. The simulation log file contains all
information, warning and error messages from both the simulator itslef and from individual models.
Where a message originates from a model, it is prefixed with the models component reference in
square brackets, so you might see:
[U1] Loaded 26 files from PROGRAM.HEX
During an interactive simulation the contents of this file can be displayed in a popup window from the
Debug menu whilst for a graph based simulation, the file can be viewed by pointing at the graph and
pressing CTRL+V.
In the case where the simulation fails completely, the log file will be displayed automatically in order
than you can see the cause of the problem immediately.
Netlisting Errors
Netlisting errors occur as a result of a problem when ISIS tries to create a netlist from the schematic you will also encounter these if you try to export the schematic to ARES for PCB layout. Common ones
are:
Having two components with the same name, or unnamed components e.g. two resistors labelled
R?.
Badly formed script files such as MAP ON tables etc. Refer to the syntax definitions in the ISIS
manual if you are cant spot the problem immediately.
Linking Errors
Model linking is the process whereby ISIS calls up MDF files for components which are modelled by
equivalent circuits. By far the most common problem is where the specified model file does not exist.
The model file must be in the current directory, or in the Module Path as set on the Set Paths dialogue
form.
Other common linker errors include:
Value not found in parameter mapping table. This means that the part type - e.g. CA3140 is not
listed in the mapping table of the specified model file. Model files such as OA_MOS.MDF are
design to model several different components using the same circuit but with different values. This
error means that the model file specified does not have parameters for the device type you are
using - you can edit the MDF file with a text editor to see which devices are modelled.
Unresolved module pin. This is a warning rather than an error, and means that the parent
component body has a pin which is not present in the model. This is often OK - for example, most
op-amp models do not model the offset null pins, but it can be a mistake, and if a new model doesn
t work this is a common cause - especially if there are also No DC path to Ground warnings.
Partitioning Errors
Partitioning is the mechanism by which ISIS decides which part(s) of the circuit need to be simulated.
Problems that can occur here are:
Cyclic dependencies detected. This means that an arrangement of tapes is such that the partitions
behind and in front of a tape are mutually dependent. Assuming that you have correctly set any
99 of 101
Isolate Before and Isolate After flags on probes and generators your simplest action here will
probably be to delete the tape object(s) and simulate the whole circuit in one go.
No model specified - this means that the component indicated does not have a PRIMITIVE,
MODFILE property, and has appeared in that part of the circuit which needs to be simulated. If the
device is irrelevant (e.g. a connector) then you must specify PRIMTIVE=NULL, otherwise you
need a model!
& See TYPES OF SIMULATOR MODEL for more information about simulator model types.
Simulation Errors
Simulation errors are generated by PROSPICE rather than ISIS, and therefore occur after a netlist file
has been successfully generated. Common problems that get detected here include:
Device type not recognized. This means you have specified a primitive type that is not supported,
or that a model file has used one.
No DC path to ground. This is discussed further under GROUND AND POWER RAILS.
Could not find probe - you have tried to reference a probe or voltage generator that does not exist.
Remember that you must use an IPROBE object from ASIMMDLS.LIB - you cannot reference a
current probe gadget.
Cannot open SPICE source file. The source file specified in a SPICEMODEL property cannot be
located. It should be in the current directory or in the Module Path as set on the Set Paths
dialogue form.
Cannot find library model. The SUBCKT or MODEL you have specified does not exist in the
specified library or on disk.
Model DLL not found. The specified VSM model DLL cannot be located. It should be in the current
directory or or in the Module Path as set on the Set Paths dialogue form.
Convergence Problems
This final set of errors relate to what happens if SPICE itself fails to simulate the circuit. There are
basically three error messages that indicate this:
Singular matrix. This is akin to have more unknowns than equations and usually relates to circuits
which are mis-drawn, or in which some initial conditions need to be given in order to define the
starting state.
This error will often be preceded by "No DC path to ground" warnings, and you need to investigate
the wiring around the pins listed after this message. If part of your circuit is not ground, the
simulator can resolve its voltage relative to ground - its as simple as that.
To many iterations without convergence. This means that circuit solution is unstable. Circuits with
VSWITCH or CSWITCH primitives can create this condition easily, but any circuit whose transfer
function is discontinuous can give SPICE serious problems.
Timestep too small. This means that the circuit has switched in such a way that advancing the time
even by very small amounts (typically 1E-18s) still does not produce an acceptably small change in
circuit voltages.
Often, this is caused by a badly designed model, or by not supplying sufficient parameters to a
diode or transistor model. In a particular, if the junction capacitance values are not chosen
correctly, these devices will exhibit zero switching times which can lead directly to this error
message.
100 of 101
Most convergence errors are due to badly drawn circuits or incorrect models - time after time we have
had circuits sent in that wont simulate only to find that something isnt connected. Please check the
simulation log for clues, and re-check your circuit before jumping to the conclusion that PROSPICE is
at fault. Where 3rd party SPICE or VSM models have been used, we cannot spend time debugging
them unless can supply a simple circuit demonstrating the problem.
Beware also of using 3rd party SPICE models which use features not supported in standard SPICE 2
or SPICE 3. Models developed for PSPICE can include all manner of elements and syntax
constructs that are not standard SPICE.
Oscillators cause special problems because the initial solution for the operating point will fail. After all,
an oscillator has no steady state! Use IC , NS or OFF properties to define a starting state as discussed
under INITIAL CONDITIONS.
If the problem really is numerical convergence, you can try the following tactics:
Increase the value of GMIN. This is a leakage resistance for reverse biased semiconductor
junctions, and lower values make the circuit look more and more like a network of resistors (which
will always solve). But this is at the expense of accuracy. The default is 1E-12; values above 1E-9
will give fairly meaningless results.
Note in any case, that SPICE3F5 will try what is called GMIN stepping if at first the circuit will not
converge. This means that a large GMIN is used to find an initial solution, and the value is then
ramped back to its original value in order to maintain accuracy.
If the circuit uses op-amps, try specifying MODFILE=OA_IDEAL instead of a specific device type this model is much easier to simulate.
Lower the value of TRTOL. This will make SPICE use smaller timesteps so it will be less likely to
lose a convergent solution, but at the expense of longer run times. This will only work if the
simulation has failed part way through a transient analysis.
You should also try reducing TRTOL if plotted traces look spiky, or contain mathematical noise.
This often manifests itself as oscillation of a value after a rapid level transition.
101 of 101