From 9ed7a24a0e3926e191176585d48da177ad2af670 Mon Sep 17 00:00:00 2001 From: dwarning Date: Sun, 28 Jan 2024 20:11:52 +0100 Subject: [PATCH] mos1...3: Beta in noise w/o channel length modulation --- src/spicelib/devices/mos1/mos1noi.c | 7 +++---- src/spicelib/devices/mos2/mos2noi.c | 7 +++---- src/spicelib/devices/mos3/mos3noi.c | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/spicelib/devices/mos1/mos1noi.c b/src/spicelib/devices/mos1/mos1noi.c index ec7801963..2c853c9a9 100644 --- a/src/spicelib/devices/mos1/mos1noi.c +++ b/src/spicelib/devices/mos1/mos1noi.c @@ -111,8 +111,6 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, vds = *(ckt->CKTstate0 + inst->MOS1vds); vgs = *(ckt->CKTstate0 + inst->MOS1vgs); vgd = vgs - vds; - beta = inst->MOS1tTransconductance * inst->MOS1m * - inst->MOS1w/(inst->MOS1l - 2 * model->MOS1latDiff); vgst=(inst->MOS1mode==1?vgs:vgd) - model->MOS1type*inst->MOS1von; if (vgst > 0) { @@ -124,8 +122,9 @@ MOS1noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, alpha = 1.0 - (vds*inst->MOS1mode/(model->MOS1type*inst->MOS1vdsat)); } } - double betap = beta*(1.0+model->MOS1lambda*(vds*inst->MOS1mode)); - Sid = 2.0 / 3.0 * betap * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS1gdsnoi; + 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; } NevalSrc( & noizDens[MOS1IDNOIZ], & lnNdens[MOS1IDNOIZ], diff --git a/src/spicelib/devices/mos2/mos2noi.c b/src/spicelib/devices/mos2/mos2noi.c index fdbcc3dbc..c3e942adf 100644 --- a/src/spicelib/devices/mos2/mos2noi.c +++ b/src/spicelib/devices/mos2/mos2noi.c @@ -100,8 +100,6 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, vds = *(ckt->CKTstate0 + inst->MOS2vds); vgs = *(ckt->CKTstate0 + inst->MOS2vgs); vgd = vgs - vds; - beta = inst->MOS2tTransconductance * inst->MOS2m * - inst->MOS2w/(inst->MOS2l - 2 * model->MOS2latDiff); vgst=(inst->MOS2mode==1?vgs:vgd) - model->MOS2type*inst->MOS2von; if (vgst > 0) { @@ -113,8 +111,9 @@ MOS2noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, alpha = 1.0 - (vds*inst->MOS2mode/(model->MOS2type*inst->MOS2vdsat)); } } - double betap = beta*(1.0+model->MOS2lambda*(vds*inst->MOS2mode)); - Sid = 2.0 / 3.0 * betap * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS2gdsnoi; + 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; } NevalSrc( & noizDens[MOS2IDNOIZ], & lnNdens[MOS2IDNOIZ], diff --git a/src/spicelib/devices/mos3/mos3noi.c b/src/spicelib/devices/mos3/mos3noi.c index 7caa11e47..3d7551184 100644 --- a/src/spicelib/devices/mos3/mos3noi.c +++ b/src/spicelib/devices/mos3/mos3noi.c @@ -100,8 +100,6 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, vds = *(ckt->CKTstate0 + inst->MOS3vds); vgs = *(ckt->CKTstate0 + inst->MOS3vgs); vgd = vgs - vds; - beta = inst->MOS3tTransconductance * inst->MOS3m * - inst->MOS3w/(inst->MOS3l - 2 * model->MOS3latDiff); vgst=(inst->MOS3mode==1?vgs:vgd) - model->MOS3type*inst->MOS3von; if (vgst > 0) { @@ -113,8 +111,9 @@ MOS3noise(int mode, int operation, GENmodel * genmodel, CKTcircuit * ckt, alpha = 1.0 - (vds*inst->MOS3mode/(model->MOS3type*inst->MOS3vdsat)); } } - double betap = beta; - Sid = 2.0 / 3.0 * betap * vgst * (1.0+alpha+alpha*alpha) / (1.0+alpha) * model->MOS3gdsnoi; + 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; } NevalSrc( & noizDens[MOS3IDNOIZ], & lnNdens[MOS3IDNOIZ],