From 8c2bdd2f7a4a0aa1933277745a679c14226c8403 Mon Sep 17 00:00:00 2001 From: dwarning Date: Sun, 15 Mar 2020 09:47:58 +0100 Subject: [PATCH] VDMOS include thermal components into convtest --- src/spicelib/devices/vdmos/vdmosconv.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/spicelib/devices/vdmos/vdmosconv.c b/src/spicelib/devices/vdmos/vdmosconv.c index e1ca6e307..d620a817f 100644 --- a/src/spicelib/devices/vdmos/vdmosconv.c +++ b/src/spicelib/devices/vdmos/vdmosconv.c @@ -23,6 +23,8 @@ VDMOSconvTest(GENmodel *inModel, CKTcircuit *ckt) double vgd; double vgdo; double tol; + int selfheat; + double delTemp, deldelTemp; for( ; model != NULL; model = VDMOSnextModel(model)) { for(here = VDMOSinstances(model); here!= NULL; @@ -41,18 +43,29 @@ VDMOSconvTest(GENmodel *inModel, CKTcircuit *ckt) delvds = vds - *(ckt->CKTstate0 + here->VDMOSvds); delvgd = vgd-vgdo; + selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven); + if (selfheat) { + delTemp = *(ckt->CKTrhs + here->VDMOStempNode); + deldelTemp = delTemp - *(ckt->CKTstate0 + here->VDMOSdelTemp); + } else { + delTemp = 0.0; + deldelTemp = 0.0; + } + /* these are needed for convergence testing */ if (here->VDMOSmode >= 0) { cdhat= here->VDMOScd - here->VDMOSgm * delvgs + - here->VDMOSgds * delvds ; + here->VDMOSgds * delvds + + here->VDMOSgmT * deldelTemp; } else { cdhat= here->VDMOScd - here->VDMOSgm * delvgd + - here->VDMOSgds * delvds ; + here->VDMOSgds * delvds + + here->VDMOSgmT * deldelTemp; } /* * check convergence