add nqsmod as model parameter for bsim3
This commit is contained in:
parent
9636d53ec4
commit
27ae680b99
|
|
@ -66,6 +66,7 @@ IFparm BSIM3mPTable[] = { /* model parameters */
|
|||
IOP( "capmod", BSIM3_MOD_CAPMOD, IF_INTEGER, "Capacitance model selector"),
|
||||
IOP( "mobmod", BSIM3_MOD_MOBMOD, IF_INTEGER, "Mobility model selector"),
|
||||
IOP( "noimod", BSIM3_MOD_NOIMOD, IF_INTEGER, "Noise model selector"),
|
||||
IOP( "nqsmod", BSIM3_MOD_NQSMOD, IF_INTEGER, "Non-quasi-static model selector"),
|
||||
IOP( "acnqsmod", BSIM3_MOD_ACNQSMOD, IF_INTEGER, "AC NQS model selector"),
|
||||
IOP( "acm", BSIM3_MOD_ACMMOD, IF_INTEGER, "Area calculation method selector"),
|
||||
IOP( "calcacm", BSIM3_MOD_CALCACM, IF_INTEGER, "Area calculation method ACM=12"),
|
||||
|
|
|
|||
|
|
@ -43,6 +43,9 @@ IFvalue *value)
|
|||
case BSIM3_MOD_NOIMOD:
|
||||
value->iValue = model->BSIM3noiMod;
|
||||
return(OK);
|
||||
case BSIM3_MOD_NQSMOD:
|
||||
value->iValue = model->BSIM3nqsMod;
|
||||
return(OK);
|
||||
case BSIM3_MOD_ACNQSMOD:
|
||||
value->iValue = model->BSIM3acnqsMod;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -51,11 +51,15 @@ GENmodel *inMod)
|
|||
mod->BSIM3noiMod = value->iValue;
|
||||
mod->BSIM3noiModGiven = TRUE;
|
||||
break;
|
||||
case BSIM3_MOD_NQSMOD :
|
||||
mod->BSIM3nqsMod = value->iValue;
|
||||
mod->BSIM3nqsModGiven = TRUE;
|
||||
break;
|
||||
case BSIM3_MOD_ACNQSMOD :
|
||||
mod->BSIM3acnqsMod = value->iValue;
|
||||
mod->BSIM3acnqsModGiven = TRUE;
|
||||
break;
|
||||
case BSIM3_MOD_VERSION :
|
||||
case BSIM3_MOD_VERSION :
|
||||
mod->BSIM3version = value->sValue;
|
||||
mod->BSIM3versionGiven = TRUE;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -67,6 +67,12 @@ BSIM3instance **InstArray;
|
|||
model->BSIM3calcacm = 0;
|
||||
if (!model->BSIM3noiModGiven)
|
||||
model->BSIM3noiMod = 1;
|
||||
if (!model->BSIM3nqsModGiven)
|
||||
model->BSIM3nqsMod = 0;
|
||||
else if ((model->BSIM3nqsMod != 0) && (model->BSIM3nqsMod != 1))
|
||||
{ model->BSIM3nqsMod = 0;
|
||||
printf("Warning: nqsMod has been set to its default value: 0.\n");
|
||||
}
|
||||
if (!model->BSIM3acnqsModGiven)
|
||||
model->BSIM3acnqsMod = 0;
|
||||
else if ((model->BSIM3acnqsMod != 0) && (model->BSIM3acnqsMod != 1))
|
||||
|
|
@ -934,7 +940,12 @@ BSIM3instance **InstArray;
|
|||
if (!here->BSIM3wGiven)
|
||||
here->BSIM3w = 5.0e-6;
|
||||
if (!here->BSIM3nqsModGiven)
|
||||
here->BSIM3nqsMod = 0;
|
||||
here->BSIM3nqsMod = model->BSIM3nqsMod;
|
||||
else if ((here->BSIM3nqsMod != 0) && (here->BSIM3nqsMod != 1))
|
||||
{ here->BSIM3nqsMod = model->BSIM3nqsMod;
|
||||
printf("Warning: nqsMod has been set to its global value %d.\n",
|
||||
model->BSIM3nqsMod);
|
||||
}
|
||||
if (!here->BSIM3acnqsModGiven)
|
||||
here->BSIM3acnqsMod = model->BSIM3acnqsMod;
|
||||
else if ((here->BSIM3acnqsMod != 0) && (here->BSIM3acnqsMod != 1))
|
||||
|
|
|
|||
|
|
@ -410,6 +410,7 @@ typedef struct sBSIM3model
|
|||
int BSIM3acmMod;
|
||||
int BSIM3calcacm;
|
||||
int BSIM3noiMod;
|
||||
int BSIM3nqsMod;
|
||||
int BSIM3acnqsMod;
|
||||
int BSIM3binUnit;
|
||||
int BSIM3paramChk;
|
||||
|
|
@ -876,6 +877,7 @@ typedef struct sBSIM3model
|
|||
unsigned BSIM3calcacmGiven :1;
|
||||
unsigned BSIM3paramChkGiven :1;
|
||||
unsigned BSIM3noiModGiven :1;
|
||||
unsigned BSIM3nqsModGiven :1;
|
||||
unsigned BSIM3acnqsModGiven :1;
|
||||
unsigned BSIM3typeGiven :1;
|
||||
unsigned BSIM3toxGiven :1;
|
||||
|
|
@ -1449,7 +1451,8 @@ typedef struct sBSIM3model
|
|||
#define BSIM3_MOD_TPBSWG 207
|
||||
#define BSIM3_MOD_VOFFCV 208
|
||||
#define BSIM3_MOD_LINTNOI 209
|
||||
#define BSIM3_MOD_ACNQSMOD 210
|
||||
#define BSIM3_MOD_NQSMOD 210
|
||||
#define BSIM3_MOD_ACNQSMOD 211
|
||||
|
||||
/* Length dependence */
|
||||
#define BSIM3_MOD_LCDSC 251
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ IFparm BSIM3v32mPTable[] = { /* model parameters */
|
|||
IOP( "capmod", BSIM3v32_MOD_CAPMOD, IF_INTEGER, "Capacitance model selector"),
|
||||
IOP( "mobmod", BSIM3v32_MOD_MOBMOD, IF_INTEGER, "Mobility model selector"),
|
||||
IOP( "noimod", BSIM3v32_MOD_NOIMOD, IF_INTEGER, "Noise model selector"),
|
||||
IOP( "nqsmod", BSIM3v32_MOD_NQSMOD, IF_INTEGER, "Non-quasi-static model selector"),
|
||||
IOP( "acm", BSIM3v32_MOD_ACMMOD, IF_INTEGER, "Area calculation method selector"),
|
||||
IOP( "calcacm", BSIM3v32_MOD_CALCACM, IF_INTEGER, "Area calculation method ACM=12"),
|
||||
IOP( "paramchk", BSIM3v32_MOD_PARAMCHK, IF_INTEGER, "Model parameter checking selector"),
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ BSIM3v32mAsk (CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
|
|||
case BSIM3v32_MOD_NOIMOD:
|
||||
value->iValue = model->BSIM3v32noiMod;
|
||||
return(OK);
|
||||
case BSIM3v32_MOD_NQSMOD:
|
||||
value->iValue = model->BSIM3v32nqsMod;
|
||||
return(OK);
|
||||
case BSIM3v32_MOD_ACMMOD:
|
||||
value->iValue = model->BSIM3v32acmMod;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ BSIM3v32mParam(int param, IFvalue *value, GENmodel *inMod)
|
|||
mod->BSIM3v32noiMod = value->iValue;
|
||||
mod->BSIM3v32noiModGiven = TRUE;
|
||||
break;
|
||||
case BSIM3v32_MOD_NQSMOD :
|
||||
mod->BSIM3v32nqsMod = value->iValue;
|
||||
mod->BSIM3v32nqsModGiven = TRUE;
|
||||
break;
|
||||
case BSIM3v32_MOD_VERSION :
|
||||
mod->BSIM3v32version = value->sValue;
|
||||
mod->BSIM3v32versionGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -58,6 +58,12 @@ IFuid tmpName;
|
|||
model->BSIM3v32calcacm = 0;
|
||||
if (!model->BSIM3v32noiModGiven)
|
||||
model->BSIM3v32noiMod = 1;
|
||||
if (!model->BSIM3v32nqsModGiven)
|
||||
model->BSIM3v32nqsMod = 0;
|
||||
else if ((model->BSIM3v32nqsMod != 0) && (model->BSIM3v32nqsMod != 1))
|
||||
{ model->BSIM3v32nqsMod = 0;
|
||||
printf("Warning: nqsMod has been set to its default value: 0.\n");
|
||||
}
|
||||
|
||||
/* If the user does not provide the model revision,
|
||||
* we always choose the most recent.
|
||||
|
|
@ -942,7 +948,12 @@ IFuid tmpName;
|
|||
if (!here->BSIM3v32wGiven)
|
||||
here->BSIM3v32w = 5.0e-6;
|
||||
if (!here->BSIM3v32nqsModGiven)
|
||||
here->BSIM3v32nqsMod = 0;
|
||||
here->BSIM3v32nqsMod = model->BSIM3v32nqsMod;
|
||||
else if ((here->BSIM3v32nqsMod != 0) && (here->BSIM3v32nqsMod != 1))
|
||||
{ here->BSIM3v32nqsMod = model->BSIM3v32nqsMod;
|
||||
printf("Warning: nqsMod has been set to its global value %d.\n",
|
||||
model->BSIM3v32nqsMod);
|
||||
}
|
||||
if (!here->BSIM3v32geoGiven)
|
||||
here->BSIM3v32geo = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -365,6 +365,7 @@ typedef struct sBSIM3v32model
|
|||
int BSIM3v32acmMod;
|
||||
int BSIM3v32calcacm;
|
||||
int BSIM3v32noiMod;
|
||||
int BSIM3v32nqsMod;
|
||||
int BSIM3v32binUnit;
|
||||
int BSIM3v32paramChk;
|
||||
char *BSIM3v32version;
|
||||
|
|
@ -831,6 +832,7 @@ typedef struct sBSIM3v32model
|
|||
unsigned BSIM3v32calcacmGiven :1;
|
||||
unsigned BSIM3v32paramChkGiven :1;
|
||||
unsigned BSIM3v32noiModGiven :1;
|
||||
unsigned BSIM3v32nqsModGiven :1;
|
||||
unsigned BSIM3v32typeGiven :1;
|
||||
unsigned BSIM3v32toxGiven :1;
|
||||
unsigned BSIM3v32versionGiven :1;
|
||||
|
|
@ -1292,22 +1294,23 @@ typedef struct sBSIM3v32model
|
|||
#define BSIM3v32_MOD_CALCACM 102
|
||||
#define BSIM3v32_MOD_MOBMOD 103
|
||||
#define BSIM3v32_MOD_NOIMOD 104
|
||||
#define BSIM3v32_MOD_NQSMOD 105
|
||||
|
||||
#define BSIM3v32_MOD_TOX 105
|
||||
#define BSIM3v32_MOD_TOX 106
|
||||
|
||||
#define BSIM3v32_MOD_CDSC 106
|
||||
#define BSIM3v32_MOD_CDSCB 107
|
||||
#define BSIM3v32_MOD_CIT 108
|
||||
#define BSIM3v32_MOD_NFACTOR 109
|
||||
#define BSIM3v32_MOD_XJ 110
|
||||
#define BSIM3v32_MOD_VSAT 111
|
||||
#define BSIM3v32_MOD_AT 112
|
||||
#define BSIM3v32_MOD_A0 113
|
||||
#define BSIM3v32_MOD_A1 114
|
||||
#define BSIM3v32_MOD_A2 115
|
||||
#define BSIM3v32_MOD_KETA 116
|
||||
#define BSIM3v32_MOD_NSUB 117
|
||||
#define BSIM3v32_MOD_NPEAK 118
|
||||
#define BSIM3v32_MOD_CDSC 107
|
||||
#define BSIM3v32_MOD_CDSCB 108
|
||||
#define BSIM3v32_MOD_CIT 109
|
||||
#define BSIM3v32_MOD_NFACTOR 110
|
||||
#define BSIM3v32_MOD_XJ 111
|
||||
#define BSIM3v32_MOD_VSAT 112
|
||||
#define BSIM3v32_MOD_AT 113
|
||||
#define BSIM3v32_MOD_A0 114
|
||||
#define BSIM3v32_MOD_A1 115
|
||||
#define BSIM3v32_MOD_A2 116
|
||||
#define BSIM3v32_MOD_KETA 117
|
||||
#define BSIM3v32_MOD_NSUB 118
|
||||
#define BSIM3v32_MOD_NPEAK 119
|
||||
#define BSIM3v32_MOD_NGATE 120
|
||||
#define BSIM3v32_MOD_GAMMA1 121
|
||||
#define BSIM3v32_MOD_GAMMA2 122
|
||||
|
|
@ -1316,7 +1319,7 @@ typedef struct sBSIM3v32model
|
|||
|
||||
#define BSIM3v32_MOD_VBM 125
|
||||
|
||||
#define BSIM3v32_MOD_XT 126
|
||||
#define BSIM3v32_MOD_XT 128
|
||||
#define BSIM3v32_MOD_K1 129
|
||||
#define BSIM3v32_MOD_KT1 130
|
||||
#define BSIM3v32_MOD_KT1L 131
|
||||
|
|
|
|||
Loading…
Reference in New Issue