In order to post your reviews, to rank a review or to send comments to the mailing-list, you need to log in. If you have not yet created your account, please register. In case of error or omission, please send us your feedback.
PySpice is a Python 3 Package to generate and steer Berkeley Spice circuit, to simulate them and finally analyse the output using Python.
PySpice is a Python 3 library which interplay with Berkeley SPICE, the industrial circuit
SPICE (Simulation Program with Integrated Circuit Emphasis) was developed at the Electronics
Research Laboratory of the University of California, Berkeley in 1973 by Laurence Nagel with
direction from his research advisor, Prof. Donald Pederson. Then Spice emerged as an industrial
standard through its descendants and is still the reference 40 years later.
PySpice is born as a personal project to relearn electronics where circuit simulation is a part of
this goal. Since I use the Python language every day, I quickly feel the need to plug SPICE and Python.
The aim of PySpice is to address several needs:
SPICE language is fine to describe circuits, but it lacks a real language for circuit
steering. By contrast Python is a powerful high level, oriented object and dynamic language which
is perfectly suited for steering and reusing circuit. But it comes at the price its more general
syntax is less fluent than SPICE for circuit description.
Ngspice provides some extension to Berkeley SPICE for data analysis, but its interactive
environment or TCL module are now outdated. By contrast Python has scientific framework like
Numpy and Matplotlib that compete with Matlab.
Ngspice source code is derived from Berkeley SPICE and thus has a very old basis. Moreover the
sources are poorly documented. So it is really difficult to understand how it works and modify
it. PySpice could serve to easily experiment extension.
As opposite to other SPICE derivatives, PySpice focus on programming and not on graphical user interface. Thus it doesnt feature a schematic capture editor and we cannot pickup a node or an element and plot the associated waveform. Moreover we can notice the Modelica language treats
diagrams as annotations. A choice which I consider judicious. Thus we can imagine to follow the same principle and extend PySpice later.
an oriented-object API to describe circuit in a way similar to SPICE
a library and model manager that index recursively a directory
an incomplete SPICE parser (mainly used for the library and model indexer)
a circuit can be simulated using a subprocess (aka server mode) or using the NgSpice shared library,
NgSpice vectors are converted to Numpy array
the NgSpice shared library permits to interact with the simulator and provides Python callback
for external voltage and current source
some data analysis add-ons
Since PySpice is born with a learning goal, many examples are provided with the sources. These
examples could serve as learning materials. A tool to generate an HTML and PDF documentation is
included in the tools directory. This tool could be extended to generate IPython Notebook as well.
These features are planned in the future:
implement a SPICE to Python converted using the parser. It could be used for the following
workflow: quick circuit sketching using Kicad > SPICE netlist > spice2python > PySpice which
could help for complex circuit.
implement a basic simulator featuring passive element like resistor, capacitor and inductor.
implement a Modelica backend. Modelica is a very interesting solution for transient analysis.