Skip to main content

AI-driven TikZ circuit schematics: symbol library, renderer, 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.0.tar.gz (90.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.0-py3-none-any.whl (122.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cictikz-0.1.0.tar.gz
  • Upload date:
  • Size: 90.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for cictikz-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2481980a5e5a3fc30772db2a87b8fae433a40f365a019154081c78b1dca4a8f9
MD5 40b80687d0d69de15764fd4c481dc961
BLAKE2b-256 447a6139aef970b7963445571b84d654f5d63823cd1c7f44c0dbfae19121ecf8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cictikz-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 122.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for cictikz-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c9ae7103c5f9d303d448102d0bb3fa8180a1e887c59b6cf53a37439402664f3
MD5 c0d306a850298e36bf91f16feaad1d23
BLAKE2b-256 5c4e407dd2ecaac504c5a5ecb628289af8a6f11ced02abf24278cd759af7e042

See more details on using hashes here.

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