Skip to the content
2 layers122 × 81 mm8-bit cpu, the printed circuit board in 3D

An 8-bit CPU running on a TangNano 9k FPGA. Written in SystemVerilog and tested with PYUVM.

Size
122 × 81 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
52
Pads
185
Tracks, vias
165, 0
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
2 Jul 2025
Updated
9 Dec 2025

Overview

8-bit cpu is an open-source printed circuit board by Robert-Riordan-UCD, from the Robert-Riordan-UCD/8_Bit_CPU_FPGA repository on GitHub. It is a 2-layer board of 122 × 81 mm with 20 parts on 52 nets, routed with 165 tracks and 0 vias.

Its parts include 8 switches, 4 resistors, 2 ICs and 2 connectors. It belongs with the fPGA and programmable logic and retro computing and games boards and the FPGA and CPLD boards of this library.

README

README.md

8 Bit FPGA CPU

This is an 8-bit CPU design running on a Tang Nano 9k FPGA. The CPU design is based on Ben Eaters Breadboard CPU, which is based on the Simple As Possible Computer.

The CPU is made of 11 modules, which are designed in SystemVerilog and verified using pyuvm.

This is a gif of the CPU calculating the fibonacci sequence and displaying it (in hexadecimal). Video of the CPU calculating the fibonacci sequence

Getting Started

This project is not fully complete yet and is currently only tested on my personal laptop and raspberry pi. However, this is the current process. (I am developing on Ubuntu 24 and used this guide to get up and running using an open source toolchain)

Installation and Setup

The following programs are required:

  1. yosys for synthisis.
  2. nextpnr for place and route, and bitstream generation.
  3. openFPGALoader for loading the bitstream.

sudo apt insatll yosys nextpnr-gowin openfpgaloader

Clone and navigate to the repository

text
git clone https://github.com/Robert-Riordan-UCD/8_Bit_CPU_FPGA
cd ./8_Bit_CPU_FPGA/

Running

make all upload

Testing

pyuvm is required for testing.

sudo apt install pyuvm

To test each module navigate to the verif directory for that module and run make.

text
cd ./verif/<module>/
make

Current Design Status

ModuleRTLVerifiedRuns on FPGA
Clock✅✅✅
Program Counter✅✅✅
A register✅✅✅
B Register✅✅✅
Memory Address Register✅✅✅
Instruction Register✅✅✅
Random Access Memory✅✅✅
Arithmetic Logic Unit✅✅✅
Control✅✅✅
Output✅✅✅
Bus✅✅✅
Bootloader✅✅✅
Top✅❌✅

The output is currently in hexadecimal, because there was not enough LUTs on the Tang Nano 9k to implement a naive approach to decimal conversion using division. I will hopefully update this to a better approach soon.

Parts

20
QtyValueFootprintReferences
41kResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR1, R2, R3, R4
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
2Conn_01x24_SocketConnector_PinHeader_2.54mm:PinHeader_1x24_P2.54mm_VerticalJ1, J2
2~footprints:4xDoubleThrowSwitchSW7, SW8
1BOOTLOAD ENfootprints:DoubleThrowSwitchSW3
1CA56-12EWADisplay_7Segment:CA56-12EWAU2
1CLK MODEfootprints:DoubleThrowSwitchSW1
1CLK PULSEfootprints:tactile_switchSW2
1RAM MODEfootprints:DoubleThrowSwitchSW4
1RAM PULSEfootprints:tactile_switchSW5
1Tang Nanofootprints:TangNanoU1
1~footprints:8xDoubleThrowSwitchSW6

Similar boards

  • 2 layers66.9 × 74.5 mmDeskHop Rev1, the printed circuit board in 3D

    DeskHop Rev1

    hrvach/deskhop

    Fast Desktop Switching Device

    20 parts7.9kGPL-3.0
  • 2 layers86.4 × 64.8 mmSlot machine, the printed circuit board in 3D

    Slot machine

    google/google-ctf

    Google CTF

    20 parts5.1kApache-2.0
  • 2 layers36.2 × 26.8 mmEsp32 minimal, the printed circuit board in 3D

    Esp32 minimal

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    20 parts4kMIT
  • 2 layers108.1 × 393.8 mmSweep compact ble, the printed circuit board in 3D

    Sweep compact ble

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    20 parts2.1k
  • 2 layers26 × 15.9 mmTPS54340 Buck Regulator, the printed circuit board in 3D

    TPS54340 Buck Regulator

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    20 parts1.2k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    20 parts1kGPL-3.0
  • 2 layers44.3 × 28.7 mmLin bus adapter esp32, the printed circuit board in 3D

    Lin bus adapter esp32

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    20 parts915
  • 2 layers89.5 × 61.6 mmFreeDeck TH 2020-02, the printed circuit board in 3D

    FreeDeck TH 2020-02

    FreeYourStream/freedeck-hardware

    all the stuff you need to build your own FreeDeck

    20 parts772

Questions

How big is the 8-bit cpu PCB?

It measures 122 × 81 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 8-bit cpu use?

20 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the 8-bit cpu KiCad files?

From the Robert-Riordan-UCD/8_Bit_CPU_FPGA repository on GitHub, at the commit this page was made from: the board is pcb/8-bit-cpu.kicad_pcb and its schematic pcb/8-bit-cpu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the 8-bit cpu design in my own project?

Its repository states no licence, so its author keeps all rights: ask Robert-Riordan-UCD before reusing the design.