Skip to the content
4 layers57.2 × 61.8 mmMem pmod, the printed circuit board in 3D

SanicCPU32 (defined hereafter as SC32) is a 32-bit little-endian RISC with an integer ALU, support for up to 23-bit memory (in the current implementation), and 32 general purpose registers.

Size
57.2 × 61.8 mm
Copper layers
4
Thickness
1.6 mm
Parts
17
Nets
54
Pads
148
Tracks, vias
430, 43
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
9 Oct 2025
Updated
17 Jun 2026

Overview

Mem pmod is an open-source printed circuit board by BoySanic, from the BoySanic/sanic-cpu-32 repository on GitHub. It is a 4-layer board of 57.2 × 61.8 mm with 17 parts on 54 nets, routed with 430 tracks and 43 vias.

It is built around the W25Q128JVSIM, APS6404L-3SQR-SN and NC7SZ86FHX, with the SN74HC374NSR and SY100EP32VKG among its other parts. Its parts include 2 connectors and 1 IC.

Main components

5

README

README.md

Overview

SanicCPU32 (defined hereafter as SC32) is a 32-bit little-endian RISC with an integer ALU, support for up to 23-bit memory (in the current implementation), and 32 general purpose registers.

Instruction encoding

  • Format 1 (Reg-reg arithmetic, indirect load/store):

    • AAAAACCCCCEEEEE
  • Format 2 (Immediate arithmetic, direct load/store):

    • AAAAABBBDDDDDDDDDDDDDDDDDDDDDDDD
  • Format 3 (Call):

    • AAAAADDDDDDDDDDDDDDDDDDDDDDDD
  • Format 4 (Call indirect, Shift Right, POP, NOT):

    • AAAAACCCCC
  • Format 5 (Load immediate upper):

    • AAAAACCCCCFFFFFFFFFFFFFFFF
  • Format 6 (SMOV):

    • AAAAACCCCCGGGGG
  • Format 7 (Branch):

    • AAAAAHHHDDDDDDDDDDDDDDDDDDDDDDDD
  • Format 8 (Branch indirect):

    • AAAAAHHHCCCCC
  • Legend

    • A: Always Opcode
    • B: 3-bit register index
    • C: 5-bit register index if the specific instruction supports it
    • D: 24-bit immediate for specific instructions that take that.
    • E: 5-bit register index for 2nd operand
    • F: 16-bit immediate
    • G: 5-bit special register index
    • H: 3-bit Branch condition

Instructions

TODO

Calling convention

There isn't a specific stack pointer register.

The ABI, though, uses the following:

R0 - function return R1 - return memory address R2 - stack pointer R3 -

Parts

17
QtyValueFootprintReferences
4APS6404L-3SQR-SNfootprints:APS6404L-3SQR-SN_APYRAM1, RAM2, RAM3, VRAM1
4NC7SZ86FHXfootprints:MICROPAK2-6_1X1_ONSA0_NAND1, A0_NAND2, A1_NAND1, XOR1
2PMOD-Device-x2-Type-1A-GPIOpmod-conn_6x2:pmod_pin_array_6x2PMOD1, PMOD2
2SN74HC374NSRfootprints:NS20VGA_DFLIP1, VGA_DFLIP2
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ2
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ1
1NL17SV32XV5T2Gfootprints:SOT553-5_ONSU2
1SY100EP32VKGfootprints:MSOP-8_K8-1_MCLClock_Divider1
1W25Q128JVSIMfootprints:SOIC_128JVSIM_WINFlash1

Similar boards

  • 2 layers30.7 × 20 mmQspi pmod, the printed circuit board in 3D

    Qspi pmod

    mole99/qspi-pmod

    A QSPI Pmod board designed in KiCad containing one Flash and two SPRAMs

    15 parts16Apache-2.0
  • 2 layers56 × 20 mmCartridge pmod, the printed circuit board in 3D

    Cartridge pmod

    joaln27/cartridge_pmod

    QSPI flash + PSRAM + audio cartridge Pmod for TinyTapeout — a drop-in remix of the stock QSPI Pmod with sigma-delta audio (RC filter + amp + jack) on the CS2 pin. KiCad, JLC-assemblable

    25 parts2Apache-2.0
  • 2 layers209.6 × 66.7 mmLittolRP2040, the printed circuit board in 3D

    LittolRP2040

    baconspoon85/littol

    3 row 30% katakana with exploded spacebar

    81 parts4
  • 2 layers247.3 × 260.9 mmThumbsUp, the printed circuit board in 3D

    ThumbsUp

    ak66666/ThumbsUpV3Rp2040

    ThumbsUp! v3, a split version of the 4x12 Thumbs Up keyboard with RP2040

    156 parts
  • 2 layers250.9 × 280.9 mmThumbsUp, the printed circuit board in 3D

    ThumbsUp

    ak66666/ThumbsUpV3Rp2040MX

    Split version of the Thumbs Up keyboard with RP2040 for MX switches.

    172 parts
  • 2 layers75 × 75 mmMk9-badge, the printed circuit board in 3D

    Mk9-badge

    hamster/mk9-badge

    dczia's defcon 34 badge

    92 parts
  • 4 layers81.2 × 50.7 mmPowerboard, the printed circuit board in 3D

    Powerboard

    jacobmealey/capstone

    UMaine ECE Capstone

    72 parts
  • 4 layers48 × 84 mmFanControlHW, the printed circuit board in 3D

    FanControlHW

    mrspieb/HW-FanControl

    Everything required to build the PCB and case of the ventilation fan controller

    84 partsGPL-3.0

Questions

How big is the Mem pmod PCB?

It measures 57.2 × 61.8 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Mem pmod use?

17 parts, built around the W25Q128JVSIM, APS6404L-3SQR-SN, NC7SZ86FHX and SN74HC374NSR. 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 Mem pmod KiCad files?

From the BoySanic/sanic-cpu-32 repository on GitHub, at the commit this page was made from: the board is pcb/mem_pmod/mem_pmod.kicad_pcb and its schematic fpga_on_board/fpga_mb/fpga_mb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mem pmod design in my own project?

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