Agilex™ 7 SEU Mitigation User Guide

ID 683128
Date 10/10/2025
Public
Document Table of Contents

4.7. Fault Injection and Read EMQ via HPS

This section provides the steps to perform fault injection via HPS Linux or Fault Injection Debugger tool and retrieve the Error Message Queue (EMQ) content from the HPS interrupt message in the HPS Linux.
Note: Before you begin, use the Golden System Reference Design (GSRD) design and ensure that it can boot up successfully.
  1. Download the Agilex™ 7 Golden Hardware Reference Design (GHRD) Quartus project.
  2. To turn on the SEU setting:

    Turn on Enable error detection check, Allow SEU fault injection, and Enable internal scrubbing setting in the Device and Pin Options dialog box in the Quartus® Prime software. Recompile the design and obtain the .sof file with the SEU setting enabled.

  3. To add FSBL into .sof file, run the quartus_pfg command with the following syntax in the command-line.
    quartus_pfg -c <input_hps>.sof  <update>.sof -o hps_path=<u-boot-spl-dtb>.hex
  4. Program the <update>.sof file by using Quartus Programmer or Fault Injection Debugger tool.
  5. Inject the error at the predefined location using one of the following methods:
    • Using the Fault Injection Debugger tool with JTAG connection: Send the INSERT_SAFE_SEU_ERROR [0x41] mailbox command to initiate the fault injection.
    • Using HPS Linux: Run the following command in the HPS Linux console to perform the fault injection.
      echo C > /sys/kernel/debug/edac/cram-seu/altr-trigger
  6. Observe the the SEU interrupt message in HPS UART print out.
    For example:
    EDAC Altera: SEU CE: Count =0x1, SecAddr=0x30000, ErrData=0x300740C9
  7. Decode the response by referring to Error Message Bit description.
    For example:
    SecAddr = 0x30000 refers to the SEU error at sector 0x3, ErrData = 0x300740C9 refers to the corrected single bit error at bit position 0x3A, frame 0xC9.