Fixed MOS2 scaling.
This commit is contained in:
parent
8e2859d30d
commit
fcbee261ac
|
|
@ -34,7 +34,7 @@ MOS2load(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
double GateBulkOverlapCap;
|
double GateBulkOverlapCap;
|
||||||
double GateDrainOverlapCap;
|
double GateDrainOverlapCap;
|
||||||
double GateSourceOverlapCap;
|
double GateSourceOverlapCap;
|
||||||
double OxideCap;
|
double OxideCap, unscaledOxideCap;
|
||||||
double SourceSatCur;
|
double SourceSatCur;
|
||||||
double arg;
|
double arg;
|
||||||
double cbhat;
|
double cbhat;
|
||||||
|
|
@ -144,8 +144,8 @@ MOS2load(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
here->MOS2m * EffectiveLength;
|
here->MOS2m * EffectiveLength;
|
||||||
Beta = here->MOS2tTransconductance * here->MOS2w *
|
Beta = here->MOS2tTransconductance * here->MOS2w *
|
||||||
here->MOS2m/EffectiveLength;
|
here->MOS2m/EffectiveLength;
|
||||||
OxideCap = model->MOS2oxideCapFactor * EffectiveLength *
|
unscaledOxideCap = model->MOS2oxideCapFactor * EffectiveLength * here->MOS2w;
|
||||||
here->MOS2m * here->MOS2w;
|
OxideCap = unscaledOxideCap*here->MOS2m;
|
||||||
|
|
||||||
|
|
||||||
if(SenCond){
|
if(SenCond){
|
||||||
|
|
@ -599,7 +599,7 @@ next1: if(vbs <= -3*vt) {
|
||||||
|
|
||||||
/*XXX constant per device */
|
/*XXX constant per device */
|
||||||
factor = 0.125*model->MOS2narrowFactor*2.0*M_PI*EPSSIL/
|
factor = 0.125*model->MOS2narrowFactor*2.0*M_PI*EPSSIL/
|
||||||
OxideCap*EffectiveLength;
|
unscaledOxideCap*EffectiveLength;
|
||||||
/*XXX constant per device */
|
/*XXX constant per device */
|
||||||
eta = 1.0+factor;
|
eta = 1.0+factor;
|
||||||
vbin = here->MOS2tVbi*model->MOS2type+factor*phiMinVbs;
|
vbin = here->MOS2tVbi*model->MOS2type+factor*phiMinVbs;
|
||||||
|
|
@ -664,7 +664,7 @@ next1: if(vbs <= -3*vt) {
|
||||||
1e4 /*(cm**2/m**2)*/;
|
1e4 /*(cm**2/m**2)*/;
|
||||||
cdonco = -(gamasd*dsrgdb+dgddvb*sarg1)+factor;
|
cdonco = -(gamasd*dsrgdb+dgddvb*sarg1)+factor;
|
||||||
|
|
||||||
xn = 1.0+cfs/OxideCap*here->MOS2m*
|
xn = 1.0+cfs/unscaledOxideCap*
|
||||||
here->MOS2w*EffectiveLength+cdonco;
|
here->MOS2w*EffectiveLength+cdonco;
|
||||||
|
|
||||||
tmp = vt*xn;
|
tmp = vt*xn;
|
||||||
|
|
|
||||||
|
|
@ -134,9 +134,9 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||||
(double) 0.0);
|
(double) 0.0);
|
||||||
if (newcompat.s3) {
|
if (newcompat.s3) {
|
||||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||||
exp(model->MOS2fNexp *
|
exp(model->MOS2fNexp *
|
||||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||||
(data->freq *
|
(data->freq *
|
||||||
inst->MOS2w *
|
inst->MOS2w *
|
||||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||||
|
|
@ -144,18 +144,18 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
} else {
|
} else {
|
||||||
switch (model->MOS2nlev) {
|
switch (model->MOS2nlev) {
|
||||||
case 0:
|
case 0:
|
||||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||||
exp(model->MOS2fNexp *
|
exp(model->MOS2fNexp *
|
||||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||||
(data->freq *
|
(data->freq *
|
||||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||||
model->MOS2oxideCapFactor);
|
model->MOS2oxideCapFactor);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||||
exp(model->MOS2fNexp *
|
exp(model->MOS2fNexp *
|
||||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||||
(data->freq *
|
(data->freq *
|
||||||
inst->MOS2w *
|
inst->MOS2w *
|
||||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||||
|
|
@ -163,7 +163,7 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
break;
|
break;
|
||||||
case 2: case 3:
|
case 2: case 3:
|
||||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
||||||
inst->MOS2gm * inst->MOS2gm /
|
inst->MOS2gm * inst->MOS2gm / inst->MOS2m /
|
||||||
(pow(data->freq, model->MOS2fNexp) *
|
(pow(data->freq, model->MOS2fNexp) *
|
||||||
inst->MOS2w *
|
inst->MOS2w *
|
||||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue