Browse Source

devices/bsim3, devices/bsim3v32: add `nqsmod' as model parameter

pre-master-46
dwarning 13 years ago
committed by rlar
parent
commit
2b6737e164
  1. 1
      src/spicelib/devices/bsim3/b3.c
  2. 3
      src/spicelib/devices/bsim3/b3mask.c
  3. 4
      src/spicelib/devices/bsim3/b3mpar.c
  4. 13
      src/spicelib/devices/bsim3/b3set.c
  5. 5
      src/spicelib/devices/bsim3/bsim3def.h
  6. 1
      src/spicelib/devices/bsim3v32/b3v32.c
  7. 3
      src/spicelib/devices/bsim3v32/b3v32mask.c
  8. 4
      src/spicelib/devices/bsim3v32/b3v32mpar.c
  9. 13
      src/spicelib/devices/bsim3v32/b3v32set.c
  10. 37
      src/spicelib/devices/bsim3v32/bsim3v32def.h

1
src/spicelib/devices/bsim3/b3.c

@ -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"),

3
src/spicelib/devices/bsim3/b3mask.c

@ -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);

4
src/spicelib/devices/bsim3/b3mpar.c

@ -51,6 +51,10 @@ 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;

13
src/spicelib/devices/bsim3/b3set.c

@ -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))

5
src/spicelib/devices/bsim3/bsim3def.h

@ -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

1
src/spicelib/devices/bsim3v32/b3v32.c

@ -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"),

3
src/spicelib/devices/bsim3v32/b3v32mask.c

@ -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);

4
src/spicelib/devices/bsim3v32/b3v32mpar.c

@ -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;

13
src/spicelib/devices/bsim3v32/b3v32set.c

@ -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;

37
src/spicelib/devices/bsim3v32/bsim3v32def.h

@ -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_TOX 105
#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_NQSMOD 105
#define BSIM3v32_MOD_TOX 106
#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…
Cancel
Save