circuitjs1 icon indicating copy to clipboard operation
circuitjs1 copied to clipboard

MOSFET fixed threshold / no body effect

Open ormaaj opened this issue 6 years ago • 9 comments

What model describes MOSFET behaviour using a "beta" and a fixed threshold? The few CMOS design textbooks' introductory chapters I looked at always model threshold as a function of the channel dimensions and substrate bias (among other things but those seem to be the most significant parameters). I haven't found a model that approximates a realistic variable threshold like this given a beta parameter and base threshold, though it might be possible since beta is determined by channel W / L.

Evidently some microprocessors use a dynamic body bias in places as a power-saving feature because subthreshold current is a function of the threshold voltage, which is a function of body-source voltage for a given Vds, so they can cut down on leakage in unused parts of a circuit.

Not that we really care about subthreshold action... There are probably better examples of where this matters, like maybe some N-ary logic could exploit that.

ormaaj avatar Jul 27 '19 02:07 ormaaj

Hi, I got it from Pillage, "Electronic Circuit & System Simulation Methods", which got it from Muller and Kamins, "Device Electronics for Integrated Circuits".

It's described as the "quadratic model" here: https://ecee.colorado.edu/~bart/book/models.htm . That link doesn't mention beta but it seems to be the same model if you set beta = mu Cox (W/L). It also discusses the variable depletion layer model, which has a varying threshold voltage.

Someone has asked for the EKV model (#21) to be provided as an option, since it's much more accurate and can model things like subthreshold conductance.. And it would also fix your issue as well.

pfalstad avatar Aug 07 '19 02:08 pfalstad

@pfalstad EKV on github.

ormaaj avatar Mar 26 '21 05:03 ormaaj

Wow that's a lot of parameters! I would have to do what ngspice does and run a converter to generate C from this verilog code, and then convert the C to java. Because the verilog code does not seem to calculate the matrix elements that I need.. It only gives the currents.

pfalstad avatar Mar 26 '21 06:03 pfalstad

Yeah. I see some recognizable parameters from ngspice level 1 / 3 / 9 (probably level 1 since 3 doesn't have lambda for channel length modulation). So it could be meant to be easy to translate models (similar philosophy to sgp -> vbic). Anything that requires sophisticated "parameter extraction" and knowledge of process parameters of course can be rather annoying.

If I were choosing a practical model to port to Java I'd probably start from the ngspice level 3 / 9 (I've yet to spot a behavioural difference between those. I think level 9 is meant for experimenting with modifications since people depend on stable behaviour for level 3). Sorry I know nothing about verilog. The ADMS functionality looks crazy!

The only confusing bit is the way that some parameters override others. E.g. I've never actually seen a model that explicitly supplies kp for instance so they must always depend on that to be derived.

ormaaj avatar Mar 27 '21 21:03 ormaaj

I could easily steal the mosfet level 3 code from spice. I have already done that with the spice bjt code. But is it sufficient to model subthreshold conductance? I thought you needed EKV for that, based on what little I know about it.

pfalstad avatar Mar 28 '21 02:03 pfalstad

Hm I've not tested sub-threshold effects. I'd guess no. Or it might have some heuristic to guess generic subthreshold effects. But at least it gets body effect (what I was originally looking at back when I posted this).

EKV seems rather obscure. I only heard about it when you mentioned it here, and skimmed some of the old papers from the 90s, but no implementation was available until I noticed this one appeared in the latest spice manual.

Oh yeah... The interesting "analog reciprocal" example doesn't really work. It's super broken in spice because these "floating mirror" / "beta multiplier" patterns are really touchy with the more detailed models. I did a slightly more realistic one and forced the curve to roughly fit 1/x (with some DC offset) by using a weird valued depletion mosfet... Still not great. https://tinyurl.com/yjmf3tza

I noticed the BJT model... Very nice! :D

ormaaj avatar Mar 28 '21 07:03 ormaaj

This should probably be a separate issue, but.. The analog reciprocal was contributed a while ago (by Felthry). He either designed it himself, or he got it from someplace he didn't remember. I should probably just delete it, if I can't replace it with a real circuit that's actually been used.

pfalstad avatar Mar 28 '21 17:03 pfalstad

Right, I confused your MOSFET issue with another one, especially since you mentioned subthreshold current.

pfalstad avatar Mar 28 '21 17:03 pfalstad

Hi @pfalstad . Kinda want the 4 pin mosfet with the subthreshold current. like in #21. found this that seems to explain in a simpler way https://studylib.net/doc/18221859/mosfet-operation-in-weak-and-moderate-inversion. maybe if i have time i will try to set up the java development environment...

angyongen avatar Jun 26 '25 17:06 angyongen