Browse Source

don't replicate model and instance temperature dependent parameter

pre-master-46
dwarning 7 years ago
committed by Holger Vogt
parent
commit
92efc0bd6c
  1. 32
      src/spicelib/devices/vdmos/vdmostemp.c

32
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 /

Loading…
Cancel
Save