Readデータのエラー検査
NAND Flash Memory(以下NAND)は、様々な要因でデータエラーが起きます。
- Read Distrub
- ブロック内でReadした以外のページがダメージを受け、ビット化けが発生。
- Data Retantion
- 長時間アクセスしなかった場合、電荷が抜け、ビット化けが発生
- 電源断
- アクセス中に電源断が発生すると、NANDの状態が不安定になり、データエラーが発生
勿論、書込み(Program)時の不具合が原因で、正しいデータが記録されなかった場合もあります。
- アクセス中に電源断が発生すると、NANDの状態が不安定になり、データエラーが発生
Scriptによる、検査例を下記に紹介します。
異常箇所の特定
SigNAS3には、Readデータをそのままダンプしたり、指定したパターンと比較して異常な箇所を特定する Script Command があります。
【Script 例】
- BKERAS 0 0000
- VSET04 1 0000
- REPEAT 0000005 0000006
- PGPROG 0 0000 $V04_01$ INCRMT 03020100 04040404
- PGREAD 0 0000 $V04_01$
- PGDUMP 0 0400
- PGRDCP 0 0000 $V04_01$ 0400 INCRMT 03020100 04040403
(データ不一致を引き起こす為、意図的に異なる値をセット) - VADD04 1 0001
PGRDCP コマンド
比較長は、4バイト単位のデータの個数を16進数4桁で指定します。
例えば0400を指定すると、4バイト単位のデータを1024個、すなわち4096バイトのデータを比較します。
【結果】
Dump File の内容
Line | Cnt | Channel | Chip | Block | Page | WordNo | Dump |
3 | 1 | 0 | 0 | 0 | 0 | 0 | 03020100 |
3 | 1 | 0 | 0 | 0 | 0 | 1 | 07060504 |
3 | 1 | 0 | 0 | 0 | 0 | 2 | 0B0A0908 |
3 | 1 | 0 | 0 | 0 | 0 | 3 | 0F0E0D0C |
3 | 1 | 0 | 0 | 0 | 0 | 4 | 13121110 |
3 | 1 | 0 | 0 | 0 | 0 | 5 | 17161514 |
【解説】
本例では、予めセットしたパタン通りのデータがProgramされ、Readされています。
Compare File の内容
Line | Cnt | Channel | Chip | Block | Page | WordNo | Comp |
3 | 1 | 0 | 0 | 0 | 0 | 1 | 00000007 |
3 | 1 | 0 | 0 | 0 | 0 | 2 | 0000000E |
3 | 1 | 0 | 0 | 0 | 0 | 3 | 00000005 |
3 | 1 | 0 | 0 | 0 | 0 | 4 | 0000001C |
3 | 1 | 0 | 0 | 0 | 0 | 5 | 0000001B |
【解説】
不一致の場所と比較結果(XOR値、不一致のビットが1で表される)をCompare Fileに保存します。
Word 0 : 本例では、不一致のビットはありませんので、Compare Fileには記録されません。
Word 1 : Readデータの最下位データ4に対し比較データ3とのXORである7が記録されています。
Word 2 : Readデータの最下位データ8に対し比較データ6とのXORである Eが記録されています。
ECCブロック毎のエラー数解析
ECC Code長に基づき、ECCブロック毎のエラー数解析を行う機能もあります。
【例】
下記仕様のNANDについての評価
Block Size: 1152page
Page Size: 18592byte
ECC Code Length: 1162byte
∴1page当たりのECCblock数 = 18592byte/1162byte = 16
【Script 例】
Randomデータ(seed:456789AB)記録後、ダメージを与えてビット化けさせたブロックについての評価
PGRDEC コマンド
指定したページをリードし、指定したパターンと比較を行い、エラー数をカウントします。
ECCANAを1にセットした場合、エラーカウント結果(ECCブロックごとのビットエラー数)をError Count Fileに保存します。
- ECCANA 1
- VSET04 1 0000
- PGRDEC 0 0000 0000 RDMOVL 456789AB
- REPEAT 0000002 0000003
- PGRDEC 0 0000 $V04_01$ RDMOVL
- VADD04 1 0001
※ RDMOVLは、RDMOVLパターンでブロックプログラムしたブロック内のページをリード、比較するコマンドです。
使用方法は下記の通り、他のパターンと異なりますので注意が必要です。
PGRDEC 0 0000 0000 RDMOVL 456789AB(初期設定のみを行い、リードや比較は行わない)
PGRDEC 0 0000 0000 RDMOVL(ページ0のリードと比較)
Error Count file の内容(抜粋)
Channel | CE | Block | Page | BitError | ECBK0 | ECBK1 | ECBK2 | ECBK3 | ECBK4 | ECBK5 | ECBK6 | ECBK7 | ECBK8 | ECBK9 | ECBK10 | ECBK11 | ECBK12 | ECBK13 | ECBK14 | ECBK15 |
2 | 0 | 0 | 1062 | 48 | 3 | 2 | 0 | 2 | 5 | 5 | 3 | 6 | 4 | 2 | 1 | 2 | 2 | 4 | 5 | 2 |
2 | 0 | 0 | 1066 | 44 | 2 | 1 | 0 | 1 | 5 | 2 | 4 | 4 | 1 | 2 | 2 | 1 | 5 | 4 | 9 | 1 |
BKRDECコマンド
指定したブロックの全ページをリードし、指定したパターンと比較を行い、エラー数をカウントします。
ECCANAを1にセットした場合、エラーカウント結果(ECCブロック中のビットエラー数のヒストグラム)をError Count Fileに保存します。
エラーが0ビットのECCブロック数、エラーが1ビットのECCブロック数、・・・、エラーが253ビットのECCブロック数、エラーが254ビット以上のECC ブロック数の順に、255個の結果を保存します。
Script
ECCANA 1
BKRDEC 0 $V04_00$ RDMOVL 456789AB
Error Count file の内容
SigNAS3は、GUIにもいくつかのError分析機能がありますので、目的に応じてご使用下さい。
詳しくはOperationManualを参照願います。