module systol_W1 (EXP) is ------------------------------------------------------------------------------- process MAIN [Y: WIRE] is hide X: WIRE in par X in GENERATOR [X] || ARRAY [X, Y] (W1, W2, W3) end par end hide end process ------------------------------------------------------------------------------- process GENERATOR [X: WIRE] is X (X1); X (X2); X (X3); X (X4); X (X5); X (X6); stop end process ------------------------------------------------------------------------------- process ZERO [Y: WIRE] is loop Y (0 of EXP) end loop end process ------------------------------------------------------------------------------- process ARRAY [X0, Y0: WIRE] (W1, W2, W3: EXP) is hide X1, X2, X3, Y1, Y2, Y3: WIRE in par X1, Y1 -> CELL [X0, Y0, X1, Y1] (W3, 3) || X1, Y1, X2, Y2 -> CELL [X1, Y1, X2, Y2] (W2, 2) || X2, Y2, Y3 -> CELL [X2, Y2, X3, Y3] (W1, 1) || Y3 -> ZERO [Y3] end par end hide end process ------------------------------------------------------------------------------- process CELL [X_IN, Y_OUT, X_OUT, Y_IN: WIRE] (W: EXP, in var K: NAT) is var X, Y: EXP in loop if K > 1 then X_IN (?X); X_OUT (X); K := K - 1 else X_IN (?X); Y_IN (?Y); X_OUT (X); Y_OUT (Y + (W * X)) end if end loop end var end process ------------------------------------------------------------------------------- end module