few corrections in noise model

This commit is contained in:
dwarning 2020-07-02 21:05:58 +02:00
parent ad16be59ba
commit 61ee68c782
2 changed files with 27 additions and 24 deletions

View File

@ -24,11 +24,11 @@ enum {
HICUMRBINOIZ,
HICUMRENOIZ,
HICUMRSNOIZ,
HICUMICNOIZ,
HICUMIBCNOIZ,
HICUMIAVLNOIZ,
HICUMIBCINOIZ,
HICUMIBEPNOIZ,
HICUMIBCXNOIZ,
HICUMITSNOIZ,
HICUMIJSCNOIZ,
HICUMFLBENOIZ,
HICUMFLRENOIZ,
HICUMTOTNOIZ,

View File

@ -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];