'stop' and 'altermod' command execution modified
This commit is contained in:
parent
62f22b4145
commit
cc6100f5cb
|
|
@ -1,3 +1,9 @@
|
||||||
|
11-01-01 Holger Vogt
|
||||||
|
* breakp.c: update to multiple conditionals with '=' in stop command
|
||||||
|
dctran.c: set breakpoint upon startup from database dbs ('stop when time = xxx' command)
|
||||||
|
spiceif.c: additional call to CKTtemp(ckt) after 'altermod' command to set
|
||||||
|
device instance pParam for immediate use
|
||||||
|
|
||||||
10-12-31 Holger Vogt
|
10-12-31 Holger Vogt
|
||||||
* breakp.c: allow multiple conditionals with '=' in stop command
|
* breakp.c: allow multiple conditionals with '=' in stop command
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,11 +88,8 @@ com_stop(wordlist *wl)
|
||||||
charr[3] = NULL;
|
charr[3] = NULL;
|
||||||
wln = wl_build(charr);
|
wln = wl_build(charr);
|
||||||
wl_splice(wl->wl_next, wln);
|
wl_splice(wl->wl_next, wln);
|
||||||
// wl_free(wl->wl_next);
|
|
||||||
// wl->wl_next = NULL;
|
|
||||||
// wl = wl_append(wl, wln);
|
|
||||||
}
|
}
|
||||||
|
/* continue with parsing the enhanced wordlist */
|
||||||
if (wl->wl_next->wl_next &&
|
if (wl->wl_next->wl_next &&
|
||||||
wl->wl_next->wl_next->wl_next) {
|
wl->wl_next->wl_next->wl_next) {
|
||||||
wl = wl->wl_next;
|
wl = wl->wl_next;
|
||||||
|
|
|
||||||
|
|
@ -928,6 +928,15 @@ if_setparam(CKTcircuit *ckt, char **name, char *param, struct dvec *val, int do_
|
||||||
dev = (GENinstance *)NULL;
|
dev = (GENinstance *)NULL;
|
||||||
}
|
}
|
||||||
doset(ckt, typecode, dev, mod, opt, val);
|
doset(ckt, typecode, dev, mod, opt, val);
|
||||||
|
|
||||||
|
/* Call to CKTtemp(ckt) will be invoked here only by 'altermod' commands,
|
||||||
|
to set internal model parameters pParam of each instance for immediate use,
|
||||||
|
otherwise e.g. model->BSIM3vth0 will be set,
|
||||||
|
but not pParam of any BSIM3 instance.
|
||||||
|
May contain side effects because call is abundant. h_vogt 110101
|
||||||
|
*/
|
||||||
|
if (do_model)
|
||||||
|
CKTtemp(ckt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct variable *
|
static struct variable *
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,10 @@ Modified: 2000 AlansFixes
|
||||||
#include "fteext.h"
|
#include "fteext.h"
|
||||||
#include "missing_math.h"
|
#include "missing_math.h"
|
||||||
|
|
||||||
|
/* for setting breakpoints required by dbs data base */
|
||||||
|
extern struct dbcomm *dbs;
|
||||||
|
#include "ftedebug.h"
|
||||||
|
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
/* gtri - add - wbk - Add headers */
|
/* gtri - add - wbk - Add headers */
|
||||||
#include "miftypes.h"
|
#include "miftypes.h"
|
||||||
|
|
@ -153,6 +157,22 @@ DCtran(CKTcircuit *ckt,
|
||||||
firsttime = 1;
|
firsttime = 1;
|
||||||
save_mode = (ckt->CKTmode&MODEUIC) | MODETRANOP | MODEINITJCT;
|
save_mode = (ckt->CKTmode&MODEUIC) | MODETRANOP | MODEINITJCT;
|
||||||
save_order = ckt->CKTorder;
|
save_order = ckt->CKTorder;
|
||||||
|
|
||||||
|
/* Add breakpoints here which have been requested by the user setting the
|
||||||
|
stop command as 'stop when time = xx'.
|
||||||
|
Get data from the global dbs data base.
|
||||||
|
*/
|
||||||
|
if (dbs) {
|
||||||
|
struct dbcomm *d;
|
||||||
|
for (d = dbs; d; d = d->db_next)
|
||||||
|
if ((d->db_type == DB_STOPWHEN) && cieq(d->db_nodename1,"time")
|
||||||
|
&& (d->db_value2 > 0)) {
|
||||||
|
CKTsetBreak(ckt, d->db_value2);
|
||||||
|
if (ft_ngdebug)
|
||||||
|
printf("breakpoint set to time = %g\n", d->db_value2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
/* gtri - begin - wbk - set a breakpoint at end of supply ramping time */
|
/* gtri - begin - wbk - set a breakpoint at end of supply ramping time */
|
||||||
/* must do this after CKTtime set to 0 above */
|
/* must do this after CKTtime set to 0 above */
|
||||||
|
|
@ -175,10 +195,10 @@ DCtran(CKTcircuit *ckt,
|
||||||
/* gtri - end - wbk - Call EVTop if event-driven instances exist */
|
/* gtri - end - wbk - Call EVTop if event-driven instances exist */
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
converged = CKTop(ckt,
|
converged = CKTop(ckt,
|
||||||
(ckt->CKTmode & MODEUIC) | MODETRANOP | MODEINITJCT,
|
(ckt->CKTmode & MODEUIC) | MODETRANOP | MODEINITJCT,
|
||||||
(ckt->CKTmode & MODEUIC) | MODETRANOP | MODEINITFLOAT,
|
(ckt->CKTmode & MODEUIC) | MODETRANOP | MODEINITFLOAT,
|
||||||
ckt->CKTdcMaxIter);
|
ckt->CKTdcMaxIter);
|
||||||
|
|
||||||
if(converged != 0) {
|
if(converged != 0) {
|
||||||
fprintf(stdout,"\nTransient solution failed -\n");
|
fprintf(stdout,"\nTransient solution failed -\n");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue