calyx
calyx copied to clipboard
Generate compact control
Currently, the systolic array generator naively generates a seq of par to enable the compute and data movement groups. However, this means that for the same systolic array, as the size of the input data increase, the control FSM gets massive. This is stupid.
The compiler should instead generate a while loop to represent the steady state of the computation (enable all PEs) and have some cleanup/startup control for flushing/filling the systolic array.
I bet if we do this, we'll have a smaller resource footprint than the Dahlia generated designs.
That sounds cool. Ideally, down the road, this could even mean that a fixed-size systolic array could process variable data sizes (i.e., with a run-time-specified loop bound).
This was done thanks to @calebmkim's effort on the static paper!