use a macro to update ckt->CKTstat->STAT..

This commit is contained in:
rlar 2011-12-11 14:50:18 +00:00
parent fd9dec37a3
commit 87d9383971
4 changed files with 97 additions and 226 deletions

View File

@ -1,3 +1,9 @@
2011-12-11 Robert Larice
* src/spicelib/analysis/acan.c ,
* src/spicelib/analysis/dcpss.c ,
* src/spicelib/analysis/dctran.c :
use a macro to update ckt->CKTstat->STAT..
2011-12-11 Robert Larice
* src/spicelib/**/*.c :
auxiliary define `job' --> local variable `job'

View File

@ -22,6 +22,29 @@ Modified 2001: AlansFixes
void SetAnalyse( char * Analyse, int Percent);
#endif
#define INIT_STATS() \
do { \
startTime = SPfrontEnd->IFseconds(); \
startdTime = ckt->CKTstat->STATdecompTime; \
startsTime = ckt->CKTstat->STATsolveTime; \
startlTime = ckt->CKTstat->STATloadTime; \
startcTime = ckt->CKTstat->STATcombineTime; \
startkTime = ckt->CKTstat->STATsyncTime; \
} while(0)
#define UPDATE_STATS(analysis) \
do { \
ckt->CKTcurrentAnalysis = analysis; \
ckt->CKTstat->STATacTime += SPfrontEnd->IFseconds() - startTime; \
ckt->CKTstat->STATacDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
ckt->CKTstat->STATacSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
ckt->CKTstat->STATacLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
ckt->CKTstat->STATacCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
ckt->CKTstat->STATacSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
} while(0)
int
ACan(CKTcircuit *ckt, int restart)
{
@ -211,13 +234,7 @@ ACan(CKTcircuit *ckt, int restart)
/* gtri - end - wbk */
#endif
startTime = SPfrontEnd->IFseconds();
startdTime = ckt->CKTstat->STATdecompTime;
startsTime = ckt->CKTstat->STATsolveTime;
startlTime = ckt->CKTstat->STATloadTime;
startcTime = ckt->CKTstat->STATcombineTime;
startkTime = ckt->CKTstat->STATsyncTime;
INIT_STATS();
/* main loop through all scheduled frequencies */
while (freq <= job->ACstopFreq + freqTol) {
@ -263,18 +280,7 @@ ACan(CKTcircuit *ckt, int restart)
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEAC;
error = NIacIter(ckt);
if (error) {
ckt->CKTcurrentAnalysis = DOING_AC;
ckt->CKTstat->STATacTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATacDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATacSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATacLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATacCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATacSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_AC);
return(error);
}
@ -313,18 +319,7 @@ ACan(CKTcircuit *ckt, int restart)
error = CKTacDump(ckt,freq,acPlot);
#endif
if (error) {
ckt->CKTcurrentAnalysis = DOING_AC;
ckt->CKTstat->STATacTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATacDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATacSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATacLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATacCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATacSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_AC);
return(error);
}
@ -374,18 +369,7 @@ ACan(CKTcircuit *ckt, int restart)
endsweep:
SPfrontEnd->OUTendPlot (acPlot);
acPlot = NULL;
ckt->CKTcurrentAnalysis = 0;
ckt->CKTstat->STATacTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATacDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATacSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATacLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATacCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATacSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(0);
return(0);
}

View File

@ -45,6 +45,30 @@ void SetAnalyse( char * Analyse, int Percent);
#endif
#define INIT_STATS() \
do { \
startTime = SPfrontEnd->IFseconds(); \
startIters = ckt->CKTstat->STATnumIter; \
startdTime = ckt->CKTstat->STATdecompTime; \
startsTime = ckt->CKTstat->STATsolveTime; \
startlTime = ckt->CKTstat->STATloadTime; \
startcTime = ckt->CKTstat->STATcombineTime; \
startkTime = ckt->CKTstat->STATsyncTime; \
} while(0)
#define UPDATE_STATS(analysis) \
do { \
ckt->CKTcurrentAnalysis = analysis; \
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime; \
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; \
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
} while(0)
int
CKTfour(int, int, double *, double *, double *, double, double *, double *, double *, double *,double *);
@ -317,13 +341,7 @@ DCpss(CKTcircuit *ckt, int restart)
}
#endif
startTime = SPfrontEnd->IFseconds();
startIters = ckt->CKTstat->STATnumIter;
startdTime = ckt->CKTstat->STATdecompTime;
startsTime = ckt->CKTstat->STATsolveTime;
startlTime = ckt->CKTstat->STATloadTime;
startcTime = ckt->CKTstat->STATcombineTime;
startkTime = ckt->CKTstat->STATsyncTime;
INIT_STATS();
#ifdef CLUSTER
CLUsetup(ckt);
#endif
@ -331,13 +349,7 @@ DCpss(CKTcircuit *ckt, int restart)
/*saj As traninit resets CKTmode */
ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITPRED;
/* saj */
startTime = SPfrontEnd->IFseconds();
startIters = ckt->CKTstat->STATnumIter;
startdTime = ckt->CKTstat->STATdecompTime;
startsTime = ckt->CKTstat->STATsolveTime;
startlTime = ckt->CKTstat->STATloadTime;
startcTime = ckt->CKTstat->STATcombineTime;
startkTime = ckt->CKTstat->STATsyncTime;
INIT_STATS();
if(ckt->CKTminBreak==0) ckt->CKTminBreak=ckt->CKTmaxStep*5e-5;
firsttime=0;
/* To get rawfile working saj*/
@ -406,19 +418,7 @@ nextTime:
ckt->CKTbreak=0;
/* XXX Error will cause single process to bail. */
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
#ifdef XSPICE
@ -833,19 +833,7 @@ nextTime:
if( SPfrontEnd->IFpauseTest() ) {
/* user requested pause... */
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_TRAN);
return(E_PAUSE);
}
@ -1213,21 +1201,7 @@ resume:
newdelta = ckt->CKTdelta;
error = CKTtrunc(ckt,&newdelta);
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime
- startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime
- startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime
- startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime
- startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime
- startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
if(newdelta>.9 * ckt->CKTdelta) {
@ -1236,21 +1210,7 @@ resume:
ckt->CKTorder = 2;
error = CKTtrunc(ckt,&newdelta);
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime +=
ckt->CKTstat->STATdecompTime - startdTime;
ckt->CKTstat->STATtranSolveTime +=
ckt->CKTstat->STATsolveTime - startsTime;
ckt->CKTstat->STATtranLoadTime +=
ckt->CKTstat->STATloadTime - startlTime;
ckt->CKTstat->STATtranCombTime +=
ckt->CKTstat->STATcombineTime - startcTime;
ckt->CKTstat->STATtranSyncTime +=
ckt->CKTstat->STATsyncTime - startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
if(newdelta <= 1.05 * ckt->CKTdelta) {
@ -1319,21 +1279,7 @@ resume:
(void)printf("delta at delmin\n");
/*#endif*/
} else {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime +=
ckt->CKTstat->STATdecompTime - startdTime;
ckt->CKTstat->STATtranSolveTime +=
ckt->CKTstat->STATsolveTime - startsTime;
ckt->CKTstat->STATtranLoadTime +=
ckt->CKTstat->STATloadTime - startlTime;
ckt->CKTstat->STATtranCombTime +=
ckt->CKTstat->STATcombineTime - startcTime;
ckt->CKTstat->STATtranSyncTime +=
ckt->CKTstat->STATsyncTime - startkTime;
UPDATE_STATS(DOING_TRAN);
errMsg = CKTtrouble(ckt, "Timestep too small");
return(E_TIMESTEP);
}

View File

@ -43,6 +43,31 @@ extern struct dbcomm *dbs;
void SetAnalyse(char * Analyse, int Percent);
#endif
#define INIT_STATS() \
do { \
startTime = SPfrontEnd->IFseconds(); \
startIters = ckt->CKTstat->STATnumIter; \
startdTime = ckt->CKTstat->STATdecompTime; \
startsTime = ckt->CKTstat->STATsolveTime; \
startlTime = ckt->CKTstat->STATloadTime; \
startcTime = ckt->CKTstat->STATcombineTime; \
startkTime = ckt->CKTstat->STATsyncTime; \
} while(0)
#define UPDATE_STATS(analysis) \
do { \
ckt->CKTcurrentAnalysis = analysis; \
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime; \
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; \
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; \
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; \
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime - startlTime; \
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime - startcTime; \
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime - startkTime; \
} while(0)
int
DCtran(CKTcircuit *ckt,
int restart) /* forced restart flag */
@ -325,13 +350,7 @@ DCtran(CKTcircuit *ckt,
}
#endif
startTime = SPfrontEnd->IFseconds();
startIters = ckt->CKTstat->STATnumIter;
startdTime = ckt->CKTstat->STATdecompTime;
startsTime = ckt->CKTstat->STATsolveTime;
startlTime = ckt->CKTstat->STATloadTime;
startcTime = ckt->CKTstat->STATcombineTime;
startkTime = ckt->CKTstat->STATsyncTime;
INIT_STATS();
#ifdef CLUSTER
CLUsetup(ckt);
#endif
@ -339,13 +358,7 @@ DCtran(CKTcircuit *ckt,
/* saj As traninit resets CKTmode */
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODETRAN | MODEINITPRED;
/* saj */
startTime = SPfrontEnd->IFseconds();
startIters = ckt->CKTstat->STATnumIter;
startdTime = ckt->CKTstat->STATdecompTime;
startsTime = ckt->CKTstat->STATsolveTime;
startlTime = ckt->CKTstat->STATloadTime;
startcTime = ckt->CKTstat->STATcombineTime;
startkTime = ckt->CKTstat->STATsyncTime;
INIT_STATS();
if(ckt->CKTminBreak==0) ckt->CKTminBreak=ckt->CKTmaxStep*5e-5;
firsttime=0;
/* To get rawfile working saj*/
@ -404,19 +417,7 @@ DCtran(CKTcircuit *ckt,
ckt->CKTbreak = 0;
/* XXX Error will cause single process to bail. */
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
#ifdef XSPICE
@ -486,19 +487,7 @@ DCtran(CKTcircuit *ckt,
ckt->CKTtime, ckt->CKTfinalTime, ckt->CKTminBreak);
#endif
SPfrontEnd->OUTendPlot (job->TRANplot);
ckt->CKTcurrentAnalysis = 0;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(0);
#ifdef WANT_SENSE2
if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){
ckt->CKTsenInfo->SENmode = save;
@ -511,19 +500,7 @@ DCtran(CKTcircuit *ckt,
}
if(SPfrontEnd->IFpauseTest()) {
/* user requested pause... */
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime -
startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime -
startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime -
startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime -
startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime -
startkTime;
UPDATE_STATS(DOING_TRAN);
return(E_PAUSE);
}
resume:
@ -848,21 +825,7 @@ resume:
newdelta = ckt->CKTdelta;
error = CKTtrunc(ckt,&newdelta);
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime
- startdTime;
ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime
- startsTime;
ckt->CKTstat->STATtranLoadTime += ckt->CKTstat->STATloadTime
- startlTime;
ckt->CKTstat->STATtranCombTime += ckt->CKTstat->STATcombineTime
- startcTime;
ckt->CKTstat->STATtranSyncTime += ckt->CKTstat->STATsyncTime
- startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
if(newdelta > .9 * ckt->CKTdelta) {
@ -871,21 +834,7 @@ resume:
ckt->CKTorder = 2;
error = CKTtrunc(ckt,&newdelta);
if(error) {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime +=
ckt->CKTstat->STATdecompTime - startdTime;
ckt->CKTstat->STATtranSolveTime +=
ckt->CKTstat->STATsolveTime - startsTime;
ckt->CKTstat->STATtranLoadTime +=
ckt->CKTstat->STATloadTime - startlTime;
ckt->CKTstat->STATtranCombTime +=
ckt->CKTstat->STATcombineTime - startcTime;
ckt->CKTstat->STATtranSyncTime +=
ckt->CKTstat->STATsyncTime - startkTime;
UPDATE_STATS(DOING_TRAN);
return(error);
}
if(newdelta <= 1.05 * ckt->CKTdelta) {
@ -954,21 +903,7 @@ resume:
(void)printf("delta at delmin\n");
#endif
} else {
ckt->CKTcurrentAnalysis = DOING_TRAN;
ckt->CKTstat->STATtranTime +=
SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter +=
ckt->CKTstat->STATnumIter - startIters;
ckt->CKTstat->STATtranDecompTime +=
ckt->CKTstat->STATdecompTime - startdTime;
ckt->CKTstat->STATtranSolveTime +=
ckt->CKTstat->STATsolveTime - startsTime;
ckt->CKTstat->STATtranLoadTime +=
ckt->CKTstat->STATloadTime - startlTime;
ckt->CKTstat->STATtranCombTime +=
ckt->CKTstat->STATcombineTime - startcTime;
ckt->CKTstat->STATtranSyncTime +=
ckt->CKTstat->STATsyncTime - startkTime;
UPDATE_STATS(DOING_TRAN);
errMsg = CKTtrouble(ckt, "Timestep too small");
return(E_TIMESTEP);
}