← Back to projects
Senior Capstone Simulation · Visualization · Education

BananaSpice

A browser-based visualization layer that combines Xschem circuit descriptions and NGSpice simulation accuracy with an intuitive, interactive 3D representation for circuit education.

Godot 4 GDScript C++ GDExtension NGSpice Xschem WebAssembly GitHub Actions
BananaSpice rendering a complex circuit in 3D with illuminated voltage paths and a transient voltage graph

01

Making established tools easier to understand

BananaSpice does not attempt to replace Xschem or NGSpice. It acts as a visual and interactive layer over established electronic design tools. Schematics remain the source of circuit structure, and NGSpice remains the simulation backend. BananaSpice converts their output into a spatial, animated representation intended to help beginners understand what the circuit is doing.

02

Murat's contribution

Murat was a primary contributor on the visualization side of the project. His earlier Circuit Visualization repository established the Godot and native-extension foundation that later developed into the capstone system.

  • Developed the Godot-based 3D circuit visualization approach.
  • Worked on parsing schematic coordinates into circuit scene geometry.
  • Built component, wire, label, camera, and interaction behavior.
  • Mapped simulation values to visual color gradients and animation.
  • Contributed to the C++ and Godot integration used by the visualizer.
  • Helped adapt the project for web deployment through WebAssembly.
  • Iterated on usability for file upload, navigation, and live simulation controls.

03

The traditional learning gap

Professional tools are accurate, but their native outputs require substantial background knowledge to interpret.

Xschem

Dense schematic representation

A dense Xschem transistor-level schematic crossed out to represent its difficulty for beginners

Schematics precisely describe topology, components, and connectivity, but large transistor-level diagrams can become visually overwhelming.

NGSpice

Numerical waveform output

Traditional NGSpice transient waveform graphs

Waveforms accurately show electrical behavior, but students must mentally map each signal back onto the circuit.

BananaSpice

Interactive visual simulation

BananaSpice browser interface displaying a 3D transistor circuit with upload and animation controls

BananaSpice places components and wires into a navigable 3D scene, then applies simulation values directly to the circuit through live visual feedback.

04

System architecture

Visualization and simulation remain separate concerns. A C++ GDExtension connects Godot's rendering and interaction layer to NGSpice simulation data.

BananaSpice architecture showing schematic and netlist parsing, Godot rendering, a C++ simulation bridge, NGSpice, and WebAssembly deployment

05

How the pipeline works

  1. Resolve circuit files. The application accepts Xschem .sch schematics, supporting .sym symbol definitions, and optional SPICE netlists.
  2. Build the visual scene. Parsed coordinates, symbols, pins, labels, and wires become Godot nodes in a navigable 3D environment.
  3. Run the electrical model. NGSpice performs transient simulation through the native C++ integration.
  4. Stream values into the renderer. Callback data supplies voltages and currents to the Godot application.
  5. Animate circuit behavior. Voltage values drive wire glow, color gradients, plots, and live interaction.

06

Engineering challenges

The major work involved connecting software systems with very different assumptions about execution, data, and user interaction.

Real-time mapping

Simulation values to smooth visual feedback

Raw voltage output had to be associated with the correct visual nets and transformed into understandable color and animation without distracting flicker.

Continuous execution

Extending batch-oriented simulation

The educational use case required long-running demonstrations and interactive switching rather than only finite offline runs.

File translation

From schematic files to a usable scene

Xschem files contain coordinates and references rather than ready-made graphics, requiring parsing, symbol resolution, and connectivity reconstruction.

Browser delivery

Native systems inside a web application

Godot, C++, file handling, and simulation behavior had to be adapted for WebAssembly and deployed through an automated GitHub Pages workflow.

07

Designed for circuit education

The interface focuses on connecting physical circuit structure with changing electrical behavior.

3D visualizationInspect connections and components spatially.
Live voltage gradientsSee signal intensity directly on circuit nets.
Interactive controlsChange switches and inputs during a demonstration.
Continuous simulationRun classroom examples for extended periods.
Standard file supportUse Xschem schematics, symbols, and SPICE data.
Browser accessReduce installation barriers for students.

08

Video Demonstration

A walkthrough of BananaSpice showing the upload pipeline, 3D visualization, live simulation, and interactive controls.

09

Baskin Engineering Annual Student Project Showcase

BananaSpice was presented as a UCSC senior capstone project during the Baskin Engineering student showcase. The event provided an opportunity to demonstrate the prototype and discuss its educational and technical goals with faculty, students, and visitors.

10

What this project demonstrates

BananaSpice demonstrates the ability to connect file formats, native simulation libraries, real-time graphics, user interaction, and browser deployment into one coherent educational tool. Murat's visual work helped transform accurate but abstract circuit data into a system that users can inspect and understand spatially.