システム - 3.1 日本語

UltraScale Architecture Soft Error Mitigation Controller v3.1 LogiCORE IP 製品ガイド (PG187)

Document ID
PG187
Release Date
2019-05-22
Version
3.1 日本語

このソフト エラー軽減ソリューションは自律動作が可能ですが、多くのアプリケーションではこのソリューションをシステム レベルの監視機能と組み合わせて使用します。システム レベルの監視機能を実装すべきかどうか、そしてこの監視機能にどれだけの役割を持たせるかは、個々のシステムにより異なります。

注記: 次に示す参照事項は、各インターフェイスのシステム レベル要件の欄で説明した内容も含みます。

システム レベルの監視機能を用いてソフト エラー軽減ソリューションを監視する方法には、次のものがあります。

ソフト エラー軽減ソリューションを監視し、ソフト エラー イベントへの応答としてシステム レベルでの追加措置が必要かどうかを判定する。これには、検出したすべてのソフト エラー イベントのログを記録するといった単純なものから、エラー分類値やエラーが訂正可能かどうかなどの要因に基づいてシステム レベルで適切な応答を決定するといった複雑な措置までさまざまなものがあります。これらの各種要因を解析して、デザインのリセット、FPGA のリコンフィギュレーション、システムの再起動などシステム レベルの措置を実行します。

軽減 (+ テスト) モードでソフト エラー軽減ソリューションのイベント レポートを監視するには、ステータス インターフェイスの status_correction および status_uncorrectable 信号、ステータス インターフェイスの status_classification および status_essential 信号、または UART インターフェイスの uart_tx 信号によるエラー検出、訂正、分類レポートを使用します。

検出 (+ テスト) モードでソフト エラー軽減ソリューションのイベント レポートを監視するには、ステータス インターフェイスの status_uncorrectable 、または UART インターフェイスの uart_tx 信号によるエラー検出レポートを使用します。

ソフト エラー軽減ソリューションを監視し、ソリューション自体に問題がないかを確認する。 ソリューションの信頼性 数値を示して説明したとおり、ごくわずかながらソフト エラー軽減ソリューション自体が障害を起こす可能性があります。統計的に、この障害はコントローラーのすべてのステートで発生する可能性があります。

° ブートおよび初期化ステート – ソフト エラー軽減ソリューションがブートおよび初期化の後、選択したモードに応じて監視、検出、アイドル ステートのいずれかに正しく移行するかを監視します。
ザイリンクスは、ソフト エラー軽減ソリューションがブートおよび初期化を実行して上記いずれかのステートへ移行する時間を
表: UltraScale デバイスの最大スタートアップ レイテンシ (ICAP FMax の場合) および この等式 で定義しています。ただしこれは cap_gnt 信号がアサートされており、ソフト エラー軽減ソリューションが ICAP プリミティブ経由で FPGA コンフィギュレーション ロジックを利用でき、モニター インターフェイスでスロットリングが発生していない場合の値です。

ソフト エラー軽減ソリューションが初期化に失敗または正しいステートへの移行に失敗する主な理由は、ソフト エラー イベントではなくデザイン エラーです。これには、未使用ポートの接続の誤り、 cap_grant 信号の制御の誤り、ICAP 共有の実装の誤りなどがあります。また、ソフト エラー軽減ソリューションが ICAP プリミティブ経由で FPGA コンフィギュレーション ロジックを利用できないことが原因となることもあります。この問題が発生する理由としては、ソフト エラー軽減ソリューションと互換性のないビットストリーム オプションを使用した、JTAG 経由で FPGA に発行された FPGA コンフィギュレーション命令をシステム レベルの JTAG コントローラーが正しく完了またはクリアできなかった、などが考えられます。

ソリューションが初期化を完了して正しいステートへ移行したことを確認するには、システム レベルの監視機能でステータス インターフェイスの status_initialization および該当する status_* 信号がアサートされるのを監視するか ( この図 この図 参照)、UART インターフェイスの uart_tx 信号から出力される初期化レポートを監視します。

このステートでは、CRC エラー ステータス信号の INIT_B は無視できます。

° 監視ステート (軽減 (+ テスト) モードの場合) – コントローラーはほとんどすべての時間をこのステートで費やします。このステートのコントローラーを監視する方法は少なくとも 3 つあり、コントローラーの状態に関して得られる情報がそれぞれ少しずつ異なります。

- コントローラーのハートビート信号 status_heartbeat – この信号は、ソフト エラー軽減ソリューションから直接出力されます。この信号は、リードバック プロセスが動作中であることを示すパルスです (仕様の詳細は ステータス インターフェイス 参照)。監視ステート中にこのパルスが仕様から逸脱した場合、システム レベルの監視機能はリードバック プロセスに障害が発生したものと判定できます。これは訂正不能なエッセンシャル エラーです。

UltraScale および UltraScale+ SSI へのインプリメンテーションでは SLR ごとに status_heartbeat 出力があるため、すべての SLR からのハートビート信号を監視する必要があります。

status_heartbeat はほかのコントローラー ステートでは未定義のため、監視ステートでのみ監視するようにしてください。

ハートビート を参照してください。

- CRC エラー ステータス信号 INIT_B – この信号は、リードバック プロセスから直接出力されます。リードバック プロセスで CRC エラーが検出されると、 INIT_B がアサートされます。 監視ステート中に INIT_B がアサートされてから 1 秒以内に訂正ステートへ移行しない場合、コントローラーに障害が発生しています。 ステートの移行は、ステータス インターフェイスの status_correction 信号またはモニター インターフェイスのステート変化レポートで確認できます。これは訂正不能なエッセンシャル エラーです。

UltraScale および UltraScale+ SSI デバイスへのインプリメンテーションでは SLR ごとに内部 CRC エラー ステータス信号があるため、これらの信号を OR を介して 1 つの INIT_B デバイス ピンに接続します。UltraScale デバイスへのインプリメンテーションでは、ステータス インターフェイスの status_correction 信号は各 SLR に 1 つずつあります。

CRC エラー ステータス信号 INIT_B は監視および検出ステートでのみ監視するようにしてください。それ以外のステートでは、この信号は未定義です。

- コントローラーのステータス コマンドおよびレポート – UART インターフェイスの uart_rx および uart_tx 信号を使用してシステム レベルの監視機能から周期的にステータス コマンドを送信し、予想されるステータス レポートが出力されるかを確認します。 コントローラーのステートが変化していない場合、1 秒以内に予想されるステータス レポートが出力されなければ、システム レベルの監視機能はコントローラーに障害が発生したものと判定できます。これは訂正不能なエッセンシャル エラーです。

この方法を使用する場合、「コントローラー応答なし」条件を検出する時間を許容範囲内としつつ、ステータス コマンドの送信間隔をなるべく長くする必要があります。

ステータス コマンドとレポートをコントローラーで処理する方法は、レイテンシを増大させる要因となることがあります。たとえばステータス コマンドを 60 秒ごとに送信するのは、全般的な動作のレイテンシをそれほど増やすことなく、ほとんど発生しない「コントローラー応答なし」条件を防ぐことができるため、妥当なトレードオフといえます。これに対し、ステータス コマンドを 1 秒ごとに送信するのは賢明な選択とはいえません。この場合、ステータス レポートによって UART ヘルパー ブロックの送信バッファーが空になることがほとんどなく、モニター インターフェイスでスロットリングが発生してエラー検出、訂正、および分類のレイテンシが増大します。

コントローラーのステータス コマンドおよびレポートを使用する方法は、監視およびアイドル ステートでしか利用できない点に注意が必要です。ほかのステート中にステータス コマンドを送信した場合、UART ヘルパー ブロックの受信バッファーがオーバーフローしなければコマンドはバッファー内に残り、監視またはアイドル ステートへ移行した時点で処理されます。

° 訂正および分類ステート – モニター インターフェイスでスロットリングが発生していなければ、ソフト エラー軽減ソリューションは訂正および分類ステートに 表: エラー訂正レイテンシ (モニター インターフェイスでのスロットリングなし) / この等式 および 表: エラー分類レイテンシ (モニター インターフェイスでのスロットリングなし) / この等式 に示した時間内に遷移します。ソフト エラーが発生する確率は非常に低いため、コントローラーがこれらのステートで費やす時間は非常に短く、通常はすぐに監視ステート (またはごくまれにアイドル ステート) に戻ります。

ステータス インターフェイスの status_correction および status_classification 信号、またはモニター インターフェイスのステート変化レポートを監視して、コントローラーが訂正または分類ステートにとどまる時間が 1 秒を超えたことが確認されると、システム レベルの監視機能はコントローラーに障害が発生したものと判定できます。これは訂正不能なエッセンシャル エラーです。

これとは別に、ソフト エラー軽減ソリューションが同じアドレスを繰り返し訂正していないかをシステム レベルの監視機能で監視することもできます。このような症状が起こることはほとんどありませんが、その原因はコントローラーのソフト エラーやデバイス自体のハード エラーなどいくつか考えられます。

° 検出モードまたはステート – コントローラーは、初期化後またはコマンドで移行後、ほとんどすべての時間をこのステートで費やします。このステートのコントローラーを監視する方法は少なくとも 2 つあり、コントローラーの状態に関して得られる情報がそれぞれ少しずつ異なります。

- コントローラーのハートビート信号 status_heartbeat – この信号は、ソフト エラー軽減ソリューションから直接出力されます。この信号は、リードバック プロセスが動作中であることを示すパルスです (仕様の詳細は「ステータス インターフェイス」参照)。検出ステート中にこのパルスが仕様から逸脱した場合、システム レベルの監視機能はリードバック プロセスに障害が発生したものと判定できます。これは訂正不能なエッセンシャル エラーです。

UltraScale および UltraScale+ SSI へのインプリメンテーションでは SLR ごとに status_heartbeat 出力があるため、すべての SLR からのハートビート信号を監視する必要があります。

ハートビート を参照してください。

- CRC エラー ステータス信号 INIT_B – この信号は、リードバック プロセスから直接出力されます。リードバック プロセスで CRC エラーが検出されると、 INIT_B がアサートされます。検出ステート中に INIT_B がアサートされてから 1 秒以内にアイドル ステートへ移行しない場合、コントローラーに障害が発生しています。アイドル ステートへ移行したかどうかは、ステータス インターフェイスまたはモニター インターフェイスのステート変化レポートで確認できます。これは訂正不能なエッセンシャル エラーです。

UltraScale および UltraScale+ SSI デバイスへのインプリメンテーションでは SLR ごとに内部 CRC エラー ステータス信号があるため、これらの信号を OR を介して 1 つの INIT_B デバイス ピンに接続します。ただしステータス インターフェイスは SLR ごとにアイドル ステートのステータス インターフェイスを個別に監視してアイドル ステートへの移行を確認する必要があります。

CRC エラー ステータス信号 INIT_B は監視および検出ステートでのみ監視するようにしてください。それ以外のステートでは、この信号は未定義です。

° 診断スキャン ステート – コマンドによってこのステートへ移行すると、コントローラーはデバイスのすべてのコンフィギュレーション メモリをスキャンし、検出したすべての ECC エラーを報告します。このステートのコントローラーを監視するには、次の方法を推奨します。

- コントローラーのハートビート信号 status_heartbeat – この信号は、ソフト エラー軽減ソリューションから直接出力されます。この信号は、リードバック プロセスが動作中であることを示すパルスです (仕様の詳細は「ステータス インターフェイス」参照)。診断スキャン ステート中にこのパルスが仕様から逸脱した場合、システム レベルの監視機能はリードバック プロセスに障害が発生したものと判定できます。これは訂正不能なエッセンシャル エラーです。

UltraScale および UltraScale+ SSI へのインプリメンテーションでは SLR ごとに status_heartbeat 出力があるため、すべての SLR からのハートビート信号を監視する必要があります。

ハートビート を参照してください。

° アイドルおよび挿入ステート – コントローラーがアイドル ステートへ移行するのは、訂正不能エラーが発生した場合かアイドル ステートへの移行コマンドが実行された場合のみです。訂正不能エラーによってアイドル ステートへ移行した場合は、イベント レポートの監視に関するセクションを参照してください。
アイドル ステートへの移行コマンドは、主にエラー挿入や ICAP 共有などほかのコマンドを発行するために使用します。「監視ステート」の「コントローラーのステータス コマンドおよびレポート」で説明した方法をアイドル ステートで実装するのは、アプリケーション レベルでほかのプロセスによって発行されたコマンドと競合する可能性があるため推奨しません。発行済みのコマンドが完了して 1 秒以内に応答が生成されることをアプリケーション レベル プロセスで確認する方法を推奨します。1 秒以内に応答が生成されない場合は訂正不能なエッセンシャル エラーが発生しており、アプリケーションからシステムに報告する必要があります。

° 重大エラー ステート – コントローラーは、内部ステートに不整合性が検出された場合のみこのステートへ移行します。このステートへ移行すると、ステータス インターフェイスの 7 つのステート信号がすべてアサートされます。モニター インターフェイスから HLT メッセージが出力されることもあります。 UltraScale SSI デバイスへのインプリメンテーションでは複数のコントローラー インスタンスが存在しており、少なくとも 1 つのコントローラー インスタンスが動作を停止するか、または訂正不能エラー イベントによってアイドル ステートへ移行するとソリューション全体が重大エラー ステートと見なされます。 これは訂正不能なエッセンシャル エラーです。

ここまでに説明したシステム レベル監視機能の実装は任意ですが、軽減 (+テスト) モードで IP を使用する場合は、コントローラーの正常動作を確認するために少なくとも次のシステム レベル監視機能を実装することを推奨します。

1. コントローラーがブートおよび初期化ステートを完了し、選択したモードに応じて監視、アイドル、または検出ステートに正しく移行したことを確認してください。ブートおよび初期化ステートでは INIT_B 信号は監視対象ではありません。

2. 監視、検出、診断スキャン ステートでは status_heartbeat 信号を監視し、 ハートビート に示した仕様値を満たしていることを確認してください。この監視ロジックの例は、サンプル デザインに含まれています。 機能 を参照してください。

3. 軽減 (+ テスト) および検出 (+ テスト) モードの場合、コントローラーが停止またはアイドル ステートへ移行していないことを確認してください。コントローラーが停止またはアイドル ステートへ移行すると軽減機能が実行されず、SEU が発生しても検出、訂正されません。これは、 status_* 信号を監視して確認できます。コントローラーの動作停止を検出するロジックの例は、サンプル デザインに含まれています。 機能 を参照してください。

4. 監視および検出ステートでは、 INIT_B 信号を監視してください。 INIT_B がアサートされてから 1 秒以内にコントローラーが監視ステートから訂正ステート、または検出ステートからアイドル ステートへ移行しない場合、訂正不能エラーが発生したかエラーに対してコントローラーの軽減機能が応答していない (「CRC エラー ステータス信号 INIT_B 」参照) ことを示します。

5. 後で必要になったときに IP の動作を簡単にデバッグできるように、 monitor_txdata[7:0] 出力を FIFO バッファーに格納してください。 これは、特にシステムがモニター インターフェイスを使用していない場合に推奨します。 モニター インターフェイス を参照してください。