Improved vacuum tube models for SPICE simulations
Table of Contents
Part 1: Models and example
by
Norman L. Koren
Much of the material in here originally appeared in Glass Audio, Vol. 8, No. 5, 1996, p. 18. As my principal hobby interest is now photography and I work crazy long hours at Imatest, I won’t have much time to update this article or answer difficult questions. James E. Lanier’s PSPICE Triode Calculator is a promising program for finding tube model parameters. It’s still under development; he plans to expand it to include tetrodes and pentodes. LTspice can apparently be used for these models. 
SPICE, an electronic circuit simulation program originally developed at the University of California at Berkeley, has found wide acceptance in the electronics and semiconductor industries. It can perform highly accurate time and frequency domain analysis of complex analog and digital circuits (including harmonic and IM distortion). Several commercial versions of SPICE run on personal computers, most notably PSpice from OrCAD. The downloadable PSspice student version (version 9.1 at last look) has limited capabilities by standards of solidstate circuit design, but it can be amazingly useful in simulating vacuum tube amplifiers, which tend to have fewer components. It was used for all examples in this article. It’s hard to find on the OrCAD website. I had to go to the CadencePCB home page and click on All Downloads. Other wellknown SPICE implementations include Electronics Workbench, 8002635552, and ICAP/4, from Intusoft, P.O Box 710 San Pedro, CA 907330710; 3108330710. Duncan Munro’s list of SPICE vendors may contain some hidden treasures. WinSpice is a free Spice3F4 Port for Windows 95, 98, 2000 & NT. Very intriguing. It will simulate much larger circuits than evaluation PSpice.
SPICE contains builtin models for passive devices (resistors, capacitors, inductors, etc.) and for most active semiconductor devices (bipolar transistors, FETs, Op Amps, etc.), but none for vacuum tubes. SPICE models and can be downloaded from manufacturer’s Websites.
Scott Reynolds^{1} and Marshall Leach^{2} model vacuum tubes as voltagecontrolled current sources whose output current is a weighted sum of controlling element voltages raised to the threehalves power. The controlling elements are different for triodes and pentodes. (Since the suppressor grid has little effect on the transfer characteristics, pentodes are modeled as tetrodes.) The plate current equation for triodes is
= 0 otherwise.
The plate current equation for pentodes is
I_{P} = (2/k_{G1}p)(E_{G}+E_{G2}/µ)^{3/2 }arctan(E_{P}/k_{VB}) for E_{G}+E_{G2}/µ>= 0
= 0 otherwise.
where I_{P} is plate current, E_{G} is control grid voltage, E_{P} is plate voltage, E_{G2 }is screen grid voltage (all voltages with respect to the cathode),µ is the amplification factor, and k_{G1} is a factor used to fit the equation to data. The pentode equation differs from the triode equation in that the screen grid replaces the plate as a controlling element, and an arctangent term (from Scott Reynolds’ model) is added to model a response curve “knee” whose location is proportional to k_{VB}. Equations (1) and (2) are forms of the LangmuirChilds law, which can be derived from fundamental physics.^{3} Plate curves for a 12AX7 triode with µ = 93 (below the specified value but a good overall
fit to equation (1)) are illustrated below in Figure 1.
The screen grid current equation for pentodes is
I_{G2} = (E_{G}+E_{G2 }/µ)^{3/2}/k_{G2} for E_{G}+E_{G2 }/µ >= 0
= 0 otherwise.
where I_{G2} is the screen grid current and k_{G2 }is a constant similar in function to k_{G1}.
The difficulty with equations (1) and (2) is that they assume that the grid has perfect control over the plate current, i.e., that there is no leakage current. The real world is, alas, not so kind, and these equations give a poor estimate of plate current for large positive plate voltage and large negative grid voltage,^{5} region (A) in Figure 1, above. Compare this with region (A) in Figure 2, below, which is derived from the new model but matches published curves^{4 }extremely well.
The modeling error would not be serious if tubes did not operate in the region of greatest error. Unfortunately they do, as illustrated in Figure 1 by a typical load line for a 12AX7 with a 350V plate supply and a 150kW plate resistor. The load line crosses region (A), and operation may extend into this region for large signals. This problem is exacerbated in class AB pushpull amplifiers, where the operation of each tube traverses the region of worst error as it moves from conduction to cutoff and back. An accurate estimate of distortion in pushpull amplifiers is impossible without an improved model.
The new equations for tube characteristics are phenomenological equations, that is, equations that model the behavior of physical phenomena using a reasonable number of parameters, but are not derived from fundamental physics. They have been designed so that plate current I_{P }> 0 whenever plate voltage E_{P} > 0 (for triodes) or screen grid voltage E_{G2} > 0 (for pentodes). Both equations take advantage of the fact that log(1+exp(x)) approaches x when x >> 1 and 0 when x << 1.
The new plate current equation for triodes is
E_{1} = (E_{P }/k_{P}) log(1 + exp(k_{P}(1/µ + E_{G}/sqrt(k_{VB }+ E_{P}^{2}))))
I_{P} = (E_{1}^{X}/k_{G}_{1})(1 + sgn(E_{1}))
The signum function, sgn(x) = 1 for x >= 0; sgn(x) = 1 for x < 0, is used to prevent current flow when E_{1} < 0. The new plate current equation for pentodes is similar to that of triodes:
E_{1} = (E_{G2 }/k_{P}) log(1 + exp(k_{P }(1/µ+E_{G}/E_{G2})))
I_{P} = (E_{1}^{X}/k_{G}_{1})(1 + sgn(E_{1})) arctan(E_{P }/k_{VB})
Equation (4) reduces to equation (1) when E_{P}^{2 }>> k_{VB} and k_{P }(1/µ + E_{G}/E_{P} ) >> 1. Similarly, equation (5) reduces to equation (2) when k_{P }(1/µ + E_{G}/E_{G2}) >> 1. We continue to use equation (3) for pentode screen grid current for three reasons:
 Screen current is not as critical to the tube performanceas plate current.
 Good data on screen current is scarce.
 The modelshould be kept as simple as possible for use with evaluation version of PSpice.
The SPICE language is an industry standard for describing electronic circuits (called netlists) and instructions for modeling them. PSpice is a commercial implementation of SPICE that features convenient schematics entry through a graphic interface. PSpice actually consists of three separate programs: Schematics for data entry, PSpice for running the SPICE simulation, and Probe for displaying the results.
If you plan to modify or add tube models you’ll need to know a bit about the SPICE language. Appendix A has listings of several SPICE files. The first line of a SPICE file contains a title. Data on this line is ignored. The last line consists of the .END statement. Netlist data lines have the general format,
PART node_1 node_2 {additional nodes if applicable} value(s) ; optional comments
Comments may appear on lines that start with an asterisk (*) or on data lines following a semicolon (;). Continuation lines begin with a plus sign (+), except for equations, where the portion to the right of the equal sign (enclosed in braces {…}) is restricted to one line. This limitation can present problems with long equations. To get around it, E1 in Equations (4) and (5) has been modeled as a voltagecontrolled voltage source that controls IP, which is a voltagecontrolled current source. This makes two relatively short equations out of one long one.
I strongly recommend the excellent textbook by Paul W. Tuinenga,^{10} “SPICE, A Guide to Circuit Simulation & Analysis using PSpice.” It contains detailed descriptions SPICE commands and models, including how to perform frequencydomain analysis (.AC), timedomain analysis (.TRAN) and Fourier analysis (.FOUR), which produces a detailed harmonic distortion analysis. In the PSpice Schematics program these instructions are generated by clicking on Analysis, Setup…, then working with the appropriate boxes.
To perform a SPICE simulation with the MicroSim evaluation package, run the Schematics program, then click on File, Open… to open a Schematics data file using the usual Windows navigation techniques. (You can also create a new schematic.) We’ll call it filename.SCH in this example. You may edit and save it if you wish. To perform the PSpice simulation, click on Analysis, Simulate. This creates two SPICE language files: filename.CIR containing simulation instructions and filename.NET containing the netlist. These files are then read into the PSpice simulator, which writes text results (voltages, currents, etc.) to filename.OUT and graphics data to filename.DAT for display with Probe, which is run automatically if you have the .PROBE statement in the data file. Probe displays time and/or frequencydomain plots of voltages at selected nodes or currents through selected components. The format of the display is quite versatile. If V(n) is the voltage at node n, VDB(n) is the voltage in dB and VP(n) is the phase. Current display is similarly flexible.
To use the Schematics program I had to create symbols for tubes: a difficult task you can avoid by downloading the models and following the instructions in Appendix B for loading the symbol and SPICE model libraries into PSpice.
Table 1 gives parameters for some familiar tubes. These parameters are used in the tube model library listed in Appendix A3. The first six are equivalent to µ, X, kG1, kG2, kP, and kVB in equations (3)(5).
TUBE  MU  EX  KG1  KG2  KP  KVB  CCG  CPG  CCP  RGI 

6DJ8  28  1.3  330  320  300  2.3P  2.1P  0.7P  2k  
6L6CG  8.7  1.35  1460  4500  48  12  14P  0.85P  12P  1k 
12AX7  100  1.4  1060  600  300  2.3P  2.4P  0.9P  2k  
12AU7  21.5  1.3  1180  84  300  2.3P  2.2P  1.0P  2k  
6550  7.9  1.35  890  4800  60  24  14P  0.85P  12P  1k 
KT88  8.8  1.35  730  4200  32  16  14P  0.85P  12P  1k 
Table 1. Spice parameters for some popular tube models
Most parameters in Table 1 can be determined from published graphs and tables. Smallsignal triode data was obtained from Tom Mitchell’s book.^{4} EL34 data came from the Audiomatica Sofia web page. Other sources were the Parts Connection catalog (18007690747), which has a large collection of reprints, old copies of the Sylvania and RCA tube manuals, and the pages of Glass Audio. The best places to find tube data on the Web are Duncan’s Amp Pages and Frank’s Electron tube Pages. Published values for interelectrode capacitance always give better high frequency response than experiment. I measured the capacitance of a tube socket with two inch leads, and found it to be around 0.7pF for adjacent pins and 0.5pF for others. I added these capacitances to the published values. Even so, simulated frequency response may be somewhat optimistic. Tubes of different origin (e.g., Chinese, Russian, and old British 12AX7s) can differ markedly in their interelectrode capacitances. This may explain some of the sonic differences. Of course, real circuits have stray capacitance, and you must specify it if you want to include it in SPICE simulations.
The trial and error procedure for finding tube parmaters is tedious. My Matlab program for determing them is now available on Finding SPICE tube model parameters. Two other people have reletant work.

The parameters in Table 1 can be found by a methodical trial and error procedure. To use this procedure, the programs in Appendix A1 through A3 must be employed. Listings A1 and A2 produce plate characteristic curves for triodes and pentodes, respectively. Listing A3 is a portion of the tube library referenced by the .LIB statement in listings A1 and A2. Tubes are modeled as subcircuits, starting with .SUBCKT and ending with .ENDS. .SUBCKT is followed by the model name and then the element node names. We have chosen the order the element nodes to be plate, control grid, cathode, and (in pentodes) screen grid.
To find the parameter values for a new tube, it is best to start with values for a similar existing tube, except for amplification factor MU (µ), which is generally close to the manufacturer’s specification. MU is (minus) the change of plate voltage for a given change of grid voltage at constant plate current. This is illustrated by line segment BC in Figure 2, which is a good choice for determining MU because it is located in a region of tube operation far from region (A), where effective MU is reduced. In this case, plate voltage increases by 100V when grid voltage is decreased by 1V while plate current remains constant at 1.9 mA, resulting in MU = 100.
To determine EX and KG1 (X and kG1), run the appropriate plate curve program (Appendix A1 or A2), and observe plate current I(VP) using Probe. Adjust EX and KG1 so that curves for relatively low negative grid voltages (e.g., Vg = 0 or 0.5 for the 12AX7 in Figure 2) match experimental data. Typical values of EX range from 1.3 to 1.4. Line curvature increases with EX. The textbook value of 3/2 for EX is appropriate for equations (1) and (2), where it gives a reasonable average representation of tube operation, but is not really accurate in all regions. KG1 is inversely proportional to plate current for given grid and plate voltages. It usually requires several runs to get a really good match for EX and KG1. MU may need to be adjusted slightly in the process.
For pentodes, the best estimates of MU, EX, and KG1 are obtained from triodemode curves, i.e., curves taken with the screen grid connected to the plate. Such curves were available for the pentodes listed in Table 1. It is very gratifying to see how parameters obtained from the triode curves (Figure 4) result in excellent fits to pentode and ultralinear curves (Figures 3 and 5). In running the pentode plate curve program (Appendix A2), operating mode can be set by adjusting parameter TRIMODE (0 for pentode, 40 for ultralinear (UL), and 100 for triode). VG2NOM (quiescent screen voltage) must also be set appropriately.
KG2 is inversely proportional to pentode screen grid current (I(VG2) in Appendix A2) for given control and screen grid voltages. Curves for pentode screen grid current are rarely published, but screen grid current is usually included in tables of typical tube operation. It is adequate to match a point or two from these tables. KG2 does not need to be estimated with great accuracy to obtain good results in SPICE simulations.
KP (kP) dominates the behavior of the new model in region (A), which is characterized by large negative grid voltage, large plate voltage, and low plate current. Plate current is inversely proportional to KP in this region. Determining KP for a given tube is done entirely by trialanderror. Triodemode curves must be used to obtain an accurate estimate of KP for pentodes because published pentode curves tend to have insufficient resolution in region (A).
KVB (kVB) relates to the “knee” of the characteristic curves, and is defined differently in the triode and pentode equations. For pentodes, the knee is proportional to KVB, and is most visible in the pentodemode curves (Figure 3 for the 6550). Equation (5) does not give an accurate estimate of the knee for all levels of grid voltage, EG . Fortunately, this is not a serious limitation because load lines for practical designs pass close to the knee for EG = 0. (Otherwise there would be a serious impedance mismatch.) The location of the knee for EG = 0 was used to determine KVB in Table 1. For triodes, the knee is proportional to the square root of KVB, and is only apparent when the tube is operated with positive grid voltage. Triode curves for positive grid voltage are published infrequently, for example, the 12AU7 in the Sylvania tube manual.
RGI is the gridtocathode resistance that controls grid current when EG > 0. (No grid current flows during normal operation, when EG < 0.) The numbers in Table 1 are rough estimates based on measurements of similar tubes in old texts.3 Good uptodate data is very scarce, and would be most welcome. Grid current flows in class AB2 pushpull amplifiers, but doesn’t need to be modeled precisely because it does not contribute to the output signal. It should, however, be modeled well enough to determine if the driver tubes can supply the necessary current. Grid current presents a special problem in capacitivelycoupled circuits: Since it only flows in one direction, it charges the coupling capacitor, driving the tube closer to cutoff. This effect does not appear in SPICE small signal analysis or in transient (.TRAN) solutions for a single cycle of the input waveform: Many cycles are required. This effect can be very audibly jarring.
Plate curves (plate current as a function of plate voltage for a set of grid voltages) may be obtained by running one of four files in the tube models file, which can be downloaded by shiftclicking on Tubemods.zip. Schematics for Triotest.sch and Pent_P.sch are shown on the right.
 Triotest.sch Figs. 2, 3. Triode curves.
 Pent_P.sch Figs. 4, 5. Pentode curves in pentode mode (screen grid at a fixed voltage). VG2NOM should be set to the fixed screen voltage used in the data sheet. EVALUE E2 attribute EXPR is set to V(%IN+, %IN)*1+V(1P)*0 (could be simply V(%IN+, %IN) ).
 Pent_TR Fig. 6. Pentode curves in triode mode (screen grid connected to plate). VG2NOM is not used. EVALUE E2 attribute EXPR should be set to V(%IN+, %IN)*.0+V(1P)*1 (or simply V(1P) ) .
 Pent_UL.sch Fig. 7. Pentode curves in UltraLinear (UL) mode (screen grid on 40% output transformer tap). VG2NOM should be set to the quiescent plate voltage. EVALUE E2 attribute EXPR should be set to V(%IN+, %IN)*.4+V(1P)*.6 . UltraLinear mode is a compromise between pentode and triode mode that shares some of the best attributes of both: much lower output impedance than pentode mode and much greater power output than triode mode.
Control files and netlists for these files, as well as a earlier versions written in SPICE language, are shown in Appendices A1 and A2. Additional instructions on using these files are near the end of Part 2. Pentode, triode, and UL mode plots for the GE 6550A are shown below. The 6550A data sheet is available from Frank’s electron tube pages. It’s gratifying to see the excellent agreement with data in all three modes.
Output transformers have traditionally been surrounded by an aura of mystery, and hard data has been hard to find. Plitron Manufacturing Inc. (601 Magnetic Drive #8, Toronto, Ontario, Canada M3J3J2, 4166679914) has improved this situation in a new line of toroidal output transformers that have an unusually complete set of specifications.9 They have also published an excellent book, “Transformers and Tubes in Power Amplifiers”, by Menno Vanderveen, that describes these specs in detail.
Toroidal transformers have much lower leakage flux than traditional “EI” transformers (sonamed after their core geometry). This results in an extremely large bandwidth. Their only drawback is that their extremely low magnetic circuit reluctance makes it necessary to balance the dc current in the two haves of the primary winding extra care. Table 2 gives parameters for the PAT4006CFB output transformer relevant to SPICE simulation. The PAT4006CFB is a semicustom version of the 100W PAT4006, available on special order, designed for four 6550 or similar tubes in pushpullparallel. It has a 2 kohm primary winding and two centertapped secondary windings: a 5 ohm winding for the speaker and a 20 ohm winding for feedback.
PARAMETER  SYMBOL  VALUE 

Total primary inductance  Lp  392.5H 
Primary leakage inductance  Lsp  0.972mH 
Quality factor = Lp / Lsp  Q  403600 
Ultralinear tap  0.4  
Turns ratio  Np / Ns  20 
Effective primary capacitance  Cip  342pF 
Total primary resistance  Rip  56 ohms 
Total secondary resistance  Ris  0.1 ohms 
Table 2. Parameters of the Plitron PAT4006CFB output transformer
To develop the SPICE model (Appendix A3), the centertapped primary winding with ultralinear taps is divided into four mutuallycoupled segments that have {0.3, 0.2, 0.2, 0.3} of the total number of windings. The inductance of each segment is proportional to the square of the number of windings: {.09LP, .04LP, .04LP, .09LP} = {35.325H, 15.7H, 15.7H, 35.325H}. The ratio of primary to secondary inductance is (NP / NS)2. The transformer’s coefficient of mutual coupling, KALL, is entered into the SPICE data file:
K_{ALL} = sqrt(11/Q) ~= 11/(2Q) (The approximation holds for large Q.)
The primary leakage inductance, LSP, should not be entered into the SPICE model. Its effects are calculated from KALL. Similarly, the total primary inductance, LP, is not entered. The effective primary capacitance, CIP, is inserted between the end terminals of the primary winding. The SPICE model of the PAT4006CFB in Appendix A3 matches Plitron’s published data very closely. Primary and secondary resistances have been omitted for the sake of simplicity (to avoid bumping into the limits of the PSpice evaluation package) and because they have very little effect on performance: They are only about 2.5% of their corresponding impedances. They can be easily added if required.
The frequency reponse at the output meets the 2020,000 Hz µ1dB specification with no problem, but there is a huge 0.5 Hz peak at the first gain stage plate. Altough this peak is well outside the range of hearing it caused definite audible problems, especially on records, where the rotational frequency at 33.3 RPM is– you guessed it– almost exactly 0.5 Hz. It was a sort of grindy sound– perhaps an intermodulation distortion component. A redesign, discussed in Feedback and Fidelity and SPICE and the art of preamplifier design, fixed it beautifully. Listings and excerpts from the output files are in Appendix A4 in part 2.
Output files PASorgTC.cir and PASorgTC.net were generated by schematics. Output file PASorgTC.out was generated by PSpice. Many of the lines in PASorgTC.cir are generated from Schematics by clicking on Analysis, Setup…, then working with the appropriate boxes. .LIB is followed by the name of the library file that contains subcircuits referenced in the program. .PROBE instructs the program to generate data for the PROBE program, which displays graphs of time and/or frequency domain signals at each node. .ac calls for an ac (frequencydomain) analysis, i.e., a frequency sweep with 20 points per decade from 0.01 Hz to 1 MHz. If present, .TRAN calls for a transient (timedomain) analysis, which is required if a Fourier analysis is to be performed.
Appendix A4C shows some of the results of running PSpice, including the dc voltages at each node, the currents drawn by the two voltage sources, and the total power consumption. The first tube is labelled TU3 because TU1 and TU2 were in the phono preamplifier. For example, the plates of TU3 and TU4 are at 168 and 196 volts– about where they should be (a little over half the supply voltage). A Fourier analysis can be performed for time domain simulations.
Audio myths die hard, but several wither under the bright light of SPICE simulation. Feedback loops, which generate plenty of controversy in audio circles, are wellsuited for SPICE analysis. We can only touch on them here I discuss them in detail in Feedback and Fidelity.
Let A be the openloop (nonfeedback) gain of an amplifier. Let B be the fraction of the output voltage that the feedback circuit subtracts from the input. The closedloop gain (with feedback) of the amplifier is
G = A/(1+AB)
T = AB is called loop gain. A 180 degree phase shift in openloop gain A at any frequency where T > 1 will cause oscillation. An RC network has a maximum phase shift of 90 degrees at frequencies well beyond its corner frequency (1/2pRC).
For a feedback loop to be stable, rolloff at both low and high frequencies must be dominated by a single RC network (known to the mathematically literate as a pole on the complex plane) at frequencies where T > 1. Instabilities (nearoscillation situations) appear as peaks or irregularities in the frequency response curve. Such instabilities are shockingly common, even in very expensive highend amplifiers. In Stereophile equipment reviews, they appear as supersonic peaks of up to 3dB between 50 and 150kHz in frequency response curves measured with 8 ohm resistive loads.6 In a particularly amusing case, an $18,990 amplifier with such a peak received a mixed review, drawing an angry longwinded response explaining how every detail of the setup (down to the power cord) had to be perfect for these incredible amplifiers to sound decent. Ridiculous! (It was a Jadis; I didn’t want to mention the brand when I first published this article.)
Response peaks are indicative of poor phase margin the amount of additional phase shift that can be tolerated before oscillation begins. Since reactive loads tend to increase phase shift, poor phase margin can make an amplifier particularly sensitive to cables and loudspeakers. (Of course, some audiophiles might regard sensitivity to speaker cables as a virtue!) Phase margin should be a standard specification in audio amplifiers: It is one of those seldommentioned factors that affect sonic quality. One of the reasons for the current popularity of triode amplifiers without feedback may be that they have no phase margin problem.
Some instability is inevitable when feedback is applied to tube amplifiers with output transformers because the high frequency rolloff of transformers is dominated by a complex pole pair. This necessitates some form of compensation, i.e., an RC network that rolls off response at frequencies lower than the transformer cutoff. The most common technique is to place a capacitor in parallel with the global feedback resistor. Beware of this technique: It works in the nearaudio range, but SPICE shows that it can cause response irregularities at extremely high frequencies (as well as inserting RF interference from speaker cables into the amplifier input).
A better approach to compensating feedback loops to add a capacitor between the grid and plate of the tube to which the feedback returns (usually the input tube). The RC network formed by this capacitor and the input gridstop resistor (a 2k to 10k resistor which should be added if not present) then becomes the dominant frequencylimiting network. The effective capacitance in this RC network is the sum of this capacitor and the tube interelement capacitance multiplied by the gain of the stage (which is reduced by feedback). This is known as the Miller effect. The proper capacitor value (a few picofarads) must be determined by trialanderror: The calculations are not simple. This is where SPICE really shines. You can try a new capacitor value and examine its effects in about a minute.
Tube response extends well beyond 1MHz. The .AC sweep in SPICE makes it easy to observe extremes of frequency: I routinely test 0.01Hz to 100MHz. To determine the correct compensation capacitor, observe the signals at the amplifier output and the plate of the input (feedback return) stage at frequencies up to 100MHz. Do this without and with capacitors across the load, which always degrade stability. (Instabilities are visible as high frequency peaks.) Increasing the compensation capacitor rolls off high frequencies but increases stability. If your circuit and output transformer are welldesigned, you should be able choose a value for the compensation capacitor that extends your amplifier’s frequency response wellbeyond the limits of audibility (20kHz) while maintaining stability with the largest shunt capacitance likely to arise from cables and speakers. If you plan to use electrostatic speakers, you will probably need extra compensation capacitance. The final value must be determined experimentally, but it should be close (within 30%) to the SPICEdetermined value.
Few of us have signal generators that go down to 0.5Hz, but SPICE shows up a resonance at that frequency in the line stage of the venerable PAS7 (40 dB or more at the input stage plate), which can be quite serious because 0.5 Hz is close to the frequency of record warps. SPICE makes it easy to observe the response at intermediate gain stages as well as the output.
Using SPICE to investigate circuits has been nothing short of a revelation for me. I’ve been able to try out and rapidly debug new designs that I wouldn’t have otherwise risked, and I’ve answered many nagging questions. I hear a strong correlation between SPICE results (in areas such as stability and RF susceptibility) and subjective sound quality. I fiund SPICE to be far more beneficial than “floobie dust” (extremely expensive premium components alleged to produce magical results).
Part 2: Listings and PSpice operation
by
Norman L. Koren
1. Characteristic plate curve program for triodes
Old program
TRIODE PLATE CHARACTERISTIC CURVES
.DC LIN V_P 0 400 4 ; V_P IS THE SUPPLY VOLTAGE. I(VP) IS OUTPUT.
V_P 101 0 200 ; PLATE VOLTAGE
VP 101 102 0 ; DUMMY V SOURCE FOR POSITIVE PLATE CURRENT PLOT.
VG 1 0 1 ; GRID VOLTAGE.
R1 0 1 1G ; ASSURES THAT GRID IS NOT FLOATING.
X1 102 1 0 12AX7 ; P G C
.STEP LIN VG 0 4 .5 ; FOR 12AX7
* X1 102 1 0 12AU7 ; P G C
* .STEP LIN VG 0 20 4 ; FOR 12AU7
* X1 102 1 0 6DJ8 ; P G C
* .STEP LIN VG 0 4 .5 ; FOR 6DJ8
.LIB C:\PSPICE\WORK\TUBE.LIB
.PROBE I(VG) I(VP)
.OPTIONS NOPAGE
.END
Triotest.cir
* C:\Audio\TubeShar\Triotest.sch
* Schematics Version 6.3  April 1996
* Sun Sep 02 10:40:50 2001
** Analysis setup **
.DC LIN V_VP 0 400 4
.STEP LIN V_VG 0 20 4
.LIB c:\audio\tubeshar\tube97.lib
* From [SCHEMATICS NETLIST] section of msim.ini:
.lib C:\AUDIO\TubeShar\TUBE.LIB
.lib nom.lib
.INC "Triotest.net"
.INC "Triotest.als"
.probe
.END
Triotest.net
* Schematics Netlist *
V_VG 1G 0 DC 0 AC 0
V_VP 1P 0
X_TU1 1P 1G 0 12AU7
2. Characteristic plate curve program for pentodes
Old program
Set TRIMODE to 0 for pentode mode, 40 for ultralinear mode (40% tap), or 100 for triode mode. Set VG2NOM to the screen grid voltage in pentode mode or to the quiescent (no ac signal) plate voltage in ultralinear mode. VG2NOM has no effect in triode mode.
PENTODE CHARACTERISTIC CURVES
* SET THESE TWO PARAMETERS FOR MODE (PENTODE, UL, TRIODE)
.PARAM TRIMODE = 100 ; % TRIODE MODE (0=PENT; 40=UL; 100=TRIODE)
.PARAM VG2NOM = 300 ; NOMINAL VALUE OF GRID 2 VOLTAGE.
.STEP LIN VG1 0 75 10 ; 15 75 15 ; STEPS FOR PLATE CURVES
.PARAM T1 = {TRIMODE/100}, T2 = {1T1} ; FRACTION TRIODE MODE...
V_P 101 0 400 ; PLATE VOLTAGE
VP 101 1 0 ; DUMMY V SOURCE FOR POSITIVE PLATE CURRENT PLOT.
EG2 102 0 VALUE={VG2NOM*T2+T1*V(101,0)} ; GRID 2 VOLTAGE
VG2 102 4 0 ; FOR G2 CURRENT MEAS.
VG1 2 0 0 ; CONTROL GRID VOLTAGE
VC 3 0 0 ; FOR CATHODE CURRENT MEAS.
X1 1 2 3 4 KT88 ; P G1 C G2
.DC LIN V_P 0 600 5 ; VB IS THE SUPPLY VOLTAGE. I(VB) IS OUTPUT.
.PROBE I(VC) I(VP) I(VG2) I(VG1)
.OPTIONS NOPAGE LIBRARY
.LIB C:\PSPICE\WORK\TUBE.LIB
.END
Pent_P.cir
* C:\Audio\TubeShar\Pent_P.sch
* Schematics Version 6.3  April 1996
* Sun Sep 02 12:29:32 2001
** Analysis setup **
.DC LIN V_VP 0 600 5
.STEP LIN V_VG1 0 50 10
* From [SCHEMATICS NETLIST] section of msim.ini:
.lib C:\AUDIO\TubeShar\TUBE.LIB
.lib nom.lib
.INC "Pent_P.net"
.INC "Pent_P.als"
.probe
.END
Pent_P.net
* Schematics Netlist *
V_VG1 1G 0 DC 0 AC 0
V_VP 1P 0 DC 0 AC 0
V_VG2NOM $N_0001 0 DC 300 AC 0
E_E2 2G 0 VALUE { V($N_0001, 0)*1+V(1P)*0 }
X_TU1 1P 1G 0 2G 6550
3. A portion of the tube library (C:\PSPICE\WORK\TUBE.LIB)
Tubes are stored as subcircuits, starting with .SUBCKT and ending with .ENDS. A subcircuit for a toroidal output transformer has been included. To add a tube, copy the entire subcircuit (triode or pentode, as appropriate), replace the name (e.g., 6550 with 6L6GC), and then change the parameters (following PARAMS: on the continuation lines of .SUBCKT) to the appropriate values from TABLE 1 or from your own calculations. Note that the suffixes (K, P, MEG, etc.) are part of the value and are caseinsensitive: K = kilo (103); MEG = mega (106); G = giga (109); M = mil (103); U = micro (106); N = nano (109); P = pico (1012), and so on. Spaces are not allowed between the number and the suffix. Beware confusing M and MEG! In the PSpice PROBE program (for displaying graphs), there is some case sensitivity: m is mil and M is meg. Confusing?
TUBE LIBRARY
.SUBCKT 6550 1 2 3 4 ; P G1 C G2 (PENTODE)
+ PARAMS: MU=7.9 EX=1.35 KG1=890 KG2=4200 KP=60 KVB=24
+ CCG=14P CPG1=.85P CCP=12P RGI=1K
RE1 7 0 1MEG ; DUMMY SO NODE 7 HAS 2 CONNECTIONS
E1 7 0 VALUE= ; E1 BREAKS UP LONG EQUATION FOR G1.
+{V(4,3)/KP*LOG(1+EXP((1/MU+V(2,3)/V(4,3))*KP))}
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1*ATAN(V(1,3)/KVB)}
G2 4 3 VALUE={(EXP(EX*(LOG((V(4,3)/MU)+V(2,3)))))/KG2}
RCP 1 3 1G ; FOR CONVERGENCE
C1 2 3 {CCG} ; CATHODEGRID 1
C2 1 2 {CPG1} ; GRID 1PLATE
C3 1 3 {CCP} ; CATHODEPLATE
R1 2 5 {RGI} ; FOR GRID CURRENT
D3 5 3 DX ; FOR GRID CURRENT
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS
.SUBCKT 12AX7 1 2 3 ; P G C; NEW MODEL (TRIODE)
+ PARAMS: MU=100 EX=1.4 KG1=1060 KP=600 KVB=300 RGI=2000
+ CCG=2.3P CGP=2.4P CCP=.9P ; ADD .7PF TO ADJ PINS, .5 TO OTHERS.
E1 7 0 VALUE=
+{V(1,3)/KP*LOG(1+EXP(KP*(1/MU+V(2,3)/SQRT(KVB+V(1,3)*V(1,3)))))}
RE1 7 0 1G
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1}
RCP 1 3 1G ; TO AVOID FLOATING NODES IN MUFOLLOWER
C1 2 3 {CCG} ; CATHODEGRID
C2 2 1 {CGP} ; GRID=PLATE
C3 1 3 {CCP} ; CATHODEPLATE
D3 5 3 DX ; FOR GRID CURRENT
R1 2 5 {RGI} ; FOR GRID CURRENT
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS
.SUBCKT PAT4006CFB 1 2
3 4 5 6 7 8 9 10 11
* PLITRON PAT4006CFB OUTPUT TRANSFORMER
* OL NUMBERS CORRESPOND TO TRANSFORMER SCHEMATIC.
* RESISTANCES HAVE BEEN OMITTED FOR SIMPLICITY, BUT MAY BE ADDED.
LP1 1 2 35.325H ; PRIMARY
LP2 2 3 15.7H
LP3 3 4 15.7H
LP4 4 5 35.325H
CP1 1 5 .342NF ; CAPACITANCE FROM SPECS
LP5 8 7 .2453125H ; 1/2 SPEAKER SECONDARY
LP6 7 6 .2453125H ; " "
LP7 11 10 .98125H ; 1/2 FBK WINDING
LP8 10 9 .98125H ; " "
KALL LP1 LP2 LP3 LP4 LP5 LP6 LP7 LP8 .9999987 ; = 11/(2*403600)
.ENDS
4. Original PAS line amplifier
A and B are the output of Schematics. C is the output of PSpice. These files are edited for brevity.
A. The control file: PASorgTC.cir
Note that it calls the netlist, PASorgTC.net, using an .INC statement. Commands are not casesensitive.
* C:\PSPICE\Stphl\PASorgTC.sch
* Schematics Version 6.3  April 1996 Sat Nov 25 20:09:33 2000
.PARAM PARTX={(EXP(4.60517*PAR1)1)/99} PAR1=.5
** Analysis setup **
.ac DEC 20 .01 1MEG
.LIB C:\Pspice\WORK\Tube.lib
.OP
* From [SCHEMATICS NETLIST] section of msim.ini:
.lib nom.lib
.INC "PASorgTC.net"
.INC "PASorgTC.als"
.probe
.END
B. The netlist (circuit description): PASorgTC.net
The typical format is
element_name node_1 node_2 ... value(s)
The order isn’t critical.
* Schematics Netlist *
RT_RVOL 0 3G {(250K*(10.5))+.001}
RB_RVOL 3G LINE_IN {(250K*0.5)+.001}
R_R3C 0 3C 4.7k
R_R4G 0 4G 1.2MEG
R_R3P 3P $N_0001 470k
R_R4C 0 4C 1k
R_R4P 4P $N_0001 100k
R_RLFB 3C $N_0002 47k
R_RLOAD 0 LINE_OUT 50k
C_C3P 3P $N_0003 .1UF
C_COUT $N_0004 LINE_OUT 1UF
C_C4P 4P BC .22UF
R_R4GS $N_0003 4G 18k
C_C4F2 SF1 4G 4000PF
C_CLFB 3C $N_0002 33PF
C_C4F1 SF1 $N_0003 1500PF
R_R4F 0 SF1 3.3MEG
RT_RBASS $N_0004 BC {(750K*(1(1PAR1)))+.001}
RB_RBASS BC $N_0002 {(750K*(1PAR1))+.001}
RT_RTREB $N_0006 $N_0007 {(400K*(1(1PARTX)))+.001}
RB_RTREB $N_0007 $N_0005 {(400K*(1PARTX))+.001}
C_CTR2 $N_0006 0 .02UF
R_RTR1 3C $N_0007 1k
C_CTR1 $N_0005 $N_0002 .002UF
C_CBS1 $N_0002 BC .0075UF
C_CBS2 BC LINE_OUT .0075UF
V_VIN LINE_IN 0 DC 0 AC 1 SIN(0 .5 1K)
V_V+320 V+320 0DC 320
X_TU3 3P 3G 3C 12AX7
X_TU4 4P 4G 4C 12AX7
v_V10 V+320 $N_0001 0
C. The PSpice output file (edited for brevity) for frequency domain analysis: PASorgTC.out
**** 08/18/101 17:12:08 ******** NT Evaluation PSpice (April 1996) ***********
* C:\PSPICE\Stphl\PASorgTC.sch(… The .cir file is repeated here… )
**** CIRCUIT DESCRIPTION
(The entire netlist is repeated… )
RT_RVOL 0 3G {(250K*(10.5))+.001}
…
v_V10 V+320 $N_0001 0
**** RESUMING PASORGTC.CIR ****
.INC “PASorgTC.als”
**** INCLUDING PASorgTC.als ****
* Schematics Aliases *(Aliases are listed here; not of much interest to the user.)
_ _(V+320=V+320)
.ENDALIASES
…
**** Diode MODEL PARAMETERS (…not of much interest; edited out…)This is the important part: shows voltages and currents at critical locations.
**** SMALL SIGNAL BIAS SOLUTION TEMPERATURE = 27.000 DEG C
******************************************************************************
NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE
( 3C) 1.5171 ( 3G) 62.59E06 ( 3P) 168.2900 ( 4C) 1.2431
( 4G) .0012 ( 4P) 195.6900 ( BC) 1.5171 ( SF1) 0.0000
(V+320) 320.0000 ($N_0001) 320.0000 ($N_0002) 1.5171
($N_0003) .0012 ($N_0004) 1.5171
($N_0005) 1.5171 ($N_0006) 1.5171
($N_0007) 1.5171 (LINE_IN) 0.0000
(X_TU3.5) 64.60E06 (X_TU3.7) .2832
(X_TU4.5) .0012 (X_TU4.7) .7422
(LINE_OUT) 0.0000
VOLTAGE SOURCE CURRENTS NAME CURRENT
V_VIN 5.008E10 V_V+320 1.566E03 v_V10 1.566E03
TOTAL POWER DISSIPATION 5.01E01 WATTS(Additional information on voltage and current sources follows; not of much interest… )
TOTAL JOB TIME .61
Although I started out running Pspice from ASCII data files, entering schematic diagrams via the Pspice Schematics program is the most satisfying, accurate and uptodate way to operate. Since MicroSim doesn’t supply a library of tube symbols, you will need to enter one (from the downloaded models) or create your own. Libraries of schematic symbols are stored in files with the extension .SLB and libraries of SPICE models are stored in files with the extension .LIB. (Each of these files contains symbols or models for several parts: up to 25 for the MicroSim evaluation package.) I use TUBE.SLB and TUBE.LIB for my tube drawings and models.
Adding libraries to Evaluation PSpice
After you’ve installed PSpice on your computer you must install or create the tube models. Although PSpice is up to level 9.1 as I write this, I use version 6.3 for this example because I’m familiar with it and because you can also get away with a few more parts than newer versions allow. I assume you’ve downloaded my models. You’ll need to install two files: the tube symbols (TUBE.SLB) and SPICE models (TUBE.LIB). Both are installed from the Schematics program. 
Installing the symbol library (TUBE.SLB)– From the Schematics screen, click Options, Editor Configuration…, Library Settings. The screen on the right appears. Enter the foll pathname of the file containing the schematics symbols, except for the extension, in the Library Name: window, C:\NORMK\AUDIO\TubeShar\TUBE in the example. Check the box to the left of Symbol to get the .slb file extension. Click OK, OK.
Installing the SPICE model library (TUBE.LIB)— From the Schematics Screen, click Analysis, Library and Include Files… The screen on the right appears. Enter the full pathname of the SPICE model file (including extension) in the File Name: window, C:\NORMK\AUDIO\TubeShar\TUBE.LIB in the example. Click Add Library*, OK, OK. 
PSpice should be ready to run with tubes!
Creating your own models
The technique for linking drawings to models is quite complex, and the PSpice tutorial must be studied to grasp it. It would be wise to look it over before continuing! The following steps will bring up a good example that can be adapted for tube models. From Schematics, click on File, Edit Library to get into the Parts Library editor. Click on File, Open…, eval.slb to open a library file that contains some parts useful as examples. (Be patient: Your screen will still be blank at this point.) Click on Part, Get…, IRF9410 to load the drawing for a Pchannel mosfet. (Choose another part if you desire, but this MOSFET is as close as you can get to a tube in this library.) Click on Part, Attributes… to see the statements that define this part. For the IRF9410, they are
template=M^@refdes %d %g %s %s @MODEL
refdes=M?
PART=IRF9140
MODEL=IRF9140
Template links the part to the model library: With appropriate substitutions, for example, IRF9140 for @MODEL, it appears in the netlist. A number on the schematic diagram replaces ? in refdes. To alter an attribute, click on it in the box on the right and edit it in the boxes on the upper left. The attributes of the 12AX7 that link it to its subcircuit in TUBE.LIB are:
template=X^@REFDES %P %G %C @MODEL
refdes=TU?
PART=12AX7
MODEL=12AX7
To create a new library file, click on File, New, then File, Save as…, tube.slb (or a full path name of your choice). To insert a part into the new library file, draw it following instructions in the tutorial or modify an existing part (such as the IRF9410), then save it by clicking Part, Save to Library… Either type the library file name or use the usual Windows navigation techniques to locate it. Good luck and please do the tutorial.
Parts are entered into PSpice Schematics drawings by clicking on the little box with the “and” gate. You can enter “R”, “L”, “C”, “BUBBLE”, etc. for common parts, or click on Browse… to examine a library of parts. I recommend using the rubberband option, which can be set by clicking Options, Display Options…, Rubberband. Named nodes (1G, 1P, etc.), which are created by doubleclicking on lines and entering a name, are required for voltages to be examined in Probe. Input files to Schematics have the three character extension .SCH. Clicking Analysis, Create Netlist creates files with extensions .CIR (the control file), .NET (the netlist), and .ALS (an alias file which speeds up analysis) which are used as inputs to PSpice. The .CIR and .NET files contain ASCII text in SPICE format, as described in Paul Tuinenga’s excellent text^{10}. Clicking Analysis, Simulate creates the netlist, runs Pspice, and loads Probe to display results. Press the Insert key to select a voltage or current for Probe display. You can use “VDB” or “VP” to display a voltage in dB or its phase in degrees. There are many more possibilities for controlling the display.
Obtaining plate curves
Figures 3 and 4 on the previous page are schematics diagrams for generating triode and pentode characteristic curves. Their netlists are shown in Appendices A1 and A2. Each of these circuits requires that you perform a few added steps to generate the characteristic curves. We will use the pentode (Fig. 4) as an example.
To step the grid voltage, click on Analysis, Setup…, Parametric… Set Swept Var. Type to Voltage Source, Sweep Type to Linear, Name: to VG1, Start Value to 0, End Value: to 75 (or as appropriate), and Increment: to 15 (or as appropriate), then click OK. You may set the plate voltage sweep while the Analysis Setup… box is still open. Click DC Sweep… Set Swept Var. Type to Voltage Source, Sweep Type to Linear, Name: to VP, Start Value to 0, End Value: to 600 (or as appropriate), and Increment: to 5 (or as appropriate), then click OK. The DC Sweep… and Parametric boxes should contain check marks. Finally, click Close. All voltage sources except VG2NOM are set to DC=0 in the schematic diagram. (Attributes can be viewed and changed by doubleclicking on the symbol.) Grid and plate voltages are controlled by the DC Sweep… and Parametric… settings.
VG2NOM is the nominal screen grid voltage. It is 300V in Figure 5 (pentode mode) and 450V in Figure 7 (ultralinear (UL) mode). (It has no meaning in triode mode, where screen grid voltage equals the plate voltage). E2 is an EVAL voltagecontrolled voltage source that controls how the screen grid voltage tracks the plate voltage. For UltraLinear mode it is set to V(%IN+, %IN)*.4+V(1P)*.6 . For pentode mode it is V(%IN+, %IN). For triode mode it is V(1P). VP is set to zero: I(VP) is the correct polarity for plate current plotted by Probe. When you have completed entering the schematic, click Analysis, Simulate. This will create a netlist, run PSpice, and then run Probe to display the results. Error messages can appear at any one of several stages of this process. They are unavoidable when you start out. Don’t get frustrated. This is where real learning happens.
REFERENCES
 Scott Reynolds, “Vacuumtube models for PSPICE simulations,” Glass Audio, vol. 5, no. 4, 4/93 p. 17.
 W. Marshall Leach, Jr., “SPICE models for vacuumtube amplifiers,” J. Audio Eng. Soc. Vol 43, No. 3, March 1995, p. 117.
 Samuel Seely, “Electron Tube Circuits,” McGrawHill, 1958, pp. 1113,1516; pentode grid current in Fig. B6, p. 666.
 Tom Mitchell, “The Audio Designer’s Tube Register Volume 1,” Media Concepts, Norwalk, CA.
 Eric Pritchard, “Tubemodel critique,” Glass Audio, vol. 8, no. 1, 1/96, p. 54.
 Stereophile, vol 16, no. 11, Nov. 1993, p. 153; vol. 17, no. 3, Mar. 1994, p. 129; vol. 17, no. 5, Apr. 1994, p. 184; vol. 17, no. 6, June 1994, p. 131; vol. 17, no. 10, Oct. 1994, p. 143; vol. 17, no. 12, Dec. 1994, p.163.
 Christopher Paul, “The greening of the cascade feedback pair,” Glass Audio, vol. 7, no. 5, 5/95, p. 20.
 Norman Koren, “A new Dynaco PAS upgrade,” Glass Audio, vol. 6 no. 2, 2/94, p. 10.
 Menno Vanderveen, “Theory and practice of wide bandwidth toroidal output transformers”, presented at the 97th AES convention, Nov. 1994.
 Paul W. Tuinenga, “SPICE, A Guide to Circuit Simulation & Analysis using PSpice”, PrenticeHall,
1992 or 1995 editions.
.
This page created December 8, 2003  Images and text copyright (C) 20002012 by Norman Koren. Norman Koren lives in Boulder, Colorado. Since 2003 most of his time has been devoted to the development of Imatest. He has been involved with photography since 1964. Designing vacuum tube audio amplifiers was his passion between about 1990 to 1998. 
Reproduced for reference only, with permission from Norman Koren
January 2016