1

かなりの数のフラッシュ チップを搭載したボードを使用していますが、そのうちのいくつかで断続的な障害が発生しています。標準的なメモリ テストでは、機械的および熱的ストレスによって特定のチップが断続的に故障することを除けば、具体的な問題の解決策は示されていません。

フラッシュセル自体ではなく、実際の接続を疑って、パラレルバスのアドレスまたはデータピンエラーをテストする方法を探しています。

いくつかのメモリ テストがありますが、フラッシュ メモリよりも RAM に適しています ( http://www.ganssle.com/testingram.htm )。具体的には、パラレル フラッシュには、各値に書き込む一連のバス書き込みがあります。書き込み/検証の失敗は、バス上の任意のピンである可能性がある書き込み操作である可能性があります。

アイデア歓迎...

4

4 に答える 4

2

典型的なメモリテストはそれを行うためにあります。私は、0xAA、0x55、0xFF、0x00 テストよりも疑似ランダマイザー (lfsr を使用した決定論的) を好みます。これにより、アドレス バス テストとデータ バス テストを 2 パス (繰り返し反転) で実行できます。データビットとアドレスビットの両方の状態を小刻みに動かし、信号とその近隣の状態を変化させるという意味で典型的と言います。ラムを叩いて熱やその他のストレスを発生させます。フラッシュに非常に高速に書き込むことはできないため、高速の書き込み/読み取りサイクルを実際に実行することはできません。

フラッシュは別の問題を引き起こします。それは、書き込み後に読み返すことはそれほど興味深いものではありません。部品が実際にデータを保持しているかどうかを判断するために、数時間、数日、数週間後に読み書きを書き戻す必要があります。

熱または応力と言うとき、それが失敗するのは X 度を超える時間の間だけという意味ですか、それとも熱応力のために、イベントの後は常に壊れているという意味ですか。機械の場合と同様に、振動中または機械的応力下で部品が故障しますが、その応力が解放された場合は問題ありません。または、機械的応力によって永久的な損傷が発生しており、応力下かどうかにかかわらず検出できます。

現在、高速な書き込み/読み取りサイクルを行うことはできませんが、頻繁に読み取ることでフラッシュを罰することができます. 1 つのブロックまたはロケーションを常に読み取ることによる読み取り障害の問題を見てきました。必ずしもすべての場所で時間があるわけではありませんが、RAM を疑似ランダム パターンで満たし、しばらく (数分、数十分) 1 つの場所に集中することができます。これにより問題の検出が加速するかどうか、また、いずれかの場所が機能するか、特定の場所のみが機能するかを確認してください。次に、すべての場所を数時間/数日間繰り返し読み取るか、数時間/数日/数週間そのままにしてから、消去または書き込みなしで読み取りパスを実行し、何かが失われたかどうかを確認します。

残念なことに、おそらくご存じのとおり、新しい失敗のケースごとに、独自の研究プロジェクトと新しいテストの開発が必要です。

于 2013-12-18T01:30:17.213 に答える
0

メモリをテストするための最初のステップは、データ バス テストです0 0 0 0 0 0 0 • このテストでは、データ バスの配線が適切にテストされ、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 がプロセッサによってデータ バスに配置された値であることを確認します。相手側のメモリデバイスによって正しく受信されます0 0 0 0 0 00 0 0 0 0 0 • 各ビットを個別にテストできます• ウォーキング 1 テストを実行するには、表に示されている最初のデータ値を書き込み、それを読み戻して検証し、2 番目の値を書き込み、検証などを行います。• テーブルの最後に到達すると、テストは完了です

于 2013-12-18T12:33:25.317 に答える
0

データ エラーとアドレス エラーの両方を推測できると思われるメモリ パターンを設計することにしました。概念は、読み取りエラーの可能性を示す重要な指標として、大幅に異なる値を使用することです。コンセプトは、一度に 1 つのピンの障害を検出することでもあります。

このテストでは、ボトム アドレスとトップ アドレス (0x000000 と 0x3FFFFF - 私のチップには 22 個のアドレス ラインがあります) のみから交互に読み取ります。これらの場所には、それぞれ 0xFF と 0x00 を配置します (バイト幅)。アイデアは、すべてのアドレスとデータ行を反転させて、何が起こるかを確認することです。(フラッシュ内の他のすべての値には、0x00 および 0xFF とは少なくとも 3 ビットの違いがあります)

1 つのピン障害で誤って送信される可能性のあるアドレスは 44 あります。各アドレスには、22 のアドレス ピンのどれが反転されたかを表す 22 の値の 1 つを入れます。それぞれが 2 ビットずつ異なり、00 や FF とは 3 ビットずつ異なります。(私は互いに異なる3ビットを試しましたが、8ビットは14個の値しか取得できませんでした)

        07,0B,0D,0E,16,1A,1C,1F,25,29,2C,
        2F,34,38,3D,3E,43,49,4A,4F,52,58

残りのアドレスには、33、55、66、99、AA、CC の 6 つの値の素敵なパターンを配置しました。(他のすべての値とは 3 ビット異なります)value(address) = nicePattern[ sum of bits set in address % 6];

私はこれをテストし、機械的ストレスに同期した断続的な障害インシデントを数百件統計的に収集しました。

  • シングルビットエラー検出可能
  • 推定可能なダブル ビット エラー (頻繁なシングル ビット エラーの組み合わせによって説明可能)
  • 3 つ以上のビット エラー (一般的に決定的でない)

一部のチップには 3 つのピンに障害がありましたが、インシデントの 70% は単一ビットでした (通常、同時に障害が発生することはありませんでした)。

現在、テスト グループはこれを使用して、失敗している特定の接続を特定しています。

于 2013-12-19T10:29:42.867 に答える