Skip to the content
4 layers100 × 100 mmAlu, the printed circuit board in 3D

Homebrew discrete logic CPU

Size
100 × 100 mm
Copper layers
4
Thickness
1.61 mm
Parts
102
Nets
285
Pads
1,014
Tracks, vias
1,643, 180
Pours
12
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
27 Feb 2023
Updated
28 Dec 2025

Overview

Alu is an open-source printed circuit board by bcrist, from the bcrist/vera repository on GitHub, published under the MIT licence. It is a 4-layer board of 100 × 100 mm with 102 parts on 285 nets, routed with 1,643 tracks and 180 vias.

It is built around the 74LVC541AD, 74LVC1G125 and AP62300TWU, with the 74LVC1G332GV, 74LVC1G79GM and 74LVC574AD among its other parts. Its parts include 45 capacitors, 33 ICs, 18 resistors, 2 transistors and 2 connectors.

Main components

11

README

readme.md

Homebrew discrete-logic CPU

"I call it Vera" - Jayne Cobb

Specs

  • up to 20 MHz clock
  • 4-stage pipeline (runs 4 threads simultaneously)
  • 32x 32b general purpose registers (stack addressed)
  • 32b ALU (2x L4C381)
  • 32b logarithmic shifter
  • 16b * 16b -> 32b single cycle multiplier (32b * 32b -> 32b in 5 cycles)
  • 32b popcount/extension/truncation unit
  • 32b virtual addresses
  • 16x4x128 entry, 2 way set-associative, software filled TLB
    • 4 KiB pages
  • 64 MiB physical address space (24b address x 32b data)
    • up to 16 MiB SRAM
    • up to 16 MiB I/O space
    • up to 32 MiB pipeline-private, zero-wait SDRAM

Design Constraints

Since everyone in the homebrew CPU community has their own ideas of what kinds of technology are acceptable to use, here are my self-imposed restrictions and allowances:

  • Backplane/card cage construction is preferred
    • This facilitates building and testing smaller parts separately
    • Blinkenlights are cool, but not particularly interesting at MHz frequencies
  • 3.3V LVTTL/LVCMOS signalling is preferred
    • Backplane signals must not exceed 3.3V (ignoring overshoot transients)
    • 5V TTL outputs are allowed within a board, when paired with an 5V-tolerant receiver
    • Differential LVPECL/LVDS signalling is allowed for clocks
    • All boards should locally generate their own Vcc from a common 12V supply distributed by the backplane
  • SMD footprints are fine
    • >= 0.5mm pitch for QFP/QFN/(T)(S)SOP
    • >= 0.8mm pitch for BGA
  • Modern SRAM, dual-port SRAM, and SDRAM is fine to use
  • Dedicated adder/multiplier/ALU ASICs are allowed
    • But "not quite microprocessor" parts like Am2901 or Am29116/7 are not allowed (except in peripheral devices)
  • FPGAs are not allowed
    • Designing with HDLs feels more like work than fun for me, and all of the FPGA toolchains make me want to pull my hair out
  • CPLDs and other programmable logic are allowed only if I have created the entire programming toolchain myself
    • Designing for CPLDs (without HDLs) is extremely similar to designing for discrete logic, but simplifies board layout significantly, and often provides better timing characteristics
  • Microcontrollers or other ASICs are allowed for bootstrapping or debugging purposes, or within peripheral devices
    • Absolutely none within the data or control paths of the CPU itself

Parts

102
QtyValueFootprintReferences
31100 nFfp:C0402C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31 +15
1474LVC541fp:TSSOP-20U5, U6, U18, U19, U20, U21, U22, U23, U24, U25, U30, U31, U32, U33
100fp:R0402R5, R10, R11, R12, R13, R14, R15, R16, R17, R18
1022 µFfp:C0805C1, C4, C5, C6, C7, C9, C12, C13, C14, C15
474LVC1G332fp:SOT323-6U8, U14, U15, U17
2fp:TX25-120P-LT-H1EJ1, J2
20.015fp:R1206R3, R8
210 kfp:R0402R2, R7
210 nFfp:C0402C3, C11
2330 nFfp:C0402C2, C10
274LVC1G125fp:SOT323-5U28, U29
274LVC1G79fp:SOT323-5U9, U16
274LVC574fp:TSSOP-20U12, U13
2AP62300TWUfp:SOT23-6U1, U3
2EMC1702fp:QFN-12 (4mm x 4mm)U2, U4
2L4C381fp:PLCC-68M (PGA Socket)U26, U27
2MMST3904fp:SOT323Q1, Q2
2NRS5040T3R3NMGJfp:NRS5040L1, L2
10.1fp:R0402R4
1100fp:R0402R9
133.2 kfp:R0402R1
156.2 kfp:R0402R6
174LVC138fp:TSSOP-16U7
174LVC1G08fp:SOT323-5U10
174LVC1G86fp:SOT323-5U11

More from bcrist/vera

3
  • 4 layers100 × 100 mmMultiplier, the printed circuit board in 3D

    Multiplier

    bcrist/vera

    Homebrew discrete logic CPU

    101 parts1MIT
  • 4 layers100 × 100 mmShifter, the printed circuit board in 3D

    Shifter

    bcrist/vera

    Homebrew discrete logic CPU

    83 parts1MIT
  • 4 layers100 × 100 mmAt high, the printed circuit board in 3D

    At high

    bcrist/vera

    Homebrew discrete logic CPU

    33 parts1MIT

Similar boards

  • 2 layersISA FPGA, the printed circuit board in 3D

    ISA FPGA

    robfinch/Cores

    Cores ===== RTF's Cores Use at your own risk. Welcome to my galaxy of cores. Contained in the directories are IP cores, source code for digital circuits.

    106 parts78
  • 2 layers123.6 × 78.9 mmMost listener, the printed circuit board in 3D

    Most listener

    Oleg-mk/MOST25-to-AUDIO

    Passive MOST25 listener: Tang Nano 20K FPGA, ESP32 host, stereo I2S out with the head unit's volume, balance and tone

    172 parts1CERN-OHL-S-2.0
  • 4 layers20.7 × 25.9 mmSkin optoelectronics module, the printed circuit board in 3D

    Skin optoelectronics module

    Roboy/roboy-skin-electronics

    Parent repo which contains all the boards and schematics related to the light skin project.

    80 parts
  • 2 layersALU, the printed circuit board in 3D

    ALU

    LLucasCoding/PCBALU

    Making an ALU from scratch on a PCB -- No adder IC!

    169 partsMIT
  • 2 layers100 × 100 mmSimple logic full, the printed circuit board in 3D

    Simple logic full

    Justinius/LogicDemoBoard

    PCB for simple logic demo

    36 partsCC0-1.0
  • 2 layers131.9 × 164.6 mmCft alu, the printed circuit board in 3D

    Cft alu

    alexiosc/cft

    The CFT homebrew minicomputer

    138 parts6GPL-3.0
  • 4 layers116.8 × 59.7 mmPlenum, the printed circuit board in 3D

    Plenum

    foxsi/UMN-boards-FOXSI-4

    Circuit boards designed in Minnesota for FOXSI-4

    142 parts1

Questions

How big is the Alu PCB?

It measures 100 × 100 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Alu use?

102 parts, built around the 74LVC541AD, 74LVC1G125, AP62300TWU and 74LVC1G332GV. 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 Alu KiCad files?

From the bcrist/vera repository on GitHub, at the commit this page was made from: the board is boards/kicad/alu/alu.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Alu design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).