CODE ORGANIZATION

    The top level directory contains several README files on
    specific topics, info and news, compile scripts for
    Linux, macOS, Cygwin, MINGW, configure.ac used by
    autogen.sh to create file configure used by the "../configure" command.

    "m4/" is use in the configure step.

    "examples/" contains several spice input files.

    "test/" contains several spice input files for 'make check' and other
    tests

    "man/" contains UNIX style manual pages (only short infos).

    "visualc/" project files to enable compilation with MS Visual Studio.

    "src/" and its subdirectories contain all of the C source code.
    It contains the top level files "main.c" used by ngspice and
    "sharedspice.c" used by ngspice as shared library.
    There are also main files for outdated ngnutmeg, nghelp, ngmultidec,
    ngproc2mod, and ngsconvert.

    "src/ciderlib" hosts the code for the CIDER extension to ngspice, a
    2D process simulator offering connection between process and devices
    to be simulated by ngspice.

    "src/xspice" contains the code for the XSPICE extension to ngspice, an
    interface to analog and digital code models for true mixed signal simulation.

    "src/misc"   Miscellaneous utility and portability routines.

    "src/include" Header files for all *.c files of ngspice.

    "src/spicelib" is the device library and analysis portion of ngspice. Within
    it are the following subdirectories:
        devices/    All of the device specific code, with a subdir for
                    each device implementation.
        analysis/   All of the analysis code.
        parser/     To set up the matrix derived from the netlist.

    "src/maths" contains all maths functions of ngspice with
        ni/ Numerical algorithms (used by ckt routines).
        sparse/ Sparse matrix package (used by ckt and ni).
        cmaths/ Functions used in the control language
        fft/ Fast Fourier transform function (internal or interface to fftw)
        poly/ Interpolation functions
        misc/ Various math support algorithms
        deriv/ Various partial derivatives used by some device models (bjt, MOS1-9)
        dense/ Matrix operations used by S-parameter simulation
        KLU/ Alternative fast matrix solver KLU

    "src/frontend" contains the code for interfacing ngspice to its input and output.
        Files com_*.c contain the control language commands. outitf.c organizes the
        output file structure, rawfile.c writes output files, parse.c is the control
        language function parser. svg and postscript output are handled as well.
        inp.c, inpcom.c and subckt.c serve the main input handling functions:
        reading the netlist, parsing it, dealing with compatibility, expanding
        subcircuits and preparing the internal circuit structure.

        Furthermore it contains subdirs
        help/    The windowed help system (outdated).
        numparam/    Parser for .param and .func statements.
        parser/ More front end -- "C shell".
        wdisp/  MS Windows GUI
        trannoise/ random number and noise generator
        plotting/ plot interface to X11, gnuplot, and preparing output graphs
                  (curves and grid), interpreter for 'plot' command (plotit.c)

    "src/osdi" contains the code for interfacing ngspice to the OpenVAF compiled
        Verilog-A compact device models.
