From d6ba20299f394faa1f1bad2cbe5c1844a110e318 Mon Sep 17 00:00:00 2001 From: dwarning Date: Fri, 18 Dec 2009 16:59:16 +0000 Subject: [PATCH] reconstruct NEWCONV code, also if not used --- src/spicelib/devices/bsim3v32/b3v32ld.c | 49 +++++++++++++------------ 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/spicelib/devices/bsim3v32/b3v32ld.c b/src/spicelib/devices/bsim3v32/b3v32ld.c index 357a8323e..63947befb 100644 --- a/src/spicelib/devices/bsim3v32/b3v32ld.c +++ b/src/spicelib/devices/bsim3v32/b3v32ld.c @@ -44,6 +44,9 @@ double czbd, czbdsw, czbdswg, czbs, czbssw, czbsswg, evbd, evbs, arg, sarg; double delvbd, delvbs, delvds, delvgd, delvgs; double Vfbeff, dVfbeff_dVg, dVfbeff_dVd = 0.0, dVfbeff_dVb, V3, V4; double gcbdb, gcbgb, gcbsb, gcddb, gcdgb, gcdsb, gcgdb, gcggb, gcgsb, gcsdb; +#ifndef NEWCONV +double tol; +#endif double gcsgb, gcssb, MJ, MJSW, MJSWG; double vbd, vbs, vds, vgb, vgd, vgs, vgdo, xfact; double qgate = 0.0, qbulk = 0.0, qdrn = 0.0, qsrc; @@ -2639,29 +2642,29 @@ finished: if ((here->BSIM3v32off == 0) || (!(ckt->CKTmode & MODEINITFIX))) { if (Check == 1) { ckt->CKTnoncon++; -//#ifndef NEWCONV -// } -// else -// { if (here->BSIM3v32mode >= 0) -// { Idtot = here->BSIM3v32cd + here->BSIM3v32csub - here->BSIM3v32cbd; -// } -// else -// { Idtot = here->BSIM3v32cd - here->BSIM3v32cbd; -// } -// tol = ckt->CKTreltol * MAX(fabs(cdhat), fabs(Idtot)) -// + ckt->CKTabstol; -// if (fabs(cdhat - Idtot) >= tol) -// { ckt->CKTnoncon++; -// } -// else -// { Ibtot = here->BSIM3v32cbs + here->BSIM3v32cbd - here->BSIM3v32csub; -// tol = ckt->CKTreltol * MAX(fabs(cbhat), fabs(Ibtot)) -// + ckt->CKTabstol; -// if (fabs(cbhat - Ibtot) > tol) -// { ckt->CKTnoncon++; -// } -// } -//#endif /* NEWCONV */ +#ifndef NEWCONV + } + else + { if (here->BSIM3v32mode >= 0) + { Idtot = here->BSIM3v32cd + here->BSIM3v32csub - here->BSIM3v32cbd; + } + else + { Idtot = here->BSIM3v32cd - here->BSIM3v32cbd; + } + tol = ckt->CKTreltol * MAX(fabs(cdhat), fabs(Idtot)) + + ckt->CKTabstol; + if (fabs(cdhat - Idtot) >= tol) + { ckt->CKTnoncon++; + } + else + { Ibtot = here->BSIM3v32cbs + here->BSIM3v32cbd - here->BSIM3v32csub; + tol = ckt->CKTreltol * MAX(fabs(cbhat), fabs(Ibtot)) + + ckt->CKTabstol; + if (fabs(cbhat - Ibtot) > tol) + { ckt->CKTnoncon++; + } + } +#endif /* NEWCONV */ } } *(ckt->CKTstate0 + here->BSIM3v32vbs) = vbs;