About Badblock detection

A bad block in NAND Flash Memory (hereafter NAND) is a block that is not suitable for storing data.

There are two types of Bad Blocks: initial Bad Blocks and later Bad Blocks.

Initial bad blocks occur at about 1% of the capacity during the NAND manufacturing process.

Subsequent bad blocks are caused by degradation from repeated programming and erasing of the NAND.

Functions is provided in the Operations menu of the GUI.

This feature scan for initial (factory default) Bad Blocks.

The specified bytes of the first page and last page in each block are read, and if either is "00", the block is judged to be a bad block.

Most NAND manufacturers record the Bad Block Marker as above before shipping for identification, but please check the datasheet for details.

With "Treminate with NAND Fail" enabled as shown in the figure below,  if you access the Bad Block while executing the script, the execution of the script will be interrupted with the message as shown below.

To avoid interruption, uncheck "Treminate with NAND Fail" or measure in an area without Bad Blocks.

However, in Error Rate measurement, Bad Blocks are automatically skipped if Bad Block Registration is performed in advance.

It is also possible to detect Bad Blocks programmatically (using Script, etc.).

According to the definition of BadBlock in a NAND (3D-TLC) datasheet, it fails when programming the first page of each block Iin SLC mode.

Based on this definition, I inspected it with a simple Script.

Script example

Script execution

BADBlock検出について

Comparative verification of measurement results

As shown below, it matches the measurement result by the Bad Block Scan function of the GUI.

Sub board

Script

RESULT file

In this Script, the loop of the program to the NAND memory starts from 0, So, Program Fail Block is Block Number = Repeat count - 1

Result by Bad Block Scan of GUI

Read status definition (in a NAND data sheet) 

The definition of Bad Block varies from user to user.

The script of SigNAS3 also has the following commands, so please create an appropriate inspection program according to the purpose of evaluation and selection.

BKRDCP: Block Read & Compare

Reads all pages of the specified block and compares them with the specified pattern.

Save the mismatch location and the comparison result (XOR value, mismatch bit is represented by 1) in Compare File.

BKRDEC: Block Read & Error Count

Reads all pages of the specified block, compares with the specified pattern, and counts the number of errors.

Saves the error count results to the Error Count File.

In "BAD Bolck Scan" published on June 16, 2023, we introduced the SigNAS-3 GUI method and the script method using dedicated commands.

Bad Block Scan

A bad block in NAND Flash Memory (hereafter NAND) is a block that is not suitable for storing data. There are two types of Bad Blocks: initial Bad Blocks and l…

In fact, even those who are not familiar with creating scripts …

can easily perform similar tests by using the ``Error Rate'' feature provided in the GUI.

Please see the second half for details

The definition of BAD Block varies depending on the customer, but for special purposes, it is required that all blocks of NAND Flash Memory (hereinafter referred to as NAND) have no errors.

The procedures and requirements for this test are as follows:

  • Program (write) and read data to all blocks, and no errors occur during execution.
  • Then, compare the data and make sure there are no discrepancies.

Below is an example script that supports this.

  1. All Area Write & Read to find NG Block
  2. VSET04 0 0000
  3. 'Repeat for all Blocks (4096dec=1000hex)
  4. REPEAT 0000009 0001000
  5. 'Block Erase
  6. BKERAS 0 $V04_0$
  7. 'Block Program
  8. BKPROG 0 $V04_0$ RDMOVL 456789AB
  9. Block Read Error count
  10. BKRDEC 0 $V04_0$ RDMOVL 456789AB
  11. BKRDCP 0 $V04_0$ 0210 RDMOVL 456789AB
  12. 'Block number increment
  13. VADD04 0 0001

※12、13 lines... Either one may be sufficient depending on your purpose.

Setting screen at runtime of the script

BKRDEC: Block Read & Error Count

Reads all pages of the specified block, compares with the specified pattern, and counts the number of errors.

Saves the error count results to the Error Count File.

BKRDCP: Block Read & Compare

Reads all pages of the specified block and compares them with the specified pattern.

Save the mismatch location and the comparison result (XOR value, mismatch bit is represented by 1) in Compare File.

Compare File contents

Line Cnt Channel Chip Block Page WordNo Comp
00000008000008DD 0E 018DC 002C 01D9 00002000

Error information that occurs during command execution is recorded in the Result File.

Result file contents

  • Error at Line9 Repeat-103-Line11: Erase Fail CH11 (Status CH11:E1)
  • Error at Line9 Repeat-103-Line13: Block Program Fail CH11 (Status CH11:E3)
  • Error at Line9 Repeat-431-Line11: Erase Fail CH11 (Status CH11:E1)
  • Error at Line9 Repeat-431-Line13: Block Program Fail CH11 (Status CH11:E3)

In fact, even those who are not familiar with creating scripts …

You can easily perform similar tests by using the ``Error Rate'' feature provided in the GUI.

However, the location where the Data Compare Error occurs is until the Block is specified.

Of course, it is possible to investigate in more detail using other functions of the GUI, so if you are interested, please refer to the Operation Guide and take on the challenge.

After setting the measurement area as a parameter, press “Exceute” to start measurement.

【Save Log】

If checked, the number of errors per block will be saved to a file.

Save it as ErrorRate.log in the same folder as the SigNAS3 executable file SigNAS3.exe.

If a file with the same name already exists, it will be overwritten.

File contents (example)

Repeat Channel BlockBitErrorUncError1UncError2UncError3 UncError4
011211000
011433000
011622000
0111211000

【Save Failure Log】

If checked, the error details will be saved to a file if an error occurs during NAND operation.

Save it as ErrorRateFailure.log in the same folder as the SigNAS3 executable file SigNAS3.exe.

If a file with the same name already exists, it will be overwritten.

File contents (example)

RepeatChannel Block FailureDescription
011102EraseFail
011430EraseFail

For a more detailed evaluation of W/R data errors, please also refer to "Read data error inspection" published on June 24, 2023.

Read data error check

Data error occurs in NAND Flash Memory (NAND) due to various factors. An example of inspection using Script is shown below. Identifying Anomalies SigNAS3 has a…