Skip to main content

rhdl_ubft/kv/
mod.rs

1//! The application side of uBFT, authored in RHDL.
2//!
3//! The hash table keeps the upstream 64-bit key / 16-bit value contract.
4//! The legacy CPU PUT format cannot fit losslessly in a 32-bit consensus
5//! proposal; the frontend exposes a bounded 16-bit-key / 16-bit-value profile
6//! and rejects larger PUT fields. Read the module-specific contracts before
7//! connecting the two replicated decision streams.
8//!
9//! No routed resource, timing, or card performance is implied by these modules.
10//!
11//! Follow one operation through the source:
12//! 1. [`load::Load`] reads a CPU word without reading past the supplied buffer.
13//! 2. [`kvstore::LegacyKv16`] checks its representation and proposes a PUT.
14//! 3. The external consensus controller returns matching decision streams.
15//! 4. [`hash_table::HashTable`] applies the write atomically; only then can the
16//!    frontend return a successful PUT result. A GET reads the local table.
17//!
18//! These are separate components, not an already wired card top level.
19//! `integration_tests.rs` demonstrates their application-side handshake wiring.
20//! Start there for a concrete PUT, duplicate decision, upsert and GET trace.
21
22pub mod hash_table;
23pub mod kvstore;
24pub mod load;
25pub mod tabulation;
26
27#[cfg(test)]
28mod integration_tests;