pub fn execute<const MR: usize, const TR: usize, const MC: usize, const TC: usize, const EX_QUEUE_LENGTH: usize>(
    cmd: Vr<GemminiCmd>,
    spad_readers: impl FnOnce([Vr<ScratchpadReadReq, { Dep::Demanding }>; 4]) -> [Vr<ScratchpadReadResp>; 4],
    spad_writers: impl FnOnce([Valid<ScratchpadWriteReq>; 4]),
    acc_readers: impl FnOnce([Vr<AccumulatorReadReq, { Dep::Demanding }>; 2]) -> [Vr<AccumulatorReadResp>; 2],
    acc_writers: impl FnOnce([Valid<AccumulatorWriteReq>; 2])
) -> Valid<U<{ _ }>>
Expand description

Execute the mesh computation.

This module is responsible for executing “execute”-type ISA commands, such as matrix multiplications. It includes a systolic array for dot-products, and a transposer.

The execute module is responsible for the following:

  • Take the command from the Reservation Station (cmd_raw)
  • Decode the command
  • Read the operands from the SRAM (By using spad_readers and acc_readers)
  • Run the mesh(systolic array)
  • Write the result back to the SRAM (By using spad_writers and acc_writers)