The following example utilization report for a VP1702 shows that the overall block RAM utilization is 56% with 57% in SLR0, 61% in SLR1, and 54% in SLR2. The block RAM utilization is evenly distributed across SLRs with reasonable utilization in each SLR, which allows the Vivado implementation commands more flexibility to meet timing.
Figure 1. Block RAM Section in Utilization Report
Figure 2. SLR Section in Utilization Report
AMD recommends assigning block RAM and DSP groups to SLR Pblocks to minimize SLR crossings of shared signals. For example, an address bus that fans out to a group of block RAMs that are spread out over multiple SLRs can make timing closure more difficult to achieve, because the SLR crossing incurs additional delay for the timing critical signals.
Device resource location or user I/O selection anchors IP to SLRs, for example,
GT, ILKN, PCIe, MRMAC and DCMAC dedicated blocks or memory interface controllers.
AMD recommends the following:
- Pay special attention to dedicated block location and pinout selection to avoid data flow crossing SLR boundaries multiple times.
- Keep tightly interconnected modules and IP within the same SLR. If that is not possible, you can add pipeline registers to allow the placer more flexibility to find a good solution despite the SLR crossing between logic groups.
- Keep critical logic within the same SLR. By ensuring that main modules are properly pipelined at their interfaces, the placer is more likely to find SLR partitions with flip-flop to flip-flop SLR crossings.