
Amp cpw hmc311
loxodes/vna
Under development open hardware microwave vector network analyzer

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…
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.
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.
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.
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| Role | MCU | Count | Notes |
|---|---|---|---|
| Worker Core | CH32V003J4M6 (QFN-20) | 512 | 3×3mm, 48MHz, 2KB RAM |
| Slot Router | CH32V203C8T6 (QFN-48) | 32 | Dual SPI + DMA, manages 16 workers |
| Column Controller | CH32V307VCT6 | 4 | FPU, manages 8 slot routers + PSU |
| Host MCU | CH32V307VCT6 | 1 | USB-HS to PC, top-level scheduler |
| Total | 549 |
| Board | Qty | Description |
|---|---|---|
| Module Board | 32 | 16× CH32V003 workers, M.2 Key B edge connector, 20 LEDs |
| Backplane | 1 | 4 removable columns using M.2 Key B, host MCU, system status LEDs, ATX power input |
| Column Board | 4 | 8× M.2 slots, CH32V307 column controller, CH32V203 slot routers, PSU |
| Programmer Board | 1 | Programs 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.
| Signal | Pins | Notes |
|---|---|---|
| GND | 11 | Distributed |
| 3.3V | 9 | ~4.5A capacity |
| SPI (CLK, MOSI, MISO, CS) | 4 | Slot router ↔ module ring master |
| NRST_ALL | 1 | Global worker reset |
| STATUS | 1 | Module insertion detect |
| SLOT_ID[0:4] | 5 | 5-bit address strapping (32 slots) |
| PWR_EN | 1 | Hot-swap load switch enable |
| PWR_GOOD | 1 | Power good feedback |
| RESERVED | 2 | Future expansion |
SWD is handled entirely on the backplane by the CH32V203 slot router.
No SWD signals cross the M.2 connector during normal operation.
| Location | Count | Colors | Purpose |
|---|---|---|---|
| Per worker (×512) | 512 | Green | Computation activity |
| Per module status (×32) | 128 | R/B/Y/W | Power, SPI, reset, ready |
| Backplane per-slot (×32) | 128 | G/B/R/Y | Slot power, traffic, fault, programming |
| Backplane per-column (×4) | 20 | G/R/B/Y/W | PSU, controller, busy, idle |
| Backplane system status | 20 | Various | USB, SPI bus, power rails, fault |
| Programmer board | 21 | Various | Programming status per worker |
| Total | 829 |
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.
Jobs are tiled into small packets (<512 bytes) to fit within router SRAM constraints. The host PC dispatches job tiles down the hierarchy:
PC -> Host MCU -> Column Controller -> Slot Router -> Worker Core
|
PC <- Host MCU <- Column Controller <- Slot Router <- Result| Category | Approx. Cost |
|---|---|
| Worker MCUs (512× CH32V003) | ~$61 |
| Slot routers (32× CH32V203) | ~$16 |
| Column controllers + host (5× CH32V307) | ~$12.50 |
| PCBs (JLC, 4-layer) | TBD |
| PCBA assembly | TBD |
| M.2 connectors (×32 module + ×4 column) | TBD |
| Passives, LEDs, power components | TBD |
| 5-port USB-C power brick | ~$30 |
| Estimated Total | $500–1500 |
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.
MIT License — see LICENSE for details.
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | 100nF | Capacitor_SMD:C_0402_1005Metric | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16 |
| 16 | 220 | Resistor_SMD:R_0402_1005Metric | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16 |
| 16 | APT2012SGC (GREEN) | APT2012SGC:APT2012SGC | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16 |
| 16 | CH32V003FxUx | Package_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm | U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16 |
| 1 | LOGO | asset_lib:hc_bw_small | G*** |
| 1 | LOGO | asset_lib:nl_bw_large | G*** |
| 1 | M.2-B-KEY | M.2-Templates:M.2-B-KEY | U$2 |
It measures 22 × 80 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask sectersion before reusing the design.

loxodes/vna
Under development open hardware microwave vector network analyzer

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


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

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


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.
