* TODO: Removed.

This commit is contained in:
arno 2000-10-29 09:05:45 +00:00
parent b2c1e70401
commit 385994e1e1
1 changed files with 0 additions and 121 deletions

121
TODO
View File

@ -1,121 +0,0 @@
Long term vision
================
Remove distinction between subcircuits and models as much as possible.
With a Spice netlist compiler (to be written), the subcircuit can be
translated into a compiled version, dynamically loadable into the
simulation core.
Using the approach outlined above, we can cut down on maintenance for
the bsim[123], bjt, and other transistor models. For inspiration,
look at *.model files in ACS (Al's Circuit Simulator).
List of Things To Do
====================
Standards conformance
---------------------
Add proper copyright headers to every source, header, documentation
and other files.
Fix all compiler warnings.
Remove smktemp() in favor of tmpfile() or other ANSI C equivalent;
Note: different symantics!
Write a asprintf() replacement for systems that don't have it
available. Also check how this function interacts with the garbage
collector.
Prefix all functions in the spice library with spice_*.
Usability issues
------------------
Plug all memory leaks; use debauch (http://quorum.tamu.edu/jon/gnu/)
or another memory checker to find them. Could also try a garbage
collector (http://www.hpl.hp.com/personal/Hans_Boehm/gc/) to
circumvent memory leaks.
Substitute help interface by call to webbrowser or info reader and get
rid of all help-related code.
Refactorings
------------
Netlist parsing. The circuit directory currrently has definitions for
parsing one model line per device. Get this generalized into a
structure that codifies the changes between the devices. At a later
stage, distribute the structure into the devices directories. The
generic parser remains in the spice library.
Separate ngspice and nutmeg; i.e., no more SIMULATOR define. ngspice
should probably only contain the batch processor. nutmeg would have
the complete frontend.
All frontend commands can now be found in the frontend directory.
Move frontend helper functions into frontend directory as well.
Not all files that define commands, start with com_*; fix that.
Make devices dynamically loadable. Perhaps use framework from glib
(http://developer.gnome.org/doc/API/glib/index.html).
Integrate bsim3, bsim3v1, bsim3v2 to use a single codebase instead of
three only slighty differing implementations. This also cuts down
compilation time.
Code for determing memory limits and resource usage, now use
setjmp()/longjmp(), replace this by rlimit() on systems that have it.
Program frontend in Guile (http://www.gnu.org/software/guile ),
Python (http://www.python.org ), or SWIG (http://www.swig.org). This
shows where the spicelib API needs refining.
Testability
-----------
Verify C code device models by building equivalent netlists and
comparing simulation results. Equivalent netlists also help document
the models currently in Spice.
Use benchmarking suite to profile Spice. Use gcov to measure coverage
(and to find out where more tests are needed.) Make profiling support
a configure switch.
Devise a way to compare outputs from different circuit simulators to
verify the results of the simulations.
Add small tests for all functions in the complex library in
src/maths/cmaths.
Add tests for all functions in the sparse matrix library in
src/maths/sparse.
Add tests for all functions in the polynomial library in
src/maths/poly.
Add tests for all functions in the derivative library in
src/maths/deriv.
Add more circuit tests into the tests directory.
Documentation
-------------
Make a document that contains a high level architectural overview of
spice.
Convert ngspice.texi further to texinfo format. [PARTIAL]
Distribute devices documentation into the devices tree. This makes it
easier for developers to update documentation in concert with code.
Update manual pages for spice and nutmeg. Perhaps generate them with
c2man or some other documentation generation utility.