To check potential issues, use the clCreateProgramWithBinary()function. This function can identify issues that occur when programming the FPGA with the provided xclbin file. One scenario is that the program is not compatible with the currently programmed bitstream, which derived from the programmed firmware DSA on the configuration flash memory of the card.
There are several ways to determine if the DSA matches, but they all need to check the timestamp programmed into the bitstream of the programmed DSA against the xclbin, by checking the output of dmesg:
xclbin: TimeStamp:5a27f562 VBNV:
ROM: TimeStamp:5aace1cf VBNV:<board_name>
TimeStamp of ROM did not match Xclbin
If the xbinst installation area used to program the device configuration memory is accessible, the dsa bin in the firmware directory can be checked using the following command, which shows the timestamp programmed into the device configuration memory:
/opt/dsa/<board_name>/xbinst/firmware/10ee-6a90-4350-00000000M<#######>.dsabin
If the xclbin file is accessible, use the xclbinsplit option to split the xclbin into several files as follows:
•On the deployment machine (after sourcing setup.sh|csh), type the following:
$ $AMD_OPENCL/runtime/bin/xclbinsplit verify.xclbin
•Alternatively, use the following command:
$ xclbinsplit verify.xclbin
When the SDx tool is setup on the development machine, type the following:
$ $AMD_SDX/runtime/bin/xclbinsplit verify.xclbin
This produces a set of files for which the split-xclbin.xml lists the timestamp of the DSA that was used to create it:
<platform vendor="AMD" boardid="vcu1525" name="dynamic" featureRomTime="#####">
The output is in decimal representation. To convert to a hexadecimal representation:
$ printf "%x\n" 1512568162
5a27f562
Also, to look directly into the DSA archive file for the same information:
$ unzip $AMD_SDX/platforms/<board_name>/hw/<board_name>.dsa dsa.xml -d unzip_dsa
[...] inflating: unzip_dsa/dsa.xml
$ grep -i time unzip_dsa/dsa.xml
< ... FeatureRomTimestamp="#####">