Browse Source

invoke in_parse_temper_trees() and inp_evaluate_temper() unconditionally

pre-master-46
rlar 9 years ago
parent
commit
2c35eebb0b
  1. 10
      src/frontend/inp.c
  2. 3
      src/spicelib/analysis/cktdojob.c
  3. 12
      src/spicelib/analysis/dctrcurv.c

10
src/frontend/inp.c

@ -745,12 +745,10 @@ inp_spsource(FILE *fp, bool comfile, char *filename, bool intfile)
fclose(fdo); fclose(fdo);
} }
if (expr_w_temper) {
/* Now the circuit is defined, so generate the parse trees */
inp_parse_temper_trees(ft_curckt);
/* Get the actual data for model and device instance parameters */
inp_evaluate_temper(ft_curckt);
}
/* Now the circuit is defined, so generate the parse trees */
inp_parse_temper_trees(ft_curckt);
/* Get the actual data for model and device instance parameters */
inp_evaluate_temper(ft_curckt);
/* linked list dbs is used to store the "save" or .save data (defined in breakp2.c), /* linked list dbs is used to store the "save" or .save data (defined in breakp2.c),
(When controls are executed later on, also stores TRACE, IPLOT, and STOP data) */ (When controls are executed later on, also stores TRACE, IPLOT, and STOP data) */

3
src/spicelib/analysis/cktdojob.c

@ -116,8 +116,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
/* call altermod and alter on device and model parameters assembled in /* call altermod and alter on device and model parameters assembled in
devtlist and modtlist (if using temper) because we have a new temperature */ devtlist and modtlist (if using temper) because we have a new temperature */
if (expr_w_temper)
inp_evaluate_temper(ft_curckt);
inp_evaluate_temper(ft_curckt);
error = 0; error = 0;

12
src/spicelib/analysis/dctrcurv.c

@ -144,8 +144,7 @@ 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 */
if (expr_w_temper)
inp_evaluate_temper(ft_curckt);
inp_evaluate_temper(ft_curckt);
CKTtemp(ckt); CKTtemp(ckt);
goto found; goto found;
} }
@ -277,8 +276,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
job->TRCVvStart[i]; job->TRCVvStart[i];
} 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;
if (expr_w_temper)
inp_evaluate_temper(ft_curckt);
inp_evaluate_temper(ft_curckt);
CKTtemp(ckt); CKTtemp(ckt);
} else if (job->TRCVvType[i] == rcode) { } else if (job->TRCVvType[i] == rcode) {
((RESinstance *)(job->TRCVvElt[i]))->RESresist = ((RESinstance *)(job->TRCVvElt[i]))->RESresist =
@ -471,8 +469,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt); DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
} else if (job->TRCVvType[i] == TEMP_CODE) { /* temperature */ } else if (job->TRCVvType[i] == TEMP_CODE) { /* temperature */
ckt->CKTtemp += job->TRCVvStep[i]; ckt->CKTtemp += job->TRCVvStep[i];
if (expr_w_temper)
inp_evaluate_temper(ft_curckt);
inp_evaluate_temper(ft_curckt);
CKTtemp(ckt); CKTtemp(ckt);
} }
@ -509,8 +506,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt); DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
} else if (job->TRCVvType[i] == TEMP_CODE) { } else if (job->TRCVvType[i] == TEMP_CODE) {
ckt->CKTtemp = job->TRCVvSave[i]; ckt->CKTtemp = job->TRCVvSave[i];
if (expr_w_temper)
inp_evaluate_temper(ft_curckt);
inp_evaluate_temper(ft_curckt);
CKTtemp(ckt); CKTtemp(ckt);
} }

Loading…
Cancel
Save