Skip to main content

Argon

A language and editor for constraint-based integrated-circuit layout.

cargo install --git https://github.com/ucb-substrate/argon --locked argon
The Argon GUI showing a differential ring oscillator in the sky130 process, with the scope tree on the left and the layer list on the right.
A differential ring oscillator for the sky130 process, written in Argon and shown in the GUI.

Why Argon?

Constraints

Positions and dimensions are solver variables. State how edges relate and the solver places the geometry. Change a parameter and the layout follows.

Parametric cells

Cells take typed arguments and nest to form a hierarchy. You get functions, enums, loops, and modules in a Rust-like syntax, and the type checker catches mistakes before any layout is generated.

Two-way editing

Neovim owns the source and the GUI renders the result. Draw on the canvas and Argon writes the code into your buffer. Edit the code and the canvas updates as you type.

Documentation

Guides

Install Argon and build, constrain, and export a first cell.

Read the guides

Language

Syntax, built-in functions, the standard library, and types.

Language reference

GUI

Drawing, dimensions, hierarchy, and layers in the visual editor.

GUI manual

Tools

arc, argone, argonc, and the Neovim plugin.

Tools reference

Get involved

Argon is developed on GitHub. Bug reports and pull requests are welcome. Notes for contributors live in the repository's docs directory.