1
\$\begingroup\$

I have a simple current mirror and am trying to find the output resistance in OrCAD. Somewhere I saw: $$R_O=r_{ds}={1\over g_{ds}}$$ Using this formula and the SPICE bias file, I get a theoretical output resistance of \$22.17 k\Omega\$. I then gave my output an AC voltage input of 1.5 V (the assignment asked for this specific number, I'm not sure why), ran an AC sweep, measured the output current as 63.49 uA, divided the two, and got \$R_O = 23.625 k\Omega\$, really close to my original theoretical value. However, when I went back to check the equation, I couldn't find the one mentioned above, but instead found the following one: $$R_O = r_O = {V_A\over I_D} = {1\over \lambda I_D}$$

Which is all well and good except that my SPICE file I'm using for my MOSFET has LAMBDA equal to 0.

How do I know how SPICE/OrCAD is handling Early voltage/channel-length modulation when there isn't a parameter to do so?

Edit: Additionally, if the SPICE model has no \$\lambda\$ parameter, what should I use in my hand calculations to estimate \$r_O\$?

\$\endgroup\$
  • \$\begingroup\$ If your lambda value was zero then your output resistance would be infinite no? Can you set it to one? \$\endgroup\$ – loudnoises Jan 24 '18 at 16:44
  • \$\begingroup\$ In theoretical calculations, yes. However, in the simulation, the output resistance was definitely not zero. Also, I'm trying to avoid altering the SPICE model. \$\endgroup\$ – John Doe Jan 24 '18 at 16:48
2
\$\begingroup\$

The actual definition of \$g_{ds}\$ is

\$g_{ds} = \frac{\partial i_{ds}}{\partial v_{ds}}\$

The value of this mainly depends on both the model you use (changes with the "LEVEL" parameter for mosfet models) and the region the mosfet is used in (eg. triode or saturation).

For the LEVEL=1 model, the gds is calculated as

\$g_{ds} = \lambda\cdot\frac{\beta}{2}(v_{gs}-v_{TH})^2\$ in saturation

If you use this model, your formula (\$r_o=\frac{1}{\lambda I_D}\$) should match simulation results. If it is not the case, you should check that:

  • There are no other conductances connected to the node (eg. a load)
  • Check that the transistor is in saturation. The formula does not work for transistors in the triode region (linear region)
  • Unlikely the cause to your issue, but there are also conductances associated to the drain-bulk and source-bulk PN junctions.

For the LEVEL=2 model, \$\lambda\$ means something different. It will modify the current using:

\$I_{ds} = \frac{I_{ds}}{1-\lambda v_{ds}}\$

A default \$\lambda\$-parameter will be calculated if it is 0. Your formula will not work anymore for this model.

Although they're for HSpice, I found a nice reference for the main model equations per level here:

MOS Spice model equations and parameters

You can see that not even all models implement a "LAMBDA" parameter. For the ones that do, the LAMBDA parameter will do something else depending on the LEVEL-parameter.

For PSpice, I expect LEVEL 1 through 6 to be identical (they were implemented by the people from Berkeley themselves, who made the original Spice). The other mosfet model levels may differ a bit, although most models come back.

[EDIT] To answer your second question:

For hand calculations, the one you're using is probably the most common one. It's just that you'll need to find \$\lambda\$ for your model and if you're using anything but a level 1 mosfet model, then the \$\lambda\$ you're looking for will not be the LAMBDA parameter of the model.

It may not be perfect, but it's enough for all practical applications.

\$\endgroup\$
  • \$\begingroup\$ When you say that my formula should match simulation results, does that mean that I can derive lambda once I know what the output resistance is? Or are you saying that 1/gds = 1/lambda*Id = ro? \$\endgroup\$ – John Doe Jan 24 '18 at 16:38
  • \$\begingroup\$ For level 1, your lambda and spice's lambda should match. For other levels, "lambda" will have a different meaning than in your formula. So you should be careful not to confuse them. \$\endgroup\$ – Sven B Jan 24 '18 at 16:42
  • \$\begingroup\$ Gotcha, thank you. I added a second question in my original post; do you have any insight on that? \$\endgroup\$ – John Doe Jan 24 '18 at 16:50
  • \$\begingroup\$ I edited my answer to match your question. \$\endgroup\$ – Sven B Jan 24 '18 at 20:26
  • \$\begingroup\$ Thank you. Just to clarify, by "the one you're using", do you mean that ro = 1/gds? \$\endgroup\$ – John Doe Jan 24 '18 at 20:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.