GNUcap Demonstration Page

by
Wenton L. Davis

GNUcap is a free circuit analysis program that is available from several different sources, although gnucap.org is the primary source.  The current version listed is 0.33, although I am currently running version 0.34 without any trouble at all. (NOTE: depending on which sites you go to, version 0.35 is available, and then even newer versions have popped up.  My server is running one of these newer versions.  It is amusing that the author has included the warning:

  Never trust any version less than 1.0
  

in his program's output.  I don't know if he is claiming that these newer versions are 1.0 or higher, but he's included that warning in the 0.3x versions, so.....? I tell my students that even SPICE can only handle so much information, and when they have something working "perfectly" in SPICE, that does NOT directly translate into working correctly in the real world.  SPICE is a tool! It is NOT the solution! That being said, we'll move on...

Because it is text-based, it is quite different from the GUI-based applications that are currently available.  There are a few GUI-based front-ends to the program, and people are certainly welcome to use them.  The thing I like about being able to work with the text-based version is that I can have my circuit and software in a single place where I can access it at any time.  (And now that wireless networks are being put up everyehere, it is very rare that I cannot access the internet!) To learn how to deal with a text-based description of a circuit, take a look at the following circuit:

This circuit is a fairly simple one to study, but notice that there are several "nodes" that have been identified.  Each circuit element must be described by where each component is connected, and these nodes are used to define these connections.  Nodes can have any number, although it is almost universally standard to start at node 1 and count up.  There is a node 0, which is ground.  Some spice programs will allow you to use any node number as ground; some require that you use 0 as ground.  GNUcap will handle either situation.  Any connection point (any point where any part of a component is connected to anything) must have a unique node number associated with it!

Once the nodes are defined in the circuit, it is time to define the circuit.  In the previous example, using node 0 as ground, THe input voltage source, "Vin," is connected between nodes 0 and 1, so we define this in GNUcap's language:

  Vin 0 1 AC 1
  

which defines an independant voltage source, whose negative power is applied to ground and positive power is applied to node number 1.  In this case, because we are going to do a frequency analysis, it is being defined as an AC voltage source with a peak voltage of 1V.  (PLEASE refer to the GNUcap manual for all of the options available for the different types of circuit components!) We can continue to define the circuit with each of the elements:

  Vin 0 1 AC 1
  R1  1 2 1K
  R2  0 2 1K
  C1  0 2 1UF
  

Now that the circuit has been defined, it is important to put the details into the circuit file that will tell GNUcap what to do with the circuit.  One of the easiest parts to overlook is the title.  Sure the title is just for decoration, but in this case, it could be meaning ful to include SOMETHING here, because if the title is ignored, GNUcap will still give the circuit a title, which will be the first line of the file.  So, include a .TITLE command as the first line of your file, and you'll be much happier with the results.  The next, but arguably most important, thing to put into your circuit file, COMMENTS!!!!! Put comments in your file for many reasons, but most importantly, to describe what you are trying to accomplish! Comments in GNUcap are any line beginning with an asterisk ('*') character.  Although not required, I always (if I don't forget it) add a line to limit the with of text from my output with the command,

  .OPTION OUT=80
  

which will tell GNUcap to limit the width out output text to 80 characters.  You can set it to more, but 80-120 seems to be a good balance, and anyone using Windoze will have tourble dealing with widths greater than 80.  (Everybody write Bill Gates to complain!)

Finally, we need a few lines to tell GNUcap how to perform it's analysis.  Although I have found an array of "excuses," I am still looking for a reason the line,

  .PRINT OP Iter(0) V(2)
  

is needed.  (NOTE: replace the 2 with whatever node number is your output!) None-the-less, this line is needed in order for GNUcap to behave.  Without it, the analysis will either not work at all, or it will probably be incorrect.  I have seen a few circuits work without it, but only very simple DC Steady-state analysis seems to work without this. 

Next, we need to define how to display the output.  We could either print the output as a column of text, or we could create a graph of the output using text-graphing.  admittedly, this is not as precise as GUI-based graphs, but we could take the column output and put it into a graphing program with almost no effort, and create some very nice graphs.  (From here, it might be worth looking at another program called GNUplot, but I'll skip this for now.)  To see a simple graph of the AC analysis of the output voltage (node 2), as a Bode plo between -20dB and 0dB, we can use the command:

  .PLOT AC VDB(2)(-20,0)
  

Keep in mind that this line, itself, does NOT produce the analysis or the output, it simple tells GNUcap that we are interested in a decibel (dB) plot of the output at node 2.  To actually perform the analysis and output, we will use the command:

  .AC 5 1K OCT
  

This tells GNUcap (finally) to perform the AC analysis using a series of frequencies, beginning a 5Hz, going up in octaves (an octave will be double the frequency, so in this case, the first octave will be 5-10Hz, then 10-20Hz, then 20-40Hz,....) using one output per octave, up to a point where we have included (or passed) 1KHz.

Our final circuit file looks like this:

  .TITLE Demonstration Circuit #1
  
  *Written by Wenton L. Davis, January 22, 2007
  *This is a simple circuit demonstration, showing some of the
  *basic structure for a simple AC circuit analysis.
  
  *============================================================
  * Define the circuit.  This is a simple R/RC voltage divider.
  *============================================================
  
  Vin 0 1 AC 1
  R1  1 2 1K
  R2  0 2 1K
  C1  0 2 1UF
  
  *============================================================
  * Define the output.
  *============================================================
  
  .OPTION OUT=80
  .PRINT OP Iter(0) V(2)
  
  .PLOT AC  VDB(2)(-20,0)
  
  *============================================================
  * Perform the analysis and output.
  *============================================================
  
  .AC 5 1K OCT
  

All that's left, now is to run the GNUcap program and observe the output.  To run the GNUcap program, the user just needs to type in the command:

  gnucap -b demo1.ckt
  

This command tells gnucap to run the circuit analysis program in batch mode (without user interaction) on the file, demo1.ckt.  The ouptut should look like this:

  Gnucap 0.34
  The Gnu Circuit Analysis Package
  Never trust any version less than 1.0
  Copyright 1982-2002, Albert Davis
  Gnucap comes with ABSOLUTELY NO WARRANTY
  This is free software, and you are welcome
  to redistribute it under certain conditions
  according to the GNU General Public License.
  See the file "COPYING" for details.
  .TITLE Demonstration Circuit #1 
  VDB(2)-20.              -15.             -10.              -5.               0.
          +-----------------+----------------+-----------------+----------------+
   5.     |                 .                .             *   .                |
   10.    |                 .                .             *   .                |
   20.    |                 .                .             *   .                |
   40.    |                 .                .             *   .                |
   80.    |                 .                .            *    .                |
   160.   |                 .                .          *      .                |
   320.   |                 .                .  *              .                |
   640.   |                 .     *          .                 .                |
   1.28K  |     *           .                .                 .                |
          +-----------------+----------------+-----------------+----------------+
  

In the output, it is easy to see that at low frequencies, the output is at -6dB, but at around 160Hz, the output starts to decrease, and beyond that, the output drops off fairly quickly.

Here is another example:

SPICE works based on a line-by-line description of the circuit, relating each component to a line in the program.  It generally makes one assumption, that "GROUND" is node number 0.  (This is not always true; some SPICE programs do not make this assumption... check the manufacturers' documentation!)  Most discrete components (resistors, inductors, capacitors, power supplies, input signals) are one-line entries.  A 1µF capacitor connected between nodes 2 and 5 named C3 is described in spice:

C3 2 5 1uF
Now, if you haven't noticed, SPICE requires you to identify all of the nodes in the circuit.  A node can be considered to be any point that multiple components are connected together.  Even if a wire is seen on the schematic that travels a long distance, it is still considered to be the same node at both ends (unless you are trying to model that long wire with inductance, stray capacitance, and inherent resistance).

So, let's consider a very simple example.  In circuit 1, a small signal is applied to a simple low-pass filter.  Ground is assumed to be node 0, the input is applied to node 1, the resistor and capacitor meet at node 2, which is also the output, and the capacitor is also connected to ground.

Which would be translated into SPICE:

.TITLE One Pole

VIN 1 0 AC 1 SIN(0 1 1KHz)
R1  1 2 5K
C1  2 3 31.83E-09

Now a few things to point out; VIN is an AC signal source, the DC offset is 0, the amplitude is 1V, and the frequency is 1KHz.  GNUcap will also accept 31.83E-09, 31.83n to mean the same value, and it will assume you mean Farads, with or without the "F" on the end.  How else are you going to measure capacitance? (I have to be careful - I had one student get mad at me because I would not give her a "straight" answer to, "how many Amps in a Volt?") As will be apparent, later, this notation is important when coupling to other programs.  For now, let's just be happy that SPICE will accept whatever format we give it.

From here, I find it convenient ("necessary") to provide an output with.  GNUcap will gladly assume your terminal window is 80 characters wide.  ICK! Because it is so easy (in linux) to widen the window, I issue the command:

.OPTION OUT=150
to inform GNUcap that it can produce output as wide as 150 characters.

And now for something I don't understand, but it makes things work: include the line:

.PRINT OP Iter(0) V(2)
(change V(2) to whichever node you want for your output).  I have no idea what this does, but things fail to work if this does not exist.

Now, the outputs can be defined.  Here, the first output is a transient analysis, observing V(1) and V(2), the voltages at nodes 1 and 2, assuming each is in the range -3<V<3:

.PLOT TRAN V(1) (-3,3) V(2) (-3,3)
and the second output is a frequency analysis (over-riding the 1KHz defeinition), ranging from 10Hz to 10MHz on a decade (logarithmic) scale with 10 steps per decade, observing the range from -55dB to +5dB:
.PLOT AC VDB(2) (-55,5)

The analysis is finally performed with the following lines:

.TRAN 0.01MS 1MS 0.05MS

.AC DEC 10 10 10Meg
NOTE the capitol "M" still referes to "milli-" and "Meg" refers to "mega-" as exponent modifiers! (This will cause probelms, I promise!) So, mush it all together to create the file:
.TITLE One Pole

VS 1 0 AC 1 SIN(0 1 1KHz)
R1 1 2 5K
C1 2 0 31.83E-09

.OPTION OUT=150

.PRINT OP Iter(0) V(2)
.PLOT TRAN V(1) (-3,3) V(2) (-3,3)
*.PRINT TRAN V(1) V(2)

.PLOT AC VDB(2) (-55,5)
*.PRINT AC VDB(2)

.TRAN 0.01Ms 1MS 0.05MS

.AC DEC 10 10 10MEG

.END

To run the simulation, you have the choice of running in "batch" mode (run and exit), or in "interactive" mode (read file and accept input from the terminal).  As should be obvious by now, I do not claim to be any kind of GNUcap expert, just trying to provide useful tips.  So, I will only say - I have not mastered the interactive mode and if you want to try it on your own..... go for it! Otherwise, I generally run in batch mode.  Assuming that the file above was saved in the file, onepole.ckt, type the command:

>gnucap -b onepole.ckt
from which I get the output:
Gnucap 0.35
The Gnu Circuit Analysis Package
Never trust any version less than 1.0
Copyright 1982-2006, Albert Davis
Gnucap comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome
to redistribute it under certain conditions
according to the GNU General Public License.
See the file "COPYING" for details.
.TITLE One Pole 
V(1)  -3.                                -1.5                                0.                                 1.5                                3.
V(2)  -3.                                -1.5                                0.                                 1.5                                3.
        +----------------------------------+----------------------------------+----------------------------------+----------------------------------+
 50.u   |                                  .                                  .+     *                           .                                  |
 60.u   |                                  .                                  .+       *                         .                                  |
 70.u   |                                  .                                  . +       *                        .                                  |
 80.u   |                                  .                                  . +        *                       .                                  |
 90.u   |                                  .                                  .  +         *                     .                                  |
 100.u  |                                  .                                  .   +         *                    .                                  |
 110.u  |                                  .                                  .   +          *                   .                                  |
 120.u  |                                  .                                  .    +          *                  .                                  |
 130.u  |                                  .                                  .     +          *                 .                                  |
 140.u  |                                  .                                  .     +           *                .                                  |
 150.u  |                                  .                                  .      +           *               .                                  |
 160.u  |                                  .                                  .       +           *              .                                  |
 170.u  |                                  .                                  .        +          *              .                                  |
 180.u  |                                  .                                  .        +           *             .                                  |
 190.u  |                                  .                                  .         +           *            .                                  |
 200.u  |                                  .                                  .          +          *            .                                  |
 210.u  |                                  .                                  .           +          *           .                                  |
 220.u  |                                  .                                  .           +          *           .                                  |
 230.u  |                                  .                                  .            +         *           .                                  |
 240.u  |                                  .                                  .            +         *           .                                  |
 250.u  |                                  .                                  .             +        *           .                                  |
 260.u  |                                  .                                  .              +       *           .                                  |
 270.u  |                                  .                                  .              +       *           .                                  |
 280.u  |                                  .                                  .               +      *           .                                  |
 290.u  |                                  .                                  .               +      *           .                                  |
 300.u  |                                  .                                  .               +     *            .                                  |
 310.u  |                                  .                                  .                +    *            .                                  |
 320.u  |                                  .                                  .                +   *             .                                  |
 330.u  |                                  .                                  .                +  *              .                                  |
 340.u  |                                  .                                  .                +  *              .                                  |
 350.u  |                                  .                                  .                 +*               .                                  |
 360.u  |                                  .                                  .                 *                .                                  |
 370.u  |                                  .                                  .                *+                .                                  |
 380.u  |                                  .                                  .               * +                .                                  |
 390.u  |                                  .                                  .              * +                 .                                  |
 400.u  |                                  .                                  .             *  +                 .                                  |
 410.u  |                                  .                                  .            *   +                 .                                  |
 420.u  |                                  .                                  .          *     +                 .                                  |
 430.u  |                                  .                                  .         *     +                  .                                  |
 440.u  |                                  .                                  .        *      +                  .                                  |
 450.u  |                                  .                                  .      *       +                   .                                  |
 460.u  |                                  .                                  .     *        +                   .                                  |
 470.u  |                                  .                                  .   *         +                    .                                  |
 480.u  |                                  .                                  .  *          +                    .                                  |
 490.u  |                                  .                                  .*           +                     .                                  |
 500.u  |                                  .                                  *           +                      .                                  |
 510.u  |                                  .                                 *.          +                       .                                  |
 520.u  |                                  .                               *  .          +                       .                                  |
 530.u  |                                  .                              *   .         +                        .                                  |
 540.u  |                                  .                            *     .        +                         .                                  |
 550.u  |                                  .                           *      .       +                          .                                  |
 560.u  |                                  .                         *        .      +                           .                                  |
 570.u  |                                  .                        *         .     +                            .                                  |
 580.u  |                                  .                       *          .    +                             .                                  |
 590.u  |                                  .                     *            .   +                              .                                  |
 600.u  |                                  .                    *             .  +                               .                                  |
 610.u  |                                  .                   *              . +                                .                                  |
 620.u  |                                  .                  *               .+                                 .                                  |
 630.u  |                                  .                 *                +                                  .                                  |
 640.u  |                                  .                *                +.                                  .                                  |
 650.u  |                                  .               *                + .                                  .                                  |
 660.u  |                                  .              *                +  .                                  .                                  |
 670.u  |                                  .              *               +   .                                  .                                  |
 680.u  |                                  .             *               +    .                                  .                                  |
 690.u  |                                  .            *               +     .                                  .                                  |
 700.u  |                                  .            *              +      .                                  .                                  |
 710.u  |                                  .           *              +       .                                  .                                  |
 720.u  |                                  .           *             +        .                                  .                                  |
 730.u  |                                  .           *            +         .                                  .                                  |
 740.u  |                                  .           *           +          .                                  .                                  |
 750.u  |                                  .           *          +           .                                  .                                  |
 760.u  |                                  .           *          +           .                                  .                                  |
 770.u  |                                  .           *         +            .                                  .                                  |
 780.u  |                                  .           *        +             .                                  .                                  |
 790.u  |                                  .           *        +             .                                  .                                  |
 800.u  |                                  .            *      +              .                                  .                                  |
 810.u  |                                  .            *      +              .                                  .                                  |
 820.u  |                                  .             *     +              .                                  .                                  |
 830.u  |                                  .              *   +               .                                  .                                  |
 840.u  |                                  .              *   +               .                                  .                                  |
 850.u  |                                  .               *  +               .                                  .                                  |
 860.u  |                                  .                * +               .                                  .                                  |
 870.u  |                                  .                 *+               .                                  .                                  |
 880.u  |                                  .                  *               .                                  .                                  |
 890.u  |                                  .                  +*              .                                  .                                  |
 900.u  |                                  .                  + *             .                                  .                                  |
 910.u  |                                  .                  +  *            .                                  .                                  |
 920.u  |                                  .                  +    *          .                                  .                                  |
 930.u  |                                  .                   +    *         .                                  .                                  |
 940.u  |                                  .                   +     *        .                                  .                                  |
 950.u  |                                  .                   +       *      .                                  .                                  |
 960.u  |                                  .                    +       *     .                                  .                                  |
 970.u  |                                  .                    +         *   .                                  .                                  |
 980.u  |                                  .                     +         *  .                                  .                                  |
 990.u  |                                  .                      +          *.                                  .                                  |
 0.001  |                                  .                      +           *                                  .                                  |
        +----------------------------------+----------------------------------+----------------------------------+----------------------------------+
VDB(2)-55.                               -40.                               -25.                               -10.                                5.
        +----------------------------------+----------------------------------+----------------------------------+----------------------------------+
 10.    |                                  .                                  .                                  .                      *           |
 12.589 |                                  .                                  .                                  .                      *           |
 15.849 |                                  .                                  .                                  .                      *           |
 19.953 |                                  .                                  .                                  .                      *           |
 25.119 |                                  .                                  .                                  .                      *           |
 31.623 |                                  .                                  .                                  .                      *           |
 39.811 |                                  .                                  .                                  .                      *           |
 50.119 |                                  .                                  .                                  .                      *           |
 63.096 |                                  .                                  .                                  .                      *           |
 79.433 |                                  .                                  .                                  .                      *           |
 100.   |                                  .                                  .                                  .                      *           |
 125.89 |                                  .                                  .                                  .                      *           |
 158.49 |                                  .                                  .                                  .                      *           |
 199.53 |                                  .                                  .                                  .                      *           |
 251.19 |                                  .                                  .                                  .                      *           |
 316.23 |                                  .                                  .                                  .                     *            |
 398.11 |                                  .                                  .                                  .                     *            |
 501.19 |                                  .                                  .                                  .                    *             |
 630.96 |                                  .                                  .                                  .                   *              |
 794.33 |                                  .                                  .                                  .                 *                |
 1.K    |                                  .                                  .                                  .               *                  |
 1.2589K|                                  .                                  .                                  .             *                    |
 1.5849K|                                  .                                  .                                  .          *                       |
 1.9953K|                                  .                                  .                                  .      *                           |
 2.5119K|                                  .                                  .                                  .  *                               |
 3.1623K|                                  .                                  .                                 *.                                  |
 3.9811K|                                  .                                  .                             *    .                                  |
 5.0119K|                                  .                                  .                        *         .                                  |
 6.3096K|                                  .                                  .                    *             .                                  |
 7.9433K|                                  .                                  .               *                  .                                  |
 10.K   |                                  .                                  .           *                      .                                  |
 12.589K|                                  .                                  .      *                           .                                  |
 15.849K|                                  .                                  . *                                .                                  |
 19.953K|                                  .                                * .                                  .                                  |
 25.119K|                                  .                           *      .                                  .                                  |
 31.623K|                                  .                      *           .                                  .                                  |
 39.811K|                                  .                  *               .                                  .                                  |
 50.119K|                                  .             *                    .                                  .                                  |
 63.096K|                                  .        *                         .                                  .                                  |
 79.433K|                                  .    *                             .                                  .                                  |
 100.K  |                                  *                                  .                                  .                                  |
 125.89K|                             *    .                                  .                                  .                                  |
 158.49K|                         *        .                                  .                                  .                                  |
 199.53K|                    *             .                                  .                                  .                                  |
 251.19K|               *                  .                                  .                                  .                                  |
 316.23K|           *                      .                                  .                                  .                                  |
 398.11K|      *                           .                                  .                                  .                                  |
 501.19K| *                                .                                  .                                  .                                  |
 630.96K*                                  .                                  .                                  .                                  |
 794.33K*                                  .                                  .                                  .                                  |
 1.Meg  *                                  .                                  .                                  .                                  |
 1.2589M*                                  .                                  .                                  .                                  |
 1.5849M*                                  .                                  .                                  .                                  |
 1.9953M*                                  .                                  .                                  .                                  |
 2.5119M*                                  .                                  .                                  .                                  |
 3.1623M*                                  .                                  .                                  .                                  |
 3.9811M*                                  .                                  .                                  .                                  |
 5.0119M*                                  .                                  .                                  .                                  |
 6.3096M*                                  .                                  .                                  .                                  |
 7.9433M*                                  .                                  .                                  .                                  |
 10.Meg *                                  .                                  .                                  .                                  |
        +----------------------------------+----------------------------------+----------------------------------+----------------------------------+
NOTE: Web browsers may or may not like this.  If your web broswer line-wrapped, sorry.  such is the result if you use OUTPUT=150 and only have an 80-column window.  There are alternatives....

Yes, it is "plotted" in text mode.  Guess what - this is how SPICE looks! Oh, I hear it now... "I can't use this; it's icky!" Yes, it is.  So, go back to the file and change the two .PLOT commands to .PRINT, delete the ranges (-3,3) and (-55,5) and re-run.  Now, you get:

Gnucap 0.35
The Gnu Circuit Analysis Package
Never trust any version less than 1.0
Copyright 1982-2006, Albert Davis
Gnucap comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome
to redistribute it under certain conditions
according to the GNU General Public License.
See the file "COPYING" for details.
.TITLE One Pole 
#Time       V(1)       V(2)      
 50.u       0.30902    0.044171  
 60.u       0.36812    0.062105  
 70.u       0.42578    0.082504  
 80.u       0.48175    0.10512   
 90.u       0.53583    0.12971   
 100.u      0.58779    0.15604   
 110.u      0.63742    0.18385   
 120.u      0.68455    0.21292   
 130.u      0.72897    0.243     
 140.u      0.77051    0.27387   
 150.u      0.80902    0.3053    
 160.u      0.84433    0.33706   
 170.u      0.87631    0.36894   
 180.u      0.90483    0.40072   
 190.u      0.92978    0.43219   
 200.u      0.95106    0.46315   
 210.u      0.96858    0.49341   
 220.u      0.98229    0.52277   
 230.u      0.99211    0.55106   
 240.u      0.99803    0.57811   
 250.u      1.         0.60375   
 260.u      0.99803    0.62783   
 270.u      0.99211    0.6502    
 280.u      0.98229    0.67073   
 290.u      0.96858    0.6893    
 300.u      0.95106    0.70578   
 310.u      0.92978    0.72007   
 320.u      0.90483    0.73209   
 330.u      0.87631    0.74174   
 340.u      0.84433    0.74896   
 350.u      0.80902    0.7537    
 360.u      0.77051    0.7559    
 370.u      0.72897    0.75552   
 380.u      0.68455    0.75255   
 390.u      0.63742    0.74697   
 400.u      0.58779    0.73879   
 410.u      0.53583    0.728     
 420.u      0.48175    0.71465   
 430.u      0.42578    0.69876   
 440.u      0.36812    0.68037   
 450.u      0.30902    0.65955   
 460.u      0.24869    0.63636   
 470.u      0.18738    0.61087   
 480.u      0.12533    0.58318   
 490.u      0.062791   0.55339   
 500.u      1.0432n    0.52159   
 510.u     -0.062791   0.4879    
 520.u     -0.12533    0.45245   
 530.u     -0.18738    0.41536   
 540.u     -0.24869    0.37677   
 550.u     -0.30902    0.33683   
 560.u     -0.36812    0.29569   
 570.u     -0.42578    0.25349   
 580.u     -0.48175    0.2104    
 590.u     -0.53583    0.16659   
 600.u     -0.58779    0.12222   
 610.u     -0.63742    0.077452  
 620.u     -0.68455    0.032466  
 630.u     -0.72897   -0.012567  
 640.u     -0.77051   -0.057476  
 650.u     -0.80902   -0.10209   
 660.u     -0.84433   -0.14623   
 670.u     -0.87631   -0.18973   
 680.u     -0.90483   -0.23243   
 690.u     -0.92978   -0.27415   
 700.u     -0.95106   -0.31474   
 710.u     -0.96858   -0.35404   
 720.u     -0.98229   -0.39189   
 730.u     -0.99211   -0.42816   
 740.u     -0.99803   -0.46269   
 750.u     -1.        -0.49537   
 760.u     -0.99803   -0.52605   
 770.u     -0.99211   -0.55462   
 780.u     -0.98229   -0.58097   
 790.u     -0.96858   -0.605     
 800.u     -0.95106   -0.62662   
 810.u     -0.92978   -0.64574   
 820.u     -0.90483   -0.66228   
 830.u     -0.87631   -0.67619   
 840.u     -0.84433   -0.6874    
 850.u     -0.80902   -0.69589   
 860.u     -0.77051   -0.70161   
 870.u     -0.72897   -0.70454   
 880.u     -0.68455   -0.70467   
 890.u     -0.63742   -0.70201   
 900.u     -0.58779   -0.69657   
 910.u     -0.53583   -0.68836   
 920.u     -0.48175   -0.67742   
 930.u     -0.42578   -0.66379   
 940.u     -0.36812   -0.64754   
 950.u     -0.30902   -0.62871   
 960.u     -0.24869   -0.6074    
 970.u     -0.18738   -0.58368   
 980.u     -0.12533   -0.55765   
 990.u     -0.062791  -0.52941   
 0.001     -998.14p   -0.49907   
#Freq       VDB(2)    
 10.       -434.25u   
 12.589    -688.21u   
 15.849    -0.0010907 
 19.953    -0.0017285 
 25.119    -0.0027392 
 31.623    -0.0043405 
 39.811    -0.0068772 
 50.119    -0.010895  
 63.096    -0.017254  
 79.433    -0.027314  
 100.      -0.043211  
 125.89    -0.068287  
 158.49    -0.10774   
 199.53    -0.16953   
 251.19    -0.26571   
 316.23    -0.4139    
 398.11    -0.63888   
 501.19    -0.97317   
 630.96    -1.4553    
 794.33    -2.1243    
 1.K       -3.0102    
 1.2589K   -4.1243    
 1.5849K   -5.4552    
 1.9953K   -6.973     
 2.5119K   -8.6387    
 3.1623K   -10.414    
 3.9811K   -12.265    
 5.0119K   -14.169    
 6.3096K   -16.107    
 7.9433K   -18.068    
 10.K      -20.043    
 12.589K   -22.027    
 15.849K   -24.017    
 19.953K   -26.011    
 25.119K   -28.007    
 31.623K   -30.004    
 39.811K   -32.002    
 50.119K   -34.001    
 63.096K   -36.001    
 79.433K   -38.       
 100.K     -40.       
 125.89K   -42.       
 158.49K   -44.       
 199.53K   -46.       
 251.19K   -48.       
 316.23K   -50.       
 398.11K   -52.       
 501.19K   -54.       
 630.96K   -56.       
 794.33K   -58.       
 1.Meg     -60.       
 1.2589Meg -62.       
 1.5849Meg -64.       
 1.9953Meg -66.       
 2.5119Meg -68.       
 3.1623Meg -70.       
 3.9811Meg -72.       
 5.0119Meg -74.       
 6.3096Meg -76.       
 7.9433Meg -78.       
 10.Meg    -80.       
"This isn't much better!" Well.... maybe it is.  For the non-unicians out there, let me just point out that unix (and various flavors) is arguably the most ecclectic set of tools ever assembled! This output can be saved to a file, and with a little massaging, it can be fed into gnuplot.  This is discussed on my GNUcap and GNUplot page.

One important note before continuing... the .PLOT command will, at MOST, display two plots at the same time.  of more value, the .PRINT command will output many columns of data, where the first column is always the X-axis, and subsequent columns are Y-values at that location on the X-axis.  Again, this is great for use with GNUcap and GNUplot!

At this point, I want to be really careful - I do not intend for this page to be a "How to use SPICE" page as much as a "How to use the GNUcap version of SPICE" page.  (And only at a very introductory level at that!)  So - I quickly want to demonstrate how to use a transistor (.MODEL) and a subcircuit example to use an op-amp.  Beyond that, There are LOTS of SPICE websites, and GNUcap documentation is included with the source code.

An example of a transistor circuit: note that the transistor is REALLY distorting:

.TITLE NPN Distortion

VCC 4 0 5

VS 1 0 AC 1 SIN(0 1 1KHz)
RS 1 2 500
C1 2 3 1u
R1 3 4 250K
R2 3 0 75K
RC 5 4 5600
RE 6 0 600

Q1 5 3 6 Q2N3904

.MODEL Q2N3904 NPN BF=120 IS=1.E-12

.OPTION OUT=150

.PRINT OP Iter(0) V(5)
*.PLOT TRAN V(5) (0,5) V(6) (-0,5)
.PRINT TRAN V(5) V(6)

.TRAN 0.0S 2MS 0.00001S

*.AC DEC 10 10 10MEG

.END

And here is an over-simplified Op-amp example:

.TITLE OP-amp Example

VCC 4 0 20
VEE 5 0 -20

VS 1 0 AC 1 SIN(0 1 10KHz)
R1 1 2 5K
R2 2 3 10K
XOP1 0 2 0 4 5 3 UA741


.SUBCKT OPAMP1 1 2 6
RIN 1 2 10MEG
EP1 3 0 1 2 100K
RP1 3 4 1K
CP1 4 0 1.5915UF

EOUT 5 0 4 0 1
ROUT 5 6 1
.ENDS


.SUBCKT UA741    1   2   3   4    5    6
*               Vi+ Vi- GND PWR+ PWR- Vout
Q1 11 1 13 OPNPN1
Q2 12 2 14 OPNPN2
RC1 4 11 5.305165E+03
RC2 4 12 5.305165E+03
C1 11 12 5.459553E-12
RE1 13 10 2.151297E+03
RE2 14 10 2.151297E+03
IEE 10 5 1.666000E-05
CE  10 3 3.000000E-12
RE  10 3 1.200480E+07
GCM 3 21 10 3 5.960753E-09
GA 21 3 12 11 1.884955E-04
R2 21 3 1.000000E+05
C2 21 22 3.000000E-11
GB 22 3 21 3 2.357851E+02
RO2 22 3 4.500000E+01
D1 22 31 OPD12
D2 31 22 OPD12
EC 31 3 6 3 1.0
RO1 22 6 3.000000E+01
D3 6 24 OPD34
VC 4 24 2.803238E+00
D4 25 6 OPD34
VE 25 5 2.803238E+00
.MODEL OPD12 D (IS=9.762287E-11)
.MODEL OPD34 D (IS=8.000000E-16)
.MODEL OPNPN1 NPN (IS=8.000000E-16 BF=9.166667E+01)
.MODEL OPNPN2 NPN( IS=8.309478E-16 BF=1.178571E+02)
.ENDS


.OPTION OUT=150

.PRINT OP Iter(0) V(3)
*.PLOT TRAN V(1) (-3,3) V(3) (-3,3)
.PRINT TRAN V(1) V(3)

*.PLOT AC VDB(3) (-5,15)
.PRINT AC VDB(3)

*.PLOT AC VDB(3) (-5,15)
.PRINT AC VDB(3)

.TRAN 0.01Ms 0.2MS 0.005MS

.AC DEC 10 10 10MEG

.END

Now that we can get the output, let's go back and look at that header:

Gnucap 0.35
The Gnu Circuit Analysis Package
Never trust any version less than 1.0
Copyright 1982-2006, Albert Davis
Gnucap comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome
to redistribute it under certain conditions
according to the GNU General Public License.
See the file "COPYING" for details.
.TITLE Lab 5 
#Time       V(1)       V(2)       V(3)      
50.u       0.80902    0.4542     0.46065   
51.u       0.74174    0.42064    0.42672   
52.u       0.66601    0.38249    0.38824   
53.u       0.58269    0.34017    0.34563
etc...

OK, Dr. Davis, thank you for providing gnucap, and for warning us that it is not a completed project.  Now, MAKE THAT MESSAGE GO AWAY!!! No, OK, fine, we'll do it ourselves.  We can just use the tail command:

gnucap -b lab5.ckt | tail -n +10

This will throw away the first 9 lines, and continue the text output, beginning with the 10th line.

Next, we might want to translate the Meg, M (milli), u, n, p, and f to their appropriate x10n values.  We can use the "stream editor," sed, to search for each of these:

gnucap -b lab5.ckt | tail -n +10 | sed s/Meg/E+06/g | sed s/K/E+03/g | sed s/M/E-03/g | sed s/u/E-06/g | sed s/n/E-09/g | sed s/p/E-12/g | sed s/f/E-15

Yes, it's a lot of typing; either deal with it, or write a script to perform the filtering.  But this is still important because we can direct the output to a file, using the `> filename` to save the filtered results to a file.  If, for example, you save the output to something called "lab5.out" then you can use gnuplot to plot the output in a much nicer output than the .PLOT command in gnucap will show:

gnuplot> plot 'lab5.out' using 1:4 with lines

will open the file, 'lab5.out' and use column 1 as the X-axis coordinate value and column 4 as the Y-axis coordinate value, and connect the dots with lines.  (The default is to use '+' symbols.)

Now that you are all edumicatified in SPICE, you can try it out for yourself! Just go here to try it online!

gnucap setup for Slackware 14.1:

First, download 32-bit package or 64-bit package. You can also check 32-bit slackware pkgs 14.1 site or 64-bit slackware pkgs 14.1 site for download links.

Then, install the package:

/root# upgradepkg --install-new gnucap-20091207-i486-1_slack.txz

home

If you need to reach me, you can always email me at email (wenton@ieee.org)

revised Dec 13, 2012: add info about gnuplot

revised Oct 2, 2018: add Slackware 32- and 64-bit packages