add `rgeomod' as model parameter for bsim4
This commit is contained in:
parent
2dcea6d7c1
commit
e0a4373553
|
|
@ -124,6 +124,7 @@ IOP( "rbodymod", BSIM4_MOD_RBODYMOD, IF_INTEGER, "Distributed body R model selec
|
|||
IOP( "rgatemod", BSIM4_MOD_RGATEMOD, IF_INTEGER, "Gate R model selector"),
|
||||
IOP( "permod", BSIM4_MOD_PERMOD, IF_INTEGER, "Pd and Ps model selector"),
|
||||
IOP( "geomod", BSIM4_MOD_GEOMOD, IF_INTEGER, "Geometry dependent parasitics model selector"),
|
||||
IOP( "rgeomod", BSIM4_MOD_RGEOMOD, IF_INTEGER, "S/D resistance and contact model selector"),
|
||||
IOP( "fnoimod", BSIM4_MOD_FNOIMOD, IF_INTEGER, "Flicker noise model selector"),
|
||||
IOP( "tnoimod", BSIM4_MOD_TNOIMOD, IF_INTEGER, "Thermal noise model selector"),
|
||||
IOP( "mtrlmod", BSIM4_MOD_MTRLMOD, IF_INTEGER, "parameter for non-silicon substrate or metal gate selector"),
|
||||
|
|
|
|||
|
|
@ -84,6 +84,9 @@ IFvalue *value)
|
|||
case BSIM4_MOD_GEOMOD :
|
||||
value->iValue = model->BSIM4geoMod;
|
||||
return(OK);
|
||||
case BSIM4_MOD_RGEOMOD :
|
||||
value->iValue = model->BSIM4rgeoMod;
|
||||
return(OK);
|
||||
case BSIM4_MOD_MTRLMOD :
|
||||
value->iValue = model->BSIM4mtrlMod;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -88,6 +88,10 @@ GENmodel *inMod)
|
|||
mod->BSIM4geoMod = value->iValue;
|
||||
mod->BSIM4geoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4_MOD_RGEOMOD :
|
||||
mod->BSIM4rgeoMod = value->iValue;
|
||||
mod->BSIM4rgeoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4_MOD_FNOIMOD :
|
||||
mod->BSIM4fnoiMod = value->iValue;
|
||||
mod->BSIM4fnoiModGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -139,6 +139,12 @@ BSIM4instance **InstArray;
|
|||
if (!model->BSIM4geoModGiven)
|
||||
model->BSIM4geoMod = 0;
|
||||
|
||||
if (!model->BSIM4rgeoModGiven)
|
||||
model->BSIM4rgeoMod = 0;
|
||||
else if ((model->BSIM4rgeoMod != 0) && (model->BSIM4rgeoMod != 1))
|
||||
{ model->BSIM4rgeoMod = 1;
|
||||
printf("Warning: rgeoMod has been set to its default value: 1.\n");
|
||||
}
|
||||
if (!model->BSIM4fnoiModGiven)
|
||||
model->BSIM4fnoiMod = 1;
|
||||
else if ((model->BSIM4fnoiMod != 0) && (model->BSIM4fnoiMod != 1))
|
||||
|
|
@ -2250,8 +2256,15 @@ BSIM4instance **InstArray;
|
|||
|
||||
if (!here->BSIM4geoModGiven)
|
||||
here->BSIM4geoMod = model->BSIM4geoMod;
|
||||
|
||||
if (!here->BSIM4rgeoModGiven)
|
||||
here->BSIM4rgeoMod = 0;
|
||||
here->BSIM4rgeoMod = model->BSIM4rgeoMod;
|
||||
else if ((here->BSIM4rgeoMod != 0) && (here->BSIM4rgeoMod != 1))
|
||||
{ here->BSIM4rgeoMod = model->BSIM4rgeoMod;
|
||||
printf("Warning: rgeoMod has been set to its global value %d.\n",
|
||||
model->BSIM4rgeoMod);
|
||||
}
|
||||
|
||||
if (!here->BSIM4trnqsModGiven)
|
||||
here->BSIM4trnqsMod = model->BSIM4trnqsMod;
|
||||
else if ((here->BSIM4trnqsMod != 0) && (here->BSIM4trnqsMod != 1))
|
||||
|
|
|
|||
|
|
@ -830,6 +830,7 @@ typedef struct sBSIM4model
|
|||
int BSIM4rgateMod;
|
||||
int BSIM4perMod;
|
||||
int BSIM4geoMod;
|
||||
int BSIM4rgeoMod;
|
||||
int BSIM4mtrlMod;
|
||||
int BSIM4mtrlCompatMod; /* v4.7 */
|
||||
int BSIM4gidlMod; /* v4.7 New GIDL/GISL */
|
||||
|
|
@ -1781,6 +1782,7 @@ typedef struct sBSIM4model
|
|||
unsigned BSIM4rgateModGiven :1;
|
||||
unsigned BSIM4perModGiven :1;
|
||||
unsigned BSIM4geoModGiven :1;
|
||||
unsigned BSIM4rgeoModGiven :1;
|
||||
unsigned BSIM4paramChkGiven :1;
|
||||
unsigned BSIM4trnqsModGiven :1;
|
||||
unsigned BSIM4acnqsModGiven :1;
|
||||
|
|
@ -2732,30 +2734,31 @@ typedef struct sBSIM4model
|
|||
#define BSIM4_M 38
|
||||
|
||||
/* Global parameters */
|
||||
#define BSIM4_MOD_TEMPEOT 66
|
||||
#define BSIM4_MOD_LEFFEOT 67
|
||||
#define BSIM4_MOD_WEFFEOT 68
|
||||
#define BSIM4_MOD_UCSTE 69
|
||||
#define BSIM4_MOD_LUCSTE 70
|
||||
#define BSIM4_MOD_WUCSTE 71
|
||||
#define BSIM4_MOD_PUCSTE 72
|
||||
#define BSIM4_MOD_UCS 73
|
||||
#define BSIM4_MOD_LUCS 74
|
||||
#define BSIM4_MOD_WUCS 75
|
||||
#define BSIM4_MOD_PUCS 76
|
||||
#define BSIM4_MOD_CVCHARGEMOD 77
|
||||
#define BSIM4_MOD_ADOS 78
|
||||
#define BSIM4_MOD_BDOS 79
|
||||
#define BSIM4_MOD_TEMPMOD 80
|
||||
#define BSIM4_MOD_MTRLMOD 81
|
||||
#define BSIM4_MOD_IGCMOD 82
|
||||
#define BSIM4_MOD_IGBMOD 83
|
||||
#define BSIM4_MOD_ACNQSMOD 84
|
||||
#define BSIM4_MOD_FNOIMOD 85
|
||||
#define BSIM4_MOD_RDSMOD 86
|
||||
#define BSIM4_MOD_DIOMOD 87
|
||||
#define BSIM4_MOD_PERMOD 88
|
||||
#define BSIM4_MOD_GEOMOD 89
|
||||
#define BSIM4_MOD_TEMPEOT 65
|
||||
#define BSIM4_MOD_LEFFEOT 66
|
||||
#define BSIM4_MOD_WEFFEOT 67
|
||||
#define BSIM4_MOD_UCSTE 68
|
||||
#define BSIM4_MOD_LUCSTE 69
|
||||
#define BSIM4_MOD_WUCSTE 70
|
||||
#define BSIM4_MOD_PUCSTE 71
|
||||
#define BSIM4_MOD_UCS 72
|
||||
#define BSIM4_MOD_LUCS 73
|
||||
#define BSIM4_MOD_WUCS 74
|
||||
#define BSIM4_MOD_PUCS 75
|
||||
#define BSIM4_MOD_CVCHARGEMOD 76
|
||||
#define BSIM4_MOD_ADOS 77
|
||||
#define BSIM4_MOD_BDOS 78
|
||||
#define BSIM4_MOD_TEMPMOD 79
|
||||
#define BSIM4_MOD_MTRLMOD 80
|
||||
#define BSIM4_MOD_IGCMOD 81
|
||||
#define BSIM4_MOD_IGBMOD 82
|
||||
#define BSIM4_MOD_ACNQSMOD 83
|
||||
#define BSIM4_MOD_FNOIMOD 84
|
||||
#define BSIM4_MOD_RDSMOD 85
|
||||
#define BSIM4_MOD_DIOMOD 86
|
||||
#define BSIM4_MOD_PERMOD 87
|
||||
#define BSIM4_MOD_GEOMOD 88
|
||||
#define BSIM4_MOD_RGEOMOD 89
|
||||
#define BSIM4_MOD_RGATEMOD 90
|
||||
#define BSIM4_MOD_RBODYMOD 91
|
||||
#define BSIM4_MOD_CAPMOD 92
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ IOP( "rbodymod", BSIM4v5_MOD_RBODYMOD, IF_INTEGER, "Distributed body R model sel
|
|||
IOP( "rgatemod", BSIM4v5_MOD_RGATEMOD, IF_INTEGER, "Gate R model selector"),
|
||||
IOP( "permod", BSIM4v5_MOD_PERMOD, IF_INTEGER, "Pd and Ps model selector"),
|
||||
IOP( "geomod", BSIM4v5_MOD_GEOMOD, IF_INTEGER, "Geometry dependent parasitics model selector"),
|
||||
IOP( "rgeomod", BSIM4v5_MOD_RGEOMOD, IF_INTEGER, "S/D resistance and contact model selector"),
|
||||
IOP( "fnoimod", BSIM4v5_MOD_FNOIMOD, IF_INTEGER, "Flicker noise model selector"),
|
||||
IOP( "tnoimod", BSIM4v5_MOD_TNOIMOD, IF_INTEGER, "Thermal noise model selector"),
|
||||
IOP( "igcmod", BSIM4v5_MOD_IGCMOD, IF_INTEGER, "Gate-to-channel Ig model selector"),
|
||||
|
|
|
|||
|
|
@ -76,6 +76,9 @@ IFvalue *value)
|
|||
case BSIM4v5_MOD_GEOMOD :
|
||||
value->iValue = model->BSIM4v5geoMod;
|
||||
return(OK);
|
||||
case BSIM4v5_MOD_RGEOMOD :
|
||||
value->iValue = model->BSIM4v5rgeoMod;
|
||||
return(OK);
|
||||
case BSIM4v5_MOD_IGCMOD :
|
||||
value->iValue = model->BSIM4v5igcMod;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ GENmodel *inMod)
|
|||
mod->BSIM4v5geoMod = value->iValue;
|
||||
mod->BSIM4v5geoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4v5_MOD_RGEOMOD :
|
||||
mod->BSIM4v5rgeoMod = value->iValue;
|
||||
mod->BSIM4v5rgeoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4v5_MOD_FNOIMOD :
|
||||
mod->BSIM4v5fnoiMod = value->iValue;
|
||||
mod->BSIM4v5fnoiModGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -122,6 +122,13 @@ JOB *job;
|
|||
if (!model->BSIM4v5geoModGiven)
|
||||
model->BSIM4v5geoMod = 0;
|
||||
|
||||
if (!model->BSIM4v5rgeoModGiven)
|
||||
model->BSIM4v5rgeoMod = 0;
|
||||
else if ((model->BSIM4v5rgeoMod != 0) && (model->BSIM4v5rgeoMod != 1))
|
||||
{ model->BSIM4v5rgeoMod = 1;
|
||||
printf("Warning: rgeoMod has been set to its default value: 1.\n");
|
||||
}
|
||||
|
||||
if (!model->BSIM4v5fnoiModGiven)
|
||||
model->BSIM4v5fnoiMod = 1;
|
||||
else if ((model->BSIM4v5fnoiMod != 0) && (model->BSIM4v5fnoiMod != 1))
|
||||
|
|
@ -1735,8 +1742,14 @@ JOB *job;
|
|||
|
||||
if (!here->BSIM4v5geoModGiven)
|
||||
here->BSIM4v5geoMod = model->BSIM4v5geoMod;
|
||||
|
||||
if (!here->BSIM4v5rgeoModGiven)
|
||||
here->BSIM4v5rgeoMod = 0;
|
||||
here->BSIM4v5rgeoMod = model->BSIM4v5rgeoMod;
|
||||
else if ((here->BSIM4v5rgeoMod != 0) && (here->BSIM4v5rgeoMod != 1))
|
||||
{ here->BSIM4v5rgeoMod = model->BSIM4v5rgeoMod;
|
||||
printf("Warning: rgeoMod has been set to its global value %d.\n",
|
||||
model->BSIM4v5rgeoMod);
|
||||
}
|
||||
if (!here->BSIM4v5trnqsModGiven)
|
||||
here->BSIM4v5trnqsMod = model->BSIM4v5trnqsMod;
|
||||
else if ((here->BSIM4v5trnqsMod != 0) && (here->BSIM4v5trnqsMod != 1))
|
||||
|
|
|
|||
|
|
@ -673,6 +673,7 @@ typedef struct sBSIM4v5model
|
|||
int BSIM4v5rgateMod;
|
||||
int BSIM4v5perMod;
|
||||
int BSIM4v5geoMod;
|
||||
int BSIM4v5rgeoMod;
|
||||
int BSIM4v5igcMod;
|
||||
int BSIM4v5igbMod;
|
||||
int BSIM4v5tempMod;
|
||||
|
|
@ -1486,6 +1487,7 @@ typedef struct sBSIM4v5model
|
|||
unsigned BSIM4v5rgateModGiven :1;
|
||||
unsigned BSIM4v5perModGiven :1;
|
||||
unsigned BSIM4v5geoModGiven :1;
|
||||
unsigned BSIM4v5rgeoModGiven :1;
|
||||
unsigned BSIM4v5paramChkGiven :1;
|
||||
unsigned BSIM4v5trnqsModGiven :1;
|
||||
unsigned BSIM4v5acnqsModGiven :1;
|
||||
|
|
@ -2310,9 +2312,10 @@ typedef struct sBSIM4v5model
|
|||
#define BSIM4v5_MOD_ACNQSMOD 92
|
||||
#define BSIM4v5_MOD_FNOIMOD 93
|
||||
#define BSIM4v5_MOD_RDSMOD 94
|
||||
#define BSIM4v5_MOD_DIOMOD 96
|
||||
#define BSIM4v5_MOD_PERMOD 97
|
||||
#define BSIM4v5_MOD_GEOMOD 98
|
||||
#define BSIM4v5_MOD_DIOMOD 95
|
||||
#define BSIM4v5_MOD_PERMOD 96
|
||||
#define BSIM4v5_MOD_GEOMOD 97
|
||||
#define BSIM4v5_MOD_RGEOMOD 98
|
||||
#define BSIM4v5_MOD_RGATEMOD 99
|
||||
#define BSIM4v5_MOD_RBODYMOD 100
|
||||
#define BSIM4v5_MOD_CAPMOD 101
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@ IOP( "rbodymod", BSIM4v6_MOD_RBODYMOD, IF_INTEGER, "Distributed body R model sel
|
|||
IOP( "rgatemod", BSIM4v6_MOD_RGATEMOD, IF_INTEGER, "Gate R model selector"),
|
||||
IOP( "permod", BSIM4v6_MOD_PERMOD, IF_INTEGER, "Pd and Ps model selector"),
|
||||
IOP( "geomod", BSIM4v6_MOD_GEOMOD, IF_INTEGER, "Geometry dependent parasitics model selector"),
|
||||
IOP( "rgeomod", BSIM4v6_MOD_RGEOMOD, IF_INTEGER, "S/D resistance and contact model selector"),
|
||||
IOP( "fnoimod", BSIM4v6_MOD_FNOIMOD, IF_INTEGER, "Flicker noise model selector"),
|
||||
IOP( "tnoimod", BSIM4v6_MOD_TNOIMOD, IF_INTEGER, "Thermal noise model selector"),
|
||||
IOP( "mtrlmod", BSIM4v6_MOD_MTRLMOD, IF_INTEGER, "parameter for non-silicon substrate or metal gate selector"),
|
||||
|
|
|
|||
|
|
@ -83,6 +83,9 @@ IFvalue *value)
|
|||
case BSIM4v6_MOD_GEOMOD :
|
||||
value->iValue = model->BSIM4v6geoMod;
|
||||
return(OK);
|
||||
case BSIM4v6_MOD_RGEOMOD :
|
||||
value->iValue = model->BSIM4v6rgeoMod;
|
||||
return(OK);
|
||||
case BSIM4v6_MOD_MTRLMOD :
|
||||
value->iValue = model->BSIM4v6mtrlMod;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -87,6 +87,10 @@ GENmodel *inMod)
|
|||
mod->BSIM4v6geoMod = value->iValue;
|
||||
mod->BSIM4v6geoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4v6_MOD_RGEOMOD :
|
||||
mod->BSIM4v6rgeoMod = value->iValue;
|
||||
mod->BSIM4v6rgeoModGiven = TRUE;
|
||||
break;
|
||||
case BSIM4v6_MOD_FNOIMOD :
|
||||
mod->BSIM4v6fnoiMod = value->iValue;
|
||||
mod->BSIM4v6fnoiModGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -140,6 +140,12 @@ BSIM4v6instance **InstArray;
|
|||
if (!model->BSIM4v6geoModGiven)
|
||||
model->BSIM4v6geoMod = 0;
|
||||
|
||||
if (!model->BSIM4v6rgeoModGiven)
|
||||
model->BSIM4v6rgeoMod = 0;
|
||||
else if ((model->BSIM4v6rgeoMod != 0) && (model->BSIM4v6rgeoMod != 1))
|
||||
{ model->BSIM4v6rgeoMod = 1;
|
||||
printf("Warning: rgeoMod has been set to its default value: 1.\n");
|
||||
}
|
||||
if (!model->BSIM4v6fnoiModGiven)
|
||||
model->BSIM4v6fnoiMod = 1;
|
||||
else if ((model->BSIM4v6fnoiMod != 0) && (model->BSIM4v6fnoiMod != 1))
|
||||
|
|
@ -2099,8 +2105,14 @@ BSIM4v6instance **InstArray;
|
|||
|
||||
if (!here->BSIM4v6geoModGiven)
|
||||
here->BSIM4v6geoMod = model->BSIM4v6geoMod;
|
||||
|
||||
if (!here->BSIM4v6rgeoModGiven)
|
||||
here->BSIM4v6rgeoMod = 0;
|
||||
here->BSIM4v6rgeoMod = model->BSIM4v6rgeoMod;
|
||||
else if ((here->BSIM4v6rgeoMod != 0) && (here->BSIM4v6rgeoMod != 1))
|
||||
{ here->BSIM4v6rgeoMod = model->BSIM4v6rgeoMod;
|
||||
printf("Warning: rgeoMod has been set to its global value %d.\n",
|
||||
model->BSIM4v6rgeoMod);
|
||||
}
|
||||
if (!here->BSIM4v6trnqsModGiven)
|
||||
here->BSIM4v6trnqsMod = model->BSIM4v6trnqsMod;
|
||||
else if ((here->BSIM4v6trnqsMod != 0) && (here->BSIM4v6trnqsMod != 1))
|
||||
|
|
|
|||
|
|
@ -814,6 +814,7 @@ typedef struct sBSIM4v6model
|
|||
int BSIM4v6rgateMod;
|
||||
int BSIM4v6perMod;
|
||||
int BSIM4v6geoMod;
|
||||
int BSIM4v6rgeoMod;
|
||||
int BSIM4v6mtrlMod;
|
||||
int BSIM4v6igcMod;
|
||||
int BSIM4v6igbMod;
|
||||
|
|
@ -1710,6 +1711,7 @@ typedef struct sBSIM4v6model
|
|||
unsigned BSIM4v6rgateModGiven :1;
|
||||
unsigned BSIM4v6perModGiven :1;
|
||||
unsigned BSIM4v6geoModGiven :1;
|
||||
unsigned BSIM4v6rgeoModGiven :1;
|
||||
unsigned BSIM4v6paramChkGiven :1;
|
||||
unsigned BSIM4v6trnqsModGiven :1;
|
||||
unsigned BSIM4v6acnqsModGiven :1;
|
||||
|
|
@ -2605,30 +2607,31 @@ typedef struct sBSIM4v6model
|
|||
#define BSIM4v6_M 38
|
||||
|
||||
/* Global parameters */
|
||||
#define BSIM4v6_MOD_TEMPEOT 66
|
||||
#define BSIM4v6_MOD_LEFFEOT 67
|
||||
#define BSIM4v6_MOD_WEFFEOT 68
|
||||
#define BSIM4v6_MOD_UCSTE 69
|
||||
#define BSIM4v6_MOD_LUCSTE 70
|
||||
#define BSIM4v6_MOD_WUCSTE 71
|
||||
#define BSIM4v6_MOD_PUCSTE 72
|
||||
#define BSIM4v6_MOD_UCS 73
|
||||
#define BSIM4v6_MOD_LUCS 74
|
||||
#define BSIM4v6_MOD_WUCS 75
|
||||
#define BSIM4v6_MOD_PUCS 76
|
||||
#define BSIM4v6_MOD_CVCHARGEMOD 77
|
||||
#define BSIM4v6_MOD_ADOS 78
|
||||
#define BSIM4v6_MOD_BDOS 79
|
||||
#define BSIM4v6_MOD_TEMPMOD 80
|
||||
#define BSIM4v6_MOD_MTRLMOD 81
|
||||
#define BSIM4v6_MOD_IGCMOD 82
|
||||
#define BSIM4v6_MOD_IGBMOD 83
|
||||
#define BSIM4v6_MOD_ACNQSMOD 84
|
||||
#define BSIM4v6_MOD_FNOIMOD 85
|
||||
#define BSIM4v6_MOD_RDSMOD 86
|
||||
#define BSIM4v6_MOD_DIOMOD 87
|
||||
#define BSIM4v6_MOD_PERMOD 88
|
||||
#define BSIM4v6_MOD_GEOMOD 89
|
||||
#define BSIM4v6_MOD_TEMPEOT 65
|
||||
#define BSIM4v6_MOD_LEFFEOT 66
|
||||
#define BSIM4v6_MOD_WEFFEOT 67
|
||||
#define BSIM4v6_MOD_UCSTE 68
|
||||
#define BSIM4v6_MOD_LUCSTE 69
|
||||
#define BSIM4v6_MOD_WUCSTE 70
|
||||
#define BSIM4v6_MOD_PUCSTE 71
|
||||
#define BSIM4v6_MOD_UCS 72
|
||||
#define BSIM4v6_MOD_LUCS 73
|
||||
#define BSIM4v6_MOD_WUCS 74
|
||||
#define BSIM4v6_MOD_PUCS 75
|
||||
#define BSIM4v6_MOD_CVCHARGEMOD 76
|
||||
#define BSIM4v6_MOD_ADOS 77
|
||||
#define BSIM4v6_MOD_BDOS 78
|
||||
#define BSIM4v6_MOD_TEMPMOD 79
|
||||
#define BSIM4v6_MOD_MTRLMOD 80
|
||||
#define BSIM4v6_MOD_IGCMOD 81
|
||||
#define BSIM4v6_MOD_IGBMOD 82
|
||||
#define BSIM4v6_MOD_ACNQSMOD 83
|
||||
#define BSIM4v6_MOD_FNOIMOD 84
|
||||
#define BSIM4v6_MOD_RDSMOD 85
|
||||
#define BSIM4v6_MOD_DIOMOD 86
|
||||
#define BSIM4v6_MOD_PERMOD 87
|
||||
#define BSIM4v6_MOD_GEOMOD 88
|
||||
#define BSIM4v6_MOD_RGEOMOD 89
|
||||
#define BSIM4v6_MOD_RGATEMOD 90
|
||||
#define BSIM4v6_MOD_RBODYMOD 91
|
||||
#define BSIM4v6_MOD_CAPMOD 92
|
||||
|
|
|
|||
Loading…
Reference in New Issue