Fixed a divide-by-zero bug in the MOS level=2 device model. The fix was supplied by Hitoshi Tanaka.
This commit is contained in:
parent
11e978a77e
commit
3c0fab2bfb
|
|
@ -2,6 +2,7 @@
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1988 Jaijeet S Roychowdhury
|
Author: 1988 Jaijeet S Roychowdhury
|
||||||
Modified: 2000 AlansFixes
|
Modified: 2000 AlansFixes
|
||||||
|
$Id$
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#include "ngspice.h"
|
#include "ngspice.h"
|
||||||
|
|
@ -367,6 +368,8 @@ d_p.d3_pqr = 0.0;
|
||||||
InvDeriv(&d_dbrgdb,&d_barg);
|
InvDeriv(&d_dbrgdb,&d_barg);
|
||||||
TimesDeriv(&d_dbrgdb,&d_dbrgdb,-0.5);
|
TimesDeriv(&d_dbrgdb,&d_dbrgdb,-0.5);
|
||||||
} else {
|
} else {
|
||||||
|
sphi = sqrt(here->MOS2tPhi); /* added by HT 050523 */
|
||||||
|
sphi3 = here->MOS2tPhi*sphi; /* added by HT 050523 */
|
||||||
barg = sphi/(1.0+0.5*(lvbs-lvds)/here->MOS2tPhi);
|
barg = sphi/(1.0+0.5*(lvbs-lvds)/here->MOS2tPhi);
|
||||||
EqualDeriv(&d_barg,&d_q); d_barg.value = lvbs - lvds;
|
EqualDeriv(&d_barg,&d_q); d_barg.value = lvbs - lvds;
|
||||||
d_barg.d1_r -= 1.0;
|
d_barg.d1_r -= 1.0;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
Copyright 1990 Regents of the University of California. All rights reserved.
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
Author: 1985 Thomas L. Quarles
|
Author: 1985 Thomas L. Quarles
|
||||||
Modified: 2000 alansFixes
|
Modified: 2000 alansFixes
|
||||||
|
$Id$
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#include "ngspice.h"
|
#include "ngspice.h"
|
||||||
|
|
@ -584,6 +585,8 @@ next1: if(vbs <= -3*vt) {
|
||||||
dbrgdb = -0.5/barg;
|
dbrgdb = -0.5/barg;
|
||||||
d2bdb2 = 0.5*dbrgdb/(phiMinVbs+lvds);
|
d2bdb2 = 0.5*dbrgdb/(phiMinVbs+lvds);
|
||||||
} else {
|
} else {
|
||||||
|
sphi = sqrt(here->MOS2tPhi);/* added by HT 050523 */
|
||||||
|
sphi3 = here->MOS2tPhi*sphi;/* added by HT 050523 */
|
||||||
barg = sphi/(1.0+0.5*(lvbs-lvds)/here->MOS2tPhi);
|
barg = sphi/(1.0+0.5*(lvbs-lvds)/here->MOS2tPhi);
|
||||||
tmp = barg/sphi3;
|
tmp = barg/sphi3;
|
||||||
dbrgdb = -0.5*barg*tmp;
|
dbrgdb = -0.5*barg*tmp;
|
||||||
|
|
@ -829,6 +832,8 @@ line500:
|
||||||
bsarg = sqrt(vdsat+phiMinVbs);
|
bsarg = sqrt(vdsat+phiMinVbs);
|
||||||
dbsrdb = -0.5/bsarg;
|
dbsrdb = -0.5/bsarg;
|
||||||
} else {
|
} else {
|
||||||
|
sphi = sqrt(here->MOS2tPhi);/* added by HT 050523 */
|
||||||
|
sphi3 = here->MOS2tPhi*sphi;/* added by HT 050523 */
|
||||||
bsarg = sphi/(1.0+0.5*(lvbs-vdsat)/here->MOS2tPhi);
|
bsarg = sphi/(1.0+0.5*(lvbs-vdsat)/here->MOS2tPhi);
|
||||||
dbsrdb = -0.5*bsarg*bsarg/sphi3;
|
dbsrdb = -0.5*bsarg*bsarg/sphi3;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue