devices/bsim3: complete the ACM parameter set with xl and xw
This commit is contained in:
parent
708fcbaed1
commit
b51f84e0ff
|
|
@ -185,6 +185,10 @@ IOP( "lwl", BSIM3_MOD_LWL, IF_REAL, "Length reduction parameter"),
|
|||
IOP( "lwlc", BSIM3_MOD_LWLC, IF_REAL, "Length reduction parameter for CV"),
|
||||
IOP( "lmin", BSIM3_MOD_LMIN, IF_REAL, "Minimum length for the model"),
|
||||
IOP( "lmax", BSIM3_MOD_LMAX, IF_REAL, "Maximum length for the model"),
|
||||
|
||||
IOP( "xl", BSIM3_MOD_XL, IF_REAL, "Length correction parameter"),
|
||||
IOP( "xw", BSIM3_MOD_XW, IF_REAL, "Width correction parameter"),
|
||||
|
||||
IOP( "wr", BSIM3_MOD_WR, IF_REAL, "Width dependence of rds"),
|
||||
IOP( "wint", BSIM3_MOD_WINT, IF_REAL, "Width reduction parameter"),
|
||||
IOP( "dwg", BSIM3_MOD_DWG, IF_REAL, "Width reduction parameter"),
|
||||
|
|
|
|||
|
|
@ -1251,6 +1251,14 @@ IFvalue *value)
|
|||
case BSIM3_MOD_WMAX:
|
||||
value->rValue = model->BSIM3Wmax;
|
||||
return(OK);
|
||||
|
||||
case BSIM3_MOD_XL:
|
||||
value->rValue = model->BSIM3xl;
|
||||
return(OK);
|
||||
case BSIM3_MOD_XW:
|
||||
value->rValue = model->BSIM3xw;
|
||||
return(OK);
|
||||
|
||||
case BSIM3_MOD_NOIA:
|
||||
value->rValue = model->BSIM3oxideTrapDensityA;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -1678,6 +1678,15 @@ GENmodel *inMod)
|
|||
mod->BSIM3WmaxGiven = TRUE;
|
||||
break;
|
||||
|
||||
case BSIM3_MOD_XL:
|
||||
mod->BSIM3xl = value->rValue;
|
||||
mod->BSIM3xlGiven = TRUE;
|
||||
break;
|
||||
case BSIM3_MOD_XW:
|
||||
mod->BSIM3xw = value->rValue;
|
||||
mod->BSIM3xwGiven = TRUE;
|
||||
break;
|
||||
|
||||
case BSIM3_MOD_NOIA :
|
||||
mod->BSIM3oxideTrapDensityA = value->rValue;
|
||||
mod->BSIM3oxideTrapDensityAGiven = TRUE;
|
||||
|
|
|
|||
|
|
@ -802,6 +802,12 @@ BSIM3instance **InstArray;
|
|||
model->BSIM3dwc = model->BSIM3Wint;
|
||||
if (!model->BSIM3dlcGiven)
|
||||
model->BSIM3dlc = model->BSIM3Lint;
|
||||
|
||||
if (!model->BSIM3xlGiven)
|
||||
model->BSIM3xl = 0.0;
|
||||
if (!model->BSIM3xwGiven)
|
||||
model->BSIM3xw = 0.0;
|
||||
|
||||
if (!model->BSIM3cfGiven)
|
||||
model->BSIM3cf = 2.0 * EPSOX / PI
|
||||
* log(1.0 + 0.4e-6 / model->BSIM3tox);
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ int Size_Not_Found, error;
|
|||
+ model->BSIM3Wwlc / (T2 * T3);
|
||||
pParam->BSIM3dwc = model->BSIM3dwc + tmp2;
|
||||
|
||||
pParam->BSIM3leff = here->BSIM3l - 2.0 * pParam->BSIM3dl;
|
||||
pParam->BSIM3leff = here->BSIM3l + model->BSIM3xl - 2.0 * pParam->BSIM3dl;
|
||||
if (pParam->BSIM3leff <= 0.0)
|
||||
{ IFuid namarray[2];
|
||||
namarray[0] = model->BSIM3modName;
|
||||
|
|
@ -204,7 +204,7 @@ int Size_Not_Found, error;
|
|||
return(E_BADPARM);
|
||||
}
|
||||
|
||||
pParam->BSIM3weff = here->BSIM3w - 2.0 * pParam->BSIM3dw;
|
||||
pParam->BSIM3weff = here->BSIM3w + model->BSIM3xw - 2.0 * pParam->BSIM3dw;
|
||||
if (pParam->BSIM3weff <= 0.0)
|
||||
{ IFuid namarray[2];
|
||||
namarray[0] = model->BSIM3modName;
|
||||
|
|
@ -215,7 +215,7 @@ int Size_Not_Found, error;
|
|||
return(E_BADPARM);
|
||||
}
|
||||
|
||||
pParam->BSIM3leffCV = here->BSIM3l - 2.0 * pParam->BSIM3dlc;
|
||||
pParam->BSIM3leffCV = here->BSIM3l + model->BSIM3xl - 2.0 * pParam->BSIM3dlc;
|
||||
if (pParam->BSIM3leffCV <= 0.0)
|
||||
{ IFuid namarray[2];
|
||||
namarray[0] = model->BSIM3modName;
|
||||
|
|
@ -226,7 +226,7 @@ int Size_Not_Found, error;
|
|||
return(E_BADPARM);
|
||||
}
|
||||
|
||||
pParam->BSIM3weffCV = here->BSIM3w - 2.0 * pParam->BSIM3dwc;
|
||||
pParam->BSIM3weffCV = here->BSIM3w + model->BSIM3xw - 2.0 * pParam->BSIM3dwc;
|
||||
if (pParam->BSIM3weffCV <= 0.0)
|
||||
{ IFuid namarray[2];
|
||||
namarray[0] = model->BSIM3modName;
|
||||
|
|
|
|||
Loading…
Reference in New Issue