pub fn cert_unit_kernel(
clock_reset: ClockReset,
input: CertInput,
q: CertUnitQ,
) -> (CertOutput, CertUnitD)Expand description
The certificate unit’s wiring.
Four independent machines share this kernel, connected only through counters and the two RAMs:
- root queues: up to two roots per slice;
- Merkle front (
phase): Idle → Hashing (one level at a time, one compression per cycle) → Sign; one batch at a time; - Ed25519 issue and completion: request with
tag = front, file results by tag, check every tag; - distribution (
stage): wait for the oldest batch’s signature, read both RAMs, offer to all slices until each has taken it.
Timing: the RAMs answer one cycle after their address; the lane and the Ed25519 core return results many cycles later, tagged.