SKIP TO CONTENT
STRATA
02 · FABRICATION
3,912 NAND · 312 FF · 15 BLOCKS

From one primitive
to blockspace.

Every part of the machine is built from a single computational primitive. Nothing is assumed and nothing is hidden: the processor is constructed in layers, from boolean logic to a verifiable state machine, and each layer is countable in terms of the layer below it.

NAND is universal, so no second kind of gate is required anywhere above it. The cost of that decision is visible in the budget: two read ports account for 1,920 of the 3,912 cells, because a sixteen-to-one multiplexer is expensive when it is made of nothing but NAND.

01PRIMITIVEBoolean cell
One two-input cell. Universal, so nothing above it needs a second kind of gate.
1 NAND
02ARITHMETICAdder / logic / shifter
A ripple carry adder, a bitwise logic unit and a four stage barrel shifter, selected by one result multiplexer.
804 NAND · 4 FF
03REGISTERS16 × 16-bit
Sixteen words of addressable state with two read ports and one write port.
2,052 NAND · 256 FF
04MEMORY4 KB RAM
A byte addressed store with sixteen-bit access, a stack page and two mapped byte ports.
322 NAND · 8 FF
05CONTROLDecoder / matrix
A five to thirty-two decoder and a control matrix that asserts data path lines by phase.
734 NAND · 44 FF
06PROCESSORSTRATA-16
One machine. Deterministic, replayable, and advanced by an external edge.
3,912 NAND · 312 FF
THE PRIMITIVE1 CELL · UNIVERSAL
ABY0 010 111 011 10

One two-input cell whose output is low only when both inputs are high. Every gate in the machine — inverter, conjunction, disjunction, exclusive disjunction, multiplexer, latch — is composed from it.

THE ADDER16 × 9 = 144 NAND
A BCSUM · 16 × 9 NAND = 144

Sixteen full adders in a ripple carry chain. The carry out of bit fifteen is the carry flag; overflow is that carry differing from the carry into bit fifteen. Both flags come off the chain, not out of a formula.

THE BUDGETSUM OF THE NETLIST
ARITHMETIC8044 FF
REGISTERS2,052256 FF
MEMORY3228 FF
CONTROL73444 FF
PROCESSOR3,912312 FF

The processor layer is the whole netlist, not a block of its own. Sequential elements are counted separately because a flip-flop is not a gate: it is a state element built from gates that holds a value between two edges of an external clock.

THE WHOLE NETLIST15 BLOCKS · 3,912 NAND · 312 FF
BLOCKLAYERNANDFFBUDGETDERIVATION
ADDERARITHMETIC14416 × full adder (9)
LOGIC UNITARITHMETIC16016 × (AND 2 + OR 3 + XOR 4 + NOT 1)
BARREL SHIFTERARITHMETIC2564 stages × 16 × MUX2 (4)
RESULT SELECTARITHMETIC19216 × 4→1 MUX (3 × MUX2)
FLAG UNITARITHMETIC524Z: 15 × OR (3) + NOT (1) = 46 · N C V: 6 · 4 flip-flops
READ PORT AREGISTERS96016 × 16→1 MUX (15 × MUX2 = 60)
READ PORT BREGISTERS96016 × 16→1 MUX (15 × MUX2 = 60)
REGISTER FILEREGISTERS13225616 × AND4 (6) + 4 × NOT + 16 × AND2 (2) · 16 × 16 flip-flops
COUNTER INCREMENTCONTROL721212 × half adder (6) · 12 flip-flops
COUNTER SOURCECONTROL962 × (12 × MUX2)
OPCODE DECODERCONTROL26132 × AND5 (8) + 5 × NOT
MEMORY PORTMEMORY242address 3→1 MUX 96 · word assembly 64 · port compare 82
STACK POINTERMEMORY8088 × half adder (6) + 8 × MUX2 · 8 flip-flops
INSTRUCTION REGISTERCONTROL643232 × AND2 (2) load enable · 32 flip-flops
CONTROL MATRIXCONTROL24124 control terms × 3 × OR (3) = 216 · 5 phase lines × AND2 = 10 · 15 glue

Every row is arithmetic. If a derivation and its figure disagree, the datasheet is wrong: the totals printed anywhere on this site are the sum of this table, and the self-test refuses to pass if the flip-flop budget and the state element budget differ.