VDMOS change thermal left and rigth side signs that mos and diode part follow same logic
This commit is contained in:
parent
4f689b8f11
commit
a990dec381
|
|
@ -416,13 +416,11 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selfheat) {
|
if (selfheat) {
|
||||||
/* note that sign is switched because power flows out
|
/* power flows from ground into the temperature node. */
|
||||||
of device into the temperature node. */
|
here->VDMOSgtempg = model->VDMOStype*here->VDMOSgm * Vds;
|
||||||
here->VDMOSgtempg = -model->VDMOStype*here->VDMOSgm * Vds;
|
here->VDMOSgtempT = GmT * Vds;
|
||||||
here->VDMOSgtempT = -GmT * Vds;
|
here->VDMOSgtempd = model->VDMOStype* (here->VDMOSgds * Vds + cdrain);
|
||||||
here->VDMOSgtempd = -model->VDMOStype* (here->VDMOSgds * Vds + cdrain);
|
here->VDMOScth = cdrain * Vds
|
||||||
here->VDMOScth = - cdrain * Vds
|
|
||||||
- 1/here->VDMOSdrainConductance * cdrain*cdrain
|
|
||||||
- model->VDMOStype * (here->VDMOSgtempg * Vgs + here->VDMOSgtempd * Vds)
|
- model->VDMOStype * (here->VDMOSgtempg * Vgs + here->VDMOSgtempd * Vds)
|
||||||
- here->VDMOSgtempT * delTemp;
|
- here->VDMOSgtempT * delTemp;
|
||||||
}
|
}
|
||||||
|
|
@ -577,7 +575,7 @@ bypass:
|
||||||
if (selfheat) {
|
if (selfheat) {
|
||||||
*(ckt->CKTrhs + here->VDMOSdNodePrime) += GmT * delTemp;
|
*(ckt->CKTrhs + here->VDMOSdNodePrime) += GmT * delTemp;
|
||||||
*(ckt->CKTrhs + here->VDMOSsNodePrime) += -GmT * delTemp;
|
*(ckt->CKTrhs + here->VDMOSsNodePrime) += -GmT * delTemp;
|
||||||
*(ckt->CKTrhs + here->VDMOStempNode) -= here->VDMOScth + ceqqth; /* MOS dissipated power + Cthj current */
|
*(ckt->CKTrhs + here->VDMOStempNode) += here->VDMOScth - ceqqth; /* MOS dissipated power + Cthj current */
|
||||||
double vCktTemp = (ckt->CKTtemp-CONSTCtoK); /* ckt temperature */
|
double vCktTemp = (ckt->CKTtemp-CONSTCtoK); /* ckt temperature */
|
||||||
if (ckt->CKTmode & MODETRANOP)
|
if (ckt->CKTmode & MODETRANOP)
|
||||||
vCktTemp *= ckt->CKTsrcFact;
|
vCktTemp *= ckt->CKTsrcFact;
|
||||||
|
|
@ -621,10 +619,10 @@ bypass:
|
||||||
(*(here->VDMOSDPtempPtr) += GmT);
|
(*(here->VDMOSDPtempPtr) += GmT);
|
||||||
(*(here->VDMOSSPtempPtr) += -GmT);
|
(*(here->VDMOSSPtempPtr) += -GmT);
|
||||||
(*(here->VDMOSGPtempPtr) += 0.0);
|
(*(here->VDMOSGPtempPtr) += 0.0);
|
||||||
(*(here->VDMOSTemptempPtr) += gTtt + 1/model->VDMOSrthjc + gcTt);
|
(*(here->VDMOSTemptempPtr) += -gTtt + 1/model->VDMOSrthjc + gcTt);
|
||||||
(*(here->VDMOSTempgpPtr) += gTtg);
|
(*(here->VDMOSTempgpPtr) += -gTtg);
|
||||||
(*(here->VDMOSTempdpPtr) += gTtdp);
|
(*(here->VDMOSTempdpPtr) += -gTtdp);
|
||||||
(*(here->VDMOSTempspPtr) += gTtsp);
|
(*(here->VDMOSTempspPtr) += -gTtsp);
|
||||||
(*(here->VDMOSTemptcasePtr) += -1/model->VDMOSrthjc);
|
(*(here->VDMOSTemptcasePtr) += -1/model->VDMOSrthjc);
|
||||||
(*(here->VDMOSTcasetempPtr) += -1/model->VDMOSrthjc);
|
(*(here->VDMOSTcasetempPtr) += -1/model->VDMOSrthjc);
|
||||||
(*(here->VDMOSTcasetcasePtr) += 1/model->VDMOSrthjc + 1/model->VDMOSrthca);
|
(*(here->VDMOSTcasetcasePtr) += 1/model->VDMOSrthjc + 1/model->VDMOSrthca);
|
||||||
|
|
@ -879,9 +877,9 @@ load:
|
||||||
*(ckt->CKTrhs + here->VDIOposPrimeNode) += cdeq;
|
*(ckt->CKTrhs + here->VDIOposPrimeNode) += cdeq;
|
||||||
}
|
}
|
||||||
if (selfheat) {
|
if (selfheat) {
|
||||||
*(ckt->CKTrhs + here->VDMOSdNode) += dIdio_dT*delTemp;
|
*(ckt->CKTrhs + here->VDIOposPrimeNode) += dIdio_dT*delTemp;
|
||||||
*(ckt->CKTrhs + here->VDIOposPrimeNode) -= dIdio_dT*delTemp;
|
*(ckt->CKTrhs + here->VDMOSdNode) += -dIdio_dT*delTemp;
|
||||||
*(ckt->CKTrhs + here->VDMOStempNode) += Ith - model->VDMOStype*dIth_dVdio*vd + dIth_dT*delTemp; /* Diode dissipated power */
|
*(ckt->CKTrhs + here->VDMOStempNode) += Ith - model->VDMOStype*dIth_dVdio*vd - dIth_dT*delTemp; /* Diode dissipated power */
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* load matrix
|
* load matrix
|
||||||
|
|
@ -894,11 +892,11 @@ load:
|
||||||
*(here->VDIORPsPtr) -= gspr;
|
*(here->VDIORPsPtr) -= gspr;
|
||||||
*(here->VDIORPdPtr) -= gd;
|
*(here->VDIORPdPtr) -= gd;
|
||||||
if (selfheat) {
|
if (selfheat) {
|
||||||
(*(here->VDMOSTemptempPtr) += dIth_dT);
|
|
||||||
(*(here->VDIOTempposPrimePtr) += -dIth_dVdio);
|
(*(here->VDIOTempposPrimePtr) += -dIth_dVdio);
|
||||||
(*(here->VDIOTempnegPtr) += dIth_dVdio);
|
(*(here->VDIOTempnegPtr) += dIth_dVdio);
|
||||||
(*(here->VDIOPosPrimetempPtr) += -dIdio_dT);
|
(*(here->VDMOSTemptempPtr) += -dIth_dT);
|
||||||
(*(here->VDIONegtempPtr) += dIdio_dT);
|
(*(here->VDIOPosPrimetempPtr) += dIdio_dT);
|
||||||
|
(*(here->VDIONegtempPtr) += -dIdio_dT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue