joafr edited this page Sep 13, 2010 · 13 revisions
Clone this wiki locally

pycircuit is an electric circuit analysis package written in Python. In addition to the circuit analysis part it provides post-processing functionality and interfaces to other simulators.

The project is still in very early development phase and there is still no release.

For questions and discussions please use our mailing list pycircuit. For bug reporting use either the issues bug-tracking system or the mailing list.



As there is still no release the code can be downloaded from the git repository. See wiki page SourceCode for detailed instructions.


The documentation can be found at docs.pycircuit.org.


pycircuit consists of 3 subpackages which can be used together or individually.

Circuit simulator

pycircuit.circuit is a circuit simulator written in 100% Python. One feature that distinguishes it from other simulators is that it can do symbolic analysis. Currently it uses [http://sympy.org Sympy] as the symbolic engine.

For the moment there is no netlist interface. You define your circuit through Python commands.

So far the simulator supports the following analyses:

  • DC, finds operating point of the circuit
  • AC, symbolic or numeric
  • Transient
  • Noise, symbolic or numeric
  • Stability analysis, both device and loop-based
  • Two-port, this analysis extracts 2-port parameters and optionally 2-port noise parameters
  • PSS, finds periodic steady state using shooting Newton
  • PAC, small-signal analysis of a periodic steady state

There is also initial support for a high level hardware description language (HDL).

Simulator interface

pycircuit.sim is a unified interface for other circuit simulators (both free and commercial). This package is the most unstable one and is probably not very useful yet.

Post processing

pycircuit.post is a post processing library that can read simulation data, handle and do operations on waveforms. For those who are familiar with [http://cadence.com Cadence] it similair to their Ocean library.

Currently it has:

  • a waveform class that can handle multi-dimensional data
  • a growing library of functions for post-processing circuit simulation data
  • a unified interface to simulation results
  • an interface to Cadence PSF waveform-format
  • a pexpect interface to Cadence skill parser.
  • an interface to native Eldo waveform format. (this is just a python extension to [http://mentor.com Mentor Graphic]’s simulation result API)

Related projects

Projects we depend on

  • Numpy+Scipy, almost all modules of pycircuit use these for array processing and number crunching
  • Sympy, all symbolic operations in pycircuit is done with Sympy
  • Matplotlib, matplotlib is used for waveform plotting in pycircuit.post


See the RoadMap on the wiki.