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.

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