Array Partitioning
Contents
#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