#pragma HLS array_partition ...

  • Factor - how many splits
  • Modes
    • block - [1-4], [5-9]
    • cyclic - [1,3,5,7,9], [2,4,6,8]
    • complete - [1], [2], [3], ...
  • dim(ension)- which part of the variable

Notes

  • Cyclic is good for parallel sequential access
  • Complete will use the max resources (since it fully splits everything)


Task latency = size + 5


Aside: Dual-port RAM


For instances where there are only two accesses, we could get away with using a dual-port ram and not need to partition the array completely.

If we are using a partitioning factor of f=2, we only have at most 2^f = 2^2 = 4 IOs (assuming using dual-port), provided we keep II=1

Larger factors would require muxes and incur an increased II