インテル® Stratix® 10 SoC FPGAブート・ユーザーガイド

ID 683847
日付 11/10/2021
Public
ドキュメント目次

7.3. その他のデバッグに関する考慮事項

ペリフェラル

ボード立ち上げプロセスの最初の手順は、ペリフェラルのテストです。デザインに対して一度に1つのインターフェイスを追加します。ペリフェラルが作成したテストに合格したら、テストデザインから削除します。他のペリフェラルのテストに移行する際に、テストに合格したペリフェラルをデザインに残さないでください。複数のペリフェラルは、ノイズやクロストークにより不安定になる可能性があります。システム内のペリフェラルを個別にテストすることで、デザイン上の問題を特定のインターフェイスに分離できます。

どのシステムにもある一般的な障害には、メモリーが含まれます。最も問題のあるメモリーデバイスは高速で動作するため、タイミング障害が発生する可能性があります。高性能メモリーでは、データ、アドレス、およびコントロール信号を転送するために多くのボードトレースも必要です。適切に配線されていないと、障害が発生します。 Nios® IIプロセッサーを使用し、検証ソフトウェアまたはインテルStratix 10 EMIF Toolkitなどのデバッガーを使用してメモリーデバイスを検証できます。 Nios® IIプロセッサーは、メモリーのストレステストは実行できませんが、メモリーアドレスとデータラインの問題検出に使用できます。

データトレースの障害

ボード製造機能がベア・ボード・テストを実行しない場合は、ご自身でこのテストを実行する必要があります。メモリー・インターフェイスでデータトレースの障害を検出するには、「ウォーキング・ワン」パターンを使用します。「ウォーキング・ワン」パターンは、FPGAとメモリーデバイス間のすべてのデータトレースを介して論理1をシフトします。

パターンは増加または減少する可能性があります。重要な要素は、常に1つのデータ信号のみが1であることです。このパターンの増加バージョンは、次のとおり、1、2、4、8、16などです。このパターンを使用すると、短絡信号や開回路信号など、データトレースに関するいくつかの問題を検出することができます。信号が誤って別の信号に接続された場合、信号が短絡します。信号が誤って未接続の場合、信号は開回路になります。プルアップまたはプルダウン抵抗をトレースに接続しない限り、開回路はランダムな信号動作をする可能性があります。プルアップまたはプルダウン抵抗を使用する場合、信号は0または1を駆動します。ただし、抵抗はテストによって駆動される信号に比べて弱いため、テスト値はプルアップまたはプルダウン抵抗をオーバーライドします。同じテストで潜在的なアドレスとデータトレースの問題が混在しないようにするには、一度に1つのアドレス位置のみをテストします。テストを実行するには、メモリーにテスト値を書き込んでから、読み戻します。2つの値が等しいことを確認した後、パターンの次の値のテストに進みます。検証段階で書き込み値と読み出し値の変動が検出された場合は、ビット障害が発生しています。次の表で示しているのは、データトレースの障害を見つけるために使用されるプロセスの例です。これは、シーケンシャル・データ・ビットがPCB上で連続して配線されるという簡素化された仮定を行います。

表 18.  データトレースのテスト (「ウォーキング・テスト」) の例
書き込み値 読み出し値 検出された障害
00000001 00000001 障害は検出されませんでした。
00000010 00000000 エラー、2番目のデータビット D[1] がLowにスタックしているか、グランドに短絡している可能性が最も高いです。
00000100 00000100

障害は検出されませんでした、D[1] Lowにスタックしているか、この表に記載されていない別のトレースに短絡していることが確認されました。

00001000 00001000 障害は検出されませんでした。
00010000 00010000 障害は検出されませんでした。
00100000 01100000 エラー、D[6] および D[5] が短絡している可能性が最も高いです。
01000000 01100000 エラー、D[6] および D[5] が短絡していることが確認されました。
10000000 10000000 障害は検出されませんでした。

アドレストレースの障害

アドレストレースのテストは、1つの例外を除いて、データに使用される「ウォーキング・テスト」に似ています。このテストでは、データを読み戻す前に、すべてのテスト位置に書き込む必要があります。2の累乗のアドレス位置を使用すると、回路基板のすべてのアドレストレースをすばやく確認できます。アドレストレースのテストは、短絡または開回路がメモリー・インターフェイスに及ぼす可能性のあるエイリアシングの影響を検出します。このため、異なるデータ値を使用して各位置に書き込むことが重要です。これは、アドレス・エイリアシングを検出できるようにするためです。システムのアドレストレースを確認する際に、1、2、3、4などの増加する数値を使用できます。次の表で示しているのは、アドレストレースの障害を検出するプロセスで2の累乗を使用する方法です。

表 19.  アドレストレースのテスト (2の累乗) の例
アドレス 書き込み値 読み出し値 検出された障害
00000000 1 1 障害は検出されませんでした。
00000001 2 2 障害は検出されませんでした。
00000010 3 1 エラー、2番目のアドレスビット A[1] がLowにスタックしています。
00000100 4 4 障害は検出されませんでした。
00001000 5 5 障害は検出されませんでした。
00010000 6 6 障害は検出されませんでした。
00100000 7 6 エラー、A [5] および A [4] は短絡しています。
01000000 8 8 障害は検出されませんでした。
10000000 9 9 障害は検出されませんでした。
デバイスの分離

デバイスの分離技術を使用すると、デザインが失敗する原因となるPCB上のデバイスの機能をディスエーブルすることができます。通常、設計者はPCBの初期リビジョンにデバイス分離を使用し、製品を出荷する前にこれらの機能を削除します。ほとんどのデザインでは、クリスタル・オシレーターまたはその他のディスクリート・コンポーネントを使用して、デジタルロジック用のクロック信号を作成します。クロック信号がノイズまたはジッターによって歪められている場合、障害が発生する可能性があります。歪んだクロックを防ぐには、FPGAに別のクロックピンを配線できます。ボード上にSMAコネクターを含めると、外部クロック・ジェネレーターを使用してクリーンなクロック信号を作成できます。クロック関連の問題をデバッグする場合は、別のクロックソースがあると非常に便利です。

ボード上の特定のデバイスによって生成されるノイズが、他のデバイスやインターフェイスに問題を引き起こすことがあります。選択したコンポーネントのノイズレベルを低減させる機能があると、デザインで問題を引き起こしているデバイスを特定するのに役立ちます。ノイズの多いコンポーネントを分離する最も簡単な方法は、問題のデバイスの電源を取り外すことです。電源ピンの数が限られているデバイスの場合、電源とピンの間のパスに0オームの抵抗を含めると、抵抗を取り外すことでデバイスへの電力を遮断できます。この戦略は通常、ボードの電源プレーンに直接接続する複数の電源ピンを含む大型のデバイスでは不可能です。ノイズの多いデバイスから電源を取り外す代わりに、リセットピンをアクティブ状態に駆動することで、デバイスをリセット状態にすることができます。もう1つのオプションは、単にデバイスを行使しないようにして、アイドル状態を維持することです。ノイズの多い電源またはグランドプレーンは、シグナル・インテグリティーの問題を引き起こす可能性があります。デジタルデバイスの一般的な電圧振幅は1ボルト未満であることが多いため、PCB上のデバイスの電源ノイズマージンはわずか0.2ボルトになる可能性があります。電源ノイズは、デジタル・ロジックの失敗を引き起こす可能性があります。このため、ボード上の電源の分離が可能であることが重要です。取り外したヒューズを使用して電源を分離できるため、デザイン上で一時的に安定した外部電源に置き換えることができます。

JTAG

FPGAは、プログラミング、通信、および検証にJTAGインターフェイスを使用します。設計者は、FPGA、ディスクリート・プロセッサー、メモリーデバイスなどの複数のコンポーネントを頻繁に接続し、単一のJTAGチェーンを介してそれらと通信します。JTAG信号が電気ノイズによって歪むことがあり、デバイスのグループ全体で通信障害が発生します。安定した接続を保証するには、同じJTAGチェーン内の他のデバイスから、テスト対象のFPGAを分離する必要があります。