bsim4: reimplement mobility and binning extension
This commit is contained in:
parent
82bf2169b1
commit
ecac7a07a2
|
|
@ -55,9 +55,10 @@ 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"),
|
||||
|
||||
IOP( "wnflag", BSIM4_WNFLAG, IF_INTEGER, "W/NF device flag for bin selection"),
|
||||
|
||||
IOP( "trnqsmod", BSIM4_TRNQSMOD, IF_INTEGER, "Transient NQS model selector"),
|
||||
IOP( "acnqsmod", BSIM4_ACNQSMOD, IF_INTEGER, "AC NQS model selector"),
|
||||
|
|
|
|||
|
|
@ -129,6 +129,12 @@ BSIM4instance *here = (BSIM4instance*)inst;
|
|||
case BSIM4_DELVTO:
|
||||
value->rValue = here->BSIM4delvto;
|
||||
return(OK);
|
||||
case BSIM4_MULU0:
|
||||
value->rValue = here->BSIM4mulu0;
|
||||
return(OK);
|
||||
case BSIM4_WNFLAG:
|
||||
value->iValue = here->BSIM4wnflag;
|
||||
return(OK);
|
||||
case BSIM4_XGW:
|
||||
value->rValue = here->BSIM4xgw;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -157,6 +157,14 @@ IFvalue *select)
|
|||
here->BSIM4delvto = value->rValue;
|
||||
here->BSIM4delvtoGiven = TRUE;
|
||||
break;
|
||||
case BSIM4_MULU0:
|
||||
here->BSIM4mulu0 = value->rValue;
|
||||
here->BSIM4mulu0Given = TRUE;
|
||||
break;
|
||||
case BSIM4_WNFLAG:
|
||||
here->BSIM4wnflag = value->iValue;
|
||||
here->BSIM4wnflagGiven = TRUE;
|
||||
break;
|
||||
case BSIM4_XGW:
|
||||
here->BSIM4xgw = value->rValue;
|
||||
here->BSIM4xgwGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -2354,6 +2354,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)
|
||||
|
|
|
|||
|
|
@ -1768,6 +1768,9 @@ int Fatal_Flag = 0;
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -117,6 +117,8 @@ typedef struct sBSIM4instance
|
|||
double BSIM4rbpd;
|
||||
|
||||
double BSIM4delvto;
|
||||
double BSIM4mulu0;
|
||||
int BSIM4wnflag;
|
||||
double BSIM4xgw;
|
||||
double BSIM4ngcon;
|
||||
|
||||
|
|
@ -310,6 +312,8 @@ typedef struct sBSIM4instance
|
|||
unsigned BSIM4rbpdGiven :1;
|
||||
unsigned BSIM4rbpsGiven :1;
|
||||
unsigned BSIM4delvtoGiven :1;
|
||||
unsigned BSIM4mulu0Given :1;
|
||||
unsigned BSIM4wnflagGiven :1;
|
||||
unsigned BSIM4xgwGiven :1;
|
||||
unsigned BSIM4ngconGiven :1;
|
||||
unsigned BSIM4icVDSGiven :1;
|
||||
|
|
@ -2864,14 +2868,16 @@ typedef struct sBSIM4model
|
|||
#define BSIM4_SCC 36
|
||||
#define BSIM4_SC 37
|
||||
#define BSIM4_M 38
|
||||
#define BSIM4_MULU0 39
|
||||
#define BSIM4_WNFLAG 40
|
||||
|
||||
#define BSIM4_VGSTEFF 40
|
||||
#define BSIM4_VDSEFF 41
|
||||
#define BSIM4_CGSO 42
|
||||
#define BSIM4_CGDO 43
|
||||
#define BSIM4_CGBO 44
|
||||
#define BSIM4_WEFF 45
|
||||
#define BSIM4_LEFF 46
|
||||
#define BSIM4_VGSTEFF 41
|
||||
#define BSIM4_VDSEFF 42
|
||||
#define BSIM4_CGSO 43
|
||||
#define BSIM4_CGDO 44
|
||||
#define BSIM4_CGBO 45
|
||||
#define BSIM4_WEFF 46
|
||||
#define BSIM4_LEFF 47
|
||||
|
||||
/* Global parameters */
|
||||
#define BSIM4_MOD_TEMPEOT 66
|
||||
|
|
|
|||
Loading…
Reference in New Issue