# ECE Software

Back to Hspice...

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.

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

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

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)
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.

*** 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
```