cktImg
Place-and-route engine that turns an analog circuit netlist into the output of your choice. Layout follows the spine-column model: extract every VDD→GND conduction path (a spine), assign one column per spine, lift shared devices into their own middle columns, then route nets by how far they span.
See the Gallery for what the output looks like.
Pick your output
| You want | Use | Docs |
|---|---|---|
| A TikZ figure in a paper | cktimg-latex | LaTeX |
| Placed geometry as a Python dict | cktimg (PyPI-style module) | Python |
| JSON, or your own backend | cktimg (Rust crate) | Rust library |
Rail nets (vdd/vcc, gnd/vss/0) get their rail devices auto-inserted —
feed it plain SPICE, nothing to pre-process.
Quick start (repo)
cargo visualize # render all test circuits, serve the gallery on :8731
cargo test # placement/routing invariants
Crate map
crates/
netlist parse netlist (HSPICE, NGSpice, Spectre) to IR
ir intermediate representation (no layout, no constraints)
devices device classes & symbol data
config opinion knobs read from lint.toml
build extract splines → assign columns → place → route
svg dev gallery renderer (SVG + local HTML viewer)
export/
latex native TikZ backend (pdflatex draws it, no converter)
library the facade: parse → place → render, bring-your-own backend
python pyo3 bindings (maturin)
How it places
Straight to Algorithm. Spacing, search depth, and render style are opinions, not invariants — they live in lint.toml, read from the working directory at run time.