Hi guys, I'm trying to obtain the CxV curve from moscap in SPICE (hspice). Note that I'm not talking about the sum of the capacitances from the mos transistor, but the transistor behaving as a capacitor. Is there an easy way to do this?
How about a resistor connected to the moscap, Resistor driven by small AC voltage superimposed on DC, measure AC current through resistor while sweeping DC.
Do you mean a DC sweep like this? Vin vin 0 AC 1 SIN (0 1 0.159) R1 vin v2 1k M1 0 v2 0 0 nmos l=1 w=10 .DC SWEEP vin -1 3 1m .end The current is zero though.
Put an AC source in series with the DC source. Then, the AC current will depend on the capacitance value.
Nothing changed. Vin vin 0 Vac vin vr1 AC 1 SIN (0 1 0.159) R1 vr1 v2 1k M1 0 v2 0 0 nmos l=1 w=10 .DC SWEEP vin -1 3 1m .end
Why would there be zero AC current through a capacitor? Set the AC frequency to 100MHz. set the R to a higher value also. Replace the MOSCAP with a Capacitor. Play around with it a bit and figure it out.
Unfortunately, I couldn't replicate this experiment. I don't know what's the problem. I was able to obtain an estimate of the MOS capacitance with a .op simulation (cgtot parameter), for low frequencies. The only thing that is missing is the high frequency behavior of the moscap.
I don't see how .op provides any useful information. Can you just replace the MOS with a capacitor and measure AC current. Then you know the sim is working.
Then you are doing something very wrong. If you can't see the AC current through a simple cap then you are looking in the wrong place. Can you see the AC voltage across the cap?
No, I can't. Isn't it because it's a DC sweep analysis? The code is as follow: Vin vin 0 DC 1 Vin vin 0 Vac vin vr1 AC 1 SIN (0 1 100MEG) R1 vr1 v2 100k M1 0 v2 0 0 nmos l=1 w=10 .DC SWEEP vin -1 3 1m .end
sorry Do a .tran Then, Do a .TRAN with a piecewise linear DC source and constant AC source. I don't use spice much. I'm surprised no one else pointed out the issue. I actually didn't know you can't measure AC during a DC sweep.
Sorry for the delay. Now I can see the transient response. But the curve doesn't seem right I guess. The code is: Vin vin 0 DC 0 pulse=(0 1.2 0 50n 0 0 0 0 51n) Vac vin vr1 AC 0 SIN (0 10m 100MEG) R1 vr1 v2 100k M1 0 v2 0 0 nmos l=1 w=10 .TRAN 1p 50n .end The response is as follows:
The easiest way to do this is with a transient analysis and a pulse so your input should be fine. Remember in the time domain that I = C dV/dT or C = I / (dV/dT). So divide the measured current with the voltage slope and that is your capacitance. You should do it with a rising and falling pulse and average the value you calculate. AC analysis is also possible and may be more useful if you're using the MOSCAP as a decoupling device (so you mostly care about the capacitance around a small operating region.