PySpice : Simulate Electronic Circuit using Python and the Ngspice / Xyce Simulators
- Quick Link to Production Branch
- Quick Link to Devel Branch
Overview
What is PySpice ?
PySpice is a Python module which interface Python to the Ngspice and Xyce circuit simulators.
Where is the Documentation ?
The documentation is available on the PySpice Home Page.
What are the main features ?
- support Ngspice and Xyce circuit simulators
- support Linux, Windows and Mac OS X platforms
- licensed under GPLv3 therms
- implement an Ngspice shared library binding using CFFI which support external sources
- implement (partial) SPICE netlist parser
- implement an Oriented Object API to define circuit
- export simulation output to Numpy arrays
- plot using Matplotlib
- handle units
- work with Kicad schematic editor
- implement a documentation generator
- provides many examples
How to install it ?
Look at the installation section in the documentation.
Credits
Authors: Fabrice Salvaire
News
V1.3.0 (development release)
V1.2.0 (production release) 2018-02-xx
- Initial support of the Xyce simulator. Xyce is an open source, SPICE-compatible, high-performance analog circuit simulator, capable of solving extremely large circuit problems developed at Sandia National Laboratories. Xyce will make PySpice suitable for industry and research use.
- Fixed OSX support
- Splitted G device
- Implemented partially A XSPICE device
- Implemented missing transmission line devices
- Implemented high level current sources Notice: Some classes were renamed !
- Implemented node kwarg e.g.
circuit.Q(1, base=1, collector=2, emitter=3, model='npn')
- Implemented raw spice pass through (see User FAQ)
- Implemented access to internal parameters (cf.
save @device[parameter]
)- Implemented check for missing ground node
- Implemented a way to disable an element and clone netlist
- Improved SPICE parser
- Improved unit support:
- Implemented unit prefix cast U_μV(U_mV(1)) to easily convert values
- Added U_mV, ... shortcuts
- Added Numpy array support to unit, see UnitValues Notice: this new feature could be buggy !!!
- Rebased WaveForm to UnitValues
- Fixed node order so as to not confuse users Now PySpice matches SPICE order for two ports elements !
- Fixed device shortcuts in Netlist class
- Fixed model kwarg for BJT Notice: it must be passed exclusively as kwarg !
- Fixed subcircuit nesting
- Outsourced documentation generator to Pyterate
- Updated setup.py for wheel
V1.1.0 2017-09-06
- Enhanced shared mode
- Shared mode is now set as default on Linux
V1.0.0 2017-09-06
- Bump version to v1.0.0 since it just works!
- Support Windows platform using Ngspice shared mode
- Fixed shared mode
- Fixed and completed Spice parser : tested on example's libraries
V0.4.2
- Fixed Spice parser for lower case device prefix.
V0.4.0 2017-07-31
- Git repository cleanup: filtered generated doc and useless files so as to shrink the repository size.
- Improved documentation generator: Implemented
format
for RST content and Tikz figure.- Improved unit support: It implements now the International System of Units. And we can now use unit helper like
u_mV
or compute the value of1.2@u_kΩ / 2@u_mA
. The relevant documentation is on this page.- Added the Simulation instance to the Analysis class.
- Refactored simulation parameters as classes.
V0.3.2 2017-02-22
- fixed CCCS and CCVS
V0.3.1 2017-02-22
- fixed ngspice shared
V0.3.0 2015-12-08
- Added an example to show how to use the NgSpice Shared Simulation Mode.
- Completed the Spice netlist parser and added examples, we could now use a schematic editor to define the circuit. The program cir2py translates a circuit file to Python.
V0 2014-03-21
Started project