missing model parameters added
This commit is contained in:
parent
a4dc84ae35
commit
1ce7fef519
|
|
@ -92,6 +92,10 @@ IFparm VDMOSmPTable[] = { /* model parameters */
|
|||
IOP("rg", VDMOS_MOD_RG, IF_REAL, "Gate ohmic resistance"),
|
||||
|
||||
/* body diode */
|
||||
IOP("bv", VDMOS_MOD_BV, IF_REAL, "Vds breakdown voltage"),
|
||||
IOP("ibv", VDMOS_MOD_IBV, IF_REAL, "Current at Vds=bv"),
|
||||
IOP("nbv", VDMOS_MOD_NBV, IF_REAL, "Vds breakdown emission coefficient"),
|
||||
IOP("rb", VDMOS_MOD_RB, IF_REAL, "Body diode ohmic resistance"),
|
||||
IOP("n", VDMOS_MOD_N, IF_REAL, "Bulk diode emission coefficient"),
|
||||
IOP("tt", VDMOS_MOD_TT, IF_REAL, "Body diode transit time"),
|
||||
IOP("eg", VDMOS_MOD_EG, IF_REAL, "Body diode activation energy for temperature effect on Is"),
|
||||
|
|
|
|||
|
|
@ -299,6 +299,12 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
|||
double VDMOSa;
|
||||
double VDMOScgs;
|
||||
|
||||
double VDMOSDbv;
|
||||
double VDMOSDibv;
|
||||
double VDIObrkdEmissionCoeff;
|
||||
double VDIOresistance;
|
||||
double VDIOresistTemp1;
|
||||
double VDIOresistTemp2;
|
||||
double VDMOSDn;
|
||||
double VDIOtransitTime;
|
||||
double VDMOSDeg;
|
||||
|
|
@ -325,6 +331,10 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
|||
unsigned VDMOScgsGiven :1;
|
||||
unsigned VDMOSaGiven :1;
|
||||
|
||||
unsigned VDMOSDbvGiven :1;
|
||||
unsigned VDMOSDibvGiven :1;
|
||||
unsigned VDIObrkdEmissionCoeffGiven :1;
|
||||
unsigned VDIOresistanceGiven :1;
|
||||
unsigned VDMOSDnGiven :1;
|
||||
unsigned VDIOtransitTimeGiven :1;
|
||||
unsigned VDMOSDegGiven :1;
|
||||
|
|
@ -379,6 +389,10 @@ enum {
|
|||
VDMOS_MOD_CGDMAX,
|
||||
VDMOS_MOD_A,
|
||||
VDMOS_MOD_CGS,
|
||||
VDMOS_MOD_RB,
|
||||
VDMOS_MOD_BV,
|
||||
VDMOS_MOD_IBV,
|
||||
VDMOS_MOD_NBV,
|
||||
VDMOS_MOD_N,
|
||||
VDMOS_MOD_TT,
|
||||
VDMOS_MOD_EG,
|
||||
|
|
|
|||
|
|
@ -63,6 +63,11 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
case VDMOS_MOD_CGS:
|
||||
value->rValue = model->VDMOScgs;
|
||||
return(OK);
|
||||
|
||||
/* body diode */
|
||||
case VDMOS_MOD_RB:
|
||||
value->rValue = model->VDIOresistance;
|
||||
return(OK);
|
||||
case VDMOS_MOD_IS:
|
||||
value->rValue = model->VDMOSjctSatCur;
|
||||
return(OK);
|
||||
|
|
@ -75,6 +80,15 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
case VDMOS_MOD_MJ:
|
||||
value->rValue = model->VDMOSbulkJctBotGradingCoeff;
|
||||
return(OK);
|
||||
case VDMOS_MOD_BV:
|
||||
value->rValue = model->VDMOSDbv;
|
||||
return(OK);
|
||||
case VDMOS_MOD_IBV:
|
||||
value->rValue = model->VDMOSDibv;
|
||||
return(OK);
|
||||
case VDMOS_MOD_NBV:
|
||||
value->rValue = model->VDIObrkdEmissionCoeff;
|
||||
return(OK);
|
||||
case VDMOS_MOD_FC:
|
||||
value->rValue = model->VDMOSfwdCapDepCoeff;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -47,6 +47,12 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel)
|
|||
model->VDMOSgateResistance = value->rValue;
|
||||
model->VDMOSgateResistanceGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_RB:
|
||||
model->VDIOresistance = value->rValue;
|
||||
model->VDIOresistanceGiven = TRUE;
|
||||
model->VDIOresistTemp1 = 0;
|
||||
model->VDIOresistTemp2 = 0;
|
||||
break;
|
||||
case VDMOS_MOD_IS:
|
||||
model->VDMOSjctSatCur = value->rValue;
|
||||
model->VDMOSjctSatCurGiven = TRUE;
|
||||
|
|
@ -105,6 +111,18 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel)
|
|||
model->VDMOScgs = value->rValue;
|
||||
model->VDMOScgsGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_BV:
|
||||
model->VDMOSDbv = value->rValue;
|
||||
model->VDMOSDbvGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_IBV:
|
||||
model->VDMOSDibv = value->rValue;
|
||||
model->VDMOSDibvGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_NBV:
|
||||
model->VDIObrkdEmissionCoeff = value->rValue;
|
||||
model->VDIObrkdEmissionCoeffGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_N:
|
||||
model->VDMOSDn = value->rValue;
|
||||
model->VDMOSDnGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,15 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
|||
if (!model->VDMOSaGiven) {
|
||||
model->VDMOSa = 1.;
|
||||
}
|
||||
if (!model->VDMOSDbvGiven) {
|
||||
model->VDMOSDbv = 1.0e30;
|
||||
}
|
||||
if (!model->VDMOSDibvGiven) {
|
||||
model->VDMOSDibv = 1.0e-10;
|
||||
}
|
||||
if (!model->VDIObrkdEmissionCoeffGiven) {
|
||||
model->VDIObrkdEmissionCoeff = 1.;
|
||||
}
|
||||
if (!model->VDMOSDnGiven) {
|
||||
model->VDMOSDn = 1.;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue