Timestamp bitstreams with USR_ACCESS
Automatically inserting a timestamp into a bitstream is really easy with the USR_ACCESS primitive. All you need to do is include the following constraint in one of the XDC files that you are using:
- set_property BITSTREAM.CONFIG.USR_ACCESS timestamp [current_design]
Vivado will then automatically create a bitstream with the USR_ACCESS set to an 8 character hexadecimal code that represents the time that the .bit file
was created. The time value is taken directly from the system of the computer on which the write_bitstream command is run.
The 32 bits of the timestamp are set out in the following format:
dddddd.MMMM.yyyyyy.hhhhh.mmmmmm.ssssss
- ddddd 5 bits for 31 days in a month
- MMMM 4 bits for 12 months in a year
- yyyyyy 6 bits for the last two digits of the year, 2000 to 2063
- hhhhh 5 bits for the hour in 24-hour format
- mmmmmm 6 bits for the minutes
- mmmmmm 6 bits for the seconds
You can check that the timestamp has been placed in the bitstream by consulting the Vivado implementation log, you should see a line like this:
Overwriting "timestamp" with "ED1F0296" for option USR_ACCESS
Once the FPGA has been programmed, you can see the timestamp by looking at the programmed device properties in Vivado Hardware Manager..
Figure 1: Timestamp displayed in Hardware Manager