Skip to main content

Module ubft

Module ubft 

Source
Expand description

The uBFT modes’ shared parts: the replica the services sit beside, the baseline they replace, and what a consensus slot spends on crypto.

uBFT (YiJiang0908/ubft_new) is an HLS kernel on the U280. On its slow path every replica signs a certificate share for the slot and checks peers’ shares until it holds a quorum of 2f + 1: its own plus 2f peers’. uBFT tolerates f = (n − 1) / 2 faults among n replicas (ubft.cpp: shared.f = (node_num - 1) / 2), not the usual (n − 1) / 3, so its quorum is nearly every replica. Today it calls the Vitis Security library’s Ed25519 inline, so each signature stalls the state machine. The services of this repository (rhdl_ed25519_scalable_core::ubft, DSig’s ubft module) sit beside it on AXI streams instead.

In a uBFT mode the planner plans only uBFT modules (Mode::admits): the UbftReplica historical allowance comes off the budget, and the services divide the rest. The headline uses serial_slot_crypto_us: one signature followed by 2f sequential peer verifications. The overlapping model in slot_crypto_us is a separate scenario, not the implemented controller schedule.

Structs§

UbftReplica
The uBFT replica the services sit beside: a fixed allowance off the budget, sized by UBFT_DESIGN_LUT and UBFT_DESIGN_DSP (an upper bound: the shell is included). Plans as itself, with no rate.

Enums§

Baseline
What the baseline achieved in a comparison.

Constants§

UBFT_BASELINE_MHZ
Compiler-selected kernel frequency after timing failure (down from 300 MHz), not runtime clock readback. Time conversions using it are projections.
UBFT_BASELINE_SIGN_CYCLES
The baseline: Vitis Security L1 Ed25519 signing inside uBFT, cycles of its own wrapper in HLS 2023.2 C/RTL cosimulation (key cached).
UBFT_BASELINE_SIGN_LUT
HLS’s LUT estimate of the baseline signer.
UBFT_BASELINE_VERIFY_CYCLES
The baseline’s verification, cycles (same cosimulation).
UBFT_BASELINE_VERIFY_LUT
HLS’s LUT estimate of the baseline verifier.
UBFT_DESIGN_DSP
DSPs of uBFT’s whole routed design.
UBFT_DESIGN_LUT
uBFT’s whole routed design, platform shell included: “LUT as logic” from its link report. An upper bound for the replica alone (its artifacts carry no per-kernel utilization).
UBFT_REPLICAS
Replica counts the headline reports: uBFT’s natural sizes 2f + 1 for f = 1, 3, 5 (it supports up to 12 replicas).
UBFT_TARGET_SPEEDUP
The user’s target: rhdl_ubft completes correct operations at least this many times faster on the card than the baseline.

Functions§

baseline_slot_us
The baseline’s crypto time per slot in µs: one inline signature, then 2f verifications one after another, at uBFT’s clock.
quorum_verifies
Peers’ shares a replica of n must verify for a quorum: 2f with uBFT’s f = (n − 1) / 2 (ubft_machines.cpp waits for 2f + 1 shares, its own included).
serial_slot_crypto_us
Current replica’s serial request model: it waits for a peer verdict before issuing the next verification. Extra service capacity is not automatically exploitable by that controller. Network, fetch and framing costs are omitted.
slot_crypto_us
Crypto time of one slow-path slot on a chip that delivers d, in µs: sign the share, then verify 2f peers’ shares. Verifications overlap in the verifier: the first takes its idle latency, the rest follow at the verify side’s rate. A model: it ignores network time and assumes the peers’ shares arrive together.
speedup
The speedup of ours_us per completed operation over baseline, and whether it meets UBFT_TARGET_SPEEDUP. None when there is no meaningful ratio (the baseline stalls, or ours did not complete).