Browse Source

correct and simplify temp derivatives

pre-master-46
dwarning 5 months ago
parent
commit
a6590d354f
  1. 12
      src/spicelib/devices/vdmos/vdmosload.c

12
src/spicelib/devices/vdmos/vdmosload.c

@ -297,17 +297,21 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
/* Calculate temperature dependent values for self-heating effect */ /* Calculate temperature dependent values for self-heating effect */
if (selfheat) { if (selfheat) {
Beta = here->VDMOStTransconductance; Beta = here->VDMOStTransconductance;
dBeta_dT = Beta * model->VDMOSmu * pow(Temp, model->VDMOSmu-1) / pow(model->VDMOStnom, model->VDMOSmu);
dBeta_dT = model->VDMOStransconductance * here->VDMOSm
* model->VDMOSmu * pow(Temp/model->VDMOStnom, model->VDMOSmu) / Temp;
rd0T = here->VDMOSdrainResistance; rd0T = here->VDMOSdrainResistance;
if (model->VDMOStexp0Given) if (model->VDMOStexp0Given)
drd0T_dT = rd0T * model->VDMOStexp0 * pow(Temp, model->VDMOStexp0-1) / pow(model->VDMOStnom, model->VDMOStexp0);
drd0T_dT = model->VDMOSdrainResistance / here->VDMOSm
* model->VDMOStexp0 * pow(Temp/model->VDMOStnom, model->VDMOStexp0) / Temp;
else else
drd0T_dT = rd0T * (model->VDMOStrd1 + model->VDMOStrd2*(2*model->VDMOStnom*Temp - model->VDMOStnom*model->VDMOStnom));
drd0T_dT = model->VDMOSdrainResistance / here->VDMOSm
* (model->VDMOStrd1 + 2 * model->VDMOStrd2 * (Temp - model->VDMOStnom));
rd1T = 0.0; rd1T = 0.0;
drd1T_dT = 0.0; drd1T_dT = 0.0;
if (model->VDMOSqsGiven) { if (model->VDMOSqsGiven) {
rd1T = here->VDMOSqsResistance; rd1T = here->VDMOSqsResistance;
drd1T_dT = rd1T * model->VDMOStexp1 * pow(Temp, model->VDMOStexp1-1) / pow(model->VDMOStnom, model->VDMOStexp1);
drd1T_dT = model->VDMOSqsResistance / here->VDMOSm
* model->VDMOStexp1 * pow(Temp/model->VDMOStnom, model->VDMOStexp1) / Temp;
} }
} else { } else {
Beta = here->VDMOStTransconductance; Beta = here->VDMOStTransconductance;

Loading…
Cancel
Save