Re-format cktdojob.c

This commit is contained in:
Holger Vogt 2022-07-16 17:24:41 +02:00
parent 9e1eac0613
commit d1cbcb080c
1 changed files with 122 additions and 122 deletions

View File

@ -23,12 +23,12 @@ Modified: 2000 AlansFixes
/* gtri - end - 12/12/90 */ /* gtri - end - 12/12/90 */
#endif #endif
extern SPICEanalysis *analInfo[]; extern SPICEanalysis* analInfo[];
int int
CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) CKTdoJob(CKTcircuit* ckt, int reset, TSKtask* task)
{ {
JOB *job; JOB* job;
double startTime; double startTime;
int error, i, error2; int error, i, error2;
@ -40,63 +40,63 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
/* Sensitivity is special */ /* Sensitivity is special */
if (sens_num < 0) { if (sens_num < 0) {
for (i = 0; i < ANALmaxnum; i++) for (i = 0; i < ANALmaxnum; i++)
if (!strcmp("SENS2", analInfo[i]->if_analysis.name)) if (!strcmp("SENS2", analInfo[i]->if_analysis.name))
break; break;
sens_num = i; sens_num = i;
} }
#endif #endif
startTime = SPfrontEnd->IFseconds(); startTime = SPfrontEnd->IFseconds();
ckt->CKTtemp = task->TSKtemp; ckt->CKTtemp = task->TSKtemp;
ckt->CKTnomTemp = task->TSKnomTemp; ckt->CKTnomTemp = task->TSKnomTemp;
ckt->CKTmaxOrder = task->TSKmaxOrder; ckt->CKTmaxOrder = task->TSKmaxOrder;
ckt->CKTintegrateMethod = task->TSKintegrateMethod; ckt->CKTintegrateMethod = task->TSKintegrateMethod;
ckt->CKTindverbosity = task->TSKindverbosity; ckt->CKTindverbosity = task->TSKindverbosity;
ckt->CKTxmu = task->TSKxmu; ckt->CKTxmu = task->TSKxmu;
ckt->CKTbypass = task->TSKbypass; ckt->CKTbypass = task->TSKbypass;
ckt->CKTdcMaxIter = task->TSKdcMaxIter; ckt->CKTdcMaxIter = task->TSKdcMaxIter;
ckt->CKTdcTrcvMaxIter = task->TSKdcTrcvMaxIter; ckt->CKTdcTrcvMaxIter = task->TSKdcTrcvMaxIter;
ckt->CKTtranMaxIter = task->TSKtranMaxIter; ckt->CKTtranMaxIter = task->TSKtranMaxIter;
ckt->CKTnumSrcSteps = task->TSKnumSrcSteps; ckt->CKTnumSrcSteps = task->TSKnumSrcSteps;
ckt->CKTnumGminSteps = task->TSKnumGminSteps; ckt->CKTnumGminSteps = task->TSKnumGminSteps;
ckt->CKTgminFactor = task->TSKgminFactor; ckt->CKTgminFactor = task->TSKgminFactor;
ckt->CKTminBreak = task->TSKminBreak; ckt->CKTminBreak = task->TSKminBreak;
ckt->CKTabstol = task->TSKabstol; ckt->CKTabstol = task->TSKabstol;
ckt->CKTpivotAbsTol = task->TSKpivotAbsTol; ckt->CKTpivotAbsTol = task->TSKpivotAbsTol;
ckt->CKTpivotRelTol = task->TSKpivotRelTol; ckt->CKTpivotRelTol = task->TSKpivotRelTol;
ckt->CKTreltol = task->TSKreltol; ckt->CKTreltol = task->TSKreltol;
ckt->CKTchgtol = task->TSKchgtol; ckt->CKTchgtol = task->TSKchgtol;
ckt->CKTvoltTol = task->TSKvoltTol; ckt->CKTvoltTol = task->TSKvoltTol;
ckt->CKTgmin = task->TSKgmin; ckt->CKTgmin = task->TSKgmin;
ckt->CKTgshunt = task->TSKgshunt; ckt->CKTgshunt = task->TSKgshunt;
ckt->CKTcshunt = task->TSKcshunt; ckt->CKTcshunt = task->TSKcshunt;
ckt->CKTdelmin = task->TSKdelmin; ckt->CKTdelmin = task->TSKdelmin;
ckt->CKTtrtol = task->TSKtrtol; ckt->CKTtrtol = task->TSKtrtol;
#ifdef XSPICE #ifdef XSPICE
/* Lower value of trtol to give smaller stepsize and more accuracy, /* Lower value of trtol to give smaller stepsize and more accuracy,
but only if there are 'A' devices in the circuit, but only if there are 'A' devices in the circuit,
may be overridden by 'set xtrtol=newval' */ may be overridden by 'set xtrtol=newval' */
if (ckt->CKTadevFlag && (ckt->CKTtrtol > 1)) { if (ckt->CKTadevFlag && (ckt->CKTtrtol > 1)) {
int newtol; int newtol;
if (cp_getvar("xtrtol", CP_NUM, &newtol, 0)) { if (cp_getvar("xtrtol", CP_NUM, &newtol, 0)) {
printf("Override trtol to %d for xspice 'A' devices\n", newtol); printf("Override trtol to %d for xspice 'A' devices\n", newtol);
ckt->CKTtrtol = newtol; ckt->CKTtrtol = newtol;
} }
else { else {
printf("Reducing trtol to 1 for xspice 'A' devices\n"); printf("Reducing trtol to 1 for xspice 'A' devices\n");
ckt->CKTtrtol = 1; ckt->CKTtrtol = 1;
} }
} }
#endif #endif
ckt->CKTdefaultMosM = task->TSKdefaultMosM; ckt->CKTdefaultMosM = task->TSKdefaultMosM;
ckt->CKTdefaultMosL = task->TSKdefaultMosL; ckt->CKTdefaultMosL = task->TSKdefaultMosL;
ckt->CKTdefaultMosW = task->TSKdefaultMosW; ckt->CKTdefaultMosW = task->TSKdefaultMosW;
ckt->CKTdefaultMosAD = task->TSKdefaultMosAD; ckt->CKTdefaultMosAD = task->TSKdefaultMosAD;
ckt->CKTdefaultMosAS = task->TSKdefaultMosAS; ckt->CKTdefaultMosAS = task->TSKdefaultMosAS;
ckt->CKTfixLimit = task->TSKfixLimit; ckt->CKTfixLimit = task->TSKfixLimit;
ckt->CKTnoOpIter = task->TSKnoOpIter; ckt->CKTnoOpIter = task->TSKnoOpIter;
ckt->CKTtryToCompact = task->TSKtryToCompact; ckt->CKTtryToCompact = task->TSKtryToCompact;
ckt->CKTbadMos3 = task->TSKbadMos3; ckt->CKTbadMos3 = task->TSKbadMos3;
ckt->CKTkeepOpInfo = task->TSKkeepOpInfo; ckt->CKTkeepOpInfo = task->TSKkeepOpInfo;
@ -104,8 +104,8 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
ckt->CKTnodeDamping = task->TSKnodeDamping; ckt->CKTnodeDamping = task->TSKnodeDamping;
ckt->CKTabsDv = task->TSKabsDv; ckt->CKTabsDv = task->TSKabsDv;
ckt->CKTrelDv = task->TSKrelDv; ckt->CKTrelDv = task->TSKrelDv;
ckt->CKTtroubleNode = 0; ckt->CKTtroubleNode = 0;
ckt->CKTtroubleElt = NULL; ckt->CKTtroubleElt = NULL;
ckt->CKTnoopac = task->TSKnoopac && ckt->CKTisLinear; ckt->CKTnoopac = task->TSKnoopac && ckt->CKTisLinear;
ckt->CKTepsmin = task->TSKepsmin; ckt->CKTepsmin = task->TSKepsmin;
#ifdef NEWTRUNC #ifdef NEWTRUNC
@ -113,8 +113,8 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
ckt->CKTlteAbstol = task->TSKlteAbstol; ckt->CKTlteAbstol = task->TSKlteAbstol;
#endif /* NEWTRUNC */ #endif /* NEWTRUNC */
fprintf(stdout, "Doing analysis at TEMP = %f and TNOM = %f\n\n", fprintf(stdout, "Doing analysis at TEMP = %f and TNOM = %f\n\n",
ckt->CKTtemp - CONSTCtoK, ckt->CKTnomTemp - CONSTCtoK); ckt->CKTtemp - CONSTCtoK, ckt->CKTnomTemp - CONSTCtoK);
/* 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 */
@ -124,71 +124,71 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
if (reset) { if (reset) {
ckt->CKTdelta = 0.0; ckt->CKTdelta = 0.0;
ckt->CKTtime = 0.0; ckt->CKTtime = 0.0;
ckt->CKTcurrentAnalysis = 0; ckt->CKTcurrentAnalysis = 0;
#ifdef WANT_SENSE2 #ifdef WANT_SENSE2
senflag = 0; senflag = 0;
if (sens_num < ANALmaxnum) if (sens_num < ANALmaxnum)
for (job = task->jobs; !error && job; job = job->JOBnextJob) { for (job = task->jobs; !error && job; job = job->JOBnextJob) {
if (job->JOBtype == sens_num) { if (job->JOBtype == sens_num) {
senflag = 1; senflag = 1;
ckt->CKTcurJob = job; ckt->CKTcurJob = job;
ckt->CKTsenInfo = (SENstruct *) job; ckt->CKTsenInfo = (SENstruct*)job;
error = analInfo[sens_num]->an_func (ckt, reset); error = analInfo[sens_num]->an_func(ckt, reset);
} }
} }
if (ckt->CKTsenInfo && (!senflag || error)) if (ckt->CKTsenInfo && (!senflag || error))
FREE(ckt->CKTsenInfo); FREE(ckt->CKTsenInfo);
#endif #endif
/* make sure this is either up do date or NULL */ /* make sure this is either up do date or NULL */
ckt->CKTcurJob = NULL; ckt->CKTcurJob = NULL;
/* normal reset */ /* normal reset */
if (!error) if (!error)
error = CKTunsetup(ckt); error = CKTunsetup(ckt);
#ifdef XSPICE #ifdef XSPICE
/* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */ /* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */
if(error) g_ipc.syntax_error = IPC_TRUE; if (error) g_ipc.syntax_error = IPC_TRUE;
/* gtri - end - 12/12/90 */ /* gtri - end - 12/12/90 */
#endif #endif
if (!error) if (!error)
error = CKTsetup(ckt); error = CKTsetup(ckt);
#ifdef XSPICE #ifdef XSPICE
/* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */ /* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */
if(error) g_ipc.syntax_error = IPC_TRUE; if (error) g_ipc.syntax_error = IPC_TRUE;
/* gtri - end - 12/12/90 */ /* gtri - end - 12/12/90 */
#endif #endif
if (!error) if (!error)
error = CKTtemp(ckt); error = CKTtemp(ckt);
#ifdef XSPICE #ifdef XSPICE
/* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */ /* gtri - add - 12/12/90 - wbk - set ipc syntax error flag */
if(error) g_ipc.syntax_error = IPC_TRUE; if (error) g_ipc.syntax_error = IPC_TRUE;
/* gtri - end - 12/12/90 */ /* gtri - end - 12/12/90 */
#endif #endif
if (error) { if (error) {
#ifdef XSPICE #ifdef XSPICE
/* gtri - add - 12/12/90 - wbk - return if syntax errors from parsing */ /* gtri - add - 12/12/90 - wbk - return if syntax errors from parsing */
if(g_ipc.enabled) { if (g_ipc.enabled) {
if(g_ipc.syntax_error) if (g_ipc.syntax_error)
; ;
else { else {
/* else, send (GO) errchk status if we got this far */ /* else, send (GO) errchk status if we got this far */
/* Caller is responsible for sending NOGO status if we returned earlier */ /* Caller is responsible for sending NOGO status if we returned earlier */
ipc_send_errchk(); ipc_send_errchk();
}
} }
} /* gtri - end - 12/12/90 */
/* gtri - end - 12/12/90 */
#endif #endif
@ -204,46 +204,46 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
for (i = 0; i < ANALmaxnum; i++) { for (i = 0; i < ANALmaxnum; i++) {
#ifdef WANT_SENSE2 #ifdef WANT_SENSE2
if (i == sens_num) if (i == sens_num)
continue; continue;
#endif #endif
for (job = task->jobs; job; job = job->JOBnextJob) { for (job = task->jobs; job; job = job->JOBnextJob) {
if (job->JOBtype == i) { if (job->JOBtype == i) {
ckt->CKTcurJob=job; ckt->CKTcurJob = job;
error = OK; error = OK;
if (analInfo[i]->an_init) if (analInfo[i]->an_init)
error = analInfo[i]->an_init (ckt, job); error = analInfo[i]->an_init(ckt, job);
if (!error && analInfo[i]->do_ic) if (!error && analInfo[i]->do_ic)
error = CKTic(ckt); error = CKTic(ckt);
if (!error){ if (!error) {
#ifdef XSPICE #ifdef XSPICE
if(reset) { if (reset) {
/* gtri - begin - 6/10/91 - wbk - Setup event-driven data */ /* gtri - begin - 6/10/91 - wbk - Setup event-driven data */
error = EVTsetup(ckt); error = EVTsetup(ckt);
if(error) { if (error) {
ckt->CKTstat->STATtotAnalTime += ckt->CKTstat->STATtotAnalTime +=
SPfrontEnd->IFseconds() - startTime; SPfrontEnd->IFseconds() - startTime;
return(error); return(error);
} }
/* gtri - end - 6/10/91 - wbk - Setup event-driven data */ /* gtri - end - 6/10/91 - wbk - Setup event-driven data */
} }
#endif #endif
error = analInfo[i]->an_func (ckt, reset); error = analInfo[i]->an_func(ckt, reset);
/* txl, cpl addition */ /* txl, cpl addition */
if (error == 1111) break; if (error == 1111) break;
} }
if (error) if (error)
error2 = error; error2 = error;
} }
} }
} }
ckt->CKTstat->STATtotAnalTime += SPfrontEnd->IFseconds() - startTime; ckt->CKTstat->STATtotAnalTime += SPfrontEnd->IFseconds() - startTime;
#ifdef WANT_SENSE2 #ifdef WANT_SENSE2
if (ckt->CKTsenInfo) if (ckt->CKTsenInfo)
SENdestroy(ckt->CKTsenInfo); SENdestroy(ckt->CKTsenInfo);
#endif #endif
return(error2); return(error2);