From f72fbdce742b9cf38c986fd20b2442d7e1e4f8ca Mon Sep 17 00:00:00 2001 From: pnenzi Date: Mon, 25 Apr 2005 08:50:22 +0000 Subject: [PATCH] Added some code to debug breakpoints. --- src/spicelib/analysis/cktsetbk.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/spicelib/analysis/cktsetbk.c b/src/spicelib/analysis/cktsetbk.c index 2ebc29839..4d7bf1813 100644 --- a/src/spicelib/analysis/cktsetbk.c +++ b/src/spicelib/analysis/cktsetbk.c @@ -14,7 +14,8 @@ Author: 1985 Thomas L. Quarles #include "ifsim.h" #include "sperror.h" - +/* define to enable breakpoint trace code */ +/ *#define TRACE_BREAKPOINT */ int CKTsetBreak(CKTcircuit *ckt, double time) @@ -22,6 +23,10 @@ CKTsetBreak(CKTcircuit *ckt, double time) double *tmp; int i,j; +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t want breakpoint for t = %e\n", ckt->CKTtime, time); +#endif + if(ckt->CKTtime > time) { (*(SPfrontEnd->IFerror))(ERR_PANIC,"breakpoint in the past - HELP!", (IFuid *)NULL); @@ -31,11 +36,20 @@ CKTsetBreak(CKTcircuit *ckt, double time) if(*(ckt->CKTbreaks+i)>time) { /* passed */ if((*(ckt->CKTbreaks+i)-time) <= ckt->CKTminBreak) { /* very close together - take earlier point */ +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t %e replaces %e\n", ckt->CKTtime, time, + *(ckt->CKTbreaks+i)); + CKTbreakDump(ckt); +#endif *(ckt->CKTbreaks+i) = time; return(OK); } if(time-*(ckt->CKTbreaks+i-1) <= ckt->CKTminBreak) { /* very close together, but after, so skip */ +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t %e skipped\n", ckt->CKTtime, time); + CKTbreakDump(ckt); +#endif return(OK); } /* fits in middle - new array & insert */ @@ -45,18 +59,27 @@ CKTsetBreak(CKTcircuit *ckt, double time) *(tmp+j) = *(ckt->CKTbreaks+j); } *(tmp+i)=time; +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t %e added\n", ckt->CKTtime, time); + CKTbreakDump(ckt); +#endif for(j=i;jCKTbreakSize;j++) { *(tmp+j+1) = *(ckt->CKTbreaks+j); } FREE(ckt->CKTbreaks); ckt->CKTbreakSize++; ckt->CKTbreaks=tmp; + return(OK); } } /* never found it - beyond end of time - extend out idea of time */ if(time-ckt->CKTbreaks[ckt->CKTbreakSize-1]<=ckt->CKTminBreak) { /* very close tegether - keep earlier, throw out new point */ +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t %e skipped (at the end)\n", ckt->CKTtime, time); + CKTbreakDump(ckt); +#endif return(OK); } /* fits at end - grow array & add on */ @@ -64,5 +87,9 @@ CKTsetBreak(CKTcircuit *ckt, double time) (ckt->CKTbreakSize+1)*sizeof(double)); ckt->CKTbreakSize++; ckt->CKTbreaks[ckt->CKTbreakSize-1]=time; +#ifdef TRACE_BREAKPOINT + printf("[t:%e] \t %e added at end\n", ckt->CKTtime, time); + CKTbreakDump(ckt); +#endif return(OK); }