3
\$\begingroup\$

I am trying to simulate a cascode circuit followed by a source follower in LTSpice and observe its frequency response. I added a 100GH inductor to serve as negative feedback only for DC, i.e., the circuit functions as an open loop in the AC simulations. This is the schematic of the circuit:

schematic

simulate this circuit – Schematic created using CircuitLab

VX is at 964 mV (DC), and VY is at 1.15 V (DC).

I have turned off the body effect (shorted the source and bulk for all the MOSFETs) to simplify my analysis and have verified that all the MOSFETs are in saturated inversion.

As per my theoretical understanding, the circuit should have only two (high frequency) zeros, one from the common source MOSFET M1 and one from the common drain MOSFET M5, but the AC response shows that it has three zeros— one each from CS M1, CG M2 (~ 1.5 GHz, very obvious in the vy/vx bode plot), and CD M5.

When I remove the L1 from the circuit, M2 no longer introduces the zero, but it reappears when the loop closes again.

I have tried to debug the CGA by itself to figure out the source of the problem and am using the following circuit for it:

schematic

simulate this circuit

So far, I have noticed that this circuit also presents the same zero (at the same frequency), and the zero disappears when I replace the MOSFET with a BJT. I have also turned off all capacitances (CDB, CSB, CGBO, CJ, and CJSW) apart from CGS and CGD in the Level 1 SPICE MOSFET Model I'm using.

I have also noticed that this zero disappears as soon as my VY increases beyond 1.6 V. But this is a DC voltage, and it should not impact the AC frequency response in any way as long as the MOSFET remains in saturated inversion. So, observing this does not make much sense to me.

I think (maybe wrongly) that the COxide component in the CGS capacitance is somehow introducing this zero, but I'm not sure. Does anyone know why the zero could appear in the circuit and how I could resolve the problem?

Any input is highly appreciated.


Edit 1: I simulated the circuit in both Cadence and NGSpice. The CGA zero was absent from there. This leads me to think that LTSpice is doing something ridiculous and inserting a zero where it shouldn't be. Does anyone know why or how LTSpice is doing this?

Edit 2: Added simulation details to the debugging circuitry.

\$\endgroup\$
9
  • 3
    \$\begingroup\$ One hundred GIGA Henry? Do you mean micro or milli Henry? Please edit your circuit diagrams with the correct unit. Or is that the error that's causing Spice to misbehave? \$\endgroup\$ Commented Aug 30 at 23:08
  • 1
    \$\begingroup\$ I mean 100 GH. Just so that the inductor's effect disappears before 1 Hz. This doesn't cause spice to misbehave. I have tried changing inductance to something like 100H as well. I get the same response, with the only difference being that the inductor's pole and zero are at much higher frequencies. \$\endgroup\$
    – user411405
    Commented Aug 30 at 23:48
  • 1
    \$\begingroup\$ @PeterJennings Imaginarily large inductors are a common trick in SPICE simulation. \$\endgroup\$ Commented Aug 31 at 1:03
  • \$\begingroup\$ Why would you only expect two zeros? There are three nodes with capacitance that would each cause a zero; You have them marked as Vx, Vy and Vo. It is not obvious why removing the inductor would change the small signal characteristics. Are you biasing it correctly without the inductor? \$\endgroup\$ Commented Aug 31 at 1:29
  • \$\begingroup\$ @KevinWhite I would expect only two zeros because the gate in the CGA is directly tied to an AC ground (instead of carrying a signal). So, it can provide a pole through the MOSFET capacitances, but not a zero. Yes, I have biased the circuit correctly without the inductor. The inductor (through negative feedback and DC shorting) changes the Vo's (and Vy's) DC value. It shouldn't be affecting small signal characteristics as long as the MOSFETs are biased properly, but LTSpice is showing otherwise. Maybe LTSpice is doing something ridiculous that is breaking things? \$\endgroup\$
    – user411405
    Commented Aug 31 at 13:05

1 Answer 1

2
\$\begingroup\$

I'll first clarify the problem you're having, since your question doesn't highlight it very well and it took me a bunch of screwing around to get my footing. You're getting the following in LTspice, where there is a zero in the frequency response at around ~1.5GHz. This is where slope of the phase changes directions and the magnitude response begins to flatten out.

LTspice results


If you compare this to other SPICE programs, the zero does not exist and the magnitude response keeps rolling off. Below is what the same netlist generates in ngspice.

ngspice results


Another difference between the two is that the LTspice magnitude response begins rolling off much earlier (at ~100KHz) compared to ngspice (at ~10MHz).


I believe you're on the right track when you say this:

I think (maybe wrongly) that the COxide component in the CGS capacitance is somehow introducing this zero, but I'm not sure.

If you look at the SPICE Error Log in LTspice CTRL+L when you run the simulation, you get a warning that says the gate oxide thickness Tox is too thin. I believe the warning is to tell you that with such a thin oxide defined you can get unwanted effects with this model...and that is what seems to be happening.

LTspice SPICE Error Log


According to the LTspice built-in help for M. MOSFET, it mentions that LTspice implements something differently when Tox is defined.

Charge storage is modeled by three constant capacitors, CGSO, CGDO, and CGBO which represent overlap capacitances, by the non-linear thin-oxide capacitance which is distributed among the gate, source, drain, and bulk regions, and by the nonlinear depletion-layer capacitances for both substrate junctions divided into bottom and periphery, which vary as the MJ and MJSW power of junction voltage respectively, and are determined by the parameters CBD, CBS, CJ, CJSW, MJ, MJSW and PB. Channel capacitance is implemented as a Yang-Chatterjee charge-based model in all aspects of simulation but legacy Meyer capacitances are reported in the SPICE log file. The thin-oxide charge-storage effects are treated slightly different for the Level=1 model. These voltage dependent capacitances are included only if Tox is specified.

Learning from this, if you remove the Tox parameter from the .model definition the plot now matches what ngspice produces.

tox removed


Alternatively, you can increase the Tox value and the zero will be pushed farther out. The following is when tox=50n.

tox equals 50n


So I believe you're right that the zero is coming from here. Unfortunately, I do not know the underlying equations that LTspice uses to calculate the extra Tox capacitance. More generally, for higher frequency amplifier applications the lower level MOSFET models (1, 2, and 3) should be avoided when possible. If you're using a thin Tox, you might want to look into using one of the BSIM models instead.

\$\endgroup\$
6
  • \$\begingroup\$ If I turn off the Tox parameter, LTSpice does not calculate the CGS/CGD capacitances at all. So having it turned off is not the way to proceed. Especially if the circuit has poles appearing from the Source node, i.e., vX in the original circuit. Do you know if there could be some other way to provide COxide (and consequently, the correct CGS and CGD) then? \$\endgroup\$
    – user411405
    Commented Sep 5 at 21:13
  • \$\begingroup\$ I wasn't suggesting turning it off as the solution. I don't have the equations for the Yang-Chatterjee model, but for the Meyer model \$C_{GD}\$ and \$C_{GS}\$ don't depend on \$C_{ox}\$ in Saturation Region. This scan is from Semiconductor Device Modeling with SPICE: i.sstatic.net/TM5XlbVJ.jpg \$\endgroup\$
    – Ste Kulov
    Commented Sep 5 at 21:29
  • \$\begingroup\$ Oh, whoops. I missed the \$C_{ox}\$ in Equation 4.70, but it shouldn't zero it out. \$\endgroup\$
    – Ste Kulov
    Commented Sep 5 at 21:36
  • \$\begingroup\$ LTSpice calculates Cox from Tox, so as soon as you remove Tox from the model, it assumes the default value for it, which is infinity, and then the Cox becomes zero. So, there is no flexibility to turn off Tox (and Cox) and still get the right output from the simulator. On a side note, how are you typing subscripts in the comment box? \$\endgroup\$
    – user411405
    Commented Sep 5 at 21:49
  • \$\begingroup\$ Default of Tox is not infinity, it's 1e-7. Anyway, it doesn't matter. Once again, I was never suggesting to turn off Tox as the solution. The point of my answer is that whatever LTspice is doing appears to be intentional, based on the text in the help and the warning in the log. So the solution would be to use a different model structure like BSIM. If you believe there is indeed a fault/error, you should suggest it to [email protected] since they're the only ones with the source code. For subscripts you need to use inline LaTeX: electronics.stackexchange.com/editing-help#latex \$\endgroup\$
    – Ste Kulov
    Commented Sep 5 at 22:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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