capacitance parameters cgdmin, cgdmax, a, cgs completely installed
This commit is contained in:
parent
eb1df52743
commit
389c888948
|
|
@ -107,6 +107,12 @@ IFparm VDMOSmPTable[] = { /* model parameters */
|
||||||
Xti Body diode saturation current temperature exponent
|
Xti Body diode saturation current temperature exponent
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* gate-source and gate-drain capacitances */
|
||||||
|
IOPA("cgdmin", VDMOS_MOD_CGDMIN, IF_REAL, "Minimum non-linear G-D capacitance"),
|
||||||
|
IOPA("cgdmax", VDMOS_MOD_CGDMAX, IF_REAL, "Maximum non-linear G-D capacitance"),
|
||||||
|
IOPA("a", VDMOS_MOD_A, IF_REAL, "Non-linear Cgd capacitance parameter"),
|
||||||
|
IOPA("cgs", VDMOS_MOD_CGS, IF_REAL, "Gate-source capacitance"),
|
||||||
|
|
||||||
IOP("tnom", VDMOS_MOD_TNOM, IF_REAL, "Parameter measurement temperature"),
|
IOP("tnom", VDMOS_MOD_TNOM, IF_REAL, "Parameter measurement temperature"),
|
||||||
IOP("kf", VDMOS_MOD_KF, IF_REAL, "Flicker noise coefficient"),
|
IOP("kf", VDMOS_MOD_KF, IF_REAL, "Flicker noise coefficient"),
|
||||||
IOP("af", VDMOS_MOD_AF, IF_REAL, "Flicker noise exponent"),
|
IOP("af", VDMOS_MOD_AF, IF_REAL, "Flicker noise exponent"),
|
||||||
|
|
|
||||||
|
|
@ -309,6 +309,10 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
||||||
double VDMOSsurfaceMobility; /* input - use tSurfMob */
|
double VDMOSsurfaceMobility; /* input - use tSurfMob */
|
||||||
double VDMOSfNcoef;
|
double VDMOSfNcoef;
|
||||||
double VDMOSfNexp;
|
double VDMOSfNexp;
|
||||||
|
double VDMOScgdmin;
|
||||||
|
double VDMOScgdmax;
|
||||||
|
double VDMOSa;
|
||||||
|
double VDMOScgs;
|
||||||
|
|
||||||
unsigned VDMOStypeGiven :1;
|
unsigned VDMOStypeGiven :1;
|
||||||
unsigned VDMOSlatDiffGiven :1;
|
unsigned VDMOSlatDiffGiven :1;
|
||||||
|
|
@ -342,6 +346,11 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
||||||
unsigned VDMOSfNcoefGiven :1;
|
unsigned VDMOSfNcoefGiven :1;
|
||||||
unsigned VDMOSfNexpGiven :1;
|
unsigned VDMOSfNexpGiven :1;
|
||||||
|
|
||||||
|
unsigned VDMOScgdminGiven :1;
|
||||||
|
unsigned VDMOScgdmaxGiven :1;
|
||||||
|
unsigned VDMOScgsGiven :1;
|
||||||
|
unsigned VDMOSaGiven :1;
|
||||||
|
|
||||||
} VDMOSmodel;
|
} VDMOSmodel;
|
||||||
|
|
||||||
#ifndef NMOS
|
#ifndef NMOS
|
||||||
|
|
@ -409,6 +418,10 @@ enum {
|
||||||
VDMOS_MOD_AF,
|
VDMOS_MOD_AF,
|
||||||
VDMOS_MOD_TYPE,
|
VDMOS_MOD_TYPE,
|
||||||
VDMOS_MOD_DMOS,
|
VDMOS_MOD_DMOS,
|
||||||
|
VDMOS_MOD_CGDMIN,
|
||||||
|
VDMOS_MOD_CGDMAX,
|
||||||
|
VDMOS_MOD_A,
|
||||||
|
VDMOS_MOD_CGS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* device questions */
|
/* device questions */
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,21 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
||||||
else
|
else
|
||||||
value->sValue = "vdmosp";
|
value->sValue = "vdmosp";
|
||||||
return(OK);
|
return(OK);
|
||||||
|
case VDMOS_MOD_CGDMIN:
|
||||||
|
value->rValue = model->VDMOScgdmin;
|
||||||
|
return(OK);
|
||||||
case VDMOS_MOD_CBS:
|
case VDMOS_MOD_CBS:
|
||||||
value->rValue = model->VDMOScapBS;
|
value->rValue = model->VDMOScapBS;
|
||||||
return(OK);
|
return(OK);
|
||||||
|
case VDMOS_MOD_CGDMAX:
|
||||||
|
value->rValue = model->VDMOScgdmax;
|
||||||
|
return(OK);
|
||||||
|
case VDMOS_MOD_A:
|
||||||
|
value->rValue = model->VDMOSa;
|
||||||
|
return(OK);
|
||||||
|
case VDMOS_MOD_CGS:
|
||||||
|
value->rValue = model->VDMOScgs;
|
||||||
|
return(OK);
|
||||||
case VDMOS_MOD_IS:
|
case VDMOS_MOD_IS:
|
||||||
value->rValue = model->VDMOSjctSatCur;
|
value->rValue = model->VDMOSjctSatCur;
|
||||||
return(OK);
|
return(OK);
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,22 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel)
|
||||||
model->VDMOStypeGiven = TRUE;
|
model->VDMOStypeGiven = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case VDMOS_MOD_CGDMIN:
|
||||||
|
model->VDMOScgdmin = value->rValue;
|
||||||
|
model->VDMOScgdminGiven = TRUE;
|
||||||
|
break;
|
||||||
|
case VDMOS_MOD_CGDMAX:
|
||||||
|
model->VDMOScgdmax = value->rValue;
|
||||||
|
model->VDMOScgdmaxGiven = TRUE;
|
||||||
|
break;
|
||||||
|
case VDMOS_MOD_A:
|
||||||
|
model->VDMOSa = value->rValue;
|
||||||
|
model->VDMOSaGiven = TRUE;
|
||||||
|
break;
|
||||||
|
case VDMOS_MOD_CGS:
|
||||||
|
model->VDMOScgs = value->rValue;
|
||||||
|
model->VDMOScgsGiven = TRUE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return(E_BADPARM);
|
return(E_BADPARM);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,18 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
||||||
if(!model->VDMOSfNexpGiven) {
|
if(!model->VDMOSfNexpGiven) {
|
||||||
model->VDMOSfNexp = 1;
|
model->VDMOSfNexp = 1;
|
||||||
}
|
}
|
||||||
|
if (!model->VDMOScgdminGiven) {
|
||||||
|
model->VDMOScgdmin = 0;
|
||||||
|
}
|
||||||
|
if (!model->VDMOScgdmaxGiven) {
|
||||||
|
model->VDMOScgdmax = 0;
|
||||||
|
}
|
||||||
|
if (!model->VDMOScgsGiven) {
|
||||||
|
model->VDMOScgs = 0;
|
||||||
|
}
|
||||||
|
if (!model->VDMOSaGiven) {
|
||||||
|
model->VDMOSa = 1.;
|
||||||
|
}
|
||||||
|
|
||||||
/* loop through all the instances of the model */
|
/* loop through all the instances of the model */
|
||||||
for (here = VDMOSinstances(model); here != NULL ;
|
for (here = VDMOSinstances(model); here != NULL ;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue