diff --git a/examples/vbic/vbic99_tran.sp b/examples/vbic/vbic99_tran.sp index d86c16166..4d24e39cc 100644 --- a/examples/vbic/vbic99_tran.sp +++ b/examples/vbic/vbic99_tran.sp @@ -1,15 +1,16 @@ ***** VBIC99 level 9 Transient test ***** * -q1 3 2 0 0 t vbic99 -v 4 0 dc 5.0 -vin 1 0 dc 2.5 pulse (0 5 0 1n 1n 10n 25n) -r1 1 2 100 -r2 3 4 10k +q1 c b 0 0 t vbic99 +vcc vp 0 dc 5.0 +vin in 0 dc 2.5 pulse (0 5 0 1n 1n 10n 25n) +r1 in b 100 +r2 c vp 1k * .control op -tran 50p 50n -plot v(1) v(2) v(3) v(4) +tran 50p 100n +plot v(in) v(b) v(c) v(vp) +settype temperature v(t) plot v(t) .endc * @@ -42,7 +43,7 @@ plot v(t) + EAIS = 1.12 EANE = 1.489271 EANC = 1.489271 + EANS = 1.12 XIS = 3 XII = 3 + XIN = 3 TNF = 0 TAVC = 0 -+ RTH = 159.177 CTH = 0 VRT = 0 ++ RTH = 159.177 CTH = 100p VRT = 0 + ART = 0.1 CCSO = 0 QBM = 0 + NKF = 0.5 XIKF = 0 XRCX = 2 + XRBX = 2 XRBP = 0 ISRR = 1 diff --git a/src/spicelib/devices/vdmos/vdmosset.c b/src/spicelib/devices/vdmos/vdmosset.c index 22365c3ea..1af46a53c 100644 --- a/src/spicelib/devices/vdmos/vdmosset.c +++ b/src/spicelib/devices/vdmos/vdmosset.c @@ -89,7 +89,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, model->VDMOSmtr = 1.; if (!model->VDIObvGiven) - model->VDIObv = 1.0e30; + model->VDIObv = 1e99; if (!model->VDIOibvGiven) model->VDIOibv = 1.0e-10; @@ -110,7 +110,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, model->VDMOSrds = 1.0e+15; if (!model->VDIOresistanceGiven) - model->VDIOresistance = 10e-03; + model->VDIOresistance = 0.0; if (!model->VDIOnGiven) model->VDIOn = 1.; @@ -190,6 +190,12 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, if (!model->VDMOSvgdrMaxGiven) model->VDMOSvgdrMax = 1e99; + if (!model->VDMOSqsResistanceGiven) + model->VDMOSqsResistance = 0.0; + + if (!model->VDMOSqsVoltageGiven) + model->VDMOSqsVoltage = 0.0; + if ((model->VDMOSqsResistanceGiven) && (model->VDMOSqsVoltageGiven)) model->VDMOSqsGiven = 1; else @@ -266,7 +272,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, here->VDMOSgateConductance = 0.0; } if (model->VDMOSrdsGiven) { - if (model->VDMOSrds != 0) { + if (model->VDMOSrds > 0) { here->VDMOSdsConductance = here->VDMOSm / model->VDMOSrds; } else { here->VDMOSdsConductance = 1e-15; @@ -274,10 +280,10 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, } else { here->VDMOSdsConductance = 1e-15; } - if (model->VDIOresistance > 10e-3) { + if (model->VDIOresistance > 0) { here->VDIOconductance = here->VDMOSm / model->VDIOresistance; } else { - here->VDIOconductance = here->VDMOSm / 10e-03; + here->VDIOconductance = 0.0; } if (model->VDMOSdrainResistance > 0) { @@ -351,7 +357,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, here->VDMOSsNodePrime = here->VDMOSsNode; } - if (model->VDIOresistance != 0 ) { + if (model->VDIOresistance > 0 ) { if (here->VDIOposPrimeNode == 0) { error = CKTmkVolt(ckt, &tmp, here->VDMOSname, "body diode"); if (error) return(error);