Skip to main content

cert_unit_kernel

Function cert_unit_kernel 

Source
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:

  1. root queues: up to two roots per slice;
  2. Merkle front (phase): Idle → Hashing (one level at a time, one compression per cycle) → Sign; one batch at a time;
  3. Ed25519 issue and completion: request with tag = front, file results by tag, check every tag;
  4. 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.