Basic Circuit Simulator
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

CircuitSim v1.8.0

Site and download links:

Basic circuit simulator with many built-in components. Check out src/com/ra4king/circuitsim/simulator/components for examples of how Components are written. Their GUI counterparts are in src/com/ra4king/circuitsim/gui/peers.

Screenshot Screenshot


The gradle script produces a multi-release jar to resolve incompatibilities between JavaFX 8 and 9, so you need to install both Java 8 and Java 9 to build. For example:

$ export JAVA_8_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
$ export JAVA_9_HOME=/usr/lib/jvm/java-9-openjdk-amd64/
$ ./gradlew jar



  • Revamp ROM/RAM component look: now showing the current address and value
  • Revamp ROM/RAM memory editor: no need to double click to start typing, no need to hit enter to commit, full multi-cell copy/paste support
  • Huge improvement and bug-fixes to wire behavior when moving components and with undo/redo
  • Add RandomGenerator component
  • Add copy/cut/paste to context menu in circuit editor
  • Display missing label names in certain components
  • Add All Files option in Load File dialog
  • Fixed bug with gates where downsizing the number of inputs kept the extra Negate options


  • Fix several bugs with wire creation when dragging components
  • Give an option to send an error report upon unexpected errors
  • Minor bug fixes


  • Fix blue wire issues with Tunnels and subcircuits
  • Highlight wires when clicking on them
  • Ctrl+scroll now zooms in/out
  • Right clicking when placing components or dragging wires cancels the action
  • Fix bug with intersecting wires being auto-joined on drag
  • Improved error handling


  • Add Probe component, which lets you observe values on wires without resorting to output pins
  • Improve behavior multi-component selection when holding down control by disabling drag-less wire creation when control is held down
  • Copy doesn't do anything when nothing is selected instead of emptying the clipboard
  • Other minor bugs fixed


  • Squashed tunnel bugs: now short-circuits should propagate properly across them and tunnels should work properly
  • Added comparison type to Comparator: now you can do both 2's complement and unsigned comparison
  • Draw magnifying glass to subcircuit components when hovering over them to indicate ability to view internal state
  • Officially making a file format change supporting library paths
  • Other minor bugs fixed


  • Big thanks to Cem Gokmen for helping with the Mac issues and Austin Adams for gradle-ifying the repo!
  • Now supporting both Java 8 and 9 - thanks to Austin Adams for figuring out how to create a multi-release Jar.
  • Huge rendering performance improvements, especially for Mac
  • Fixed keyboard shortcut issue on Mac
  • Use system menu bar on Mac instead of the in-app bar
  • Added an update checker that notifies you when there is a new version
  • Fixed a bug with subcircuits where it pushed values through output pins, causing seemingly un-explainable short circuits.
  • Improved behavior of tab selection when moving them or deleting them, especially with undo/redo
  • Many minor bug fixes and improvements


  • Fixed exceptions being thrown when using Tunnels
  • Now you don't have hit enter to update a text or value property, someone complained that it was annoying. The component is automatically updated when you unfocus from the text input.
  • Multi-bit wires with a floating bit (X) now show up as dark blue instead of black
  • Button now has directions


  • Improved behavior when dragging components to also delete wires whenever they overlap existing ones
  • Huge performance increases with subcircuits and tunnels. Bad designs will still be very slow to run the autograder in.
  • Now showing Help dialog on first run.


  • Added creation of new wires when dragging components. This allows maintaining existing connections when dragging components to new locations.
  • Hold CTRL before beginning the drag to disable this.
  • Fixed file load issue where an error was thrown if the folder doesn't exist anymore.
  • Fixed issues with dragging + keyboard shortcuts
  • Fixed an undo bug when updating components