From b15c7d29f1d595593a6d20bf8532f87ebf753996 Mon Sep 17 00:00:00 2001 From: dwarning Date: Wed, 6 Oct 2021 09:26:07 +0200 Subject: [PATCH] correct temp update for IBE and IBC parameter --- src/spicelib/devices/bjt/bjtsetup.c | 8 ++++---- src/spicelib/devices/bjt/bjttemp.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/spicelib/devices/bjt/bjtsetup.c b/src/spicelib/devices/bjt/bjtsetup.c index 2aa38b9c6..2ffcf6001 100644 --- a/src/spicelib/devices/bjt/bjtsetup.c +++ b/src/spicelib/devices/bjt/bjtsetup.c @@ -47,11 +47,11 @@ BJTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) if(!model->BJTsatCurGiven) { model->BJTsatCur = 1e-16; } - if(!model->BJTBEsatCurGiven) { - model->BJTBEsatCur = model->BJTsatCur; + if(!model->BJTBEsatCurGiven) { /* temp update will decide of IS usage */ + model->BJTBEsatCur = 0.0; } - if(!model->BJTBCsatCurGiven) { - model->BJTBCsatCur = model->BJTsatCur; + if(!model->BJTBCsatCurGiven) { /* temp update will decide of IS usage */ + model->BJTBCsatCur = 0.0; } if(!model->BJTbetaFGiven) { model->BJTbetaF = 100; diff --git a/src/spicelib/devices/bjt/bjttemp.c b/src/spicelib/devices/bjt/bjttemp.c index 58e7461c1..d3418ed47 100644 --- a/src/spicelib/devices/bjt/bjttemp.c +++ b/src/spicelib/devices/bjt/bjttemp.c @@ -149,15 +149,29 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt) if (model->BJTBEsatCurGiven) { factor = exp(factlog / model->BJTemissionCoeffF); here->BJTBEtSatCur = model->BJTBEsatCur * factor; + } else { + here->BJTBEtSatCur = here->BJTtSatCur; } if (model->BJTBCsatCurGiven) { factor = exp(factlog / model->BJTemissionCoeffR); here->BJTBCtSatCur = model->BJTBCsatCur * factor; + } else { + here->BJTBCtSatCur = here->BJTtSatCur; } if (model->BJTsubSatCurGiven) here->BJTtSubSatCur = model->BJTsubSatCur * factor; } else if (model->BJTtlev == 3) { here->BJTtSatCur = pow(model->BJTsatCur,(1+model->BJTtis1*dt+model->BJTtis2*dt*dt)); + if (model->BJTBEsatCurGiven) { + here->BJTBEtSatCur = pow(model->BJTBEsatCur,(1+model->BJTtis1*dt+model->BJTtis2*dt*dt)); + } else { + here->BJTBEtSatCur = here->BJTtSatCur; + } + if (model->BJTBCsatCurGiven) { + here->BJTBCtSatCur = pow(model->BJTBCsatCur,(1+model->BJTtis1*dt+model->BJTtis2*dt*dt)); + } else { + here->BJTBCtSatCur = here->BJTtSatCur; + } if (model->BJTsubSatCurGiven) here->BJTtSubSatCur = pow(model->BJTsubSatCur,(1+model->BJTtiss1*dt+model->BJTtiss2*dt*dt)); }