インテル Stratix 10 SEU (Single Event Upset) 緩和 ユーザーガイド
Intel Stratix 10 SEU緩和の概要
インテル® Quartus® Prime開発ソフトウェアで提供されている機能の中には、SEUの影響、つまりソフトエラーの検出と修正、またデザインに対するSEUの影響の特性評価を行うためのものがあります。また、一部のIntel FPGAには、エラーの検出と修正に役立つ専用の回路が含まれています。
Intel FPGAのメモリーは、ユーザーロジック(ブロックメモリーとレジスター)およびConfiguration Random Access Memory (CRAM) 内にあります。 インテル® Quartus® Prime ProgrammerではCRAMのロードには .sof ファイルが使用されます。その後CRAMでは、すべてのFPGAロジックと配線のコンフィグレーションが行われます。SEUでCRAMビットを検出した場合、デバイスでCRAMビットを使用していなければその影響は無害ですが、影響が深刻になる可能性があるのは、SEUによって重要なロジックまたは内部信号配線が影響を受けた場合です。
多くの場合、デザインでSEUが発生する可能性は低いので緩和は必要ありませんが、複数の高密度コンポーネントを含むシステムなどの非常に複雑なシステムでは、エラー率が重要なシステムデザインの要素になる可能性があります。システムに複数のFPGAが含まれていて、非常に高い信頼性と可用性が必要な場合は、ソフトエラーの影響を考慮し、この章で説明する手法で、このような種類のエラーを検出して修復してください。
インテル Stratix 10 デバイスでのSEUの緩和
インテル® Stratix 10® SEU緩和機能がシステムに有益な点は次の通りです。
- システムをつねに正常に機能させます。
- SEUイベント起因のシステム誤動作を防止します。
- システムに対してクリティカルなSEUイベントを処理します。
エリア | SEU緩和アプローチ |
---|---|
誤り検出訂正 | 誤り検出訂正 (EDC) 機能を有効にすると、CRAM SEUイベントが検出され、CRAM内容が自動的に訂正されます。 |
メモリーブロック誤り訂正コードのサポート | インテル® Stratix 10® では、M20Kメモリーブロックのデザインに特別なレイアウト手法と誤り訂正コード (ECC) を使用しており、SEU Failures in time (FIT) レートをほぼゼロに低減します。 |
SEUセンシティビティー・プロセッシング | センシティビティー・プロセッシングを使用すると、CRAMビット位置のSEUが、コンパイルされたFPGAのデザイン・ビットストリームファイルの機能に対してクリティカルであるかどうかを識別することができます。 |
フォールト・インジェクション | フォールト・インジェクション機能を使用すると、SEUイベントに対するシステムの反応を検証することができます。これにはCRAMステートを変更してエラーをトリガーします。 |
階層的タグ付け | センシティビティー・プロセッシングおよびフォールト・インジェクションの補完機能。SEUをレポートし、デザインロジックの特定部分へのインジェクションを制約します。 |
トリプル・モジュール・リダンダンシー(TMR) | TMR手法は、ステートマシン等のクリティカルなロジックで実行することができます。 |
コンフィグレーションRAM
FPGAでは、ユーザーロジック(バルク・メモリーおよびレジスター)内とConfiguration RAM (CRAM) 内の両方のメモリーを使用します。CRAMは、ユーザーデザインがロードされたメモリーであり、デバイス内の全てのロジックと配線のコンフィグレーションを行います。SEUでCRAMビットを検出しても、そのCRAMビットを使用していなければ影響は無害です。一方で、機能エラーが生じる可能性があるのは、内部信号配線やデザインの一部のルックアップ・テーブル・ロジック・ビットが影響を受けた場合です。
メモリーブロックの誤り訂正コードのサポート
M20KブロックとeSRAMブロックのみでECC機能をサポートしています。
ECC機能を使用する場合、次の機能は使用できません。
- バイトイネーブル
- コヒーレンシー読み出し
M20Kブロック
M20Kブロックの場合、ECCでは、シングルエラー訂正 、ダブル隣接エラー訂正、およびトリプル隣接エラーを32ビットワードで実行しますが、2ビット以上の非隣接エラーの検出または訂正は保証されていません。
M20Kブロックに内蔵されたECCのサポートは、×32幅シンプル・デュアルポート・モードで有効です。
- ECC機能を使用すると、M20Kの動作は、ECCシンプル・デュアルポート以外のモードに比べて低速になります。ただし、オプションのECCパイプライン・レジスターを出力デコーダーの前で有効にすると、パイプラインECCモード以外のモードと比べて、より高いパフォーマンスが実現可能です。ただし、1サイクルのレイテンシーが追加されます。
- e (エラー) と ue (訂正不可エラー) の2つのECCステータスフラグ信号によって、M20K ECCステータスが表示されます。ステータスフラグは、メモリーブロックからの通常の出力の一部です。ECCを使用すると、この2つパリティービットへのアクセスはできません。これは、ECCステータスフラグによってパリティービットが置き換えられるからです。
eSRAMブロック
eSRAMブロックの場合、ECCではシングルエラー訂正とダブルエラー検出を64ビットワードで実行します。
- 2つのECCステータスフラグ信号の c{7:0}_error_correct_0 (エラー訂正済み) および c{7:0}_error_detect_0 (エラー検出済み) では、eSRAM ECCステータスを示します。
トリプル・モジュール・リダンダンシー
TMRを使用すると、シングルSEUではデザインのダウンタイムはなくてすみます。システムで障害のあるモジュールが検出された場合、システムではエラーをスクラブするためにそのモジュールを再プログラムします。誤り検出訂正時間は、SEUイベントのMTBFより何桁も少なくなります。したがって、システムではソフト割り込みを修復して、別のSEUによってTMRアプリケーション内の別のインスタンスが影響を受けないようにします。
TMRの欠点は、ハードウェア・リソースのコストです。3倍のハードウェアが必要になり、加えて投票ロジックも必要です。このハードウェア・コストを最小限に抑えるために、TMRの実装は、デザイン内の最もクリティカルな部分のみで実行します。
複数の方法を使用して、TMRデザインの生成のために、指定機能の自動複製および必要な投票ロジックの自動合成を行います。Synopsysでは自動TMR合成を提供しています。
故障率
Soft Error Rate (SER) またはSEUの信頼性は、Failure in Time (FIT) で表されます。1FITユニットは、操作10億時間あたり1つのソフトエラーの発生です。
- たとえば、5,000個のFITがあるデザインでは、10億時間(または8,333.33年)で平均5,000のSEUイベントが発生します。SEUイベントは統計的に独立しているため、FITは加法的です。1つのFPGAに5,000個のFITがある場合、10個のFPGAには50,000個のFIT(または8,333年間で50Kの障害)があります。
もう1つの信頼性測定法は、平均故障時間 (MTTF) です。これは、FITまたは1/FITの逆数です。
- 標準故障単位で5,000のFIT / 10億時間の場合、MTTFは、
1 /(5,000/1Bh) = 10億/5,000 = 200,000時間 = 22.83年です。
1 /(5,000/1Bh) =1 billion/5,000 = 200,000 hours = 22.83
SEUイベントはポアソン分布に従います。平均故障間時間 (MTBF) の累積分布関数 (CDF) は指数分布です。故障率計算の詳細については、 Intel FPGA Reliability Reportを参照してください。
中性子SEUの発生率は、高度、緯度、およびその他の環境要因により異なります。 インテル® Quartus® Prime開発ソフトウェアで提供しているSEU FITレポートは、ニューヨーク州マンハッタンの海抜でのコンパイルに基づいています。JESD 89A仕様でテスト・パラメーターを定義しています。
インテル Stratix 10 CRAM用の緩和手法
この章では、 インテル® Stratix 10® CRAM用のSEU緩和手法について説明します。エンベデッド・メモリーのECC機能の詳細については、 インテル® Stratix 10® Embedded Memory User Guideを参照してください。
CRAMエラー検出と訂正
Intel® Stratix® 10デバイスの機能では、オンチップEDC回路でソフトエラーを検出します。SEUイベントによって生じたエラーが訂正可能な場合は、 Intel® Stratix® 10内部スクラビング機能を有効にすると、FPGAによってエラーが訂正されます。
エラー・メッセージ・キュー
インテル® Stratix 10® デバイス・エラー・メッセージ・キューでは、エラーメッセージの保管をSEUエラーの検出時に行います。エラー・メッセージ・キューには、異なるメッセージを最大4つまで格納できます。各エラーメッセージには、セクターアドレス、エラーの種類、およびエラーの位置に関する情報が含まれています。エラー・メッセージ・キューの内容を取得するには、次のツールを使用します。
- Fault Injection Debuggerツール
- Advanced SEU Detection Intel® Stratix® 10 FPGA IP
名前 | 幅 | ビット | 説明 |
---|---|---|---|
セクターアドレス | 32 | 31:24 | 予約済み |
23:16 | エラーのあるセクターのアドレス | ||
15:4 | 予約済み | ||
3:0 | セクター1で検出されたエラー数 | ||
エラー位置2ビットポジション | 32 | 31:29 | ビット31:29 - エラーの種類:
|
28 | 訂正ステータス:
|
||
27:24 | 予約済み | ||
23:12 | フレーム内のビット位置 | ||
11:0 | 行インデックスとフレーム・インデックスの組み合わせ |
SEU_ERRORピンの動作
エラー・メッセージ・キューにエラーメッセージが1つ以上含まれている場合、 SEU_ERROR 信号はHighになります。キューにエラーメッセージがあると、信号はHighの状態のままです。 SEU_ERROR 信号がLowになるのは、SEUエラー・メッセージ・キューが空のときだけです。これは、すべてのエラーメッセージをシフトアウトした後に発生します。
SEU_ERROR ピン機能に設定して、SEU_ERROR ピンの動作を観察してください。
内部スクラビングとプライオリティー・スクラビング
内部スクラビング
内部スクラビング機能を有効にした場合でも、リカバリーシーケンスの計画が必要です。スクラビング機能では、CRAMアレイを復元し、意図したコンフィグレーションにすることができますが、ソフトエラーの検出と訂正との間にはレイテンシーがあります。このレイテンシー中は、 Intel® Stratix® 10デバイスがエラーで動作している可能性があります。
プライオリティー・スクラビング
SEUセンシティビティー・プロセッシング
動作中のFPGAをリコンフィグレーションすると、そのFPGAを使用しているシステムに重大な影響を与えます。SEUリカバリーの計画時には、FPGAのステートを現在のシステムのステートと整合させるために必要な時間を考慮してください。たとえば、内部ステートマシンが不正なステートにある場合、リセットが必要になることがあります。さらに、周囲のロジックでもこういった想定外の動作の考慮が必要になることがあります
SEUでは、実装されたデザインで使用していないCRAMビットに影響を与えることがよくあります。十分に利用されているFPGAデザインであっても、コンフィグレーション・ビットの多くは使用されていません。これは、デザインで使用していないロジックおよび配線ワイヤを制御しているためです。実装方法によりますが、最も密に使用されているデバイスでも使用されているのはCRAMビットの40%だけです。つまり、SEUイベントのうち40%のみで対応が必要であり、SEUイベントの60%は無視できるということです。使用しているビットはクリティカル・ビットとして判断され、使用していないビットはクリティカルではないビットと判断されます。
さらに、実装されたデザインのうちの一部が、FPGA機能で使用されていない場合もあります。例として挙げられるのは、テスト回路が実装はされているがデバイスの動作には重要ではない場合や、その他のクリティカルではない機能で、ログには記録されるが再プログラムやリセットの必要がない場合です。
SEUセンシティビティー・プロセッシングの実行には、Advanced SEU Detection IPコアを使用できます。
Advanced SEU Detection IPコア
Advanced SEU Detection IPコアでは、以下の機能を提供しています。
- Secure Device Manager (SDM) と通信してSEUイベントを検出し、SDMからコマンドまたはレスポンスを送受信してSEUエラーをレポートします。
- Sensitivity Map Header (.smh) リビジョン4ファイルを読み出し、オンチップまたはオフチップ・ルックアップ・センシティビティー・プロセッシングが可能になり、デバイスで発生したSEUエラーのクリティカリティが、 .smh ファイルで指定された領域に基づいてレポートされます。
Advanced SEU Detection IPコアを使用すると、実行時にSEUエラーのセンシティビティー・プロセッシングを実行できます。Advanced SEU Detection IPコアでは、次の実装をサポートしています。
- オンチップ・ルックアップ・センシティビティー・プロセッシング - センシティビティー・プロセッシング・ソフトIPでは、エラー位置のレポートおよびルックアップを提供します。
- オフチップ・ルックアップ・センシティビティー・プロセッシング - マイクロプロセッサーなどの外部ユニットでは、エラー位置の探索を実行するのにエラー・メッセージ・キュー情報を使用します。
オンチップ・ルックアップ・センシティビティー・プロセッシング
Advanced SEU Detection IPコアでは、エラー・メッセージ・キューの内容を読み出し、シングル・ビット・エラーの位置をセンシティビティー・マップと比較します。この検査によって、障害がデバイスの動作に影響を与えるかどうかを判断します。
オンチップ・ルックアップ・センシティビティー・プロセッシングは次のとおりです。
- SEUエラーが発生すると、 SEU_ERROR がアサートされます。
-
Advanced SEU Detection IPコアでは、SEUエラーメッセージをSDMから取得します。 注: Advanced SEU Detection SEUエラーメッセージの取得中にシステムでエラーが発生すると、IPコアでは sys_error 信号がアサートされます。
-
Advanced SEU Detection IPコアによってセンシティビティー・プロセッシングが開始されます。この処理中、
- Advanced SEU Detection IPコアによって busy 信号がアサートされます。
- Advanced SEU Detection IPコアでは、 .smh ファイルを読み出します。メモリー・アクセス・ロジックおよび外部メモリーの情報を入力してください。
-
Advanced SEU Detection IPコアでは、busy 信号をアサートして、センシティビティー・プロセッシングの完了を示します。また、SEUエラーのクリティカリティを、次の信号を介してレポートします。
- critical_error
- noncritical_error
- regions_report
- seu_data (オプション)
オンチップ・ルックアップ・センシティビティー・プロセッシング
Advanced SEU Detection IPコアでは、エラー・メッセージ・キューの内容を読み取り、システム・プロセッサーに情報を提示します。プロセッサーによって、障害がデバイスの動作に影響を与えるかどうかを判断します。システム・プロセッサーでは、アルゴリズムを実装し、.smh に対するルックアップを実行します。
オフチップ・ルックアップ・センシティビティー・プロセッシングは次のとおりです。
- SEUエラーがあると、 SEU_ERROR がアサートされます。
-
Advanced SEU Detection IPコアでは、SDMからSEUエラーメッセージを取得し、内部 FIFOに格納します。注: Advanced SEU Detection エラーメッセージの取得中にシステムでエラーが発生すると、IPコアでは sys_error 信号がアサートされます。
- Advanced SEU Detection IPコアでは、 seu_avst_valid 信号をアサートして、エラーメッセージが有効であることを示します。
- 外部センシティビティー・プロセッサーでは、Advanced SEU Detection IPコアの seu_avst_valid 信号を監視する必要があります。有効なエラーメッセージがある場合、プロセッサーでは、Avalon-STインターフェイスを介してSEUエラーの読み出しを開始し、センシティビティー・マップに対してルックアップを実行し、SEUエラーのクリティカリティを判断します。
オフチップ・ルックアップ・センシティビティー・プロセッシングの動作フロー
SMHルックアップ
.smh ファイルは、デザイン上のCRAMビット設定のハッシュを表します。CRAMに関連するグループは、センシティビティー・アレイ内のシグナルビットにマッピングされます。SEUイベント中、アプリケーションでは .smh に対してルックアップを実行し、ビットの使用を見極めます。ビット位置情報によって、動作システムの有効なソフトエラー率を低減することができます。
次の基準でデザイン内のCRAM位置のクリティカリティが決定されます。
- 配線 - 使用された配線ラインを制御するすべてのビット
- アダプティブ・ロジック・モジュール (ALM) - ALMをコンフィグレーションすると、IPコアではそのALMセンシティブに関連するすべてのCRAMビットを考慮します。
- ロジック・アレイ・ブロック (LAB) 制御ライン - LABでALMを使用すると、IPコアではLABセンシティブに供給するコントロール信号に関連するすべてのビットを考慮します。
- M20Kメモリーブロックとデジタル信号処理 (DSP) ブロック - ブロックを使用すると、IPコアではそのブロック・センシティブに関連するすべてのCRAM ビットを考慮します。
SMHリビジョン4ファイル・フォーマット
ブロック | サブブロック | 32ビットワード | ビット | 詳細 |
---|---|---|---|---|
センシティビティー・マップ・ヘッダー | — | 0 | [31:0] | SMHフォーマットとそのバージョンの識別ワード 0xXE445341 。 |
1 | [31:8] | 予約済み | ||
[7:0] | ASD領域のビットマスクサイズ。ASD領域のビットマスクサイズは、デザイン内の最大ASD領域IDに対する2の上限電力です。1、2、4、8、16、または32にすることができます。 | |||
2 | [31:0] | Sector Informationブロックのアドレス。 | ||
Sector Informationブロック | セクター0情報 | 0 | [31:0] | セクター0エンコード方式のアドレス。 |
1 | [31:0] | エンコードされたセクター0センシビリティー・データのアドレス。 | ||
2 | [23:8] | セクター0で使用されるASD領域のビットマスク数(つまり、SMHタグ数)。値0は、セクター内にセンシビリティー・ビットがないことを示します。 | ||
[7:0] | セクター0 SMHタグサイズはビット単位です。1、2、4、8にすることができます。 | |||
… | … | … | … | |
セクターN情報 | N*3 .. N*3+2 | … | … | |
セクターエンコード化ブロック | セクターエンコード化0 | 0 | [31:16] | 識別ワード 0xEEEE |
[15:0] | 単一フレームエンコード化(つまり、ビット->タグ・インデックス)のサイズをバイト単位でマッピングします。 | |||
1 | [31:0] | フレーム情報のアドレス (FADD) | ||
2 | [31:0] | フレーム情報のアドレス (EADD) | ||
FADD | [31:20] | フレーム0のエンコード化マップのインデックス | ||
[19:0] | センシティビティー・データは、フレーム0のセクター・センシティビティー・データにオフセットされます。 | |||
… | … | … | ||
FAAD+K | [31:20] | 最後のフレームのエンコード化マップのインデックス | ||
[19:0] | センシティビティー・データは、最後のフレームのセクター・センシティビティー・データにオフセットされます。 | |||
EADD |
フレームエンコード化マップ0。16ビット「ビット・グループ・センシティビティー・タグ・インデックス」へのフレーム内の「ビット位置」のフレーム・センシティビティー・データへのマッピングが含まれています。 感度データは必要ないので、フレーム内のすべてのファントムビットに対して、ビット・グループ・センシティビティー・インデックス」は0xFFFFに設定されます。 |
|||
… | … | … | ||
… | … | … | … | |
セクターエンコード化M | ... | |||
セクター・センシティビティー・データ | セクター0データ | 0 | [31:16] | セクターデータ識別ワード (0xDDDD) |
[15:0] | 予約済み | |||
1..L |
セクター領域マップ: L = ('ASD region bitmask size' * 'number of ASD region masks for sector'+31)/32 |
|||
L+1 |
エンコードされたフレームのセンシティビティー・データ。各フレームのデータは次の場所にあります。 offset = L+1+frame sensitivity data offset * sector SMH tag size |
|||
… | … | … | … | |
セクターNデータ | … |
デザイン階層のセンシティビティーの指定
システム動作中にエラーが発生した場合、システムでは、エラーの影響を判断するために .smh ファイル内の分類を調べます。その後、システムでは分類に基づいて訂正措置を講じることができます。
.smh ファイルにアクセスするには、Advanced SEU Detection IPコアのインスタンスをデザインに追加してください。
階層タグ付け
インテル® Quartus® Prime階層タグ付け機能を使用すると、デザイン効率の高いFITレートの向上のために、デバイス動作のクリティカルなロジックのみをタグ付けすることができます。
システム回復手順は、SEUによって障害を受けたロジックの知識に基づいて定義することもできます。この手法により、FPGAおよびFPGAが存在しているシステムのダウンタイムが短縮されます。階層タグ付けのその他の利点は次のとおりです。
- 重大性が低いエラーに対して破壊的な回復手順を回避することで、システムの安定性が向上します。
- 異なるデザインロジックに対する多様な訂正措置が可能になります。
.smh ファイルには、デザイン・センシティブ・ビット用のマスクが圧縮フォーマットで格納されています。 インテル® Quartus® Prime開発ソフトウェアでは、デザイン全体のセンシティビティー・マスクを生成します。
機能不調に対するシステムのレスポンスの評価
インテル Quartus Prime Fault Injection Debugger
Fault Injection Debuggerを使用すると、システム内のFPGAを操作してランダムなCRAMビットフリップを挿入することができます。このようなシミュレートされたSEU検出により、FPGAおよびシステムによるSEUの検出および回復方法の観察が可能になります。結果に応じて、システムの回復順序の調整ができます。
Fault Injection Debuggerを使用すると、次の事項が実行できます。
- 次のいずれかへのシングル・ビット・エラーの挿入
- ランダムな位置
- 指定された領域
- エラー・メッセージ・キューの読み出しによるエラー情報のレポート
Intel Stratix 10 SEU緩和実装ガイド
SEU_ERRORピンの設定
インテル® Quartus® Prime開発ソフトウェアの SEU_ERROR ピン機能を設定するには、次の手順を実行します。
- AssignmentsメニューでDevice をクリックします。
- Device and Pin OptionsでConfiguration categoryを選択し、Configuration Pins Optionsをクリックします。
- Configuration Pin画面でUSE SEU_ERROR outputをオンにします。
- 未使用のSDMピンをドロップダウンから選択し、 SEU_ERROR ピン機能を実装します。
- OKをクリックし、Configuration Pinウィンドウを閉じます。
インテル Quartus Prime SEUソフトウェアの設定
- インテル® Quartus® PrimeメニューでAssignments > Deviceをクリックします。
- DeviceウィンドウでDevice and Pin Optionsをクリックします。
-
Device and Pin Optionsウィンドウで、 Error Detection CRCカテゴリーを選択し、次の設定を指定します。
設定 詳細 Enable error detection check オンにするとエラー検出機能が有効になります。このオプションが必要なのは、センシティビティー処理やフォールト・インジェクション、あるいは SEU_ERROR ピンの動作を観察する場合です。 Minimum SEU interval 0から10000ミリ秒の値を指定して、同じビットの2つの検査間の最小時間を設定します。できるだけ頻繁に確認するには0を指定します。 Enable internal scrubbing オンにするとエラー訂正機能が有効になります。このオプションはセンシティビティー処理に必要です。 Generate SEU sensitivity map file (.smh) オンにすると .smh が生成されます。このオプションはセンシティビティー処理に必要です。 - OKをクリックします。
プライオリティー・スクラビングの有効化
- インテル® Quartus® Prime開発ソフトウェアでAssignments > Logic Lock Regions Windowを選択します。
- Logic Lock Regions Windowで領域を作成し、それをデザイン・パーティション内に配置します。
- クリティカルなデザインモジュール、エンティティー、またはロジックグループを追加し、それらを保存してリージョンにロックします。
- インテル® Quartus® Prime開発ソフトウェアでAssignments > Assignment Editorを選択します。
-
Assignment Editorで、Priority SEU AreaをLogic Lock領域を配置するデザイン・パーティションに対して割り当てます。
Assignment Editorを使用する代わりに、プロジェクトのQuartus Settings File (.qsf) に次の命令を含めることもできます。 set_instance_assignment -name PRIORITY_SEU_AREA ON -to <partition name>
階層タグ付けの実行
タグ付け用のFPGA領域を定義するために、ASD Regionの場所を割り当てます。デザイン階層の任意の部分にASD Region値を指定するには、Design Partitions Windowを使用します。
- インテル® Quartus® PrimeソフトウェアでAssignments > Design Partitions Windowを選択します。
- ヘッダー行の任意の場所を右クリックし、ASD RegionをオンにしてASD Region列を表示します(表示されていない場合)。
-
ロジック・センシティビティーID値を任意のパーティションに対して0〜32の範囲で入力し、特定のASD Regionに割り当てます。
Logic Sensitivity IDは、パーティションに関連付けられたセンシティビティー・タグを表します。
- センシティビティー・タグ1は、割り当てなしと同じで、基本的なセンシティビティー・レベルを示します。これは、「デザインで使用される領域」です。
- センシティビティー・タグ0は、予約済みで未使用のCRAMビットを示します。明示的にパーティションを0に設定して、そのパーティションがクリティカルではないことを示すことができます。この設定では、パーティションがセンシティビティー・マッピングから除外されます。
注: 複数のデザイン・パーティションに同じセンシティビティー・タグを使用できます。
センシティビティー・マップ・ヘッダー・ファイルのメモリーへのプログラミング
.smh のプログラムは、どのタイプのメモリーに対しても行うことができます。例えば、CFI フラッシュメモリーを使用するには次の手順を行います。
- .smh の名前を <file_name>.hexに変更、または、必要に応じてリトル・エンディアンの <file_name>.hexに変換します。
- インテル® Quartus® Prime開発ソフトウェアで File > Convert Programming Filesをクリックします。
- Convert Programming FilesウィンドウのOutput programming fileで目的のオプションを選択します。
-
16進データを追加するには、次の手順に従います。
- Add Hex Dataをクリックします。
- Add Hex DataダイアログボックスでSet start addressをオンにし、開始アドレスを入力します。
- Hex file boxでブラウズをクリックして .hex ファイルを選択し、OKをクリックします。
図 6. Add Hex Dataダイアログボックスの追加 - Generateをクリックします。
センシティビティー・マップ・ヘッダーのルックアップの実行
- エラー検出CRC
- SEUセンシティビティー・マップ・ファイル (.smh) の生成
センシティビティー・マップ・ファイルのルックアップを インテル® Stratix® 10デバイスに対して実行する場合は、次の手順を実行します。
-
.smh ファイルヘッダーを読み出して、汎用 .smh 情報を取得します。
- アドレス = 0
- ワード0 = SMH_signature
- ワード1 = (reserved, region_mask_size)
- ワード2 = sector_info_base_address
-
32ビットワードのセクター情報エントリーを3つ読み取ります。
- セクター暗号化スキーム32ビットアドレス
- セクター .smh データ32ビット・アドレス
- 8ビットのセクター .smh タグサイズ(1、2、4、または8ビットにすることができます)
- セクターで使用されるASD領域ビットマスクの数である16ビットのASD領域マップサイズ
- アドレス= sector_info_base_address + (sector_index*3)
- ワード0 = encoding_scheme_address
- ワード1 = sector_data_address
- ワード2 = (reserved, regions_map_size, smh_tag_size)
-
次のセクター暗号化スキーム情報を読み出して、エラー位置フレーム・インデックスおよびフレーム内のビット位置を確認します。
-
セクター暗号化スキームのヘッダー情報の最初の3つのワードを読み出して、暗号化スキームのパラメーターを取得します。
- アドレス = encoding_scheme_address
- ワード0 = (reserved, frame_encoding_map_size)
- ワード1 = frame_info_base_offset
- ワード2 = frame_encoding_base_offset
-
32ビットのフレーム情報文字列でフレーム番号を確認します。
- アドレス = encoding_scheme_address + frame_info_base_offset + frame_index
- ワード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領域を確立します。
-
frame_data_offset および tag_index の smh_tag_size ビット長 .smh タグ2 。
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タグは、ビットエラーの位置がどの領域に対してもクリティカルではないことを示します。ゼロ以外のタグは、領域マップ内のインデックスを示します。SMHタグの領域マスクを取得するには次を実行します。
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);
-
frame_data_offset および tag_index の smh_tag_size ビット長 .smh タグ2 。
Fault Injection Debuggerの使用
フォールト・インジェクション機能を有効にするには、デザインでEnable error detection CRCオプションを有効にしてください。
Fault Injection Debuggerを起動するには、 インテル® Quartus® Prime開発ソフトウェアでTools > Fault Injection Debuggerを選択します。
Fault Injection Debuggerを使用するには、ツールからデバイスへの接続にJTAGインターフェイスを利用します。次に、JTAGチェーンのコンフィグレーションを行います。JTAGチェーンのコンフィグレーションには、次の手順を実行してください。
- Hardware Setupをクリックします。このツールでは、コンピューターに接続されているプログラミング・ハードウェアが表示されます。
- 使用するプログラミング・ハードウェアを選択します。
- Closeをクリックします。
- Auto Detectをクリックすると、デバイスチェーンにJTAGチェーン内のプログラマブル・デバイスが追加されます。
デバイスとFault Injection Debuggerのコンフィグレーション
.sofを指定するには次を実行します。
- コンフィグレーションを行う Intel® Stratix® 10デバイスをDevice chainボックスで選択します。
- Select Fileをクリックします。
- .sof に移動してOKをクリックします。 Fault Injection Debuggerで .sof を読み出します。
- Program / Configureをオンにします。
- Startをクリックします。
フォールト・インジェクションの領域制約
- Device chainボックスでFPGAを右クリックし、Show Device Sensitivity Mapをクリックします。
- フォールト・インジェクション用のASD領域を選択します。

エラーの挿入
エラーの挿入は、次の方法で行うことができます。
- ランダムな位置へのエラー挿入には、Fault Injection Debuggerのオプションを使用します。
- 特定の位置へのエラー挿入には、コマンドライン・インターフェイスを使用します。
ランダムな位置へのエラー挿入
ランダムな位置へのエラー挿入には、Fault Injection Debuggerのオプションを使用して、次の手順を実行します。
- Inject Faultオプションをオンにします。
-
エラー挿入を繰り返し実行するか、停止するまで実行するかを選択します。
- 停止するまで実行することを選択した場合、Fault Injection Debuggerでのエラー挿入の間隔は、Tools > Optionsダイアログボックスで指定した通りになります。
- エラー挿入を特定の回数だけ反復実行する場合は、回数を入力します。
-
Startをクリックします。
インテル® Quartus® Primeメッセージ・ウィンドウでは、挿入されたエラーに関するメッセージが表示されます。挿入されたエラーの詳細については、Read EMRをクリックしてください。Fault Injection Debuggerでは、エラー・メッセージ・キューを読み出し、その内容をMessagesウィンドウに表示します。注: Read EMRで取得できるのは、エラー・メッセージ・キューの内容です。
特定の位置へのエラー挿入
次の引数を使用し、特定の位置へのエラー挿入をコマンドライン・インターフェイスを使用して行います。
quartus_fid –cable=<cable_num> --index= “@<device_num>=<sof_file>” --user “@<device_num>=<sector_location> <frame_location> <bit_location>”
コマンドライン・インターフェイスの引数について詳しくは、Fault Injection Debuggerのコマンドライン・インターフェイス を参照してください。
Advanced SEU Detection Intel Stratix 10 FPGA IP参照事項
インテル® Quartus® Prime開発ソフトウェアでは、カスタマイズしたAdvanced SEU Detection IP コアの生成を、パラメーター・エディターで設定したパラメーター・オプションに基づいて行います。
Advanced SEU Detection IPコアのパラメーター設定
パラメーター | 値 | デフォルト値 | 詳細 |
---|---|---|---|
Use on-chip sensitivity processing |
|
On | 外部メモリー・インターフェイスの使用を選択し、センシティビティー・データにアクセスしてIPによるSEU位置ルックアップを実行します。 |
Largest ASD region ID used | 1~32 | 1 |
デザインで使用する最大のASD領域IDを指定します。 使用可能なのはUse on-chip sensitivity processingがオンの場合です。 デザインで使用できる領域ID分類の最大数は16です。3 |
Sensitivity data start address | 0x0 | 0x0 |
定数オフセットが指定され、外部メモリー・インターフェイスによって生成されたすべてのアドレスに追加されます。 使用可能なのはUse on-chip sensitivity processingがオンの場合です。 |
Show raw SEU error message |
|
Off |
選択するとraw SEUエラーメッセージが表示されます。 使用可能なのはUse on-chip sensitivity processingがオンの場合です。 |
SEU error fifo depth |
|
4 |
格納するSEUエラー数を指定します。 使用可能なのはUse on-chip sensitivity processingがオンの場合です。 |
Use with Fault Injection Debugger Tool |
|
Off |
オンにするとFault Injection Debugger Toolと併用できます。 |
Advanced SEU Detection IPコアのポート
ポート | 幅 | 入力/出力 | 詳細 |
---|---|---|---|
clk | 1 | 入力 | ユーザー入力クロック。最大周波数は250MHzです。 |
reset | 1 | 入力 | アクティブHigh のシンクロナス・リセット信号。 |
busy | 1 | 出力 | ロジックHighによって、Advanced SEU Detection IPコアがSEUデータ処理でビジなー状態にあることが示されます。信号がLowになるのは、処理が完了して、 critical_error または noncritical_error 信号がアサートされたときです。 |
sys_error | 1 | 出力 | ロジックHighによって、SEUエラーの取得中にシステムエラーがあったことが示されます。 |
critical_clear | 1 | 入力 | Highにアサートして、最後に処理したSEUデータ入力のエラーレポート (critical_error 、 noncritical_error 、 regions_report 、および seu_data) を消去します。 |
critical_error | 1 | 出力 | ロジックHighによって、SEUエラーがクリティカル領域にあるとSMHルックアップによって判断されたことが示されます。 |
noncritical_error | 1 | 出力 | ロジックHighによって、SEUエラーが非クリティカル領域にあるとSMHルックアップによって判断されたことが示されます。 |
regions_report | 1~32 | 出力 | 領域IDによって、SMHルックアップでレポートされたエラーを示します。この信号のポート幅は、Largest ASD region ID usedパラメーターで設定されます。 |
seu_data | 64 | 出力 | 表示されるSEUエラーメッセージは、最後に処理されたSEUデータ入力に関するものです。ポートが使用可能なのは、Show raw SEU error messageパラメーターがオンの場合です。 エラーメッセージの詳細については、Error Message Queueを参照してください。 |
mem_addr | 32 | 出力 | バイト・アドレッシング単位のAvalon-MMアドレスバス。 |
mem_rd | 1 | 出力 | Avalon-MM読み出しコントロール信号。 |
mem_wait | 1 | 入力 | Avalon-MM waitrequest信号。 |
mem_data | 32 | 入力 | Avalon-MMデータバス。 |
mem_datavalid | 1 | 入力 | Avalon-MMデータ有効信号。 |
ポート | 幅 | 入力/出力 | 詳細 |
---|---|---|---|
clk | 1 | 入力 | ユーザー入力クロック。最大周波数は250MHzです。 |
reset | 1 | 入力 | アクティブHigh のシンクロナス・リセット信号。 |
sys_error | 1 | 出力 | ロジックHighによって、SEUエラーの取得中にシステムエラーがあったことが示されます。 |
seu_avst_data | 64 | 出力 | Avalon-STデータ信号。FIFOエントリーからのSEUエラーメッセージを提供します。 |
seu_avst_valid | 1 | 出力 | Avalon-STデータ有効信号。seu_avst_data信号には有効データが含まれています。 |
seu_avst_ready | 1 | 入力 | Avalon-ST ready信号。 |
Intel Stratix 10 Fault Injection Debugger参照事項
Fault Injection Debuggerインターフェイス・パラメーター
パラメーター | 詳細 |
---|---|
Hardware Setup | Hardware Setupウィンドウを開きます。 |
Start | プログラムを開始するかデバイスのコンフィグレーションを行います。 |
Auto Detect | 指定したハードウェアのJTAGチェーンをスキャンして、デバイスチェーンをグラフィック表示します。 |
Select File | .sofファイルを選択します。 |
Program/Configure | Programmerバックエンド・エンジンを呼び出して、デバイスのプログラムまたはコンフィグレーションを行います。 |
Inject Fault | フォールトを挿入します(ランダムな場所のみ)。 |
Run For | ツールがエラー挿入を停止するまでの、フォールト・インジェクションの反復回数を設定します。 |
Run until stopped | Stopをクリックするまで、ツールではフォールト・インジェクションを続行します。 |
Start | フォールト・インジェクションを開始します。 |
Stop | フォールト・インジェクションを停止します。 |
Read EMR | エラー・メッセージ・キューを読み出します。 |
Fault Injection Debuggerのコマンドライン・インターフェイス
短い引数 | 長い引数 | 詳細 |
---|---|---|
l | list | インストールされているすべてのハードウェアを表示します。 |
c | cable | ケーブル番号を選択します。 |
a | auto | 自動検出操作用。この操作にはケーブルを1本だけ選択してくだい。 |
i | index | アクティブなデバイスまたはソフトエラーを挿入するデバイスを指定するオプション。 完全な構文: @<device_position>=<file_path>#<operation>場所:
|
s | smh | センシティビティー・マップのヘッダーファイルを指定するオプション。 完全な構文: @<device_position>=<file_path>#<region_info>場所:
|
u | user | ユーザー固有の障害を指定するオプション。 完全な構文: @<device_position>=<sector-frame-bit-pair ?>#1 <sector-frame-bit-pair ?>#2 ... <sector-frame-bit?>#n場所:
|
n | number | 挿入するソフトエラーの数を指定するオプション。 |
t | time | 挿入の間隔時間を指定するオプション。 |
Intel Stratix 10 SEU緩和 ユーザーガイド・アーカイブ
IPコアバージョン | User Guide |
---|---|
18.0 | Intel® Stratix® 10 SEU Mitigation User Guide |
インテル Stratix 10 SEU緩和 ユーザーガイドの改訂履歴
ドキュメント・バージョン | インテル® Quartus® Primeバージョン | 変更内容 |
---|---|---|
2018.10 10 | 18.1 |
|
2018.08 07 | 18.0 |
|
2018.05 07 | 18.0 |
|
日付 | バージョン | 変更内容 |
---|---|---|
2017年12月 | 2017.12 29 |
|
2016年12月 | 2016.12.09 |
|
2016年10月 | 2016.10.31 | 初版 |