reASITIC¶
A clean-room Python re-implementation of [ASITIC][asitic] — the planar RF inductor analysis tool originally developed at UC Berkeley by Ali M. Niknejad in 1999. The library exposes geometry builders, partial- inductance / Q / resistance / S-parameter / Pi-model analyses, and CIF / GDS / Sonnet / SPICE / FastHenry / Touchstone exports.
A clean-room Python re-implementation of the 1999 UC Berkeley ASITIC RF-spiral inductor analysis tool, faithful to the original but powered by NumPy / SciPy and a strict, fully type-annotated codebase.
🚀 Try reASITIC in your browser — no install
full Python + NumPy + SciPy + the reasitic wheel via Pyodide
User guide
- Installation
- reASITIC tutorial
- reASITIC cookbook
- 1. Pick a 1-nH inductor for a 5 GHz LO
- 2. 5 nH for 1 GHz with substrate-loss-limited Q
- 3. Differential balun with 1:1 turns ratio
- 4. Frequency-swept S-parameter export for SPICE
- 5. Cross-validate against the legacy ASITIC binary
- 6. Optimisation sweep across multiple operating points
- 7. Differential transformer with optimal coupling
- 8. MIM capacitor with proper dielectric stack
- 9. Multi-metal series inductor (boosting L for fixed footprint)
- 10. Parametric L-Q sweep visualisation
- See also
- reASITIC FAQ
- Q: The legacy
run/asitic.linux.2.2binary segfaults when I runIndheadlessly. - Q: Why do I need
xvfb-runto drive the binary? - Q: I wrote a script that drives the binary via
subprocess.runand my Python interpreter crashes. - Q: My spiral has a tiny inductance (< 0.1 nH) — is the result trustworthy?
- Q: How accurate is the substrate shunt-cap model?
- Q: My
OPTSQrun never converges to the target L. - Q: I want the SPICE Pi-model at multiple frequencies. Is there a sweep?
- Q: How do I cross-validate against measured data?
- Q: Performance is slow on large spirals (>50 turns). What can I tune?
- Q: Can I save my session in the binary’s BSAVE format?
- Q: How do I add a new geometry builder?
- Q: I get
ImportErrorformatplotlibwhen I importreasitic.plot. - Q: How can I contribute?
- Q: The legacy
- reASITIC CLI command reference
- Graphical interface
- In-browser REPL
Reference
- API reference
- reASITIC ↔ ASITIC C function mapping
reasitic.unitsreasitic.techreasitic.geometryreasitic.inductance.groverreasitic.inductance.partialreasitic.inductance.filamentreasitic.resistance.dcreasitic.resistance.skinreasitic.qualityreasitic.network.twoportreasitic.network.threeportreasitic.network.touchstonereasitic.network.sweepreasitic.network.analysisreasitic.persistencereasitic.exportsreasitic.optimisereasitic.inductance.eddyreasitic.substrate.greenreasitic.substrate.fft_gridreasitic.inforeasitic.substratereasitic.cli(REPL commands)reasitic.validation.binary_runner- Subsumed by NumPy / SciPy / Python stdlib
- Frontend (asitic_repl.c) bulk coverage
- Vendored libraries (asitic_lapack.c / _linpack.c / _libf2c.c / _cxxrt.c)
- GUI (X11 / Mesa → Tk)
- ASITIC Geometry Routine Notes
- Per-Case Status Summary
- Common Record Model
cmd_square_build_geometry(0x08056670)cmd_spiral_build_geometry(0x08057248)cmd_capacitor_build_geometry(0x0805bc3c)cmd_ring_build_geometry(0x0805b450)cmd_mmsquare_build_geometry(0x0805af5c)cmd_trans_build_geometry(0x080576d4)cmd_3dtrans_build_geometry(0x08057d40)cmd_symsq_build_geometry(0x08059854)cmd_sympoly_build_geometry(0x0805a45c)- Resume here (2026-05-09 round 2)
- Remaining Work
- Benchmarks and cross-validation
- 100 % port milestone
- Changelog
Quick install¶
pip install reASITIC # base library
pip install reASITIC[plot] # + matplotlib for plotting helpers
At-a-glance¶
import reasitic
tech = reasitic.parse_tech_file("BiCMOS.tek")
sp = reasitic.square_spiral(
"L1", length=170, width=10, spacing=3, turns=2,
tech=tech, metal="m3",
)
print(f"L = {reasitic.compute_self_inductance(sp):.3f} nH")
print(f"R = {reasitic.compute_ac_resistance(sp, tech, 2.4):.3f} Ω")
print(f"Q = {reasitic.metal_only_q(sp, tech, 2.4):.1f}")
Feature surface¶
117 / 117 original REPL commands
669 unit / integration / regression tests, 90 % line coverage
643 / 643 identified C functions covered (100 %) — see milestone
mypy --strictclean across the entire public surfaceGreenhouse + Grover partial-inductance summation with filament-level current-crowding, Wheeler skin effect, substrate eddy correction
Sommerfeld Green’s-function substrate model, FFT-accelerated coupling grid
2-port Y/Z/S algebra, π / π3 / π4 / πX extraction, 3-port reduction, Touchstone v1 reader/writer
Geometry builders (10): square / polygon / wire / ring / via / transformer / 3D-transformer / symmetric-square / balun / capacitor
Round-trip CIF / Sonnet / SPICE / FastHenry / Tek / Tek 4014 exports
SLSQP-driven
OptSq/OptPoly/OptArea/OptSymSq/BatchOptJSON-based session persistence, full-binary cross-validation harness