Vol. 32 · No. 1 Ashtown Valley, the Bay Perimeter · Thursday, August 13, 2026 One copper

The Tomato

Discrete logic A homebrew 32-bit CPU 74xx · Dual-LUT · CERN-OHL-P

From the bench

Copper incoming: the ALU has left the screen

Two 8-bit dual-LUT slices on order. The rest of the machine is still a catalog — and that is the point.

Tomato is a 32-bit CPU built from 74xx logic — not a soft core, not an FPGA toy first. It started at the transistor — an 8-bit ALU from 3,488 MOSFETs — and kept climbing: gates, slices, boards, a machine that can speak dozens of foreign ISAs while remaining one physical computer underneath.

The ALU is two independent 3-input LUTs plus a ripple adder per nibble. A 512-row opcode ROM names a practical subset of what that plane can do. Dark silicon stays in the tables until a program needs it.

Copper is inbound. Two slices make sixteen bits on the bench. Decode sits next to the hardware it drives. The rest of the catalog is still a drawing — and that is why the first board was kept small enough to spin again.

KiCad render of Tomato 07_alu, two 4-bit dual-LUT cells.
Fig. 1 — 07_alu Board render · fab-ready

I. The slice

The ALU is the center

Most CPUs hide a small arithmetic unit behind a conventional encoding. Tomato flipped it: the bit-slice is a programmable logic plane with an adder wired through it.

II. The word

Building beats spreadsheets

When a 40-bit word doubled the explanation without doubling silicon on the bench, the answer was to fall back to 32-bit and ship what already routes.

III. The dialects

One machine, many names

Sixty-six ISA profiles map RV32, MIPS, x86, Z80 and others onto native opcodes. The hardware stays Tomato. The mnemonics are costumes.

The schematic works. The copper is the machine.

9bopcode 5brd 5brA 5brB 5brC 3bbank

The 32-bit wordLow bits overlay as COND, jump mode, or immediate

The usual path

A soft core. An FPGA toy first. One fashionable ISA. An ALU you never see. Decode as a blob in simulation.

This machine

74xx on a board you can probe. Dual-LUT slice per nibble. 512-row opcode ROM. Modular control sitting next to the hardware it drives.

Tomato started at the transistor — 3,488 MOSFETs, eight bits — and kept climbing. The opcode ROM names a practical subset of what the LUT plane can do. Matching every LUT pair to its own instruction was never the goal.

Decode travels with the datapath. One central microcode blob is elegant in simulation and miserable on a breadboard. Ribbons stay short when each board carries its own EEPROM.

On method

The constraint is copper, not the catalog

Tomato split decode onto small boards with local EEPROMs so each slice can be brought up alone. Clever only at the right scale: naïve shift-add multiply is slow; a Wallace tree eats the board. The answer was a priority-encoder loop that jumps over zero bits.

Digital schematic of Tomato: ALU, register file, modular control boards, memory, PC.
Fig. 2 — main.dig Control left, datapath center

The doctrine

Not a new computer. The old one, built by hand: 74xx, a ROM you can socket, and an ALU whose truth tables sit next to the adder.

That is the whole machine. Everything else is costume.

Diagram of the dual-LUT nibble: f(a,b,c) and g(a,b,c) into an adder with carry-in.

Playground · 07_alu

Turn the board. The parts are in the round.

Studio light · drag to turn · grab to hold

The slice in the round

KiCad GLB · open the board

Classified · boards 01–08

It started as a 270 millimetre transistor board. It is now copper in the mail.

1 of 8 lots in copper · 1 set aside · 6 still on the screen

KiCad 10 · 07_alu ordered August 2026 · two 8-bit slices

If you love computers because you like how they are built, not just what they run, the journal is the real entry point.

Welcome to Tomato 32 · the first page of the vault

From GitHub

512

Opcode ROM rows


The catalog is the machine

Nine-bit opcode. Fifty-one burns. The rest are nops until a program needs them.

5 / 5

Formal jobs · ALU only


Then the directed suite

SymbiYosys pass. Directed 476/476 against the unified ALU golden.

8 MHz

FPGA analysis · honest


Copper incoming

Bitstream closed. Oscillator is 100. Constraint was 8.

Letters

If you like how it is built, write.

Mail is optional.
The journal is not.

Source of truth

Or open GitHub.

Digital schematics, KiCad boards, opcode CSV, formal jobs, the vault. Authority lives in the repo — not a slide.

Open GitHub

CERN-OHL-P · Study, build, fork.