sub-coll junction calculation only if ISS given
This commit is contained in:
parent
3a908c76ef
commit
6bafdf70d5
|
|
@ -434,8 +434,13 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
vbc = DEVpnjlim(vbc,*(ckt->CKTstate0 + here->BJTvbc),vt,
|
vbc = DEVpnjlim(vbc,*(ckt->CKTstate0 + here->BJTvbc),vt,
|
||||||
here->BJTtVcrit,&ichk1);
|
here->BJTtVcrit,&ichk1);
|
||||||
if (ichk1 == 1) icheck=1;
|
if (ichk1 == 1) icheck=1;
|
||||||
vsub = DEVpnjlim(vsub,*(ckt->CKTstate0 + here->BJTvsub),vt,
|
if (model->BJTsubSatCurGiven) {
|
||||||
here->BJTtSubVcrit,&ichk1);
|
vsub = DEVpnjlim(vsub,*(ckt->CKTstate0 + here->BJTvsub),vt,
|
||||||
|
here->BJTtSubVcrit,&ichk1);
|
||||||
|
} else {
|
||||||
|
vsub = DEVpnjlim(vsub,*(ckt->CKTstate0 + here->BJTvsub),vt,
|
||||||
|
50,&ichk1);
|
||||||
|
}
|
||||||
if (ichk1 == 1) icheck=1;
|
if (ichk1 == 1) icheck=1;
|
||||||
vrci = vbc - vbcx; /* in case vbc was limited */
|
vrci = vbc - vbcx; /* in case vbc was limited */
|
||||||
}
|
}
|
||||||
|
|
@ -502,19 +507,22 @@ next1: vtn=vt*here->BJTtemissionCoeffF;
|
||||||
gbcn+=ckt->CKTgmin;
|
gbcn+=ckt->CKTgmin;
|
||||||
cbcn+=ckt->CKTgmin*vbc;
|
cbcn+=ckt->CKTgmin*vbc;
|
||||||
|
|
||||||
vts=vt*here->BJTtemissionCoeffS;
|
if (model->BJTsubSatCurGiven) {
|
||||||
|
vts=vt*here->BJTtemissionCoeffS;
|
||||||
if(vsub <= -3*vts) {
|
if(vsub <= -3*vts) {
|
||||||
arg=3*vts/(vsub*CONSTe);
|
arg=3*vts/(vsub*CONSTe);
|
||||||
arg = arg * arg * arg;
|
arg = arg * arg * arg;
|
||||||
gdsub = csubsat*3*arg/vsub+ckt->CKTgmin;
|
gdsub = csubsat*3*arg/vsub+ckt->CKTgmin;
|
||||||
cdsub = -csubsat*(1+arg)+ckt->CKTgmin*vsub;
|
cdsub = -csubsat*(1+arg)+ckt->CKTgmin*vsub;
|
||||||
|
} else {
|
||||||
|
evsub = exp(MIN(MAX_EXP_ARG,vsub/vts));
|
||||||
|
gdsub = csubsat*evsub/vts + ckt->CKTgmin;
|
||||||
|
cdsub = csubsat*(evsub-1) + ckt->CKTgmin*vsub;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
evsub = exp(MIN(MAX_EXP_ARG,vsub/vts));
|
gdsub = ckt->CKTgmin;
|
||||||
gdsub = csubsat*evsub/vts + ckt->CKTgmin;
|
cdsub = ckt->CKTgmin*vsub;
|
||||||
cdsub = csubsat*(evsub-1) + ckt->CKTgmin*vsub;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Kull's Quasi-Saturation model
|
* Kull's Quasi-Saturation model
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -170,12 +170,14 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
factlog = ratio1 * model->BJTenergyGap/vt +
|
factlog = ratio1 * model->BJTenergyGap/vt +
|
||||||
model->BJTtempExpIS*ratlog;
|
model->BJTtempExpIS*ratlog;
|
||||||
if ((model->BJTtlev == 0) || (model->BJTtlev == 1)) {
|
if ((model->BJTtlev == 0) || (model->BJTtlev == 1)) {
|
||||||
factor = exp(factlog);
|
factor = exp(factlog);
|
||||||
here->BJTtSatCur = model->BJTsatCur * factor;
|
here->BJTtSatCur = model->BJTsatCur * factor;
|
||||||
here->BJTtSubSatCur = model->BJTsubSatCur * factor;
|
if (model->BJTsubSatCurGiven)
|
||||||
|
here->BJTtSubSatCur = model->BJTsubSatCur * factor;
|
||||||
} else if (model->BJTtlev == 3) {
|
} else if (model->BJTtlev == 3) {
|
||||||
here->BJTtSatCur = pow(model->BJTsatCur,(1+model->BJTtis1*dt+model->BJTtis2*dt*dt));
|
here->BJTtSatCur = pow(model->BJTsatCur,(1+model->BJTtis1*dt+model->BJTtis2*dt*dt));
|
||||||
here->BJTtSubSatCur = pow(model->BJTsubSatCur,(1+model->BJTtiss1*dt+model->BJTtiss2*dt*dt));
|
if (model->BJTsubSatCurGiven)
|
||||||
|
here->BJTtSubSatCur = pow(model->BJTsubSatCur,(1+model->BJTtiss1*dt+model->BJTtiss2*dt*dt));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (model->BJTintCollResistGiven) {
|
if (model->BJTintCollResistGiven) {
|
||||||
|
|
@ -230,7 +232,7 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
||||||
} else if (model->BJTtlevc == 1) {
|
} else if (model->BJTtlevc == 1) {
|
||||||
here->BJTtBEcap = model->BJTdepletionCapBE*
|
here->BJTtBEcap = model->BJTdepletionCapBE*
|
||||||
(1+model->BJTcte*dt);
|
(1+model->BJTcte*dt);
|
||||||
here->BJTtBEpot = model->BJTpotentialBE - model->BJTtvje*dt;
|
here->BJTtBEpot = model->BJTpotentialBE - model->BJTtvje*dt;
|
||||||
}
|
}
|
||||||
if (model->BJTtlevc == 0) {
|
if (model->BJTtlevc == 0) {
|
||||||
|
|
@ -245,7 +247,7 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
||||||
} else if (model->BJTtlevc == 1) {
|
} else if (model->BJTtlevc == 1) {
|
||||||
here->BJTtBCcap = model->BJTdepletionCapBC*
|
here->BJTtBCcap = model->BJTdepletionCapBC*
|
||||||
(1+model->BJTctc*dt);
|
(1+model->BJTctc*dt);
|
||||||
here->BJTtBCpot = model->BJTpotentialBC - model->BJTtvjc*dt;
|
here->BJTtBCpot = model->BJTpotentialBC - model->BJTtvjc*dt;
|
||||||
}
|
}
|
||||||
if (model->BJTtlevc == 0) {
|
if (model->BJTtlevc == 0) {
|
||||||
|
|
@ -260,7 +262,7 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
(4e-4*(here->BJTtemp-REFTEMP)-gmanew);
|
||||||
} else if (model->BJTtlevc == 1) {
|
} else if (model->BJTtlevc == 1) {
|
||||||
here->BJTtSubcap = model->BJTcapSub*
|
here->BJTtSubcap = model->BJTcapSub*
|
||||||
(1+model->BJTcts*dt);
|
(1+model->BJTcts*dt);
|
||||||
here->BJTtSubpot = model->BJTpotentialSubstrate - model->BJTtvjs*dt;
|
here->BJTtSubpot = model->BJTpotentialSubstrate - model->BJTtvjs*dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -274,12 +276,9 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
(1 - here->BJTtjunctionExpBC);
|
(1 - here->BJTtjunctionExpBC);
|
||||||
here->BJTtVcrit = vt *
|
here->BJTtVcrit = vt *
|
||||||
log(vt / (CONSTroot2*here->BJTtSatCur*here->BJTarea));
|
log(vt / (CONSTroot2*here->BJTtSatCur*here->BJTarea));
|
||||||
if(model->BJTsubSatCurGiven) {
|
if (model->BJTsubSatCurGiven)
|
||||||
here->BJTtSubVcrit = vt *
|
here->BJTtSubVcrit = vt *
|
||||||
log(vt / (CONSTroot2*here->BJTtSubSatCur*here->BJTarea));
|
log(vt / (CONSTroot2*here->BJTtSubSatCur*here->BJTarea));
|
||||||
} else {
|
|
||||||
here->BJTtSubVcrit = here->BJTtVcrit;
|
|
||||||
}
|
|
||||||
here->BJTtf2 = exp((1 + here->BJTtjunctionExpBE) * xfc);
|
here->BJTtf2 = exp((1 + here->BJTtjunctionExpBE) * xfc);
|
||||||
here->BJTtf3 = 1 - model->BJTdepletionCapCoeff *
|
here->BJTtf3 = 1 - model->BJTdepletionCapCoeff *
|
||||||
(1 + here->BJTtjunctionExpBE);
|
(1 + here->BJTtjunctionExpBE);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue