UART インターフェイス経由での SEM Controller との通信デモ - 3.1 日本語

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

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

このセクションでは、ターミナル エミュレーターを使用して UART インターフェイス経由で SEM Controller と通信し、基本的なエラー挿入を実行する手順および SEM Controller から出力されるステータスについて説明します。コマンドの送信およびステータスの受信はすべてターミナル エミュレーターで行います。ここでは初期化レポート、ステータス レポート、アイドル ステートと監視ステート、エラー挿入、訂正レポートについて説明します。この例では、Vivado 統合設計環境 (IDE) のデフォルト設定 (軽減 + テスト モード、エラー分類無効) で IP をコンフィギュレーションしています。

この例でコントローラーのステートがどのように遷移するかを理解するには、 のステート遷移図を参照してください。このデモで使用するコマンドとそのフォーマット、およびレポートの詳細は、 UART インターフェイスのメッセージ および UART インターフェイスのコマンド を参照してください。

生成したビットストリームをデバイスにプログラムすると、ターミナル エミュレーターに初期化レポートが表示されます。次に、このレポートの例を示します。

SEM_ULTRA_V3_1 Name and version

SC 01 State transition to Initialization state

FS 04 Core Configuration Information

AF 01 Additional Core Configuration Information

ICAP OK ICAP Available

RDBK OK Status: Readback Active

INIT OK Status: Completed Setup

SC 02 State transition to Observation

O> Observation prompt

これでコントローラーは初期化を完了し、エラー条件の発生を検出するために FPGA コンフィギュレーション システムの監視を開始します。VIO ウィンドウで status_observation 信号がアサートされます。

コンフィギュレーション メモリで発生するエラーをエミュレートするには、コントローラーをアイドル ステートに遷移させる必要があります。ターミナル エミュレーターから次のコマンドを UART インターフェイスに送信します。

O> I Enter Idle Command

SC 00 State change into Idle state

I> Idle prompt

これで、すべてのステータス フラグ ( status_essential status_uncorrectable を除くすべての status_* ) がディアサートされ、コントローラーがアイドル ステートに遷移したことを示します。

コントローラーがアイドル ステートに遷移すると、内蔵のメモリ スキャンおよびチェックが無効になります。このステートで利用可能なコマンドは、 表: アイドル ステートで利用可能なコマンド を参照してください。

UART インターフェイスに「S」コマンドを送信すると、次のような完全なステータス レポートが出力されます。

I> S Status request command ("S")

SN 00 SLR number

SC 00 Current State

FC 00 Current Flags

RI 00 Reserved Information

MF 00006643 Maximum Linear Frame Count

TS XXXXXXXX Timestamp

TB XXXXXXXX Table Base

CB XXXXXXXX Classification Base

CL 001 Classification Level

I> Idle Prompt

完全なステータス レポートが出力されると、再びアイドル ステートのプロンプトが表示され、コマンドを実行可能な状態になります。

コンフィギュレーション メモリで発生するエラーをエミュレートするには、エラー挿入を実行します。この場合、通常はフレームの ECC ワードにエラーを挿入することを推奨します。ECC ワードにエラーを挿入すると、コンフィギュレーションしたデザインに影響を与えずにコンフィギュレーション エラーが検出された場合の動作を観察できます。

また、エラー挿入の前後に Query コマンドを実行してエラー挿入フレームの内容を読み出すことを推奨します。
これにより、エラー挿入によってコンフィギュレーション メモリの内容が変化したかどうか、そして挿入したエラーをコントローラーが検出および訂正するかどうかを確認できます。

次に示す例は、UltraScale デバイスの ECC ワード内の 1 ビット (フレーム 0、ワード 61、ビット 0) にエラーを挿入しています。

まず、 Query コマンドを実行してフレーム 0 の内容を読み出します。

I> Q C000000000 Query command using LFA

{61 lines of 00000000}

0000000 0 Location we will inject an error

{61 lines of 00000000}

I>

次に、フレーム 0、ワード 61、ビット 0 にエラーを挿入します。

I> N C0000007A0 Error injection command using LFA

SC 10 State transition to Error Injection

SC 00 State transition to Idle

I> Idle Prompt

エラー挿入を実行するとコントローラーは短時間だけエラー挿入ステートに遷移します。エラー挿入ステートの間、 status_injection 信号がアサートされます。

最後に、もう一度 Query コマンドを実行して選択した位置にエラーが挿入されたことを確認します。

I> Q C000000000 Query command by LFA

{61 lines of 00000000}

0000000 1 Location we have injected an error

{61 lines of 00000000}

I>

エラー挿入コマンドで指定した挿入先ビットの値が変化しているので、エラーが正しく挿入されたことがわかります。

コントローラーのエラー検出および訂正機能を試すには、コマンドを発行してコントローラーを監視ステートに戻し、FPGA コンフィギュレーション メモリの監視を再開させる必要があります。

監視ステートに移行するには、次のコマンドを実行します。

I> O Enter Observation Command

SC 02 State transition to Observation

O> Observation prompt

RI XX Reserved information

SC 04 State transition to Correction

ECC ECC error detected

TS 0000245D Timestamp

PA 0000000 PFA of detected error

LA 0000000 LFA of detected error

COR Error correction report begins

WD 3D BT 00 Corrected word and bit values

END Error correction report end

FC 00 Flag updated with correctability

SC 08 State transition to Classification

FC 40 Flag updated with essentialness (if classification is disabled, it is always essential)

SC 02 State transition to Observation

O> Observation prompt

これを見るとわかるように、コントローラーは監視ステートに移行した後エラーを検出し、訂正ステートに移行した後にエラー検出レポートと訂正レポートを出力しています。

エラー訂正が完了すると、コントローラーは分類ステートに移行した後に監視ステートに戻り、FPGA コンフィギュレーション システムの監視を再開してエラー条件の発生を検出します。

注記: 分類機能を無効にしている場合、エッセンシャル フラグが常にアサートされます。

フラグ変化 (FC) レポートにより、次の 2 種類の情報が得られます。

エラーが訂正可能かどうか ( status_uncorrectable 信号の状態)

エラーがエッセンシャルかどうか ( status_essential 信号の状態)。

訂正可能かどうかのフラグは訂正レポート出力後に更新され、エッセンシャルかどうかのフラグは分類ステート終了前に更新されます。次にこれらの動作が行われるまで、フラグ変化レポートの値は変化しません。フラグ変化レポートの文字列とその意味は、 表: フラグ変化レポートのデコード を参照してください。

注記: UART インターフェイスから出力されるステート変化レポートおよびフラグ変化レポートの内容は、VIO ウィンドウの status_* 信号でも確認できます。

コンフィギュレーション メモリで発生するエラーのエミュレーションの詳細は、 エラー挿入のガイダンス を参照してください。

このデモでは、コントローラーに対するコマンドはすべてターミナル エミュレーターから UART インターフェイス経由で入力しています。これらのコマンドは、VIO ウィンドウを使用してコマンド インターフェイス経由でも実行できます。コマンド インターフェイスから有効なコマンドを入力すると UART インターフェイスにエコーバックされ、上記と同じステータスおよびレポートが出力されます。コマンド インターフェイス経由でのコマンド実行方法の詳細は、 コマンド インターフェイス を参照してください。