Giter Club home page Giter Club logo

pyspice's Introduction

PySpice

The official PySpice Home Page is located at http://fabricesalvaire.github.io/PySpice

The latest documentation build from the git repository is available at readthedocs.org PySpice@readthedocs-badge

Written by Fabrice Salvaire.

PySpice build status @travis-ci.org


Introduction

PySpice is a Python 3 library which interplay with Berkeley SPICE, the industrial circuit simulator reference.

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 doesn't 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.

Features

The main features of PySpice are:

  • actually PySpice only supports Ngspice
  • 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.

Planned Features

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.

Advertisements

Users should be aware of these advertisements.

Warning

The API is quite unstable until now. Some efforts is made to have a smooth API.

Warning

Ngspice and PySpice are provided without any warranty. Thus use it with care for real design. Best is to cross check the simulation using an industrial grade simulator.

Warning

Simulation is a tool and not a perfect representation of the real world.

Installation

The installation of PySpice by itself is quite simple. However it will be easier to get the dependencies on a Linux desktop.

Dependencies

PySpice requires the following dependencies:

Also it is recommanded to have these Python modules:

For development, you will need in addition:

  • Sphinx
  • circuit_macros and a LaTeX environment

Ngspice Compilation

Usually Ngspice is available as a package in the major Linux distributions. But I recommend to check the compilation options before to use it extensively. For example the Fedora package enables too many experimental codes that have side effects. The recommended way to compile Ngspice is given in the manual and the INSTALLATION file. Ngspice is an example of complex software where we should not enable everything without care.

Warning

For the following, the compilation option --enable-ndev is known to broke the server mode.

Installation from PyPi Repository

PySpice is made available on the PyPI repository at https://pypi.python.org/pypi/PySpice

Run this command to install the last release:

pip install PySpice

Installation from Source

The PySpice source code is hosted at https://github.com/FabriceSalvaire/PySpice

To clone the Git repository, run this command in a terminal:

git clone [email protected]:FabriceSalvaire/PySpice.git

Then to build and install PySpice run these commands:

python setup.py build
python setup.py install

pyspice's People

Contributors

fabricesalvaire avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.