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.