QorIQ T1022 DDR検証スイートは良好なマージンで通過しますが、アプリケーション中にメモリ破損が確認されていますこんにちは、
私たちは QorIQ T1022 設計を用いており、NXP DDR Validation Suiteを使ったDDRの起動と検証を完了しました。
結果は有望だ。
- DDRの検証テストはすべて正常に合格しました。
- 試験したすべての条件下で、良好な時間的余裕を達成しました。
- ストレステスト中に検証スイートからエラーは報告されませんでした。
しかし、メインアプリケーションを読み込んで実行すると、 メモリ関連の問題や破損が見られます。これらの問題は、DDR検証テストだけでは再現できません。
これにより、実際のアプリケーションワークロード下でのみ発生する可能性のある問題を検出するために、追加のメカニズムやテスト手法を使えばよいのではないかという疑問が生じています。
私たちは以下の点を理解することに関心があります。
- T1022の標準的なDDR検証スイートテストで回避できるDDRやメモリサブシステムの問題にはどのようなものがありますか?
- DDRのトレーニングや検証で検出されなかった問題を暴露できる既知のアプリケーションレベルのシナリオはありますか?
- T1022には、根本原因を特定するのに役立つ追加のストレステスト、パフォーマンスモニター、エラーカウンター、デバッグ技術などがありますか?
- DDRの検証で優れたマージンが示されたにもかかわらず、後に本番環境でメモリ破損や不安定が観察された状況に遭遇した方はいらっしゃいますか?
追加の診断、ハードウェアチェック、ソフトウェアデバッグの方法についてのアドバイスをいただけると大変ありがたいです。
よろしくお願いします。
QorIQ T1デバイスRe: QorIQ T1022 DDR Validation Suite Passes with Good Margin, but Memory Corruption Seen in Applicatこんにちは、
QCVS DDRvツールは、シングルコアからJTAG経由で逐次的かつデターミニスティックなアクセスパターンを用いてDDRのタイミングマージン(書き込みレベリング、読み書き/書き込みセンタリング、クロック調整)をテストします。運動はしない:
- マルチマスター/マルチコア同時アクセス — T1022は2つのe5500コアとDPAA(データパスアクセラレーションアーキテクチャ)を持ち、フレームマネージャ、キューマネージャ、DMAエンジンが同時にDDRバスを巡って競合します。競合によって引き起こされるタイミング違反は、実際のトラフィック状況下でのみ発生します。
- キャッシュコヒーレンシーストレス — キャッシュフラッシュ、無効化、整合性のあるDMA転送を含むアプリケーションワークロードは、検証スイートが生成しないアクセスパターンを作り出します。
- 熱および電源の変動 — 室温で軽負荷時に測定されたDDRマージンは、SoCがフル稼働中でAVDD_DDR電源が負荷下で低下すると著しく劣化することがあります。
- DQマッピングエラー — DQ_MAPnレジスタが誤っている場合、コントローラは既知のトレーニングパターンを用いる検証には合格しますが、実際のアプリケーション トラフィック下ではデータを破損させる可能性があります。これはT1022固有の既知の問題です。
- 周辺のシングルビットECCエラー — 検証スイートが十分なトランザクションを蓄積せず、SBE閾値報告をトリガーできない場合もありますが、数時間稼働する実際のアプリケーションは静かに処理します。
DQマッピングの設定ミス
- DQ_MAPnレジスタはDRAMのDQ信号をコントローラにマッピングします。これらが誤ると、コントローラはトレーニングパターンを正しく解釈できず、実際のワークロード下でデータ破損が発生します。NXPはT1022設計でこれを確認しており、すべてのDQn_MAPレジスタをクリア(1:1マッピングのために0に設定)が推奨される診断ステップです。
- メモリの順序付け/パイプライン効果(PowerPC e5500)
- e5500コアには、メモリの順序付けの細かい違いがよく記録されています。書き込みは、特に明示的なmsync/isyncバリアがない場合、後続の読み取りが行われる前にDDRに完全にコミットされない可能性があります。NXPのアプリケーションチームは、 「エラー注入が無効になる前に書き込みがメモリに完全にコミットされない可能性がある。その後の読み取りでキャッシュまたはパイプラインにヒットし、ECCロジックがすぐにトリガーされない可能性がある」と確認した。アプリケーションコード、DMA設定時の欠落障壁、共有メモリ構造などは、実際には一貫性の順序の問題である明らかな破損を引き起こすことがあります。
- ECCシングルビットエラー蓄積
- T1022 DDRコントローラーはECCをサポートしています。シングルビットエラー(SBE)はハードウェアによって暗黙的に訂正されますが、ERR_SBE[SBEC]にカウントされます。SBEカウンタがしきい値ERR_SBE[SBET]を超えると、重大な割り込みが発生します。検証トラフィックが少ない場合、このしきい値に達することはありません。実際の応用では、蓄積されたSBEが最終的に修正不能なマルチビットエラー(MBE)となり、致命的となり、データは復元できません。
- アプリケーションのクラッシュとして現れるマルチビットECCエラー
- NXPはQorIQプラットフォーム(P2020、T1042)で、アプリケーションクラッシュ(例:有効なアドレスでのlwz命令のフォールト)がDDRのMBEイベント情報に起因したCASEを記録しています。クラッシュはソフトウェアのバグではなく、e5500コアがDDRコントローラから破損したデータを受け取り、IVOR1マシンチェック例外を発生させたためです。重要なのは、メモリ領域がキャッシュ禁止されている場合でも、MCSRレジスタは0xA000(修正不能なL1キャッシュ/タグエラー)を表示します。これはDDRコントローラがコアがL1エラーとして登録する破損データ信号を主張するためです
ボード設計を以下の基準と比較してください:
- AN3940 — DDR3 SDRAMメモリインターフェースのハードウェアおよびレイアウトデザインの考慮事項
- AN5097 — DDR4 SDRAMメモリインターフェースのハードウェアおよびレイアウトデザインの考慮事項
- AN4039 — PowerQUICCおよびQorIQ DDR3 SDRAMコントローラレジスタ設定の考慮事項
特に注意すべき点は、AVDD_DDR電源のノイズとデカップリング、DDRリセット信号のルーティング(HRESET_BからDRAM RESETへ)、および終端抵抗の値です。
よろしくお願いします。