From c2702208bd8a68c5186a86c4ffa6a84f71fb3438 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Tue, 13 May 2025 11:52:45 +0200 Subject: [PATCH] Allow command 'stop when time=val' also if the tran simulation has already been started, e.g. while waiting for resume. Add a breakpoint if 'val' is in the future. --- src/frontend/breakp.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/frontend/breakp.c b/src/frontend/breakp.c index a02fb40cd..ec50fd068 100644 --- a/src/frontend/breakp.c +++ b/src/frontend/breakp.c @@ -187,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;