diff --git a/src/spicelib/devices/bjt/bjt.c b/src/spicelib/devices/bjt/bjt.c index dba2ddd74..a82239890 100644 --- a/src/spicelib/devices/bjt/bjt.c +++ b/src/spicelib/devices/bjt/bjt.c @@ -8,12 +8,6 @@ Author: 1985 Thomas L. Quarles * available to the next level(s) up the calling hierarchy */ -/* - * You may define the preprocessor symbolo - * BJT_COMPAT to enable compatibility with - * archaic spice2 bjt model - */ - #include "ngspice/ngspice.h" #include "ngspice/devdefs.h" #include "bjtdefs.h" @@ -95,9 +89,7 @@ IFparm BJTmPTable[] = { /* model parameters */ IOP("ikf", BJT_MOD_IKF, IF_REAL, "Forward beta roll-off corner current"), IOPR("ik", BJT_MOD_IKF, IF_REAL, "Forward beta roll-off corner current"), IOP("ise", BJT_MOD_ISE, IF_REAL, "B-E leakage saturation current"), -#ifdef BJT_COMPAT - IOP("c2", BJT_MOD_C2, IF_REAL, "Obsolete parameter name"), -#endif + IOPR("c2", BJT_MOD_ISE, IF_REAL, "B-E leakage saturation current alias"), IOP("ne", BJT_MOD_NE, IF_REAL, "B-E leakage emission coefficient"), IOP("br", BJT_MOD_BR, IF_REAL, "Ideal reverse beta"), IOP("nr", BJT_MOD_NR, IF_REAL, "Reverse emission coefficient"), @@ -105,9 +97,7 @@ IFparm BJTmPTable[] = { /* model parameters */ IOPR("vb", BJT_MOD_VAR, IF_REAL, "Reverse Early voltage"), IOP("ikr", BJT_MOD_IKR, IF_REAL, "reverse beta roll-off corner current"), IOP("isc", BJT_MOD_ISC, IF_REAL, "B-C leakage saturation current"), -#ifdef BJT_COMPAT - IOP("c4", BJT_MOD_C4, IF_REAL, "Obsolete parameter name"), -#endif + IOPR("c4", BJT_MOD_ISC, IF_REAL, "B-C leakage saturation current alias"), IOP("nc", BJT_MOD_NC, IF_REAL, "B-C leakage emission coefficient"), IOP("rb", BJT_MOD_RB, IF_REAL, "Zero bias base resistance"), IOP("irb", BJT_MOD_IRB, IF_REAL, "Current for base resistance=(rb+rbm)/2"), diff --git a/src/spicelib/devices/bjt/bjtdefs.h b/src/spicelib/devices/bjt/bjtdefs.h index 18f40b7e3..eed3bee87 100644 --- a/src/spicelib/devices/bjt/bjtdefs.h +++ b/src/spicelib/devices/bjt/bjtdefs.h @@ -376,14 +376,12 @@ typedef struct sBJTmodel { /* model structure for a bjt */ double BJTearlyVoltF; double BJTrollOffF; double BJTleakBEcurrent; /* input - don't use */ - double BJTc2; double BJTleakBEemissionCoeff; double BJTbetaR; /* input - don't use */ double BJTemissionCoeffR; double BJTearlyVoltR; double BJTrollOffR; double BJTleakBCcurrent; /* input - don't use */ - double BJTc4; double BJTleakBCemissionCoeff; double BJTbaseResist; double BJTbaseCurrentHalfResist; @@ -512,14 +510,12 @@ typedef struct sBJTmodel { /* model structure for a bjt */ unsigned BJTearlyVoltFGiven : 1; unsigned BJTrollOffFGiven : 1; unsigned BJTleakBEcurrentGiven : 1; - unsigned BJTc2Given : 1; unsigned BJTleakBEemissionCoeffGiven : 1; unsigned BJTbetaRGiven : 1; unsigned BJTemissionCoeffRGiven : 1; unsigned BJTearlyVoltRGiven : 1; unsigned BJTrollOffRGiven : 1; unsigned BJTleakBCcurrentGiven : 1; - unsigned BJTc4Given : 1; unsigned BJTleakBCemissionCoeffGiven : 1; unsigned BJTbaseResistGiven : 1; unsigned BJTbaseCurrentHalfResistGiven : 1; @@ -668,14 +664,12 @@ enum { BJT_MOD_VAF, BJT_MOD_IKF, BJT_MOD_ISE, - BJT_MOD_C2, BJT_MOD_NE, BJT_MOD_BR, BJT_MOD_NR, BJT_MOD_VAR, BJT_MOD_IKR, BJT_MOD_ISC, - BJT_MOD_C4, BJT_MOD_NC, BJT_MOD_RB, BJT_MOD_IRB, diff --git a/src/spicelib/devices/bjt/bjtmask.c b/src/spicelib/devices/bjt/bjtmask.c index 8893d3b61..72fc7a029 100644 --- a/src/spicelib/devices/bjt/bjtmask.c +++ b/src/spicelib/devices/bjt/bjtmask.c @@ -57,9 +57,6 @@ BJTmAsk(CKTcircuit *ckt, GENmodel *instPtr, int which, IFvalue *value) case BJT_MOD_ISE: value->rValue = here->BJTleakBEcurrent; return(OK); - case BJT_MOD_C2: - value->rValue = here->BJTc2; - return(OK); case BJT_MOD_NE: value->rValue = here->BJTleakBEemissionCoeff; return(OK); @@ -78,9 +75,6 @@ BJTmAsk(CKTcircuit *ckt, GENmodel *instPtr, int which, IFvalue *value) case BJT_MOD_ISC: value->rValue = here->BJTleakBCcurrent; return(OK); - case BJT_MOD_C4: - value->rValue = here->BJTc4; - return(OK); case BJT_MOD_NC: value->rValue = here->BJTleakBCemissionCoeff; return(OK); diff --git a/src/spicelib/devices/bjt/bjtmpar.c b/src/spicelib/devices/bjt/bjtmpar.c index ec37c20f7..6a74a17b3 100644 --- a/src/spicelib/devices/bjt/bjtmpar.c +++ b/src/spicelib/devices/bjt/bjtmpar.c @@ -66,10 +66,6 @@ BJTmParam(int param, IFvalue *value, GENmodel *inModel) mods->BJTleakBEcurrent = value->rValue; mods->BJTleakBEcurrentGiven = TRUE; break; - case BJT_MOD_C2: - mods->BJTc2 = value->rValue; - mods->BJTc2Given=TRUE; - break; case BJT_MOD_NE: mods->BJTleakBEemissionCoeff = value->rValue; mods->BJTleakBEemissionCoeffGiven = TRUE; @@ -94,10 +90,6 @@ BJTmParam(int param, IFvalue *value, GENmodel *inModel) mods->BJTleakBCcurrent = value->rValue; mods->BJTleakBCcurrentGiven = TRUE; break; - case BJT_MOD_C4: - mods->BJTc4 = value->rValue; - mods->BJTc4Given=TRUE; - break; case BJT_MOD_NC: mods->BJTleakBCemissionCoeff = value->rValue; mods->BJTleakBCemissionCoeffGiven = TRUE; diff --git a/src/spicelib/devices/bjt/bjtsetup.c b/src/spicelib/devices/bjt/bjtsetup.c index ff1aa3507..cf09d6f1b 100644 --- a/src/spicelib/devices/bjt/bjtsetup.c +++ b/src/spicelib/devices/bjt/bjtsetup.c @@ -53,6 +53,20 @@ BJTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) if(!model->BJTemissionCoeffFGiven) { model->BJTemissionCoeffF = 1; } + if(!model->BJTleakBEcurrentGiven) { + model->BJTleakBEcurrent = 0; + } else { + if(model->BJTleakBEcurrent > 1e-04) { + model->BJTleakBEcurrent = model->BJTsatCur * model->BJTleakBEcurrent; + } + } + if(!model->BJTleakBCcurrentGiven) { + model->BJTleakBCcurrent = 0; + } else { + if(model->BJTleakBCcurrent > 1e-04) { + model->BJTleakBCcurrent = model->BJTsatCur * model->BJTleakBCcurrent; + } + } if(!model->BJTleakBEemissionCoeffGiven) { model->BJTleakBEemissionCoeff = 1.5; } diff --git a/src/spicelib/devices/bjt/bjttemp.c b/src/spicelib/devices/bjt/bjttemp.c index d74217f73..9af40ae42 100644 --- a/src/spicelib/devices/bjt/bjttemp.c +++ b/src/spicelib/devices/bjt/bjttemp.c @@ -44,20 +44,6 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt) vtnom = CONSTKoverQ * model->BJTtnom; fact1 = model->BJTtnom/REFTEMP; - if(!model->BJTleakBEcurrentGiven) { - if(model->BJTc2Given) { - model->BJTleakBEcurrent = model->BJTc2 * model->BJTsatCur; - } else { - model->BJTleakBEcurrent = 0; - } - } - if(!model->BJTleakBCcurrentGiven) { - if(model->BJTc4Given) { - model->BJTleakBCcurrent = model->BJTc4 * model->BJTsatCur; - } else { - model->BJTleakBCcurrent = 0; - } - } if(!model->BJTminBaseResistGiven) { model->BJTminBaseResist = model->BJTbaseResist; }