ANTONY AUSTIN

Engineer · Builder · Creator

Back to Projects
FPGA & HardwareBuild flow complete — bring-up paused while compiler work continues

Tiny GPU FPGA Port — Sipeed Tang Nano 20K

Porting a custom 32-bit SIMT GPU from simulation onto a Gowin GW2AR-18C FPGA: a resource-driven redesign from 4 cores × 4 threads down to 1 × 1 with sequential block execution, plus a hardware top level with clock, memory init, launch FSM and UART readback.

FPGA /Gowin /Tang Nano 20K /SystemVerilog /Verilog /Synthesis /UART /Hardware Bring-up
Tiny GPU FPGA Port — Sipeed Tang Nano 20K

Project Overview

This is the FPGA arm of the 32-Bit Tiny GPU project: taking a design that was written for simulation and an ASIC flow, and making it fit and run on a real, small, cheap FPGA. The target is a Sipeed Tang Nano 20K — a Gowin GW2AR-18C QN88 with a 27 MHz onboard oscillator. That board has far fewer LUTs, registers and routing resources than the simulation configuration assumes, so the port is not a recompile. The design drops from 4 cores × 4 threads executing in parallel to a single core with a single thread executing four blocks sequentially, which trades throughput for fit while keeping the programming model and the ISA identical. Around the GPU core sits a hardware top level that does the things a testbench used to do for free: bring up the clock, initialise program and data memory from hex images, drive a launch FSM to start execution, light status LEDs, and stream results back over UART so the board can be observed without a debugger. The port is a separate concern from the ASIC flow — the same RTL also goes through OpenLane to a signoff-clean GDSII on SkyWater 130 nm.

Objectives

  • Fit a design written for 4 cores × 4 threads onto a resource-constrained Gowin GW2AR-18C
  • Preserve the ISA and programming model while changing the execution configuration
  • Build a synthesis-ready flattened Verilog view of a SystemVerilog design for toolchain compatibility
  • Write an FPGA top level handling clock, memory initialisation, launch sequencing, LEDs and UART
  • Produce pin constraints and a repeatable build flow through Gowin EDA to a flashed board
  • Get observable output off the hardware over UART rather than inferring behaviour

Project Details

Status

Build flow complete — bring-up paused while compiler work continues

Duration

2026

Category

FPGA & Hardware

Repositories