-
Notifications
You must be signed in to change notification settings - Fork 1
Stabilization Plan
Abdullah edited this page Aug 20, 2026
·
3 revisions
The stabilization boundary is the CAPI-Precis host/AFU protocol. A release is acceptable when host-only tests pass, AFU waits are bounded, completion reset is observed before reuse, errors return non-zero, and the simulator or FPGA run produces matching output data.
| Boundary | Previous risk | Control | Acceptance evidence |
|---|---|---|---|
| Device open | Null handle passed onward | Correct handle validation | Missing device fails immediately |
| WED attach/MMIO map | Return values ignored | Checked calls and cleanup | Injected setup failure returns non-zero |
| libcxl call | PSLSE or detach could block inside one synchronous call | Monotonic process watchdog | Deliberately blocked call terminates |
| AFU/CU configuration | Unbounded repeated writes | Idempotent writes plus bounded status poll | Timeout test and successful status transition |
| CU execution | Infinite busy poll | Progress-aware stall and absolute deadlines | Counter-progress and frozen-counter tests |
| Error register | Error printed but run continued | Error acknowledgement and failed process | Non-zero exit with register snapshot |
| Completion reuse | Next CU started before reset drain | ACK plus completion/status clear verification | Repeated-job simulation or hardware trace |
| Regression target | Build failures hidden by grep
|
Direct test status propagation | Deliberate compile or data mismatch fails make test
|
| Matrix verification | Output buffer started non-zero and one CPU path was a stub | Zeroed output and complete tiled-transposed reference | All CPU matrix checksums match |
| Matrix completion | Host used one matrix-wide target for every clipped tile | Derive cu_stop from the launched tile's clipped row and column counts |
Full, thin-row, thin-column, and corner tiles complete without false stalls |
| RTL protocol | Host evidence could not detect an internal publication/reset violation | Bind bounded monitor to cached_afu
|
Verilator pass/negative tests and ModelSim bind |
-
Host baseline: run
make accelerator-verificationandmake teston a standard Linux host. - Compile boundary: compile CAPI host sources against the selected libcxl headers for both simulator and hardware flags.
- Simulator liveness: run a small memory-copy workload, then repeated jobs, with short diagnostic deadlines.
- Hardware canary: run one healthy workload per CU image and preserve status/progress evidence.
- Stress: sweep sizes and repeated launches, including a duration longer than the stall window while counters continue to move.
- Release: record the image, commit, timeout overrides, platform, workload, result checksum, and elapsed time.
| Layer | Required checks |
|---|---|
| Host unit | Defaults, overrides, invalid values, progress, stall, timeout, completion, device error |
| OpenMP | Existing memory-copy correctness test |
| Simulator | Setup, configuration, progress, completion ACK/reset, output comparison |
| RTL monitor | Configuration acceptance, monotonic progress, done publication, ACK stability, reset clear, error register |
| FPGA | Same protocol checks plus image identity and device error register |
| Repetition | Back-to-back launches without stale completion or status |
Deploy to one accelerator first. Increase deadlines only from measured healthy runs; never disable them. Roll back the host binary and FPGA image together if the protocol or output checksum changes. Keep the first failing diagnostic line and associated image/workload metadata for comparison.