Browse Source

Alternative simple weak inversion model

according to https://www.anasoft.co.uk/MOS1Model.htm.
Fits existing LTSPICE models by adapting the slope parameter.
pre-master-46
Holger Vogt 8 years ago
committed by rlar
parent
commit
2474c28a54
  1. 30
      src/spicelib/devices/vdmos/vdmosload.c

30
src/spicelib/devices/vdmos/vdmosload.c

@ -906,7 +906,7 @@ scalef(double nf2, double vgst)
*/
static double
cweakinv(double slope, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr)
cweakinv2(double slope, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr)
{
vgst += shift * (1 - scalef(0.5, vgst));
double n = slope / 2.3 / 0.0256; /* Tsividis, p. 208 */
@ -918,3 +918,31 @@ cweakinv(double slope, double shift, double vgst, double vds, double lambda, dou
(first * first - second * second);
return cds;
}
/* Alternative simple weak inversion model, according to https://www.anasoft.co.uk/MOS1Model.htm
* Scale the voltage overdrive vgst logarithmically in weak inversion.
* Best fits LTSPICE curves with shift=0
*/
static double
cweakinv(double slope, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr)
{
NG_IGNORE(vt);
double cdrain, betap;
vgst = slope * log(1 + exp((vgst - shift) / slope));
betap = beta*(1 + lambda*vds);
/* scale vds with mtr (except with lambda) */
if (vgst <= vds * mtr) {
/* saturation region */
cdrain = betap*vgst*vgst*.5;
}
else {
/* linear region */
cdrain = betap * vds * mtr *
(vgst - .5 * vds * mtr);
}
return cdrain;
}
Loading…
Cancel
Save