Merge branch 'pre-master-45' of ssh://git.code.sf.net/p/ngspice/ngspice into pre-master-45
This commit is contained in:
commit
ad6635210a
|
|
@ -145,9 +145,9 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
||||
(double) 0.0);
|
||||
if (newcompat.s3) {
|
||||
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
|
||||
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
|
||||
exp(model->MOS1fNexp *
|
||||
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
inst->MOS1w *
|
||||
(inst->MOS1l - 2 * model->MOS1latDiff) *
|
||||
|
|
@ -155,18 +155,18 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
} else {
|
||||
switch (model->MOS1nlev) {
|
||||
case 0:
|
||||
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
|
||||
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
|
||||
exp(model->MOS1fNexp *
|
||||
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS1l - 2 * model->MOS1latDiff) *
|
||||
(inst->MOS1l - 2 * model->MOS1latDiff) *
|
||||
sqrt(coxSquared));
|
||||
break;
|
||||
case 1:
|
||||
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
|
||||
noizDens[MOS1FLNOIZ] *= inst->MOS1m * model->MOS1fNcoef *
|
||||
exp(model->MOS1fNexp *
|
||||
log(MAX(fabs(inst->MOS1cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS1cd / inst->MOS1m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
inst->MOS1w *
|
||||
(inst->MOS1l - 2 * model->MOS1latDiff) *
|
||||
|
|
@ -174,7 +174,7 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
break;
|
||||
case 2: case 3:
|
||||
noizDens[MOS1FLNOIZ] *= model->MOS1fNcoef *
|
||||
inst->MOS1gm * inst->MOS1gm /
|
||||
inst->MOS1gm * inst->MOS1gm / inst->MOS1m /
|
||||
(pow(data->freq, model->MOS1fNexp) *
|
||||
inst->MOS1w *
|
||||
(inst->MOS1l - 2 * model->MOS1latDiff) *
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ MOS2load(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double GateBulkOverlapCap;
|
||||
double GateDrainOverlapCap;
|
||||
double GateSourceOverlapCap;
|
||||
double OxideCap;
|
||||
double OxideCap, unscaledOxideCap;
|
||||
double SourceSatCur;
|
||||
double arg;
|
||||
double cbhat;
|
||||
|
|
@ -144,8 +144,8 @@ MOS2load(GENmodel *inModel, CKTcircuit *ckt)
|
|||
here->MOS2m * EffectiveLength;
|
||||
Beta = here->MOS2tTransconductance * here->MOS2w *
|
||||
here->MOS2m/EffectiveLength;
|
||||
OxideCap = model->MOS2oxideCapFactor * EffectiveLength *
|
||||
here->MOS2m * here->MOS2w;
|
||||
unscaledOxideCap = model->MOS2oxideCapFactor * EffectiveLength * here->MOS2w;
|
||||
OxideCap = unscaledOxideCap*here->MOS2m;
|
||||
|
||||
|
||||
if(SenCond){
|
||||
|
|
@ -599,7 +599,7 @@ next1: if(vbs <= -3*vt) {
|
|||
|
||||
/*XXX constant per device */
|
||||
factor = 0.125*model->MOS2narrowFactor*2.0*M_PI*EPSSIL/
|
||||
OxideCap*EffectiveLength;
|
||||
unscaledOxideCap*EffectiveLength;
|
||||
/*XXX constant per device */
|
||||
eta = 1.0+factor;
|
||||
vbin = here->MOS2tVbi*model->MOS2type+factor*phiMinVbs;
|
||||
|
|
@ -664,7 +664,7 @@ next1: if(vbs <= -3*vt) {
|
|||
1e4 /*(cm**2/m**2)*/;
|
||||
cdonco = -(gamasd*dsrgdb+dgddvb*sarg1)+factor;
|
||||
|
||||
xn = 1.0+cfs/OxideCap*here->MOS2m*
|
||||
xn = 1.0+cfs/unscaledOxideCap*
|
||||
here->MOS2w*EffectiveLength+cdonco;
|
||||
|
||||
tmp = vt*xn;
|
||||
|
|
|
|||
|
|
@ -134,9 +134,9 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||
(double) 0.0);
|
||||
if (newcompat.s3) {
|
||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
||||
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||
exp(model->MOS2fNexp *
|
||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
inst->MOS2w *
|
||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||
|
|
@ -144,18 +144,18 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
} else {
|
||||
switch (model->MOS2nlev) {
|
||||
case 0:
|
||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
||||
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||
exp(model->MOS2fNexp *
|
||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||
model->MOS2oxideCapFactor);
|
||||
break;
|
||||
case 1:
|
||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
||||
noizDens[MOS2FLNOIZ] *= inst->MOS2m * model->MOS2fNcoef *
|
||||
exp(model->MOS2fNexp *
|
||||
log(MAX(fabs(inst->MOS2cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS2cd / inst->MOS2m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
inst->MOS2w *
|
||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||
|
|
@ -163,7 +163,7 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
break;
|
||||
case 2: case 3:
|
||||
noizDens[MOS2FLNOIZ] *= model->MOS2fNcoef *
|
||||
inst->MOS2gm * inst->MOS2gm /
|
||||
inst->MOS2gm * inst->MOS2gm / inst->MOS2m /
|
||||
(pow(data->freq, model->MOS2fNexp) *
|
||||
inst->MOS2w *
|
||||
(inst->MOS2l - 2 * model->MOS2latDiff) *
|
||||
|
|
|
|||
|
|
@ -134,9 +134,9 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
N_GAIN, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
||||
(double) 0.0);
|
||||
if (newcompat.s3) {
|
||||
noizDens[MOS3FLNOIZ] *= model->MOS3fNcoef *
|
||||
noizDens[MOS3FLNOIZ] *= inst->MOS3m * model->MOS3fNcoef *
|
||||
exp(model->MOS3fNexp *
|
||||
log(MAX(fabs(inst->MOS3cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS3cd / inst->MOS3m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS3w - 2 * model->MOS3widthNarrow) *
|
||||
(inst->MOS3l - 2 * model->MOS3latDiff) *
|
||||
|
|
@ -144,18 +144,18 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
} else {
|
||||
switch (model->MOS3nlev) {
|
||||
case 0:
|
||||
noizDens[MOS3FLNOIZ] *= model->MOS3fNcoef *
|
||||
noizDens[MOS3FLNOIZ] *= inst->MOS3m * model->MOS3fNcoef *
|
||||
exp(model->MOS3fNexp *
|
||||
log(MAX(fabs(inst->MOS3cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS3cd / inst->MOS3m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS3l - 2 * model->MOS3latDiff) *
|
||||
(inst->MOS3l - 2 * model->MOS3latDiff) *
|
||||
model->MOS3oxideCapFactor);
|
||||
break;
|
||||
case 1:
|
||||
noizDens[MOS3FLNOIZ] *= model->MOS3fNcoef *
|
||||
noizDens[MOS3FLNOIZ] *= inst->MOS3m * model->MOS3fNcoef *
|
||||
exp(model->MOS3fNexp *
|
||||
log(MAX(fabs(inst->MOS3cd), N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS3cd / inst->MOS3m), N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS3w - 2 * model->MOS3widthNarrow) *
|
||||
(inst->MOS3l - 2 * model->MOS3latDiff) *
|
||||
|
|
@ -163,7 +163,7 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
break;
|
||||
case 2: case 3:
|
||||
noizDens[MOS3FLNOIZ] *= model->MOS3fNcoef *
|
||||
inst->MOS3gm * inst->MOS3gm /
|
||||
inst->MOS3gm * inst->MOS3gm / inst->MOS3m /
|
||||
(pow(data->freq, model->MOS3fNexp) *
|
||||
(inst->MOS3w - 2 * model->MOS3widthNarrow) *
|
||||
(inst->MOS3l - 2 * model->MOS3latDiff) *
|
||||
|
|
|
|||
|
|
@ -94,12 +94,11 @@ MOS9noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
|
|||
NevalSrc(&noizDens[MOS9FLNOIZ], NULL, ckt,
|
||||
N_GAIN,inst->MOS9dNodePrime, inst->MOS9sNodePrime,
|
||||
(double)0.0);
|
||||
noizDens[MOS9FLNOIZ] *= model->MOS9fNcoef *
|
||||
noizDens[MOS9FLNOIZ] *= inst->MOS9m * model->MOS9fNcoef *
|
||||
exp(model->MOS9fNexp *
|
||||
log(MAX(fabs(inst->MOS9cd),N_MINLOG))) /
|
||||
log(MAX(fabs(inst->MOS9cd / inst->MOS9m),N_MINLOG))) /
|
||||
(data->freq *
|
||||
(inst->MOS9w - 2*model->MOS9widthNarrow) *
|
||||
inst->MOS9m *
|
||||
(inst->MOS9l - 2*model->MOS9latDiff) *
|
||||
model->MOS9oxideCapFactor * model->MOS9oxideCapFactor);
|
||||
lnNdens[MOS9FLNOIZ] =
|
||||
|
|
|
|||
Loading…
Reference in New Issue