Skip to main content

A python package for symbolic electronic circuit analysis

Project description

SymCirc

pypi version Downloads Powered by SymPy Tests codecov

A lightweight python package for symbolic circuit analysis.

Documentation

Documentation is available on GitHub Pages.

What can it do?

SymCirc currently offers symbolic and semisymbolic DC, AC and transient small signal circuit analysis. It supports the following ideal circuit elements: resistors, inductors, capacitors, independent sources, controlled sources, ideal operational amplifiers and coupled inductors. BJT, MOS and diode have models implemented only for AC and TF analysis. Transient simulation allows for initial conditions of capacitors and standard/coupled inductors.

Install

Use this command to install via pip

pip install symcirc

Hard dependencies

SymPy

SymCirc is a light-weight package. It needs only the SymPy package, which is used for computations. It should get automatically installed with SymCirc when installed using pip.

Optional dependencies

gmpy2

To achieve better performance install the gmpy2 package. If gmpy2 is installed, SymPy automatically uses it for integer operations. It significantly impacts semi-symbolic analysis performance.

symengine

SymEngine is an optional symbolic core for SymPy. To use the SymEngine core, run your script with the environment variable USE_SYMENGINE=1, or run AnalyseCircuit with an optional argument use_symengine=True Example: symcirc.AnalyseCircuit(netlist, use_symengine=True)

numpy and matplotlib

For bode plots and other graphing utilities.

Build

Or you can build with this command:

python setup.py sdist bdist_wheel

Examples

See examples for more insight into circuit analysis with SymCirc.

Basic simulation example

from symcirc import *

# Insert your netlist
netlist = """CIRCUIT NAME - First line is always the circuit name
* This is a comment
R1 1 0 2k
R2 3 0 (1/G)
V1 2 1 dc 1 ac 1
R3 3 4 6k
C1 3 4 1n
R4 4 0 10k
V2 4 0 dc 5
I1 3 2 dc 1m ac 0
"""

# Execute netlist simulation
analysis_type = "DC"  # or "AC", "TF", "tran"
method = "tableau"  # Default is "two_graph_node", which is faster, but currently lacks coupled inductors.
symbolic = True  # If set to False, only elements which have no numeric value are left as symbolic. In this case only R2 stays symbolic.

circuit = AnalyseCircuit(netlist, analysis_type, symbolic=True, method=method)

all_values = circuit.component_values("all")
latex_formatted_values = to_latex(all_values)

print(all_values)

Netlist syntax

There are many example netlists available in the netlists folder. This folder contains a database of netlists which are used to automatically test every new version of SymCirc.

Elements

  • Resistor: RXXX N+ N- RESISTANCE
  • Capacitor: CXXX N+ N- CAPACITY IC=<INIT_VOLTAGE>
  • Inductor: LXXX N+ N- INDUCTANCE IC=<INIT_CURRENT>
  • Coupling: KXXX LYYY LZZZ K
  • Voltage source: VXXX N+ N- dc VOLTAGE ac AMPLITUDE
  • Current source: IXXX N+ N- dc CURRENT ac AMPLITUDE
  • IOAMP: AXXX Nout1 Nout2 Nin+ Nin-
  • VCVS: EXXX N1 N2 Ncontrol+ Ncontrol- GAIN
  • CCCS: FXXX N1 N2 VSENSE GAIN
  • VCCS: GXXX N1 N2 Ncontrol+ Ncontrol- GAIN
  • CCVS: HXXX N1 N2 VSENSE GAIN

Units

  • terra: T
  • giga: G
  • mega: meg
  • kilo: k
  • mili: m
  • micro: u
  • nano: n
  • pico: p
  • femto: f

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symcirc-0.2.1.tar.gz (29.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symcirc-0.2.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file symcirc-0.2.1.tar.gz.

File metadata

  • Download URL: symcirc-0.2.1.tar.gz
  • Upload date:
  • Size: 29.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.0

File hashes

Hashes for symcirc-0.2.1.tar.gz
Algorithm Hash digest
SHA256 bc3698a3b563b53b866b6014d977cd1846d2d38df9868c2d383dff5145e89d99
MD5 4ed98b845e9d72e8f433a3277a89c8e6
BLAKE2b-256 020b9005e1c85f31fd7736ff69385a76484bc56121501bc03d7289192d5f745a

See more details on using hashes here.

File details

Details for the file symcirc-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: symcirc-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.0

File hashes

Hashes for symcirc-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b7295e3dd83db060feabd4bbf1ee75e1c5eb60d8f21a8f90ea0c5088e1f825e2
MD5 cdb749f048fff0fb4a92c8718173c147
BLAKE2b-256 91a5b61347b4495bec187479629b9a58516d8cdb5cd322088329720bd6d4933c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page