Skip to the content
PCBKitNew board
4 layers22 × 80 mmModule board, the printed circuit board in 3D

CH32V003512 is a custom compute cluster built entirely from WCH CH32V003 RISC-V microcontrollers. 512 worker cores are organized across 32 hot-swappable modules, connected via a hierarchical SPI fabric to a host MCU…

Size
22 × 80 mm
Copper layers
4
Thickness
1.6 mm
Parts
67
Nets
201
Pads
564
Tracks, vias
358, 130
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
13 Mar 2026
Updated
19 Mar 2026

Overview

Module board is an open-source printed circuit board by sectersion, from the sectersion/ch32v003-512 repository on GitHub. It is a 4-layer board of 22 × 80 mm with 67 parts on 201 nets, routed with 358 tracks and 130 vias.

Its parts include 16 capacitors, 16 resistors, 16 ICs and 16 diodes. It belongs with the RISC-V boards of this library.

README

README.md

STASIS — 512-Core CH32V003 RISC-V Compute Cluster

A massively parallel, modular RISC-V compute cluster built from 512 CH32V003 microcontrollers, designed for neural network inference, extremely slow graphics rendering, and embarrassingly parallel workloads.

Status Cores MCUs LEDs License


Overview

CH32V003512 is a custom compute cluster built entirely from WCH CH32V003 RISC-V microcontrollers. 512 worker cores are organized across 32 hot-swappable modules, connected via a hierarchical SPI fabric to a host MCU that interfaces with a PC over USB. The system is designed for parallel workloads including neural network inference, raytracing, cellular automata, and any embarrassingly parallel computation.

I created this project inspired by bitluni's lab take on a ch32v003 cluster. The architecture was inspired by my prior knowledge of chip design. My goal is to emulate tiny distributed computing in an easy to understand way.

This project was built for Hack Club Stasis.


Architecture

text
PC (USB/Serial)
└── Host MCU — CH32V307 (USB-HS)
    └── SPI Bus
        ├── Column Controller 0 — CH32V307
        │   ├── PSU (5V → 3.3V, ~5A)
        │   └── Slot Router ×8 — CH32V203
        │       └── 16× CH32V003 Worker Cores (via SPI ring)
        ├── Column Controller 1 — CH32V307
        ├── Column Controller 2 — CH32V307
        └── Column Controller 3 — CH32V307

MCU Roles

RoleMCUCountNotes
Worker CoreCH32V003J4M6 (QFN-20)5123×3mm, 48MHz, 2KB RAM
Slot RouterCH32V203C8T6 (QFN-48)32Dual SPI + DMA, manages 16 workers
Column ControllerCH32V307VCT64FPU, manages 8 slot routers + PSU
Host MCUCH32V307VCT61USB-HS to PC, top-level scheduler
Total549

Hardware

System Boards

BoardQtyDescription
Module Board3216× CH32V003 workers, M.2 Key B edge connector, 20 LEDs
Backplane14 removable columns using M.2 Key B, host MCU, system status LEDs, ATX power input
Column Board48× M.2 slots, CH32V307 column controller, CH32V203 slot routers, PSU
Programmer Board1Programs one module at a time via SWD, separate project

NOTE: May need 2 seperate programmer boards for columns and compute modules, because they don't follow the same pin layout.

Module Board

  • Size: M.2 2260 (22×60mm), 4-layer PCB
  • Workers: 16× CH32V003J4M6 in QFN-20 (3×3mm each)
  • Interface: M.2 Key B, 0.5mm pin pitch
  • LEDs: 16× green per-worker activity + 4× status (power, SPI, reset, ready)
  • Topology: SPI daisy-chain ring, slot router as master

Backplane

  • Columns: 4× removable column boards via M.2 Key A/E connector
  • Power: ATX PSU input, per-column regulation
  • Host MCU: CH32V307 with USB-HS
  • LEDs: Per-slot status (128), per-column status (20), system status bank (20)
  • Hot-swap: Per-slot AP2141 load switch, soft-eject protocol

M.2 Module Pinout (Key B, 75 pins)

SignalPinsNotes
GND11Distributed
3.3V9~4.5A capacity
SPI (CLK, MOSI, MISO, CS)4Slot router ↔ module ring master
NRST_ALL1Global worker reset
STATUS1Module insertion detect
SLOT_ID[0:4]55-bit address strapping (32 slots)
PWR_EN1Hot-swap load switch enable
PWR_GOOD1Power good feedback
RESERVED2Future expansion

SWD is handled entirely on the backplane by the CH32V203 slot router.
No SWD signals cross the M.2 connector during normal operation.


LED Map

LocationCountColorsPurpose
Per worker (×512)512GreenComputation activity
Per module status (×32)128R/B/Y/WPower, SPI, reset, ready
Backplane per-slot (×32)128G/B/R/YSlot power, traffic, fault, programming
Backplane per-column (×4)20G/R/B/Y/WPSU, controller, busy, idle
Backplane system status20VariousUSB, SPI bus, power rails, fault
Programmer board21VariousProgramming status per worker
Total829

Software / SDK

A custom SDK is being developed targeting all tiers of the hierarchy: It will be a combination of a custom compiler, communications package and flasher, and will have a 80-120 instruction set for programming the workers. The compiler will generate the code into arduino .INO files, the flasher will autonomously flash the worker and column modules. The communications package is in charge of talking to the main MCU using Serial via USB. It is a very heavy SDK for a very heavy board. The board will probably weight like 5 pounds.

Workload Model

Jobs are tiled into small packets (<512 bytes) to fit within router SRAM constraints. The host PC dispatches job tiles down the hierarchy:

text
PC -> Host MCU -> Column Controller -> Slot Router -> Worker Core
                                                  |
PC <- Host MCU <- Column Controller <- Slot Router <- Result

BOM Summary

CategoryApprox. Cost
Worker MCUs (512× CH32V003)~$61
Slot routers (32× CH32V203)~$16
Column controllers + host (5× CH32V307)~$12.50
PCBs (JLC, 4-layer)TBD
PCBA assemblyTBD
M.2 connectors (×32 module + ×4 column)TBD
Passives, LEDs, power componentsTBD
5-port USB-C power brick~$30
Estimated Total$500–1500

Project Status

  • System architecture defined
  • MCU selection finalized
  • M.2 pinout spec complete
  • LED strategy defined
  • KiCad schematic — top level hierarchy
  • KiCad schematic — module board
  • [ x KiCad schematic — backplane
  • [WIP] KiCad schematic — column board
  • KiCad schematic — programmer board
  • PCB layout — module board
  • PCB layout — backplane
  • PCB layout — column board
  • Bring-up and testing
  • SDK — worker firmware
  • SDK — router/controller firmware
  • SDK — PC interface
  • Compute kernels

Tools & Fabrication

  • EDA: KiCad 9
  • PCB Fab: JLCPCB (4-layer and 2-layer, PCBA)
  • Programming: Custom programmer board (separate project)
  • Languages: C (firmware), Python / C++ / Rust (host SDK)

Inspiration

Heavily inspired by bitluni's CH32V003 cluster. STASIS scales the concept to 512 cores with a structured hierarchical fabric, hot-swap modules, custom tooling, and a full SDK.


License

MIT License — see LICENSE for details.


Author

Built for Hack Club Stasis.
If you're reading this and you've also built something unhinged out of cheap RISC-V chips, let's talk.

Parts

67
QtyValueFootprintReferences
16100nFCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
16220Resistor_SMD:R_0402_1005MetricR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16
16APT2012SGC (GREEN)APT2012SGC:APT2012SGCD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16
16CH32V003FxUxPackage_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mmU1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16
1LOGOasset_lib:hc_bw_smallG***
1LOGOasset_lib:nl_bw_largeG***
1M.2-B-KEYM.2-Templates:M.2-B-KEYU$2

Questions

How big is the Module board PCB?

It measures 22 × 80 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Module board use?

67 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 Module board KiCad files?

From the sectersion/ch32v003-512 repository on GitHub, at the commit this page was made from: the board is module_board/module_board.kicad_pcb and its schematic backled.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Module board design in my own project?

Its repository states no licence, so its author keeps all rights: ask sectersion before reusing the design.

Similar boards

  • 4 layers22 × 15 mmAmp cpw hmc311, the printed circuit board in 3D

    Amp cpw hmc311

    loxodes/vna

    Under development open hardware microwave vector network analyzer

    67 parts205
  • 4 layers51.4 × 60.6 mmGb rp2040 cart, the printed circuit board in 3D

    Gb rp2040 cart

    deltabeard/DBGC

    A Game Boy cartridge using the Raspberry Pi RP2040 with RTC and MBC support.

    67 parts57
  • 4 layers100 × 40 mmMotor controller, the printed circuit board in 3D

    Motor controller

    reubenstr/zuko

    A quadruped robot dog!

    67 parts51MIT
  • 4 layers49 × 43 mmSk005-monitor resyncer, the printed circuit board in 3D

    Sk005-monitor resyncer

    mirdej/synkie

    The Synkie is a modular open source analog video processor, developed by Michael Egger, Max Egger and Flo Kaufmann

    67 parts47
  • 4 layers30 × 26.5 mmDriver tmc2208, the printed circuit board in 3D

    Driver tmc2208

    calithameridi/corevus

    High-flexibility, low-cost mechatronics controller for 3D printers

    67 parts25
  • 4 layers50.3 × 33 mm154-watch, the printed circuit board in 3D

    154-watch

    martinberlin/H-spi-adapters

    PCB design for SPI adapters (HATs)

    67 parts23
  • 4 layers82.3 × 37.2 mmRIDE, the printed circuit board in 3D

    RIDE

    LIV2/RIDE

    To add the A0 Bonus RAM to the system you will need to use the addram command included in the RIDE-Software adf/lha found under Releases.

    67 parts17
  • 4 layers76 × 76.5 mmNumbpad, the printed circuit board in 3D

    Numbpad

    calvin-mcd/travaulta

    topre pcb for the vault35

    67 parts16