whatisgithub

What is tiny-gpu?

jberdkan/tiny-gpu — explained in plain English

Analysis updated 2026-05-18

58VerilogAudience · developerComplexity · 5/5Setup · hard

In one sentence

A minimal, fully documented Verilog GPU design built to teach how GPU architecture, parallel execution, and memory systems work at the hardware level.

Mindmap

mindmap
  root((tiny-gpu))
    What it does
      Minimal Verilog GPU
      Teaches GPU architecture
      Matrix kernels
    Tech stack
      Verilog
      LibreLane
      TinyTapeout
    Use cases
      Learn GPU hardware
      Simulate kernels
      ASIC tapeout flow
    Audience
      Hardware learners
      Chip designers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Learn how a GPU's architecture, memory system, and SIMD execution model work at the hardware level.

USE CASE 2

Simulate and trace execution of matrix addition and multiplication kernels on a minimal GPU design.

USE CASE 3

Follow a full ASIC flow from Verilog RTL through Cadence synthesis or an open-source sky130 flow.

USE CASE 4

Build a TinyTapeout-ready chip adapter to get a small GPU design manufactured as real silicon.

What is it built with?

VerilogSystemVerilogLibreLaneTinyTapeout

How does it compare?

jberdkan/tiny-gpuessenceia/until_heat_death_do_us_partyii2004/tinycodesign
Stars582920
LanguageVerilogVerilogVerilog
Setup difficultyhardhardhard
Complexity5/55/54/5
Audiencedeveloperdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Requires a Verilog simulator at minimum, the ASIC tapeout flow needs Cadence tools or the open-source LibreLane sky130 flow.

The original design has no explicit license, so its copyright remains with the original author, this fork is shared for educational and portfolio use with attribution required.

So what is it?

tiny-gpu is a small, educational GPU design written in Verilog, built to teach how graphics processing units work at the hardware level rather than at the level of writing programs for them. While CPUs are well documented and easy to learn about from architecture down to control signals, real GPU designs are kept proprietary by manufacturers, so there is very little material showing how they actually work inside. This project strips away the complexity of a production graphics card and keeps only the core ideas shared by GPUs and other modern accelerators like Google's TPU: how the architecture is organized, how the parallel programming model called SIMD is implemented in hardware, and how a GPU deals with limited memory bandwidth. This particular repository is a fork of an earlier project by another author, and it is careful to credit that original work for the architecture, instruction set, hardware description, and documentation. The fork adds several things the original README asked contributors to build next. It rewrites the original SystemVerilog code into a more portable form of Verilog from 2005, and adds a full path for turning the design into an actual chip: synthesis and test scripts for a professional Cadence toolchain, an equivalent open-source flow using LibreLane targeting the sky130 chip process, and a complete adapter for TinyTapeout, a program that lets hobbyists get small designs manufactured as real silicon. That adapter includes on-chip program and data memory, a way to load programs one byte at a time from a host computer, a smaller GPU configuration sized to fit the TinyTapeout constraints, a MicroPython driver for controlling it from a host, and the manufacturing-ready files needed for tapeout. The GPU itself runs one kernel at a time. Launching a kernel means loading program memory with instructions, loading data memory with the values to process, telling the device how many threads to run, and then starting it. Internally it consists of a device control register, a dispatcher that splits threads into groups called blocks and hands them to available compute cores, one or more compute cores that each run a block of threads with their own arithmetic unit, load and store unit, program counter, and registers, separate memory controllers for program and data memory that throttle requests to match real memory bandwidth, and a cache, still a work in progress, meant to avoid repeatedly fetching the same data from external memory. The project includes working matrix addition and multiplication example programs along with support for simulating and tracing kernel execution.

Copy-paste prompts

Prompt 1
Walk me through tiny-gpu's architecture, including the dispatcher, cores, and memory controllers.
Prompt 2
Help me simulate the matrix multiplication kernel in this tiny-gpu repository.
Prompt 3
Explain how the TinyTapeout adapter in this repo turns tiny-gpu into a manufacturable chip.
Prompt 4
Show me how to run the open-source sky130 flow using LibreLane on this design.

Frequently asked questions

What is tiny-gpu?

A minimal, fully documented Verilog GPU design built to teach how GPU architecture, parallel execution, and memory systems work at the hardware level.

What language is tiny-gpu written in?

Mainly Verilog. The stack also includes Verilog, SystemVerilog, LibreLane.

What license does tiny-gpu use?

The original design has no explicit license, so its copyright remains with the original author, this fork is shared for educational and portfolio use with attribution required.

How hard is tiny-gpu to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is tiny-gpu for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.