Browse Source

dc sweep fails after transient sim:

keep MODEDCTRANCURVE as provided by commit
7d8236766 ("b3ld.c, b4ld.c, b3v32ld.c: enable capacitance calculation during dc sweep", 2012-10-03)
Instead exclude current integration when MODEDCTRANCURVE is selected.
Unify setting ChargeComputationNeeded in b4vdld.c,
make it as in other b4xxld.c.
pre-master-46
Holger Vogt 4 years ago
parent
commit
e5c162f126
  1. 4
      src/spicelib/devices/bsim3/b3ld.c
  2. 4
      src/spicelib/devices/bsim3v32/b3v32ld.c
  3. 4
      src/spicelib/devices/bsim4/b4ld.c
  4. 7
      src/spicelib/devices/bsim4v5/b4v5ld.c
  5. 4
      src/spicelib/devices/bsim4v7/b4v7ld.c

4
src/spicelib/devices/bsim3/b3ld.c

@ -2812,6 +2812,10 @@ line755:
if (!ChargeComputationNeeded)
goto line850;
/* no integration, if dc sweep, but keep evaluating capacitances */
if (ckt->CKTmode & MODEDCTRANCURVE)
goto line850;
if (ckt->CKTmode & MODEINITTRAN)
{ *(ckt->CKTstate1 + here->BSIM3qb) =
*(ckt->CKTstate0 + here->BSIM3qb);

4
src/spicelib/devices/bsim3v32/b3v32ld.c

@ -3125,6 +3125,10 @@ line755:
if (!ChargeComputationNeeded)
goto line850;
/* no integration, if dc sweep, but keep evaluating capacitances */
if (ckt->CKTmode & MODEDCTRANCURVE)
goto line850;
if (ckt->CKTmode & MODEINITTRAN)
{ *(ckt->CKTstate1 + here->BSIM3v32qb) =
*(ckt->CKTstate0 + here->BSIM3v32qb);

4
src/spicelib/devices/bsim4/b4ld.c

@ -4614,6 +4614,10 @@ line755:
if (!ChargeComputationNeeded)
goto line850;
/* no integration, if dc sweep, but keep evaluating capacitances */
if (ckt->CKTmode & MODEDCTRANCURVE)
goto line850;
if (ckt->CKTmode & MODEINITTRAN)
{ *(ckt->CKTstate1 + here->BSIM4qb) =
*(ckt->CKTstate0 + here->BSIM4qb);

7
src/spicelib/devices/bsim4v5/b4v5ld.c

@ -231,10 +231,9 @@ int ByPass, ChargeComputationNeeded, error, Check, Check1, Check2;
ScalingFactor = 1.0e-9;
ChargeComputationNeeded =
((ckt->CKTmode & (MODEAC | MODETRAN | MODEINITSMSIG)) ||
((ckt->CKTmode & (MODEDCTRANCURVE | MODEAC | MODETRAN | MODEINITSMSIG)) ||
((ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)))
? 1 : 0;
ChargeComputationNeeded = 1;
#ifndef USE_OMP
for (; model != NULL; model = BSIM4v5nextModel(model))
@ -4188,6 +4187,10 @@ line755:
if (!ChargeComputationNeeded)
goto line850;
/* no integration, if dc sweep, but keep evaluating capacitances */
if (ckt->CKTmode & MODEDCTRANCURVE)
goto line850;
if (ckt->CKTmode & MODEINITTRAN)
{ *(ckt->CKTstate1 + here->BSIM4v5qb) =
*(ckt->CKTstate0 + here->BSIM4v5qb);

4
src/spicelib/devices/bsim4v7/b4v7ld.c

@ -4523,6 +4523,10 @@ line755:
if (!ChargeComputationNeeded)
goto line850;
/* no integration, if dc sweep, but keep evaluating capacitances */
if (ckt->CKTmode & MODEDCTRANCURVE)
goto line850;
if (ckt->CKTmode & MODEINITTRAN)
{ *(ckt->CKTstate1 + here->BSIM4v7qb) =
*(ckt->CKTstate0 + here->BSIM4v7qb);

Loading…
Cancel
Save