Binary Formats

xclbin

xclbin container format is defined in file xclbin.h. Since 2017.1, tools use xclbin2 format also known as AXLF format. AXLF is an extensible, future-proof container of (bitstream/platform) hardware as well as software (MPSoC/Microblaze ELF files) design data. This unified container can hold outputs of our hardware compilers (SDAccel xocc) as well as software compilers (processor ELF formats for MPSoc/Microblaze). This allows for easier integration of embedded processors and SDx on the same device. It also has structures to describe the memory topology, acceleration kernel instantiations and kernel connectivity for each kernel.

The compiler generates unique xclbin file for every design compiled. The Vivado front-end tools programmatically populate this file (layout described in driver/include/xclbin.h, attached) and then the runtime & device drivers read the information and apply it accordingly.

The path to xclbin.h is runtime/driver/include/xclbin.h under SDx installation directory.

Feature ROM

Feature ROM is like a BIOS like table for FPGA which describes key properties of the device like its name and features enabled in the Shell of the platform. The format for the data in Feature ROM is defined in file xclfeatures.h. It a section of memory mapped BRAM memory which can be used for data sharing, error checking, functionality discover and optimizations in SDx. The Vivado tools will programmatically capture and populate BRAM memory in the platform during platform creation time. Runtime components like drivers read it and enable functionality in driver and also use the information to perform hardware/software compatibility checks.

The path to xclfeatures.h is runtime/driver/include/xclfeatures.h under SDx installation directory.