diff --git a/.gitignore b/.gitignore index fdcecdeb4..10731e4f7 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,10 @@ Makefile.in /missing /ylwrap /ar-lib +/ngspice.pc + +/src/frontend/parse-bison.* +/src/spicelib/parser/inpptree-parser.* /src/include/ngspice/config.h.in /src/include/ngspice/config.h diff --git a/Makefile.am b/Makefile.am index 1d204fd58..3a7b0d186 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,7 +17,7 @@ EXTRA_DIST = FAQ autogen.sh Stuarts_Poly_Notes \ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 ar-lib compile config.guess \ src/include/ngspice/config.h.in config.sub configure install-sh \ missing mkinstalldirs stamp-h.in ltconfig \ - ltmain.sh depcomp ylwrap + ltmain.sh depcomp ylwrap ngspice.pc ACLOCAL_AMFLAGS = -I m4 diff --git a/compile_linux.sh b/compile_linux.sh index 5634c5f36..5341bed14 100644 --- a/compile_linux.sh +++ b/compile_linux.sh @@ -19,6 +19,8 @@ # Add (optionally) --enable-relpath to avoid absolute paths when searching for code models. # It might be necessary to uncomment and run ./autogen.sh . +SECONDS=0 + if test "$1" = "32"; then if [ ! -d "release32" ]; then mkdir release32 @@ -75,5 +77,8 @@ make install 2>&1 | tee make_install.log exitcode=${PIPESTATUS[0]} if [ $exitcode -ne 0 ]; then echo "make install failed"; exit 1 ; fi +ELAPSED="Elapsed compile time: $(($SECONDS / 3600))hrs $((($SECONDS / 60) % 60))min $(($SECONDS % 60))sec" +echo +echo $ELAPSED echo "success" exit 0 diff --git a/examples/Monte_Carlo/MC_ring_ts.sp b/examples/Monte_Carlo/MC_ring_ts.sp index ee88c3296..b23dcf9b4 100644 --- a/examples/Monte_Carlo/MC_ring_ts.sp +++ b/examples/Monte_Carlo/MC_ring_ts.sp @@ -124,16 +124,17 @@ if $?batchmode rusage quit else + set nolegend if $?sharedmode or $?win_console - gnuplot xnp_pl1 {$plot_out}.vout0 $ just plot the tran output with nominal parameters + gnuplot xnp_pl1 {$plot_out}.vout0 ylabel vout0 $ just plot the tran output with nominal parameters else - plot {$plot_out}.vout0 $ just plot the tran output with nominal parameters + plot {$plot_out}.vout0 ylabel vout0 $ just plot the tran output with nominal parameters end setplot $plot_fft if $?sharedmode or $?win_console - gnuplot xnp_pl2 db(mag(ally)) xlimit 0 1G ylimit -80 10 + gnuplot xnp_pl2 db(mag(ally)) ylabel 'output voltage versus frequency' xlimit 0 1G ylimit -80 10 else - plot db(mag(ally)) xlimit 0 1G ylimit -80 10 + plot db(mag(ally)) xlimit 0 1G ylimit -80 10 ylabel 'output voltage versus frequency' end * * create a histogram from vector maxffts @@ -166,9 +167,10 @@ else * plot the histogram let count = yvec - 1 $ subtract 1 because we started with unitvec containing ones if $?sharedmode or $?win_console - gnuplot np_pl3 count vs osc_frequ combplot + gnuplot np_pl3 count vs osc_frequ combplot ylabel 'counts per bin' else - plot count vs osc_frequ combplot + set xbrushwidth=5 + plot count vs osc_frequ combplot ylabel 'counts per bin' end * calculate jitter let diff40 = (vecmax(halfffts) - vecmin(halfffts))*1e-6 diff --git a/examples/p-to-n-examples/.spiceinit b/examples/p-to-n-examples/.spiceinit new file mode 100644 index 000000000..b78bb0201 --- /dev/null +++ b/examples/p-to-n-examples/.spiceinit @@ -0,0 +1 @@ +set ngbehavior=psa diff --git a/examples/vdmos/100W.sp b/examples/vdmos/100W.sp index 403436643..5a898f9c9 100644 --- a/examples/vdmos/100W.sp +++ b/examples/vdmos/100W.sp @@ -5,9 +5,9 @@ *R24 & R25 are optional output offset trimming * VTamb tamb 0 25 -MQ1 +V N010 N012 tn tcn IRFP240 tnodeout +MQ1 +V N010 N012 tn tcn IRFP240 thermal X1 tcn tamb case-ambient -MQ2 -V N020 N017 tp tcp IRFP9240 tnodeout +MQ2 -V N020 N017 tp tcp IRFP9240 thermal X2 tcp tamb case-ambient R1 OUT N017 .33 R2 N012 OUT .33 diff --git a/examples/vdmos/self-heating.sp b/examples/vdmos/self-heating.sp index 535a3eb8d..463d3072d 100644 --- a/examples/vdmos/self-heating.sp +++ b/examples/vdmos/self-heating.sp @@ -1,5 +1,5 @@ VDMOS self heating test -M1 D G 0 tj tc IRFP240 tnodeout +M1 D G 0 tj tc IRFP240 thermal rthk tc 0 0.05 VG G 0 5V Pulse 0 10 0 1m 1m 100m 200m *RD D D1 4 diff --git a/src/Makefile.am b/src/Makefile.am index c3ecdf00c..17a07420a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -260,6 +260,7 @@ endif !NO_HELP ngsconvert_SOURCES = ngsconvert.c ngsconvert_LDADD = \ + frontend/com_history.lo \ frontend/libfte.la \ frontend/parser/libparser.la \ maths/misc/libmathmisc.la \ @@ -271,6 +272,7 @@ ngsconvert_LDADD = \ ngproc2mod_SOURCES = ngproc2mod.c ngproc2mod_LDADD = \ + frontend/libfte.la \ frontend/parser/libparser.la \ spicelib/parser/libinp.la \ misc/libmisc.la @@ -281,6 +283,8 @@ ngproc2mod_LDADD = \ ngmultidec_SOURCES = ngmultidec.c ngmultidec_LDADD = \ + frontend/libfte.la \ + frontend/parser/libparser.la \ maths/sparse/libsparse.la \ misc/libmisc.la @@ -289,6 +293,11 @@ ngmultidec_LDADD = \ ngmakeidx_SOURCES = makeidx.c +ngmakeidx_LDADD = \ + frontend/libfte.la \ + frontend/parser/libparser.la \ + misc/libmisc.la + ## create index for online help: ngspice.idx: ngmakeidx$(EXEEXT) $(srcdir)/ngspice.txt diff --git a/src/frontend/device.c b/src/frontend/device.c index 809d9f24a..608fcbbea 100644 --- a/src/frontend/device.c +++ b/src/frontend/device.c @@ -1095,6 +1095,7 @@ if_set_binned_model(CKTcircuit *ckt, char *devname, char *param, struct dvec *va return; } w = v->va_V.vV_real; + free_struct_variable(v); v = if_getparam(ckt, &devname, "l", 0, 0); if (!v) { @@ -1102,6 +1103,7 @@ if_set_binned_model(CKTcircuit *ckt, char *devname, char *param, struct dvec *va return; } l = v->va_V.vV_real; + free_struct_variable(v); if (param[0] == 'w') w = *val->v_realdata; /* overwrite the width with the alter param */ diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index ea5a05bcf..1ed3f7bcb 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -4088,7 +4088,7 @@ static int get_number_terminals(char *c) char *inst = gettok_instance(&c); strncpy(nam_buf, inst, sizeof(nam_buf) - 1); txfree(inst); - if (strstr(nam_buf, "off") || strchr(nam_buf, '=') || strstr(nam_buf, "tnodeout")) + if (strstr(nam_buf, "off") || strchr(nam_buf, '=') || strstr(nam_buf, "tnodeout") || strstr(nam_buf, "thermal")) break; i++; } @@ -6964,16 +6964,16 @@ static int inp_vdmos_model(struct card *deck) card->line = new_line; wl_free(wlb); } - /* we have a VDMOS instance line with 'tnodeout' and thus need exactly 5 nodes + /* we have a VDMOS instance line with 'thermal' flag and thus need exactly 5 nodes */ - else if (strstr(curr_line, "tnodeout")) { + else if (curr_line[0] == 'm' && strstr(curr_line, "thermal")) { for (i = 0; i < 7; i++) curr_line = nexttok(curr_line); - if (!ciprefix("tnodeout", curr_line)) { + if (!ciprefix("thermal", curr_line)) { fprintf(cp_err, "Error: We need exactly 5 nodes\n" " drain, gate, source, tjunction, tcase\n" - " in VDMOS instance line\n" + " in VDMOS instance line with thermal model\n" " %s\n", card->line); return 1; } diff --git a/src/frontend/parser/glob.c b/src/frontend/parser/glob.c index caddc6784..ecdbd2075 100644 --- a/src/frontend/parser/glob.c +++ b/src/frontend/parser/glob.c @@ -66,7 +66,7 @@ static wordlist_l *brac1(size_t offset_ocurl1, const char *p_str_cur); static wordlist_l *brac2(const char *string, size_t *p_n_char_processed); static wordlist *bracexpand(const wordlist *w_exp); -static void merge_home_with_rest(wordlist *wl_node, +static inline void merge_home_with_rest(wordlist *wl_node, size_t n_char_home, const char *sz_home, size_t n_char_skip); static inline void strip_1st_char(wordlist *wl_node); static void tilde_expand_word(wordlist *wl_node); diff --git a/src/frontend/plotting/plotit.c b/src/frontend/plotting/plotit.c index 5ded37c6e..cd8166f1c 100644 --- a/src/frontend/plotting/plotit.c +++ b/src/frontend/plotting/plotit.c @@ -354,7 +354,7 @@ bool plotit(wordlist *wl, const char *hcopy, const char *devname) } if (nylabel) { rc_ds |= ds_cat_printf(&ds_cline, " ylabel '%s'", nylabel); - tfree(nxlabel); + tfree(nylabel); } if (ntitle) { rc_ds |= ds_cat_printf(&ds_cline, " title '%s'", ntitle); @@ -1146,6 +1146,8 @@ quit: ds_free(&ds_cline); /* free dstring resources, if any */ free_pnode(names); FREE(title); + FREE(xlabel); + FREE(ylabel); quit1: /* Free any vectors left behing while parsing the plot arguments. These diff --git a/src/frontend/runcoms2.c b/src/frontend/runcoms2.c index 7229749e1..cb42e38ab 100644 --- a/src/frontend/runcoms2.c +++ b/src/frontend/runcoms2.c @@ -27,6 +27,10 @@ Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group #include "ngspice/inpdefs.h" +#if defined(XSPICE) && defined(SIMULATOR) +#include "ngspice/evtproto.h" +#endif + extern void line_free_x(struct card *deck, bool recurse); extern INPmodel *modtab; @@ -237,6 +241,11 @@ com_remcirc(wordlist *wl) /* The next lines stem from com_rset */ INPkillMods(); +#if defined(XSPICE) && defined(SIMULATOR) + /* remove event queues, if XSPICE and not nutmeg */ + EVTunsetup(ft_curckt->ci_ckt); +#endif + if_cktfree(ft_curckt->ci_ckt, ft_curckt->ci_symtab); for (v = ft_curckt->ci_vars; v; v = next) { next = v->va_next; diff --git a/src/include/ngspice/evtproto.h b/src/include/ngspice/evtproto.h index d1569061b..a961db1da 100644 --- a/src/include/ngspice/evtproto.h +++ b/src/include/ngspice/evtproto.h @@ -65,6 +65,7 @@ void EVTtermInsert( char **err_msg); int EVTsetup(CKTcircuit *ckt); +int EVTunsetup(CKTcircuit* ckt); int EVTdest(Evt_Ckt_Data_t *evt); diff --git a/src/ngproc2mod.c b/src/ngproc2mod.c index 4321801bf..e7d2688f1 100644 --- a/src/ngproc2mod.c +++ b/src/ngproc2mod.c @@ -329,3 +329,6 @@ retry: } } } + +void +controlled_exit(int status) { exit(status); } diff --git a/src/ngsconvert.c b/src/ngsconvert.c index 88bfcfb91..f8a7a5176 100644 --- a/src/ngsconvert.c +++ b/src/ngsconvert.c @@ -436,7 +436,7 @@ void cp_ccon(bool o) { NG_IGNORE(o); } char*if_errstring(int c) { NG_IGNORE(c); return copy("error"); } void out_printf(char *fmt, ...) { NG_IGNORE(fmt); } void out_send(char *string) { NG_IGNORE(string); } -struct variable * cp_enqvar(char *word, int *tbfreed) { NG_IGNORE(word); NG_IGNORE(*tbfreed); return (NULL); } +struct variable * cp_enqvar(const char *word, int *tbfreed) { NG_IGNORE(word); NG_IGNORE(*tbfreed); return (NULL); } struct dvec *vec_get(const char *word) { NG_IGNORE(word); return (NULL); } void cp_ccom(wordlist *w, char *b, bool e) { NG_IGNORE(e); @@ -445,6 +445,7 @@ void cp_ccom(wordlist *w, char *b, bool e) { int cp_usrset(struct variable *v, bool i) { NG_IGNORE(i); NG_IGNORE(v); return(US_OK); } +wordlist * cp_doalias(wordlist *wlist) {NG_IGNORE(wlist); return NULL;} int disptype; diff --git a/src/spicelib/analysis/dctran.c b/src/spicelib/analysis/dctran.c index 5515b149d..6e6a03f77 100644 --- a/src/spicelib/analysis/dctran.c +++ b/src/spicelib/analysis/dctran.c @@ -275,7 +275,10 @@ DCtran(CKTcircuit *ckt, fflush(stdout); } - if(converged != 0) return(converged); + if (converged != 0) { + SPfrontEnd->OUTendPlot(job->TRANplot); + return(converged); + } #ifdef XSPICE /* gtri - add - wbk - 12/19/90 - Add IPC stuff */ diff --git a/src/spicelib/devices/bjt/bjt.c b/src/spicelib/devices/bjt/bjt.c index fc86aa6c3..33374b14f 100644 --- a/src/spicelib/devices/bjt/bjt.c +++ b/src/spicelib/devices/bjt/bjt.c @@ -175,10 +175,13 @@ IFparm BJTmPTable[] = { /* model parameters */ IOP("tnr1", BJT_MOD_TNR1, IF_REAL, "NR 1. temperature coefficient"), IOP("tnr2", BJT_MOD_TNR2, IF_REAL, "NR 2. temperature coefficient"), IOP("trb1", BJT_MOD_TRB1, IF_REAL, "RB 1. temperature coefficient"), + IOPR("trb", BJT_MOD_TRB1, IF_REAL, "RB 1. temperature coefficient"), IOP("trb2", BJT_MOD_TRB2, IF_REAL, "RB 2. temperature coefficient"), IOP("trc1", BJT_MOD_TRC1, IF_REAL, "RC 1. temperature coefficient"), + IOPR("trc", BJT_MOD_TRC1, IF_REAL, "RC 1. temperature coefficient"), IOP("trc2", BJT_MOD_TRC2, IF_REAL, "RC 2. temperature coefficient"), IOP("tre1", BJT_MOD_TRE1, IF_REAL, "RE 1. temperature coefficient"), + IOPR("tre", BJT_MOD_TRE1, IF_REAL, "RE 1. temperature coefficient"), IOP("tre2", BJT_MOD_TRE2, IF_REAL, "RE 2. temperature coefficient"), IOP("trm1", BJT_MOD_TRM1, IF_REAL, "RBM 1. temperature coefficient"), IOP("trm2", BJT_MOD_TRM2, IF_REAL, "RBM 2. temperature coefficient"), diff --git a/src/spicelib/devices/vdmos/vdmos.c b/src/spicelib/devices/vdmos/vdmos.c index d6802652b..12dfd1b45 100644 --- a/src/spicelib/devices/vdmos/vdmos.c +++ b/src/spicelib/devices/vdmos/vdmos.c @@ -22,7 +22,7 @@ IFparm VDMOSpTable[] = { /* parameters */ IOPU("dtemp", VDMOS_DTEMP, IF_REAL, "Instance temperature difference"), IP( "ic", VDMOS_IC, IF_REALVEC, "Vector of D-S, G-S voltages"), - IOP("tnodeout", VDMOS_TNODEOUT, IF_FLAG, "Thermal model switch on/off"), + IOP("thermal", VDMOS_THERMAL, IF_FLAG, "Thermal model switch on/off"), OP( "id", VDMOS_CD, IF_REAL, "Drain current"), OP( "is", VDMOS_CS, IF_REAL, "Source current"), diff --git a/src/spicelib/devices/vdmos/vdmosacld.c b/src/spicelib/devices/vdmos/vdmosacld.c index 2a95a90e2..9e20e29ad 100644 --- a/src/spicelib/devices/vdmos/vdmosacld.c +++ b/src/spicelib/devices/vdmos/vdmosacld.c @@ -35,7 +35,7 @@ VDMOSacLoad(GENmodel *inModel, CKTcircuit *ckt) for(here = VDMOSinstances(model); here!= NULL; here = VDMOSnextInstance(here)) { - selfheat = (here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven); + selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven); if (here->VDMOSmode < 0) { xnrm=0; xrev=1; diff --git a/src/spicelib/devices/vdmos/vdmosask.c b/src/spicelib/devices/vdmos/vdmosask.c index 597192fc3..4db205518 100644 --- a/src/spicelib/devices/vdmos/vdmosask.c +++ b/src/spicelib/devices/vdmos/vdmosask.c @@ -50,8 +50,8 @@ VDMOSask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, case VDMOS_OFF: value->iValue = here->VDMOSoff; return(OK); - case VDMOS_TNODEOUT: - value->iValue = here->VDMOStnodeout; + case VDMOS_THERMAL: + value->iValue = here->VDMOSthermal; return(OK); case VDMOS_IC_VDS: value->rValue = here->VDMOSicVDS; diff --git a/src/spicelib/devices/vdmos/vdmosdefs.h b/src/spicelib/devices/vdmos/vdmosdefs.h index 5e227f90b..ffdae728b 100644 --- a/src/spicelib/devices/vdmos/vdmosdefs.h +++ b/src/spicelib/devices/vdmos/vdmosdefs.h @@ -64,7 +64,7 @@ typedef struct sVDMOSinstance { double VDMOSdsConductance; /*conductance of drain to source:set in setup*/ double VDMOStemp; /* operating temperature of this instance */ double VDMOSdtemp; /* operating temperature of the instance relative to circuit temperature*/ - int VDMOStnodeout; /* flag indicate self heating on */ + int VDMOSthermal; /* flag indicate self heating on */ double VDMOStTransconductance; /* temperature corrected transconductance*/ double VDMOStPhi; /* temperature corrected Phi */ @@ -157,7 +157,7 @@ typedef struct sVDMOSinstance { unsigned VDMOSsNodePrimeSet :1; unsigned VDMOSicVDSGiven :1; unsigned VDMOSicVGSGiven :1; - unsigned VDMOStnodeoutGiven : 1; /* flag indicate self heating on */ + unsigned VDMOSthermalGiven : 1; /* flag indicate self heating on */ unsigned VDMOSvonGiven : 1; unsigned VDMOSvdsatGiven :1; unsigned VDMOSmodeGiven :1; @@ -440,7 +440,7 @@ enum { VDMOS_TEMP, VDMOS_M, VDMOS_DTEMP, - VDMOS_TNODEOUT, + VDMOS_THERMAL, }; /* model parameters */ diff --git a/src/spicelib/devices/vdmos/vdmosload.c b/src/spicelib/devices/vdmos/vdmosload.c index 042a31178..f0b6d4578 100644 --- a/src/spicelib/devices/vdmos/vdmosload.c +++ b/src/spicelib/devices/vdmos/vdmosload.c @@ -104,7 +104,7 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) for (here = VDMOSinstances(model); here != NULL; here = VDMOSnextInstance(here)) { - selfheat = (here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven); + selfheat = (here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven); if (selfheat) Check_mos = 1; else diff --git a/src/spicelib/devices/vdmos/vdmosnoi.c b/src/spicelib/devices/vdmos/vdmosnoi.c index 48fe0dda8..3d96af5bb 100644 --- a/src/spicelib/devices/vdmos/vdmosnoi.c +++ b/src/spicelib/devices/vdmos/vdmosnoi.c @@ -91,7 +91,7 @@ VDMOSnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, switch (mode) { case N_DENS: - if ((inst->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) + if ((inst->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) tempRatioSH = inst->VDMOSTempSH / ckt->CKTtemp; else tempRatioSH = 1.0; diff --git a/src/spicelib/devices/vdmos/vdmospar.c b/src/spicelib/devices/vdmos/vdmospar.c index ad57b8c09..fef9de1bf 100644 --- a/src/spicelib/devices/vdmos/vdmospar.c +++ b/src/spicelib/devices/vdmos/vdmospar.c @@ -61,9 +61,9 @@ VDMOSparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select) here->VDMOSicVGS = value->rValue; here->VDMOSicVGSGiven = TRUE; break; - case VDMOS_TNODEOUT: - here->VDMOStnodeout = (value->iValue != 0); - here->VDMOStnodeoutGiven = TRUE; + case VDMOS_THERMAL: + here->VDMOSthermal = (value->iValue != 0); + here->VDMOSthermalGiven = TRUE; break; case VDMOS_IC: switch(value->v.numValue){ diff --git a/src/spicelib/devices/vdmos/vdmosset.c b/src/spicelib/devices/vdmos/vdmosset.c index 1bd415a91..37050c500 100644 --- a/src/spicelib/devices/vdmos/vdmosset.c +++ b/src/spicelib/devices/vdmos/vdmosset.c @@ -342,7 +342,7 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, here->VDIOposPrimeNode = here->VDMOSsNode; } - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { if (here->VDMOStempNode == -1) { error = CKTmkVolt(ckt,&tmp,here->VDMOSname,"Tj"); if (error) return(error); @@ -374,7 +374,7 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\ return(E_NOMEM);\ } } while(0) - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { TSTALLOC(VDMOSTemptempPtr, VDMOStempNode, VDMOStempNode); TSTALLOC(VDMOSTempdpPtr, VDMOStempNode, VDMOSdNodePrime); TSTALLOC(VDMOSTempspPtr, VDMOStempNode, VDMOSsNodePrime); @@ -458,7 +458,7 @@ VDMOSunsetup(GENmodel *inModel, CKTcircuit *ckt) CKTdltNNum(ckt, here->VDIOposPrimeNode); here->VDIOposPrimeNode = 0; - if ((here->VDMOStnodeoutGiven) && (model->VDMOSrthjcGiven)) { + if ((here->VDMOSthermalGiven) && (model->VDMOSrthjcGiven)) { if (here->VDMOStNodePrime > 0) CKTdltNNum(ckt, here->VDMOStNodePrime); here->VDMOStNodePrime = 0; diff --git a/src/xspice/evt/evtsetup.c b/src/xspice/evt/evtsetup.c index d078ad549..4414b66bc 100644 --- a/src/xspice/evt/evtsetup.c +++ b/src/xspice/evt/evtsetup.c @@ -135,6 +135,29 @@ int EVTsetup( } +int EVTunsetup( + CKTcircuit* ckt) /* The circuit structure */ +{ + int err; + + /* Exit immediately if no event-driven instances in circuit */ + if (ckt->evt->counts.num_insts == 0) + return(OK); + + /* Clear the inst, node, and output queues, and initialize the to_call */ + /* elements in the instance queue to call all event-driven instances */ + err = EVTsetup_queues(ckt); + if (err) + return(err); + + /* Initialize additional event data */ + g_mif_info.circuit.evt_step = 0.0; + + /* Return OK */ + return(OK); +} + + /* diff --git a/src/xspice/icm/GNUmakefile.in b/src/xspice/icm/GNUmakefile.in index 7d3331db6..ad4a2734a 100644 --- a/src/xspice/icm/GNUmakefile.in +++ b/src/xspice/icm/GNUmakefile.in @@ -93,8 +93,10 @@ cm-deps := \ cm-descr := \ $(cm)/cmextrn.h \ $(cm)/cminfo.h \ + $(cm)/cminfo2.h \ $(cm)/udnextrn.h \ $(cm)/udninfo.h \ + $(cm)/udninfo2.h \ $(cm)/objects.inc diff --git a/src/xspice/icm/analog/.gitignore b/src/xspice/icm/analog/.gitignore index abef3a30c..fda83b3e8 100644 --- a/src/xspice/icm/analog/.gitignore +++ b/src/xspice/icm/analog/.gitignore @@ -2,10 +2,12 @@ /cmextrn.h /cminfo.h +/cminfo2.h /dlmain.c /objects.inc /udnextrn.h /udninfo.h +/udninfo2.h /*/*.c diff --git a/src/xspice/icm/digital/.gitignore b/src/xspice/icm/digital/.gitignore index a766619af..758076c5d 100644 --- a/src/xspice/icm/digital/.gitignore +++ b/src/xspice/icm/digital/.gitignore @@ -2,10 +2,12 @@ /cmextrn.h /cminfo.h +/cminfo2.h /dlmain.c /objects.inc /udnextrn.h /udninfo.h +/udninfo2.h /*/*.c diff --git a/src/xspice/icm/spice2poly/.gitignore b/src/xspice/icm/spice2poly/.gitignore index 27b44acbe..9b60b041f 100644 --- a/src/xspice/icm/spice2poly/.gitignore +++ b/src/xspice/icm/spice2poly/.gitignore @@ -2,10 +2,12 @@ /cmextrn.h /cminfo.h +/cminfo2.h /dlmain.c /objects.inc /udnextrn.h /udninfo.h +/udninfo2.h /*/*.c diff --git a/src/xspice/icm/table/.gitignore b/src/xspice/icm/table/.gitignore new file mode 100644 index 000000000..00a3641ed --- /dev/null +++ b/src/xspice/icm/table/.gitignore @@ -0,0 +1,11 @@ +/table.cm + +/cmextrn.h +/cminfo.h +/cminfo2.h +/objects.inc +/udnextrn.h +/udninfo.h +/udninfo2.h + +/*/*.c diff --git a/src/xspice/icm/xtradev/.gitignore b/src/xspice/icm/xtradev/.gitignore index efea9c1c9..b803004ac 100644 --- a/src/xspice/icm/xtradev/.gitignore +++ b/src/xspice/icm/xtradev/.gitignore @@ -2,10 +2,12 @@ /cmextrn.h /cminfo.h +/cminfo2.h /dlmain.c /objects.inc /udnextrn.h /udninfo.h +/udninfo2.h /*/*.c diff --git a/src/xspice/icm/xtraevt/.gitignore b/src/xspice/icm/xtraevt/.gitignore index a27aace1d..352f6580d 100644 --- a/src/xspice/icm/xtraevt/.gitignore +++ b/src/xspice/icm/xtraevt/.gitignore @@ -2,10 +2,12 @@ /cmextrn.h /cminfo.h +/cminfo2.h /dlmain.c /objects.inc /udnextrn.h /udninfo.h +/udninfo2.h /*/*.c diff --git a/visualc/sharedspice.vcxproj b/visualc/sharedspice.vcxproj index 212541ec4..65b24589f 100644 --- a/visualc/sharedspice.vcxproj +++ b/visualc/sharedspice.vcxproj @@ -456,7 +456,6 @@ - @@ -1062,7 +1061,6 @@ - diff --git a/visualc/vngspice-fftw.vcxproj b/visualc/vngspice-fftw.vcxproj index e197090a0..3df7199ad 100644 --- a/visualc/vngspice-fftw.vcxproj +++ b/visualc/vngspice-fftw.vcxproj @@ -914,6 +914,7 @@ lib /machine:x64 /def:..\..\fftw-3.3-dll64\libfftw3-3.def /out:$(IntDir)libfftw3 + @@ -931,6 +932,7 @@ lib /machine:x64 /def:..\..\fftw-3.3-dll64\libfftw3-3.def /out:$(IntDir)libfftw3 + @@ -1522,6 +1524,7 @@ lib /machine:x64 /def:..\..\fftw-3.3-dll64\libfftw3-3.def /out:$(IntDir)libfftw3 +