SEU Mitigation User Guide: Agilex™ 5 FPGAs and SoCs

ID 813649
Date 11/25/2024
Public
Document Table of Contents

5.2.2. Fault Injection Debugger Command-Line Interface

You can run the Fault Injection Debugger at the command line with the quartus_fid executable, which is useful if you want to perform fault injection from a script.
Table 19.   Fault Injection Debugger Command-Line Interface Arguments for Agilex™ 5 Devices
Long Argument Short Argument Description
list l Display all installed hardware.
cable c

To select the cable number.

Run ‘jtagconfig’ to check the cable number.

The figure below shows the cable number for Agilex™ 5 device is 2.

auto a For auto detect operation. You must select only one cable for this operation.
index i Option to specify the active device or devices to inject soft error.

Full syntax:

@<device_position>=<file_path>#<operation>

where:

  • device_position is the position of active device counting from nearest to TDI. You can check the device position in the Quartus® Prime Programmer. The diagram shows the device position for the Agilex™ 5 device is 2.
  • file_path is the active device's programming file
  • operation is the operation you want to perform6
    • P—Program/Configure
    • I—Inject fault

Command example:

quartus_fid --cable=1 --index=@2=abc.sof#P
number n

Option to specify the number of soft errors to inject. If you do not specify the number of errors, the Fault Injection Debugger executes the interactive mode. In the interactive mode, you can select to inject fault, read EMR, scrub errors, or quit.

Note: You can inject up to four soft errors.

Command examples:

  • To inject two errors:
    quartus_fid --cable=1 --index=@2=abd.sof --number=2
  • To execute interactive mode:
    quartus_fid --cable=1 --index=@2=abc.sof
  • To inject double adjacent errors in interactive mode:
    quartus_fid --cable=1 --index=@2=abc.sof
    F <sector_location> <frame_location> <bit_location> + <frame_location> <bit_location>
smh s Option to specify the sensitivity map header file.

Full syntax:

@<device_position>=<file_path>#<region_info>

where:

  • device_position is the position of active device counting from nearest to TDI
  • file_path is the active device's .smh file
  • region_info is the intended .smh region information with the following format: <targeted_regions><allow non critical><allow overlapping>
    • targeted_regions = binary representation of the regions
      • Region 1 = 1
      • Region 2 = 2
      • Region 3 = 4
      • Region 4 = 8
      • Region 1 and 2 = 3 (from 1 + 2)
      • Region 1 and 3 = 5 (from 1 + 4)
    • allow non criticalN = allow injecting to non-critical bit
    • allow overlappingO = allow injecting to bits with overlapping regions

    Examples:

    • To inject region 1 or 3 only: region_info = 5
    • To inject region 2 or non-critical bit, region_info = 4N
    • To inject any bit that has region 4 or non-critical bit, the region_info = 8NO

Command examples:

  • To inject one error in region 2:
    quartus_fid --cable=1 --index=@2=abc.sof --number=1 --smh=@2=abc.smh#2
  • To execute interactive mode in a specific region:
    quartus_fid --cable=1 --index=@2=abc.sof --smh=@2=abc.smh#2
user u Option to specify the user specific fault.

Full syntax:

@<device_position>=<sector-frame-bit-pair ?>#1 <sector-frame-bit-pair ?>#2 ... <sector-frame-bit?>#n

where:

  • device_position is the position of active device counting from nearest to TDI
  • sector-frame-bit-pair is the frame bit and sector location where the error is injected.7

Command example:

quartus_fid --cable=1 --index=@2=abc.sof --number=1 --user="@2=0x003c 0x000d 0x0269"
lutram Option for LUTRAM checking during error injection activities.

Command example:

quartus_fid --cable=1 --index=@2=abc.sof --number=8 --lutram
time t

Option to specify the interval time between injections.

Example command:

quartus_fid --cable 2 --index=@1=abc.sof --time 10 --number 2
ecc e Option to specify ECC error injection.

Full syntax:

"@<device_position>=<sector_index> <RAM_ID>"

Command example:

quartus_fid -c 1 -i "@1=test.sof" -n 1 -e "@1=0x7 0x0"
ecc_list Option to list the sector index and RAM ID values.
safe_user x Option to inject errors to predefined safe locations.

Full syntax:

"@<device_position>=<sector_index <error_type>"

where the error_type values are:

  • 1—single-bit error
  • 2—double-bit error
  • 3—uncorrectable error

Command example:

quartus_fid -c 1 -i "@1=test.sof" -n 1 -x "@1=0x6 1"
seu_list Option to list the predefined safe locations CRAM bits.
6 If you do not specify any operation, the default operation is "inject fault".
7 The maximum pair of frame-bit depends on argument n.