データ エラーとアドレス エラーの両方を推測できると思われるメモリ パターンを設計することにしました。概念は、読み取りエラーの可能性を示す重要な指標として、大幅に異なる値を使用することです。コンセプトは、一度に 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% は単一ビットでした (通常、同時に障害が発生することはありませんでした)。
現在、テスト グループはこれを使用して、失敗している特定の接続を特定しています。