wai-quantum-landscape-fpga: an FPGA board as an open reference member of wai.quantum.landscape/1 #677

Merged
dcharlot merged 16 commits from wai/quantum-landscape-fpga into main 2026-11-07 03:46:41 -05:00
Owner

wai/wai-quantum-landscape-fpga/ is an open reference design: an FPGA board as a member of wai.quantum.landscape/1, with the settle and sample kernels in programmable logic for up to 64 three-state cells. It includes the RTL, the register-level model the RTL is tested against, two testbenches, the Rust host that runs jobs on the board as a Member, the scripts, and the board's measurements. The board is a KV260 kit (xck26-sfvc784-2LV-c); the board and part are named as data in the README. It is classical throughout: three-state cells and a counter-based random stream, with no quantum effect. Main is merged in, #664 included.

Certification, and what the grown set costs

  • On 2026-11-06, under that day's set (vectors.json sha256 43e543a634e0ffdc…): the host certified both kernels bit-exact on the board. All 13 settle cases and all 42 chains matched bit for bit, and the battery passed 8 of 8 while its all-at-once control failed 7. The jobs passed 31/31, and the worked examples over 200 seeds agreed with the CPU reference 26/26.

  • Under the set on main now: uncertified for both kernels. The set now holds cases past the engine's capacity:

    • settle cases of 65 to 1,000 cells;
    • chains of 128 and 1,024 cells;
    • sampled fields up to 2^31 − 1;
    • a battery workload whose uncertain fields span 135,000.

    §5 lets a member decline only fields above 2^31 − 1, so the board must refuse these other cases with a sentence, and each refusal is a missed vector. Every case the engine can hold still gives the reference's bits: 21 of 21 settle cases and 227 of 227 chains on the model, which the testbenches hold the logic to. 13 cases are refused. This needs a decision: a bigger engine (tiled cells, wider registers, more than one table window), a capacity rule in §5, or landing the board as uncertified. The README states it either way.

  • AXI-Lite registers on M_AXI_HPM0_FPD at 0xA000_0000.
  • Write-list DMA in, and result write-back by DMA out.
  • A sequencer runs up to 256 chains in fabric, from start to result.
  • A signature over EMIO is read before every AXI access.
  • The board's lock is taken before any reload.
  • A reload of the same design under a job is seen, and the job's result is refused.

Measured on the board (board-level, one board, one meter; predictions committed first)

Power. Run minus halt, on the EMIO build, which has the same engine as the AXI builds:

measurement result rule outcome
settle job 162.0 ± 3.3 mW (13.0 nJ a settle, 0.88 pJ an accumulate) prediction 160 (130–200) within
sequential sampling 11.0 ± 1.8 mW (0.44 ± 0.07 nJ a cell draw) prediction 12 (4–30) within, but inside the instrument's floor, not relied on
idle 1.9 ± 4.0 mW prediction 4 (0–12) within, but inside the floor, not relied on
50 MHz 0.494 ± 0.019 of the 100 MHz power 0.5 within 2 SE passes
first null 8.1 ± 1.9 mW |Δ| < 2 SE fails
null repeat −1.9 ± 2.7 mW |Δ| < 2 SE passes
AXI settle checks 158.3 ± 4.4 and 166.7 ± 6.7 mW EMIO figure within 2 combined SE both pass
known answer, 4 h earlier 73.8 ± 10.3 mW 61.7 ± 6.5, within 2 combined σ passes, weakly

Joint statistics against exact enumeration (pre-registered, seed 2027): every case passed every rule, and all 1,000,000 chains equal the reference's.

Latency (medians):

  • EMIO register access: 930 ns to read, 790 ns to write.
  • AXI-Lite read: 230–240 ns.
  • AXI-Lite write, to its response: 250 ns.
  • Guarded read: 470 ns.
  • DMA: about 25 ns an entry after a 7.6 µs kick.
  • One chain of 8 cells × 4 sweeps: 14.6 µs over EMIO, 4.34 µs over AXI. The engine itself is busy for 139 clocks of that.

The review's 32 findings

All are answered in one commit; the commit message lists them.

  • Medium finding: load takes the lock before it reconfigures, the session check sees other runs of this tool, and the scripts do not hold the lock across their steps.
  • Same-design reloads are detected by the uptime counter and the reset BOUND register.
  • New tests: 33 on Linux, including a software AXI link, lowered_settle's five cases, and mutation-style faults.
  • CI:
    • gates on the change and requires tests to run;
    • denies clippy warnings;
    • checks every case the engine holds;
    • runs a job on the model;
    • builds on linux-arm64;
    • replays both testbenches in Icarus Verilog.
  • Build: the tool and block versions are enforced.
  • Records: a raw record of the builds and simulators.

Bitstreams

Not distributed. The tool's licence (Vivado 2026.1 EULA §3.1(3)C and §4(a)) limits a bitstream that holds the vendor's components to that vendor's devices, a condition Apache-2.0 cannot carry. The README gives the build steps instead, with each measured bitstream's sha256 and the pinned tool and blocks.

Not done

  • No hardware-in-the-loop CI, and one board with one meter.
  • A rebuild is not checked byte for byte.
  • The DMA pages are locked, not pinned. A move is caught after the fact, and a kernel-owned buffer would rule it out.
  • The guard's window is not bounded under preemption.
  • The four-engine build is EMIO only.
  • The copyright holder of the private code is not named in that repository; the relicensing note says what its code declared (CC0-1.0 for the host crate).

Provenance: from the private vqpu-edge work at 24bb5c8e, released under Apache-2.0 by the copyright holder's decision of 2026-11-05 (PROVENANCE.md).

🤖 Generated with Claude Code

`wai/wai-quantum-landscape-fpga/` is an open reference design: an FPGA board as a member of `wai.quantum.landscape/1`, with the settle and sample kernels in programmable logic for up to 64 three-state cells. It includes the RTL, the register-level model the RTL is tested against, two testbenches, the Rust host that runs jobs on the board as a `Member`, the scripts, and the board's measurements. The board is a KV260 kit (`xck26-sfvc784-2LV-c`); the board and part are named as data in the README. It is classical throughout: three-state cells and a counter-based random stream, with no quantum effect. Main is merged in, #664 included. ## Certification, and what the grown set costs - **On 2026-11-06, under that day's set** (`vectors.json` sha256 `43e543a634e0ffdc…`): the host certified both kernels `bit-exact` on the board. All 13 settle cases and all 42 chains matched bit for bit, and the battery passed 8 of 8 while its all-at-once control failed 7. The jobs passed 31/31, and the worked examples over 200 seeds agreed with the CPU reference 26/26. - **Under the set on main now: `uncertified` for both kernels.** The set now holds cases past the engine's capacity: - settle cases of 65 to 1,000 cells; - chains of 128 and 1,024 cells; - sampled fields up to 2^31 − 1; - a battery workload whose uncertain fields span 135,000. §5 lets a member decline only fields above 2^31 − 1, so the board must refuse these other cases with a sentence, and each refusal is a missed vector. Every case the engine can hold still gives the reference's bits: 21 of 21 settle cases and 227 of 227 chains on the model, which the testbenches hold the logic to. 13 cases are refused. **This needs a decision**: a bigger engine (tiled cells, wider registers, more than one table window), a capacity rule in §5, or landing the board as uncertified. The README states it either way. ## The AXI link (the default build) - **AXI-Lite registers** on `M_AXI_HPM0_FPD` at `0xA000_0000`. - **Write-list DMA** in, and result write-back by DMA out. - **A sequencer** runs up to 256 chains in fabric, from start to result. - **A signature over EMIO** is read before every AXI access. - **The board's lock** is taken before any reload. - **A reload of the same design under a job** is seen, and the job's result is refused. ## Measured on the board (board-level, one board, one meter; predictions committed first) **Power.** Run minus halt, on the EMIO build, which has the same engine as the AXI builds: | measurement | result | rule | outcome | |---|---|---|---| | settle job | 162.0 ± 3.3 mW (13.0 nJ a settle, 0.88 pJ an accumulate) | prediction 160 (130–200) | within | | sequential sampling | 11.0 ± 1.8 mW (0.44 ± 0.07 nJ a cell draw) | prediction 12 (4–30) | within, but inside the instrument's floor, not relied on | | idle | 1.9 ± 4.0 mW | prediction 4 (0–12) | within, but inside the floor, not relied on | | 50 MHz | 0.494 ± 0.019 of the 100 MHz power | 0.5 within 2 SE | passes | | first null | 8.1 ± 1.9 mW | \|Δ\| < 2 SE | **fails** | | null repeat | −1.9 ± 2.7 mW | \|Δ\| < 2 SE | passes | | AXI settle checks | 158.3 ± 4.4 and 166.7 ± 6.7 mW | EMIO figure within 2 combined SE | both pass | | known answer, 4 h earlier | 73.8 ± 10.3 mW | 61.7 ± 6.5, within 2 combined σ | passes, weakly | **Joint statistics against exact enumeration** (pre-registered, seed 2027): every case passed every rule, and all 1,000,000 chains equal the reference's. **Latency** (medians): - EMIO register access: 930 ns to read, 790 ns to write. - AXI-Lite read: 230–240 ns. - AXI-Lite write, to its response: 250 ns. - Guarded read: 470 ns. - DMA: about 25 ns an entry after a 7.6 µs kick. - One chain of 8 cells × 4 sweeps: 14.6 µs over EMIO, 4.34 µs over AXI. The engine itself is busy for 139 clocks of that. ## The review's 32 findings All are answered in one commit; the commit message lists them. - **Medium finding:** `load` takes the lock before it reconfigures, the session check sees other runs of this tool, and the scripts do not hold the lock across their steps. - **Same-design reloads** are detected by the uptime counter and the reset BOUND register. - **New tests:** 33 on Linux, including a software AXI link, `lowered_settle`'s five cases, and mutation-style faults. - **CI:** - gates on the change and requires tests to run; - denies clippy warnings; - checks every case the engine holds; - runs a job on the model; - builds on linux-arm64; - replays both testbenches in Icarus Verilog. - **Build:** the tool and block versions are enforced. - **Records:** a raw record of the builds and simulators. ## Bitstreams Not distributed. The tool's licence (Vivado 2026.1 EULA §3.1(3)C and §4(a)) limits a bitstream that holds the vendor's components to that vendor's devices, a condition Apache-2.0 cannot carry. The README gives the build steps instead, with each measured bitstream's sha256 and the pinned tool and blocks. ## Not done - No hardware-in-the-loop CI, and one board with one meter. - A rebuild is not checked byte for byte. - The DMA pages are locked, not pinned. A move is caught after the fact, and a kernel-owned buffer would rule it out. - The guard's window is not bounded under preemption. - The four-engine build is EMIO only. - The copyright holder of the private code is not named in that repository; the relicensing note says what its code declared (CC0-1.0 for the host crate). Provenance: from the private `vqpu-edge` work at `24bb5c8e`, released under Apache-2.0 by the copyright holder's decision of 2026-11-05 (`PROVENANCE.md`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A program in epuML states an energy over variables of three states; the module
reads it, runs it on the settling model's two kernels (a deterministic sweep in
whole numbers, a sampling sweep of one draw between two cut points, both the same
bits on every platform), checks every arrangement up to 16 variables, grades each
lowest one against the problem's own check, prices the joules at rates whose
sources are named, and runs simulated annealing, tabu search and greedy descent
on the same instance at the same budget. A member trait is the seam a GPU or an
FPGA board runs behind; the CPU reference is the only member here.

The feature is in quantum_engine and full, with no new dependency, and wai
re-exports it. The answer's schema is wai.quantum.landscape/1, and the conformance
set a member is held to is quantum-conformance/landscape/vectors.json, which a
test holds to the code.

The code came from a private crate declared BSL-1.1 at d46e63d7b, and is
relicensed Apache-2.0 by its copyright holder's decision of 2026-11-05
(src/quantum_landscape/PROVENANCE.md).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
run, sweep, compare, replay, examples, table, instance, call, corpus, vectors and
trial-assignment. A job that ran exits 0 whatever its verdict; a program that
cannot run exits 1 with one plain sentence and its line. The help is in the
zh-CN locale, and docs/llms-full.txt is regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
QuantumEngine.landscape seals an answer with the page's key and
landscape_answer gives the unsealed bytes the command line's `landscape call`
writes. A native test and a wasm32 test pin the worked examples' digest, and
wai-web-wasm.yml's counts rise by one each. demo/landscape.html is the page, and
two scripts compare its answers with the command line's, in Node and in Chrome.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/quantum-landscape.md states the job, the answer, how joules are
stated (priced, never called measured, sampling at its own rate, what the rate
leaves out), and the seam a GPU member or an FPGA board runs behind, with each
answer naming what ran it and how far it is held to the reference.

quantum-conformance/landscape holds the equal-budget table, published as it came
out (simulated annealing leads on the larger instances), the starting-temperature
data behind the default, a trial outside the job form, the browser build's parity
record, a stated result and the script that checks it. The docs page, the READMEs,
the version policy, the changelog entry and wai-quantum-landscape.yml come with it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge main into wai/quantum-landscape-emulator
Some checks failed
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum views in agent hosts / does this change touch it (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
wai-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
WAI Studio / does this change touch it (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
8368e3de6a
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum: the label names no product
Some checks failed
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum views in agent hosts / does this change touch it (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
wai-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
WAI Studio / does this change touch it (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
e84cf47863
"the planned e-QPU's settling model" becomes "the settling model of a planned
energy-based processor" in the label, the spec's quotation, the page and the
page's test; the rest stays word for word. The label is inside every answer, so
the digests over whole answers are pinned again: the corpus digests natively and
in wasm32, and the stated result's lines. The replay digests, the table and the
conformance set do not hold the label and do not change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The engine (rtl/) runs the settle and sample kernels of the energy-landscape job for up to 64
three-state cells in programmable logic. Couplings, fields, the cost and the cut-point table are
registers the host writes. The sample kernel takes the reference's draws: the engine counts
chain + j * 0x9E3779B97F4A7C15 and runs SplitMix64's mix in a nine-stage pipeline, and compares the
top 53 bits with cut points the host computes with the reference's cuts(), so the logic needs no
exponential. A field outside the table's window takes the threshold, and the host puts the window
over every field whose draw is not certain, or refuses the job.

The host (src/) implements wai_quantum::quantum_landscape::member::Member for the board, earns its
parity by running the conformance set's settle and chains vectors on the device at start, and
answers jobs through job::call_on, sealed. src/model.rs models the logic at the register port; the
testbench (tb/) replays a session recorded from it against the RTL and compares every read.

On the board at 100 MHz: the settle and chains vectors bit for bit, so both kernels are bit-exact;
the cell and coupled frequency tests with every draw equal to the reference's; the jobs vectors
14/14; every worked example over 200 seeds at its own temperature and at 0, answer for answer
identical to the CPU reference.

measurements/2026-11-06/PREDICTION.txt is committed before the power measurement it predicts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The crate is wai-quantum-landscape-fpga, beside the fabric's simulated FPGA member, which has its own
workflow. The README gives the board and part as data, what the design does and refuses, what it
takes to build, the build and load steps, the checks and the power protocol. No bitstream is
distributed: the vendor tool's licence limits a bitstream holding its components to that vendor's
devices, which Apache-2.0 does not carry, so the README gives the build and the sha256 of the
bitstream measured.

measurements/2026-11-05 holds the first version's raw power logs and the predictions committed
before them, unchanged. The workflow runs the unit tests and every check against the model of the
logic on each change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
From the engine review of #664:

- A job is bounded before any of it runs, the same on every host: the program's
  length, `steps` (now at least 1) and `restarts`, the `#! check` lines and their
  items, the numbers in them, and the fields after pins and quantisation. The
  operations of the whole job (the n² rows, the exhaustive truth, every run and
  every seed of a replay) and the memory it can hold are counted first; chains go
  to a member a batch at a time, so a run's memory does not grow with its starts.
- Quantised weights and pins are held to 2^40, so the exhaustive truth cannot
  overflow; the most negative whole number no longer passes through abs().
- The grammar is ASCII and strict (no `+`, no exponent in a temperature, spaces
  and tabs only), and a temperature string has a grammar of its own; the module
  reads JSON numbers to the nearest double with its own feature.
- A member takes every sweep's temperature from the host. Every answer it returns
  is checked: a fixed point rests, a two-cycle has period 2, a bound was reached,
  the work and the draws are what the schedule comes to.
- A member's parity is found, not declared: bit-exact on the settle and chains
  vectors, statistical on a battery of workloads that catches a kernel moving
  coupled cells at once, ignoring its schedule, sampling the last sweep or using
  a wrong table. Only the host's own kernels are "reference".
- Sums of energies are taken in 128 bits; balance checks in 128 bits.
- The conformance set pins the exponential, the schedule, the cut points over a
  wide grid, chains with every start of a run, and requests for each rule.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
From both reviews of #664: the limits and how operations and memory are counted;
the grammar; a pin's size; how weights are quantised; the plans, `minimize` above
temperature 0 among them; the state a two-cycle reports and what a settle's digest
holds; the schedule and the cut points to the operation; the exponential, in an
appendix; the host's checks of a member's answers; parity as found; the battery.
The joule line's 0.03 pJ is stated as what it is, a published 2014 figure for one
8-bit integer add, given for scale; the label says so in place of a modelled chip.
The provenance names the copyright holder that relicensed the code.

The page's refusals through Sweep and Compare reach the live status, the sweep
shows the board draw each priced figure leaves out, and the count under the
published table is of the rows it shows. reproduce.sh fails when the browser build
differs, skips a wasm-bindgen other than the lockfile's, and compares table.md and
the trial too. The workflow's paths take the command line's and the browser
crate's manifests and lockfiles, and its counts are the tests as they are.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: the stated result restated, and the page reads the scale figure by its name
All checks were successful
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 6m22s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 6m35s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 9m37s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 7m28s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 22m19s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 20m10s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 15m10s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 26m41s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 27m12s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 26m55s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m7s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 31s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m43s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 24m33s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m3s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (pull_request) Successful in 1m55s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 1m3s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m45s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 1m3s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m22s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m50s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m28s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m57s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 4m27s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h40m20s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m46s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 48s
wai-quantum service / service energy · linux packages (pull_request) Successful in 1m41s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 33s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 21m16s
f4575220b5
The label and the answer's joules changed, so the digests over whole answers
moved: the talks' lines, every example's lines and the corpus digest are stated
again, from runs of reproduce.sh on x86-64 Linux, arm64 Linux and macOS (with the
browser build), each giving every value. The page read the figure for scale by its
old name and could not show a run's card; the page check caught it, and now passes
77 of 77 with the browser build's answers the command line's bytes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Both written before either has run on the board.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The engine gets a second link to the processor (rtl/landscape_axi.v): its registers on an AXI-Lite
port, bulk loads (couplings, fields, cut-point tables, chain starts) as write lists the link reads
from DDR by DMA, and a sequencer that runs a batch of up to 256 chains in fabric, start to result,
with nothing from the processor between them. The link answers every access within a few clocks
whatever the engine is doing, and the host reads a signature over EMIO before every AXI access, so
a design replaced by another session is caught before an access could go unanswered.

The host runs a job's chains as one batch, segment by segment, every chain starting a segment with
its draw counter at the draw the reference takes next. A testbench drives the link over AXI-Lite and
its DMA from a memory model and checks every read against the register-level model.

src/exact.rs holds the sample kernel to the exact law of the whole state, enumerated over every
state of small workloads, not only to per-cell frequencies, with a control that has the right
marginals and independent cells and must be rejected. src/latency.rs times the processor-to-logic
accesses on the board. The session check no longer mistakes its own parent process for another
session.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The member trait now takes a schedule of temperatures and says nothing of its own parity. The
board runs each run of sweeps above 0 as sampled segments and each run at 0 in its T0 mode, sweep
k drawing from k*n + 1 whatever came before it, and a sweep at 0 right after sampled sweeps is the
engine's final sweep. Fields and a cost beyond the engine's registers are mapped, for sweeps at 0,
to ones that put every threshold on the same side of every coupling sum a cell can see, so the
settle is the same bit for bit. The checks follow the new set: the settle and chain cases, the cut
points, the statistical battery with the all-at-once control it must catch, and the jobs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The AXI build assumes the low-power-domain master at 32 bits and the high-performance port reading
64 bits a beat, as the board's boot sets them; a different width would put data on the wrong byte
lanes. The host reads both (ps-ports), touches no AXI address if the master's width differs, and
falls back to plain writes if the port's does. The sampled cells of the conformance check vary in
cost and temperature.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The processor's master and high-performance ports boot at 128 bits and loading a bitstream does not
change them, so the AXI build meets them with width converters and writes no processor register;
ps-ports reads them, and the host touches no AXI address if they differ. The registers move to
M_AXI_HPM0_FPD at 0xA000_0000, a port designs on this board have already used. A write master sends
a batch's results to DDR, a page at a time, and the testbench checks every word it writes. Writes are
now timed to their response. The class campaign's logs are added.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-quantum-landscape-fpga: the board's measurements of rtl version 2, on both links
Some checks failed
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m18s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 5m14s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 29s
wai-quantum service / service energy · linux packages (pull_request) Successful in 1m15s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 20s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 17m6s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m0s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 10m51s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 4m6s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 12m22s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m35s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 1m43s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 4m43s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 2m42s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 1m14s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (pull_request) Successful in 2m12s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m58s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 4m29s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 59s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 28m39s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 21m24s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 5m8s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 5m38s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 50s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 11m25s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
5cc90ef292
The class campaign on the EMIO build, the checks on it and on both AXI builds, the joint-statistics
test as registered, the processor-to-logic latency, and the power checks of the AXI builds against
the EMIO classes. One of the two nulls failed; the README says what that leaves unclaimed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The lock and reloads. load takes the board lock before it reconfigures, and the session check sees
other runs of this tool and its scripts (their own parents excepted), so a reload waits for the job
that holds the board. The scripts do not hold the lock across the steps they run. A reload of the
same design, which passes the signature and the ID, is seen by the engine's uptime counter and its
reset BOUND register: the engine checks both before it takes a workload or a table as loaded and
after every job, and refuses a result read across a reload. A batch that comes back short, and a
sampled chain whose sweep count is wrong, are refused.

The AXI port. It checks the port's write width as well as its read width; it fills a result page
with the illegal cell pair before a write-back and refuses a result still holding it; it refuses a
transfer whose page moved. It is written against two traits, so a software link tests it off the
board: the guard, the DMA, the sequencer's count, the write-back's layout, dropped accesses.

Tests. lowered_settle's five cases and 300 random workloads with fields to 2^40 against the
reference; the joint test counts against the chains requested and checks the control's cell family.
CI gates on the change, requires tests to run, denies clippy warnings, certifies the model member,
runs a job on it, builds on linux-arm64, and replays both testbenches in Icarus Verilog
(scripts/run_tb.sh). The names check reads .v, .tcl, .xdc and .dat files.

The build. The tool version and each block's version are enforced; the multi-core build refuses the
AXI link. The documents. The latency table says how each row was timed; the engine's share of a
chain is its own clock count; the sampling energy carries its error and its floor; the known answer
is placed in time; the step response is reported; derived figures are marked; the scope of the
meter, the guard's window and the DMA's locked pages are stated; provenance says what the private
code declared; old names are gone; the build and simulator results have a raw record.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Main's set now holds settle cases to 1,000 cells, chains to 1,024 cells, sampled fields to
2^31 - 1 and a battery workload whose uncertain fields span 135,000, and a member may decline only
fields above 2^31 - 1. The member declines that and nothing else (takes). What the 64-cell engine
cannot hold it refuses with a sentence; member::beyond says why, and the checks hold the board to
the reference's bits on every case it holds and to a refusal on every case it does not. On the
model: 21/21 settle cases and 227/227 chains held, 13 cases refused, so the host certifies both
kernels uncertified under the current set. The README, the changelog and CI say so; the board
was certified bit-exact under the set of 2026-11-06, when its measurements were taken. The build
record carries the testbenches' results on the new session, in Icarus Verilog and xsim alike.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge main into wai/quantum-landscape-fpga
Some checks failed
wai-quantum energy-landscape GPU members / members · framework-128gb (pull_request) Has been skipped
wai key · the real keychain / does this change touch it (pull_request) Successful in 31s
wai key · the real keychain / the real keychain · macos (pull_request) Has been skipped
wai-quantum energy-landscape jobs / does this change touch it (pull_request) Successful in 8s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (pull_request) Has been skipped
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (pull_request) Has been skipped
wai-quantum energy-landscape jobs / the same bits · macos (pull_request) Has been skipped
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (pull_request) Has been skipped
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (pull_request) Has been skipped
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Successful in 3m23s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 13m22s
wai-quantum on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Successful in 5m33s
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Successful in 6m16s
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Successful in 4m55s
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Successful in 7m50s
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Successful in 7m44s
energy meters on real hardware / RAPL and NVML on jetson-hub (pull_request) Successful in 40s
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Successful in 11m33s
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Successful in 8m34s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m0s
energy meters on real hardware / sink decode table · RAPL on jetson-hub (NVML surveyed) (pull_request) Successful in 2m54s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 49s
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Successful in 21m48s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 3m2s
wai-quantum-landscape-fpga reference design / the member against the model of the logic, and the logic against the model · linux, release (pull_request) Successful in 4m9s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m15s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Failing after 5m10s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 7m5s
wai-quantum-landscape-fpga reference design / the board's code on the board's processor's architecture · linux-arm64, release (pull_request) Successful in 1m24s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Failing after 6m43s
887aca937d
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!677
No description provided.