Skip to main content

AI-driven TikZ circuit schematics: symbol library, renderer, linter, MCP server, xschem bridge

Project description

cictikz

AI-driven TikZ circuit schematics.

Docs: overview · CLI · MCP server · dialect & converters · symbol gallery · domain libraries

A standalone Python package that ships the full aic2026 TikZ macro vocabulary as package data — cictikz_lib (the ckt_lib schematic dialect, grid = 1.6, one transistor tall) plus the domain libraries (boot, constellation, dacsm, esd, gmc, mos, plane, rdac, sc, sfg, spec) — renders figures reproducibly with pdflatex, and exposes the whole loop — discover symbols, render, look at the result — to an AI assistant over MCP. Later phases add a schematic IR with writers/readers for the constrained TikZ dialect and xschem .sch files.

Install

make dev-install        # pip install -e ".[mcp]"

Rendering needs pdflatex (with standalone + circuitikz) on PATH, and pdftoppm (poppler) for PNG / pdf2svg for SVG. Without them the package still imports; render calls fail with a clear message and the render tests skip.

CLI

cictikz render fig.tex --png        # compile a full standalone figure
cictikz render body.tex --wrap      # wrap a bare macro body in the packaged preamble
cictikz symbols [QUERY]             # list the symbol library
cictikz info vnmos                  # pins, entry/exit, example for one symbol
cictikz draw spec.json --fmt tikz   # schematic IR (JSON) -> TikZ or xschem
cictikz tikz2sch fig.tex            # dialect TikZ -> xschem .sch
cictikz sch2tikz circuit.sch        # any xschem .sch -> dialect TikZ
cictikz export-symlib DIR           # generate cictikz/*.sym for xschem
cictikz watch fig.tex               # live preview: recompile on save, browser follows

watch is the iteration loop: edit the file in any editor (or let an AI edit it), and the browser shows the new render half a second later — compile errors appear inline instead of a stale image.

The TikZ-to-xschem direction accepts only the cictikz dialect (registry macros, moves, named coordinates, --/|-/-|/to[short] wires) and fails loudly with a line number on anything else; xschem-to-TikZ works on any .sch, drawing unrecognised symbols as labelled boxes.

MCP

claude mcp add cictikz -- cictikz-mcp

Tools: render_tikz (source → PNG, or the parsed TeX errors), render_file, list_symbols, symbol_info, style_guide, list_examples / get_example (searches a figure corpus; set CICTIKZ_EXAMPLES to a directory of .tex figures).

Figure dialect

Figures are written against cictikz_lib.tex (macro names identical to the aic2026 course repo's ckt_lib.tex): path-fragment macros that compose in one \draw, e.g.

\draw (0,0) \vground \vresistor{$R_s$} \lvnmos{M1}{$v_i$};
\draw (M1.drain) to[short] ++(0,\grid);

See cictikz style-guide (or the MCP style_guide tool) for the house rules: one line width, one arrow tip, colour only when it means something.

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

cictikz-0.1.2.tar.gz (94.2 kB view details)

Uploaded Source

Built Distribution

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

cictikz-0.1.2-py3-none-any.whl (125.5 kB view details)

Uploaded Python 3

File details

Details for the file cictikz-0.1.2.tar.gz.

File metadata

  • Download URL: cictikz-0.1.2.tar.gz
  • Upload date:
  • Size: 94.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cictikz-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d86978e3d4c48d0d038232e9bd0fb2e06455944245dd68494b54165cc8a6c45f
MD5 bf2cfbba5197163d45fa2a4a705ff1d4
BLAKE2b-256 575bb33037f6cafdb7867b7418abe81d311b832a9b6431ef8d5b50d61f954e6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cictikz-0.1.2.tar.gz:

Publisher: release.yml on wulffern/cictikz

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

File details

Details for the file cictikz-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cictikz-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 125.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for cictikz-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bc4fc21baa5537e0e542d1fe97cc87fc721549c7b033b3d23c64eaa0364c7bed
MD5 0565e4c3a1f7373c6d19468d663a1366
BLAKE2b-256 af75cf5f11e4e2fa9d07c59db2db58bbddece0cebf16ccc11130077238a2a686

See more details on using hashes here.

Provenance

The following attestation bundles were made for cictikz-0.1.2-py3-none-any.whl:

Publisher: release.yml on wulffern/cictikz

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