Skip to main content

CircuitGenome logo

Modular synthesis, recognition, and sizing of analog op-amp circuits.

License: MIT Documentation PyPI Python versions

CircuitGenome is a Python toolkit for analog circuit topology synthesis and recognition, focused on op-amp design. It takes a modular approach: a complete circuit is assembled from independent functional building blocks — differential pair, load, tail current, bias, compensation, and output stage. By enumerating every valid combination of block implementations, the tool can quickly generate thousands of structurally distinct op-amp netlists for dataset generation, automated design exploration, or topology studies.

The toolkit works in both directions of the design problem. Going forward, it constructs and sizes op-amps from building blocks and a performance specification. Going backward, it reads a flat SPICE netlist and recovers its structure — identifying subcircuits (differential pairs, current mirrors, cascode loads, bias generators, CMFB, compensation) and assigning each to its functional role. An end-to-end designer chains these layers together, keeping only the circuits whose ngspice-measured metrics meet the spec.

Key Features

  • Topology synthesis — enumerate every valid op-amp from modular building blocks and emit flat or hierarchical SPICE netlists.
  • Subcircuit & functional-block recognition — recover structure and slot assignments from a flat SPICE netlist.
  • Initial sizing — compute minimum transistor W/L values that satisfy DC specs (gain, GBW, phase margin, slew rate, CMRR) via an OR-Tools CP-SAT solver and a gm/Id flow.
  • End-to-end designer — enumerate, size, simulate, and keep only the designs that pass ngspice-measured metrics.
  • One-, two-, and three-stage op-amps, single-ended and fully differential, including nested-Miller (NMC) and reversed-nested-Miller (RNMC) compensation.
  • Extensible with no code — add new module variants by editing a YAML file.

Have a question? Start a discussion or open an issue on GitHub.

📖 Documentation

Full user guide, API reference, and design theory live in the Sphinx docs:

Read the Docs

Installation

pip install circuitgenome

Or install from source:

git clone https://github.com/analog-ml/CircuitGenome.git
cd CircuitGenome
pip install -e .

Requires Python 3.9+. PyYAML and OR-Tools (for the sizer) are installed automatically.

Getting Started

Run the end-to-end designer: enumerate a topology, size each candidate, simulate with ngspice, and export the designs that meet your spec.

circuitgenome design --spec spec_gf180.yaml --topology two_stage_opamp_single_ended \
    --output-dir designs/ --limit 200 --workers 4

For the full CLI reference, Python API, and worked examples, see the documentation.

Contributing

CircuitGenome is an open research project and contributions are very welcome — new module variants, topology templates, recognizer patterns, sizing heuristics, bug fixes, and documentation improvements.

  • Browse or open issues: https://github.com/analog-ml/CircuitGenome/issues
  • Fork the repo, create a feature branch, and open a pull request against main.
  • Run the test suite before submitting: python3 -m pytest tests/ -v.
  • Adding a new module variant usually needs no code changes — just edit opamp_modules.yaml (see the docs for details).

References

  1. A Data-Driven Analog Circuit Synthesizer with Automatic Topology Selection and Sizing — S. Poddar, A. F. Budak, L. Zhao, C.-H. Hsu, S. Maji, K. Zhu, Y. Jia, D. Z. Pan. Design, Automation & Test in Europe (DATE), 2024.
  2. FUBOCO: Structure Synthesis of Basic Op-Amps by FUnctional BlOck COmposition — I. Abel, H. Graeb. ACM Transactions on Design Automation of Electronic Systems (TODAES), 2022.
  3. A Functional Block Decomposition Method for Automatic Op-Amp Design — I. Abel, M. Neuner, H. Graeb. Integration, the VLSI Journal (Elsevier), 2022.
  4. Constraint-Programmed Initial Sizing of Analog Operational Amplifiers — I. Abel, M. Neuner, H. Graeb. IEEE International Conference on Computer Design (ICCD), 2019.

PDFs of all four papers are in docs/papers/.

Release files for circuitgenome 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for circuitgenome 0.3.0
File Size Uploaded
circuitgenome-0.3.0.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for circuitgenome 0.3.0
File Interpreter ABI Platform
circuitgenome-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.6 MB

Release files / circuitgenome-0.3.0.tar.gz

Download URL circuitgenome-0.3.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
792ef4c928fd7aa251ff594509fbb55d259db1808396a1d63ea7e79ba79aa608
BLAKE2b-256 checksum
How to use checksums
10524d82463f64ce012c0a10b72e92cfd5794518efbbc15f40e14089a6a74b79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / circuitgenome-0.3.0-py3-none-any.whl

Download URL circuitgenome-0.3.0-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
ebc29e4b097eaa0a731ac0a6d17774e0b7aa3a802a1d43195c504d88ee57a0fe
BLAKE2b-256 checksum
How to use checksums
fa4561cb01ef1ec2f67cafb41b7960ebf7a2fb7ff68d763ea887ae2f581cefcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page