Browse Source

VDMOS include body diode into power calculation

pre-master-46
dwarning 6 years ago
committed by Holger Vogt
parent
commit
b75791c87d
  1. 23
      src/spicelib/devices/vdmos/vdmosask.c

23
src/spicelib/devices/vdmos/vdmosask.c

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

Loading…
Cancel
Save