# SPICE BJT simulation results

I'm trying to simulate simple BJT circuits to verify my hand calculations. Following is my circuit, I'm just trying to get the calculated DC collector current with the shown voltages and parameters. Using the following equation for the collector current,

$$I_c = I_s e^{V_{be}/V_T}$$

Ignoring Early effect, this should approximate to 1mA at 17C temperature. But this is the result I get What am I doing wrong?

Edit: changing TNOM parameter upon @jonk's suggestion, I get the "correct" results. Hope this helps other fellow engineering students in the future. • Did you add the spice directive '.temp 17'? – sstobbe Mar 14 at 22:57
• @sstobbe Yes I did set the temperature to 17C. Instead of a spice directive, like .temp 17, I set the temperature for the transistor only by adding "temp=17" to its SpiceLine parameter. – zeke Mar 15 at 11:39
• It is more appropriate to use TNOM as a device parameter, than a global parameter. When you add it to your device model you are saying I measured the saturation current to be x at a temperature of TNOM. – sstobbe Mar 15 at 14:23

# Temperature Effect on the Shockley Equation

At the outset, I want to mention to others who may be reading that although you didn't show a schematic that included the .TEMP card, the fact is that you actually did set the temperature for LTspice, correctly. That's the only way you could get the actual collector current you showed us. So I'm aware that sstrobe's question is already answered -- yes, you did tell LTspice that you are using $$\17^\circ\text{C}\$$.

But for others, it's useful to work out how much of a difference there might be had you failed to inform LTspice of the operating temperature. So bear with me for a moment while I pursue (and then drop) this issue.

LTspice assumes $$\27^\circ\text{C}\$$ as the temperature. Ignoring everything else that relates to the BJT model used in LTspice, and only looking at this difference alone, the values for the two different thermal voltages are $$\V_{\text{T}=27^\circ\text{C}}=25.864917 \:\text{mV}\$$ and $$\V_{\text{T}=17^\circ\text{C}}=25.003184 \:\text{mV}\$$.

The standard Shockley diode equation (translated to a simplified active mode BJT's collector current) is:

$$I_\text{C}=I_{\text{SAT}\left(T\right)}\left(e^{\left[\frac{V_\text{BE}}{\eta \:V_T}\right]}-1\right)\\ \text{where the thermal voltage is }V_T=\frac{k\: T}{q}\label{eq1}\tag{Shockley equation}$$

The emission coefficient, $$\\eta\$$, is usually taken to be 1, by default. And what you wrote is close enough for most purposes, of course. (So I'm just being pedantic right now, not criticizing.)

This alone works out to $$\I_{\text{C }@\text{ T}=27^\circ\text{C}}\approx 392\:\mu\text{A}\$$ and $$\I_{\text{C }@\text{ T}=17^\circ\text{C}}\approx 996\:\mu\text{A}\$$.

Instead of expecting $$\1\:\text{mA}\$$, one might have been expecting only $$\392\:\mu\text{A}\$$ solely because of the difference between the default temperature that LTspice uses and what you'd specified. That's quite a difference.

Of course, I'm sure you got that right and that this explanation has nothing to do with your observed response from LTspice. (I'm just going through the motions, right now.)

## Temperature Effect on the Saturation Current

The mistake you made is more subtle. It's hidden in the saturation current term. The model used in LTspice is slightly more complex and involves more parameters, but the following equation provides an earlier (and simpler) version of the variation of the saturation current vs temperature:

The approximate equation looks like this:

$$I_{\text{SAT}\left(T\right)}=I_{\text{SAT}\left(T_\text{nom}\right)}\cdot\left(\frac{T}{T_\text{nom}}\right)^{3}\cdot e^{\left[\frac{E_g}{k}\cdot\left(\frac{1}{T_\text{nom}}-\frac{1}{T}\right)\right]}$$

LTspice and other similar spice programs will be making similar adjustments, as well.

LTspice and other spice programs will be making the same basic assumption about the value of $$\T_\text{nom}\$$ they use in the model. (They use a value that is approximately $$\300\:\text{K}\$$, since that is an easy-to-remember value for ambient -- though they actually use $$\300.15\:\text{K}\$$.) When you specify a different temperature for operating purposes, this does not change their assumption that $$\T_\text{nom}=300.15\:\text{K}\$$ for modeling purposes. So when you change the temperature, the spice programs (including LTspice) must make adjustments to the saturation current, as well.

In your case, the new value is $$\I_{\text{SAT}\left(T=17^\circ\text{C}\right)}\approx 1.442253\times 10^{-16}\:\text{A}\$$. If you now use that value for $$\I_\text{SAT}\$$ along with the value of $$\V_{\text{T}=17^\circ\text{C}}=25.003184 \:\text{mV}\$$, then the Shockley equation gives $$\I_\text{C}\approx 207.8\:\mu\text{A}\$$.

Which is the value you observed in simulation.

## Summary

You didn't do anything wrong in terms of setting up your simulation. You got the temperature set correctly, for example. You set up a simple circuit. But you failed to take into account a significant detail about how the saturation current itself depends highly upon temperature variations. When you include the fact that the saturation current needs to be adjusted by the difference of $$\10^\circ\text{C}\$$ (from $$\T_\text{nom}\$$), then everything works out again.

For some reason, most web sites (and teachers) fail to mention this temperature effect at the outset (deferring it until later, if ever.) Yet, it's so significant that it overwhelms the sign found in the Shockley equation alone; so much so, that it causes the collector current to increase with increasing temperature, instead of decreasing as the Shockley equation itself might have otherwise suggested.

## Final Note

While all of the above has little practical value (it's just simulation, after all, and practical BJT parameters vary quite a bit even within the same manufacturer, FAB, and lot number), it's still worth developing the skills needed to create quantitative values so that comparisons can be made and effects determined, uncovered, or else identified as unknowns needing more study. Developing skills needed to associate effects and quantitative changes will become important in practical situations, at times. It's not only important to qualitatively name something, it's also important to be able to identify the magnitude and sign of that something, too. And for practical situations, to be able to judge what is within range of some effect and measurement errors and what is outside that range and in need of further work to identify it.

The above work shows that the variation in saturation current and thermal voltage, over temperature, can produce accurate, quantitative results. Further, it probably shows that other sources do not need to be searched out. While they may exist, as the models have many more parameters and I've only used a highly simplified subset of them, it's clear that the resulting calculation taking only those two effects into account produce surprisingly close values to what LTspice generated. So it's not inappropriate to stop at that point and look no further. It also says that the Shockley equation by itself, together with its variation of thermal voltage vs temperature, isn't sufficient to model active mode operation vs temperature.

The saturation current equation is also required to get both the sign and magnitude right for active mode (it is more important and overwhelms the thermal voltage term.)

• Brilliant. I updated my original post to confirm your statement. I can't help but ask, if I could somehow knew the exact equations used by SPICE, I'd be able to identify the problem myself. Is there a source where I can learn more about the SPICE's equations? – zeke Mar 15 at 12:10
• @zeke I think the very best single source is Ian Getreu's "Modeling the Bipolar Transistor." I think Ian's book was out of print but is now available via Lulu.com. You can also get Laurence W. Nagel's "Spice2: A Computer Program to Simulate Semiconductor Circuits," Memorandum No. UCB/ERL M520, 9 May 1975, which is available from "Electronics Research Laboratory, College of Engineering, University of California, Berkeley, CA 94720 or from on the web, here. – jonk Mar 15 at 17:00
• @zeke Other than that, you could look up the more complete, newer MEXTRAM model (and its revisions.) And there are other models in-between-times. (Some with more physically relatable parameter meanings than others.) – jonk Mar 15 at 17:01

Firstly, 0.2 is rather close to 1.0 given the magnitude of Is.

Secondly, LTSpice uses the modified Gummel-Poon model of a BJT which is rather complex and has some default parameters among the scores of different settings. For example, Is varies with temperature by about 7%/K.