diff --git a/src/spicelib/devices/dio/diotemp.c b/src/spicelib/devices/dio/diotemp.c index 10b6b370d..8853d70ec 100644 --- a/src/spicelib/devices/dio/diotemp.c +++ b/src/spicelib/devices/dio/diotemp.c @@ -38,6 +38,13 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt) model->DIOnomTemp = ckt->CKTnomTemp; } vtnom = CONSTKoverQ * model->DIOnomTemp; + /* limit grading coeff to max of .9 */ + if(model->DIOgradingCoeff>.9) { + SPfrontEnd->IFerrorf (ERR_WARNING, + "%s: grading coefficient too large, limited to 0.9", + model->DIOmodName); + model->DIOgradingCoeff=.9; + } /* limit activation energy to min of .1 */ if(model->DIOactivationEnergy<.1) { SPfrontEnd->IFerrorf (ERR_WARNING, @@ -87,6 +94,16 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt) + (model->DIOgradCoeffTemp2 * dt * dt); here->DIOtGradingCoeff = model->DIOgradingCoeff * factor; + /* limit temperature adjusted grading coeff + * to max of .9 + */ + if(here->DIOtGradingCoeff>.9) { + SPfrontEnd->IFerrorf (ERR_WARNING, + "%s: temperature adjusted grading coefficient too large, limited to 0.9", + here->DIOname); + here->DIOtGradingCoeff=.9; + } + vt = CONSTKoverQ * here->DIOtemp; /* this part gets really ugly - I won't even try to * explain these equations */