extend bsim4 instance parameter with mulu0 for local mobility multiplier
This commit is contained in:
parent
4402897a07
commit
c44f101c49
|
|
@ -55,6 +55,7 @@ IOP( "rbps", BSIM4_RBPS, IF_REAL , "Body resistance"),
|
|||
IOP( "rbpd", BSIM4_RBPD, IF_REAL , "Body resistance"),
|
||||
IOP( "delvto", BSIM4_DELVTO, IF_REAL , "Zero bias threshold voltage variation"),
|
||||
IOPR( "delvt0", BSIM4_DELVTO, IF_REAL , "Zero bias threshold voltage variation"),
|
||||
IOP( "mulu0", BSIM4_MULU0, IF_REAL, "Low field mobility multiplier"),
|
||||
IOP( "xgw", BSIM4_XGW, IF_REAL, "Distance from gate contact center to device edge"),
|
||||
IOP( "ngcon", BSIM4_NGCON, IF_REAL, "Number of gate contacts"),
|
||||
|
||||
|
|
|
|||
|
|
@ -111,6 +111,9 @@ BSIM4instance *here = (BSIM4instance*)inst;
|
|||
case BSIM4_DELVTO:
|
||||
value->rValue = here->BSIM4delvto;
|
||||
return(OK);
|
||||
case BSIM4_MULU0:
|
||||
value->rValue = here->BSIM4mulu0;
|
||||
return(OK);
|
||||
case BSIM4_XGW:
|
||||
value->rValue = here->BSIM4xgw;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -137,6 +137,10 @@ IFvalue *select)
|
|||
here->BSIM4delvto = value->rValue;
|
||||
here->BSIM4delvtoGiven = TRUE;
|
||||
break;
|
||||
case BSIM4_MULU0:
|
||||
here->BSIM4mulu0 = value->rValue;
|
||||
here->BSIM4mulu0Given = TRUE;
|
||||
break;
|
||||
case BSIM4_XGW:
|
||||
here->BSIM4xgw = value->rValue;
|
||||
here->BSIM4xgwGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -2326,6 +2326,8 @@ BSIM4instance **InstArray;
|
|||
here->BSIM4rbpd = model->BSIM4rbpd;
|
||||
if (!here->BSIM4delvtoGiven)
|
||||
here->BSIM4delvto = 0.0;
|
||||
if (!here->BSIM4mulu0Given)
|
||||
here->BSIM4mulu0 = 1.0;
|
||||
if (!here->BSIM4xgwGiven)
|
||||
here->BSIM4xgw = model->BSIM4xgw;
|
||||
if (!here->BSIM4ngconGiven)
|
||||
|
|
|
|||
|
|
@ -1718,6 +1718,9 @@ int Size_Not_Found, i;
|
|||
here->BSIM4vth0 += here->BSIM4delvto;
|
||||
here->BSIM4vfb = pParam->BSIM4vfb + model->BSIM4type * here->BSIM4delvto;
|
||||
|
||||
/* low field mobility multiplier */
|
||||
here->BSIM4u0temp = pParam->BSIM4u0temp * here->BSIM4mulu0;
|
||||
|
||||
/* Instance variables calculation */
|
||||
T3 = model->BSIM4type * here->BSIM4vth0
|
||||
- here->BSIM4vfb - pParam->BSIM4phi;
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ typedef struct sBSIM4instance
|
|||
double BSIM4rbpd;
|
||||
|
||||
double BSIM4delvto;
|
||||
double BSIM4mulu0;
|
||||
double BSIM4xgw;
|
||||
double BSIM4ngcon;
|
||||
|
||||
|
|
@ -295,6 +296,7 @@ typedef struct sBSIM4instance
|
|||
unsigned BSIM4rbpdGiven :1;
|
||||
unsigned BSIM4rbpsGiven :1;
|
||||
unsigned BSIM4delvtoGiven :1;
|
||||
unsigned BSIM4mulu0Given :1;
|
||||
unsigned BSIM4xgwGiven :1;
|
||||
unsigned BSIM4ngconGiven :1;
|
||||
unsigned BSIM4icVDSGiven :1;
|
||||
|
|
@ -2755,6 +2757,7 @@ typedef struct sBSIM4model
|
|||
#define BSIM4_SCC 36
|
||||
#define BSIM4_SC 37
|
||||
#define BSIM4_M 38
|
||||
#define BSIM4_MULU0 39
|
||||
|
||||
/* Global parameters */
|
||||
#define BSIM4_MOD_TEMPEOT 65
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ IOP( "rbps", BSIM4v7_RBPS, IF_REAL , "Body resistance"),
|
|||
IOP( "rbpd", BSIM4v7_RBPD, IF_REAL , "Body resistance"),
|
||||
IOP( "delvto", BSIM4v7_DELVTO, IF_REAL , "Zero bias threshold voltage variation"),
|
||||
IOPR( "delvt0", BSIM4v7_DELVTO, IF_REAL , "Zero bias threshold voltage variation"),
|
||||
IOP( "mulu0", BSIM4v7_MULU0, IF_REAL, "Low field mobility multiplier"),
|
||||
IOP( "xgw", BSIM4v7_XGW, IF_REAL, "Distance from gate contact center to device edge"),
|
||||
IOP( "ngcon", BSIM4v7_NGCON, IF_REAL, "Number of gate contacts"),
|
||||
|
||||
|
|
|
|||
|
|
@ -111,6 +111,9 @@ BSIM4v7instance *here = (BSIM4v7instance*)inst;
|
|||
case BSIM4v7_DELVTO:
|
||||
value->rValue = here->BSIM4v7delvto;
|
||||
return(OK);
|
||||
case BSIM4v7_MULU0:
|
||||
value->rValue = here->BSIM4v7mulu0;
|
||||
return(OK);
|
||||
case BSIM4v7_XGW:
|
||||
value->rValue = here->BSIM4v7xgw;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -137,6 +137,10 @@ IFvalue *select)
|
|||
here->BSIM4v7delvto = value->rValue;
|
||||
here->BSIM4v7delvtoGiven = TRUE;
|
||||
break;
|
||||
case BSIM4v7_MULU0:
|
||||
here->BSIM4v7mulu0 = value->rValue;
|
||||
here->BSIM4v7mulu0Given = TRUE;
|
||||
break;
|
||||
case BSIM4v7_XGW:
|
||||
here->BSIM4v7xgw = value->rValue;
|
||||
here->BSIM4v7xgwGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -2241,6 +2241,8 @@ BSIM4v7instance **InstArray;
|
|||
here->BSIM4v7rbpd = model->BSIM4v7rbpd;
|
||||
if (!here->BSIM4v7delvtoGiven)
|
||||
here->BSIM4v7delvto = 0.0;
|
||||
if (!here->BSIM4v7mulu0Given)
|
||||
here->BSIM4v7mulu0 = 1.0;
|
||||
if (!here->BSIM4v7xgwGiven)
|
||||
here->BSIM4v7xgw = model->BSIM4v7xgw;
|
||||
if (!here->BSIM4v7ngconGiven)
|
||||
|
|
|
|||
|
|
@ -1650,6 +1650,9 @@ int Size_Not_Found, i;
|
|||
here->BSIM4v7vth0 += here->BSIM4v7delvto;
|
||||
here->BSIM4v7vfb = pParam->BSIM4v7vfb + model->BSIM4v7type * here->BSIM4v7delvto;
|
||||
|
||||
/* low field mobility multiplier */
|
||||
here->BSIM4v7u0temp = pParam->BSIM4v7u0temp * here->BSIM4v7mulu0;
|
||||
|
||||
/* Instance variables calculation */
|
||||
T3 = model->BSIM4v7type * here->BSIM4v7vth0
|
||||
- here->BSIM4v7vfb - pParam->BSIM4v7phi;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ typedef struct sBSIM4v7instance
|
|||
double BSIM4v7rbpd;
|
||||
|
||||
double BSIM4v7delvto;
|
||||
double BSIM4v7mulu0;
|
||||
double BSIM4v7xgw;
|
||||
double BSIM4v7ngcon;
|
||||
|
||||
|
|
@ -292,6 +293,7 @@ typedef struct sBSIM4v7instance
|
|||
unsigned BSIM4v7rbpdGiven :1;
|
||||
unsigned BSIM4v7rbpsGiven :1;
|
||||
unsigned BSIM4v7delvtoGiven :1;
|
||||
unsigned BSIM4v7mulu0Given :1;
|
||||
unsigned BSIM4v7xgwGiven :1;
|
||||
unsigned BSIM4v7ngconGiven :1;
|
||||
unsigned BSIM4v7icVDSGiven :1;
|
||||
|
|
@ -2749,6 +2751,7 @@ typedef struct sBSIM4v7model
|
|||
#define BSIM4v7_SCC 36
|
||||
#define BSIM4v7_SC 37
|
||||
#define BSIM4v7_M 38
|
||||
#define BSIM4v7_MULU0 39
|
||||
|
||||
/* Global parameters */
|
||||
#define BSIM4v7_MOD_TEMPEOT 65
|
||||
|
|
|
|||
Loading…
Reference in New Issue