Add a breakpoint when command 'stop' is used

after tran simulation has already started
This commit is contained in:
Holger Vogt 2025-05-12 23:34:02 +02:00
parent ecdaa6db1a
commit bedd14d2ea
1 changed files with 14 additions and 0 deletions

View File

@ -12,6 +12,7 @@ Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
#include "ngspice/ftedefs.h"
#include "ngspice/dvec.h"
#include "ngspice/ftedebug.h"
#include "ngspice/cktdefs.h"
#include "breakp.h"
#include "breakp2.h"
#include "runcoms2.h"
@ -186,6 +187,19 @@ com_stop(wordlist *wl)
(void) sprintf(buf, "%d", debugnumber);
cp_addkword(CT_DBNUMS, buf);
debugnumber++;
/* If com_stop is called after tran simulation has already started, set a breakpoint
if not in the past */
if ((thisone->db_type == DB_STOPWHEN) && cieq(thisone->db_nodename1, "time")) {
if (thisone->db_value2 > ft_curckt->ci_ckt->CKTtime) {
CKTsetBreak(ft_curckt->ci_ckt, thisone->db_value2);
if (ft_ngdebug)
printf("breakpoint set to time = %g\n", thisone->db_value2);
}
else {
fprintf(stderr, "\nWarning: command 'stop' would set breakpoint in the past, ignored!\n"
" time: %g, bkpt: %e\n\n", ft_curckt->ci_ckt->CKTtime, thisone->db_value2);
}
}
}
return;