diff --git a/examples/vdmos/100W.sp b/examples/vdmos/100W.sp index 403436643..5a898f9c9 100644 --- a/examples/vdmos/100W.sp +++ b/examples/vdmos/100W.sp @@ -5,9 +5,9 @@ *R24 & R25 are optional output offset trimming * VTamb tamb 0 25 -MQ1 +V N010 N012 tn tcn IRFP240 tnodeout +MQ1 +V N010 N012 tn tcn IRFP240 thermal X1 tcn tamb case-ambient -MQ2 -V N020 N017 tp tcp IRFP9240 tnodeout +MQ2 -V N020 N017 tp tcp IRFP9240 thermal X2 tcp tamb case-ambient R1 OUT N017 .33 R2 N012 OUT .33 diff --git a/examples/vdmos/self-heating.sp b/examples/vdmos/self-heating.sp index 535a3eb8d..463d3072d 100644 --- a/examples/vdmos/self-heating.sp +++ b/examples/vdmos/self-heating.sp @@ -1,5 +1,5 @@ VDMOS self heating test -M1 D G 0 tj tc IRFP240 tnodeout +M1 D G 0 tj tc IRFP240 thermal rthk tc 0 0.05 VG G 0 5V Pulse 0 10 0 1m 1m 100m 200m *RD D D1 4 diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index fdc7393fe..ea3ff8174 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -6964,16 +6964,16 @@ static int inp_vdmos_model(struct card *deck) card->line = new_line; wl_free(wlb); } - /* we have a VDMOS instance line with 'tnodeout' and thus need exactly 5 nodes + /* we have a VDMOS instance line with 'thermal' flag and thus need exactly 5 nodes */ - else if (strstr(curr_line, "tnodeout")) { + else if (strstr(curr_line, "thermal")) { for (i = 0; i < 7; i++) curr_line = nexttok(curr_line); - if (!ciprefix("tnodeout", curr_line)) { + if (!ciprefix("thermal", curr_line)) { fprintf(cp_err, "Error: We need exactly 5 nodes\n" " drain, gate, source, tjunction, tcase\n" - " in VDMOS instance line\n" + " in VDMOS instance line with thermal model\n" " %s\n", card->line); return 1; } diff --git a/src/spicelib/devices/vdmos/vdmos.c b/src/spicelib/devices/vdmos/vdmos.c index d6802652b..12dfd1b45 100644 --- a/src/spicelib/devices/vdmos/vdmos.c +++ b/src/spicelib/devices/vdmos/vdmos.c @@ -22,7 +22,7 @@ IFparm VDMOSpTable[] = { /* parameters */ IOPU("dtemp", VDMOS_DTEMP, IF_REAL, "Instance temperature difference"), IP( "ic", VDMOS_IC, IF_REALVEC, "Vector of D-S, G-S voltages"), - IOP("tnodeout", VDMOS_TNODEOUT, IF_FLAG, "Thermal model switch on/off"), + IOP("thermal", VDMOS_THERMAL, IF_FLAG, "Thermal model switch on/off"), OP( "id", VDMOS_CD, IF_REAL, "Drain current"), OP( "is", VDMOS_CS, IF_REAL, "Source current"), diff --git a/src/spicelib/devices/vdmos/vdmosacld.c b/src/spicelib/devices/vdmos/vdmosacld.c index 2a95a90e2..9e20e29ad 100644 --- a/src/spicelib/devices/vdmos/vdmosacld.c +++ b/src/spicelib/devices/vdmos/vdmosacld.c @@ -35,7 +35,7 @@ VDMOSacLoad(GENmodel *inModel, CKTcircuit *ckt) for(here = VDMOSinstances(model); here!= NULL; here = VDMOSnextInstance(here)) { - selfheat = (here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven); + selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven); if (here->VDMOSmode < 0) { xnrm=0; xrev=1; diff --git a/src/spicelib/devices/vdmos/vdmosask.c b/src/spicelib/devices/vdmos/vdmosask.c index 597192fc3..4db205518 100644 --- a/src/spicelib/devices/vdmos/vdmosask.c +++ b/src/spicelib/devices/vdmos/vdmosask.c @@ -50,8 +50,8 @@ VDMOSask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, case VDMOS_OFF: value->iValue = here->VDMOSoff; return(OK); - case VDMOS_TNODEOUT: - value->iValue = here->VDMOStnodeout; + case VDMOS_THERMAL: + value->iValue = here->VDMOSthermal; return(OK); case VDMOS_IC_VDS: value->rValue = here->VDMOSicVDS; diff --git a/src/spicelib/devices/vdmos/vdmosdefs.h b/src/spicelib/devices/vdmos/vdmosdefs.h index 5e227f90b..ffdae728b 100644 --- a/src/spicelib/devices/vdmos/vdmosdefs.h +++ b/src/spicelib/devices/vdmos/vdmosdefs.h @@ -64,7 +64,7 @@ typedef struct sVDMOSinstance { double VDMOSdsConductance; /*conductance of drain to source:set in setup*/ double VDMOStemp; /* operating temperature of this instance */ double VDMOSdtemp; /* operating temperature of the instance relative to circuit temperature*/ - int VDMOStnodeout; /* flag indicate self heating on */ + int VDMOSthermal; /* flag indicate self heating on */ double VDMOStTransconductance; /* temperature corrected transconductance*/ double VDMOStPhi; /* temperature corrected Phi */ @@ -157,7 +157,7 @@ typedef struct sVDMOSinstance { unsigned VDMOSsNodePrimeSet :1; unsigned VDMOSicVDSGiven :1; unsigned VDMOSicVGSGiven :1; - unsigned VDMOStnodeoutGiven : 1; /* flag indicate self heating on */ + unsigned VDMOSthermalGiven : 1; /* flag indicate self heating on */ unsigned VDMOSvonGiven : 1; unsigned VDMOSvdsatGiven :1; unsigned VDMOSmodeGiven :1; @@ -440,7 +440,7 @@ enum { VDMOS_TEMP, VDMOS_M, VDMOS_DTEMP, - VDMOS_TNODEOUT, + VDMOS_THERMAL, }; /* model parameters */ diff --git a/src/spicelib/devices/vdmos/vdmosload.c b/src/spicelib/devices/vdmos/vdmosload.c index 042a31178..f0b6d4578 100644 --- a/src/spicelib/devices/vdmos/vdmosload.c +++ b/src/spicelib/devices/vdmos/vdmosload.c @@ -104,7 +104,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) for (here = VDMOSinstances(model); here != NULL; here = VDMOSnextInstance(here)) { - selfheat = (here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven); + selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven); if (selfheat) Check_mos = 1; else diff --git a/src/spicelib/devices/vdmos/vdmosnoi.c b/src/spicelib/devices/vdmos/vdmosnoi.c index 48fe0dda8..3d96af5bb 100644 --- a/src/spicelib/devices/vdmos/vdmosnoi.c +++ b/src/spicelib/devices/vdmos/vdmosnoi.c @@ -91,7 +91,7 @@ VDMOSnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, switch (mode) { case N_DENS: - if ((inst->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) + if ((inst->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) tempRatioSH = inst->VDMOSTempSH / ckt->CKTtemp; else tempRatioSH = 1.0; diff --git a/src/spicelib/devices/vdmos/vdmospar.c b/src/spicelib/devices/vdmos/vdmospar.c index ad57b8c09..fef9de1bf 100644 --- a/src/spicelib/devices/vdmos/vdmospar.c +++ b/src/spicelib/devices/vdmos/vdmospar.c @@ -61,9 +61,9 @@ VDMOSparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select) here->VDMOSicVGS = value->rValue; here->VDMOSicVGSGiven = TRUE; break; - case VDMOS_TNODEOUT: - here->VDMOStnodeout = (value->iValue != 0); - here->VDMOStnodeoutGiven = TRUE; + case VDMOS_THERMAL: + here->VDMOSthermal = (value->iValue != 0); + here->VDMOSthermalGiven = TRUE; break; case VDMOS_IC: switch(value->v.numValue){ diff --git a/src/spicelib/devices/vdmos/vdmosset.c b/src/spicelib/devices/vdmos/vdmosset.c index 1bd415a91..37050c500 100644 --- a/src/spicelib/devices/vdmos/vdmosset.c +++ b/src/spicelib/devices/vdmos/vdmosset.c @@ -342,7 +342,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, here->VDIOposPrimeNode = here->VDMOSsNode; } - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { if (here->VDMOStempNode == -1) { error = CKTmkVolt(ckt,&tmp,here->VDMOSname,"Tj"); if (error) return(error); @@ -374,7 +374,7 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\ return(E_NOMEM);\ } } while(0) - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { TSTALLOC(VDMOSTemptempPtr, VDMOStempNode, VDMOStempNode); TSTALLOC(VDMOSTempdpPtr, VDMOStempNode, VDMOSdNodePrime); TSTALLOC(VDMOSTempspPtr, VDMOStempNode, VDMOSsNodePrime); @@ -458,7 +458,7 @@ VDMOSunsetup(GENmodel *inModel, CKTcircuit *ckt) CKTdltNNum(ckt, here->VDIOposPrimeNode); here->VDIOposPrimeNode = 0; - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { if (here->VDMOStNodePrime > 0) CKTdltNNum(ckt, here->VDMOStNodePrime); here->VDMOStNodePrime = 0;