|
|
|
@ -23,12 +23,12 @@ Modified: 2000 AlansFixes |
|
|
|
/* gtri - end - 12/12/90 */ |
|
|
|
#endif |
|
|
|
|
|
|
|
extern SPICEanalysis *analInfo[]; |
|
|
|
extern SPICEanalysis* analInfo[]; |
|
|
|
|
|
|
|
int |
|
|
|
CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
CKTdoJob(CKTcircuit* ckt, int reset, TSKtask* task) |
|
|
|
{ |
|
|
|
JOB *job; |
|
|
|
JOB* job; |
|
|
|
double startTime; |
|
|
|
int error, i, error2; |
|
|
|
|
|
|
|
@ -75,7 +75,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
ckt->CKTdelmin = task->TSKdelmin; |
|
|
|
ckt->CKTtrtol = task->TSKtrtol; |
|
|
|
#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, |
|
|
|
may be overridden by 'set xtrtol=newval' */ |
|
|
|
if (ckt->CKTadevFlag && (ckt->CKTtrtol > 1)) { |
|
|
|
@ -135,8 +135,8 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
if (job->JOBtype == sens_num) { |
|
|
|
senflag = 1; |
|
|
|
ckt->CKTcurJob = job; |
|
|
|
ckt->CKTsenInfo = (SENstruct *) job; |
|
|
|
error = analInfo[sens_num]->an_func (ckt, reset); |
|
|
|
ckt->CKTsenInfo = (SENstruct*)job; |
|
|
|
error = analInfo[sens_num]->an_func(ckt, reset); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -153,7 +153,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
|
|
|
|
#ifdef XSPICE |
|
|
|
/* 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 */ |
|
|
|
#endif |
|
|
|
|
|
|
|
@ -162,7 +162,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
|
|
|
|
#ifdef XSPICE |
|
|
|
/* 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 */ |
|
|
|
#endif |
|
|
|
|
|
|
|
@ -171,7 +171,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
|
|
|
|
#ifdef XSPICE |
|
|
|
/* 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 */ |
|
|
|
#endif |
|
|
|
|
|
|
|
@ -179,8 +179,8 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
|
|
|
|
#ifdef XSPICE |
|
|
|
/* gtri - add - 12/12/90 - wbk - return if syntax errors from parsing */ |
|
|
|
if(g_ipc.enabled) { |
|
|
|
if(g_ipc.syntax_error) |
|
|
|
if (g_ipc.enabled) { |
|
|
|
if (g_ipc.syntax_error) |
|
|
|
; |
|
|
|
else { |
|
|
|
/* else, send (GO) errchk status if we got this far */ |
|
|
|
@ -210,18 +210,18 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
|
|
|
|
for (job = task->jobs; job; job = job->JOBnextJob) { |
|
|
|
if (job->JOBtype == i) { |
|
|
|
ckt->CKTcurJob=job; |
|
|
|
ckt->CKTcurJob = job; |
|
|
|
error = OK; |
|
|
|
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) |
|
|
|
error = CKTic(ckt); |
|
|
|
if (!error){ |
|
|
|
if (!error) { |
|
|
|
#ifdef XSPICE |
|
|
|
if(reset) { |
|
|
|
if (reset) { |
|
|
|
/* gtri - begin - 6/10/91 - wbk - Setup event-driven data */ |
|
|
|
error = EVTsetup(ckt); |
|
|
|
if(error) { |
|
|
|
if (error) { |
|
|
|
ckt->CKTstat->STATtotAnalTime += |
|
|
|
SPfrontEnd->IFseconds() - startTime; |
|
|
|
return(error); |
|
|
|
@ -229,7 +229,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task) |
|
|
|
/* gtri - end - 6/10/91 - wbk - Setup event-driven data */ |
|
|
|
} |
|
|
|
#endif |
|
|
|
error = analInfo[i]->an_func (ckt, reset); |
|
|
|
error = analInfo[i]->an_func(ckt, reset); |
|
|
|
/* txl, cpl addition */ |
|
|
|
if (error == 1111) break; |
|
|
|
} |
|
|
|
|