Browse Source

Fixed MOS1 noise scaling.

pre-master-46
Árpád Bűrmen 12 months ago
committed by Holger Vogt
parent
commit
8e2859d30d
  1. 14
      src/spicelib/devices/mos1/mos1noi.c

14
src/spicelib/devices/mos1/mos1noi.c

@ -145,9 +145,9 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime, N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
(double) 0.0); (double) 0.0);
if (newcompat.s3) { if (newcompat.s3) {
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
exp(model->MOS1fNexp * exp(model->MOS1fNexp *
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
(data->freq * (data->freq *
inst->MOS1w * inst->MOS1w *
(inst->MOS1l - 2 * model->MOS1latDiff) * (inst->MOS1l - 2 * model->MOS1latDiff) *
@ -155,18 +155,18 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
} else { } else {
switch (model->MOS1nlev) { switch (model->MOS1nlev) {
case 0: case 0:
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
exp(model->MOS1fNexp * exp(model->MOS1fNexp *
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
(data->freq * (data->freq *
(inst->MOS1l - 2 * model->MOS1latDiff) * (inst->MOS1l - 2 * model->MOS1latDiff) *
(inst->MOS1l - 2 * model->MOS1latDiff) * (inst->MOS1l - 2 * model->MOS1latDiff) *
sqrt(coxSquared)); sqrt(coxSquared));
break; break;
case 1: case 1:
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
exp(model->MOS1fNexp * exp(model->MOS1fNexp *
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
(data->freq * (data->freq *
inst->MOS1w * inst->MOS1w *
(inst->MOS1l - 2 * model->MOS1latDiff) * (inst->MOS1l - 2 * model->MOS1latDiff) *
@ -174,7 +174,7 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
break; break;
case 2: case 3: case 2: case 3:
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef * noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
inst->MOS1gm * inst->MOS1gm /
inst->MOS1gm * inst->MOS1gm / inst->MOS1m /
(pow(data->freq, model->MOS1fNexp) * (pow(data->freq, model->MOS1fNexp) *
inst->MOS1w * inst->MOS1w *
(inst->MOS1l - 2 * model->MOS1latDiff) * (inst->MOS1l - 2 * model->MOS1latDiff) *

Loading…
Cancel
Save