mos1...3: use device temperature for noise analysis too
This commit is contained in:
parent
a1dbd3f3c8
commit
305cd85c76
|
|
@ -95,13 +95,19 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
|
||||||
case N_DENS:
|
case N_DENS:
|
||||||
NevalSrc( & noizDens[MOS1RDNOIZ], & lnNdens[MOS1RDNOIZ],
|
double dtemp;
|
||||||
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1dNode,
|
if (inst->MOS1tempGiven)
|
||||||
inst->MOS1drainConductance);
|
dtemp = inst->MOS1temp - ckt->CKTtemp + (model->MOS1tnom-CONSTCtoK);
|
||||||
|
else
|
||||||
|
dtemp = inst->MOS1dtemp;
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS1RSNOIZ], & lnNdens[MOS1RSNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS1RDNOIZ], & lnNdens[MOS1RDNOIZ],
|
||||||
|
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1dNode,
|
||||||
|
inst->MOS1drainConductance, dtemp);
|
||||||
|
|
||||||
|
NevalSrcInstanceTemp( & noizDens[MOS1RSNOIZ], & lnNdens[MOS1RSNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS1sNodePrime, inst->MOS1sNode,
|
ckt, THERMNOISE, inst->MOS1sNodePrime, inst->MOS1sNode,
|
||||||
inst->MOS1sourceConductance);
|
inst->MOS1sourceConductance, dtemp);
|
||||||
|
|
||||||
if (model->MOS1nlev < 3) {
|
if (model->MOS1nlev < 3) {
|
||||||
|
|
||||||
|
|
@ -127,9 +133,9 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS1gdsnoi;
|
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS1gdsnoi;
|
||||||
}
|
}
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
||||||
Sid);
|
Sid, dtemp);
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS1FLNOIZ], NULL, ckt,
|
NevalSrc( & noizDens[MOS1FLNOIZ], NULL, ckt,
|
||||||
N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
||||||
|
|
|
||||||
|
|
@ -84,13 +84,19 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
|
||||||
case N_DENS:
|
case N_DENS:
|
||||||
NevalSrc( & noizDens[MOS2RDNOIZ], & lnNdens[MOS2RDNOIZ],
|
double dtemp;
|
||||||
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2dNode,
|
if (inst->MOS2tempGiven)
|
||||||
inst->MOS2drainConductance);
|
dtemp = inst->MOS2temp - ckt->CKTtemp + (model->MOS2tnom-CONSTCtoK);
|
||||||
|
else
|
||||||
|
dtemp = inst->MOS2dtemp;
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS2RSNOIZ], & lnNdens[MOS2RSNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS2RDNOIZ], & lnNdens[MOS2RDNOIZ],
|
||||||
|
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2dNode,
|
||||||
|
inst->MOS2drainConductance, dtemp);
|
||||||
|
|
||||||
|
NevalSrcInstanceTemp( & noizDens[MOS2RSNOIZ], & lnNdens[MOS2RSNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS2sNodePrime, inst->MOS2sNode,
|
ckt, THERMNOISE, inst->MOS2sNodePrime, inst->MOS2sNode,
|
||||||
inst->MOS2sourceConductance);
|
inst->MOS2sourceConductance, dtemp);
|
||||||
|
|
||||||
if (model->MOS2nlev < 3) {
|
if (model->MOS2nlev < 3) {
|
||||||
|
|
||||||
|
|
@ -116,9 +122,9 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS2gdsnoi;
|
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS2gdsnoi;
|
||||||
}
|
}
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||||
Sid);
|
Sid, dtemp);
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS2FLNOIZ], NULL, ckt,
|
NevalSrc( & noizDens[MOS2FLNOIZ], NULL, ckt,
|
||||||
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||||
|
|
|
||||||
|
|
@ -84,13 +84,19 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
|
||||||
case N_DENS:
|
case N_DENS:
|
||||||
NevalSrc( & noizDens[MOS3RDNOIZ], & lnNdens[MOS3RDNOIZ],
|
double dtemp;
|
||||||
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3dNode,
|
if (inst->MOS3tempGiven)
|
||||||
inst->MOS3drainConductance);
|
dtemp = inst->MOS3temp - ckt->CKTtemp + (model->MOS3tnom-CONSTCtoK);
|
||||||
|
else
|
||||||
|
dtemp = inst->MOS3dtemp;
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS3RSNOIZ], & lnNdens[MOS3RSNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS3RDNOIZ], & lnNdens[MOS3RDNOIZ],
|
||||||
|
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3dNode,
|
||||||
|
inst->MOS3drainConductance, dtemp);
|
||||||
|
|
||||||
|
NevalSrcInstanceTemp( & noizDens[MOS3RSNOIZ], & lnNdens[MOS3RSNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS3sNodePrime, inst->MOS3sNode,
|
ckt, THERMNOISE, inst->MOS3sNodePrime, inst->MOS3sNode,
|
||||||
inst->MOS3sourceConductance);
|
inst->MOS3sourceConductance, dtemp);
|
||||||
|
|
||||||
if (model->MOS3nlev < 3) {
|
if (model->MOS3nlev < 3) {
|
||||||
|
|
||||||
|
|
@ -116,9 +122,9 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
||||||
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS3gdsnoi;
|
Sid = 2.0 / 3.0 * beta * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS3gdsnoi;
|
||||||
}
|
}
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],
|
NevalSrcInstanceTemp( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],
|
||||||
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
||||||
Sid);
|
Sid, dtemp);
|
||||||
|
|
||||||
NevalSrc( & noizDens[MOS3FLNOIZ], NULL, ckt,
|
NevalSrc( & noizDens[MOS3FLNOIZ], NULL, ckt,
|
||||||
N_GAIN, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
N_GAIN, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue