3.6.3 Exporting Digests
(Ask a Question)The stored component digests can be exported through a design system service or the JTAG or SPI-slave interface. This can be useful to determine the programming file used to program the device. The Read Digests system service returns the stored digests. For more information about running system services, see PolarFire FPGA and PolarFire SoC FPGA System Services User Guide. The stored Component Digests can also be exported with the DEVICE_INFO JTAG instruction. These Component Digests can be used to verify the programmed content of the device.
Recall that during programming file generation each bitstream component (for example, FPGA, eNVM and so on) is hashed (SHA-256) and the resulting digest value is retained along with the bitstream file. The Libero SoC design tool stores these Bitstream Payload Digests in bitstream log files. When the device is programmed, the device generates Component Digests and stores them in the device. A programming log file, that contains both the Bitstream Payload Digests and the Component Digests, is generated after the JTAG programming completes. After exporting the Component Digests, compare these to the values in the programming log file. If the exported Component Digests match those in the programming log file then the Bitstream Payload Digests in the programming log file are the digests of the file used to program the device. Compare these Bitstream Payload Digests to the bitstream log files to determine which bitstream was used to program the device. The following figure shows the digest traceability process.
The process is only valid, if the device was JTAG programmed because this process generates a programming log file. SPI initiator (IAP/Auto-Update) device programming does not generate any log files that can be used to trace device programming content.
