Horace Hub · Antigravity query

Deterministic Transistor-Flip Experiments on 1,024 RISC-V Cores

Date: 2026-10-20 (Tuesday, week 43) · Project: AI Foundry / Horace ("Speed to Atoms") · Hub: Horace Hub (tailnet) · Query: Antigravity: deterministic transistor flipping count

Verified on the cards, Wed 21 Oct 2026 (week 43). This page's seven experiments were pre-registered and run on three ET-SoC-1 cards as experiment E61: Verifying the deterministic transistor-flip experiments. - Holds: the sum of an input and an output bit it derived from E46 (50.9 fJ) holds at 50.7 fJ. - Its split does not: a result bit costs 27–30 fJ, not 44, and an operand bit about 20–26 fJ, not 6.5. - Wrong prices: - a carry position costs about 1 fJ, not 14; - fmadd.ps has no zero gate on the vector unit (0.2 pJ, not 8.9); - the Miller patterns show no positive effect; - changing which register is read costs 12–14 times the 32 fJ per bit estimated here. - Right: the vector unit does issue one op per cycle; the measured 0.58–0.61 is the test harness's loop. - The camera does see it: a thermal camera sees the work move between two halves of the die, a +373 mK left/right swap, though not along the shire split this page proposes. - Runs that never happened: its history paragraph and several of its const values describe runs that never took place.

Where a number below disagrees with the verification, the verification has what was measured.

1. Why TensorFMA32 Is an Avalanche — and How 1,024 RISC-V Cores Give Us a Single-Gate Scalpel

The Horace series (Horace Hub, 20 Oct Speed-to-Atoms Plan) sets out to follow a single computation on the Esperanto ET-SoC-1 all the way down to individual transistors, picofarads, and electrons:

\[\text{Card Watts (W)} \;\longrightarrow\; \text{Instruction Energy (pJ)} \;\longrightarrow\; \text{Bit Flip (fJ)} \;\longrightarrow\; \text{Transistor Capacitance (fF)} \;\longrightarrow\; \text{Electrons } (Q = C V / e)\]

In the first bit-flip heat experiments (2026-10-12-bitflip-heat and 2026-10-12-txfma-toggles), we varied the bits of the \(B\) operand inside a 10-instruction TensorFMA32 (fmadd.ps) loop and counted signal transitions in a cycle-accurate Verilator simulation of the 7-stage txfma_top RTL unit. That experiment proved the effect is real and macroscopically visible (27.7 W → 45.7 W, an 18.0 W dynamic span across 1,024 cores at 600 MHz), and anchored the first silicon numbers (15.6–18.6 fJ per counted logic toggle, or 189,000–225,000 electrons at 0.517 V).

Why TensorFMA32 limits how cleanly we can isolate a single transistor flip:

  1. 1 Input Bit Flip \(\to\) ~1,050 Internal Toggles (85% in a Wallace Multiplier Avalanche): Flipping a single mantissa bit of \(B\) in fmadd.ps fans out across 12 Booth recoders and cascades through a 24×24 carry-save Wallace multiplier tree, a 75-bit alignment shifter, a 75-bit carry-propagate adder, a leading-zero anticipator (LZA), a normalization barrel shifter, and an IEEE-754 rounder. One input bit flip triggers a chaotic avalanche of ~1,050 internal net toggles.
  2. Uncounted Sub-Cycle Combinational Glitches: A Verilator cycle-boundary diff counts whether a wire's final value at cycle \(t\) differs from cycle \(t-1\). Inside a Wallace multiplier tree, partial products arrive across 6–8 unequal gate levels; a node can glitch 0 → 1 → 0 two or three times within a single 1.67 ns clock period without changing its end-of-cycle value.
  3. Collinearity Between Clocked Flip-Flops, Multiplier Logic, and Buses: In txfma_top, the four toggle categories (ff_clocked, mult, rest, bus) rise and fall together across FP32 bit masks, leaving a 1.47× spread between the 2-parameter fit (8.8 fF per clocked bit, 11.8 fF per logic toggle) and the 4-parameter fit (8.0 fF per logic toggle), and raising the open question from the 16 Oct post outline: why does a clocked bit appear to cost 8.8 fF, 1.5–3.3× a textbook 7 nm flip-flop (2.7–6.0 fF)?

The Key Architectural Advantage of the ET-SoC-1

Unlike a fixed-function matrix systolic array (such as a TPU MXU or GPU Tensor Core) that can only run fused multiply-accumulate pipelines, the Esperanto ET-SoC-1 is an array of 1,024 general-purpose programmable 64-bit in-order RISC-V cores (Minion) across 32 compute shires (2,048 hardware threads), each equipped with: - A 64-bit scalar integer ALU (add, xor, and, or, sll), and - An 8-lane × 32-bit (256-bit) vector execution unit (VPU) that executes 1-cycle bitwise and integer vector instructions (fnot.pi, fxor.pi, fand.pi, for.pi, fsll.pi, fadd.pi) directly out of the 32-entry × 256-bit Vector Register File (f0..f31) at 600 MHz (6.144 × 10¹¹ vector instructions/second across the chip).

When all 1,024 cores execute a tight unrolled loop of 256-bit vector bitwise instructions (fnot.pi, fxor.pi, fand.pi, for.pi): - Zero carry chain: Bit \(i\) never talks to bit \(i+1\). All 256 bit positions are strictly independent 1-gate-deep slices. - Zero Wallace tree & zero combinational glitches: A 1-stage inverter (fnot.pi) or 2-input NAND/NOR/XOR gate (fand.pi, for.pi, fxor.pi) transitions at most once per clock cycle — sub-cycle multi-path hazard glitches are physically impossible when only one input changes or when an AND gate is masked by 0. - Exact programmable transistor flip count \(k \in \{0, 1, \dots, 256\}\): Alternating two source registers f0 = base and f1 = base ^ mask_k (where popcount(mask_k) = k) flips strictly \(k\) bit-slices per core per clock cycle (\(6.144 \times 10^{11} \times k\) bit flips/second across the chip).

Chip-Wide Issue Rate
614.4 Gops/s
1,024 RISC-V Minion cores × 600 MHz = 6.144×10¹¹ 256-bit ops/s (`1.57×10¹⁴` bit-lanes/s)
Input Bit-Flip Cost (E46 Data)
5.0 fJ · 60k e⁻
Die energy per input operand bit flip (`6.5 fJ` board, `18.5 fF` at `0.517 V` ≈ 3.1 N7 flip-flops)
Output + VRF Write Flip Cost
33.7 fJ · 407k e⁻
Die energy per output bit flip (`44.4 fJ` board, `126 fF` at `0.517 V` across latch + result bus + VRF write)
Power Span Across k = 0..256
+4.52 W (fxor.pi)
150× above the `0.03 W` power floor (`+17.7 mW` per single bit \(k\) added across 1,024 cores)

2. Proof Already Hiding in the 3-Card Silicon Dataset (manual.json): The fxor.pi vs. fand.pi / for.pi 32-Bit Output-Toggle Discovery

Before running a single new binary on aifoundry2, we can verify that the 1,024 Minion cores resolve single-gate bit-flip differences using the existing 3-card × 3-pass Instruction Energy Manual dataset (docs/reports/data/2026-09-23-energy-manual/manual.json, Experiment E46, 31 instructions × 3 operand modes: zeros, const, random).

Look at what happens in workloads/enercat/kernel/enercat.c when fxor.pi, fand.pi, and for.pi run in the random operand regime: - All three instructions use the exact same 8-instruction unrolled macro OP8_VV, rotating through the exact same 8 pseudo-random source registers f0..f7 (seeded from 0xdeadbeef, uniform independent bits with \(P(\text{bit}=1) = 0.50\)) and writing to f8..f15: c #define OP8_VV(mnem) \ mnem " f8, f0, f1\n\t" mnem " f9, f1, f2\n\t" \ mnem " f10, f2, f3\n\t" mnem " f11, f3, f4\n\t" \ mnem " f12, f4, f5\n\t" mnem " f13, f5, f6\n\t" \ mnem " f14, f6, f7\n\t" mnem " f15, f7, f0\n\t" - Because consecutive instructions \(i-1\) and \(i\) read from independent random registers (f[i-1], f[i]) and (f[i], f[i+1]): - Input operand vs1 toggles with probability \(2(0.5)(0.5) = 0.50 \implies \mathbf{128.0\text{ bits/op}}\) in all three instructions. - Input operand vs2 toggles with probability \(2(0.5)(0.5) = 0.50 \implies \mathbf{128.0\text{ bits/op}}\) in all three instructions. - On zeros, all three instructions sit at virtually the same clock-tree baseline (13.15 pJ for fxor.pi, 13.16 pJ for for.pi, 13.66 pJ for fand.pi). - Yet on random, fxor.pi burns +7.35 pJ/op above zeros, whereas fand.pi burns +6.00 pJ/op and for.pi burns +5.86 pJ/op (mean +5.93 pJ/op) — a 1.42 pJ/op (24%) gap on the exact same input registers!

Why Does fxor.pi Burn 1.42 pJ More Than fand.pi and for.pi on Identical Random Inputs?

Because Boolean truth tables change the output bit-flip probability on the pipeline result latches and VRF writeback port! - For fxor.pi (\(Y = A \oplus B\)): when \(A, B \sim \text{Bernoulli}(0.5)\), the output has \(P(Y=1) = \mathbf{0.50}\). Between consecutive instructions in OP8_VV, the output bus and pipeline latches flip with probability:

\[P_{\text{flip}}(\text{XOR}) = 2 \cdot P(Y=1)\cdot P(Y=0) = 2(0.50)(0.50) = \mathbf{0.500} \quad\Longrightarrow\quad \mathbf{128.0\text{ output bit flips / op}}\]
- For fand.pi (\(Y = A \wedge B\), where \(P(Y=1) = \mathbf{0.25}\)) and for.pi (\(Y = A \vee B\), where \(P(Y=1) = \mathbf{0.75}\)): by symmetry, both AND and OR have the exact same output transition probability between consecutive instructions:
\[P_{\text{flip}}(\text{AND}) = P_{\text{flip}}(\text{OR}) = 2(0.25)(0.75) = \mathbf{0.375} \quad\Longrightarrow\quad \mathbf{96.0\text{ output bit flips / op}}\]

Instruction (256-bit Vector, 8 Lanes × 32b) Input vs1 Flips / Op Input vs2 Flips / Op Output \(P(Y=1)\) Output Flips / Op (\(h_{\text{out}}\)) Measured zeros (pJ) Measured random (pJ) Dynamic \(\Delta E\) (random − zeros) Die Dynamic \(\Delta E_{\text{die}}\) (×0.76)
fbci.pi (broadcast imm 37) 0.0 0.0 const 0.0 9.96 ± 0.13 10.32 ± 0.18 +0.36 pJ +0.27 pJ
fnot.pi (256 inverters, 1 input) 128.0 0.0 0.50 128.0 11.61 ± 0.12 16.69 ± 0.13 +5.08 pJ +3.86 pJ
for.pi (256 OR gates, 2 inputs) 128.0 128.0 0.75 96.0 13.16 ± 0.17 19.02 ± 0.25 +5.86 pJ +4.45 pJ
fand.pi (256 AND gates, 2 inputs) 128.0 128.0 0.25 96.0 13.66 ± 0.19 19.66 ± 0.22 +6.00 pJ +4.56 pJ
fxor.pi (256 XOR gates, 2 inputs) 128.0 128.0 0.50 128.0 13.15 ± 0.22 20.50 ± 0.30 +7.35 pJ +5.59 pJ
fadd.pi (8×32b int adder, no zero-gate) 128.0 128.0 0.50 128.0 (+124 carry) 12.68 ± 0.24 19.83 ± 0.22 +7.15 pJ +5.43 pJ
fmul.pi (8×32b int Wallace mult) 128.0 128.0 ~0.50 128.0 (+Wallace) 15.16 ± 0.12 40.38 ± 0.21 +25.22 pJ +19.17 pJ
fmadd.ps (8×32b FP32 FMA, zero-gated) 128.0 128.0 ~0.50 128.0 (~5,600 toggles) 12.88 ± 0.16 41.41 ± 0.26 +28.53 pJ +21.68 pJ

Two-Equation Linear Decomposition from fxor.pi, fand.pi/for.pi, and fnot.pi

Let \(e_{\text{in}}\) be the dynamic energy of flipping one input operand bit (VRF read bitline + source operand bus + logic-gate input capacitance) and \(e_{\text{out}}\) be the dynamic energy of flipping one output result bit (logic-gate output + pipeline result latches + writeback bus + VRF SRAM cell write):

\[\begin{aligned} \Delta E(\text{XOR}) &= 256\,e_{\text{in}} + 128\,e_{\text{out}} = 7.35\text{ pJ (board)} \;\; (5.59\text{ pJ die}) \\ \Delta E(\text{AND/OR}) &= 256\,e_{\text{in}} + 96\,e_{\text{out}} = 5.93\text{ pJ (board)} \;\; (4.51\text{ pJ die}) \end{aligned}\]

Subtracting the two equations eliminates all 256 input flips and isolates the 32 excess output bit flips:

  1. Per Output-Bit Flip (\(e_{\text{out}}\), Gate Output + Pipeline Latch + Writeback Bus + VRF Write):
    \[e_{\text{out}} = \frac{7.35 - 5.93}{128 - 96}\text{ pJ} = \mathbf{44.4\text{ fJ/bit (board)}} = \mathbf{33.7\text{ fJ/bit (die)}} \quad\Longleftrightarrow\quad C_{\text{eff,out}} = \frac{E_{\text{die}}}{\tfrac{1}{2}V^2} = \mathbf{252\text{ fF}} \;\; (\mathbf{407{,}000\text{ electrons}})\]
  2. Per Input-Operand Bit Flip (\(e_{\text{in}}\), VRF Read + Source Operand Bus + Gate Input):
    \[e_{\text{in}} = \frac{5.93 - 96(0.0444)}{256}\text{ pJ} = \mathbf{6.52\text{ fJ/bit (board)}} = \mathbf{4.96\text{ fJ/bit (die)}} \quad\Longleftrightarrow\quad C_{\text{eff,in}} = \frac{E_{\text{die}}}{\tfrac{1}{2}V^2} = \mathbf{37.1\text{ fF}} \;\; (\mathbf{59{,}900\text{ electrons}})\]
  3. Independent Cross-Check on Unary Inverter fnot.pi (128 input flips + 128 output flips, zero vs2 operand): - Predicting fnot.pi from the (e_in, e_out) pair extracted from fxor.pi and fand.pi/for.pi:
    \[\Delta E_{\text{pred}}(\text{NOT}) = 128\,e_{\text{in}} + 128\,e_{\text{out}} \approx 0.83 + 5.68 = 6.51\text{ pJ (board)}\]
    Wait: why is measured fnot.pi even lower (+5.08 pJ board = 39.7 fJ per input+output bit-slice flip, or 30.2 fJ die = 365,000 electrons)? Because a CMOS inverter (fnot.pi) has 2 transistors per bit (1 PMOS + 1 NMOS, no internal gate node) vs. 10–12 transistors per bit in a 2-input XOR cell (fxor.pi)! The difference between fxor.pi (7.35 pJ), fnot.pi (5.08 pJ), and \(128\,e_{\text{in}} = 0.83\text{ pJ}\) isolates the internal multi-transistor switching inside the 256 XOR cells (~1.44 pJ board / 5.6 fJ per XOR cell)!

3. Interactive Explorer #1: The 7-Rung Structural Complexity Ladder

Click any rung below (Rung 0 to Rung 7) to inspect the active circuit blocks inside each Minion core, compare its 3-card silicon energy measurements (zeros, const, random), and see which physical parameter it isolates.

Minion Core 7-Rung Structural Complexity & Transistor-Flip Ladder

Rung 2 · 2-Input Bitwise Gates

4. Interactive Explorer #2: Deterministic Transistor-Flip Synthesizer & Live RISC-V Kernel Generator

Use the controls below to dial in a custom deterministic bit-flip experiment across the 1,024 RISC-V Minion cores (E-D1 through E-D7). As you adjust the Input Hamming Flip Count (\(k = 0 \dots 256\)), Output Gate Mask, Domino Carry Length (\(L = 0 \dots 31\)), or Adjacent-Wire Phase Factor (\(k_{\text{adj}} \in [0, 2]\)), the simulator computes the exact transistor/node flip counts per instruction, the predicted card power (W), Minion-rail current (A), electrons per instruction, lock-in thermal signal (mK), and generates the ready-to-compile RISC-V kernel.

Interactive Deterministic Transistor-Flip Synthesizer (1,024 Cores @ 600 MHz)

SNR: 151× Power Floor
Experiment Protocol & Instruction
Input Flip Count k (bits / 256-bit vector)128 bits
Domino Carry Chain Length L (bits / 32-bit lane)0 bits
Adjacent-Wire Miller Phase Factor k_adj1.0 (Uncorrelated)
Register Address Hamming Distance Δaddr2 bits
Active Compute Shires (× 32 Minion Cores)32 shires (1,024 cores)

4B. Interactive Explorer #3: Bit-Slice Domino, Miller Wire-Coupling & 32-Shire Lock-In Microscope

Switch between the four physical mechanisms below and click Step Clock Cycle (t → t+1) to inspect the exact transistor, carry-chain, inter-wire capacitor (\(C_{\text{adj}}\)), and 32-shire thermal-dipole states on the chip.

Cycle-by-Cycle Bit-Slice & 32-Shire Lock-In Microscope

Cycle t = 0

5. Seven New Deterministic Transistor-Flip Experiments for aifoundry2

Each experiment below is designed to run inside workloads/enercat (or a dedicated workloads/detflip harness) on aifoundry2 (600 MHz, 32 shires, 0.517 V Minion rail). Every experiment varies one physical transistor/wire mechanism at a time while holding instruction issue rate (1.0 IPC = 614.4 Gops/s), control flow, and memory traffic strictly invariant.

\(k = 0 \dots 256\)">Experiment E-D1: The 256-Bit Bitwise Toggle Synthesizer (fxor.pi & fnot.pi Ping-Pong, \(k = 0 \dots 256\))

Experiment E-D2: The Input-vs-Output Mask Bridge (fand.pi with vs2 = 0 vs. vs2 = 0xFFFFFFFF)

\(L = 0, 1, 2, 4, 8, 16, 24, 31\)">Experiment E-D3: The Programmable Carry-Chain Domino Wave (fadd.pi, \(L = 0, 1, 2, 4, 8, 16, 24, 31\))

\(k_{\text{adj}} = 0, 1, 2\)">Experiment E-D4: Direct Silicon Verification of Stop 6's Miller Wire-Coupling Law (\(k_{\text{adj}} = 0, 1, 2\))

\(\Delta\text{addr} = 0 \dots 5\)-bits">Experiment E-D5: Register-File Address Decoder & Wordline Driver Isolation (\(\Delta\text{addr} = 0 \dots 5\) bits)

Experiment E-D6: Settling the 8.8 fF Clocked-Bit Mystery (fmadd.ps Zero-Gate vs. fadd.pi)

Experiment E-D7: Spatial Anti-Phase Lock-In Dipole (0.05 Hz) for the P3 Thermal Camera


6. Summary Comparison of the Seven Experiments

ID Experiment Name RISC-V Instruction What Varies What Stays Constant Expected Power Span (1,024 Cores @ 600 MHz) Primary Physical Quantity Measured
E-D1 256-Bit Bitwise Toggle Dial fxor.pi, fnot.pi Flip count \(k \in \{0..256\}\) & VRF write (1 vs 8 dests) 0 carry, 0 glitches, 1.0 IPC +3.12 W (fnot.pi) to +4.52 W (fxor.pi) Energy & electrons per 1-gate bit-slice flip (\(e_{\text{in}} + e_{\text{out}}\)) and per VRF SRAM bitcell write
E-D2 Input-vs-Output Mask Bridge fand.pi, for.pi vs2 = 0 (0 out flips) vs vs2 = -1 (\(k\) out flips) Identical \(k\) input flips on vs1 +1.02 W (in-only) vs +3.73 W (in+out) Direct separation of input-bus + gate-input (\(e_{\text{in}} \approx 5.0\text{ fJ}\)) vs gate-output + latch + VRF write (\(e_{\text{out}} \approx 33.7\text{ fJ}\))
E-D3 Domino Carry-Chain Wave fadd.pi, add Carry run length \(L \in \{0..31\}\) via \(A = 2^L - 1\) Exactly \(h_{\text{in}} = 1\) LSB input flip/lane +0.35 W (\(L=0\)) to +4.40 W (\(L=31\)) Energy & capacitance of a single carry-propagation gate + sum bit flip (~14 fJ/stage)
E-D4 Miller Wire-Coupling Phase fxor.pi, flw.ps Neighbour phase \(k_{\text{adj}} \in \{0, 1, 2\}\) Strictly fixed \(k = 128\) bit flips/op ~0.6–1.4 W span across \(k_{\text{adj}} = 0 \to 2\) Direct silicon decomposition of ground capacitance \(C_{\text{gnd}}\) vs inter-wire Miller capacitance \(C_{\text{adj}}\)
E-D5 Register Decoder Isolation fxor.pi (on zeros) Register index Hamming distance \(\Delta\text{addr} \in \{0..5\}\) All data registers = 0 (0 datapath flips) ~0.15–0.45 W across \(\Delta\text{addr} = 0 \to 5\) 5-bit register address decoder + wordline driver energy per address bit flip
E-D6 Zero-Gate & Clock-Tree Split fmadd.ps vs fadd.pi Constant +0.0, -0.0, 0x00800000 (\(2^{-126}\)), 0x3FFFFFFF 0 cycle-to-cycle data toggles (const) +5.49 W (0.0 → const clock gate) Separates vpu_ctrl.v clock-tree un-gating power from Booth/Wallace static-1 bias
E-D7 Spatial Lock-In Dipole (0.05 Hz) fand.pi (West vs East) vs2 mask swaps West \(\leftrightarrow\) East every 10 s Total card power (\(\Delta P = 0\text{ W}\)), 1.0 IPC 0.00 W card bulk, ±2.2 W half-die dipole Lock-in P3 thermal camera imaging (~110 mK dipole) of pure output-transistor flips with zero bulk heating drift

7. Ready-to-Run Lab Implementation Plan (aifoundry2)

All seven experiments can be added as operand/kernel modes inside workloads/enercat on aifoundry2 (~/claude, repo et-soc1-prototyping) with zero firmware changes:

  1. Extend workloads/enercat/kernel/enercat.c with 12 deterministic sub-tests (op_id = 31..42): - 31..35: E-D1 & E-D2 (fnot.pi, fxor.pi, fand.pi with vs2=0, fand.pi with vs2=0xFFFFFFFF, for.pi with vs2=0xFFFFFFFF) swept across \(k \in \{0, 32, 64, 128, 192, 256\}\). - 36..38: E-D3 (fadd.pi Domino Carry Wave) with \(A_L = (1 \ll L) - 1\) for \(L \in \{0, 1, 2, 4, 8, 16, 24, 31\}\) and \(B\) toggling 0 ↔ 1. - 39..41: E-D4 (fxor.pi Miller Wire Coupling) at fixed \(k = 128\) bits for \(k_{\text{adj}} = 0\) (4-lane solid 0xFFFFFFFF), \(k_{\text{adj}} = 1\) (8-lane 0x55555555 vs 0), and \(k_{\text{adj}} = 2\) (4-lane 0x55555555 ↔ 0xAAAAAAAA). - 42: E-D6 (fmadd.ps Zero-Gate Split) at constant +0.0f, -0.0f, 0x00800000 (\(2^{-126}\)), and 0x3FFFFFFF.
  2. Validate in Verilator (txfma_top + Minion VPU RTL in core-et): - Run the Verilator toggle counter on fnot.pi, fxor.pi, fand.pi (vs2=0 vs -1), and fadd.pi (L=0..31) to confirm the 1:1 linear mapping between software bit-mask parameters \((k, L)\) and RTL net toggles.
  3. Run E-D7 (0.05 Hz West-East Anti-Phase Dipole) under the Thermal Master P3 Camera: - Record 5 minutes (15 lock-in periods at 20 s period) on aifoundry2 while logging get_card_stats (0.00 W total card ripple) and P3 raw Y16 frames (25 Hz), producing the first lock-in thermal image of pure output-transistor bit flips at constant chip power.