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
|
||||
*/
|
||||
|
||||
/* 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("kf", VDMOS_MOD_KF, IF_REAL, "Flicker noise coefficient"),
|
||||
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 VDMOSfNcoef;
|
||||
double VDMOSfNexp;
|
||||
double VDMOScgdmin;
|
||||
double VDMOScgdmax;
|
||||
double VDMOSa;
|
||||
double VDMOScgs;
|
||||
|
||||
unsigned VDMOStypeGiven :1;
|
||||
unsigned VDMOSlatDiffGiven :1;
|
||||
|
|
@ -342,6 +346,11 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */
|
|||
unsigned VDMOSfNcoefGiven :1;
|
||||
unsigned VDMOSfNexpGiven :1;
|
||||
|
||||
unsigned VDMOScgdminGiven :1;
|
||||
unsigned VDMOScgdmaxGiven :1;
|
||||
unsigned VDMOScgsGiven :1;
|
||||
unsigned VDMOSaGiven :1;
|
||||
|
||||
} VDMOSmodel;
|
||||
|
||||
#ifndef NMOS
|
||||
|
|
@ -409,6 +418,10 @@ enum {
|
|||
VDMOS_MOD_AF,
|
||||
VDMOS_MOD_TYPE,
|
||||
VDMOS_MOD_DMOS,
|
||||
VDMOS_MOD_CGDMIN,
|
||||
VDMOS_MOD_CGDMAX,
|
||||
VDMOS_MOD_A,
|
||||
VDMOS_MOD_CGS,
|
||||
};
|
||||
|
||||
/* device questions */
|
||||
|
|
|
|||
|
|
@ -54,9 +54,21 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
else
|
||||
value->sValue = "vdmosp";
|
||||
return(OK);
|
||||
case VDMOS_MOD_CGDMIN:
|
||||
value->rValue = model->VDMOScgdmin;
|
||||
return(OK);
|
||||
case VDMOS_MOD_CBS:
|
||||
value->rValue = model->VDMOScapBS;
|
||||
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:
|
||||
value->rValue = model->VDMOSjctSatCur;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -153,6 +153,22 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel)
|
|||
model->VDMOStypeGiven = TRUE;
|
||||
}
|
||||
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:
|
||||
return(E_BADPARM);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,18 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt,
|
|||
if(!model->VDMOSfNexpGiven) {
|
||||
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 */
|
||||
for (here = VDMOSinstances(model); here != NULL ;
|
||||
|
|
|
|||
Loading…
Reference in New Issue