analysis/dctrcurv.c, bug fix, sweeping `temper' in a dc analysis
incorrect update of model parameters, need to `invoke CKTtemp()' *after* `inp_evaluate_temper()' see tests/regression/temper/temper-2.cir
This commit is contained in:
parent
fc6455ca99
commit
5940bf9294
|
|
@ -158,9 +158,9 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
|
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
|
||||||
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
|
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
|
||||||
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
||||||
CKTtemp(ckt);
|
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
|
CKTtemp(ckt);
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -306,9 +306,9 @@ resume:
|
||||||
|
|
||||||
} else if (job->TRCVvType[i] == TEMP_CODE) {
|
} else if (job->TRCVvType[i] == TEMP_CODE) {
|
||||||
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK;
|
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK;
|
||||||
CKTtemp(ckt);
|
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
|
CKTtemp(ckt);
|
||||||
|
|
||||||
} else if (job->TRCVvType[i] == rcode) {
|
} else if (job->TRCVvType[i] == rcode) {
|
||||||
((RESinstance *)(job->TRCVvElt[i]))->RESresist =
|
((RESinstance *)(job->TRCVvElt[i]))->RESresist =
|
||||||
|
|
@ -521,9 +521,9 @@ nextstep:;
|
||||||
else if (job->TRCVvType[i] == TEMP_CODE)
|
else if (job->TRCVvType[i] == TEMP_CODE)
|
||||||
{
|
{
|
||||||
ckt->CKTtemp += job->TRCVvStep[i];
|
ckt->CKTtemp += job->TRCVvStep[i];
|
||||||
CKTtemp(ckt);
|
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
|
CKTtemp(ckt);
|
||||||
} /* else not possible */
|
} /* else not possible */
|
||||||
|
|
||||||
if(SPfrontEnd->IFpauseTest()) {
|
if(SPfrontEnd->IFpauseTest()) {
|
||||||
|
|
@ -566,9 +566,9 @@ nextstep:;
|
||||||
}
|
}
|
||||||
else if (job->TRCVvType[i] == TEMP_CODE) {
|
else if (job->TRCVvType[i] == TEMP_CODE) {
|
||||||
ckt->CKTtemp = job->TRCVvSave[i];
|
ckt->CKTtemp = job->TRCVvSave[i];
|
||||||
CKTtemp(ckt);
|
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
|
CKTtemp(ckt);
|
||||||
} /* else not possible */
|
} /* else not possible */
|
||||||
}
|
}
|
||||||
SPfrontEnd->OUTendPlot (plot);
|
SPfrontEnd->OUTendPlot (plot);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue