diff --git a/src/include/ngspice/cktdefs.h b/src/include/ngspice/cktdefs.h index f1bcfd69d..5e907fb41 100644 --- a/src/include/ngspice/cktdefs.h +++ b/src/include/ngspice/cktdefs.h @@ -317,6 +317,7 @@ extern int CKTdltNNum(CKTcircuit *, int); extern int CKTdltNod(CKTcircuit *, CKTnode *); extern int CKTdoJob(CKTcircuit *, int , TSKtask *); extern void CKTdump(CKTcircuit *, double, void *); +extern int CKTsoaInit(void); extern int CKTsoaCheck(CKTcircuit *); #ifdef CIDER extern void NDEVacct(CKTcircuit *ckt, FILE *file); diff --git a/src/spicelib/analysis/dcop.c b/src/spicelib/analysis/dcop.c index 81b21f579..15f2354d4 100644 --- a/src/spicelib/analysis/dcop.c +++ b/src/spicelib/analysis/dcop.c @@ -58,6 +58,9 @@ DCop(CKTcircuit *ckt, int notused) tfree(nameList); /* va: nameList not used any longer, it was a memory leak */ if(error) return(error); + /* initialize CKTsoaCheck `warn' counters */ + if (ckt->CKTsoaCheck) + error = CKTsoaInit(); #ifdef XSPICE /* gtri - begin - wbk - 6/10/91 - Call EVTop if event-driven instances exist */ diff --git a/src/spicelib/analysis/dctran.c b/src/spicelib/analysis/dctran.c index 30252d17c..f8e14f801 100644 --- a/src/spicelib/analysis/dctran.c +++ b/src/spicelib/analysis/dctran.c @@ -173,6 +173,10 @@ DCtran(CKTcircuit *ckt, tfree(nameList); if(error) return(error); + /* initialize CKTsoaCheck `warn' counters */ + if (ckt->CKTsoaCheck) + error = CKTsoaInit(); + ckt->CKTtime = 0; ckt->CKTdelta = 0; ckt->CKTbreak = 1; diff --git a/src/spicelib/analysis/dctrcurv.c b/src/spicelib/analysis/dctrcurv.c index 23e021758..3b03dc334 100644 --- a/src/spicelib/analysis/dctrcurv.c +++ b/src/spicelib/analysis/dctrcurv.c @@ -225,6 +225,11 @@ found:; tfree(nameList); if(error) return(error); + + /* initialize CKTsoaCheck `warn' counters */ + if (ckt->CKTsoaCheck) + error = CKTsoaInit(); + /* now have finished the initialization - can start doing hard part */ i = 0; diff --git a/src/spicelib/devices/cktsoachk.c b/src/spicelib/devices/cktsoachk.c index 259aaa0a3..08c975730 100644 --- a/src/spicelib/devices/cktsoachk.c +++ b/src/spicelib/devices/cktsoachk.c @@ -16,6 +16,21 @@ Author: 2013 Dietmar Warning #include "dev.h" +int +CKTsoaInit(void) +{ + int i; + + SPICEdev **devs = devices(); + + for (i = 0; i < DEVmaxnum; i++) + if (devs[i] && devs[i]->DEVsoaCheck) + devs[i]->DEVsoaCheck (NULL, NULL); + + return OK; +} + + int CKTsoaCheck(CKTcircuit *ckt) {