To determine where to place kernels, two pieces of information are required:
- Resources available in each SLR of the hardware platform (.xsa).
- Resources required for each kernel.
With these two pieces of information you will then determine which kernel or kernels can be placed in each SLR of the target platform.
Keep in mind when performing these calculation that 10% of the available resources can be used by system infrastructure:
- Infrastructure logic can be used to connect a kernel to a DDR interface if it has to cross an SLR boundary.
- In an FPGA, resources are also used for signal routing. It is never possible to use 100% of all available resources in an FPGA because signal routing also requires resources.
Available SLR Resources
The resources available in each SLR of the various platforms supported by a release can be found in the Vitis Software Platform Release Notes. The table shows an example target platform. In this example:
- SLR description indicates which SLR contains static and/or dynamic regions.
- Resources available in each SLR (LUTs, Registers, RAM, etc.) are listed.
This allows you to determine what resources are available in each SLR.
Area | SLR 0 | SLR 1 | SLR 2 |
---|---|---|---|
SLR description | Bottom of device; dedicated to dynamic region. | Middle of device; shared by dynamic and static region resources. | Top of device; dedicated to dynamic region. |
Dynamic region Pblock name | pfa_top_i_dynamic_region_pblock _dynamic_SLR0 | pfa_top_i_dynamic_region_pblock _dynamic_SLR1 | pfa_top_i_dynamic_region_pblock _dynamic_SLR2 |
Compute unit placement syntax | set_property CONFIG.SLR_ASSIGNMENTS SLR0[get_bd_cells<cu_name>] | set_property CONFIG.SLR_ASSIGNMENTS SLR1[get_bd_cells<cu_name>] | set_property CONFIG.SLR_ASSIGNMENTS SLR2[get_bd_cells<cu_name>] |
Global memory resources available in dynamic region | |||
Memory channels; system port name | bank0 (16 GB DDR4) | bank1 (16 GB DDR4, in static region) bank2 (16 GB DDR4, in dynamic region) |
bank3 (16 GB DDR4) |
Approximate available fabric resources in dynamic region | |||
CLB LUT | 388K | 199K | 388K |
CLB Register | 776K | 399K | 776K |
Block RAM Tile | 720 | 420 | 720 |
UltraRAM | 320 | 160 | 320 |
DSP | 2280 | 1320 | 2280 |
Kernel Resources
The resources for each kernel can be obtained from the System Estimate report.
The System Estimate report is available in the Assistant view after either the Hardware Emulation or Hardware run are complete. An example of this report is shown below.
- FF refers to the CLB Registers noted in the platform resources for each SLR.
- LUT refers to the CLB LUTs noted in the platform resources for each SLR.
- DSP refers to the DSPs noted in the platform resources for each SLR.
- BRAM refers to the block RAM Tile noted in the platform resources for each SLR.
This information can help you determine the proper SLR assignments for each kernel.