diff --git a/src/spicelib/devices/mos1/mos1noi.c b/src/spicelib/devices/mos1/mos1noi.c index f4815841e..dcd31a497 100644 --- a/src/spicelib/devices/mos1/mos1noi.c +++ b/src/spicelib/devices/mos1/mos1noi.c @@ -128,12 +128,13 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, /* linear region */ alpha = 1.0 - (vds*inst->MOS1mode/(model->MOS1type*inst->MOS1vdsat)); } - } else { - alpha = 0.0; - } - beta = inst->MOS1tTransconductance * inst->MOS1m * + beta = inst->MOS1tTransconductance * inst->MOS1m * inst->MOS1w/(inst->MOS1l - 2 * model->MOS1latDiff); - 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; + } else { + /* subthreshold region */ + Sid = 0.0; + } } NevalSrcInstanceTemp( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ], diff --git a/src/spicelib/devices/mos2/mos2noi.c b/src/spicelib/devices/mos2/mos2noi.c index be31c37d9..1d208b5d9 100644 --- a/src/spicelib/devices/mos2/mos2noi.c +++ b/src/spicelib/devices/mos2/mos2noi.c @@ -117,12 +117,13 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, /* linear region */ alpha = 1.0 - (vds*inst->MOS2mode/(model->MOS2type*inst->MOS2vdsat)); } - } else { - alpha = 0.0; - } - beta = inst->MOS2tTransconductance * inst->MOS2m * + beta = inst->MOS2tTransconductance * inst->MOS2m * inst->MOS2w/(inst->MOS2l - 2 * model->MOS2latDiff); - 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; + } else { + /* subthreshold region */ + Sid = 0.0; + } } NevalSrcInstanceTemp( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ], diff --git a/src/spicelib/devices/mos3/mos3noi.c b/src/spicelib/devices/mos3/mos3noi.c index 1fe631f65..4787fa335 100644 --- a/src/spicelib/devices/mos3/mos3noi.c +++ b/src/spicelib/devices/mos3/mos3noi.c @@ -117,12 +117,13 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, /* linear region */ alpha = 1.0 - (vds*inst->MOS3mode/(model->MOS3type*inst->MOS3vdsat)); } - } else { - alpha = 0.0; - } - beta = inst->MOS3tTransconductance * inst->MOS3m * + beta = inst->MOS3tTransconductance * inst->MOS3m * inst->MOS3w/(inst->MOS3l - 2 * model->MOS3latDiff); - 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; + } else { + /* subthreshold region */ + Sid = 0.0; + } } NevalSrcInstanceTemp( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],