Skip to main content

High-Performance Mismatch Simulation Wrapper for Xschem and Ngspice

Project description

Chipify

Chipify

License Python

(c) 2026 Santiago Hofwimmer BSc

Institute for Integrated Circuits and Quantum Computing, Johannes Kepler University (JKU), Linz, Austria

Link to repository

[!WARNING] This repository is a Work in Progress.

[!IMPORTANT] It is recomended to use the IIC-OSIC-TOOLS container. Otherwise, you have to install Ngspice, Xschem and IHP-Open-PDK manually as prerequisites.

[!IMPORTANT] Currently, only the IHP-Open-PDK is fully supported, but more will follow soon

GUI

Chipify is a high-performance EDA (Electronic Design Automation) tool for mismatch simulations, parameter sweeping, and yield analysis. It wraps Xschem (schematic capture) and Ngspice (circuit simulation) to automate Monte-Carlo and corner sweeps, run them in parallel, and turn the raw results into plots, yield matrices, and reports.

It ships with both a PySide6 (Qt) desktop GUI and a headless CLI, plus a plugin system for custom plots, reports, and expressions.

Histogram View Scatter Plot

Features

  • Parallel sweeps — multiprocessing pool runs Monte-Carlo / corner cases across all cores.
  • Datasheet-driven — describe parameters, tests, and pass/fail specs in a single YAML file.
  • Range DSLrange, linspace, and logspace parameter sweeps (safely parsed, no eval).
  • Yield & statistics — pass/fail yield, histograms with distribution fits, corner yield matrices.
  • Safe custom expressions — derive new metrics with a sandboxed evaluator (no arbitrary code execution).
  • Reports — export to PDF, Markdown, and LaTeX; PNG/SVG plot exporters.
  • Pluggable — add your own plots, reports, expressions, and exporters (see PLUGINS.md).
  • Multi Plot Dashboard - arrange a selection of plots on a second window.

Multi Plot Dashboard

Prerequisites

Chipify is a wrapper around external EDA tools, so these must be installed and available on your PATH:

  • Python 3.11+

  • Ngspice — the SPICE simulator

  • Xschem — schematic capture / netlist generation

  • (optional) VACASK + PyOPUS — alternative simulation backend

  • (Linux) PySide6 system libraries — Qt needs a few shared libraries that pip can't install:

    • libegl1 / libgl1 (libEGL.so.1 / libGL.so.1) are dlopened when Qt is imported — required even for the headless test suite. Without them you get ImportError: libEGL.so.1: cannot open shared object file.
    • libxcb-cursor0 (Qt ≥ 6.5) is needed by the xcb/XWayland platform for the on-screen GUI; without it a Wayland session falls back to native Wayland, where dropdown menus don't close on selection.

    install.sh installs all of these automatically on Debian/Ubuntu; elsewhere install them with your package manager (e.g. apt install libegl1 libgl1 libxcb-cursor0). System libraries can't be declared in setup.py/pyproject.toml, so they're handled by install.sh.

It is highly recommended to install and run Chipify inside the IIC-OSIC-TOOLS docker container. This way, all the required tools plus a bunch of open source PDKs are already installed.

Installation

git clone https://github.com/santihofi/chipify.git
cd chipify

python -m venv venv
# Linux/macOS:
source venv/bin/activate
# Windows (PowerShell):
venv\Scripts\Activate.ps1

pip install .

Optional extras:

pip install ".[fast]"     # numexpr — vectorized transient-equation evaluation
pip install ".[vacask]"   # PyOPUS — VACASK simulation backend

For development, install in editable mode: pip install -e . (On Linux/macOS, install.sh is a one-line convenience wrapper for the venv + install steps above.)

Quick start

Desktop GUI

chipify

This opens the desktop application where you can edit datasheets, launch sweeps, and explore results interactively.

Headless CLI

See examples/datasheet.yaml for a documented datasheet template (and examples/README.md for how to run it). Place your datasheet YAML in the input folder (datasheets/ by default), then:

chipify-cli -c my_design.yaml          # run a single datasheet
chipify-cli --batch ./datasheets       # run every *.yaml in a directory
chipify-cli -c my_design.yaml --json   # also print a JSON summary (handy for CI)
chipify-cli -c my_design.yaml --markdown report.md

Results are written to the output folder (out/ by default), including simulation_results.csv and any generated reports. Run chipify-cli --help for the full list of options.

Configuration

User preferences are stored in settings.json in the directory you launch Chipify from (CPU cores, simulator engine, theme, live plotting, …). The file is created/updated by the GUI's settings dialog. Custom equations live in the datasheet YAML (equations: / transient_equations:), not in settings.json.

Folder paths

By default Chipify uses this layout under the working directory:

Folder settings.json key Default
Input datasheets in_dir datasheets/
Simulation output out_dir out/
Model files (*.lib/*.mod/*.inc staged for simulation) work_dir work/
Testbench files tb_dir tb/

To relocate any of them, set the corresponding key in settings.json to an absolute or relative path, e.g.:

{
  "out_dir": "results",
  "in_dir": "/data/chipify/datasheets"
}

Any key that is missing or blank falls back to its default. Paths are resolved when Chipify starts, so changes take effect on the next launch.

Running the example project

A source follower example is included. to run the example, navigate to /chipify/examples/source_follower and run chipify in this directory. You can select between two datasheets describing a corner case and a mismatch simulation.

Project layout

chipify/            # engine (no GUI-toolkit deps)
  cli.py            # CLI entry point + GUI launcher
  simulator.py      # multiprocessing simulation engine
  schema.py         # datasheet validation + range DSL
  expression.py     # sandboxed expression evaluation
  settings.py       # project folder paths (configurable via settings.json)
  app_config.py     # persistent preferences + logging
  data_loader.py    # results loading / pass-fail / history (shared, headless)
  uikit/            # toolkit-agnostic GUI-support layer (state, services, plugin facade)
  gui_qt/           # PySide6 (Qt) desktop GUI (tabs / controllers / workers / widgets)
tests/              # pytest suite for the core engine + GUI smoke tests

See context.md for the full architecture overview and PLUGINS.md for the plugin API.

Development

pip install -e .
pytest                                   # run the test suite
python -m mypy chipify/settings.py       # strict type-checking (see pyproject.toml)

License

Licensed under the Apache License 2.0.

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

chipify-0.2.0.tar.gz (245.4 kB view details)

Uploaded Source

Built Distribution

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

chipify-0.2.0-py3-none-any.whl (264.2 kB view details)

Uploaded Python 3

File details

Details for the file chipify-0.2.0.tar.gz.

File metadata

  • Download URL: chipify-0.2.0.tar.gz
  • Upload date:
  • Size: 245.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chipify-0.2.0.tar.gz
Algorithm Hash digest
SHA256 42881b488286bf0217e17f4a77da2b8183971f5311bbf0c76e8092e6cd0f2f0f
MD5 97096ba164cb17b1f0a4c6c5d20e6a0e
BLAKE2b-256 f8815058e9173a1a15b8bb2bb08fc7fb205938822b0e179374acfec4987854ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for chipify-0.2.0.tar.gz:

Publisher: publish.yml on santihofi/chipify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chipify-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: chipify-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 264.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chipify-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fc5ca03f55a73fe11b869d33c94ca914a9ec4a1e7ffe52c74f999212a1da91fe
MD5 7f501db28bb261273764c0b68f9d22be
BLAKE2b-256 99abfbeae6729527426af98bb48134c84710d4daaa5657d74b047f8bcb3d7f9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for chipify-0.2.0-py3-none-any.whl:

Publisher: publish.yml on santihofi/chipify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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