NAND Bad Columns analysis and removal
Every crystal of modern NAND chip consists of several planes. Typically, it consists of 2 or 4 planes. The plane consists of an array of memory cells grouped into pages and blocks. Planes are connected so that Plane 0 is composed of even physical blocks (0,2,4,6, …), and Plane 1 comprises odd blocks (1,3,5,7, …). Because of the relatively poor quality, TLC NAND chips have factory defects. The defects for each crystal and plane are unique. Within all the pages of each block from one plane defects are identical. These defects called Bad Columns. The Bad Columns presented only in chips with a WL tripple address / WL tripple address with DDR data transfer protocols.
These vertical stripes are Bad Columns. Number of Bad columns within one page can be any, on practise 1…80 defects/columns (2…160 bytes per page). Typical size of bad columns is 2 bytes, rarely 1 byte, sometimes they are grouped together as 4,6 and more bytes. A distrubution of bad columns across the page is unique for each plane. The Bad Columns usually filled by 00/FF or any other binary patterns. When extracting physical image of chip, the physical blocks read sequentially, so the image consists of alternating blocks from Plane 0 and Plane 1 (Plane 2, Plane 3). Since pages and blocks of different planes have different defects, in the physical image (dump) the Bad Columns will repeat with period (area size) of 2 or 4 blocks. Physical image with 2 planes and Bad Columns presented on the illustration below.
When writing and reading data into NAND, the controller skips Bad Columns, since it knows their location in the chip. Bad Columns do not store any user data. Before analysis and logical image reconstruction, it’s necessary to remove Bad Columns out of physical image, as they shift all data.
It’s necessary to determine the location, size and number of Bad columns within one page of each plane. Location is offset of bad column from the beginning of page. Bad Column size expressed in bytes. Number determines number of offsets from the beginning of page, that must be added in order to cut Bad Column defects.
Case #1 Video tutorial
[swf src=”https://rusolut.com//wp-content/uploads/2016/02/BadColumn1.swf” width=1080 height=500][/swf]
Case #2 Video tutorial
[swf src=”https://rusolut.com//wp-content/uploads/2016/02/BadColumn2.swf” width=1080 height=500]
Outdated method (for previous Visual Nand Reconstructor software without BCR element)
It is necessary to determine period of the Bad Columns. This period is same for all NAND chips /crystals for particular case. Usually period equals 2 or 4 physical blocks. It can be found using Bitmap mode. On the picture below, the area between horizontal red and violet lines is period (area size) that equals 2 blocks in this example, and it shows that crystal consists of 2 planes. The size of physical block is 258 pages, so, the period (area size) = number of pages in period x page size = 516 x 9216 = 4755456 bytes.
Divide the physical image into 2 parts by planes, the way that the first part contains only blocks from plane 0 ,
second one only blocks from plane 1. The physical image can be separated using “Offsets” element. Two (four) Offset
elements must be connected to one Phy image element. At the parameters tab in both elements the same Area Size (period) in bytes must be set, which equal to period from previous step. Area Size = 4755456 bytes.
The first “Offset” element supposed to remove the lower part of the periodic area (remove block of plane 1), the second element removes the top part of the periodic area (remove block of pane 0). So, in first element we add offset cicking by “+” button with settings “2377728-2377728”, in the second “0-2377728”.
When physical image divided by planes, the period of Bad Columns becomes equal to one page (one horizontal line), in this case 9216 bytes. The positions of bad columns differs in both planes.
To remove Bad Columns in each plane there are another two offset elements must be connected, with period (Area size) = page size, in this case 9216 bytes. Each page of one plane has same offsets of Bad Columns.
Now all Bad Columns must be removed from both planes (both offsets elements). In order to find bad columns the “parent” element must be opened in bitmap mode (the one which keeps blocks of plane 0 / plane 1).
Scroll horizontally to find a bad column pattern. When bad column is found, its beginning and end must be selected on the same line. When bad column selected, press button with red and green arrows to cut it and proceed to next bad column. Repeat same procedure for all planes of all phsical images, because they all have different Bad Columns.
When all the bad columns in all planes removed, it is necessary to unite all Offset elements together for further analysis. This can be made using the Unite element. In Unite element the number of inputs must be set, which corresponds to the number of planes = 2, then consistently connect all Offset elements. It has Area size parameter, which should be set according to physical block size of NAND chip (block size of one plane). Now the physical image is ready for further logical image reconstruction and data recovery.