diff --git a/src/spicelib/devices/bsim3/b3ld.c b/src/spicelib/devices/bsim3/b3ld.c index c85c990c4..6ed5f6ee4 100644 --- a/src/spicelib/devices/bsim3/b3ld.c +++ b/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); diff --git a/src/spicelib/devices/bsim3v32/b3v32ld.c b/src/spicelib/devices/bsim3v32/b3v32ld.c index 06c153c32..60a8c3261 100644 --- a/src/spicelib/devices/bsim3v32/b3v32ld.c +++ b/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); diff --git a/src/spicelib/devices/bsim4/b4ld.c b/src/spicelib/devices/bsim4/b4ld.c index ea1321033..300231625 100644 --- a/src/spicelib/devices/bsim4/b4ld.c +++ b/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); diff --git a/src/spicelib/devices/bsim4v5/b4v5ld.c b/src/spicelib/devices/bsim4v5/b4v5ld.c index dda45a395..d2ebca478 100644 --- a/src/spicelib/devices/bsim4v5/b4v5ld.c +++ b/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); diff --git a/src/spicelib/devices/bsim4v7/b4v7ld.c b/src/spicelib/devices/bsim4v7/b4v7ld.c index d984a14d8..bc4058b8a 100644 --- a/src/spicelib/devices/bsim4v7/b4v7ld.c +++ b/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);