Skip to content

jmorgadov/pulse

Repository files navigation

Pulse

Pulse is a simple logic circuit simulator app. That allows you to:

  • Create and simulate logic circuits using built-in components (Logic gates, wiring, etc.)
  • Store and load circuits
  • Edit the design of custom components
  • Build nested circuits from created components
  • Pause and resume simulation
  • Inspect the internal state of the subcomponents while simulating
  • Run multiple simulations of different circuits at the same time

Warning

This is a personal project and is not intended to be used in production. It is a work in progress and it still has a lot of bugs and missing features. It was made in a fast way just to prototype the idea.

Gallery

Running simulation example:

Pulse

Inspecting the internal state of a subcomponent while simulating:

Pulse

Editing of a custom JK flip-flop component:

Pulse

Technical details

Pulse is not intended to be a high-performance simulator, but rather a simple and easy to use tool for learning and experimenting with logic circuits, however, performance is still important. There is still a lot of room for improvement and optimization in Pulse.

Currently simulation process is computed in a separte dart isolate and the state changes are sent to the UI via messages. The ammount of data sent is reduced by only sending the state changes of the current open circuit in the UI.

The future goal is to run the simulation in a more fast language (like C or Rust) and use FFI to communicate with the UI.