Hard Processor System Booting User Guide: Agilex™ 5 SoCs

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

6.4.2.4. Clock Spine Differences

Using different clock spines for downstream logic in the HPS IO bank between the two designs can cause an HPS IO hash mismatch. The logic driven by a clock spine can include:

  • PLL reference clock, if assigned as global.
  • PLL reconfiguration mgmt clock.
  • All GPIO IP clocks, in both DDR (double data rate) and SDR (single data rate) modes, including the clock for the OE (output enable) path.
  • Register-packed register's clock.

If a clock in your design is driving any logic inside the HPS IO bank, this clock is relevant to the HPS IO hash calculation. To identify which clocks you need to analyze, use the Chip Planner tool and select the Clock Sector Region option in the Layer settings tab to find the clock sectors adjacent to the HPS IO banks.

For example, if the relevant clock sectors in a design are (1,3) and (2,3), a clock spanning regions (0,2) to (1,3) might be relevant for the HPS IO hash calculation due to the overlap in sector (1,3). This clock spine is relevant if the bank next to this clock sector is used for HPS EMIF IP. Conversely, a clock spanning regions (1,2) to (2,2) is not relevant for the HPS IO hash calculation because there is no overlap. The next figure shows this example, where the blue box represents the HPS bank and the red box highlights the two adjacent banks assigned to HPS IO (from HPS EMIF).

Figure 43. Chip planner identification of clock sectors adjacent to HPS IO banks
Note: Even if the clock sector is adjacent to an HPS IO bank, the clock spine only affects the HPS IO hash if the clock is driving a PLL or I/O placed in the HPS IO bank. Check your design RTL to identify which destinations the clock is driving.

After you identify the clocks relevant to the HPS IO hash calculation in both designs and find differences, use the "clock spine" setting in the QSF file to set the clock spine to the same value. The valid clock spine index range is from 0 to 31.

set_instance_assignment -name CLOCK_SPINE <index> -to <clock>