diff --git a/src/spicelib/devices/hicum2/hicum2defs.h b/src/spicelib/devices/hicum2/hicum2defs.h index 704b6938e..1f2a0b374 100644 --- a/src/spicelib/devices/hicum2/hicum2defs.h +++ b/src/spicelib/devices/hicum2/hicum2defs.h @@ -24,11 +24,11 @@ enum { HICUMRBINOIZ, HICUMRENOIZ, HICUMRSNOIZ, - HICUMICNOIZ, - HICUMIBCNOIZ, + HICUMIAVLNOIZ, + HICUMIBCINOIZ, HICUMIBEPNOIZ, HICUMIBCXNOIZ, - HICUMITSNOIZ, + HICUMIJSCNOIZ, HICUMFLBENOIZ, HICUMFLRENOIZ, HICUMTOTNOIZ, diff --git a/src/spicelib/devices/hicum2/hicum2noise.c b/src/spicelib/devices/hicum2/hicum2noise.c index d45a05121..95fc8c358 100644 --- a/src/spicelib/devices/hicum2/hicum2noise.c +++ b/src/spicelib/devices/hicum2/hicum2noise.c @@ -39,6 +39,7 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata double Ibbp_Vbbp; double Icic_Vcic; + double Ibpbi_Vbpbi; double Ieie_Veie; double Isis_Vsis; @@ -47,17 +48,18 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata static char *HICUMnNames[HICUMNSRCS] = { /* Note that we have to keep the order consistent with the strchr definitions in HICUMdefs.h */ - "_rc", /* noise due to rc */ - "_rb", /* noise due to rb */ - "_rbi", /* noise due to rbi */ - "_re", /* noise due to re */ - "_rs", /* noise due to rs */ - "_ic", /* noise due to ic */ - "_ibc", /* noise due to ib */ - "_ibep", /* noise due to ibep */ - "_its", /* noise due to iccp */ + "_rcx", /* thermal noise due to rcx */ + "_rbx", /* thermal noise due to rbx */ + "_rbi", /* thermal noise due to rbi */ + "_re", /* thermal noise due to re */ + "_rsu", /* thermal noise due to rsu */ + "_iavl", /* shot noise due to iavl */ + "_ibci", /* shot noise due to ibci */ + "_ibep", /* shot noise due to ibep */ + "_ijbcx", /* shot noise due to ijbcx */ + "_ijsc", /* shot noise due to ijsc */ "_1overfbe", /* flicker (1/f) noise ibe */ - "_1overfbep", /* flicker (1/f) noise re */ + "_1overfre", /* flicker (1/f) noise re */ "" /* total transistor noise */ }; @@ -65,8 +67,9 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata for (inst=HICUMinstances(model); inst != NULL; inst=HICUMnextInstance(inst)) { - Ibbp_Vbbp = 1/inst->HICUMrbx_t.rpart; Icic_Vcic = 1/inst->HICUMrcx_t.rpart; + Ibbp_Vbbp = 1/inst->HICUMrbx_t.rpart; + Ibpbi_Vbpbi = 1/inst->HICUMrbi; Ieie_Veie = 1/inst->HICUMre_t.rpart; Isis_Vsis = 1/model->HICUMrsu; @@ -105,7 +108,7 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata Icic_Vcic); NevalSrc(&noizDens[HICUMRBNOIZ],&lnNdens[HICUMRBNOIZ], - ckt,THERMNOISE,inst->HICUMbaseBPNode,inst->HICUMbaseNode, + ckt,THERMNOISE,inst->HICUMbaseNode,inst->HICUMbaseBPNode, Ibbp_Vbbp); NevalSrc(&noizDens[HICUMRBINOIZ],&lnNdens[HICUMRBINOIZ], @@ -121,11 +124,11 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata Isis_Vsis); - NevalSrc(&noizDens[HICUMICNOIZ],&lnNdens[HICUMICNOIZ], - ckt,SHOTNOISE,inst->HICUMcollCINode,inst->HICUMemitEINode, - *(ckt->CKTstate0 + inst->HICUMiciei)); + NevalSrc(&noizDens[HICUMIAVLNOIZ],&lnNdens[HICUMIAVLNOIZ], + ckt,SHOTNOISE,inst->HICUMcollCINode,inst->HICUMbaseBINode, + inst->HICUMiavl); - NevalSrc(&noizDens[HICUMIBCNOIZ],&lnNdens[HICUMIBCNOIZ], + NevalSrc(&noizDens[HICUMIBCINOIZ],&lnNdens[HICUMIBCINOIZ], ckt,SHOTNOISE,inst->HICUMbaseBINode,inst->HICUMcollCINode, *(ckt->CKTstate0 + inst->HICUMibici)); @@ -137,7 +140,7 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata ckt,SHOTNOISE,inst->HICUMbaseBPNode,inst->HICUMcollCINode, *(ckt->CKTstate0 + inst->HICUMibpci)); - NevalSrc(&noizDens[HICUMITSNOIZ],&lnNdens[HICUMITSNOIZ], + NevalSrc(&noizDens[HICUMIJSCNOIZ],&lnNdens[HICUMIJSCNOIZ], ckt,SHOTNOISE,inst->HICUMsubsSINode,inst->HICUMcollCINode, *(ckt->CKTstate0 + inst->HICUMisici)); @@ -153,7 +156,7 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata log(MAX(noizDens[HICUMFLBENOIZ],N_MINLOG)); NevalSrc(&noizDens[HICUMFLRENOIZ], NULL, ckt, - N_GAIN,inst->HICUMemitNode, inst->HICUMemitEINode, + N_GAIN,inst->HICUMemitEINode, inst->HICUMemitNode, (double)0.0); noizDens[HICUMFLRENOIZ] *= inst->HICUMm * model->HICUMkfre * exp(model->HICUMafre * @@ -168,11 +171,11 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata noizDens[HICUMRBINOIZ] + noizDens[HICUMRENOIZ] + noizDens[HICUMRSNOIZ] + - noizDens[HICUMICNOIZ] + - noizDens[HICUMIBCNOIZ] + + noizDens[HICUMIAVLNOIZ] + + noizDens[HICUMIBCINOIZ] + noizDens[HICUMIBEPNOIZ] + noizDens[HICUMIBCXNOIZ] + - noizDens[HICUMITSNOIZ] + + noizDens[HICUMIJSCNOIZ] + noizDens[HICUMFLBENOIZ] + noizDens[HICUMFLRENOIZ];