From a NAND product data sheet..... This NAND Flash device is specified to have a minimum of 3,936 MLC blocks (NVB) out of 4,096 total available blocks. This means the devices may have blocks that are invalid when shipped from the factory. An invalid block is one that contains one or more bad bits. Additional bad blocks may develop with use. However, the total number of available blocks will not fall below NVB during the endurance life of the product. Although NAND Flash memory devices may contain bad blocks, the devices can be used quite reliably in systems that provide bad-block management and error correction algorithms. This type of software environment ensures data integrity. Internal circuitry isolates each block from other blocks, so the presence of a bad block does not affect the operation of the rest of the NAND Flash array. The first block (physical block address 00h) for each CE# is guaranteed to be valid with ECC when shipped from the factory. NAND Flash devices are shipped from the factory erased. The factory identifies invalid blocks before shipping by attempting to program the bad-block mark into every location in the first page of each invalid block. It may not be possible to program every location with the bad-block mark. However, the first spare are location in each bad block is guaranteed to contain the bad-block mark. This method is compliant with ONFI Factory Defect Mapping requirements. System software should check bytes 4,096 to 4,319 on the first page of each block for a 00h value prior to performing any PROGRAM or ERASE operations on the NAND Flash device. A bad-block table can then be created, allowing system software to map around these areas. Factory testing is performed under worst-case conditions. Because blocks marked bad may be marginal, it may not be possible to recover this information if the block is erased. Over time, some memory locations may fail to program or erase properly. In order to ensure that data is stored properly over the life of the NAND Flash device, the following precautions are required: Check status after a PROGRAM, ERASE, or COPYBACK operation. Under typical-use conditions, a minimum of 12-bit ECC for MLC devices is required per 540 bytes of data. Use bad block management and a wear-leveling algorithm.