Skip to content
README.rst 10.8 KiB
Newer Older
.. -*- Mode: rst -*-

.. -*- Mode: rst -*-

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |PySpiceUrl| replace:: https://pyspice.fabrice-salvaire.fr
Fabrice Salvaire's avatar
Fabrice Salvaire committed

.. |PySpiceHomePage| replace:: PySpice Home Page
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. _PySpiceHomePage: https://pyspice.fabrice-salvaire.fr
Fabrice Salvaire's avatar
Fabrice Salvaire committed


.. |PySpice@github| replace:: https://github.com/FabriceSalvaire/PySpice
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed

.. |PySpice@pypi| replace:: https://pypi.python.org/pypi/PySpice

Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |PySpice@anaconda| replace:: https://anaconda.org/conda-forge/pyspice
Fabrice Salvaire's avatar
Fabrice Salvaire committed

.. |PySpice@fs-anaconda| replace:: https://anaconda.org/fabricesalvaire/pyspice
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Anaconda Version| image:: https://anaconda.org/conda-forge/pyspice/badges/version.svg
   :target: https://anaconda.org/conda-forge/pyspice/badges/version.svg
Fabrice Salvaire's avatar
Fabrice Salvaire committed
   :alt: Anaconda last version

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Anaconda Downloads| image:: https://anaconda.org/conda-forge/pyspice/badges/downloads.svg
   :target: https://anaconda.org/conda-forge/pyspice/badges/downloads.svg
Fabrice Salvaire's avatar
Fabrice Salvaire committed
   :alt: Anaconda donwloads

Fabrice Salvaire's avatar
Fabrice Salvaire committed

.. |Pypi Version| image:: https://img.shields.io/pypi/v/PySpice.svg
   :target: https://pypi.python.org/pypi/PySpice
   :alt: PySpice last version

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Pypi License| image:: https://img.shields.io/pypi/l/PySpice.svg
   :target: https://pypi.python.org/pypi/PySpice
   :alt: PySpice license

.. |Pypi Python Version| image:: https://img.shields.io/pypi/pyversions/PySpice.svg
   :target: https://pypi.python.org/pypi/PySpice
   :alt: PySpice python version

Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Build Status| image:: https://travis-ci.org/FabriceSalvaire/PySpice.svg?branch=master
   :target: https://travis-ci.org/FabriceSalvaire/PySpice
   :alt: PySpice build status @travis-ci.org
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. -*- Mode: rst -*-

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. _CFFI: http://cffi.readthedocs.org/en/latest/
.. _Circuit_macros: http://ece.uwaterloo.ca/~aplevich/Circuit_macros
.. _IPython: http://ipython.org
.. _Kicad: http://www.kicad-pcb.org
.. _Matplotlib: http://matplotlib.org
.. _Modelica: http://www.modelica.org
.. _Ngspice: http://ngspice.sourceforge.net
.. _Numpy: http://www.numpy.org
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. _PyPI: https://pypi.python.org/pypi
.. _Pyterate: https://github.com/FabriceSalvaire/Pyterate
.. _Python: http://python.org
.. _Sphinx: http://sphinx-doc.org
.. _Tikz: http://www.texample.net/tikz
.. _Xyce: https://xyce.sandia.gov
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |CFFI| replace:: CFFI
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Circuit_macros| replace:: Circuit_macros
.. |IPython| replace:: IPython
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Kicad| replace:: Kicad
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Matplotlib| replace:: Matplotlib
.. |Modelica| replace:: Modelica
.. |Ngspice| replace:: Ngspice
.. |Numpy| replace:: Numpy
.. |PyPI| replace:: PyPI
.. |Pyterate| replace:: Pyterate
.. |Python| replace:: Python
.. |Sphinx| replace:: Sphinx
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Tikz| replace:: Tikz
Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. |Xyce| replace:: Xyce
=====================================================================================
 PySpice : Simulate Electronic Circuit using Python and the Ngspice / Xyce Simulators
=====================================================================================
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
|Pypi License|
|Pypi Python Version|
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
|Pypi Version|
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
|Anaconda Version|
|Anaconda Downloads|

Fabrice Salvaire's avatar
Fabrice Salvaire committed
**Quick Links**

* `Production Branch <https://github.com/FabriceSalvaire/PySpice/tree/master>`_
* `Devel Branch <https://github.com/FabriceSalvaire/PySpice/tree/devel>`_
* `pyspice@conda-forge <https://github.com/conda-forge/pyspice-feedstock>`_
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Brief Notes
===========

Thanks to `Discourse <https://www.discourse.org>`_, PySpice now has a **Forum** hosted at https://pyspice.discourse.group

**Disclaimer: PySpice is developed on my free time actually, so I could be busy with other tasks and less reactive.**

An issue was found with NgSpice Shared, we must `setlocale(LC_NUMERIC, "C");` see https://sourceforge.net/p/ngspice/bugs/490/

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Overview
========

What is PySpice ?
-----------------

Fabrice Salvaire's avatar
Fabrice Salvaire committed
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 |PySpiceHomePage|_.
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
*Note: This site is hosted on my own infrastructure, if the site seems done, please create an issue to notify me.*

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Where to get help or talk about PySpice ?
-----------------------------------------

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Thanks to `Discourse <https://www.discourse.org>`_, PySpice now has a **Forum** hosted at https://pyspice.discourse.group
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
What are the main features ?
----------------------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

* support Ngspice and Xyce circuit simulators
Fabrice Salvaire's avatar
Fabrice Salvaire committed
* support **Linux**, **Windows** and Mac **OS X** platforms
* licensed under **GPLv3** therms
Fabrice Salvaire's avatar
Fabrice Salvaire committed
* 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**
Fabrice Salvaire's avatar
Fabrice Salvaire committed

How to install it ?
-------------------

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Look at the `installation <https://pyspice.fabrice-salvaire.fr/installation.html>`_ section in the documentation.
Fabrice Salvaire's avatar
Fabrice Salvaire committed

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Pull Request Recommendation
===========================

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.**

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Credits
=======

Fabrice Salvaire's avatar
Fabrice Salvaire committed
Authors: `Fabrice Salvaire <http://fabrice-salvaire.fr>`_ and `contributors <https://github.com/FabriceSalvaire/PySpice/blob/master/CONTRIBUTORS.md>`_
Fabrice Salvaire's avatar
Fabrice Salvaire committed

News
====

.. -*- Mode: rst -*-

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. no title here

Fabrice Salvaire's avatar
Fabrice Salvaire committed
V1.5.0 (development release)
----------------------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed
V1.4.? (production release) 2020-0?-??
--------------------------------------

* 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
* cir2py has been converted to an entry point so as to work on all platforms

Fabrice Salvaire's avatar
Fabrice Salvaire committed
V1.4.0 (production release) 2020-05-05
Fabrice Salvaire's avatar
Fabrice Salvaire committed
--------------------------------------

Fabrice Salvaire's avatar
Fabrice Salvaire committed
This release is yanked due to broken Windows support.

Fabrice Salvaire's avatar
Fabrice Salvaire committed
* 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

V1.3.2  2019-03-11
------------------

Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * support Ngspice 30 and Xyce 6.10
 * fixed NgSpice and Xyce support on Windows 10
 * bug fixes

V1.2.0 2018-06-07
-----------------

 * 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
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * 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. :code:`circuit.Q(1, base=1, collector=2, emitter=3, model='npn')`
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Implemented raw spice pass through (see `User FAQ </faq.html>`_)
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Implemented access to internal parameters (cf. :code:`save @device[parameter]`)
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Implemented check for missing ground node
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Implemented a way to disable an element and clone netlist
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * 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
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Outsourced documentation generator to |Pyterate|_
 * Updated `setup.py` for wheel
Fabrice Salvaire's avatar
Fabrice Salvaire committed

.. :ref:`user-faq-page`
Fabrice Salvaire's avatar
Fabrice Salvaire committed
V1.1.0 2017-09-06
-----------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

 * Enhanced shared mode
 * Shared mode is now set as default on Linux

V1.0.0 2017-09-06
-----------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

 * Bump version to v1.0.0 since it just works!
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Support Windows platform using Ngspice shared mode
 * Fixed shared mode
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * 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.
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Improved documentation generator: Implemented :code:`format` for RST content and Tikz figure.
 * Improved unit support: It implements now the International System of Units.
Fabrice Salvaire's avatar
Fabrice Salvaire committed
   And we can now use unit helper like :code:`u_mV` or compute the value of :code:`1.2@u_kΩ / 2@u_mA`.
Fabrice Salvaire's avatar
Fabrice Salvaire committed
   The relevant documentation is on this `page <api/PySpice/Unit.html>`_.
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * Added the Simulation instance to the Analysis class.
 * Refactored simulation parameters as classes.
V0.3.2 2017-02-22
-----------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

 * fixed CCCS and CCVS

V0.3.1 2017-02-22
-----------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

 * fixed ngspice shared

V0.3.0 2015-12-08
-----------------
Fabrice Salvaire's avatar
Fabrice Salvaire committed

 * Added an example to show how to use the NgSpice Shared Simulation Mode.
Fabrice Salvaire's avatar
Fabrice Salvaire committed
 * 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.
Fabrice Salvaire's avatar
Fabrice Salvaire committed

V0 2014-03-21
-------------

Started project

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. End

Fabrice Salvaire's avatar
Fabrice Salvaire committed
.. End