-
Notifications
You must be signed in to change notification settings - Fork 0
Verification Infrastructure
AccelGraph verifies only the graph layer. The pinned CAPI-Precis verification infrastructure owns libcxl, PSL, MMIO, command, response, data, credit, tag, error, completion, reset, and generic AFU-control behavior.
AccelGraph owns:
- graph package and C/SystemVerilog WED contracts;
- routing, reduction, vertex, edge, cluster, and scheduler engines;
- BFS, PageRank, SPMV, connected-components, and triangle-count kernels;
- real graph
cu_controlintegration across every active layout; - graph fixtures, independent goldens, scoreboards, mutations, and coverage.
Shared infrastructure changes land in CAPI-Precis first. AccelGraph then updates
the exact 01_capi_precis pin and regenerates its inventory and ownership
matrix.
| Algorithm | Active layout |
|---|---|
| BFS | CSR PULL BottomUp |
| PageRank | CSR PULL FloatPoint, FixedPoint, Quantized |
| SPMV | CSR PULL FloatPoint, FixedPoint |
| Connected components | CSR ShiloachVishkin |
| Triangle counting | CSR BinaryIntersection |
The three PageRank PUSH precision layouts are exact expected failures. Each is locked to its missing source list and normalized failure signature; an unexpected pass or changed failure fails the manifest gate.
The exact CAPI pin, package order, topology, vendor-IP boundary, and active or
expected-failure status are recorded in
03_capi_integration/accelerator_verification/rtl/manifests/layouts.json.
| Area | Status | Evidence |
|---|---|---|
| Package contracts, routing, reduction | Closed | 8 layouts, 48 declaration contexts, 19 hashes, 1,631,876 checks, 2,277/2,277 bins, 43/43 mutations |
| Vertex/edge/cluster/scheduler engines | Rerun paused | Last complete pass: 72 contexts, 8/8 mutations, all owner families closed; final full rerun after downstream-alfull grant gating was paused |
| Algorithm kernels and shells | Closed | 16/16 contexts, 28/28 mutations, zero coverage failures, exact census |
| Real graph top | Rerun paused | Last complete pass: 8/8 layouts, 3/3 mutations, zero coverage gaps, 100% reachable line/branch/toggle; final post-alfull rerun passed BFS before being paused |
| Multi-CU integration | Open blocker | ConnectedComponents passes full topology; PageRank PULL, SPMV PULL, and TriangleCount are limited to -K1 after failing the 24-vertex ring with multiple CUs |
| PageRank PUSH | Expected failure | Three manifests locked to the current seven-file source gap |
| Licensed ModelSim/Quartus/hardware | Release evidence | Not represented as a portable pass |
An area becomes closed only when its runner emits the exact OWNERS: set
expected by the canonical plan. A filtered run, missing context, stale
coverage denominator, surviving mutation, or known blocker suppresses that
claim.
The paused checkpoint preserves the last complete pre-alfull evidence and
the directed BFS post-change pass. It does not claim that the interrupted full
reruns completed.
03_capi_integration/accelerator_verification/
host/ graph host/runtime contract tests
sim/ verification wave configuration
rtl/
manifests/ layouts, inventory, coverage plan, module matrix
models/ vendor-IP verification boundaries
scripts/ pin, source, topology, and ownership validators
unit/
common/ package contracts, routing, reduction
engines/ vertex, edge, cluster, scheduler
algorithms/ kernels, shells, fixtures, precision models
integration/ real graph `cu_control` layout suites
Synthesizable design remains under accelerator_rtl. Verification sources do
not live in Quartus-selected production directories.
Every graph family supplies:
- Architecture context: exact layout, package set, topology, CAPI pin, and source hashes.
- Protocol assertions: legal requests, ownership, counters, reset, and bounded progress.
- Transaction scoreboards: vertex jobs, edge ranges, property reads, writes, tags, and completion conservation.
- Independent goldens: algorithm results derived without production RTL or permissive benchmark comparison code.
- Deterministic backpressure: named schedules with bounded stalls and eventual release.
- Functional and structural coverage: exact reachable denominator for every material layout context.
- Diagnostic mutations: representative ownership, address, extraction, arithmetic, writeback, and completion defects must be detected.
Liveness and algorithm correctness are separate claims. Reaching cu_done
without matching the independent result is a failure.
The graph layer adds five domains:
| Domain | Path |
|---|---|
graph.vertex_job |
Vertex fetch, filter, and dispatch |
graph.edge_job |
CSR range generation |
graph.edge_read |
Edge/property command and extraction |
graph.write |
Result command and data path |
graph.kernel |
Algorithm consumer and completion |
Required portable integration evidence includes:
- an all-ready baseline;
- every domain stalled independently;
- all 32 graph-domain stall masks with eventual release;
- near-full request and result queues;
- cacheline-half and tagged-response reordering;
- repeat launch and reset during active work.
The scoreboard proves that unstalled domains continue to progress and that no vertex, edge, update, command, tag, or completion is lost or duplicated. Permanent stalls are used only when a named timeout or reset is the expected result.
Cross-layer release testing combines graph masks with CAPI command, credit, response, read-data, write-buffer, ACK, MMIO, job, and reset profiles. Those campaigns extend, but never replace, deterministic graph P0 cases.
The portable fixture set covers:
- empty and single-vertex graphs;
- directed chains, stars, cycles, and disconnected components;
- duplicate edges and self-loops;
- one triangle, shared-edge triangles, and K4;
- weighted toy matrices;
- PageRank dangling/sink behavior.
Golden policies are explicit:
- BFS: exact reachability/distance and a legal predecessor parent;
- PageRank float: fixed iteration, initialization, sink, rounding, NaN/Inf, and absolute/relative tolerance policy;
- PageRank fixed/quantized: bit-exact scale, rounding, and overflow policy;
- SPMV: exact row/value result with explicit fixed/float arithmetic;
- Connected components: compare canonical partitions, not representative label identity;
- Triangle count: exact per-vertex intersection count and documented total normalization.
The existing OpenGraph comparator remains compatibility evidence; it is not the merge oracle.
The normative files are:
rtl/manifests/layouts.jsonrtl/manifests/rtl-inventory.jsonrtl/manifests/coverage-plan.jsonrtl/manifests/module-test-matrix.jsonrtl/unit/common/scenarios.jsonrtl/unit/engines/engine_scenarios.jsonrtl/unit/algorithms/suites.jsonrtl/integration/suites.json
Every active production module and package contract has exactly one family owner. Every distinct source hash runs in each materially different package or topology context. Wildcard source discovery, stale plan/inventory hashes, unclassified RTL, duplicate owners, missing contexts, and dirty CAPI pins fail the gate.
Common-looking files are not deduplicated until source identity and all applicable family suites prove replacement safety.
Closure requires 100% of reachable:
- statements and branches;
- FSM states and transitions where applicable;
- functional bins and assertion goals;
- control toggles;
- mapped layout/module contexts.
Tool-generated, parameter-constant, or structurally unreachable points are recorded by exact source, scope, signal or branch, metric, and reason. Exercising a declared unreachable point fails the census.
A waiver must include reason, owner, issue, metric, affected items, approval, and expiry. Missing data, denominator drift, stale exclusions, or an expired waiver fails closure.
make rtl-manifest-verification
make rtl-real-elaboration
make rtl-unit-common
make rtl-unit-engines
make rtl-unit-algorithms
make rtl-integration-graph
make rtl-unit-verification
make rtl-verification
make verifyThe three explicit engine/algorithm/integration targets resume the paused long
runs. make rtl-unit-verification executes only owners promoted to
implemented in the canonical plan. make verify combines those promoted
owners with the exact CAPI pin, host watchdogs, benchmark checks, and the small
GraphBrew smoke run. GitHub Actions sets RTL_VERIFICATION_REQUIRED=1.
Portable closure covers the eight active layouts. A release additionally records:
- AccelGraph, OpenGraph, and CAPI-Precis commits;
- graph file/hash, format, algorithm, direction, precision, reorder, cache, thread, and CU settings;
- ModelSim/Quartus versions and ordered manifest hashes;
- FPGA image and platform identity;
- result hash or independent comparison and elapsed time;
- the first failure diagnostic and trace when a gate fails.
PageRank PUSH remains unsupported until all three precision layouts elaborate with real RTL and pass the same unit, integration, golden, and coverage gates.