All projects
May 2024 – June 2024 Shipped

Game of Life on FPGA

200,000 evolutions per second, controlled by hand gestures

  • 200k evolutions per second
  • 822 clock cycles per ~1M-pixel generation
  • 1280×720 native resolution

Game of Life is embarrassingly parallel: every cell’s next state depends only on its eight neighbours. On a CPU you walk a million pixels one at a time. In fabric you evaluate huge swathes at once.

We built it on a PYNQ-Z1 at native 1280×720, hitting 200,000 evolutions per second and computing the next state of a grid of close to a million pixels in 822 clock cycles.

My part

The user interface, the data pipeline that carries user input wirelessly into the FPGA’s memory, and the starting-grid hardware logic that loads an arbitrary user-drawn pattern into the grid registers without stalling the evolution pipeline. The 822-cycle figure comes down to the memory layout keeping neighbour reads local.

Gesture control

Instead of a keyboard, a computer-vision interface tracks drawing movements so you can sketch the starting grid in the air, and recognises a pause signal to freeze and resume. First time I had a vision model inside the control loop of a real-time system, where inference latency shows up directly as user-perceived lag.