ngspice/src/frontend/ChangeLog

383 lines
14 KiB
Plaintext

2003-07-08 Stefan Jones <stefan.jones@multigig.com>
* quote.c: return the pointer to the start of malloced
memory so it can be freeded
2003-05-02 Stuart Brorson <SDB@cloud9.net>
* Major changes in subckt.c to handle POLY attributes in
dependent sources. Added new case to switch in "translate" to
handle E, F, G, H sources. Many other fixes.
* Moved location of call to ENHtranslate_poly in inp.c. This was
necessary to correctly process POLY attributes and the associated
netlists and voltage sources.
2003-04-10 Stuart Brorson <sdb@cloud9.net>
* modified inp_readall (inpcom.c) to ignore blank
lines terminated by \r\n *and * \n. This fixes problems
associated with importing files from Windozeland.
* Added explanatory comments to many modules.
2002-01-03 Paolo Nenzi <p.nenzi@ieee.org>
* wdisp: added an entire directory containing windows frontend code
(Holger Vogt patch). Files in wdsip: ftegraf.h, makedefs, Makefile.am,
windisp.c and winprint.c.
* Makefile.am: Windows code compilation rules added to makefile.
* display.c, outitf.c, rawfile.c, resource.c, runcoms.c: added
defines for Windows (Holger Vogt patch).
2001-12-14 Paolo Nenzi <p.nenzi@ieee.org>
* control.c, control.h, com_cdump.c, com_cdump.h, variable.c, variable.h:
Patched the code with the one contributed by Charles Williams. The patches
addresses some memory leaks.
2001-11-25 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* circuits.h: transfered definition of structure 'circ' to ftedefs.h
2001-02-07 Paolo Nenzi <p.nenzi@ieee.org>
* outitf.c: From a message Alan sento to the mailing list:
---------- Forwarded message ----------
Date: Tue, 6 Feb 2001 11:11:56 -0000
From: "Gillespie, Alan" <Alan.Gillespie@analog.com>
Reply-To: ng-spice-devel@ieee.ing.uniroma1.it
To: "Ng-Spice-Devel (E-mail)" <ng-spice-devel@ieee.ing.uniroma1.it>
Subject: [ng-spice-devel] Reference variable update in interactive mode
I've tweaked outitf.c so that the reference variable value
is updated to the screen in interactive mode. I forgot to
save the old version first, though, so I couldn't do a diff,
so I'm just attaching the whole new outitf.c file. Also, I've
updated the documentation as follows :-
Modifications to "outitf.c"
---------------------------
A number of modifications have been applied to outitf.c in
order to achieve the following "improvements" :-
1) Spice3, by default, saved all node voltages, including
nodes internal to the devices. These extra nodes add
dramatically to the amount of data saved, but don't add
significantly to the useful information about the circuit.
So, instead of saving these nodes, a "hack" has been
introduced which checks a new spice option, and either
discards the internal node, or saves some device currents
instead.
2) During long simulations, spice would sit "staring back
blankly", giving no clue as to how well the simulation
was, or wasn't, proceeding. In order to give a little
more feedback, another "hack", in the data writing routine,
writes the value of the reference variable to the error
stream, which is usually the screen. In order to minimize
the CPU time "wasted" doing this, the routine will only
reprint the value if more than a quarter of a second since
the last screen update. The result is that this feedback
adds no significant extra time to performance of the
simulation.
3) The original file writing routines used to write each data
value to the file individually. A buffering scheme was added,
which collects each row of data in a buffer, and the writes
the whole buffer in one call. This gave a significant
performance improvement (up to 20%) on HPUX, with all currents
saved in large circuits, although there was no significant
difference on Windows 95. The improvement has not been
measured on Linux.
4) A check was added to make sure the file write was successful.
Spice3 could easily fill the hard disk, but would continue to
churn away, producing no more useful data. Now it will exit
gracefully. I can't remember why I thought this was important,
but at least it means that a PC with power management will be
able to power down after a long overnight simulation has
ceased to produce any more useful data.
Changes
-------
The routine beginPlot is called at the beginning of the simulation
to select which nodes and variables will be saved. The first
modification is at the point where it checks the "save" list. This
is the list of tokens attached to the .save lines read from the
spice source file. The routine now checks for "allv" and "alli"
as well as "all". "allv" is treated as a synonym for "all". If
"all" or "allv" is found, then a saveall flag is set, and if "alli"
is found then a new savealli flag is set.
Next, the addDataDesc routine is called for every variable to be
saved. This is done by stepping through an array called dataNames[].
I'm not quite sure where this array comes from, but it was quite
easy to add an if statement to stop it calling addDataDesc if
dataNames[i] points to a string containing any of the following -
#internal
#source
#drain
#collector
#emitter
#base
That seems to catch all the internal device nodes.
The next addition is a new pass through the dataNames[] array
specifically looking for those strings. (This pass is only performed
if the savealli flag has been set). When one of the strings is found,
a bunch of if-then-else statements creates a corresponding string
which is submitted to the add addSpecialDesc routine. This saves the
relevant device current. Note that since mosfets have only two
internal nodes, but four terminal currents, and bipolars have three
internal nodes and four terminal currents, some internal nodes have
to save more than one terminal current.
This last change is a clumsy hack, and only works if the devices in
question actually have internal nodes. Resistors and capacitors, for
instance, never have internal nodes, and so their terminal currents
will not cannot be saved with the .save alli card. Also, any bipolar,
mosfet or diodes with zero valued parasitic resistances (rd, rs, rc,
rb, re) will not be allocated internal nodes, and so their terminal
currents will not be saved by this hack, either.
Further down outitf.c, the OUTpData routine is called whenever a
new row of data is ready to be written to file. Near the top of this,
the reference variable is written to file separately from the rest of
the variables. This is a convenient point for a couple of statements
which check the elapsed time since the last update, and write the
reference value to stderr if it's time. Slightly further down the
routine is the section for writing data to a "plot", i.e. retaining
it in memory. A similar statement or two writes the reference value
to the screen for this case, i.e. interactive mode. At the end of the
OUTpData routine, a new check has been added to see if there was an
error writing to the rawfile. If so, the shouldstop flag is set to
TRUE, and the simulation will abort.
Scanning down outitf.c, the next modification is in the fileInit
routine. The first statement initialises the lastclock variable.
This is used later when deciding if it's time to write the reference
value to the screen.
Next, the fileInit_pass2 routine writes the name strings to the start
of the rawfile. At the end of this routine there is now a statement
which checks if this will be a binary rawfile, and if so, it allocates
a row buffer of the correct length.
The fileStartPoint routine seems to be called before each row of data
is written, and so this is a convenient point to reset the buffer
pointer to zero.
The fileAddRealValue and fileAddComplexValue routines now simply write
the relevant values to the buffer, and increment the buffer pointer.
Previously they called the fwrite library routine to actually write
the data. If the rawfile is not a binary one, however, they just write
the text as before.
The fileEndPoint routine was previously empty. Now it actually calls
fwrite to write the whole buffer to the file (if it's a binary file).
Finally the fileEnd routine prints the total number of data points to
the screen, and de-allocates the row buffer (if it was a binary
rawfile).
Congratulations to whoever put these dummy routines in in the first
place, since that allowed the buffering to be added very easily.
2001-01-23 Paolo Nenzi <p.nenzi@ieee.org>
* subckt.c: added some code (very, very experimental)
to support mos devices with variable number of nodes
(5 to 7) in subcircuit expansion. This hack is necessary
since SOI devices can have up to 7 nodes.
2000-11-07 Arno W. Peters <A.W.Peters@ieee.org>
* com_history, com_alias, parser/cshpar.c, parser/complete.c:
Applied patch by Michael Widlok. It fixes command completion and
history list. In the process, Michael also fixed a memory leak.
2000-09-09 Arno W. Peters <A.W.Peters@ieee.org>
* commands.c: Use fourier.h.
* dotcards.c: Update to prevent segfault.
* fourier.c, fourier.h: com_fourier is now calling fourier(), a
function with more parameters.
* dotcards.c: Added assertions to guard a double indirection, now
ngspice will bomb out on an assertion instead of a segfault.
2000-07-18 Arno W. Peters <A.W.Peters@ieee.org>
* com_ahelp.c, com_help.c, com_plot.c, com_set.c, com_unset.c:
Updated header file includes.
* quote.c: Code formatting changes.
2000-07-16 Arno W. Peters <A.W.Peters@ieee.org>
* com_set.h: New header file.
* com_state.c, com_state.h: Separated from debugcom.c.
* com_dump.c, com_dump.h: Separated from debugcom.c.
* debugcom.c, debugcom.h: Removed.
* Makefile.am: Updates for added/removed files.
2000-03-22 Paolo Nenzi <p.nenzi@ieee.org>
* rawfile.c: Applied Michael Widlok patch.
* spiceif.c: Applied Michael Widlok patch.
2000-03-12 Paolo Nenzi <p.nenzi@ieee.org>
* x11.c: Cleared the code. Rewmoved some empty return on void
functions.
1999-12-20 Paolo Nenzi <p.nenzi@ieee.org>
* outif.c: To fix various "save"-related segmentation faults, make
this one-line patch to outitf.c: line 356, change unique =
devname; to unique = copy(devname);
1999-12-20 Paolo Nenzi <p.nenzi@ieee.org>
* subckt.c: Bug: Current controlled switch subcircuit does not
expand the controlling source correctly: vsrc expands to
name:vsrc, not to v:name:src.
Fix: changed this file to indicate that w device has only 2 not 3
nodes and 1 not zero controlling sources.
1999-09-07 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* *.c: put back static functions declarations back in the .c files
(shouldn't be in .h files!)
1999-09-07 Arno <A.W.Peters@ieee.org>
* aspice.c: template to fprintf now conform to argument types.
* cmath1.c:
* cmath2.c: removed most warnings about possible use of
uninitialized variables. Only two remain in cx_sqrt().
1999-09-06 Arno Peters <A.W.Peters@ieee.org>
* dotcards.c: Put proper braces around an
ambiguous if/else construct.
* postcoms.c:
* postsc.c: Removed unused variables.
1999-09-04 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* Makefile.am (libfte_a_SOURCES): forgot display.h in list
* typesdef.c: moved types.c to typesdef.c
* signal_handler.c: moved signal.c to signal_handler.c
* *.c: added header file for all .c files
1999-09-01 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* *.c: removed lots of unnecessary HAS_XX tests and code
* Makefile.am (libfte_a_SOURCES): removed mfb.c from sources
* signal.c (ft_sigintr): removed HAS_MFB test
1999-08-30 Paolo Nenzi <pnenzi@ieee.ing.uniroma1.it>
* Removed #include "suffix.h" and replaced GENERIC with void.
1999-08-28 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* Makefile.am (libfte_a_SOURCES): removed x10.c from source files
* clip.c: removed MAX/MIN #defines
* Removed all #includes of misc.h and util.h (now in spice.h)
1999-08-19 Paolo Nenzi <pnenzi@ieee.ing.uniroma1.it>
* Makefile.am: added spec.c.
* spcmdtab.c: added code for spec command support. The original
patch came from ftp.mpce.mq.edu.au.
* spec.c: added this file containing the spec command code.
1999-08-08 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* Makefile.am (DEFS): removed -DWANT_MFB (don't need it)
* resource.c : removed HAS_RLIMIT_ tests
* error.c: removed HAS_VAXFPERROR code
* cmath3.c: removed HAS_SHORTMACRO code
* display.c : removed HAS_X10 code
* mfb.c (Mfb_Init): removed HAS_PCTERM code
* resource.c: removed all code related to HAS_MEMAVL
1999-08-06 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* resource.c: removed tests on HAS_UNIX_SEGMENT_HACK
* xgraph.c (ft_xgraph), options.c (cp_usrset), misccoms.c: removed
tests on HAS_SYSTEM
* nutinp.c, inp.c (com_source, doedit): removed tests on
HAS_SYSTEM (always true?)
* doplot.c (com_hardcopy): removed tests on HAS_UNLINK (always
true), removed tests on HAS_SYSTEM (always true?)
* signal.c:
* evaluate.c (doop):
* error.c (fatal):
* aspice.c: removed test on HAS_UNIX_SIGS (always true)
* signal.c:
* evaluate.c: removed test on HAS_LONGJUMP (always true)
1999-08-04 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* aspice.c: changed HAS_WAIT into HAVE_SYS_WAIT_H
* inpcom.c, breakp.c: changed HAS_CTYPE into HAVE_CTYPE_H
1999-08-03 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* signal.c, resource.c, evaluate.c, aspice.c: changed SIGNAL_TYPE
into RETSIGTYPE
1999-07-31 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* Makefile.am: added @X_CFLAGS@ (X11 header files) to INCLUDES and
removed unused LIBS list.
28-07-1999 emmanuel.rouat@wanadoo.fr (Manu Rouat)
* graf.c, display.c, doplot.c, x11.c: changed HAS_X11 define
to X_DISPLAY_MISSING, which is supplied by autoconf in config.h
* Makefile.am: removed -DWANT_X11