ACM_SourceDrainResistances(), fix misleading signature
This function does return resistance, not conductance.
This commit is contained in:
parent
57f3d35ddc
commit
f868418d13
|
|
@ -798,11 +798,14 @@ int Size_Not_Found, error;
|
|||
|
||||
/* process source/drain series resistance */
|
||||
/* ACM model */
|
||||
|
||||
double drainResistance, sourceResistance;
|
||||
|
||||
if (model->BSIM3acmMod == 0)
|
||||
{
|
||||
here->BSIM3drainConductance = model->BSIM3sheetResistance
|
||||
drainResistance = model->BSIM3sheetResistance
|
||||
* here->BSIM3drainSquares;
|
||||
here->BSIM3sourceConductance = model->BSIM3sheetResistance
|
||||
sourceResistance = model->BSIM3sheetResistance
|
||||
* here->BSIM3sourceSquares;
|
||||
}
|
||||
else /* ACM > 0 */
|
||||
|
|
@ -824,23 +827,22 @@ int Size_Not_Found, error;
|
|||
model->BSIM3rs,
|
||||
model->BSIM3rsc,
|
||||
here->BSIM3sourceSquares,
|
||||
&(here->BSIM3drainConductance),
|
||||
&(here->BSIM3sourceConductance)
|
||||
&drainResistance,
|
||||
&sourceResistance
|
||||
);
|
||||
if (error)
|
||||
return(error);
|
||||
}
|
||||
if (here->BSIM3drainConductance > 0.0)
|
||||
here->BSIM3drainConductance = 1.0
|
||||
/ here->BSIM3drainConductance;
|
||||
if (drainResistance > 0.0)
|
||||
here->BSIM3drainConductance = 1.0 / drainResistance;
|
||||
else
|
||||
here->BSIM3drainConductance = 0.0;
|
||||
|
||||
if (here->BSIM3sourceConductance > 0.0)
|
||||
here->BSIM3sourceConductance = 1.0
|
||||
/ here->BSIM3sourceConductance;
|
||||
if (sourceResistance > 0.0)
|
||||
here->BSIM3sourceConductance = 1.0 / sourceResistance;
|
||||
else
|
||||
here->BSIM3sourceConductance = 0.0;
|
||||
|
||||
here->BSIM3cgso = pParam->BSIM3cgso;
|
||||
here->BSIM3cgdo = pParam->BSIM3cgdo;
|
||||
|
||||
|
|
|
|||
|
|
@ -868,11 +868,14 @@ int Size_Not_Found, error;
|
|||
|
||||
/* process source/drain series resistance */
|
||||
/* ACM model */
|
||||
|
||||
double DrainResistance, SourceResistance;
|
||||
|
||||
if (model->BSIM3v32acmMod == 0)
|
||||
{
|
||||
here->BSIM3v32drainConductance = model->BSIM3v32sheetResistance
|
||||
DrainResistance = model->BSIM3v32sheetResistance
|
||||
* here->BSIM3v32drainSquares;
|
||||
here->BSIM3v32sourceConductance = model->BSIM3v32sheetResistance
|
||||
SourceResistance = model->BSIM3v32sheetResistance
|
||||
* here->BSIM3v32sourceSquares;
|
||||
}
|
||||
else /* ACM > 0 */
|
||||
|
|
@ -894,21 +897,19 @@ int Size_Not_Found, error;
|
|||
model->BSIM3v32rs,
|
||||
model->BSIM3v32rsc,
|
||||
here->BSIM3v32sourceSquares,
|
||||
&(here->BSIM3v32drainConductance),
|
||||
&(here->BSIM3v32sourceConductance)
|
||||
&DrainResistance,
|
||||
&SourceResistance
|
||||
);
|
||||
if (error)
|
||||
return(error);
|
||||
}
|
||||
if (here->BSIM3v32drainConductance > 0.0)
|
||||
here->BSIM3v32drainConductance = 1.0
|
||||
/ here->BSIM3v32drainConductance;
|
||||
if (DrainResistance > 0.0)
|
||||
here->BSIM3v32drainConductance = 1.0 / DrainResistance;
|
||||
else
|
||||
here->BSIM3v32drainConductance = 0.0;
|
||||
|
||||
if (here->BSIM3v32sourceConductance > 0.0)
|
||||
here->BSIM3v32sourceConductance = 1.0
|
||||
/ here->BSIM3v32sourceConductance;
|
||||
if (SourceResistance > 0.0)
|
||||
here->BSIM3v32sourceConductance = 1.0 / SourceResistance;
|
||||
else
|
||||
here->BSIM3v32sourceConductance = 0.0;
|
||||
|
||||
|
|
|
|||
|
|
@ -168,16 +168,16 @@ int sourceSquaresGiven,
|
|||
double RS,
|
||||
double RSC,
|
||||
double sourceSquares,
|
||||
double *drainConductance,
|
||||
double *sourceConductance
|
||||
double *drainResistance,
|
||||
double *sourceResistance
|
||||
)
|
||||
{
|
||||
switch (ACM)
|
||||
{
|
||||
case 1:
|
||||
case 11:
|
||||
*drainConductance = (LD + LDIF)/(w * WMLT + XW)*RD + RSH*drainSquares + RDC;
|
||||
*sourceConductance = (LD + LDIF)/(w * WMLT + XW)*RS + RSH*sourceSquares + RSC;
|
||||
*drainResistance = (LD + LDIF)/(w * WMLT + XW)*RD + RSH*drainSquares + RDC;
|
||||
*sourceResistance = (LD + LDIF)/(w * WMLT + XW)*RS + RSH*sourceSquares + RSC;
|
||||
|
||||
break;
|
||||
|
||||
|
|
@ -186,13 +186,13 @@ double *sourceConductance
|
|||
case 3:
|
||||
case 13:
|
||||
if (drainSquaresGiven)
|
||||
*drainConductance = (LD + LDIF)/(w * WMLT + XW)*RD + RSH*drainSquares + RDC;
|
||||
*drainResistance = (LD + LDIF)/(w * WMLT + XW)*RD + RSH*drainSquares + RDC;
|
||||
else
|
||||
*drainConductance = ((LD + LDIF)*RD + (HDIF * WMLT)*RSH)/(w * WMLT + XW) + RDC;
|
||||
*drainResistance = ((LD + LDIF)*RD + (HDIF * WMLT)*RSH)/(w * WMLT + XW) + RDC;
|
||||
if (sourceSquaresGiven)
|
||||
*sourceConductance = (LD + LDIF)/(w * WMLT + XW)*RS + RSH*sourceSquares + RSC;
|
||||
*sourceResistance = (LD + LDIF)/(w * WMLT + XW)*RS + RSH*sourceSquares + RSC;
|
||||
else
|
||||
*sourceConductance = ((LD + LDIF)*RS + (HDIF * WMLT)*RSH)/(w * WMLT + XW) + RSC;
|
||||
*sourceResistance = ((LD + LDIF)*RS + (HDIF * WMLT)*RSH)/(w * WMLT + XW) + RSC;
|
||||
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue