ECE Software
The following information was extracted from an article posted to sci.electronics.cad on SPICE.
ABSTRACT:
SPICE is a popular software package for analyzing electrical circuits.
TABLE OF CONTENTS:
1. History and Motivation behind SPICE 10. Decide which Analysis to Use
2. What is SPICE? 11. Subcircuits
3. How does SPICE work? 12. How to Define a Subcircuit
4. Analyses Available 13. .WIDTH Statement
5. Output 14. Options
6. How to Implement SPICE 15. List of Options
7. Elements Used in Simple Programs 16. Selecting the Output
8. Model Card 17. How Do You Run SPICE
9. Examples of Components and Models 18. Example decks
DOCUMENT BODY:
1. History and Motivation behind SPICE:
CANCER
Early SPICE
SPICE Today
2. What is SPICE?
SPICE helps you to design and test circuits
- check voltages at certain points
- check a circuit that may burn itself up
- check how a circuit responds to voltages
3. How does SPICE work?
Control cards in an input file (data deck)
The data deck contains information
- the circuit itself
- what you want done to the circuit
- what kind of output you need
4. Analyses available:
Three basic analyses used in SPICE
- DC --- Voltage Dependent Analysis
- AC --- Frequency Dependent Analyses
- Transient --- Time Dependent Analysis
DC analysis
- simplest type
- input a DC voltage
- sweep a voltage from start to finish
AC analysis
- sweep AC voltage
- specify the frequency range
- one voltage source must be AC
Transient analysis
- clock a circuit over time (``snapshots'')
- specify the stopping time and the increments
- specify either voltage or current
5. Output:
Printing, Plotting
- results are sent to an output file
- output file is specified in the command file (.COM)
6. How to implement SPICE:
Number of the nodes circuit
Follow the rules
Make the data deck
The most important rules
- 1) no duplicate nodes
- 2) zero for your ground node
- 3) no floating nodes
Data deck
- The first card is a comment card
- Abbreviations for units of measurement
MEG=1e6
K=1E3
M=1e-3
7. Elements Used in Simple Programs:
Components used in basic electrical circuits
- passive: R, L, C
- voltage and current source (independent only)
- semiconductors: Diode, BJT, JFET, MOSFET
Component names
Symbols +N, -N denote pos/neg connection
Passive: R, L, C syntax
- R_____ +N -N (value in ohms)
- L_____ +N -N (value in henrys)
- C_____ +N -N (value in farads)
Examples:
- R1 2 5 12K
- CBYPASS 1 0 1U
- L5 3 4 12M| (not MegaHenrys)
Voltage and current source syntax (AC and DC)
- V_____ +N -N DC (value in Volts)
- V_____ +N -N AC (value of magnitude in volts)
- V_____ +N -N AC (magn.) (phase)
- V_____ +N -N AC SIN(Vo Va Freq.)
Syntax for current sources is the same except replace V with I
Examples of Voltage Sources
- VIN 4 0 SIN(0 0.5 1K)
- VSOURCE 6 2 AC 0.333 45
Semiconductor: D, Q, J, M syntax
- each semiconductor must have a model name
diodes: D_____ +N -N MNAME
BJTs: Q_____ N(col) N(base) N(emit) MNAME
JFETs: J_____ N(drain) N(gate) N(source) MNAME
MOSFETs: M_____ N(drain) N(gate) N(source) N(bulk) MNAME
8. Model Card:
.MODEL card for each semiconductor
included for each different MNAME
The general .MODEL format
- .MODEL MNAME type (optional parameters)
Types valid for SPICE
- NPN --- NPN BJT
- PNP --- PNP BJT
- D --- DIODE
- NJF --- N-channel JFET
- PJF --- P-channel JFET
- PMOS --- P-channel MOSFET
- NMOS --- N-channel MOSFET
9. Examples of Components and Models:
DBRIDGE 2 0 DIODE1
.MODEL DIODE1 D
DCLAMP 5 6 ZENER
.MODEL ZENER D
Q1 2 3 5 BJT1
.MODEL BJT1 NPN
JSTAGE1 4 10 3 JFETA
.MODEL JFETA PJF
M12 7 0 12 MOSFET3
.MODEL MOSFET3 NMOS
10. Decide Which Analysis to Use:
.AC --- Varies Frequency
- .AC DEC (# points/decade) (start freq) (stop~freq)
- Used for making log-scale analysis
- .AC LIN (# points total) (start freq) (stop~freq)
- Used for making linear-scale analyses
.DC --- Varies DC voltage
- .DC (source) (V start) (V stop) (V incr.)
.TRAN --- A snapshot in time
- .TRAN (T incr.) (T start)
11. Subcircuits:
What is a subcircuit?
- separately defined circuit
- may include anything except control cards
- may be amplifier stages, logic gates, Op-amps, etc.
12. How to Define a Subcircuit:
Syntax of .SUBCKT
- .SUBCKT (name) (node 1) (node 2) ...~(node N)
subcircuit components
.ENDS (name)
- Node 0 is always ground
- .ENDS card is the last part of the definition
Example
.SUBCKT AMP 1 2 3 4
Q1 2 5 3 BJTPASS
.MODEL BJTPASS PNP
(etc)
.ENDS AMP
Syntax of a call statement
- similiar to FORTRAN
- component name starts with X
- X_____ (node 1) (node 2) ... (node N) (.subckt~name)
Example
XAMP1 4 8 6 0 AMP
Subcircuit Library
- many Op-amp subcircuit are available
- e-mail to ZEUS::VAXHELP for more information
13. .WIDTH Statement:
.WIDTH OUT=cols --- Used to make output cols wide
Example
.WIDTH OUT=80
14. Options:
Printing and numerical analysis options
- Form for using options
.OPTIONS (option 1) (option 2)
15. List of Options:
NOMOD
- suppresses printout of model parameters
NOPAGE
- suprresses page ejects
NODE
- prints out node table
OPTS
- lists current options and their values
NUMDGT=(#)
- resets significant digits (default = 4)
TNOM=(temp)
- resets nominal temperature (default = 27 deg C)
CPTIME=(secs)
- maximum CPU time allowed for job
LIMPTS=(# points)
- resets the total number of points for .PRINT/.PLOT (default 200)
16. Selecting the Output:
What
- AC, DC, Transient
Where
- specify node # and whether voltage or current
How
- .PRINT
.PRINT (type) V(+N,-N) I(V source)
- .PLOT same as .PRINT
17. How do you run SPICE?
1. Create a data deck made of the following:
a. first line comment card (ALWAYS)
b. add components and sources
c. add .MODEL cards for semiconductors
d. apply control cards (.AC, .DC, .TRAN)
e. ask for output (voltage or current)
.WIDTH OUT=80
.PLOT
.PRINT
f. optional analyses (available in the manual)
LIMPTS --- # of points to be used in analysis
NODE --- prints out a node table with voltages
NOPAGE --- suppresses page ejects
g. .END card (ALWAYS!)
2. SUBMIT file
spice infile outfile
18. Example decks
18.1 Circuit 1
The following deck determines the dc operating point and
small- signal transfer function of a simple differential pair.
In addition, the ac small-signal response is computed over the
frequency range 1Hz to 100MEGHz.
SIMPLE DIFFERENTIAL PAIR
VCC 7 0 12
VEE 8 0 -12
VIN 1 0 AC 1
RS1 1 2 1K
RS2 6 0 1K
Q1 3 2 4 MOD1
Q2 5 6 4 MOD1
RC1 7 3 10K
RC2 7 5 10K
RE 4 8 10K
.MODEL MOD1 NPN BF=50 VAF=50 IS=1.E-12 RB=100 CJC=.5PF TF=.6NS
.TF V(5) VIN
.AC DEC 10 1 100MEG
.PLOT AC VM(5) VP(5)
.PRINT AC VM(5) VP(5)
.END
18.2 Circuit 2
The following deck computes the output characteristics of a MOS-
FET device over the range 0-10V for VDS and 0-5V for VGS.
MOS OUTPUT CHARACTERISTICS
.OPTIONS NODE NOPAGE
VDS 3 0
VGS 2 0
M1 1 2 0 0 MOD1 L=4U W=6U AD=10P AS=10P
.MODEL MOD1 NMOS VTO=-2 NSUB=1.0E15 UO=550
* VIDS MEASURES ID, WE COULD HAVE USED VDS, BUT ID WOULD BE NEGATIVE
VIDS 3 1
.DC VDS 0 10 .5 VGS 0 5 1
.PRINT DC I(VIDS) V(2)
.PLOT DC I(VIDS)
.END
18. Circuit 3
The following deck determines the dc transfer curve and the
transient pulse response of a simple RTL inverter. The input is
a pulse from 0 to 5 Volts with delay, rise, and fall times of 2ns
and a pulse width of 30ns. The transient interval is 0 to 100ns,
with printing to be done every nanosecond.
SIMPLE RTL INVERTER
VCC 4 0 5
VIN 1 0 PULSE 0 5 2NS 2NS 2NS 30NS
RB 1 2 10K
Q1 3 2 0 Q1
RC 3 4 1K
.PLOT DC V(3)
.PLOT TRAN V(3) (0,5)
.PRINT TRAN V(3)
.MODEL Q1 NPN BF 20 RB 100 TF .1NS CJC 2PF
.DC VIN 0 5 0.1
.TRAN 1NS 100NS
.END
18.4 Circuit 4
The following deck simulates a four-bit binary adder, using
several subcircuits to describe various pieces of the overall
circuit.
ADDER - 4 BIT ALL-NAND-GATE BINARY ADDER
*** SUBCIRCUIT DEFINITIONS
.SUBCKT NAND 1 2 3 4
* NODES: INPUT(2), OUTPUT, VCC
Q1 9 5 1 QMOD
D1CLAMP 0 1 DMOD
Q2 9 5 2 QMOD
D2CLAMP 0 2 DMOD
RB 4 5 4K
R1 4 6 1.6K
Q3 6 9 8 QMOD
R2 8 0 1K
RC 4 7 130
Q4 7 6 10 QMOD
DVBEDROP 10 3 DMOD
Q5 3 8 0 QMOD
.ENDS NAND
.SUBCKT ONEBIT 1 2 3 4 5 6
* NODES: INPUT(2), CARRY-IN, OUTPUT, CARRY-OUT, VCC
X1 1 2 7 6 NAND
X2 1 7 8 6 NAND
X3 2 7 9 6 NAND
X4 8 9 10 6 NAND
X5 3 10 11 6 NAND
X6 3 11 12 6 NAND
X7 10 11 13 6 NAND
X8 12 13 4 6 NAND
X9 11 7 5 6 NAND
.ENDS ONEBIT
.SUBCKT TWOBIT 1 2 3 4 5 6 7 8 9
* NODES: INPUT - BIT0(2) / BIT1(2), OUTPUT - BIT0 / BIT1,
* CARRY-IN, CARRY-OUT, VCC
X1 1 2 7 5 10 9 ONEBIT
X2 3 4 10 6 8 9 ONEBIT
.ENDS TWOBIT
.SUBCKT FOURBIT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
* NODES: INPUT - BIT0(2) / BIT1(2) / BIT2(2) / BIT3(2),
* OUTPUT - BIT0 / BIT1 / BIT2 / BIT3, CARRY-IN, CARRY-OUT, VCC
X1 1 2 3 4 9 10 13 16 15 TWOBIT
X2 5 6 7 8 11 12 16 14 15 TWOBIT
.ENDS FOURBIT
*** DEFINE NOMINAL CIRCUIT
.MODEL DMOD D
.MODEL QMOD NPN(BF=75 RB=100 CJE=1PF CJC=3PF)
VCC 99 0 DC 5V
VIN1A 1 0 PULSE(0 3 0 10NS 10NS 10NS 50NS)
VIN1B 2 0 PULSE(0 3 0 10NS 10NS 20NS 100NS)
VIN2A 3 0 PULSE(0 3 0 10NS 10NS 40NS 200NS)
VIN2B 4 0 PULSE(0 3 0 10NS 10NS 80NS 400NS)
VIN3A 5 0 PULSE(0 3 0 10NS 10NS 160NS 800NS)
VIN3B 6 0 PULSE(0 3 0 10NS 10NS 320NS 1600NS)
VIN4A 7 0 PULSE(0 3 0 10NS 10NS 640NS 3200NS)
VIN4B 8 0 PULSE(0 3 0 10NS 10NS 1280NS 6400NS)
X1 1 2 3 4 5 6 7 8 9 10 11 12 0 13 99 FOURBIT
RBIT0 9 0 1K
RBIT1 10 0 1K
RBIT2 11 0 1K
RBIT3 12 0 1K
RCOUT 13 0 1K
.PLOT TRAN V(1) V(2) V(3) V(4) V(5) V(6) V(7) V(8)
.PLOT TRAN V(9) V(10) V(11) V(12) V(13)
.PRINT TRAN V(1) V(2) V(3) V(4) V(5) V(6) V(7) V(8)
.PRINT TRAN V(9) V(10) V(11) V(12) V(13)
*** (FOR THOSE WITH MONEY (AND MEMORY) TO BURN)
.TRAN 1NS 6400NS
.OPTIONS ACCT LIST NODE LIMPTS=6401
.END
18.5 Circuit 5
The following deck simulates a transmission-line inverter.
Two transmission-line elements are required since two propagation
modes are excited. In the case of a coaxial line, the first line
(T1) models the inner conductor with respect to the shield, and
the second line (T2) models the shield with respect to the out-
side world.
TRANSMISSION-LINE INVERTER
V1 1 0 PULSE(0 1 0 0.1N)
R1 1 2 50
X1 2 0 0 4 TLINE
R2 4 0 50
.SUBCKT TLINE 1 2 3 4
T1 1 2 3 4 Z0=50 TD=1.5NS
T2 2 0 4 0 Z0=100 TD=1NS
.ENDS TLINE
.TRAN 0.1NS 20NS
.PLOT TRAN V(2) V(4)
.END