From fa936c397fc502a53a58cef38585d68ecb2914f2 Mon Sep 17 00:00:00 2001 From: pnenzi Date: Mon, 27 Oct 2003 19:30:52 +0000 Subject: [PATCH] Enhanced model: m,dtemp. --- src/spicelib/devices/bjt/bjt.c | 5 +- src/spicelib/devices/bjt/bjtacld.c | 75 +++++++++-------- src/spicelib/devices/bjt/bjtask.c | 14 ++-- src/spicelib/devices/bjt/bjtconv.c | 5 +- src/spicelib/devices/bjt/bjtdefs.h | 10 ++- src/spicelib/devices/bjt/bjtdel.c | 6 +- src/spicelib/devices/bjt/bjtdest.c | 4 +- src/spicelib/devices/bjt/bjtdisto.c | 1 - src/spicelib/devices/bjt/bjtdset.c | 25 +++--- src/spicelib/devices/bjt/bjtext.h | 3 +- src/spicelib/devices/bjt/bjtgetic.c | 5 +- src/spicelib/devices/bjt/bjtload.c | 80 +++++++++--------- src/spicelib/devices/bjt/bjtmask.c | 7 +- src/spicelib/devices/bjt/bjtmdel.c | 7 +- src/spicelib/devices/bjt/bjtmpar.c | 6 +- src/spicelib/devices/bjt/bjtnoise.c | 20 ++--- src/spicelib/devices/bjt/bjtparam.c | 17 ++-- src/spicelib/devices/bjt/bjtpzld.c | 123 ++++++++++++++-------------- src/spicelib/devices/bjt/bjtsacl.c | 8 +- src/spicelib/devices/bjt/bjtsetup.c | 19 ++--- src/spicelib/devices/bjt/bjtsload.c | 7 +- src/spicelib/devices/bjt/bjtsprt.c | 8 +- src/spicelib/devices/bjt/bjtsset.c | 7 +- src/spicelib/devices/bjt/bjtsupd.c | 7 +- src/spicelib/devices/bjt/bjttemp.c | 9 +- src/spicelib/devices/bjt/bjttrunc.c | 6 +- 26 files changed, 221 insertions(+), 263 deletions(-) diff --git a/src/spicelib/devices/bjt/bjt.c b/src/spicelib/devices/bjt/bjt.c index 4153a6317..4ae96a155 100644 --- a/src/spicelib/devices/bjt/bjt.c +++ b/src/spicelib/devices/bjt/bjt.c @@ -9,7 +9,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "devdefs.h" #include "bjtdefs.h" #include "suffix.h" @@ -19,6 +18,7 @@ IFparm BJTpTable[] = { /* parameters */ IOPAU("icvbe", BJT_IC_VBE, IF_REAL, "Initial B-E voltage"), IOPAU("icvce", BJT_IC_VCE, IF_REAL, "Initial C-E voltage"), IOPU("area", BJT_AREA, IF_REAL, "Area factor"), + IOPU("m", BJT_M, IF_REAL, "Parallel Multiplier"), IP("ic", BJT_IC, IF_REALVEC, "Initial condition vector"), IP("sens_area",BJT_AREA_SENS,IF_FLAG, "flag to request sensitivity WRT area"), OPU("colnode", BJT_QUEST_COLNODE, IF_INTEGER, "Number of collector node"), @@ -68,7 +68,8 @@ IFparm BJTpTable[] = { /* parameters */ OPU("sens_mag", BJT_QUEST_SENS_MAG, IF_REAL, "sensitivity of ac magnitude"), OPU("sens_ph", BJT_QUEST_SENS_PH, IF_REAL, "sensitivity of ac phase"), OPU("sens_cplx", BJT_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity"), - IOPU("temp", BJT_TEMP, IF_REAL, "instance temperature") + IOPU("temp", BJT_TEMP, IF_REAL, "instance temperature"), + IOPU("dtemp", BJT_DTEMP, IF_REAL, "instance temperature delta from circuit") }; IFparm BJTmPTable[] = { /* model parameters */ diff --git a/src/spicelib/devices/bjt/bjtacld.c b/src/spicelib/devices/bjt/bjtacld.c index f647e2c28..70a9709c9 100644 --- a/src/spicelib/devices/bjt/bjtacld.c +++ b/src/spicelib/devices/bjt/bjtacld.c @@ -10,17 +10,13 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "sperror.h" #include "suffix.h" int -BJTacLoad(inModel,ckt) - GENmodel *inModel; - CKTcircuit *ckt; - +BJTacLoad(GENmodel *inModel, CKTcircuit *ckt) { BJTinstance *here; BJTmodel *model = (BJTmodel*)inModel; @@ -39,12 +35,15 @@ BJTacLoad(inModel,ckt) double xcbx; double xccs; double xcmcb; + double m; for( ; model != NULL; model = model->BJTnextModel) { for( here = model->BJTinstances; here!= NULL; here = here->BJTnextInstance) { if (here->BJTowner != ARCHme) continue; + m = here->BJTm; + gcpr=model->BJTcollectorConduct * here->BJTarea; gepr=model->BJTemitterConduct * here->BJTarea; gpi= *(ckt->CKTstate0 + here->BJTgpi); @@ -65,39 +64,39 @@ BJTacLoad(inModel,ckt) xcbx= *(ckt->CKTstate0 + here->BJTcqbx) * ckt->CKTomega; xccs= *(ckt->CKTstate0 + here->BJTcqcs) * ckt->CKTomega; xcmcb= *(ckt->CKTstate0 + here->BJTcexbc) * ckt->CKTomega; - *(here->BJTcolColPtr) += (gcpr); - *(here->BJTbaseBasePtr) += (gx); - *(here->BJTbaseBasePtr + 1) += (xcbx); - *(here->BJTemitEmitPtr) += (gepr); - *(here->BJTcolPrimeColPrimePtr) += (gmu+go+gcpr); - *(here->BJTcolPrimeColPrimePtr + 1) += (xcmu+xccs+xcbx); - *(here->BJTbasePrimeBasePrimePtr) += (gx+gpi+gmu); - *(here->BJTbasePrimeBasePrimePtr + 1) += (xcpi+xcmu+xcmcb); - *(here->BJTemitPrimeEmitPrimePtr) += (gpi+gepr+gm+go); - *(here->BJTemitPrimeEmitPrimePtr + 1) += (xcpi+xgm); - *(here->BJTcolColPrimePtr) += (-gcpr); - *(here->BJTbaseBasePrimePtr) += (-gx); - *(here->BJTemitEmitPrimePtr) += (-gepr); - *(here->BJTcolPrimeColPtr) += (-gcpr); - *(here->BJTcolPrimeBasePrimePtr) += (-gmu+gm); - *(here->BJTcolPrimeBasePrimePtr + 1) += (-xcmu+xgm); - *(here->BJTcolPrimeEmitPrimePtr) += (-gm-go); - *(here->BJTcolPrimeEmitPrimePtr + 1) += (-xgm); - *(here->BJTbasePrimeBasePtr) += (-gx); - *(here->BJTbasePrimeColPrimePtr) += (-gmu); - *(here->BJTbasePrimeColPrimePtr + 1) += (-xcmu-xcmcb); - *(here->BJTbasePrimeEmitPrimePtr) += (-gpi); - *(here->BJTbasePrimeEmitPrimePtr + 1) += (-xcpi); - *(here->BJTemitPrimeEmitPtr) += (-gepr); - *(here->BJTemitPrimeColPrimePtr) += (-go); - *(here->BJTemitPrimeColPrimePtr + 1) += (xcmcb); - *(here->BJTemitPrimeBasePrimePtr) += (-gpi-gm); - *(here->BJTemitPrimeBasePrimePtr + 1) += (-xcpi-xgm-xcmcb); - *(here->BJTsubstSubstPtr + 1) += (xccs); - *(here->BJTcolPrimeSubstPtr + 1) += (-xccs); - *(here->BJTsubstColPrimePtr + 1) += (-xccs); - *(here->BJTbaseColPrimePtr + 1) += (-xcbx); - *(here->BJTcolPrimeBasePtr + 1) += (-xcbx); + *(here->BJTcolColPtr) += m * (gcpr); + *(here->BJTbaseBasePtr) += m * (gx); + *(here->BJTbaseBasePtr + 1) += m * (xcbx); + *(here->BJTemitEmitPtr) += m * (gepr); + *(here->BJTcolPrimeColPrimePtr) += m * (gmu+go+gcpr); + *(here->BJTcolPrimeColPrimePtr + 1) += m * (xcmu+xccs+xcbx); + *(here->BJTbasePrimeBasePrimePtr) += m * (gx+gpi+gmu); + *(here->BJTbasePrimeBasePrimePtr + 1) += m * (xcpi+xcmu+xcmcb); + *(here->BJTemitPrimeEmitPrimePtr) += m * (gpi+gepr+gm+go); + *(here->BJTemitPrimeEmitPrimePtr + 1) += m * (xcpi+xgm); + *(here->BJTcolColPrimePtr) += m * (-gcpr); + *(here->BJTbaseBasePrimePtr) += m * (-gx); + *(here->BJTemitEmitPrimePtr) += m * (-gepr); + *(here->BJTcolPrimeColPtr) += m * (-gcpr); + *(here->BJTcolPrimeBasePrimePtr) += m * (-gmu+gm); + *(here->BJTcolPrimeBasePrimePtr + 1) += m * (-xcmu+xgm); + *(here->BJTcolPrimeEmitPrimePtr) += m * (-gm-go); + *(here->BJTcolPrimeEmitPrimePtr + 1) += m * (-xgm); + *(here->BJTbasePrimeBasePtr) += m * (-gx); + *(here->BJTbasePrimeColPrimePtr) += m * (-gmu); + *(here->BJTbasePrimeColPrimePtr + 1) += m * (-xcmu-xcmcb); + *(here->BJTbasePrimeEmitPrimePtr) += m * (-gpi); + *(here->BJTbasePrimeEmitPrimePtr + 1) += m * (-xcpi); + *(here->BJTemitPrimeEmitPtr) += m * (-gepr); + *(here->BJTemitPrimeColPrimePtr) += m * (-go); + *(here->BJTemitPrimeColPrimePtr + 1) += m * (xcmcb); + *(here->BJTemitPrimeBasePrimePtr) += m * (-gpi-gm); + *(here->BJTemitPrimeBasePrimePtr + 1) += m * (-xcpi-xgm-xcmcb); + *(here->BJTsubstSubstPtr + 1) += m * (xccs); + *(here->BJTcolPrimeSubstPtr + 1) += m * (-xccs); + *(here->BJTsubstColPrimePtr + 1) += m * (-xccs); + *(here->BJTbaseColPrimePtr + 1) += m * (-xcbx); + *(here->BJTcolPrimeBasePtr + 1) += m * (-xcbx); } } return(OK); diff --git a/src/spicelib/devices/bjt/bjtask.c b/src/spicelib/devices/bjt/bjtask.c index 7015732a4..a89880593 100644 --- a/src/spicelib/devices/bjt/bjtask.c +++ b/src/spicelib/devices/bjt/bjtask.c @@ -10,7 +10,6 @@ Author: 1985 Mathew Lew and Thomas L. Quarles #include "ngspice.h" #include "const.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "ifsim.h" @@ -19,12 +18,7 @@ Author: 1985 Mathew Lew and Thomas L. Quarles /*ARGSUSED*/ int -BJTask(ckt,instPtr,which,value,select) - CKTcircuit *ckt; - GENinstance *instPtr; - int which; - IFvalue *value; - IFvalue *select; +BJTask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue *select) { BJTinstance *here = (BJTinstance*)instPtr; double tmp; @@ -45,9 +39,15 @@ BJTask(ckt,instPtr,which,value,select) case BJT_TEMP: value->rValue = here->BJTtemp - CONSTCtoK; return(OK); + case BJT_DTEMP: + value->rValue = here->BJTdtemp; + return(OK); case BJT_AREA: value->rValue = here->BJTarea; return(OK); + case BJT_M: + value->rValue = here->BJTm; + return(OK); case BJT_OFF: value->iValue = here->BJToff; return(OK); diff --git a/src/spicelib/devices/bjt/bjtconv.c b/src/spicelib/devices/bjt/bjtconv.c index 99baeee10..0320a3917 100644 --- a/src/spicelib/devices/bjt/bjtconv.c +++ b/src/spicelib/devices/bjt/bjtconv.c @@ -9,16 +9,13 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "sperror.h" #include "suffix.h" int -BJTconvTest(inModel,ckt) - GENmodel *inModel; - CKTcircuit *ckt; +BJTconvTest(GENmodel *inModel, CKTcircuit *ckt) { BJTinstance *here; diff --git a/src/spicelib/devices/bjt/bjtdefs.h b/src/spicelib/devices/bjt/bjtdefs.h index b94d16d52..a05d0c911 100644 --- a/src/spicelib/devices/bjt/bjtdefs.h +++ b/src/spicelib/devices/bjt/bjtdefs.h @@ -31,10 +31,12 @@ typedef struct sBJTinstance { int BJTcolPrimeNode; /* number of internal collector node of bjt */ int BJTbasePrimeNode; /* number of internal base node of bjt */ int BJTemitPrimeNode; /* number of internal emitter node of bjt */ - double BJTarea; /* area factor for the bjt */ + double BJTarea; /* area factor for the bjt */ + double BJTm; /* parallel multiplier */ double BJTicVBE; /* initial condition voltage B-E*/ double BJTicVCE; /* initial condition voltage C-E*/ double BJTtemp; /* instance temperature */ + double BJTdtemp; /* instance delta temperature from circuit */ double BJTtSatCur; /* temperature adjusted saturation current */ double BJTtBetaF; /* temperature adjusted forward beta */ double BJTtBetaR; /* temperature adjusted reverse beta */ @@ -97,9 +99,11 @@ typedef struct sBJTinstance { double *BJTcolPrimeBasePtr; /* pointer to sparse matrix at * (collector prime,base) */ - unsigned BJToff :1; /* 'off' flag for bjt */ + unsigned BJToff :1; /* 'off' flag for bjt */ unsigned BJTtempGiven :1; /* temperature given for bjt instance*/ + unsigned BJTdtempGiven :1; /* delta temperature given for bjt instance*/ unsigned BJTareaGiven :1; /* flag to indicate area was specified */ + unsigned BJTmGiven :1; /* flag to indicate m parameter specified */ unsigned BJTicVBEGiven :1; /* flag to indicate VBE init. cond. given */ unsigned BJTicVCEGiven :1; /* flag to indicate VCE init. cond. given */ unsigned BJTsenPertFlag :1; /* indictes whether the the parameter of @@ -403,6 +407,8 @@ typedef struct sBJTmodel { /* model structure for a bjt */ #define BJT_IC 5 #define BJT_AREA_SENS 6 #define BJT_TEMP 7 +#define BJT_DTEMP 8 +#define BJT_M 9 /* model parameters */ #define BJT_MOD_NPN 101 diff --git a/src/spicelib/devices/bjt/bjtdel.c b/src/spicelib/devices/bjt/bjtdel.c index e2fe50f0c..a65e54f39 100644 --- a/src/spicelib/devices/bjt/bjtdel.c +++ b/src/spicelib/devices/bjt/bjtdel.c @@ -9,17 +9,13 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "bjtdefs.h" #include "sperror.h" #include "suffix.h" int -BJTdelete(inModel,name,kill) - GENmodel *inModel; - IFuid name; - GENinstance **kill; +BJTdelete(GENmodel *inModel, IFuid name, GENinstance **kill) { BJTmodel *model = (BJTmodel*)inModel; diff --git a/src/spicelib/devices/bjt/bjtdest.c b/src/spicelib/devices/bjt/bjtdest.c index 763fdb80c..78f46c4fa 100644 --- a/src/spicelib/devices/bjt/bjtdest.c +++ b/src/spicelib/devices/bjt/bjtdest.c @@ -11,14 +11,12 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "bjtdefs.h" #include "suffix.h" void -BJTdestroy(inModel) - GENmodel **inModel; +BJTdestroy(GENmodel **inModel) { diff --git a/src/spicelib/devices/bjt/bjtdisto.c b/src/spicelib/devices/bjt/bjtdisto.c index 9810f72ec..4dc71c590 100644 --- a/src/spicelib/devices/bjt/bjtdisto.c +++ b/src/spicelib/devices/bjt/bjtdisto.c @@ -5,7 +5,6 @@ Modified: 2000 AlansFixes **********/ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "sperror.h" diff --git a/src/spicelib/devices/bjt/bjtdset.c b/src/spicelib/devices/bjt/bjtdset.c index 89c4af610..0a67beb4d 100644 --- a/src/spicelib/devices/bjt/bjtdset.c +++ b/src/spicelib/devices/bjt/bjtdset.c @@ -4,7 +4,6 @@ Author: 1988 Jaijeet S Roychowdhury **********/ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "const.h" @@ -154,16 +153,16 @@ BJTdSetup(GENmodel *inModel, CKTcircuit *ckt) /* * dc model paramters */ - csat=here->BJTtSatCur*here->BJTarea; - rbpr=model->BJTminBaseResist/here->BJTarea; - rbpi=model->BJTbaseResist/here->BJTarea-rbpr; - oik=model->BJTinvRollOffF/here->BJTarea; - c2=here->BJTtBEleakCur*here->BJTarea; + csat=here->BJTtSatCur*here->BJTarea * here->BJTm; + rbpr=model->BJTminBaseResist/(here->BJTarea * here->BJTm); + rbpi=model->BJTbaseResist/(here->BJTarea * here->BJTm)-rbpr; + oik=model->BJTinvRollOffF/(here->BJTarea * here->BJTm); + c2=here->BJTtBEleakCur*here->BJTarea * here->BJTm; vte=model->BJTleakBEemissionCoeff*vt; - oikr=model->BJTinvRollOffR/here->BJTarea; - c4=here->BJTtBCleakCur*here->BJTarea; + oikr=model->BJTinvRollOffR/(here->BJTarea * here->BJTm); + c4=here->BJTtBCleakCur*here->BJTarea * here->BJTm; vtc=model->BJTleakBCemissionCoeff*vt; - xjrb=model->BJTbaseCurrentHalfResist*here->BJTarea; + xjrb=model->BJTbaseCurrentHalfResist*here->BJTarea * here->BJTm; /* @@ -480,22 +479,22 @@ BJTdSetup(GENmodel *inModel, CKTcircuit *ckt) */ tf=model->BJTtransitTimeF; tr=model->BJTtransitTimeR; - czbe=here->BJTtBEcap*here->BJTarea; + czbe=here->BJTtBEcap*here->BJTarea * here->BJTm; pe=here->BJTtBEpot; xme=model->BJTjunctionExpBE; cdis=model->BJTbaseFractionBCcap; - ctot=here->BJTtBCcap*here->BJTarea; + ctot=here->BJTtBCcap*here->BJTarea * here->BJTm; czbc=ctot*cdis; czbx=ctot-czbc; pc=here->BJTtBCpot; xmc=model->BJTjunctionExpBC; fcpe=here->BJTtDepCap; - czcs=model->BJTcapCS*here->BJTarea; + czcs=model->BJTcapCS*here->BJTarea * here->BJTm; ps=model->BJTpotentialSubstrate; xms=model->BJTexponentialSubstrate; xtf=model->BJTtransitTimeBiasCoeffF; ovtf=model->BJTtransitTimeVBCFactor; - xjtf=model->BJTtransitTimeHighCurrentF*here->BJTarea; + xjtf=model->BJTtransitTimeHighCurrentF*here->BJTarea * here->BJTm; if(tf != 0 && vbe >0) { EqualDeriv(&d_cbe, &d_p); d_cbe.value = cbe; diff --git a/src/spicelib/devices/bjt/bjtext.h b/src/spicelib/devices/bjt/bjtext.h index fa0c77edd..69e5c3322 100644 --- a/src/spicelib/devices/bjt/bjtext.h +++ b/src/spicelib/devices/bjt/bjtext.h @@ -1,7 +1,7 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles -Modified: 2000 AnalsFixes +Modified: 2000 AlansFixes **********/ #ifndef __BJTEXT_H #define __BJTEXT_H @@ -30,7 +30,6 @@ extern int BJTtemp(GENmodel*,CKTcircuit*); extern int BJTtrunc(GENmodel*,CKTcircuit*,double*); extern int BJTdisto(int,GENmodel*,CKTcircuit*); extern int BJTnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*); - extern int BJTdSetup(GENmodel*, register CKTcircuit*); #endif diff --git a/src/spicelib/devices/bjt/bjtgetic.c b/src/spicelib/devices/bjt/bjtgetic.c index 4665a7cd9..7d0dea803 100644 --- a/src/spicelib/devices/bjt/bjtgetic.c +++ b/src/spicelib/devices/bjt/bjtgetic.c @@ -11,7 +11,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "sperror.h" @@ -19,9 +18,7 @@ Author: 1985 Thomas L. Quarles int -BJTgetic(inModel,ckt) - GENmodel *inModel; - CKTcircuit *ckt; +BJTgetic(GENmodel *inModel, CKTcircuit *ckt) { diff --git a/src/spicelib/devices/bjt/bjtload.c b/src/spicelib/devices/bjt/bjtload.c index 226547ea2..dd9a41179 100644 --- a/src/spicelib/devices/bjt/bjtload.c +++ b/src/spicelib/devices/bjt/bjtload.c @@ -10,7 +10,6 @@ Modified: 2000 AlansFixes */ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "const.h" @@ -20,13 +19,10 @@ Modified: 2000 AlansFixes #include "suffix.h" int -BJTload(inModel,ckt) - - GENmodel *inModel; - CKTcircuit *ckt; +BJTload(GENmodel *inModel, CKTcircuit *ckt) /* actually load the current resistance value into the - * sparse matrix previously provided - */ + * sparse matrix previously provided + */ { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; @@ -132,6 +128,8 @@ BJTload(inModel,ckt) int ichk1; int error; int SenCond=0; + double m; + /* loop through all the models */ for( ; model != NULL; model = model->BJTnextModel ) { @@ -141,7 +139,9 @@ BJTload(inModel,ckt) if (here->BJTowner != ARCHme) continue; vt = here->BJTtemp * CONSTKoverQ; - + + m = here->BJTm; + if(ckt->CKTsenInfo){ #ifdef SENSDEBUG printf("BJTload \n"); @@ -314,7 +314,7 @@ BJTload(inModel,ckt) cbhat= *(ckt->CKTstate0 + here->BJTcb)+ *(ckt->CKTstate0 + here->BJTgpi)*delvbe+ *(ckt->CKTstate0 + here->BJTgmu)* delvbc; - +#ifndef NOBYPASS /* * bypass if solution has not changed */ @@ -355,7 +355,7 @@ BJTload(inModel,ckt) geqbx = *(ckt->CKTstate0 + here->BJTgeqbx); goto load; } - +#endif /*NOBYPASS*/ /* * limit nonlinear branch voltages */ @@ -713,8 +713,8 @@ next2: if(SenCond)continue; load: /* - * load current excitation vector - */ + * load current excitation vector + */ ceqcs=model->BJTtype * (*(ckt->CKTstate0 + here->BJTcqcs) - vcs * gccs); ceqbx=model->BJTtype * (*(ckt->CKTstate0 + here->BJTcqbx) - @@ -723,39 +723,39 @@ load: (go - geqcb)); ceqbc=model->BJTtype * (-cc + vbe * (gm + go) - vbc * (gmu + go)); - *(ckt->CKTrhs + here->BJTbaseNode) += (-ceqbx); + *(ckt->CKTrhs + here->BJTbaseNode) += m * (-ceqbx); *(ckt->CKTrhs + here->BJTcolPrimeNode) += - (ceqcs+ceqbx+ceqbc); + m * (ceqcs+ceqbx+ceqbc); *(ckt->CKTrhs + here->BJTbasePrimeNode) += - (-ceqbe-ceqbc); - *(ckt->CKTrhs + here->BJTemitPrimeNode) += (ceqbe); - *(ckt->CKTrhs + here->BJTsubstNode) += (-ceqcs); + m * (-ceqbe-ceqbc); + *(ckt->CKTrhs + here->BJTemitPrimeNode) += m * (ceqbe); + *(ckt->CKTrhs + here->BJTsubstNode) += m * (-ceqcs); /* * load y matrix */ - *(here->BJTcolColPtr) += (gcpr); - *(here->BJTbaseBasePtr) += (gx+geqbx); - *(here->BJTemitEmitPtr) += (gepr); - *(here->BJTcolPrimeColPrimePtr) += (gmu+go+gcpr+gccs+geqbx); - *(here->BJTbasePrimeBasePrimePtr) += (gx +gpi+gmu+geqcb); - *(here->BJTemitPrimeEmitPrimePtr) += (gpi+gepr+gm+go); - *(here->BJTcolColPrimePtr) += (-gcpr); - *(here->BJTbaseBasePrimePtr) += (-gx); - *(here->BJTemitEmitPrimePtr) += (-gepr); - *(here->BJTcolPrimeColPtr) += (-gcpr); - *(here->BJTcolPrimeBasePrimePtr) += (-gmu+gm); - *(here->BJTcolPrimeEmitPrimePtr) += (-gm-go); - *(here->BJTbasePrimeBasePtr) += (-gx); - *(here->BJTbasePrimeColPrimePtr) += (-gmu-geqcb); - *(here->BJTbasePrimeEmitPrimePtr) += (-gpi); - *(here->BJTemitPrimeEmitPtr) += (-gepr); - *(here->BJTemitPrimeColPrimePtr) += (-go+geqcb); - *(here->BJTemitPrimeBasePrimePtr) += (-gpi-gm-geqcb); - *(here->BJTsubstSubstPtr) += (gccs); - *(here->BJTcolPrimeSubstPtr) += (-gccs); - *(here->BJTsubstColPrimePtr) += (-gccs); - *(here->BJTbaseColPrimePtr) += (-geqbx); - *(here->BJTcolPrimeBasePtr) += (-geqbx); + *(here->BJTcolColPtr) += m * (gcpr); + *(here->BJTbaseBasePtr) += m * (gx+geqbx); + *(here->BJTemitEmitPtr) += m * (gepr); + *(here->BJTcolPrimeColPrimePtr) += m * (gmu+go+gcpr+gccs+geqbx); + *(here->BJTbasePrimeBasePrimePtr) += m * (gx +gpi+gmu+geqcb); + *(here->BJTemitPrimeEmitPrimePtr) += m * (gpi+gepr+gm+go); + *(here->BJTcolColPrimePtr) += m * (-gcpr); + *(here->BJTbaseBasePrimePtr) += m * (-gx); + *(here->BJTemitEmitPrimePtr) += m * (-gepr); + *(here->BJTcolPrimeColPtr) += m * (-gcpr); + *(here->BJTcolPrimeBasePrimePtr) += m * (-gmu+gm); + *(here->BJTcolPrimeEmitPrimePtr) += m * (-gm-go); + *(here->BJTbasePrimeBasePtr) += m * (-gx); + *(here->BJTbasePrimeColPrimePtr) += m * (-gmu-geqcb); + *(here->BJTbasePrimeEmitPrimePtr) += m * (-gpi); + *(here->BJTemitPrimeEmitPtr) += m * (-gepr); + *(here->BJTemitPrimeColPrimePtr) += m * (-go+geqcb); + *(here->BJTemitPrimeBasePrimePtr) += m * (-gpi-gm-geqcb); + *(here->BJTsubstSubstPtr) += m * (gccs); + *(here->BJTcolPrimeSubstPtr) += m * (-gccs); + *(here->BJTsubstColPrimePtr) += m * (-gccs); + *(here->BJTbaseColPrimePtr) += m * (-geqbx); + *(here->BJTcolPrimeBasePtr) += m * (-geqbx); } } return(OK); diff --git a/src/spicelib/devices/bjt/bjtmask.c b/src/spicelib/devices/bjt/bjtmask.c index 6727a084b..29ae04e5f 100644 --- a/src/spicelib/devices/bjt/bjtmask.c +++ b/src/spicelib/devices/bjt/bjtmask.c @@ -6,7 +6,6 @@ Author: 1987 Mathew Lew and Thomas L. Quarles */ #include "ngspice.h" -#include #include "const.h" #include "ifsim.h" #include "cktdefs.h" @@ -18,11 +17,7 @@ Author: 1987 Mathew Lew and Thomas L. Quarles /*ARGSUSED*/ int -BJTmAsk(ckt,instPtr,which,value) - CKTcircuit *ckt; - GENmodel *instPtr; - int which; - IFvalue *value; +BJTmAsk(CKTcircuit *ckt, GENmodel *instPtr, int which, IFvalue *value) { BJTmodel *here = (BJTmodel*)instPtr; diff --git a/src/spicelib/devices/bjt/bjtmdel.c b/src/spicelib/devices/bjt/bjtmdel.c index c57bf48c1..71e89ba92 100644 --- a/src/spicelib/devices/bjt/bjtmdel.c +++ b/src/spicelib/devices/bjt/bjtmdel.c @@ -12,18 +12,13 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "bjtdefs.h" #include "sperror.h" #include "suffix.h" int -BJTmDelete(inModels,modname,kill) - GENmodel **inModels; - IFuid modname; - GENmodel *kill; - +BJTmDelete(GENmodel **inModels, IFuid modname, GENmodel *kill) { BJTmodel **model = (BJTmodel**)inModels; BJTmodel *modfast = (BJTmodel*)kill; diff --git a/src/spicelib/devices/bjt/bjtmpar.c b/src/spicelib/devices/bjt/bjtmpar.c index 5bd74ea45..d6e02a3dc 100644 --- a/src/spicelib/devices/bjt/bjtmpar.c +++ b/src/spicelib/devices/bjt/bjtmpar.c @@ -11,7 +11,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "const.h" #include "ifsim.h" #include "bjtdefs.h" @@ -20,10 +19,7 @@ Author: 1985 Thomas L. Quarles int -BJTmParam(param,value,inModel) - int param; - IFvalue *value; - GENmodel *inModel; +BJTmParam(int param, IFvalue *value, GENmodel *inModel) { BJTmodel *mods = (BJTmodel*)inModel; diff --git a/src/spicelib/devices/bjt/bjtnoise.c b/src/spicelib/devices/bjt/bjtnoise.c index 60a11cd6b..0bbd6f8a4 100644 --- a/src/spicelib/devices/bjt/bjtnoise.c +++ b/src/spicelib/devices/bjt/bjtnoise.c @@ -4,7 +4,6 @@ Author: 1987 Gary W. Ng **********/ #include "ngspice.h" -#include #include "bjtdefs.h" #include "cktdefs.h" #include "iferrmsg.h" @@ -25,13 +24,8 @@ extern void NevalSrc(); extern double Nintegrate(); int -BJTnoise (mode, operation, genmodel, ckt, data, OnDens) - GENmodel *genmodel; - int mode; - int operation; - CKTcircuit *ckt; - Ndata *data; - double *OnDens; +BJTnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, + Ndata *data, double *OnDens) { BJTmodel *firstModel = (BJTmodel *) genmodel; BJTmodel *model; @@ -124,7 +118,7 @@ if (!data->namelist) return(E_NOMEM); case N_DENS: NevalSrc(&noizDens[BJTRCNOIZ],&lnNdens[BJTRCNOIZ], ckt,THERMNOISE,inst->BJTcolPrimeNode,inst->BJTcolNode, - model->BJTcollectorConduct * inst->BJTarea); + model->BJTcollectorConduct * inst->BJTarea * inst->BJTm); NevalSrc(&noizDens[BJTRBNOIZ],&lnNdens[BJTRBNOIZ], ckt,THERMNOISE,inst->BJTbasePrimeNode,inst->BJTbaseNode, @@ -132,20 +126,20 @@ if (!data->namelist) return(E_NOMEM); NevalSrc(&noizDens[BJT_RE_NOISE],&lnNdens[BJT_RE_NOISE], ckt,THERMNOISE,inst->BJTemitPrimeNode,inst->BJTemitNode, - model->BJTemitterConduct * inst->BJTarea); + model->BJTemitterConduct * inst->BJTarea * inst-> BJTm); NevalSrc(&noizDens[BJTICNOIZ],&lnNdens[BJTICNOIZ], ckt,SHOTNOISE,inst->BJTcolPrimeNode, inst->BJTemitPrimeNode, - *(ckt->CKTstate0 + inst->BJTcc)); + *(ckt->CKTstate0 + inst->BJTcc) * inst->BJTm); NevalSrc(&noizDens[BJTIBNOIZ],&lnNdens[BJTIBNOIZ], ckt,SHOTNOISE,inst->BJTbasePrimeNode, inst->BJTemitPrimeNode, - *(ckt->CKTstate0 + inst->BJTcb)); + *(ckt->CKTstate0 + inst->BJTcb) * inst->BJTm); NevalSrc(&noizDens[BJTFLNOIZ],(double*)NULL,ckt, N_GAIN,inst->BJTbasePrimeNode, inst->BJTemitPrimeNode, (double)0.0); - noizDens[BJTFLNOIZ] *= model->BJTfNcoef * + noizDens[BJTFLNOIZ] *= inst->BJTm * model->BJTfNcoef * exp(model->BJTfNexp * log(MAX(fabs(*(ckt->CKTstate0 + inst->BJTcb)),N_MINLOG))) / data->freq; diff --git a/src/spicelib/devices/bjt/bjtparam.c b/src/spicelib/devices/bjt/bjtparam.c index 8922fca63..37b4a7e66 100644 --- a/src/spicelib/devices/bjt/bjtparam.c +++ b/src/spicelib/devices/bjt/bjtparam.c @@ -11,7 +11,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "const.h" #include "ifsim.h" #include "bjtdefs.h" @@ -21,11 +20,7 @@ Author: 1985 Thomas L. Quarles /* ARGSUSED */ int -BJTparam(param,value,instPtr,select) - int param; - IFvalue *value; - GENinstance *instPtr; - IFvalue *select; +BJTparam(int param, IFvalue *value, GENinstance *instPtr, IFvalue *select) { BJTinstance *here = (BJTinstance*)instPtr; @@ -34,10 +29,18 @@ BJTparam(param,value,instPtr,select) here->BJTarea = value->rValue; here->BJTareaGiven = TRUE; break; + case BJT_M: + here->BJTm = value->rValue; + here->BJTmGiven = TRUE; + break; case BJT_TEMP: - here->BJTtemp = value->rValue+CONSTCtoK; + here->BJTtemp = value->rValue + CONSTCtoK; here->BJTtempGiven = TRUE; break; + case BJT_DTEMP: + here->BJTdtemp = value->rValue; + here->BJTdtempGiven = TRUE; + break; case BJT_OFF: here->BJToff = value->iValue; break; diff --git a/src/spicelib/devices/bjt/bjtpzld.c b/src/spicelib/devices/bjt/bjtpzld.c index ed1110c06..ee75f9580 100644 --- a/src/spicelib/devices/bjt/bjtpzld.c +++ b/src/spicelib/devices/bjt/bjtpzld.c @@ -6,7 +6,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "complex.h" #include "bjtdefs.h" @@ -15,11 +14,7 @@ Author: 1985 Thomas L. Quarles int -BJTpzLoad(inModel,ckt,s) - GENmodel *inModel; - CKTcircuit *ckt; - SPcomplex *s; - +BJTpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; @@ -36,12 +31,15 @@ BJTpzLoad(inModel,ckt,s) double xcbx; double xccs; double xcmcb; + double m; for( ; model != NULL; model = model->BJTnextModel) { for( here = model->BJTinstances; here!= NULL; here = here->BJTnextInstance) { if (here->BJTowner != ARCHme) continue; + m = here->BJTm; + gcpr=model->BJTcollectorResist * here->BJTarea; gepr=model->BJTemitterResist * here->BJTarea; gpi= *(ckt->CKTstate0 + here->BJTgpi); @@ -55,62 +53,63 @@ BJTpzLoad(inModel,ckt,s) xcbx= *(ckt->CKTstate0 + here->BJTcqbx); xccs= *(ckt->CKTstate0 + here->BJTcqcs); xcmcb= *(ckt->CKTstate0 + here->BJTcexbc); - *(here->BJTcolColPtr) += (gcpr); - *(here->BJTbaseBasePtr) += (gx) + (xcbx) * (s->real); - *(here->BJTbaseBasePtr + 1) += (xcbx) * (s->imag); - *(here->BJTemitEmitPtr) += (gepr); - *(here->BJTcolPrimeColPrimePtr) += (gmu+go+gcpr) - + (xcmu+xccs+xcbx) * (s->real); - *(here->BJTcolPrimeColPrimePtr + 1) += (xcmu+xccs+xcbx) - * (s->imag); - *(here->BJTbasePrimeBasePrimePtr) += (gx+gpi+gmu) - + (xcpi+xcmu+xcmcb) * (s->real); - *(here->BJTbasePrimeBasePrimePtr + 1) += (xcpi+xcmu+xcmcb) - * (s->imag); - *(here->BJTemitPrimeEmitPrimePtr) += (gpi+gepr+gm+go) - + (xcpi+xgm) * (s->real); - *(here->BJTemitPrimeEmitPrimePtr + 1) += (xcpi+xgm) - * (s->imag); - *(here->BJTcolColPrimePtr) += (-gcpr); - *(here->BJTbaseBasePrimePtr) += (-gx); - *(here->BJTemitEmitPrimePtr) += (-gepr); - *(here->BJTcolPrimeColPtr) += (-gcpr); - *(here->BJTcolPrimeBasePrimePtr) += (-gmu+gm) - + (-xcmu+xgm) * (s->real); - *(here->BJTcolPrimeBasePrimePtr + 1) += (-xcmu+xgm) - * (s->imag); - *(here->BJTcolPrimeEmitPrimePtr) += (-gm-go) - + (-xgm) * (s->real); - *(here->BJTcolPrimeEmitPrimePtr + 1) += (-xgm) * - (s->imag); - *(here->BJTbasePrimeBasePtr) += (-gx); - *(here->BJTbasePrimeColPrimePtr) += (-gmu) - + (-xcmu-xcmcb) * (s->real); - *(here->BJTbasePrimeColPrimePtr + 1) += (-xcmu-xcmcb) - * (s->imag); - *(here->BJTbasePrimeEmitPrimePtr) += (-gpi) - + (-xcpi) * (s->real); - *(here->BJTbasePrimeEmitPrimePtr + 1) += (-xcpi) - * (s->imag); - *(here->BJTemitPrimeEmitPtr) += (-gepr); - *(here->BJTemitPrimeColPrimePtr) += (-go) - + (xcmcb) * (s->real); - *(here->BJTemitPrimeColPrimePtr + 1) += (xcmcb) - * (s->imag); - *(here->BJTemitPrimeBasePrimePtr) += (-gpi-gm) - + (-xcpi-xgm-xcmcb) * (s->real); - *(here->BJTemitPrimeBasePrimePtr + 1) += (-xcpi-xgm-xcmcb) - * (s->imag); - *(here->BJTsubstSubstPtr) += (xccs) * (s->real); - *(here->BJTsubstSubstPtr + 1) += (xccs) * (s->imag); - *(here->BJTcolPrimeSubstPtr) += (-xccs) * (s->real); - *(here->BJTcolPrimeSubstPtr + 1) += (-xccs) * (s->imag); - *(here->BJTsubstColPrimePtr) += (-xccs) * (s->real); - *(here->BJTsubstColPrimePtr + 1) += (-xccs) * (s->imag); - *(here->BJTbaseColPrimePtr) += (-xcbx) * (s->real); - *(here->BJTbaseColPrimePtr + 1) += (-xcbx) * (s->imag); - *(here->BJTcolPrimeBasePtr) += (-xcbx) * (s->real); - *(here->BJTcolPrimeBasePtr + 1) += (-xcbx) * (s->imag); + + *(here->BJTcolColPtr) += m * (gcpr); + *(here->BJTbaseBasePtr) += m * ((gx) + (xcbx) * (s->real)); + *(here->BJTbaseBasePtr + 1) += m * ((xcbx) * (s->imag)); + *(here->BJTemitEmitPtr) += m * (gepr); + *(here->BJTcolPrimeColPrimePtr) += m * ((gmu+go+gcpr) + + (xcmu+xccs+xcbx) * (s->real)); + *(here->BJTcolPrimeColPrimePtr + 1) += m * ((xcmu+xccs+xcbx) + * (s->imag)); + *(here->BJTbasePrimeBasePrimePtr) += m * ((gx+gpi+gmu) + + (xcpi+xcmu+xcmcb) * (s->real)); + *(here->BJTbasePrimeBasePrimePtr + 1) += m * ((xcpi+xcmu+xcmcb) + * (s->imag)); + *(here->BJTemitPrimeEmitPrimePtr) += m * ((gpi+gepr+gm+go) + + (xcpi+xgm) * (s->real)); + *(here->BJTemitPrimeEmitPrimePtr + 1) += m * ((xcpi+xgm) + * (s->imag)); + *(here->BJTcolColPrimePtr) += m * (-gcpr); + *(here->BJTbaseBasePrimePtr) += m * (-gx); + *(here->BJTemitEmitPrimePtr) += m * (-gepr); + *(here->BJTcolPrimeColPtr) += m * (-gcpr); + *(here->BJTcolPrimeBasePrimePtr) += m * ((-gmu+gm) + + (-xcmu+xgm) * (s->real)); + *(here->BJTcolPrimeBasePrimePtr + 1) += m * ((-xcmu+xgm) + * (s->imag)); + *(here->BJTcolPrimeEmitPrimePtr) += m * ((-gm-go) + + (-xgm) * (s->real)); + *(here->BJTcolPrimeEmitPrimePtr + 1) += m * ((-xgm) * + (s->imag)); + *(here->BJTbasePrimeBasePtr) += m * (-gx); + *(here->BJTbasePrimeColPrimePtr) += m * ((-gmu) + + (-xcmu-xcmcb) * (s->real)); + *(here->BJTbasePrimeColPrimePtr + 1) += m * ((-xcmu-xcmcb) + * (s->imag)); + *(here->BJTbasePrimeEmitPrimePtr) += m * ((-gpi) + + (-xcpi) * (s->real)); + *(here->BJTbasePrimeEmitPrimePtr + 1) += m * ((-xcpi) + * (s->imag)); + *(here->BJTemitPrimeEmitPtr) += m * (-gepr); + *(here->BJTemitPrimeColPrimePtr) += m * ((-go) + + (xcmcb) * (s->real)); + *(here->BJTemitPrimeColPrimePtr + 1) += m * ((xcmcb) + * (s->imag)); + *(here->BJTemitPrimeBasePrimePtr) += m * ((-gpi-gm) + + (-xcpi-xgm-xcmcb) * (s->real)); + *(here->BJTemitPrimeBasePrimePtr + 1) += m * ((-xcpi-xgm-xcmcb) + * (s->imag)); + *(here->BJTsubstSubstPtr) += m * ((xccs) * (s->real)); + *(here->BJTsubstSubstPtr + 1) += m * ((xccs) * (s->imag)); + *(here->BJTcolPrimeSubstPtr) += m * ((-xccs) * (s->real)); + *(here->BJTcolPrimeSubstPtr + 1) += m * ((-xccs) * (s->imag)); + *(here->BJTsubstColPrimePtr) += m * ((-xccs) * (s->real)); + *(here->BJTsubstColPrimePtr + 1) += m * ((-xccs) * (s->imag)); + *(here->BJTbaseColPrimePtr) += m * ((-xcbx) * (s->real)); + *(here->BJTbaseColPrimePtr + 1) += m * ((-xcbx) * (s->imag)); + *(here->BJTcolPrimeBasePtr) += m * ((-xcbx) * (s->real)); + *(here->BJTcolPrimeBasePtr + 1) += m * ((-xcbx) * (s->imag)); } } return(OK); diff --git a/src/spicelib/devices/bjt/bjtsacl.c b/src/spicelib/devices/bjt/bjtsacl.c index 4968879e3..6f5911c08 100644 --- a/src/spicelib/devices/bjt/bjtsacl.c +++ b/src/spicelib/devices/bjt/bjtsacl.c @@ -1,6 +1,8 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles + +This function is obsolete (was used by an old sensitivity analysis) **********/ /* actually load the current ac sensitivity @@ -8,7 +10,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -19,10 +20,7 @@ Author: 1985 Thomas L. Quarles int -BJTsAcLoad(inModel,ckt) -GENmodel *inModel; -CKTcircuit *ckt; - +BJTsAcLoad(GENmodel *inModel, CKTcircuit *ckt) { BJTmodel *model = (BJTmodel*)inModel; diff --git a/src/spicelib/devices/bjt/bjtsetup.c b/src/spicelib/devices/bjt/bjtsetup.c index bce2a9da0..f8da4887e 100644 --- a/src/spicelib/devices/bjt/bjtsetup.c +++ b/src/spicelib/devices/bjt/bjtsetup.c @@ -12,7 +12,6 @@ Modified: 2000 AlansFixes */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -22,15 +21,10 @@ Modified: 2000 AlansFixes #include "suffix.h" int -BJTsetup(matrix,inModel,ckt,states) - SMPmatrix *matrix; - GENmodel *inModel; - CKTcircuit *ckt; - int *states; - /* load the BJT structure with those pointers needed later - * for fast matrix loading - */ - +BJTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) + /* load the BJT structure with those pointers needed later + * for fast matrix loading + */ { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; @@ -158,6 +152,11 @@ BJTsetup(matrix,inModel,ckt,states) if(!here->BJTareaGiven) { here->BJTarea = 1; } + + if(!here->BJTmGiven) { + here->BJTm = 1.0; + } + here->BJTstate = *states; *states += BJTnumStates; if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) ){ diff --git a/src/spicelib/devices/bjt/bjtsload.c b/src/spicelib/devices/bjt/bjtsload.c index 8359b913d..5ac1d58e1 100644 --- a/src/spicelib/devices/bjt/bjtsload.c +++ b/src/spicelib/devices/bjt/bjtsload.c @@ -1,6 +1,8 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles + +This function is obsolete (was used by an old sensitivity analysis) **********/ /* actually load the current sensitivity @@ -8,7 +10,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -19,9 +20,7 @@ Author: 1985 Thomas L. Quarles int -BJTsLoad(inModel,ckt) -GENmodel *inModel; -CKTcircuit *ckt; +BJTsLoad(GENmodel *inModel, CKTcircuit *ckt) { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; diff --git a/src/spicelib/devices/bjt/bjtsprt.c b/src/spicelib/devices/bjt/bjtsprt.c index efdc0a252..7d5aaa451 100644 --- a/src/spicelib/devices/bjt/bjtsprt.c +++ b/src/spicelib/devices/bjt/bjtsprt.c @@ -1,6 +1,8 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles + +This function is obsolete (was used by an old sensitivity analysis) **********/ /* Pretty print the sensitivity info for all @@ -8,7 +10,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -19,10 +20,7 @@ Author: 1985 Thomas L. Quarles void -BJTsPrint(inModel,ckt) - -CKTcircuit *ckt; -GENmodel *inModel; +BJTsPrint(GENmodel *inModel, CKTcircuit *ckt) { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; diff --git a/src/spicelib/devices/bjt/bjtsset.c b/src/spicelib/devices/bjt/bjtsset.c index 954a819a4..e55ff28a1 100644 --- a/src/spicelib/devices/bjt/bjtsset.c +++ b/src/spicelib/devices/bjt/bjtsset.c @@ -1,6 +1,8 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles + +This function is obsolete (was used by an old sensitivity analysis) **********/ /* loop through all the devices and @@ -8,7 +10,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -19,9 +20,7 @@ Author: 1985 Thomas L. Quarles int -BJTsSetup(info,inModel) - SENstruct *info; - GENmodel *inModel; +BJTsSetup(SENstruct *info, GENmodel *inModel) { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; diff --git a/src/spicelib/devices/bjt/bjtsupd.c b/src/spicelib/devices/bjt/bjtsupd.c index 05a4d5141..4354590bd 100644 --- a/src/spicelib/devices/bjt/bjtsupd.c +++ b/src/spicelib/devices/bjt/bjtsupd.c @@ -1,12 +1,13 @@ /********** Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles + +This function is obsolete (was used by an old sensitivity analysis) **********/ /* update the charge sensitivities and their derivatives */ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -17,9 +18,7 @@ Author: 1985 Thomas L. Quarles int -BJTsUpdate(inModel,ckt) - GENmodel *inModel; - CKTcircuit *ckt; +BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) { BJTmodel *model = (BJTmodel*)inModel; BJTinstance *here; diff --git a/src/spicelib/devices/bjt/bjttemp.c b/src/spicelib/devices/bjt/bjttemp.c index 1cb254df6..8f83c7834 100644 --- a/src/spicelib/devices/bjt/bjttemp.c +++ b/src/spicelib/devices/bjt/bjttemp.c @@ -5,7 +5,6 @@ Modified: 2000 AlansFixes **********/ #include "ngspice.h" -#include #include "cktdefs.h" #include "smpdefs.h" #include "bjtdefs.h" @@ -17,11 +16,9 @@ Modified: 2000 AlansFixes /* ARGSUSED */ int -BJTtemp(inModel,ckt) - GENmodel *inModel; - CKTcircuit *ckt; +BJTtemp(GENmodel *inModel, CKTcircuit *ckt) /* Pre-compute many useful parameters - */ + */ { BJTmodel *model = (BJTmodel *)inModel; @@ -135,7 +132,7 @@ BJTtemp(inModel,ckt) here=here->BJTnextInstance) { if (here->BJTowner != ARCHme) continue; - if(!here->BJTtempGiven) here->BJTtemp = ckt->CKTtemp; + if(!here->BJTtempGiven) here->BJTtemp = ckt->CKTtemp + here->BJTdtemp; vt = here->BJTtemp * CONSTKoverQ; fact2 = here->BJTtemp/REFTEMP; egfet = 1.16-(7.02e-4*here->BJTtemp*here->BJTtemp)/ diff --git a/src/spicelib/devices/bjt/bjttrunc.c b/src/spicelib/devices/bjt/bjttrunc.c index e27be8fae..687492d9a 100644 --- a/src/spicelib/devices/bjt/bjttrunc.c +++ b/src/spicelib/devices/bjt/bjttrunc.c @@ -11,7 +11,6 @@ Author: 1985 Thomas L. Quarles */ #include "ngspice.h" -#include #include "cktdefs.h" #include "bjtdefs.h" #include "sperror.h" @@ -19,10 +18,7 @@ Author: 1985 Thomas L. Quarles int -BJTtrunc(inModel,ckt,timeStep) - GENmodel *inModel; - CKTcircuit *ckt; - double *timeStep; +BJTtrunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep) { BJTmodel *model = (BJTmodel*)inModel;