VDMOS include thermal components into convtest
This commit is contained in:
parent
a0f168e72e
commit
a49a05ec0d
|
|
@ -23,6 +23,8 @@ VDMOSconvTest(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
double vgd;
|
double vgd;
|
||||||
double vgdo;
|
double vgdo;
|
||||||
double tol;
|
double tol;
|
||||||
|
int selfheat;
|
||||||
|
double delTemp, deldelTemp;
|
||||||
|
|
||||||
for( ; model != NULL; model = VDMOSnextModel(model)) {
|
for( ; model != NULL; model = VDMOSnextModel(model)) {
|
||||||
for(here = VDMOSinstances(model); here!= NULL;
|
for(here = VDMOSinstances(model); here!= NULL;
|
||||||
|
|
@ -41,18 +43,29 @@ VDMOSconvTest(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
delvds = vds - *(ckt->CKTstate0 + here->VDMOSvds);
|
delvds = vds - *(ckt->CKTstate0 + here->VDMOSvds);
|
||||||
delvgd = vgd-vgdo;
|
delvgd = vgd-vgdo;
|
||||||
|
|
||||||
|
selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven);
|
||||||
|
if (selfheat) {
|
||||||
|
delTemp = *(ckt->CKTrhs + here->VDMOStempNode);
|
||||||
|
deldelTemp = delTemp - *(ckt->CKTstate0 + here->VDMOSdelTemp);
|
||||||
|
} else {
|
||||||
|
delTemp = 0.0;
|
||||||
|
deldelTemp = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
/* these are needed for convergence testing */
|
/* these are needed for convergence testing */
|
||||||
|
|
||||||
if (here->VDMOSmode >= 0) {
|
if (here->VDMOSmode >= 0) {
|
||||||
cdhat=
|
cdhat=
|
||||||
here->VDMOScd -
|
here->VDMOScd -
|
||||||
here->VDMOSgm * delvgs +
|
here->VDMOSgm * delvgs +
|
||||||
here->VDMOSgds * delvds ;
|
here->VDMOSgds * delvds +
|
||||||
|
here->VDMOSgmT * deldelTemp;
|
||||||
} else {
|
} else {
|
||||||
cdhat=
|
cdhat=
|
||||||
here->VDMOScd -
|
here->VDMOScd -
|
||||||
here->VDMOSgm * delvgd +
|
here->VDMOSgm * delvgd +
|
||||||
here->VDMOSgds * delvds ;
|
here->VDMOSgds * delvds +
|
||||||
|
here->VDMOSgmT * deldelTemp;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* check convergence
|
* check convergence
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue