few corrections regarding noise w/ multiplier

This commit is contained in:
dwarning 2011-06-20 18:47:04 +00:00
parent d610dbf75a
commit 5e2b381639
3 changed files with 64 additions and 24 deletions

View File

@ -213,6 +213,10 @@ BSIM4instance *here = (BSIM4instance*)inst;
value->rValue = here->BSIM4csub;
value->rValue *= here->BSIM4m;
return(OK);
case BSIM4_QINV:
value->rValue = here-> BSIM4qinv;
value->rValue *= here->BSIM4m;
return(OK);
case BSIM4_IGIDL:
value->rValue = here->BSIM4Igidl;
value->rValue *= here->BSIM4m;

View File

@ -944,6 +944,9 @@ IFvalue *value)
case BSIM4_MOD_RSHG:
value->rValue = model->BSIM4rshg;
return(OK);
case BSIM4_MOD_NGCON:
value->rValue = model->BSIM4ngcon;
return(OK);
case BSIM4_MOD_TCJ:
value->rValue = model->BSIM4tcj;
return(OK);
@ -1425,6 +1428,16 @@ IFvalue *value)
value->rValue = model->BSIM4ltvfbsdoff;
return(OK);
case BSIM4_MOD_LLAMBDA:
value->rValue = model->BSIM4llambda;
return(OK);
case BSIM4_MOD_LVTL:
value->rValue = model->BSIM4lvtl;
return(OK);
case BSIM4_MOD_LXN:
value->rValue = model->BSIM4lxn;
return(OK);
/* Width dependence */
case BSIM4_MOD_WCDSC :
value->rValue = model->BSIM4wcdsc;
@ -1525,7 +1538,7 @@ IFvalue *value)
case BSIM4_MOD_WDVTP1:
value->rValue = model->BSIM4wdvtp1;
return(OK);
case BSIM4_MOD_WDVTP2:
case BSIM4_MOD_WDVTP2:
value->rValue = model->BSIM4wdvtp2; /* New DIBL/Rout */
return(OK);
case BSIM4_MOD_WDVTP3:
@ -1603,7 +1616,7 @@ IFvalue *value)
case BSIM4_MOD_WUTE:
value->rValue = model->BSIM4wute;
return(OK);
case BSIM4_MOD_WUCSTE:
case BSIM4_MOD_WUCSTE:
value->rValue = model->BSIM4wucste;
return(OK);
case BSIM4_MOD_WVOFF:
@ -1723,10 +1736,10 @@ IFvalue *value)
case BSIM4_MOD_WFGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wfgidl;
return(OK);
case BSIM4_MOD_WKGIDL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_WKGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wkgidl;
return(OK);
case BSIM4_MOD_WRGIDL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_WRGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wrgidl;
return(OK);
case BSIM4_MOD_WAGISL:
@ -1744,10 +1757,10 @@ IFvalue *value)
case BSIM4_MOD_WFGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wfgisl;
return(OK);
case BSIM4_MOD_WKGISL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_WKGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wkgisl;
return(OK);
case BSIM4_MOD_WRGISL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_WRGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4wrgisl;
return(OK);
case BSIM4_MOD_WAIGC:
@ -1837,7 +1850,7 @@ IFvalue *value)
case BSIM4_MOD_WEU:
value->rValue = model->BSIM4weu;
return(OK);
case BSIM4_MOD_WUCS:
case BSIM4_MOD_WUCS:
value->rValue = model->BSIM4wucs;
return(OK);
case BSIM4_MOD_WVFB:
@ -1887,6 +1900,16 @@ IFvalue *value)
value->rValue = model->BSIM4wtvfbsdoff;
return(OK);
case BSIM4_MOD_WLAMBDA:
value->rValue = model->BSIM4wlambda;
return(OK);
case BSIM4_MOD_WVTL:
value->rValue = model->BSIM4wvtl;
return(OK);
case BSIM4_MOD_WXN:
value->rValue = model->BSIM4wxn;
return(OK);
/* Cross-term dependence */
case BSIM4_MOD_PCDSC :
value->rValue = model->BSIM4pcdsc;
@ -1990,7 +2013,7 @@ IFvalue *value)
case BSIM4_MOD_PDVTP1:
value->rValue = model->BSIM4pdvtp1;
return(OK);
case BSIM4_MOD_PDVTP2:
case BSIM4_MOD_PDVTP2:
value->rValue = model->BSIM4pdvtp2; /* New DIBL/Rout */
return(OK);
case BSIM4_MOD_PDVTP3:
@ -2065,7 +2088,7 @@ IFvalue *value)
case BSIM4_MOD_PUTE:
value->rValue = model->BSIM4pute;
return(OK);
case BSIM4_MOD_PUCSTE:
case BSIM4_MOD_PUCSTE:
value->rValue = model->BSIM4pucste;
return(OK);
case BSIM4_MOD_PVOFF:
@ -2185,10 +2208,10 @@ IFvalue *value)
case BSIM4_MOD_PFGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4pfgidl;
return(OK);
case BSIM4_MOD_PKGIDL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_PKGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4pkgidl;
return(OK);
case BSIM4_MOD_PRGIDL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_PRGIDL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4prgidl;
return(OK);
case BSIM4_MOD_PAGISL:
@ -2206,10 +2229,10 @@ IFvalue *value)
case BSIM4_MOD_PFGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4pfgisl;
return(OK);
case BSIM4_MOD_PKGISL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_PKGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4pkgisl;
return(OK);
case BSIM4_MOD_PRGISL: /* v4.7 New GIDL/GISL*/
case BSIM4_MOD_PRGISL: /* v4.7 New GIDL/GISL*/
value->rValue = model->BSIM4prgisl;
return(OK);
case BSIM4_MOD_PAIGC:
@ -2299,7 +2322,7 @@ IFvalue *value)
case BSIM4_MOD_PEU:
value->rValue = model->BSIM4peu;
return(OK);
case BSIM4_MOD_PUCS:
case BSIM4_MOD_PUCS:
value->rValue = model->BSIM4pucs;
return(OK);
case BSIM4_MOD_PVFB:
@ -2349,6 +2372,16 @@ IFvalue *value)
value->rValue = model->BSIM4ptvfbsdoff;
return(OK);
case BSIM4_MOD_PLAMBDA:
value->rValue = model->BSIM4plambda;
return(OK);
case BSIM4_MOD_PVTL:
value->rValue = model->BSIM4pvtl;
return(OK);
case BSIM4_MOD_PXN:
value->rValue = model->BSIM4pxn;
return(OK);
case BSIM4_MOD_TNOM :
value->rValue = model->BSIM4tnom;
return(OK);
@ -2451,6 +2484,9 @@ IFvalue *value)
case BSIM4_MOD_XTID:
value->rValue = model->BSIM4DjctTempExponent;
return(OK);
case BSIM4_MOD_LINTNOI:
value->rValue = model->BSIM4lintnoi;
return(OK);
case BSIM4_MOD_LINT:
value->rValue = model->BSIM4Lint;
return(OK);
@ -2525,7 +2561,7 @@ IFvalue *value)
case BSIM4_MOD_SBREF:
value->rValue = model->BSIM4sbref;
return(OK);
case BSIM4_MOD_WLOD:
case BSIM4_MOD_WLOD:
value->rValue = model->BSIM4wlod;
return(OK);
case BSIM4_MOD_KU0:

View File

@ -427,17 +427,17 @@ double m;
}
switch(model->BSIM4tnoiMod)
{ case 0:
T0 = m * here->BSIM4ueff * fabs(here->BSIM4qinv);
T0 = here->BSIM4ueff * fabs(here->BSIM4qinv);
T1 = T0 * tmp + pParam->BSIM4leff
* pParam->BSIM4leff;
NevalSrc(&noizDens[BSIM4IDNOIZ],
&lnNdens[BSIM4IDNOIZ], ckt,
THERMNOISE, here->BSIM4dNodePrime,
here->BSIM4sNodePrime,
(T0 / T1) * model->BSIM4ntnoi);
(T0 / T1) * model->BSIM4ntnoi * m);
break;
case 1:
T0 = m * (here->BSIM4gm + here->BSIM4gmbs + here->BSIM4gds);
T0 = here->BSIM4gm + here->BSIM4gmbs + here->BSIM4gds;
T0 *= T0;
igsquare = npart_theta * npart_theta * T0 / here->BSIM4IdovVds;
T1 = npart_beta * (here->BSIM4gm
@ -446,7 +446,7 @@ double m;
NevalSrc(&noizDens[BSIM4IDNOIZ],
&lnNdens[BSIM4IDNOIZ], ckt,
THERMNOISE, here->BSIM4dNodePrime,
here->BSIM4sNodePrime, (T2 - igsquare));
here->BSIM4sNodePrime, (T2 - igsquare) * m);
break;
case 2:
T2 = GammaGd0;
@ -455,7 +455,7 @@ double m;
NevalSrc(&noizDens[BSIM4IDNOIZ],
&lnNdens[BSIM4IDNOIZ], ckt,
THERMNOISE, here->BSIM4dNodePrime,
here->BSIM4sNodePrime, T2 * T4);
here->BSIM4sNodePrime, T2 * T4 * m);
/* Evaluate output noise due to two correlated noise sources */
omega = 2.0 * M_PI * data->freq;
@ -467,20 +467,20 @@ double m;
NevalSrc2(&noizDens[BSIM4CORLNOIZ],
&lnNdens[BSIM4CORLNOIZ], ckt,
THERMNOISE, here->BSIM4dNodePrime,
here->BSIM4sNodePrime, T2 * T3,
here->BSIM4sNodePrime, T2 * T3 * m,
here->BSIM4gNodePrime,
here->BSIM4sNodePrime,
T2 * T7, 0.5 * M_PI);
T2 * T7 * m, 0.5 * M_PI);
}
else
{
NevalSrc2(&noizDens[BSIM4CORLNOIZ],
&lnNdens[BSIM4CORLNOIZ], ckt,
THERMNOISE, here->BSIM4sNodePrime,
here->BSIM4dNodePrime, T2 * T3,
here->BSIM4dNodePrime, T2 * T3 * m,
here->BSIM4gNodePrime,
here->BSIM4dNodePrime,
T2 * T7, 0.5 * M_PI);
T2 * T7 * m, 0.5 * M_PI);
}
break;
}