diff --git a/src/spicelib/devices/bjt/bjtacld.c b/src/spicelib/devices/bjt/bjtacld.c index 42cdf6d80..5db3bb7ff 100644 --- a/src/spicelib/devices/bjt/bjtacld.c +++ b/src/spicelib/devices/bjt/bjtacld.c @@ -33,17 +33,17 @@ BJTacLoad(GENmodel *inModel, CKTcircuit *ckt) double xcpi; double xcmu; double xcbx; - double xccs; + double xcsub; double xcmcb; double m; for( ; model != NULL; model = model->BJTnextModel) { - for( here = model->BJTinstances; here!= NULL; + for( here = model->BJTinstances; here!= NULL; here = here->BJTnextInstance) { - if (here->BJTowner != ARCHme) continue; + if (here->BJTowner != ARCHme) continue; m = here->BJTm; - + gcpr=here->BJTtcollectorConduct * here->BJTarea; gepr=here->BJTtemitterConduct * here->BJTarea; gpi= *(ckt->CKTstate0 + here->BJTgpi); @@ -62,14 +62,15 @@ BJTacLoad(GENmodel *inModel, CKTcircuit *ckt) xcpi= *(ckt->CKTstate0 + here->BJTcqbe) * ckt->CKTomega; xcmu= *(ckt->CKTstate0 + here->BJTcqbc) * ckt->CKTomega; xcbx= *(ckt->CKTstate0 + here->BJTcqbx) * ckt->CKTomega; - xccs= *(ckt->CKTstate0 + here->BJTcqcs) * ckt->CKTomega; + xcsub= *(ckt->CKTstate0 + here->BJTcqsub) * ckt->CKTomega; xcmcb= *(ckt->CKTstate0 + here->BJTcexbc) * ckt->CKTomega; *(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->BJTcolPrimeColPrimePtr + 1) += m * (xcmu+xcbx); + *(here->BJTsubstConSubstConPtr + 1) += m * (xcsub); *(here->BJTbasePrimeBasePrimePtr) += m * (gx+gpi+gmu); *(here->BJTbasePrimeBasePrimePtr + 1) += m * (xcpi+xcmu+xcmcb); *(here->BJTemitPrimeEmitPrimePtr) += m * (gpi+gepr+gm+go); @@ -89,12 +90,12 @@ BJTacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->BJTbasePrimeEmitPrimePtr + 1) += m * (-xcpi); *(here->BJTemitPrimeEmitPtr) += m * (-gepr); *(here->BJTemitPrimeColPrimePtr) += m * (-go); - *(here->BJTemitPrimeColPrimePtr + 1) += m * (xcmcb); + *(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->BJTsubstSubstPtr + 1) += m * (xcsub); + *(here->BJTsubstConSubstPtr + 1) += m * (-xcsub); + *(here->BJTsubstSubstConPtr + 1) += m * (-xcsub); *(here->BJTbaseColPrimePtr + 1) += m * (-xcbx); *(here->BJTcolPrimeBasePtr + 1) += m * (-xcbx); } diff --git a/src/spicelib/devices/bjt/bjtdisto.c b/src/spicelib/devices/bjt/bjtdisto.c index 4dc71c590..3a7d4894c 100644 --- a/src/spicelib/devices/bjt/bjtdisto.c +++ b/src/spicelib/devices/bjt/bjtdisto.c @@ -23,21 +23,21 @@ BJTdisto(int mode, GENmodel *genmodel, CKTcircuit *ckt) DISTOAN* job = (DISTOAN*) ckt->CKTcurJob; double td; DpassStr pass; - double r1h1x = 0, i1h1x = 0; - double r1h1y = 0, i1h1y = 0; - double r1h1z = 0, i1h1z = 0; - double r1h2x = 0, i1h2x = 0; - double r1h2y = 0, i1h2y = 0; - double r1h2z = 0, i1h2z = 0; - double r1hm2x = 0, i1hm2x = 0; - double r1hm2y = 0, i1hm2y = 0; - double r1hm2z = 0, i1hm2z = 0; - double r2h11x = 0, i2h11x = 0; - double r2h11y = 0, i2h11y = 0; - double r2h11z = 0, i2h11z = 0; - double r2h1m2x = 0, i2h1m2x = 0; - double r2h1m2y = 0, i2h1m2y = 0; - double r2h1m2z = 0, i2h1m2z = 0; + double r1h1x = 0.0, i1h1x = 0.0; + double r1h1y = 0.0, i1h1y = 0.0; + double r1h1z = 0.0, i1h1z = 0.0; + double r1h2x = 0.0, i1h2x = 0.0; + double r1h2y = 0.0, i1h2y = 0.0; + double r1h2z = 0.0, i1h2z = 0.0; + double r1hm2x = 0.0, i1hm2x = 0.0; + double r1hm2y = 0.0, i1hm2y = 0.0; + double r1hm2z = 0.0, i1hm2z = 0.0; + double r2h11x = 0.0, i2h11x = 0.0; + double r2h11y = 0.0, i2h11y = 0.0; + double r2h11z = 0.0, i2h11z = 0.0; + double r2h1m2x = 0.0, i2h1m2x = 0.0; + double r2h1m2y = 0.0, i2h1m2y = 0.0; + double r2h1m2z = 0.0, i2h1m2z = 0.0; double temp, itemp; BJTinstance *here; #ifdef DISTODEBUG diff --git a/src/spicelib/devices/bjt/bjtpzld.c b/src/spicelib/devices/bjt/bjtpzld.c index eefa0f11d..6f297de82 100644 --- a/src/spicelib/devices/bjt/bjtpzld.c +++ b/src/spicelib/devices/bjt/bjtpzld.c @@ -29,14 +29,14 @@ BJTpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) double xcpi; double xcmu; double xcbx; - double xccs; + double xcsub; double xcmcb; double m; for( ; model != NULL; model = model->BJTnextModel) { - for( here = model->BJTinstances; here!= NULL; + for( here = model->BJTinstances; here!= NULL; here = here->BJTnextInstance) { - if (here->BJTowner != ARCHme) continue; + if (here->BJTowner != ARCHme) continue; m = here->BJTm; @@ -51,61 +51,39 @@ BJTpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) xcpi= *(ckt->CKTstate0 + here->BJTcqbe); xcmu= *(ckt->CKTstate0 + here->BJTcqbc); xcbx= *(ckt->CKTstate0 + here->BJTcqbx); - xccs= *(ckt->CKTstate0 + here->BJTcqcs); + xcsub= *(ckt->CKTstate0 + here->BJTcqsub); xcmcb= *(ckt->CKTstate0 + here->BJTcexbc); - - *(here->BJTcolColPtr) += m * (gcpr); + + *(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->BJTbaseBasePtr + 1) += m * ((xcbx) * (s->imag)); + *(here->BJTemitEmitPtr) += m * (gepr); + *(here->BJTcolPrimeColPrimePtr) += m * ((gmu+go+gcpr) + (xcmu+xcsub+xcbx) * (s->real)); + *(here->BJTcolPrimeColPrimePtr + 1) += m * ((xcmu+xcsub+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->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->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->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 * ((xcsub) * (s->real)); + *(here->BJTsubstSubstPtr + 1) += m * ((xcsub) * (s->imag)); *(here->BJTbaseColPrimePtr) += m * ((-xcbx) * (s->real)); *(here->BJTbaseColPrimePtr + 1) += m * ((-xcbx) * (s->imag)); *(here->BJTcolPrimeBasePtr) += m * ((-xcbx) * (s->real)); diff --git a/src/spicelib/devices/bjt/bjtsupd.c b/src/spicelib/devices/bjt/bjtsupd.c index 4354590bd..71973fa27 100644 --- a/src/spicelib/devices/bjt/bjtsupd.c +++ b/src/spicelib/devices/bjt/bjtsupd.c @@ -30,7 +30,7 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) double ss; double sxpbe; double sxpbc; - double sxpcs; + double sxpsub; double sxpbx; double dummy1; double dummy2; @@ -52,7 +52,7 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) sxpbe = 0; sxpbc = 0; - sxpcs = 0; + sxpsub = 0; sxpbx = 0; #ifdef SENSDEBUG printf("senupdate Instance name: %s\n",here->BJTname); @@ -61,7 +61,7 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) printf("capbe = %.7e\n",here->BJTcapbe); printf("capbc = %.7e\n",here->BJTcapbc); - printf("capcs = %.7e\n",here->BJTcapcs); + printf("capsub = %.7e\n",here->BJTcapsub); printf("capbx = %.7e\n",here->BJTcapbx); #endif /* SENSDEBUG */ @@ -81,13 +81,13 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) sxpbc = model ->BJTtype * (sbprm - scprm)*here->BJTcapbc ; - sxpcs = model ->BJTtype * (ss - scprm)*here->BJTcapcs ; + sxpsub = model ->BJTtype * (ss - scprm)*here->BJTcapsub ; sxpbx = model ->BJTtype * (sb - scprm)*here->BJTcapbx ; if(iparmno == here->BJTsenParmNo){ sxpbe += *(here->BJTdphibedp); sxpbc += *(here->BJTdphibcdp); - sxpcs += *(here->BJTdphicsdp); + sxpsub += *(here->BJTdphisubdp); sxpbx += *(here->BJTdphibxdp); } @@ -100,10 +100,10 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) sxpbc; NIintegrate(ckt,&dummy1,&dummy2,here->BJTcapbc, here->BJTsensxpbc + 8*(iparmno -1)); - *(ckt->CKTstate0 + here->BJTsensxpcs + 8 * (iparmno - 1)) = - sxpcs; - NIintegrate(ckt,&dummy1,&dummy2,here->BJTcapcs, - here->BJTsensxpcs + 8*(iparmno -1)); + *(ckt->CKTstate0 + here->BJTsensxpsub + 8 * (iparmno - 1)) = + sxpsub; + NIintegrate(ckt,&dummy1,&dummy2,here->BJTcapsub, + here->BJTsensxpsub + 8*(iparmno -1)); *(ckt->CKTstate0 + here->BJTsensxpbx + 8 * (iparmno - 1)) = sxpbx; NIintegrate(ckt,&dummy1,&dummy2,here->BJTcapbx, @@ -117,8 +117,8 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) printf("sxpbc = %.7e,sdotxpbc = %.7e\n", sxpbc,*(ckt->CKTstate0 + here->BJTsensxpbc + 8 * (iparmno - 1) + 1)); - printf("sxpcs = %.7e,sdotxpsc = %.7e\n", - sxpcs,*(ckt->CKTstate0 + here->BJTsensxpcs + 8 * + printf("sxpsub = %.7e,sdotxpsc = %.7e\n", + sxpsub,*(ckt->CKTstate0 + here->BJTsensxpsub + 8 * (iparmno - 1) + 1)); printf("sxpbx = %.7e,sdotxpbx = %.7e\n", sxpbx,*(ckt->CKTstate0 + here->BJTsensxpbx + 8 * @@ -130,15 +130,15 @@ BJTsUpdate(GENmodel *inModel, CKTcircuit *ckt) sxpbe; *(ckt->CKTstate1 + here->BJTsensxpbc + 8 * (iparmno - 1)) = sxpbc; - *(ckt->CKTstate1 + here->BJTsensxpcs + 8 * (iparmno - 1)) = - sxpcs; + *(ckt->CKTstate1 + here->BJTsensxpsub + 8 * (iparmno - 1)) = + sxpsub; *(ckt->CKTstate1 + here->BJTsensxpbx + 8 * (iparmno - 1)) = sxpbx; *(ckt->CKTstate1 + here->BJTsensxpbe + 8 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->BJTsensxpbc + 8 * (iparmno - 1) + 1) = 0; - *(ckt->CKTstate1 + here->BJTsensxpcs + 8 * (iparmno - 1) + + *(ckt->CKTstate1 + here->BJTsensxpsub + 8 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->BJTsensxpbx + 8 * (iparmno - 1) + 1) = 0;