Ngspice development roadmap

There is no "official" development roadmap yet. What follows is a list of topics that we think should be addresses. There is no priority given in the list below, and we need people interested in contributing code. This is an open source project anf we will choose the options where we have most fun coding and testing.

Guidelines:

Ngspice it is the latest incarnation of the spice3 circuit simulator, which is often referred as a "de facto" insdustry standard and keeping spice3 compatibiliy should be a general guideline. Compatibility with other simulators is another guideline. It is important to use a common interface to share netlist and output vectors with other simulators.

Frontend related topics:

  •  Write PSPICE and HSPICE translators: both simulator are widely used. Being compatible with their netlist language should be a terrific advantage (e.g. see here).
  • Add missing options to .measure card (e.g. DERIV).
  •  Add new output formats: Adding new structured output formats to ngspice will allow integration with powerful post-processing applications. New formats may include CSV (Comma Separated Value), HDF, etc. (partially done, see wrdata command)
  •  Unify access to built in functions: The three internal function parsers (numparam,. B source, command interpreter) have partially different built in functions available. Unify them to make access transparent to the user.

Analyses related topics:

  • Add steady state analysis capability. (ongoing)

Devices related topics:

  • Add device parameters (@dev[param]) to be used in B source.
  • Add 'digital' input to independent voltage and current source (e.g. PATTERN).
  • Add 'file' input to independent voltage and current sources. (done, see XSPICE File Source codemodel)
  • Add noise support to ADMS compiled devices.
  • Add table lookup functions for controlled generators.
  • Add a saturable core inductor to ngspice (e.g.  this one).

Documentation related topics:

  • Update documentation with latest additions. (ongoing)
  • Expand documentation with examples and recipes for the novice users. (ongoing)
  • Provide web browseable documentation.

Code quality related topics:

  • Remove memory leaks. (done)
  • Build a non regression test suite.
  • Allow separate object file directories: remove mixing of source code files and newly created object and library files. (done)
  • Improve transfer function and pole-zero code. Improve convergence, (almost) always return correct number of poles and zeros.

Performance related topics:

  • Investigate if the basic numeric loops in ngspice are efficient on modern CPUs. Shall we exploit the capabilities of modern GPUs?
  • Investigate if an alternative matrix solver can improve simulation speed (e.g. KLU and SuperLU).

Interfaces with other software:

  • Circuit optimization: In this field ASCO is a good starting point. (done)
  • Compact model extraction: using ngspice together with SimCAS to perform parameter extraction.
  • GHDL co-simulation:  GHDL is a VHDL simulator which compiles VHDL sources and links it with a runtime library that performs event driven simulation of the device. Modification of the runtime library can make it possible to interface it with the xspice interface of ngspice. Then mixed mode simulations can be performed with spice netlists for analogue part, and vhdl code for digital parts.
  • The vpi interface is under consideration as another option to link ngspice and VHDL.

Curiosities:

There is a patch to import sound files into ngspice that can be used as starting point. link