Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 7/19/2024
Public
Document Table of Contents

A.4.2.2. HPS Boot First Mode

During HPS boot up, software can do the following in FSBL:

  1. At this point, the HPS is executing the FSBL, and the FPGA may or may not be operational.
  2. If the FPGA has been configured already, then go to step 3, otherwise do the following:
    1. Before executing the FPGA configuration, set h2f_gp_out[x] = 0.
      1. This allows the specific FPGA logic to remain inactive even after nINIT_DONE is asserted in the next step.
    2. Execute the FPGA configuration (for the first time).
      1. Some arbitrary delay after nINIT_DONE is asserted, the SDM ungates the signals, meaning that the h2f_gp_out[31:0] signals are driven with its register value, which is low, due to the step above.
  3. At this point, the FPGA is fully operational, except for any FPGA logic that is inactive due to h2f_gp_out[x] = 0.
  4. Choose your desired software milestone to tell the FPGA that it can interact with HPS driven signals, and then set h2f_gp_out[x] = 1. Here are some examples:
    1. After the PLL has been configured, set h2f_gp_out[x] = 1, which indicates to the FPGA logic that h2f_user<1:0>_clock is stable.
    2. After the bridge enable command is done, set h2f_gp_out[x]=1, which indicates to the FPGA logic that bridges are stable.
    3. After the GIC is configured by software to receive interrupts, set h2f_gp_out[x] = 1, which indicates to the FPGA logic that the HPS can receive interrupts.
  5. At this point, the HPS is fully operational, and the FPGA is fully operational.
  6. If you ever re-configure the Fabric via the HPS, then:
    1. Set h2f_gp_out[x] = 0.
    2. Execute the FPGA reconfiguration.
    3. Set h2f_gp_out[x] = 1.
  7. If there is an HPS reset event, then:
    1. Go to Step 1.