Design document open for discussion
I have tried to merge as many (non-conflicting) ideas into this
document as possible. I may have missed some, please
I propose a period of two weeks for discussing this document as well
as how we can best go about the transition of the current tree to the
proposed tree.
I await your comments.
--
Arno
NOTICE
======
This document is under discussion/construction.
This document tries to summarize the good ideas that have been
floating around the ng-spice mailing list. It contains ideas from
many different people.
If you think you have a good idea to contribute, don't hesitate:
propose it on ng-spice@ieee.ing.uniroma1.it
Thank you,
Arno.
LICENSING
=========
Currently, the tree is BSD licensed (see COPYING for the whole
license). The majority of the contributors to the project wish to
bring the software under a GPL (compatible) license ASAP. Due to
legal incompatibilities between the GPL and BSD licensing, it is not
possible to link pieces of software statically to each other and
distribute it. Dynamically linked pieces don't seem to pose much
problem.
Therefore, if we want to move to a GPL license while retaining working
revisions during the transition, almost all parts need to be made into
shared libraries that can be loaded at runtime. Specific parts of the
code can than be converted to the GPL.
CODING STYLE
============
This project uses the BSD coding style. It is the prevalent coding
style in use for most of the source code. It is not advisable to
to force it into some other coding style.
DIRECTORY ORGANIZATION
======================
This is the proposed directory tree. To be done: map current
directories and source files to this new structure.
ng-spice/ # the interpreter/batch simulator
include/ # spice data structures, macro's, defines
ngspice.h
struct.h
macros.h
defines.h
src/ # glue code between parser, analysis, devices
tests/ # testing spice, nutmeg, etc functionality
contrib/ # contributions of utility programs/scripts etc.
lib/ # contents of src/lib moves here
parser/
include/ # API for circuit/netlist parser
src/ # the parser
doc/
tests/
analysis/ # modes of analysis
include/ # API for analysis
src/ # analysing code
tran/
ac/
dc/
sens/
noise/
...
tests/
devices/
include/ # generic device interface
src/ # registering devices, etc.
asrc/ # implementation of asrc device
bjt/ # implementation of bjt device
bsim1/
bsim2/
...
tests/ # tests for dynamic device loading, math props
maths/ # math subroutines
include/
src/
sparse/
fft/
...
tests/
misc/ # necessary?
include/
src/
tests/
Partial thread listing: