インテルのみ表示可能 — GUID: fqk1566295586501
Ixiasoft
4.5.2. センシティビティー・マップ・ヘッダーの検索
Advanced SEU Detection Intel® FPGA IPを使用して、.smh ルックアップを実行します。
開始する前に、SEUの緩和機能の設定中にEnable error detection checkオプションとGenerate SEU sensitivity map file (.smh) オプションがオンになっていることを確認してください。
Intel Agilex® 7センシティビティー・マップ・ヘッダーを検索するには、次の手順に従います。
- .smh ファイルのヘッダーを読み出し、一般的な .smh 情報を確認します。
Address = 0 Word 0 = SMH_signature Word 1 = (reserved, region_mask_size) Word 2 = sector_info_base_address
- 以下のセクター情報エントリーの3つの32ビット・ワードを読み出します。
- セクターエンコード方式32ビットアドレス
- セクター .smh データ32ビットアドレス
- 8ビットのセクター .smh タグサイズ (1、2、4、または8ビット)
- セクターによって使用されるASD領域ビットマスクの数である16ビットのASD領域マップサイズ
Address = sector_info_base_address + (sector_index*3) Word 0 = encoding_scheme_address Word 1 = sector_data_address Word 2 = (reserved, regions_map_size, smh_tag_size)
- エラー位置のフレーム・インデックスとフレーム内のビット位置については、次のセクターエンコード方式情報を読み出します。
- セクター・エンコード方式ヘッダー情報の最初の3ワードを読み出し、エンコード方式パラメーターを取得します。
Address = encoding_scheme_address Word 0 = (reserved, frame_encoding_map_size) Word 1 = frame_info_base_offset Word 2 = frame_encoding_base_offset
- フレーム番号の32ビットのフレーム情報文字列を読み出します。
Address = encoding_scheme_address + frame_info_base_offset + frame_index Word 0 = (frame_encoding_index, frame_data_offset)
- ビット位置のフレーム・センシティビティー・データの16ビット・インデックスを取得します。
int16* frame_encoding_map = encoding_scheme_address + frame_encoding_base_offset + (frame_encoding_map_size * frame_encoding_index) / 4; int16 tag_index = frame_encoding_map[bit_position];
- セクター・エンコード方式ヘッダー情報の最初の3ワードを読み出し、エンコード方式パラメーターを取得します。
- セクター .smh データから次のデータを読み出し、影響を受けるASD領域を確立します。
- 2 の手順からの、frame_data_offset および tag_index の smh_tag_size ビット長 .smh タグの場合、次を実行します。
int8* frame_data = (sector_data_address + 1 + (regions_map_size * region_mask_size + 31) / 32 + frame_data_offset*smh_tag_size); int8 sensitivity_byte = frame_data[tag_index * smh_tag_size / 8]; int8 smh_tag = (sensitivity_byte >> (tag_index * smh_tag_size % 8)) & ((0x1 << smh_tag_size) - 1);
- ゼロの smh_tag は、ビットエラーの位置がどの領域にとっても重要ではないことを示します。ゼロ以外のタグは、領域マップ内のインデックスを示します。smh_tag の領域マスクを取得するには、次を実行します。
int32* region_masks = sector_data_address + 1; int32 region_mask_offset = (smh_tag - 1) * region_mask_size; int32 region_mask_word = region_masks[region_mask_offset / 32]; int32 region_mask = (region_mask_word >> region_mask_offset % 32) & ((0x1 << (region_mask_size) - 1);
- 2 の手順からの、frame_data_offset および tag_index の smh_tag_size ビット長 .smh タグの場合、次を実行します。