don't replicate model and instance temperature dependent parameter
This commit is contained in:
parent
34f0e98080
commit
92efc0bd6c
|
|
@ -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…
Reference in New Issue