VDMOS include body diode into power calculation

This commit is contained in:
dwarning 2020-04-01 16:42:57 +02:00
parent 0b51477b80
commit fa5f20ea96
1 changed files with 13 additions and 10 deletions

View File

@ -157,23 +157,26 @@ VDMOSask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value,
strcpy(errMsg,msg); strcpy(errMsg,msg);
return(E_ASKPOWER); return(E_ASKPOWER);
} else { } else {
double temp; value->rValue = fabs(here->VDMOScd *
(*(ckt->CKTrhsOld + here->VDMOSdNode) -
*(ckt->CKTrhsOld + here->VDMOSsNode)));
value->rValue = here->VDMOScd *
*(ckt->CKTrhsOld + here->VDMOSdNode);
if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&
!(ckt->CKTmode & MODETRANOP)) { !(ckt->CKTmode & MODETRANOP)) {
value->rValue += (*(ckt->CKTstate0 + here->VDMOScqgd) + value->rValue += fabs(*(ckt->CKTstate0 + here->VDMOScqgd) *
*(ckt->CKTstate0 + here->VDMOScqgs)) * (*(ckt->CKTrhsOld + here->VDMOSgNode) -
*(ckt->CKTrhsOld + here->VDMOSgNode); *(ckt->CKTrhsOld + here->VDMOSdNode)));
} }
temp = -here->VDMOScd;
if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&
!(ckt->CKTmode & MODETRANOP)) { !(ckt->CKTmode & MODETRANOP)) {
temp -= *(ckt->CKTstate0 + here->VDMOScqgd) + value->rValue += fabs(*(ckt->CKTstate0 + here->VDMOScqgs) *
*(ckt->CKTstate0 + here->VDMOScqgs); (*(ckt->CKTrhsOld + here->VDMOSgNode) -
*(ckt->CKTrhsOld + here->VDMOSsNode)));
} }
value->rValue += temp * *(ckt->CKTrhsOld + here->VDMOSsNode);
value->rValue += fabs(*(ckt->CKTstate0 + here->VDIOcurrent) *
(*(ckt->CKTrhsOld + here->VDMOSdNode) -
*(ckt->CKTrhsOld + here->VDMOSsNode)));
} }
return(OK); return(OK);
default: default: