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) {
|
||||
|
||||
case N_DENS:
|
||||
NevalSrc( & noizDens[MOS1RDNOIZ], & lnNdens[MOS1RDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1dNode,
|
||||
inst->MOS1drainConductance);
|
||||
double dtemp;
|
||||
if (inst->MOS1tempGiven)
|
||||
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,
|
||||
inst->MOS1sourceConductance);
|
||||
inst->MOS1sourceConductance, dtemp);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
NevalSrc( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ],
|
||||
NevalSrcInstanceTemp( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
||||
Sid);
|
||||
Sid, dtemp);
|
||||
|
||||
NevalSrc( & noizDens[MOS1FLNOIZ], NULL, ckt,
|
||||
N_GAIN, inst->MOS1dNodePrime, inst->MOS1sNodePrime,
|
||||
|
|
|
|||
|
|
@ -84,13 +84,19 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
switch (mode) {
|
||||
|
||||
case N_DENS:
|
||||
NevalSrc( & noizDens[MOS2RDNOIZ], & lnNdens[MOS2RDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2dNode,
|
||||
inst->MOS2drainConductance);
|
||||
double dtemp;
|
||||
if (inst->MOS2tempGiven)
|
||||
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,
|
||||
inst->MOS2sourceConductance);
|
||||
inst->MOS2sourceConductance, dtemp);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
NevalSrc( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ],
|
||||
NevalSrcInstanceTemp( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||
Sid);
|
||||
Sid, dtemp);
|
||||
|
||||
NevalSrc( & noizDens[MOS2FLNOIZ], NULL, ckt,
|
||||
N_GAIN, inst->MOS2dNodePrime, inst->MOS2sNodePrime,
|
||||
|
|
|
|||
|
|
@ -84,13 +84,19 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt,
|
|||
switch (mode) {
|
||||
|
||||
case N_DENS:
|
||||
NevalSrc( & noizDens[MOS3RDNOIZ], & lnNdens[MOS3RDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3dNode,
|
||||
inst->MOS3drainConductance);
|
||||
double dtemp;
|
||||
if (inst->MOS3tempGiven)
|
||||
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,
|
||||
inst->MOS3sourceConductance);
|
||||
inst->MOS3sourceConductance, dtemp);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
NevalSrc( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],
|
||||
NevalSrcInstanceTemp( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],
|
||||
ckt, THERMNOISE, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
||||
Sid);
|
||||
Sid, dtemp);
|
||||
|
||||
NevalSrc( & noizDens[MOS3FLNOIZ], NULL, ckt,
|
||||
N_GAIN, inst->MOS3dNodePrime, inst->MOS3sNodePrime,
|
||||
|
|
|
|||
Loading…
Reference in New Issue