Hard Processor System Booting User Guide: Agilex™ 5 SoCs

ID 813762
Date 12/20/2024
Public
Document Table of Contents

6.4.1. HPS IO Hash Compatibility

You can ensure compatibility between bitstream sections in different designs primarily through the HPS IO hash. The Quartus® Prime Assembler calculates the HPS IO hash, producing a 64-character hexadecimal string using a cryptographic algorithm. This algorithm operates over the configuration data of specific IO banks, which are described later in this document.

If an HPS IO hash is incompatible, you must adjust one of the two designs. The next figure shows the error message that appears when U-Boot requests the second phase FPGA configuration and finds an incompatible HPS IO hash between the phase 1 and phase 2 FPGA designs.

Figure 40. Error Message for Incompatible HPS IO Hash between Phase 1 and Phase 2 FPGA Designs

Use the quartus_pfg tool to manually retrieve the HPS IO hash for phase 1 and phase 2 FPGA designs, as shown in the following table. The table shows the command with the necessary parameters and an example of the output.

Table 17.  Manually Retrieve the HPS IO Hash for Phase 1 and Phase 2 FPGA Designs
Design Command
Phase 1 quartus_pfg -i <jic file>
Phase 2 quartus_pfg -i <core.rbf>
Note: The above example shows an Agilex™ 7device, but the same methodology to extract the HPS IO Hash also applies to Agilex™ 5 devices.

You can also use the Configuration Debugger tool in Quartus® Prime Pro Edition to retrieve the HPS IO hash. Use the .jic file as the input for Phase 1 and the .core.rbf file as the input for Phase 2. The following figure shows an example of this process.

Figure 41. Configuration Debugger Tool
Note: The above example shows an Agilex™ 7device, but the same methodology to extract the HPS IO Hash also applies to Agilex™ 5 devices.
For the HPS to boot, it uses one of the following IPs to connect with the main memory, and device IO banks are needed to interface with the memory. In all cases, device IO banks are needed to interface with memory:
  • HPS EMIF
  • EMIF + NoC-only supported by Agilex™ 7 M-Series

The key point about the HPS IO hash is that the full contents of the IO banks contribute to it. For example, if the IO banks are used for the HPS EMIF IP, all placement, routing, and parameter settings within those banks must be identical between the two designs being compared. This includes any non-HPS-EMIF-related hard IPs, such as PLL and GPIO, that are placed in the same bank as the HPS EMIF IP.