Alternative simple weak inversion model
according to https://www.anasoft.co.uk/MOS1Model.htm. Fits existing LTSPICE models by adapting the slope parameter.
This commit is contained in:
parent
0ece0d0c1c
commit
2474c28a54
|
|
@ -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…
Reference in New Issue