Choose better interpolation and default parameters

This commit is contained in:
Holger Vogt 2018-04-23 21:45:14 +02:00 committed by rlar
parent 729eac4e84
commit 3ee3ab39a9
1 changed files with 3 additions and 3 deletions

View File

@ -890,13 +890,13 @@ scalef(double nf2, double vgst)
static double static double
cweakinv(double slope, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr) cweakinv(double slope, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr)
{ {
vgst += shift * (1 - scalef(2, vgst)); vgst += shift * (1 - scalef(0.5, vgst));
double n = slope / 2.3 / 0.0256; /* Tsividis, p. 208 */ double n = slope / 2.3 / 0.0256; /* Tsividis, p. 208 */
double n1 = n + (1 - n) * scalef(2, vgst); /* n < n1 < 1 */ double n1 = n + (1 - n) * scalef(1, vgst); /* n < n1 < 1 */
double first = log(1 + exp(vgst / (2 * n1 * vt))); double first = log(1 + exp(vgst / (2 * n1 * vt)));
double second = log(1 + exp((vgst - vds * mtr * n1) / (2 * n1 * vt))); double second = log(1 + exp((vgst - vds * mtr * n1) / (2 * n1 * vt)));
double cds = double cds =
beta * n1 * 2 * vt * vt * (1 + scalef(2, vgst) * lambda * vds) * beta * n1 * 2 * vt * vt * (1 + scalef(1, vgst) * lambda * vds) *
(first * first - second * second); (first * first - second * second);
return cds; return cds;
} }