circuitRF
Lightweight cross-platform RF circuit simulator — DC, S-parameters, harmonic balance, loadpull/sourcepull. Not a SPICE simulator.
circuitRF: a lightweight RF circuit simulator for DC, S-parameters, and loadpull
An open-source EDA tool that analyzes RF circuits with S-parameter, harmonic-balance, and loadpull analyses on Windows, macOS, and Linux.
What circuitRF provides
circuitRF is an EDA tool for building and analyzing RF circuits. The project describes it as lightweight and cross platform, aimed at RF practitioners who find commercial tools too expensive or too heavy for a quick investigation. The simulator handles circuits that range from a handful of components to hierarchical, multi port designs with thousands of parts. It performs DC analysis, S parameter analysis, and nonlinear harmonic balance analysis, and it treats loadpull and sourcepull as first class analyses rather than optional add ons. The stated design goal is to make a loadpull simulation as simple as a few clicks in the GUI. Beyond the numeric engine, circuitRF ships a layout editor for PCB and MMIC work. That editor is substrate aware: it provides microstrip components whose artwork is tied to their electrical model, supports schematic to layout generation, and exports to Gerber, DXF, and GDSII formats. A 2.5D electromagnetic solver based on the method of moments consumes those layouts and analyzes the geometry against the substrate stackup. The combination of circuit simulation and layout driven electromagnetics inside one MIT licensed desktop tool is the project's main distinction from a conventional SPICE simulator. The intended audience includes power amplifier, LNA, and mixer designers, RF EDA and device modeling engineers, academic researchers, and capable hobbyists who want an alternative to proprietary microwave design suites.
How the engine is structured
The codebase is organized into strictly one directional layers, and the simulator logic does not depend on any GUI framework. The lowest layer, RfCore, holds the shared result and network library: Touchstone I/O, S/Z/Y matrix math, the DataSet and DataCube result model, and loadpull readers and writers. Above it, Core handles the design and elaboration layers. A design is a tree of cells, instances, nets, and parameters, plus a TestBench that describes what to simulate. Elaboration flattens that hierarchy, resolves every parameter and expression top down, performs mandatory cycle detection, and numbers the nodes into an elaborated netlist. The Engine layer is numeric only: it builds sparse modified nodal analysis matrices, runs Newton Raphson for nonlinear DC, and runs harmonic balance with a conversion matrix Jacobian. It returns a DataSet, which is a named collection of DataCubes, each a labeled, unit bearing, N dimensional array of a single kind, either real or complex. A single expression engine tokenizes, Pratt parses, and evaluates formulas, and it serves global variables, cell parameters, the SDD device equations, and measurements. The SDD, or symbolically defined device, lets a user write a current as a function of voltage and obtain exact Jacobians through forward mode automatic differentiation. The UI layer draws schematics and plots with SkiaSharp rather than one control per component, so a 10,000 component schematic stays responsive through viewport virtualization and a spatial index for hit testing.
Status and how to run it
The project labels itself version 1 beta. The engine features, including S parameters, nonlinear DC, single and two tone harmonic balance, parametric sweeps, and loadpull, run from both the CLI and the GUI. The Avalonia schematic and symbol editors and the Data Display, including end to end loadpull simulation, contour plotting, and interactive contour markers, are in place. The layout editor is finished: geometry editing, technologies and stackups, hierarchy, GDSII or DXF or Gerber interchange, parametric microstrip components, and schematic to layout generation all work. The 2.5D method of moments solver that consumes those layouts is complete. Prebuilt installers exist for Windows, macOS, and Linux, and they update themselves in the background on the user only build. Building from source requires the .NET 10 SDK. The command dotnet build restores packages and compiles everything, and dotnet test runs the regression suite. A handful of tests read third party measured GaN FET loadpull files that the project is not permitted to redistribute, so on a fresh clone those specific tests report as skipped rather than failing. The engine is also drivable headless through the CLI, which takes a human readable .cnl netlist and can emit Touchstone output or dump the elaborated netlist. Harmonic balance and loadpull runs are currently driven from the GUI Run button, which uses the same headless path, and a dedicated CLI verb for them is listed on the roadmap. The maintainer frames the effort as community driven and notes that much of the code was written with AI assistance.
Editorial conclusion
The repository is published under the MIT license and its most recent commit was recorded on 2026-08-26. The source lives at https://github.com/potatobeanradio/circuitRF.
Community notes