Advanced SEU Detection Intel® FPGA IP User Guide

ID 683542
Date 11/11/2024
Public
Document Table of Contents

4.3.3. Performing a Lookup for SMH Revision 2 ( Stratix® V, Arria® V, and Cyclone® V Devices)

To perform a lookup into the sensitivity map header data using a bit, byte, and frame number from an EMR for Stratix® V, Arria® V, and Cyclone® V devices:
  1. Read the 32 bit frame information string for the frame number:
    • Address = <frame_info_base_address> + (frame*4)
    • Return value = (frame_info_data_offset, offset_map_array_index)
  2. Read the frame's offset map information. The return value is 16 bits.
    • Address = offset_map_base_address + offset array for current frame + offset data value for current byte and bit

    Where:

    • Offset array for the current frame = offset_map_array_index * offset_map_length
    • Offset data value for the current byte and bit = [(byte * 8) + bit] * 2
    • Return value = offset_map_value
  3. Read the 8 bit sensitivity value:
    • Address = sensitivity_data_array_base_address + frame_info_data_offset + (offset_map_value * sensitivity_data_tag_size / 8)
    • Return value = sensitive_bit_word[7:0]
  4. Read the sensitivity data tag. The offset map value provides the sensitive bit index. The return value for the sensitivity tag is sensitivity_data_tag_size bit length. A zero tag indicates that the bit is not critical for any region; a non-zero tag indicates an offset in the region map.

    sensitive_tag = (sensitive_data word >> tag_shift) & tag_mask

    Where:

    • tag_shift = (offset_map_value * sensitivity_data_tag_size)[2:0]
    • tag_mask = (0x1 << sensitivity_data_tag_size) - 1
  5. Read the region mask for a non-zero sensitivity tag only. The return value for the region mask is 16 bits.
    region_mask = region_map_base_address + (sensitivity_data_tag - 1) * 2