From 0a213bea1a6f9849a11476184f35ffe5329bfc9c Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 4 Apr 2018 15:03:43 +0200 Subject: [PATCH] more on removing the sidewall capacitance --- src/spicelib/devices/vdmos/vdmosdefs.h | 2 -- src/spicelib/devices/vdmos/vdmosload.c | 10 ++++------ src/spicelib/devices/vdmos/vdmostemp.c | 15 --------------- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/src/spicelib/devices/vdmos/vdmosdefs.h b/src/spicelib/devices/vdmos/vdmosdefs.h index 6f1a3dd2d..ce89c5723 100644 --- a/src/spicelib/devices/vdmos/vdmosdefs.h +++ b/src/spicelib/devices/vdmos/vdmosdefs.h @@ -88,9 +88,7 @@ typedef struct sVDMOSinstance { double VDMOScapbd; double VDMOScapbs; double VDMOSCbd; - double VDMOSCbdsw; double VDMOSCbs; - double VDMOSCbssw; double VDMOSf2d; double VDMOSf3d; double VDMOSf4d; diff --git a/src/spicelib/devices/vdmos/vdmosload.c b/src/spicelib/devices/vdmos/vdmosload.c index bcb3ef384..34c272135 100644 --- a/src/spicelib/devices/vdmos/vdmosload.c +++ b/src/spicelib/devices/vdmos/vdmosload.c @@ -483,7 +483,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) */ { /* can't bypass the diode capacitance calculations */ - if (here->VDMOSCbs != 0 || here->VDMOSCbssw != 0) { + if (here->VDMOSCbs != 0) { if (vbs < here->VDMOStDepCap) { arg = 1 - vbs / here->VDMOStBulkPot; /* @@ -504,8 +504,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTstate0 + here->VDMOSqbs) = here->VDMOStBulkPot*(here->VDMOSCbs* (1 - arg*sarg) / (1 - model->VDMOSbulkJctBotGradingCoeff)); - here->VDMOScapbs = here->VDMOSCbs*sarg + - here->VDMOSCbssw*sargsw; + here->VDMOScapbs = here->VDMOSCbs * sarg; } else { *(ckt->CKTstate0 + here->VDMOSqbs) = here->VDMOSf4s + @@ -519,7 +518,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) } } { - if (here->VDMOSCbd != 0 || here->VDMOSCbdsw != 0) { + if (here->VDMOSCbd != 0) { if (vbd < here->VDMOStDepCap) { arg = 1 - vbd / here->VDMOStBulkPot; /* @@ -545,8 +544,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) here->VDMOStBulkPot*(here->VDMOSCbd* (1 - arg*sarg) / (1 - model->VDMOSbulkJctBotGradingCoeff)); - here->VDMOScapbd = here->VDMOSCbd*sarg + - here->VDMOSCbdsw*sargsw; + here->VDMOScapbd = here->VDMOSCbd * sarg; } else { *(ckt->CKTstate0 + here->VDMOSqbd) = here->VDMOSf4d + diff --git a/src/spicelib/devices/vdmos/vdmostemp.c b/src/spicelib/devices/vdmos/vdmostemp.c index d2e1b83ed..a199569c4 100644 --- a/src/spicelib/devices/vdmos/vdmostemp.c +++ b/src/spicelib/devices/vdmos/vdmostemp.c @@ -117,12 +117,9 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) for(here = VDMOSinstances(model); here!= NULL; here = VDMOSnextInstance(here)) { double czbd; /* zero voltage bulk-drain capacitance */ - double czbdsw; /* zero voltage bulk-drain sidewall capacitance */ double czbs; /* zero voltage bulk-source capacitance */ - double czbssw; /* zero voltage bulk-source sidewall capacitance */ double arg; /* 1 - fc */ double sarg; /* (1-fc) ^^ (-mj) */ - double sargsw; /* (1-fc) ^^ (-mjsw) */ /* perform the parameter defaulting */ @@ -187,16 +184,10 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) vt*log(vt/(CONSTroot2*here->VDMOSm*here->VDMOStSatCur)); } - if(model->VDMOScapBDGiven) { - czbd = here->VDMOStCbd * here->VDMOSm; - } else { czbd=0; - } - czbdsw=0; arg = 1-model->VDMOSfwdCapDepCoeff; sarg = exp( (-model->VDMOSbulkJctBotGradingCoeff) * log(arg) ); here->VDMOSCbd = czbd; - here->VDMOSCbdsw = czbdsw; here->VDMOSf2d = czbd * (1 - model->VDMOSfwdCapDepCoeff * (1 + model->VDMOSbulkJctBotGradingCoeff)) * sarg / arg; here->VDMOSf3d = czbd * model->VDMOSbulkJctBotGradingCoeff * sarg / arg / @@ -206,16 +197,10 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) -here->VDMOSf3d/2* (here->VDMOStDepCap*here->VDMOStDepCap) -here->VDMOStDepCap * here->VDMOSf2d; - if(model->VDMOScapBSGiven) { - czbs=here->VDMOStCbs * here->VDMOSm; - } else { czbs=0; - } - czbssw=0; arg = 1-model->VDMOSfwdCapDepCoeff; sarg = exp( (-model->VDMOSbulkJctBotGradingCoeff) * log(arg) ); here->VDMOSCbs = czbs; - here->VDMOSCbssw = czbssw; here->VDMOSf2s = czbs * (1 - model->VDMOSfwdCapDepCoeff * (1 + model->VDMOSbulkJctBotGradingCoeff)) * sarg / arg; here->VDMOSf3s = czbs * model->VDMOSbulkJctBotGradingCoeff * sarg / arg /