Skip to content

KDI contract v0.4.0

Choose a tag to compare

@NickelLiang NickelLiang released this 18 Aug 21:29
· 12 commits to main since this release

Two independently addressed streams on one device-wide timebase, and KDI's registers moved off addresses the incumbent acquisition host writes for its own purposes.

Assets

file what it is
descriptor.json the contract — read this at build time; everything else is support
schema.json JSON Schema (draft 2020-12), to validate a descriptor without our code
manifest.json sha256 of every artifact + contract identity + the conformance result
kdi-vectors-0.4.0.tar.gz the golden vectors, as a set — only meaningful together

Re-read the vectors

v0.3 published one 64-byte adio_dig vector with rows == 1, where a row-major and a lane-major decoder emit identical bytes — so a decoder transposing rhd_matrix's 35 rows against its lanes passed the whole oracle while emitting plausible data at the wrong channel. That is a failure this project shipped once.

The bundle is now six frames, a streaming case, and 20 negatives across all 11 reject tokens. golden_frame.json inside the archive is the manifest that describes them; the .bin files are not independently interpretable. golden_wide is the one to read hardest: it uses descriptor strides and element widths no current device emits, so a decoder that compiles in today's values is caught here rather than by a future device.

Verification status

The data plane is verified on silicon: ~6,600 probe-runs across sample rates and lane masks, bounded and free-running, zero failures — bounding the failure rate under 0.045% at 95% confidence.

Row order is NOT bench-verified. That check needs a driven input, and with floating inputs both the amplifier rows and the slow aux rows are noise, so the comparison decides nothing. The authority is a golden chip-model simulation that drives known values. See CHANGELOG.md.