Ngspice development roadmap

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


Ngspice it is the latest incarnation of the spice3 circuit simulator, which is often referred as a "de facto" industry standard. 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 netlists and output vectors with other simulators.

Frontend related topics:

  •  Use utf8 encoding and support UNICODE characters.
  •  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 (mostly done).

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 new Berkeley MOS models (IMG, CMG, Bulk) to ADMS compiled devices. (ongoing)
  • Add table lookup functions for controlled generators (done, see XSPICE 2D and 3D table models.
  • 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? (almost done, see CUSPICE)
  • Investigate if an alternative matrix solver can improve simulation speed (done, KLU is available for testing).

Interfaces with other software:

  • Circuit optimization: In this field ASCO is a good starting point. (done)
  • 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.


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