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.
Later bad blocks are caused by degradation from repeated programming and erasing of the NAND.
SigNAS3 includes an initial bad block detection function 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 data sheet for details.
Precautions when running Script when Bad Block exists
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.
Example: Bad block detection by script
It is also possible to detect Bad Blocks programmatically (using Script, etc...).
According to the definition of BadBlock in a NAND (3D-TLC) data sheet, it fails when programming the first page of each block Iin SLC mode.
Based on this definition, I inspected it with a simple Script.
Comparative verification of measurement results
As shown below, it matches the measurement result by the Bad Block Scan function of the GUI.
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
62-1 = 61 --> 3D hex
286-1=285 --> 11D hex
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.