Quick Links
- Production Branch
- Devel Branch
- Travis CI
- pyspice@conda-forge
- conda-forge/pyspice
- ngspice@conda-forge
- Ngspice
- Ngspice Bug Tracker
- Xyce of Sandia National Laboratories
Disclaimer: PySpice is developed on my free time actually, so I could be busy with other tasks and less reactive.
The free Discourse forum was closed some time ago due to a lack of activity. A HTML backup is stored in the directory pyspice-discourse-backup.
On Devel HEAD
- fixed the ngspice library loading for recent cffi
- fixed simulation aborting due to a message from newer ngspice
- fixes for Spice parser
- added support for Pint unit library
- implemented SpiceLibrary
- code cleanup but must check for typo...
An issue was found with NgSpice Shared, we must setlocale(LC_NUMERIC, "C"); see https://sourceforge.net/p/ngspice/bugs/490/
PySpice is a Python module which interface Python to the Ngspice and Xyce circuit simulators.
The documentation is available on the PySpice Home Page.
Note: This site is hosted on my own infrastructure, if the site seems done, please create an issue to notify me.
Thanks to Discourse, PySpice now has a Forum hosted at https://pyspice.discourse.group
- 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
Look at the installation section in the documentation.
To make it easier to merge your pull request, you should divide your PR into smaller and easier-to-verify units.
Please do not make a pull requests with a lot of modifications which are difficult to check. If I merge pull requests blindly then there is a high risk this software will become a mess quickly for everybody.
Authors: Fabrice Salvaire and contributors
- KiCadTools a proof of concept module to read KiCad 6 .kicad_sch schema file and compute the netlist. This module can be used to perform any kind of processings on a KiCad schema. It is actually hosted in the source but could become a standalone project. For PySpice, it provides a very flexible way to draft a circuit with the help of KiCad and then generate the netlist without using the netlist export feature of KiCad. And thus leverage the writing of fastidious cicruit.
- Support Ngspice up to version 34
- Renamed custom dunders "__dunder__" to "CONSTANT" or "_private" class attributes
- Fixed typo in documentation (thanks to endolith and brollb)
- Add DC temperature sweep support #272 (thanks to Fatsie)
- PWL support improvements #271 (thanks to Fatsie)
- Assign units on creation of temperature-sweep vectors #263 (thanks to ARF1)
- Prevent memory leaks by freeing ngspice command log #260 thanks to ARF1)
- Performance optimization: dispatch multiple alter commands jointly #259 (thanks to ARF1)
- Added spice library support #258 (thanks to Fatsie)
- Allow to specify DC value for PWL #257 (thanks to Fatsie)
- Support for .nodeset type initial condition #256 (thanks to Fatsie)
- Fix accuracy problems #254 (thanks to sotw1957)
- Changes to make it easier to use PySpice with a large archive of SPICE models medium diff #249 (thanks to xesscorp)
- Netlist.py: Fix wrong method when joining parameters during netlist parse #245 (thanks to cyber-g)
- Unit: add Pickle support
- Add Parser code from #136 (thanks to jmgc) but not yet merged
- Unit: add np.mean
A huge effort, thanks to @stuarteberg Stuart Berg, has been made to make Ngspice and PySpice available on Anaconda (conda-forge) for the Window, OSX and Linux platforms. Thanks to the conda-forge continuous integration platform, we can now run unit tests and the examples on theses platforms automatically. Hope this will make the software more robust and easier to run !
- PySpice is now available on Anaconda(conda-forge) as well as a wheel on PyPI
- Added a post installation tool to download the Ngspice DLL on Windows and to check the installation. It should now simplify considerably the PySpice installation on Windows.
- This tool can also download the examples and the Ngspice PDF manual.
- On Linux and OSX, a Ngspice package is now available on Anaconda(conda-forge). Note that theses two platforms do not download a binary from Ngspice since a compiler can easily be installed on theses platforms.
- Updated installation documentation for Linux, the main distributions now provide a ngspice shared package.
- Added a front-end web site so as to keep older releases documentation available on the web.
- fixed and rebuilt all examples (but mistakes could happen ...)
- examples are now available as Python files and Jupyter notebooks (but some issues must be fixed, e.g. due to the way Jupyter handles Matplotlib plots)
- support NgSpice 32 API (no change)
- removed @substitution@ in PySpice/__init__.py, beacause it breaks pip install from git
- fixed some logging spams
- fixed NonLinearVoltageSource
- fixed Unicode issue with °C (° is Extended ASCII)
- fixed ffi_string_utf8 for UnicodeDecodeError
- fixed logging formater for OSX (removed ANSI codes)
- reworded "Invalid plot name" exception
- removed diacritics in example filenames
- cir2py has been converted to an entry point so as to work on all platforms
- updated Matplotlib subplots in examples
- added a unit example
- added a NMOS example (thanks to cyber-g) cf. #221
This release is yanked due to broken Windows support.
- fixed nasty issue with NgSpice shared for setlocale(LC_NUMERIC, "C"); cf. #172
- fixed AC AC_MAG AC_PASAE SIN for new NgSpice syntax
- fixed initial_state for VoltageControlledSwitch
- fixed LosslessTransmissionLine #169
- fixed docstrings for element shortcut methods (thanks to Kyle Dunn) #178
- fixed parser for leading whitespace (thanks to Matt Huszagh) #182
- fix for PyYAML newer API
- support NgSpice 31 API (no change)
- added check for CoupledInductor #157
- added check-installation tool to help to fix broken installation
- added pole-zero, noise, distorsion, transfer-function analyses (thanks to Peter Garrone) #191
- added .measure support (thanks to ceprio) #160
- added log_desk parameter to CircuitSimulator
- added listing command method to NgSpiceShared
- added Xyce Mosfet nfin #177
- support Ngspice 30 and Xyce 6.10
- fixed NgSpice and Xyce support on Windows 10
- bug fixes
- 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
- Enhanced shared mode
- Shared mode is now set as default on Linux
- 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
- Fixed Spice parser for lower case device prefix.
- 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.
- fixed CCCS and CCVS
- fixed ngspice shared
- 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.
Started project