Open-source releases from the SpiceXplorer analog design-automation project, developed by the MacAnalog research group at McMaster University. The whole platform is public — every package, the Studio front-end, and the circuit database — each published as a curated snapshot.
Current release: v1.1.2. It measures the LDO class's control loop
directly — phase margin, unity-gain frequency, and the peak of the sensitivity
function — rather than inferring stability from output-impedance peaking, and
fixes a dropout sweep that ended below the voltage at which one regulator
reaches regulation. v1.1.1 moved the reference circuits to upstream pointers
and refreshed the database (reorganized test tiers, regenerated
schematics). v1.1 added the EDA base image, so make up-live gives
you a working simulator and three open PDKs with nothing installed on the host
(see Live SPICE below). v1.0 opened the platform: all ten
packages, the UI, and the database.
| Directory | What it is | Status |
|---|---|---|
analog-db/ |
Analog circuit database — the topology/circuit registry (netlists, datasheets, class libraries, testbench templates) and its tiered verification harness | released |
platform/ |
The Python workspace — kernel, leaf tools, optimizer and REST API (all ten packages below) | released |
ui/ |
SpiceXplorer "Studio" — the Next.js front-end (HTTP/SSE) over the platform api | released |
agentic-design-example/ |
Two worked agent-driven designs, each a submodule: the PAM-4 2-bit current-steering DAC driver taken from spec to layout in IHP SG13G2, with every schematic/layout co-design round recorded; and dn-003-afe-lpf-250hz-ihp130, a 250 Hz 4th-order fully differential super-source-follower low-pass filter (analog front end) in IHP SG13G2, re-sized to cut its input-referred noise by more than 20 % and taken through sign-off and the layout lane |
released |
.claude/ |
The agent kit: the four layout-lane agent definitions (brief → design → review → co-design) and the two gm/ID sizing skills, block- and PDK-agnostic | released |
Dependencies flow down this table: the adapter builds on the optimizer, which composes the leaf tools, which all rest on the kernel. Leaf tools never import each other, so any one of them can be used on its own.
| Package | Layer | What it does |
|---|---|---|
spicexplorer-api |
adapter | FastAPI service over the optimizer and the library — no business logic |
spicexplorer |
optimizer | The YAML design DSL, the scoring/optimization loop, and the simulation backends |
spicexplorer-circuitgraph |
leaf tool | Netlist → typed bipartite graph (nets ⟷ components), with round-trip and cross-PDK retargeting |
spicexplorer-netlist2xschem |
leaf tool | Netlist → xschem schematic, with headless SVG/PNG rendering |
spicexplorer-netlist2tf |
leaf tool | Netlist → exact symbolic transfer function, reduced to the form used in hand analysis |
spicexplorer-gmid |
leaf tool | Deterministic gm/ID sizing from pre-computed lookup tables |
spicexplorer-waveview |
leaf tool | Result viewer — ngspice/Spectre artifacts → engine-neutral waveforms + plots |
spicexplorer-layout |
leaf tool | Parameterized layout generation: the generator contract, deterministic GDS build, annotated review renders, the post-layout measure protocol, and full-wave EM verification (openEMS) |
spicexplorer-signoff |
leaf tool | Physical signoff — DRC / LVS / PEX runners with structured verdicts, chained build → DRC → LVS → PEX by one call, plus post-layout splicing and parasitic/mismatch injection |
spicexplorer-core |
kernel | SPICE-engine wrappers, PVT corners, measurements, units, path anchoring |
Each component keeps its own README.md, LICENSE, and (for Python) pyproject.toml;
a .release-provenance.json in each records the snapshot it was cut from.
PDKs. The database ships open PDK bindings only — IHP sg13g2, SkyWater sky130, and GlobalFoundries gf180mcu. The Spectre/commercial lane's code, templates and tests are here kit-unbound: no proprietary kit is bound, and no foundry-NDA-encumbered content — models, device or corner names, library identifiers, or data derived from a licensed kit — ships anywhere in this repository (CI enforces this:
nda-check). You bind your own kit through the documented binding interface.
The two designs under agentic-design-example/ are git submodules, so clone with them:
git clone --recurse-submodules https://github.com/MacAnalog/spicexplorer-release.git
# already cloned? git submodule update --init --recursiveNothing in platform/, ui/ or analog-db/ needs them — skip the submodules and
everything below still works.
Two ways to bring the app (API + Studio UI) up. Full walkthroughs: docs/getting-started.md (native) and docs/docker.md (Docker).
Docker — nothing to install but Docker:
make up # build + run: API on :8000, Studio UI on :4000
# open http://localhost:4000 (make down to stop)
make up-live # ...the same, but with live SPICE (see below)Native — uv (Python) + Node 22+, two terminals:
make sync # build the platform venv and borrow the analog-db corpus
make api # terminal 1 — backend → http://localhost:8000
make ui # terminal 2 — frontend → http://localhost:4000make help lists every target. Prefer raw commands? See the getting-started guide —
each make target is a one-line wrapper you can run by hand.
Live SPICE is opt-in, and Docker makes it a one-liner.
make upand a bareuv synccarry no simulator, so the app starts in replay/cached mode (GET /api/env→pdk_ok:false) — the UI, the reference library, score shaping and compare/explore over cached checkpoints all work without one.
make up-livebuilds the EDA base image (Dockerfile.spice-base) — ngspice 45 compiled from source with OSDI, plus the IHP sg13g2, SkyWater sky130 and GF gf180mcu PDKs vendored (all Apache-2.0) — and runs the stack on top of it.pdk_ok:true, with nothing installed on the host: no ngspice, no PDK download, noPDK_ROOT. It builds on both x86-64 and arm64 (Apple silicon). The arm64 path compiles the compact models from source rather than reusing the prebuilt x86-64 ones, so its first build is the slower of the two. See docs/docker.md.Prefer no containers? Install a local ngspice + an open PDK and run natively — see docs/getting-started.md.
docker compose --profile em build embuilds a third, separate image (Dockerfile.em) — openEMS compiled from source plus the IHP PDK's own openEMS workflow — for the full-wave verification lane inspicexplorer-layout. It has its own profile because the image adds a from-source C++ build (boost, VTK, CGAL), and because the lane runs outside the per-trial optimization loop, on the accepted layout only: a plainmake upnever builds it. See docs/docker.md.
- docs/getting-started.md — install, run natively, run tests, enable live SPICE.
- docs/docker.md — the Docker stack, ports, environment, and its limits.
- Per-component detail:
platform/README.md,ui/README.md,analog-db/README.md. .claude/README.md— the agent kit: what each layout-lane agent and gm/ID skill does, and how to use them outside Claude Code.
SpiceXplorer is free for noncommercial use, and commercial use is not permitted. Every component, and the repository as a whole, is released under the PolyForm Noncommercial License 1.0.0 (copyright Danial Noori Zadeh). The LICENSE text governs, and this section is only a summary.
- Allowed: the license's permitted purposes, including:
- personal study, hobby projects and other personal use with no anticipated commercial application;
- research for public knowledge, done personally or at an educational institution or public research organisation;
- teaching at an educational institution;
- use by a charity, educational institution, public research organisation or government body, whatever its source of funding;
- noncommercial open-source projects built on it.
You may copy, modify and redistribute it for these purposes if every copy carries the license (or its URL) and the
Required Noticeline.
- Not allowed: commercial use, including use by a business or for its commercial purposes, internal use such as R&D or evaluation included. For a commercial license, contact the copyright holder through the MacAnalog organisation.
- Not an OSI license: because of the noncommercial term this is a source-available license, not an OSI-approved open-source license. SpiceXplorer, and changes and works based on it, stay under these terms and cannot be sublicensed, so a distribution that includes SpiceXplorer cannot grant commercial rights to it. Your own separate code can carry any license.
- Third-party material keeps its own license. That covers, for example, circuits and corpora in the database (see
analog-db/NOTICE,analog-db/corpora/*/LICENSE.*andPROVENANCE.md) and the open-PDK files in the EDA base image (platform/docker/pdk/).
- uv for Python package management.
- Docker to run the containerized stack without a local Python/Node toolchain.
- Our forked schematic viewer for VS Code: NooriDan/vscode-xschem-viewer-configurable.