missing model parameters added
This commit is contained in:
parent
0dc0aa06c4
commit
a4dc84ae35
|
|
@ -90,12 +90,12 @@ IFparm VDMOSmPTable[] = { /* model parameters */
|
|||
IOP("rd", VDMOS_MOD_RD, IF_REAL, "Drain ohmic resistance"),
|
||||
IOP("rs", VDMOS_MOD_RS, IF_REAL, "Source ohmic resistance"),
|
||||
IOP("rg", VDMOS_MOD_RG, IF_REAL, "Gate ohmic resistance"),
|
||||
/*
|
||||
N Bulk diode emission coefficient
|
||||
tt Body diode transit time
|
||||
Eg Body diode activation energy for temperature effect on Is
|
||||
Xti Body diode saturation current temperature exponent
|
||||
*/
|
||||
|
||||
/* body diode */
|
||||
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"),
|
||||
IOP("Xti", VDMOS_MOD_XTI, IF_REAL, "Body diode saturation current temperature exponent"),
|
||||
IOP("is", VDMOS_MOD_IS, IF_REAL, "Body diode saturation current"),
|
||||
IOP("vj", VDMOS_MOD_VJ, IF_REAL, "Body diode junction potential"),
|
||||
|
||||
|
|
|
|||
|
|
@ -299,6 +299,11 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
|||
double VDMOSa;
|
||||
double VDMOScgs;
|
||||
|
||||
double VDMOSDn;
|
||||
double VDIOtransitTime;
|
||||
double VDMOSDeg;
|
||||
double VDMOSDxti;
|
||||
|
||||
unsigned VDMOStypeGiven :1;
|
||||
unsigned VDMOSjctSatCurGiven :1;
|
||||
unsigned VDMOSdrainResistanceGiven :1;
|
||||
|
|
@ -320,6 +325,11 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
|||
unsigned VDMOScgsGiven :1;
|
||||
unsigned VDMOSaGiven :1;
|
||||
|
||||
unsigned VDMOSDnGiven :1;
|
||||
unsigned VDIOtransitTimeGiven :1;
|
||||
unsigned VDMOSDegGiven :1;
|
||||
unsigned VDMOSDxtiGiven :1;
|
||||
|
||||
} VDMOSmodel;
|
||||
|
||||
#ifndef NMOS
|
||||
|
|
@ -369,6 +379,10 @@ enum {
|
|||
VDMOS_MOD_CGDMAX,
|
||||
VDMOS_MOD_A,
|
||||
VDMOS_MOD_CGS,
|
||||
VDMOS_MOD_N,
|
||||
VDMOS_MOD_TT,
|
||||
VDMOS_MOD_EG,
|
||||
VDMOS_MOD_XTI,
|
||||
};
|
||||
|
||||
/* device questions */
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
case VDMOS_MOD_IS:
|
||||
value->rValue = model->VDMOSjctSatCur;
|
||||
return(OK);
|
||||
case VDMOS_MOD_N:
|
||||
value->rValue = model->VDMOSDn;
|
||||
return(OK);
|
||||
case VDMOS_MOD_VJ:
|
||||
value->rValue = model->VDMOSbulkJctPotential;
|
||||
return(OK);
|
||||
|
|
@ -75,6 +78,15 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
case VDMOS_MOD_FC:
|
||||
value->rValue = model->VDMOSfwdCapDepCoeff;
|
||||
return(OK);
|
||||
case VDMOS_MOD_TT:
|
||||
value->rValue = model->VDIOtransitTime;
|
||||
return(OK);
|
||||
case VDMOS_MOD_EG:
|
||||
value->rValue = model->VDMOSDeg;
|
||||
return(OK);
|
||||
case VDMOS_MOD_XTI:
|
||||
value->rValue = model->VDMOSDxti;
|
||||
return(OK);
|
||||
default:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,22 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel)
|
|||
model->VDMOScgs = value->rValue;
|
||||
model->VDMOScgsGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_N:
|
||||
model->VDMOSDn = value->rValue;
|
||||
model->VDMOSDnGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_TT:
|
||||
model->VDIOtransitTime = value->rValue;
|
||||
model->VDIOtransitTimeGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_EG:
|
||||
model->VDMOSDeg = value->rValue;
|
||||
model->VDMOSDegGiven = TRUE;
|
||||
break;
|
||||
case VDMOS_MOD_XTI:
|
||||
model->VDMOSDxti = value->rValue;
|
||||
model->VDMOSDxtiGiven = TRUE;
|
||||
break;
|
||||
default:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,6 +72,15 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
|||
if (!model->VDMOSaGiven) {
|
||||
model->VDMOSa = 1.;
|
||||
}
|
||||
if (!model->VDMOSDnGiven) {
|
||||
model->VDMOSDn = 1.;
|
||||
}
|
||||
if (!model->VDIOtransitTimeGiven) {
|
||||
model->VDIOtransitTime = 0.;
|
||||
}
|
||||
if (!model->VDMOSDegGiven) {
|
||||
model->VDMOSDeg = 1.11;
|
||||
}
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = VDMOSinstances(model); here != NULL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue