From 92efc0bd6cfa6f3f981aa9e3e6a59588a687b061 Mon Sep 17 00:00:00 2001 From: dwarning Date: Sun, 11 Nov 2018 09:47:01 +0100 Subject: [PATCH] don't replicate model and instance temperature dependent parameter --- src/spicelib/devices/vdmos/vdmostemp.c | 32 ++++---------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/spicelib/devices/vdmos/vdmostemp.c b/src/spicelib/devices/vdmos/vdmostemp.c index 8783e87d8..5af7dac34 100644 --- a/src/spicelib/devices/vdmos/vdmostemp.c +++ b/src/spicelib/devices/vdmos/vdmostemp.c @@ -44,7 +44,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) arg1 = -egfet1/(kt1+kt1)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact1 = -2*vtnom *(1.5*log(fact1)+CHARGE*arg1); - /* now model parameter preprocessing */ + /* now model parameter preprocessing */ if (model->VDMOSphi <= 0.0) { SPfrontEnd->IFerrorf(ERR_FATAL, @@ -86,7 +86,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) double arg; /* 1 - fc */ /* perform the parameter defaulting */ - + if(!here->VDMOSdtempGiven) { here->VDMOSdtemp = 0.0; } @@ -174,41 +174,17 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) } /* bulk diode model */ - double egfet1, arg1, fact1, pbfact1, pbo, gmaold; - double fact2, pbfact, arg2, egfet, gmanew, factor; + double pbo, gmaold; + double gmanew, factor; double tBreakdownVoltage, vte, cbv; double xbv, xcbv, tol, iter, dt; - /* loop through all the instances */ - - if (!here->VDMOSdtempGiven) here->VDMOStemp = 0.0; - - if (!here->VDMOStempGiven) - here->VDMOStemp = ckt->CKTtemp + here->VDMOStemp; - dt = here->VDMOStemp - model->VDMOStnom; - /* Junction grading temperature adjust */ factor = 1.0 + (model->VDIOgradCoeffTemp1 * dt) + (model->VDIOgradCoeffTemp2 * dt * dt); here->VDIOtGradingCoeff = model->VDIOgradCoeff * factor; - vt = CONSTKoverQ * here->VDMOStemp; - /* this part gets really ugly - I won't even try to - * explain these equations */ - fact2 = here->VDMOStemp / REFTEMP; - egfet = 1.16 - (7.02e-4*here->VDMOStemp*here->VDMOStemp) / - (here->VDMOStemp + 1108); - arg2 = -egfet / (2 * CONSTboltz*here->VDMOStemp) + - 1.1150877 / (CONSTboltz*(REFTEMP + REFTEMP)); - pbfact = -2 * vt*(1.5*log(fact2) + CHARGE*arg2); - egfet1 = 1.16 - (7.02e-4*model->VDMOStnom*model->VDMOStnom) / - (model->VDMOStnom + 1108); - arg1 = -egfet1 / (CONSTboltz * 2 * model->VDMOStnom) + - 1.1150877 / (2 * CONSTboltz*REFTEMP); - fact1 = model->VDMOStnom / REFTEMP; - pbfact1 = -2 * vtnom*(1.5*log(fact1) + CHARGE*arg1); - pbo = (model->VDIOjunctionPot - pbfact1) / fact1; gmaold = (model->VDIOjunctionPot - pbo) / pbo; here->VDIOtJctCap = model->VDIOjunctionCap /