Skip to main content

field_machine_kernel

Function field_machine_kernel 

Source
pub fn field_machine_kernel<const KB: usize, const K: usize, const RA: usize, const IA: usize, const PB: usize, const TB: usize, const KT: usize>(
    _cr: ClockReset,
    i: MachineIn<KB>,
    q: Q<KB, K, RA, IA, PB, TB, KT>,
) -> (MachineOut<KB>, D<KB, K, RA, IA, PB, TB, KT>)
where W<KB>: BitWidth, W<RA>: BitWidth, W<IA>: BitWidth, W<PB>: BitWidth, W<TB>: BitWidth, W<KT>: BitWidth,
Expand description

State transition for FieldMachine.

One call handles every pipeline stage at once, each working on a different bundle: S1 for the context whose turn it is, S2 and S3 for the bundles issued one and two cycles earlier, S4 for the bank-L commit, and the write-back of whatever the units return this cycle. Values read from q are memory outputs addressed in the previous cycle; values written to d take effect at the next edge.