Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎01-08-2018

Are SDK Results repeatable for identical tool inputs?


I'm using SDK 2018.2 on CentOS 7, trying to build the Zynq 7000 FSBL as generated by SDK. I've gone into the source to remove __TIME__ and __DATE__ so that the code inputs are the same each build. 

After I build the FSBL, I assemble the FSBL.elf + bitstream.bit + (pre-compiled ) application ELF into a BOOT.bin and then compute the checksum of said BOOT.bin.

I'm able to get the checksum to be repeatable on my machine, but when I try to build on the configuration managed machine (same OS, same Vivado & SDK version) it consistently outputs a different checksum. On both machines I can reproduce Vivado 2018.2 bitstreams consistently every time.. but apparently not SDK outputs?

My question to Xilinx is this: According to AR 61599 , Vivado results *are* supposed to be repeatable for identical inputs (and OS, scripts, etc).. but does that not apply to SDK results for identical inputs? 

If it is still expected that SDK outputs are repeatable, what OS packages or libraries does SDK rely on? I know it ships with its own GCC, does it compile its own libraries? Libc and such?


Tags (3)
0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
Registered: ‎10-06-2016

Hi @risamu 

Did you compare both FSBL binaries to check if there are differences rather than using the BOOT.bin? I would expect bootgen to generate exactly the same boot binary image if all the inputs are identical. You could check easily using the same files in both machines just to do a quick check.

My guessing is that your ELF files are slightly different. You properly already removed the __TIME__ and __DATE__ macro usage from the FSBL code but there are still some host related information on your ELF file.

  1. Debug information: If you are building the debug configuration in SDK this is being compiled with -g3 option which includes debug related information on the ELF. This information contains paths to files that might be different on your host machines. Compile with no debug information using -g0
  2. Debugger symbol information: The ELF file contains debugger symbol information that contains host related data. Strip these symbols from the ELF using --strip-debug option in your linker options.
  3. Build ID: This is a unique identifier added to the ELF file. You can remove it using --build-id=none option.



Don’t forget to reply, kudo, and accept as solution.
0 Kudos