Axon MNA Simulation Suite

Riccardo Fagiolo

Axon: A Modern, Modular Circuit Simulation Engine in Rust


Axon is an experimental, Rust-based circuit simulation engine designed to be a clean, modern spiritual successor to SPICE. Its core algorithm is the Modified Nodal Analysis (MNA), providing a robust foundation for circuit simulation. The project is specifically engineered for modularity and extensibility, aiming to serve as a high-performance foundation for exploring advanced co-simulation and electromechanical extensions.


Core Technology & Inspiration

The engine's primary inspiration is the classic SPICE simulator. By leveraging Rust, Axon aims to provide performance and memory safety, making it ready for modern hardware and development practices. A key design goal, reflected in the roadmap, is to provide Python bindings (PyO3), allowing the MNA engine to be easily connected to Python-based analysis and design workflows.


Disclaimer & Current Status

⚠️ Disclaimer: Axon is an experimental project.

Most features outlined are not yet implemented, and the current code should be treated as a prototype or concept rather than a finished simulator.

Current Status

The repository contains early concept code, which is over a year old, and the architecture is actively being reworked. The new architecture is centered around:

  • Circuit (nodes + devices)
  • State/History (per-device committed/working data)
  • Analysis Contexts (OP, TRAN, AC)
  • Assembler + Solver (responsible for building and solving the linear system Ax=z\mathbf{A x = z})

Early tests will focus on resistive circuits, RC steps, and AC impedance checks.


Project Goals

Axon aims to fulfill the following objectives:

  • Provide a clean, modern Rust implementation of a SPICE-like kernel.
  • Support core circuit analyses:
    • Operating Point (OP)
    • Transient
    • AC small-signal analyses
  • Offer modular device models with a clear stamping API.
  • Allow pluggable linear solver backends (supporting both dense and sparse solvers).
  • Serve as a foundation for exploring electromechanical and co-simulation extensions.

Why "Axon"?

The name was chosen for two relevant analogies:

  1. Biology: An axon is the part of a neuron that transmits electrical signals.
  2. Circuits: Netlists form long chains of connections between nodes—much like axons in a biological system.

Roadmap

The following features are planned for development:

  • Basic devices: Resistors, sources, capacitors, inductors
  • Operating Point analysis (linear + nonlinear via Newton's method)
  • Transient simulation with trapezoidal / implicit Euler integration
  • AC small-signal analysis
  • Sparse solver integration
  • Netlist parsing
  • Python bindings (PyO3)
  • Event handling (switches, zero-crossings, PWM)

Repository & Contributing

The source code for Axon is available on GitHub:

github.com/riccardostokker/axon

Contributions and architectural discussions are highly welcome. Feedback on architecture, device modeling, and solver integration is especially valuable during this early stage.


License

Axon is distributed under the MIT License.