Add instance parameters 'temp' and 'dtemp'

These parameter are however not yet used in the model equations.
This commit is contained in:
Holger Vogt 2025-03-02 15:14:13 +01:00
parent 06376ae902
commit 2283cde1da
5 changed files with 27 additions and 1 deletions

View File

@ -56,6 +56,8 @@ IOP( "mulu0", BSIM4v6_MULU0, IF_REAL, "Low field mobility multiplier"),
IOP( "xgw", BSIM4v6_XGW, IF_REAL, "Distance from gate contact center to device edge"),
IOP( "ngcon", BSIM4v6_NGCON, IF_REAL, "Number of gate contacts"),
IOPU("temp", BSIM4v6_TEMP, IF_REAL, "Instance temperature"),
IOPU("dtemp", BSIM4v6_DTEMP, IF_REAL, "Instance temperature difference"),
IOP( "trnqsmod", BSIM4v6_TRNQSMOD, IF_INTEGER, "Transient NQS model selector"),
IOP( "acnqsmod", BSIM4v6_ACNQSMOD, IF_INTEGER, "AC NQS model selector"),

View File

@ -114,6 +114,12 @@ BSIM4v6instance *here = (BSIM4v6instance*)inst;
case BSIM4v6_MULU0:
value->rValue = here->BSIM4v6mulu0;
return(OK);
case BSIM4v6_TEMP:
value->rValue = here->BSIM4v6temp;
return(OK);
case BSIM4v6_DTEMP:
value->rValue = here->BSIM4v6dtemp;
return(OK);
case BSIM4v6_XGW:
value->rValue = here->BSIM4v6xgw;
return(OK);

View File

@ -149,6 +149,14 @@ IFvalue *select)
here->BSIM4v6ngcon = value->rValue;
here->BSIM4v6ngconGiven = TRUE;
break;
case BSIM4v6_TEMP:
here->BSIM4v6temp = value->rValue;
here->BSIM4v6tempGiven = TRUE;
return(OK);
case BSIM4v6_DTEMP:
here->BSIM4v6dtemp = value->rValue;
here->BSIM4v6dtempGiven = TRUE;
return(OK);
case BSIM4v6_TRNQSMOD:
here->BSIM4v6trnqsMod = value->iValue;
here->BSIM4v6trnqsModGiven = TRUE;

View File

@ -2105,7 +2105,10 @@ BSIM4v6instance **InstArray;
here->BSIM4v6xgw = model->BSIM4v6xgw;
if (!here->BSIM4v6ngconGiven)
here->BSIM4v6ngcon = model->BSIM4v6ngcon;
if (!here->BSIM4v6tempGiven)
here->BSIM4v6temp = 27;
if (!here->BSIM4v6dtempGiven)
here->BSIM4v6dtemp = 0;
/* Process instance model selectors, some
* may override their global counterparts

View File

@ -114,6 +114,8 @@ typedef struct sBSIM4v6instance
double BSIM4v6mulu0;
double BSIM4v6xgw;
double BSIM4v6ngcon;
double BSIM4v6temp;
double BSIM4v6dtemp;
/* added here to account stress effect instance dependence */
double BSIM4v6u0temp;
@ -297,6 +299,8 @@ typedef struct sBSIM4v6instance
unsigned BSIM4v6mulu0Given :1;
unsigned BSIM4v6xgwGiven :1;
unsigned BSIM4v6ngconGiven :1;
unsigned BSIM4v6tempGiven :1;
unsigned BSIM4v6dtempGiven :1;
unsigned BSIM4v6icVDSGiven :1;
unsigned BSIM4v6icVGSGiven :1;
unsigned BSIM4v6icVBSGiven :1;
@ -2714,6 +2718,9 @@ typedef struct sBSIM4v6model
#define BSIM4v6_M 38
#define BSIM4v6_MULU0 39
#define BSIM4v6_TEMP 41
#define BSIM4v6_DTEMP 42
/* Global parameters */
#define BSIM4v6_MOD_TEMPEOT 65
#define BSIM4v6_MOD_LEFFEOT 66