The total number of Block-RAM (BRAM) resources required by all kernels is more than the number available on the device.
Arrays in the source code are automatically mapped to BRAM, which is an internal memory resource that can be configured in a variety of sizes.
Almost every design built within an FPGA requires the use of some BRAM for storage of coefficients, buffering of data, and a variety of other uses. Using the pragma HLS array_partition can result in RTL with multiple registers instead of one large memory. Using the pragma HLS array_reshape can reduce the number of BRAM consumed while providing parallel access to the data. These can reduce the resources required for all kernels.
There are a few ways to reduce the number of block RAMs:
- BIND_STORAGE pragma or directive
- ARRAY_PARTITION pragma or directive
- ARRAY_RESHAPE pragma or directive