Skip to content

About

The release repo for SpiceXplorer project. Developed by MacAnalog research group.

Resources

Stars

21 stars

Watchers

1 watching

Forks

Repository files navigation

SpiceXplorer

lint analog-db platform ui docker

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.

Components

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

Platform packages

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.

Quickstart

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 --recursive

Nothing 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:4000

make 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 up and a bare uv sync carry 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-live builds 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, no PDK_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 em builds a third, separate image (Dockerfile.em) — openEMS compiled from source plus the IHP PDK's own openEMS workflow — for the full-wave verification lane in spicexplorer-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 plain make up never builds it. See docs/docker.md.

Documentation

License

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 Notice line.
  • 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.* and PROVENANCE.md) and the open-PDK files in the EDA base image (platform/docker/pdk/).

Recommended tooling

About

The release repo for SpiceXplorer project. Developed by MacAnalog research group.

Resources

Stars

21 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages