Program memory
Placed layout on ADAMAS-PDK-0. Scroll to zoom, drag to pan, hover a cell.
A processor is a machine that follows a list of simple instructions very fast. This one only counts to 15, like the very first microprocessor from 1971, but it is designed to be built from diamond instead of silicon, so it could work in places far too hot for normal chips.
An accumulator machine: every instruction reads or writes one 4-bit register (ACC). JNZ branches when ACC ≠ 0; CALL pushes the return address on a four-entry hardware stack, as the Intel 4004 did with three. Synthesized to p-channel enhancement/depletion cells, it needs about 1,600 to 1,700 transistors and roughly 1 mm² of diamond at 2 µm gates, running near 2.4 MHz (chapter E3).
The JavaScript model is checked against Icarus Verilog on 25 random 16-byte programs every test run (web/assets/sim/dia4.js vs circuits/digital/dia4.v). The layout below is the output of circuits/digital/place.py on the Yosys netlist, a row placement without routing; the OpenROAD flow is in circuits/digital/openroad.
Sources: [faggin1996] [liu2017] [meadconway1980] [rabaey2003] [wolf2013] [weste2011]