From 3a180282833f2473ccb98aa688ff202675660ef5 Mon Sep 17 00:00:00 2001 From: dwarning Date: Thu, 15 Feb 2024 18:09:38 +0100 Subject: [PATCH] vbic: use device temperature for noise analysis too --- src/spicelib/devices/vbic/vbicnoise.c | 34 ++++++++++++++++----------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/spicelib/devices/vbic/vbicnoise.c b/src/spicelib/devices/vbic/vbicnoise.c index 42516da59..9a332c565 100644 --- a/src/spicelib/devices/vbic/vbicnoise.c +++ b/src/spicelib/devices/vbic/vbicnoise.c @@ -92,33 +92,39 @@ VBICnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata * switch (mode) { case N_DENS: - NevalSrc(&noizDens[VBICRCNOIZ],&lnNdens[VBICRCNOIZ], + double dtemp; + if (inst->VBICtempGiven) + dtemp = inst->VBICtemp - ckt->CKTtemp + (model->VBICtnom-CONSTCtoK); + else + dtemp = inst->VBICdtemp; + + NevalSrcInstanceTemp(&noizDens[VBICRCNOIZ],&lnNdens[VBICRCNOIZ], ckt,THERMNOISE,inst->VBICcollCXNode,inst->VBICcollNode, - *(ckt->CKTstate0 + inst->VBICircx_Vrcx)); + *(ckt->CKTstate0 + inst->VBICircx_Vrcx), dtemp); - NevalSrc(&noizDens[VBICRCINOIZ],&lnNdens[VBICRCINOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRCINOIZ],&lnNdens[VBICRCINOIZ], ckt,THERMNOISE,inst->VBICcollCXNode,inst->VBICcollCINode, - *(ckt->CKTstate0 + inst->VBICirci_Vrci)); + *(ckt->CKTstate0 + inst->VBICirci_Vrci), dtemp); - NevalSrc(&noizDens[VBICRBNOIZ],&lnNdens[VBICRBNOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRBNOIZ],&lnNdens[VBICRBNOIZ], ckt,THERMNOISE,inst->VBICbaseBXNode,inst->VBICbaseNode, - *(ckt->CKTstate0 + inst->VBICirbx_Vrbx)); + *(ckt->CKTstate0 + inst->VBICirbx_Vrbx), dtemp); - NevalSrc(&noizDens[VBICRBINOIZ],&lnNdens[VBICRBINOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRBINOIZ],&lnNdens[VBICRBINOIZ], ckt,THERMNOISE,inst->VBICbaseBXNode,inst->VBICbaseBINode, - *(ckt->CKTstate0 + inst->VBICirbi_Vrbi)); + *(ckt->CKTstate0 + inst->VBICirbi_Vrbi), dtemp); - NevalSrc(&noizDens[VBICRENOIZ],&lnNdens[VBICRENOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRENOIZ],&lnNdens[VBICRENOIZ], ckt,THERMNOISE,inst->VBICemitEINode,inst->VBICemitNode, - *(ckt->CKTstate0 + inst->VBICire_Vre)); + *(ckt->CKTstate0 + inst->VBICire_Vre), dtemp); - NevalSrc(&noizDens[VBICRBPNOIZ],&lnNdens[VBICRBPNOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRBPNOIZ],&lnNdens[VBICRBPNOIZ], ckt,THERMNOISE,inst->VBICemitEINode,inst->VBICemitNode, - *(ckt->CKTstate0 + inst->VBICirbp_Vrbp)); + *(ckt->CKTstate0 + inst->VBICirbp_Vrbp), dtemp); - NevalSrc(&noizDens[VBICRSNOIZ],&lnNdens[VBICRSNOIZ], + NevalSrcInstanceTemp(&noizDens[VBICRSNOIZ],&lnNdens[VBICRSNOIZ], ckt,THERMNOISE,inst->VBICsubsSINode,inst->VBICsubsNode, - *(ckt->CKTstate0 + inst->VBICirs_Vrs)); + *(ckt->CKTstate0 + inst->VBICirs_Vrs), dtemp); NevalSrc(&noizDens[VBICICNOIZ],&lnNdens[VBICICNOIZ],