diff --git a/src/spicelib/devices/hicum2/hicum2defs.h b/src/spicelib/devices/hicum2/hicum2defs.h index 0a864dde5..893a87505 100644 --- a/src/spicelib/devices/hicum2/hicum2defs.h +++ b/src/spicelib/devices/hicum2/hicum2defs.h @@ -161,6 +161,8 @@ typedef struct sHICUMinstance { double HICUMrbx_scaled; double HICUMrcx_scaled; double HICUMrbi0_scaled; + double HICUMkf_scaled; + double HICUMkfre_scaled; double HICUMrbi; double HICUMiavl; diff --git a/src/spicelib/devices/hicum2/hicum2noise.c b/src/spicelib/devices/hicum2/hicum2noise.c index 737516565..47544c124 100644 --- a/src/spicelib/devices/hicum2/hicum2noise.c +++ b/src/spicelib/devices/hicum2/hicum2noise.c @@ -186,9 +186,9 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata N_GAIN,inst->HICUMbaseBPNode, inst->HICUMemitEINode, (double)0.0); } - noizDens[HICUMFLBENOIZ] *= inst->HICUMm * model->HICUMkf * + noizDens[HICUMFLBENOIZ] *= inst->HICUMkf_scaled * exp(model->HICUMaf * - log(MAX(fabs((*(ckt->CKTstate0 + inst->HICUMibiei)+*(ckt->CKTstate0 + inst->HICUMibpei)))/inst->HICUMm,N_MINLOG))) / + log(MAX(fabs((*(ckt->CKTstate0 + inst->HICUMibiei)+*(ckt->CKTstate0 + inst->HICUMibpei))),N_MINLOG))) / data->freq; lnNdens[HICUMFLBENOIZ] = log(MAX(noizDens[HICUMFLBENOIZ],N_MINLOG)); @@ -196,9 +196,9 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata NevalSrc(&noizDens[HICUMFLRENOIZ], NULL, ckt, N_GAIN,inst->HICUMemitEINode, inst->HICUMemitNode, (double)0.0); - noizDens[HICUMFLRENOIZ] *= inst->HICUMm * model->HICUMkfre * + noizDens[HICUMFLRENOIZ] *= inst->HICUMkfre_scaled * exp(model->HICUMafre * - log(MAX(fabs(*(ckt->CKTstate0 + inst->HICUMieie))/inst->HICUMm,N_MINLOG))) / + log(MAX(fabs(*(ckt->CKTstate0 + inst->HICUMieie)),N_MINLOG))) / data->freq; lnNdens[HICUMFLRENOIZ] = log(MAX(noizDens[HICUMFLRENOIZ],N_MINLOG)); diff --git a/src/spicelib/devices/hicum2/hicum2setup.c b/src/spicelib/devices/hicum2/hicum2setup.c index cc33a2c79..389ab5cc1 100644 --- a/src/spicelib/devices/hicum2/hicum2setup.c +++ b/src/spicelib/devices/hicum2/hicum2setup.c @@ -549,6 +549,9 @@ HICUMsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) here->HICUMrbx_scaled = model->HICUMrbx / area_times_m; here->HICUMrcx_scaled = model->HICUMrcx / area_times_m; here->HICUMrbi0_scaled = model->HICUMrbi0 / area_times_m; + //noise + here->HICUMkf_scaled = model->HICUMkf * pow(here->HICUMm, (1-model->HICUMaf)); + here->HICUMkfre_scaled = model->HICUMkfre * pow(here->HICUMm, (1-model->HICUMafre)); here->HICUMstate = *states; *states += HICUMnumStates;