Add model parameter selft, to switch on self-heating, default: off (selft=0)
This commit is contained in:
parent
5197200fb3
commit
ff77c583d7
|
|
@ -184,7 +184,8 @@ IFparm VBICmPTable[] = { /* model parameters */
|
||||||
IOP("vbc_max", VBIC_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
IOP("vbc_max", VBIC_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
||||||
IOPR("bvbc", VBIC_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
IOPR("bvbc", VBIC_MOD_VBC_MAX, IF_REAL, "maximum voltage B-C junction"),
|
||||||
IOP("vce_max", VBIC_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch"),
|
IOP("vce_max", VBIC_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch"),
|
||||||
IOPR("bvce", VBIC_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch")
|
IOPR("bvce", VBIC_MOD_VCE_MAX, IF_REAL, "maximum voltage C-E branch"),
|
||||||
|
IOP("selft", VBIC_MOD_SELFT, IF_INTEGER, "0: self-heating off, 1: self-heating on")
|
||||||
};
|
};
|
||||||
|
|
||||||
char *VBICnames[] = {
|
char *VBICnames[] = {
|
||||||
|
|
|
||||||
|
|
@ -457,6 +457,7 @@ typedef struct sVBICmodel { /* model structure for a vbic */
|
||||||
double VBICtempExpAVC;
|
double VBICtempExpAVC;
|
||||||
double VBICthermalResist;
|
double VBICthermalResist;
|
||||||
double VBICthermalCapacitance;
|
double VBICthermalCapacitance;
|
||||||
|
int VBICselft;
|
||||||
double VBICpunchThroughVoltageBC;
|
double VBICpunchThroughVoltageBC;
|
||||||
double VBICdeplCapCoeff1;
|
double VBICdeplCapCoeff1;
|
||||||
double VBICfixedCapacitanceCS;
|
double VBICfixedCapacitanceCS;
|
||||||
|
|
@ -571,6 +572,7 @@ typedef struct sVBICmodel { /* model structure for a vbic */
|
||||||
unsigned VBICtempExpNFGiven : 1;
|
unsigned VBICtempExpNFGiven : 1;
|
||||||
unsigned VBICtempExpAVCGiven : 1;
|
unsigned VBICtempExpAVCGiven : 1;
|
||||||
unsigned VBICthermalResistGiven : 1;
|
unsigned VBICthermalResistGiven : 1;
|
||||||
|
unsigned VBICselftGiven : 1;
|
||||||
unsigned VBICthermalCapacitanceGiven : 1;
|
unsigned VBICthermalCapacitanceGiven : 1;
|
||||||
unsigned VBICpunchThroughVoltageBCGiven : 1;
|
unsigned VBICpunchThroughVoltageBCGiven : 1;
|
||||||
unsigned VBICdeplCapCoeff1Given : 1;
|
unsigned VBICdeplCapCoeff1Given : 1;
|
||||||
|
|
@ -734,6 +736,7 @@ enum {
|
||||||
VBIC_MOD_VBE_MAX,
|
VBIC_MOD_VBE_MAX,
|
||||||
VBIC_MOD_VBC_MAX,
|
VBIC_MOD_VBC_MAX,
|
||||||
VBIC_MOD_VCE_MAX,
|
VBIC_MOD_VCE_MAX,
|
||||||
|
VBIC_MOD_SELFT,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* device questions */
|
/* device questions */
|
||||||
|
|
|
||||||
|
|
@ -369,6 +369,9 @@ VBICmAsk(CKTcircuit *ckt, GENmodel *instPtr, int which, IFvalue *value)
|
||||||
else
|
else
|
||||||
value->sValue = "pnp";
|
value->sValue = "pnp";
|
||||||
return(OK);
|
return(OK);
|
||||||
|
case VBIC_MOD_SELFT:
|
||||||
|
value->iValue = here->VBICselft;
|
||||||
|
return(OK);
|
||||||
default:
|
default:
|
||||||
return(E_BADPARM);
|
return(E_BADPARM);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -509,6 +509,10 @@ VBICmParam(int param, IFvalue *value, GENmodel *inModel)
|
||||||
mods->VBICvceMax = value->rValue;
|
mods->VBICvceMax = value->rValue;
|
||||||
mods->VBICvceMaxGiven = TRUE;
|
mods->VBICvceMaxGiven = TRUE;
|
||||||
break;
|
break;
|
||||||
|
case VBIC_MOD_SELFT:
|
||||||
|
mods->VBICselft = value->iValue;
|
||||||
|
mods->VBICselftGiven = TRUE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return(E_BADPARM);
|
return(E_BADPARM);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -391,6 +391,9 @@ VBICsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
||||||
if(!model->VBICvceMaxGiven) {
|
if(!model->VBICvceMaxGiven) {
|
||||||
model->VBICvceMax = 1e99;
|
model->VBICvceMax = 1e99;
|
||||||
}
|
}
|
||||||
|
if(!model->VBICselftGiven) {
|
||||||
|
model->VBICselft = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* loop through all the instances of the model */
|
/* loop through all the instances of the model */
|
||||||
for (here = VBICinstances(model); here != NULL ;
|
for (here = VBICinstances(model); here != NULL ;
|
||||||
|
|
@ -472,7 +475,8 @@ VBICsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((model->VBICthermalResistGiven) && (model->VBICthermalResist > 0.0))
|
if((model->VBICthermalResistGiven) && (model->VBICthermalResist > 0.0)
|
||||||
|
&& model->VBICselftGiven && model->VBICselft == 1)
|
||||||
here->VBIC_selfheat = 1;
|
here->VBIC_selfheat = 1;
|
||||||
else
|
else
|
||||||
here->VBIC_selfheat = 0;
|
here->VBIC_selfheat = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue