Robust storage of bad column data and parity bits on word line

Apparatuses and techniques are described for reliably storing bad column data in a memory device. Units of bad column data and related units of error detection data are stored in non-adjacent groups of memory cells connected to a word line in a ROM block. A unit of bad column data and a related unit of error detection data can be stored in respective groups of memory cells which are relatively far apart from one another along the word line. This helps ensure that a defect in some NAND strings will not affect both the unit of bad column data and a related unit of error detection data. In another aspect, a unit of bad column data and a related unit of error detection data can be stored using different input/output circuits to further increase robustness.

BACKGROUND

The present technology relates to the operation of storage and memory devices.

Semiconductor memory devices have become more popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices.

A charge-storing material such as a floating gate or a charge-trapping material can be used in such memory devices to store a charge which represents a data state. A charge-trapping material can be arranged vertically in a three-dimensional (3D) stacked memory structure, or horizontally in a two-dimensional (2D) memory structure. One example of a 3D memory structure is the Bit Cost Scalable (BiCS) architecture which comprises a stack of alternating conductive and dielectric layers.

A memory device can include memory cells which may be arranged in series, in NAND strings (e.g., NAND chains), for instance, where select gate transistors are provided at the ends of a NAND string to selectively connect a channel of the NAND string to a source line or bit line. However, various challenges are presented in operating such memory devices.

DETAILED DESCRIPTION

Apparatuses and techniques are described for reliably storing bad column data in a memory device.

In some memory devices, memory cells are joined to one another such as in NAND strings in a block or sub-block. Referring toFIG. 4, for example, each NAND string comprises a number of memory cells connected in series between one or more drain-end select gate transistors (referred to as SGD transistors), on a drain-end of the NAND string which is connected to a bit line, and one or more source-end select gate transistors (referred to as SGS transistors), on a source-end of the NAND string or other memory string or set of connected memory cells, which is connected to a source line. Further, the memory cells can be arranged with a common control gate line (e.g., word line) which acts a control gate. A set of word lines extends from the source-side of a block to the drain-side of a block. Memory cells can be connected in other types of strings and in other ways as well.

In a 3D memory structure, the memory cells may be arranged in vertical NAND strings in a stack, where the stack comprises alternating conductive and dielectric layers. The conductive layers act as word lines which are connected to the memory cells. Each NAND string may have the shape of a pillar which intersects with the word lines to form the memory cells. In a 2D memory structure, the memory cells may be arranged in horizontal NAND strings on a substrate.

Each block of memory cells is typically tested at the time of manufacture, before being shipped to the end user, to identify defective (bad) NAND strings which are not suitable for storing data. Defects, including, e.g., short circuits, can be caused by manufacturing variations and other factors. To address this problem without having to discard an entire block when only one, or a few, NAND strings are defective, a block can include a number of redundant columns of NAND strings which substitute for defective primary columns of NAND strings. A column can represent a set of successive NAND strings such as 16 NAND strings. The memory cells connected to a word line in a column can store a word of data. As depicted inFIG. 6, for example, a block B0-1for storing user data can include primary columns C0-C31and redundant columns C32-C39. If the testing indicates that a primary column of NAND strings include a defective NAND string, that column is identified in a column replacement table147(FIGS. 1A and 7) so that it is replaced by a redundant column.

The data which identifies the bad column can be stored in a bad column block. As depicted inFIG. 5A, for example, a block B0-0for storing bad column can include primary columns C0-C31. A bad column block is considered to be a read-only memory (ROM) because the data is typically maintained in the block over the lifetime of the memory device and is not altered. When the memory device is powered on, the bad column data is read in by a controller and used to provide the column replacement table. Subsequently, the column replacement table is accessed during read and write operations.

Moreover, to improve reliability, one approach is to store the bad column data with parity bits. In this approach, when the bad block data is read, the parity bits are calculated from the bad column data and compared to parity bits which are stored in the ROM. If there is a match between the two sets of parity bits, the unit of bad column data is validated. If there is a mismatch between the two sets of parity bits, the unit of bad column data is considered to be bad. The parity bits are one example of error detection data.

However, the bad column data and/or parity bits which are read from the ROM can sometimes be faulty. Faults can be caused by various factors including temperature variations, weak short circuits, weak open circuits and changes in resistivity of the semiconductor materials in the memory device. In some cases, a fault is caused by improper operation of transistors in a sense circuit. A fault which is not present at the time of manufacture can develop over the lifetime of a memory device. A fault can occur with the bad column data and/or the parity bits, making it impossible to accurately validate the bad column data. For example, an error in the unit of error detection data can result in a mismatch between the two sets of parity bits when the unit of bad column data is not erroneous, or in a match between the two sets of parity bits when the unit of bad column data is erroneous.

Moreover, a fault can affect both a bad ROM block and user data blocks.

Techniques provided herein address the above and other issues. In one approach, units of bad column data and related units of error detection data are stored in non-adjacent groups of memory cells connected to a word line in the ROM block. One or more word lines can be used. A unit of error detection data is related to a unit of bad column data when the unit of error detection data is calculated from the unit of bad column data, e.g., using an error detection code. For example, the error detection data may comprise parity bits, as mentioned. Additionally, multiple copies of the units of bad column data and related units of error detection data are stored in memory cells connected to the word line. A unit of bad column data and a related unit of error detection data can be stored in respective groups of memory cells which are relatively far apart from one another along the word line. This helps ensure that a defect in a few neighboring NAND strings will not affect both the unit of bad column data and the related unit of error detection data. If the unit of bad column data is stored in defective NAND strings, the read back unit of bad column data and the corresponding calculated error detection data will be faulty. When the faulty unit of calculated error detection data is compared to the reference unit of error detection data which is read back from the ROM block, there will be a mismatch.

When a mismatch is detected, an attempt can be made to read the unit of bad column data and the related unit of error detection data from another copy of the data from the memory cells connected to the word line.

In another aspect, a unit of bad column data and a related unit of error detection data can be stored using different input/output circuits. This helps provide additional reliability since a defect in one input/output circuit will not affect the operation of the other input/output circuit.

In another aspect, there are first level (L1) input/output circuits and second level (L2) input/output circuits, such as inFIG. 5A. A unit of bad column data and a related unit of error detection data can be stored using a common first level input/output circuit but different second level input/output circuits, as inFIG. 12A. Or, a unit of bad column data and a related unit of error detection data can be stored using different first level input/output circuits, as inFIG. 11A.

In another aspect, a sequence of data is scrambled, where the sequence comprises units of bad column data adjacent to related units of error detection data. The sequence can be scrambled over a full length of the sequence, such as inFIG. 10A, or over a portion of the sequence which is less than the full length. For example, the sequence can be scrambled over a half-length of the sequence, such as inFIG. 11A, or over a quarter length of the sequence, such as inFIG. 12A.

The scrambling can be performed at a controller, e.g., in the scrambling circuit148ofFIG. 1A, at a first level of I/O circuits, e.g., in the scrambling circuits910,920,930and940inFIG. 9A, and/or at a second level of I/O circuits, e.g., in the scrambling circuits915a,915b,925a,925b,935a,935b,945aand945binFIG. 9B. The scrambling circuit may have circuitry such as a multiplexer and demultiplexer for rearranging data units.

In another aspect, the memory cells of the ROM block are provided in divisions, where the controller performs read and write operations one division at a time in cycles. This helps ensure that a unit of bad column data and a related unit of error detection data are stored relatively far apart from one another on a word line. For example, a respective group of memory cells to which a unit of bad column data is written can be separated (by a separation distance dented by the arrow1022inFIG. 10A) from a respective group of memory cells to which the related unit of error detection data is written by at least 10% of a length of the word line (the length is denoted by the arrow1021inFIG. 10A). The separation can be at least 1/Nth of the length of the word line when there are N divisions of memory cells along the word line. N is a number greater than one.

These and other features are discussed further below.

FIG. 1Ais a block diagram of an example storage device. A memory device100, such as a non-volatile storage system, may include one or more memory die108. The memory die108, or chip, includes a memory structure126of memory cells, such as an array of memory cells, control circuitry110, and read/write circuits128. The memory structure126is addressable by word lines via a row decoder124and by bit lines via a column decoder132. The read/write circuits128include multiple sense blocks51,52, . . .53(sensing circuitry) and allow a page of memory cells to be read or programmed in parallel. Typically a controller122is included in the same memory device100(e.g., a removable storage card) as the one or more memory die108. The controller may be separate from the memory die. Commands and data are transferred between the host168and controller122via a data bus120, and between the controller and the one or more memory die108via lines118.

The control circuitry110cooperates with the read/write circuits128to perform memory operations on the memory structure126, and includes a state machine, an on-chip address decoder114, and a power control module115(power control circuit). A storage region113may be provided, e.g., for operational parameters and software/code. In one embodiment, the state machine is programmable by the software. In other embodiments, the state machine does not use software and is completely implemented in hardware (e.g., electrical circuits).

The on-chip address decoder114provides an address interface between that used by the host or a memory controller to the hardware address used by the decoders124and132. The power control module115controls the power and voltages supplied to the word lines, select gate lines, bit lines and source lines during memory operations. It can include drivers for word lines, SGS and SGD transistors and source lines. See alsoFIG. 3. The sense blocks can include bit line drivers, in one approach.

In some implementations, some of the components can be combined. In various designs, one or more of the components (alone or in combination), other than memory structure126, can be thought of as at least one control circuit which is configured to perform the techniques described herein including the steps of the processes described herein. For example, a control circuit may include any one of, or a combination of, control circuitry110, state machine112, decoders114and132, power control module115, sense blocks51,52, . . . ,53, read/write circuits128, controller122, and so forth.

The off-chip controller122(which in one embodiment is an electrical circuit) may comprise a processor164, memory such as ROM160and RAM161and an error-correction code (ECC) engine145. The ECC engine can correct a number of read errors. The RAM161can be a DRAM which includes a storage location162for non-committed data. During programming, a copy of the data to be programmed is stored in the storage location162until the programming is successfully completed. In response to the successful completion, the data is erased from the storage location and is committed or released to the block of memory cells. The storage location162may store one or more word lines of data.

The controller may further include a column replacement circuit146and a column replacement table147. The column replacement circuit may include hardware, software and/or firmware for performing the processes described herein. In program and read operations, the column replacement circuit may access the column replacement table to identify addresses of bad, e.g., defective, columns and corresponding redundant columns which replace them.

The controller may further include a scrambling circuit148which can be used to scramble a sequence of data units in a write operation so that bad column data units are not adjacent to related units of error detection data in the groups of memory cell in which the units are written. The scrambling circuit can also be used in a reverse process, to unscramble a sequence of data units so that bad column data units are adjacent to related units of error detection data in a read operation. The scrambling circuit148can include a multiplexer and demultiplexer for rearranging data units as described herein.

The controller may further include an error detection data circuit149which can be used to generate units of error detection data from respective units of bad column data.

The controller may further include a comparison circuit150which can be used to compare calculated units of error detection data which are calculated from units of bad column data which are read back from the ROM block to reference units of error detection data which are read back from the ROM block. If a mismatch is detected for a unit of bad column data, the validation fails. If a mismatch is not detected for a unit of bad column data, the validation is successful.

A memory interface163may also be provided. The memory interface, in communication with ROM, RAM and processor, is an electrical circuit that provides an electrical interface between controller and memory die. For example, the memory interface can change the format or timing of signals, provide a buffer, isolate from surges, latch I/O and so forth. The processor can issue commands to the control circuitry110(or any other component of the memory die) via the memory interface163.

The memory in the controller122, such as such as ROM160and RAM161, comprises code such as a set of instructions, and the processor is operable to execute the set of instructions to provide the functionality described herein. Alternatively or additionally, the processor can access code from a subset126aof the memory structure, such as a reserved area of memory cells in one or more word lines.

For example, code can be used by the controller to access the memory structure such as for programming, read and erase operations. The code can include boot code and control code (e.g., a set of instructions). The boot code is software that initializes the controller during a booting or startup process and enables the controller to access the memory structure. The code can be used by the controller to control one or more memory structures. Upon being powered up, the processor164fetches the boot code from the ROM160or the subset126afor execution, and the boot code initializes the system components and loads the control code into the RAM161. Once the control code is loaded into the RAM, it is executed by the processor. The control code includes drivers to perform basic tasks such as controlling and allocating memory, prioritizing the processing of instructions, and controlling input and output ports.

Generally, the control code can include instructions to perform the functions described herein including the steps of the flowcharts discussed further below, and provide the voltage waveforms including those discussed further below. A control circuit can be configured to execute the instructions to perform the functions described herein.

Semiconductor memory devices include volatile memory devices, such as dynamic random access memory (DRAM) or static random access memory (SRAM) devices, non-volatile memory devices, such as resistive random access memory (ReRAM), electrically erasable programmable read-only memory (EEPROM), flash memory (which can also be considered a subset of EEPROM), ferroelectric random access memory (FRAM), and magnetoresistive random access memory (MRAM), and other semiconductor elements capable of storing information. Each type of memory device may have different configurations. For example, flash memory devices may be configured in a NAND or a NOR configuration.

A NAND memory array may be configured so that the array is composed of multiple strings of memory in which a string is composed of multiple memory elements sharing a single bit line and accessed as a group. Alternatively, memory elements may be configured so that each element is individually accessible, e.g., a NOR memory array. NAND and NOR memory configurations are examples, and memory elements may be otherwise configured.

The semiconductor memory elements located within and/or over a substrate may be arranged in two or three dimensions, such as a 2D memory structure or a 3D memory structure. In a 2D memory structure, the semiconductor memory elements are arranged in a single plane or a single memory device level. Typically, in a 2D memory structure, memory elements are arranged in a plane (e.g., in an x-y direction plane) which extends substantially parallel to a major surface of a substrate that supports the memory elements. The substrate may be a wafer over or in which the layer of the memory elements are formed or it may be a carrier substrate which is attached to the memory elements after they are formed. As a non-limiting example, the substrate may include a semiconductor such as silicon.

As a non-limiting example, a 3D memory structure may be vertically arranged as a stack of multiple 2D memory device levels. As another non-limiting example, a 3D memory array may be arranged as multiple vertical columns (e.g., columns extending substantially perpendicular to the major surface of the substrate, i.e., in the y direction) with each column having multiple memory elements. The columns may be arranged in a 2D configuration, e.g., in an x-y plane, resulting in a 3D arrangement of memory elements with elements on multiple vertically stacked memory planes. Other configurations of memory elements in three dimensions can also constitute a 3D memory array.

Typically, in a monolithic 3D memory array, one or more memory device levels are formed above a single substrate. Optionally, the monolithic 3D memory array may also have one or more memory layers at least partially within the single substrate. As a non-limiting example, the substrate may include a semiconductor such as silicon. In a monolithic 3D array, the layers constituting each memory device level of the array are typically formed on the layers of the underlying memory device levels of the array. However, layers of adjacent memory device levels of a monolithic 3D memory array may be shared or have intervening layers between memory device levels.

2D arrays may be formed separately and then packaged together to form a non-monolithic memory device having multiple layers of memory. For example, non-monolithic stacked memories can be constructed by forming memory levels on separate substrates and then stacking the memory levels atop each other. The substrates may be thinned or removed from the memory device levels before stacking, but as the memory device levels are initially formed over separate substrates, the resulting memory arrays are not monolithic 3D memory arrays. Further, multiple 2D memory arrays or 3D memory arrays (monolithic or non-monolithic) may be formed on separate chips and then packaged together to form a stacked-chip memory device.

One of skill in the art will recognize that this technology is not limited to the 2D and 3D exemplary structures described but covers all relevant memory structures within the spirit and scope of the technology as described herein and as understood by one of skill in the art.

FIG. 1Bis a block diagram depicting one embodiment of the sense block51ofFIG. 1. An individual sense block51is partitioned into one or more core portions, referred to as sense circuits60-63or sense amplifiers, and a common portion, referred to as a managing circuit190. In one embodiment, there will be a separate sense circuit for each bit line/NAND string and one common managing circuit190for a set of multiple, e.g., four or eight, sense circuits. Each of the sense circuits in a group communicates with the associated managing circuit via data bus172. Thus, there are one or more managing circuits which communicate with the sense circuits of a set of storage elements (memory cells).

The sense circuit60, as an example, comprises sense circuitry170that performs sensing by determining whether a conduction current in a connected bit line is above or below a predetermined threshold level. The sensing can occur in a read or verify operation. The sense circuit also supplies a bit line voltage during the application of a program voltage in a program operation.

The sense circuitry may include a Vbl selector173, a sense node171, a comparison circuit175and a trip latch174. During the application of a program voltage, the Vbl selector173can pass Vbl_unsel (e.g., 2 V) to a bit line connected to a memory cell which is inhibited from programmed, or 0 V to a bit line connected to a memory cell which is being programmed in the current program loop. A transistor55(e.g., an nMOS) can be configured as a pass gate to pass Vbl from the Vbl selector173, by setting the control gate voltage of the transistor sufficiently high, e.g., higher than the Vbl passed from the Vbl selector. For example, a selector56may pass a power supply voltage Vdd, e.g., 3-4 V to the control gate of the transistor55.

During sensing operations such as read and verify operations, the bit line voltage is set by the transistor55based on the voltage passed by the selector56. The bit line voltage is roughly equal to the control gate voltage of the transistor minus its Vth (e.g., 1 V). For example, if Vbl+Vth is passed by the selector56, the bit line voltage will be Vbl. This assumes the source line is at 0 V. The transistor55clamps the bit line voltage according to the control gate voltage and acts a source-follower rather than a pass gate. The Vbl selector173may pass a relatively high voltage such as Vdd which is higher than the control gate voltage on the transistor55to provide the source-follower mode. During sensing, the transistor55thus charges up the bit line.

In one approach, the selector56of each sense circuit can be controlled separately from the selectors of other sense circuits, to pass Vbl or Vdd. The Vbl selector173of each sense circuit can also be controlled separately from the Vbl selectors of other sense circuits.

During sensing, the sense node171is charged up to an initial voltage such as 3 V. The sense node is then connected to the bit line via the transistor55, and an amount of decay of the sense node is used to determine whether a memory cell is in a conductive or non-conductive state. The comparison circuit175is used to compare the sense node voltage to a trip voltage at a sense time. If the sense node voltage decays below the trip voltage Vtrip, the memory cell is in a conductive state and its Vth is at or below the voltage of the verification signal. If the sense node voltage does not decay below Vtrip, the memory cell is in a non-conductive state and its Vth is above the voltage of the verification signal. The sense circuit60includes a trip latch174that is set by the comparison circuit175based on whether the memory cell is in a conductive or non-conductive state. The data in the trip latch can be a bit which is read out by the processor192.

The managing circuit190comprises a processor192, four example sets of data latches194-197and a data bus120to/from an I/O circuit. For each NAND string, a set of data latches can be provided for storing read and write data while an additional input/output latch XDL, or data transfer latch, is provided for transferring data to/from the other latches. The XDL latches may be represented by the latches512,513,522,523,532,533,542and543ofFIGS. 5A, 9A and 9B.

For example, in a three bit per cell embodiment, three data latches LDL, MDL and XDL are provided for storing read and write data for each NAND string. LDL stores a bit for a lower page of data, MDL stores a bit for a middle page of data and UDL stores a bit for an upper page of data. For example, a set of latches194includes XDL194a, LDL194b, MDL194cand UDL194d. A set of latches195includes XDL195a, LDL195b, MDL195cand UDL195d. A set of latches196includes XDL196a, LDL196b, MDL196cand UDL196d. A set of latches197includes XDL197a, LDL197b, MDL197cand UDL197d.

The processor192performs computations, such as to determine the data stored in the sensed memory cell and store the determined data in the set of data latches. Each set of data latches194-197is used to store data bits determined by processor192during a read operation, and to store data bits imported from the data bus120during a program operation which represent write data meant to be programmed into the memory.

During reading, the operation of the system is under the control of state machine112that controls the supply of different control gate voltages to the addressed memory cell. As it steps through the various predefined control gate voltages corresponding to the various memory states supported by the memory, the sense circuit may trip at one of these voltages and a corresponding output will be provided from sense circuit to processor192via the data bus172. At that point, processor192determines the resultant memory state by consideration of the tripping event(s) of the sense circuit and the information about the applied control gate voltage from the state machine via input lines193. It then computes a binary encoding for the memory state and stores the resultant data bits into data latches194-197.

During program operations for memory cells of a user data block, the data to be programmed (write data) is stored in the set of data latches194-197from the data bus120, in a three bit per cell example. During program operations for memory cells of a ROM block, the units of bad blocks data and error detection data are to be programmed are stored in one latch in the set of data latches194-197in a one bit per cell example.

The program operation, under the control of the state machine, applies a series of programming voltage pulses to the control gates of the addressed memory cells. Each voltage pulse may be stepped up in magnitude from a previous program pulse by a step size in a processed referred to as incremental step pulse programming Each program voltage is followed by a verify operation to determine if the memory cells has been programmed to the desired memory state. In some cases, processor192monitors the read back memory state relative to the desired memory state. When the two are in agreement, the processor192sets the bit line in a program inhibit mode such as by updating its latches. This inhibits the memory cell coupled to the bit line from further programming even if additional program pulses are applied to its control gate.

Each set of data latches194-197may be implemented as a stack of data latches for each sense circuit. In one embodiment, there are four data latches per sense circuit60. In some implementations, the data latches are implemented as a shift register so that the parallel data stored therein is converted to serial data for data bus120, and vice versa. All the data latches corresponding to the read/write block of memory cells can be linked together to form a block shift register so that a block of data can be input or output by serial transfer. In particular, the bank of read/write circuits is adapted so that each of its set of data latches will shift data in to or out of the data bus in sequence as if they are part of a shift register for the entire read/write block.

The data latches identify when an associated memory cell has reached certain mileposts in a program operations. For example, latches may identify that a memory cell's Vth is below a particular verify voltage. The data latches indicate whether a memory cell currently stores one or more bits from a page of data. For example, the LDL latches can be used to store a lower page of data. An LDL latch is flipped (e.g., from 0 to 1) when a lower page bit is stored in an associated memory cell. For three bits per cell, an MDL or UDL latch is flipped when a middle or upper page bit, respectively, is stored in an associated memory cell. This occurs when an associated memory cell completes programming.

FIG. 2is a perspective view of an example memory die200in which of blocks are provided in respective planes P0and P1, consistent withFIG. 1A. The memory die includes a substrate201, an intermediate region202in which blocks of memory cells are formed, and an upper region203in which one or more upper metal layers are patterned such as to form bit lines. Planes P0and P1represent respective isolation regions which are formed in the substrate201. Further, a first block sequence205of a number n blocks, labelled B0-0to B0-n-1, are formed in P0, and a second block sequence215of a number n blocks, labelled B1-0to B1-n-1, are formed in P1. Each plane may have associated row and column control circuitry, such as the row decoder124, read/write circuits128and column decoder132ofFIG. 1A.

In one approach, each sequence of blocks include one ROM block, or bad column block, for storing bad column data while remaining blocks are used to store user data. The bad column block is considered to be a read-only memory (ROM) block because the data is typically maintained in the block over the lifetime of the memory device and is not altered. Moreover, copies of the bad column data may be stored in one block in each block sequence. For example, blocks B0-0and B1-0may store bad column data. Further, the bad column data in a block may apply to the all blocks on the die, e.g., so that the blocks B0-0and B1-0both store the same bad column data for the user data blocks B0-1to B0-n-1and B1-1to B1-n-1. Or, the bad column data in the ROM block of a plane may apply to the user data blocks in that plane.

The control circuitry110, which may be located in a peripheral area of the die, may be shared among the planes, in one approach. Each plane may have a separate set of bit lines.

By providing blocks of memory cells in multiple planes, parallel operations can be performed in the planes.

The substrate201can also carry circuitry under the blocks, and one or more lower metal layers which are patterned in conductive paths to carry signals of the circuitry.

In this example, the memory cells are formed in vertical NAND strings in the blocks. Each block comprises a stacked area of memory cells, where alternating levels of the stack represent word lines. In one possible approach, each block has opposing tiered sides from which vertical contacts extend upward to an upper metal layer to form connections to conductive paths. While two planes are depicted as an example, other examples can use four or more planes. One plane per die is also possible.

While the above example is directed to a 3D memory device with vertically extending NAND strings, the techniques provided herein are also applicable to a 2D memory device in which the NAND strings extend horizontally on a substrate.

FIG. 3depicts an example implementation of the power control module115ofFIG. 1Afor providing voltages to blocks of memory cells. In this example, the memory structure126includes a set310of four related blocks, BLK_0to BLK_3, and another set311of four related blocks, BLK_4to BLK_7. The blocks can be in one or more planes. The row decoder124ofFIG. 1Aprovides voltages to word lines and select gates of each block via pass transistors322. The row decoder provides a control signal to pass transistors which connect the blocks to the row decoder. In one approach, the pass transistors of each set of blocks are controlled by a common control gate voltage. Thus, the pass transistors for a set of block are either all on or off at a given time. If the pass transistors are on, a voltage from the row decoder is provided to the respective control gate lines or word lines. If the pass transistors are off, the row decoder is disconnected from the respective control gate lines or word lines so that the voltage floats on the respective control gate lines or word lines.

For instance, a control gate line312is connected to sets of pass transistors313,314,315and316, which in turn are connected to control gate lines of BLK_4, BLK_5, BLK_6and BLK_7, respectively. A control gate line317is connected to sets of pass transistors318,319,320and321, which in turn are connected to control gate lines of BLK_0, BLK_1, BLK_2and BLK_3, respectively.

Typically, program or read operations are performed on one selected block at a time and on one selected sub-block of the block. An erase operation may be performed on a selected block or sub-block. The row decoder can connect global control lines302to local control lines303. The control lines represent conductive paths. Voltages are provided on the global control lines from a number of voltage drivers. Some of the voltage drivers may provide voltages to switches350which connect to the global control lines. Pass transistors324are controlled to pass voltages from the voltage drivers to the switches350.

The voltage drivers can include a selected data word line (WL) driver347, which provides a voltage on a data word line selected during a program or read operation. The driver347can provide a voltage on WLn. Drivers348,348a,348band348ccan be used for unselected data word lines, and dummy word line drivers349and349acan be used to provide voltages on dummy word lines WLDD and WLDS, respectively, inFIG. 4. For example, the driver348can be used to apply voltages to the drain-side unselected word lines and the driver348acan be used to apply voltages to the source-side unselected word lines.

The voltage drivers can also include separate SGD drivers for each sub-block. For example, SGD drivers346,346a,346band346ccan be provided for SB0, SB1, SB2and SB3, respectively, such as inFIG. 4. In one option, an SGS driver345is common to the different sub-blocks in a block.

The various components, including the row decoder, may receive commands from a controller such as the state machine112or the controller122to perform the functions described herein.

The well voltage driver330provides a voltage Vs1to a well region333in the substrate, via control lines332. The well voltage driver330is one example of a source line driver, where the well region is a source line, e.g., a conductive path connected to the source ends of the NAND strings. In one approach, the well region is common to the blocks. A set of bit lines342is also shared by the blocks. A bit line voltage driver340provides voltages to the bit lines. In a stacked memory device sets of connected memory cells may be arranged in NAND strings which extend vertically upward from the substrate. The bottom (or source end) of each NAND string is in contact with the substrate, e.g., the well region, and the top end (or drain end) of each NAND string is connected to a respective bit line, in one approach.

FIG. 4depicts an example view of NAND strings in a block400representing any of the blocks ofFIG. 2. The block400comprises a plurality of memory cells. The primary NAND strings are arranged in sub-blocks of the block in a 3D configuration. Each sub-block includes multiple NAND strings, where one example NAND string is depicted. For example, SB0, SB1, SB2and SB3comprise example NAND strings400n,410n,420nand430n, respectively. The NAND strings have data word lines, dummy word lines and select gate lines. Each sub-block comprises a set of NAND strings which extend in the x direction and which have a common SGD line or control gate layer. The NAND strings400n,410n,420nand430nare in sub-blocks SB0, SB1, SB2and SB3, respectively. Programming of the block may occur based on a word line programming order. One option is to program the memory cells in different portions of a word line which are in the different sub-blocks, one sub-block at a time, before programming the memory cells of the next word line. For example, this can involve programming WL0in SB0, SB1, SB2and then SB2, then programming WL1in SB0, SB1, SB2and then SB2, and so forth. The word line programming order may start at WL0, the source-end word line and end at WL95, the drain-end word line, for example.

This example depicts one SGD transistor at the drain-end of each NAND string, and one SGS transistor at the source-end of each NAND string. The SGD transistors in SB0, SB1, SB2and SB3may be driven by separate control lines SGD(0), SGD(1), SGD(2) and SGD(3), respectively, in one approach. In another approach, multiple SGD and/or SGS transistors can be provided in a NAND string.

FIG. 5Adepicts an example configuration of the bad column data block B0-0ofFIG. 2and associated access circuitry569, where the memory cells are arranged in divisions. Since a block can typically include thousands of NAND strings, it is convenient to divide the block into divisions. Each division in turn includes many columns, where a column is a group of word lines corresponding to a unit of data such as a word. For example, with a 16-bit word, there are 16 NAND strings in a column In this example, there are four divisions, Div0-Div3, which include columns C0-C7, C8-C15, C16-C23and C24-C31, respectively. Further, each column includes two bytes of memory cells, e.g., 16 memory cells connected to a word line. For example, Div0, Div1, Div2and Div3include bytes B0-B15, B16-B31, B32-B47and B48-B63, respectively.

Program or write operations can be performed by transferring data from the controller to the latches one division at a time in successive cycles. For example, in a first cycle, a word or two bytes of data can be transferred to latches for C0in Div0. The next word can then be transferred to latches for C8in Div1. The next word can then be transferred to latches for C16in Div2. The next word can then be transferred to latches for C24in Div3. In a second cycle, words can be transferred to latches for C1, C9, C17and C25, and so forth. Once all of the write data has been transferred to the latches, the memory cells can be programmed.

Similarly, read operations can be performed by transferring data to the controller from the latches one division at a time. Initially, read data is stored in each of the latches. In a first cycle, a word of data can be transferred from latches for C0in Div0to the controller. The next words can then be transferred from latches for C8, C16and C24. In a second cycle, words can be transferred from latches for C1, C9, C17and C25, and so forth.

This approach allows for greater parallelism which reduces program and read time. Parallelism can also be improved by providing multiple levels of input/output circuits. In this example, the access circuitry569for the block includes two levels of input/output circuits, e.g., a first level L1 and a second level L2. The first level includes a first set of input/output circuits516,526,536and546, with one input/output circuit per division, and the second level includes a second set of input/output circuits514,515,524,525,534,535,544and545, with two input/output circuits per division. This is an example of a pipeline in which two units of data are received by one L1 input/output circuit and transferred to two L2 input/output circuits, one unit per L2 input/output circuit. That is, one half of the data is handled by one L2 input/output circuit and the other half is handled by another L2 input/output circuit.

Each L2 I/O circuit is associated with, and connected to, a set of input/output latches such as the XDL latches discussed previously. For example, the L2 input/output circuits514,515,524,525,534,535,544and545are associated with sets of latches512,513,522,523,532,533,542and543, respectively, which in turn are associated with, and connected to, sets of sense circuits510,511,520,521,530,531,540and541, respectively.

The L1 I/O circuits are connected to the L2 I/O circuits via paths such as data buses. For example, the L1 I/O circuit516is connected to the L2 I/O circuits514and515via paths503and503a, respectively.

The L2 I/O circuits are connected to the latches via paths such as buses. For example, the L2 I/O circuit514is connected to the latches512via a path504.

The latches are connected to the sense circuits via paths such as buses. For example, the latches512are connected to the sense circuits510via a path505.

The sense circuits are connected to the NAND strings of a division via bit lines. For example, the sense circuits510are connected to the NAND strings of Div0via bit lines506.

Subsets580-587of columns in the divisions, comprising columns C0-C3, C4-C7, C8-C11, C12-C15, C16-C19, C20-C23, C24-C27and C28-C31are depicted. The L2 I/O circuit514, latches512and sense circuits510may be used for writing to, and reading from, the subset580. The L2 I/O circuit515, latches513and sense circuits511may be used for writing to, and reading from, the subset581. The L2 I/O circuit524, latches522and sense circuits520may be used for writing to, and reading from, the subset582. The L2 I/O circuit525, latches523and sense circuits521may be used for writing to, and reading from, the subset583. The L2 I/O circuit534, latches532and sense circuits530may be used for writing to, and reading from, the subset584. The L2 I/O circuit535, latches533and sense circuits531may be used for writing to, and reading from, the subset585. The L2 I/O circuit544, latches542and sense circuits540may be used for writing to, and reading from, the subset586. The L2 I/O circuit545, latches543and sense circuits541may be used for writing to, and reading from, the subset587.

The L1 I/O circuits and L2 I/O circuits may include hardware, software and/or firmware for performing the processes described herein. For example, in a program operation, the L1 I/O circuit516may have circuitry for receiving, e.g., a word or two bytes of write data, from the controller122via a bus502, and transferring, in parallel, a first byte to the L2 I/O circuit514and a second byte to the L2 I/O circuit515. For example, for each word, one byte may be a unit of bad column data and the other byte may be a unit of error detection data. A related method can include receiving the unit of bad column data and the unit of error detection data at a common input/output circuit516, transferring the unit of bad column data from the common input/output circuit to one input/output circuit514, and transferring the unit of error detection data from the common input/output circuit to another input/output circuit515.

The second level I/O circuits may transfer data at half the rate of the first level I/O circuit. The data rate of an I/O circuit can be set by using a corresponding clock signal to transfer data. The L2 I/O circuit514may have circuitry, such as a multiplexer/demultiplexer, for receiving a byte of write data from the L1 I/O circuit via a path503at a first, higher data rate, and transferring bits of the byte to respective latches in the set of latches512at a second, lower data rate.

The transfer of the words at the lower data rate from an L1 I/O circuit to multiple L2 I/O circuits for a division can occur while the L1 I/O circuits of other divisions receive data. In a program operation, the write data can be distributed in a round robin manner, with one portion of write data per division. After each division has received a portion of write data from the controller, the next division is selected and so on, in repeated cycles.

In a read operation, the L2 I/O circuits for a division transfer read data from the sense circuits to the associated L1 I/O circuit at the second data rate. The L1 I/O circuit then transfers the read data to the controller via the bus at the first data rate.

This approach allows the controller to exchange data with the high level L1 I/O circuits at a relatively high speed while the transfer speed can be reduced within the lower level circuitry such as the latches, which is closer to the memory cells, to allow the use of scaled down components.

In a read operation, the read data can be transferred from the sense circuits to the L1 I/O circuits in a round robin manner, with one unit per division. After each division has transferred a unit of read data to the controller, the next division is selected and so on, in repeated cycles.

In another option, a single level of input/output circuits, with one input/output circuit per division, is provided.

FIG. 5Bdepicts an example configuration of the L1 I/O circuit516and the associated L2 I/O circuits514and515ofFIG. 5A. The L2 I/O circuit514comprises two sets of components referred to a YUNIT. A first set of YUNITS560includes an example YUNIT560a. A second set of YUNITs561is also shown. Each YUNIT is connected to latches of multiple NAND strings. The first and second sets of YUNITs communicate with the L1 I/O circuit516via the path503. The L2 I/O circuit515similarly comprises first and second sets of YUNITs570and571, respectively, which communicate with the L1 I/O circuit516via the path503a. In another approach, more than two sets of YUNITs are used for each L2 I/O circuit.

FIG. 6depicts an example configuration of the user data block B0-1ofFIG. 2, where the memory cells are arranged in divisions for primary columns and redundant columns A user data block can be divided into primary columns or divisions, e.g., Div0A-Div3A, and redundant columns or divisions, e.g., DivR. A primary column is a column which does not replace a defective column but is intended to be used to store data as long as it is not defective. A redundant column replaces a defective primary column. A primary column can be deemed defective if one or more of its NAND strings are defective, in one approach. The number of redundant columns is typically much less than the number of primary columns, e.g., <1% of the number of primary columns.

In this example, the subsets610-615of memory cells and columns may be accessed by respective sense circuits, latches and I/O circuits, similar to the access circuitry569ofFIG. 5A. A column replacement table such as depicted inFIG. 7can be used to identify redundant columns which replace defective primary columns.

FIG. 7depicts an example of the column replacement table147ofFIG. 1A, consistent withFIG. 6. The table indicates that the bad columns are C27and C28and the corresponding redundant columns which are used as substitutes are C32and C33. See alsoFIG. 8.

FIG. 8depicts an example of bad columns C27and C28in the block ofFIG. 6, consistent withFIG. 7. A column can include 2 bytes or 16 NAND strings, for example. C27includes NAND strings801-807and C28includes NAND strings808-815. In this example, six consecutive NAND strings,806-811are defective. The defect is indicated by the lightning bolts which can represent a short circuit or open circuit, for instance. Further, the defective NAND strings encompass the two adjacent columns. If a unit of bad column data was stored in C27and the related unit of error detection data was stored in C28in the defective NAND strings, an attempt to validate the unit of bad column data would likely fail.

FIG. 9Adepicts access circuitry569awhich is an alternative to the access circuitry569ofFIG. 5A, where scrambling circuits910,920,930and940are between the first and second level I/O circuits. InFIG. 5A, the scrambling may be performed at the controller.

The divisions Div0-Div3ofFIG. 5Aare not depicted for simplicity. In particular, the scrambling circuits910,920,930and940are connected between the L1 I/O circuit and the L2 I/O circuits for Div0-Div3, respectively. In this case, the scrambling occurs within a division. For instance, the scrambling circuit910can receive a unit of bad column data and a unit of error detection data from the controller, e.g., via a path911, and transfer the unit of bad column data to the L2 I/O circuit514via the path912while transferring the unit of error detection data to the L2 I/O circuit515. The unit of bad column data can then be transferred to the latches512, e.g., via the path504, and the unit of error detection data can be transferred to the latches513. The unit of error detection data is subsequently written to a group of memory cells associated with the latches512, and the unit of error detection data is subsequently written to a group of memory cells associated with the latches513.

FIG. 11A, discussed further below, provides an example of scrambling consistent with the approach ofFIG. 9A. The distance between a unit of bad column data and the related unit of error detection data is eight bytes or 64 memory cells. See bytes B0and B9which store a unit of bad column data, D0, and the related unit of error detection data, E0, respectively.

FIG. 9Bdepicts access circuitry569bwhich is another alternative to the access circuitry569ofFIG. 5A, where scrambling circuits915a,915b,925a,925b,935a,935b,945aand945bare between the second level I/O circuits and the latches. The divisions Div0-Div3ofFIG. 5Aare not depicted for simplicity. The scrambling circuits915a,915b,925a,925b,935a,935b,945aand945bare connected between the L2 I/O circuits514,515,524,525,534,535,544and545, respectively, and the latches512,513,522,523,532,533,533,542and543, respectively. In this case, the scrambling occurs within one half of a division. For instance, the scrambling circuit915acan receive a unit of bad column data from the L2 I/O circuit514, e.g., via a path913, and transfer the unit to the latches512, e.g., via the path914. Similarly, the scrambling circuit915bcan receive a unit of error detection data from the L2 I/O circuit515and transfer the unit to the latches513. The unit of error detection data is subsequently written to a group of memory cells associated with the latches512, and the unit of error detection data is subsequently written to a group of memory cells associated with the latches513.

The examples ofFIGS. 9A and 9Bperform scrambling of data within a division of memory cells. Generally, when the scrambling circuit is relatively close to the memory cells in the data path between the controller and the memory cells, the separation between a unit of bad column data and the related unit of error detection data is relatively smaller. The scrambling circuit is closer to the memory cells inFIG. 9Bthan inFIG. 9A.

InFIGS. 9A and 9B, the scrambling circuits can include a multiplexer and demultiplexer for rearranging data units as described herein.

FIG. 12A, discussed further below, provides an example of scrambling with the approach ofFIG. 9B. The distance between a unit of bad column data and the related unit of error detection data is four bytes or 16 memory cells. See bytes B0and B5which store D0and E0, respectively.

FIG. 10Adepicts an example of scrambling a sequence of alternating units of bad column data and error detection data over a full length of the sequence, where two copies of the sequence are provided as sequences1000and1010. In one approach, the scrambling is performed at the scrambling circuit148of the controller122. Each sequence include 32 data units, as an example. The sixteen units of bad column data, D0-D15alternate with the sixteen units of error detection data, E0-E15. A series of bytes of memory cells, B0-B63, is also depicted, extending in a word line (WL) direction the top of the page to the bottom. The series of memory cells is consistent withFIG. 5Aand includes the bytes B0-B63in Div0-Div3. Each byte comprises eight memory cells and is an example of a group of memory cells to which a unit of data is written, or from which a unit of data is read. In other approaches, a unit of data is written to less than or more than one byte of memory cells.

Each sequence1000,1010includes adjacent related units, including a bad column unit and a related unit of error detection data, which is calculated from the bad column unit. For example, a pair of related units1001forms a word and includes a bad column unit D0and a related unit of error detection data E0. The sequences1000and1010represent the units before they are scrambled.

The sequence1020represents the units after they are scrambled. The scrambling separates the two bytes of each word, in this example. The arrows between the sequences1000and1010and the sequence1020depict the scrambling. Each unit is adjacent to a byte in which the unit is stored. For example, in the sequence1000, D0is stored in B0and E0is stored in B17. The separation or spacing between these related units is therefore 16 bytes. That is, there are 16 bytes of memory cells between B0and B17.

The separation can be expressed in terms of the length (arrow1021) of the word line. In one approach, for each unit of bad column data, the respective group of memory cells to which the unit of bad column data is written can be separated from the respective group of memory cells to which the related unit of error detection data is written by at least 10% of a length of the word line. In this example, the separation (arrow1022) is 25% of the length of the word line. As mentioned, the separation can be at least 1/Nth of the length of the word line when there are N divisions of memory cells along the word line. With N=4 in this example, the separation can be at least ¼th or 25% of the length of the word line.

Moreover, each unit in this pair of units is stored in a different division, e.g., using different L1 input-output circuits. The separation between related units is constant for each pair of related units. In the sequence1020, D0, which is stored in a group of memory cells denoted by B0is adjacent to E8, an unrelated unit of error detection data, which is stored in a group of memory cells denoted by B1.

In a next pair of related units in the sequence1000, D1is stored in B2and E1is stored in B19.

Generally, during the writing of the units of bad column data and the units of error detection data to the plurality of memory cells, a sequence of data comprising the units of bad column data adjacent to the related units of error detection data is scrambled to ensure that the units of bad column data are not adjacent to the related units of error detection data. Moreover, in the examples ofFIG. 10A-12B, the scrambling involves changing the location of the units of error detection data. That is, the scrambling rearranges the units of error detection data without rearranging the units of bad column data. However, it is also possible to change the location of the bad column units.

Similarly, in the sequence1010, D0is stored in B32and E0is stored in B49.

FIG. 10Aindicates that, for each unit of bad column data, the controller is configured to write the unit of bad column data to a respective group of memory cells (e.g., a byte of memory cells) in one of the divisions and to write the related unit of error detection data to a respective group of memory cells in another of the divisions. For example, the unit of bad column data (E0) is written to B17in Div1and the related unit of error detection data is written to B0in Div0.

Also inFIG. 10A, the unit of bad column data and the related unit of error detection data can be written to respective groups of memory cells using different input/output circuits. In particular, referring also toFIG. 5A, where the subset580corresponds to B0-B7and the subset582corresponds to B16-B23, an apparatus is provided in which a plurality of memory cells connected to a word line comprise a first subset580of memory cells and a second subset582of memory cells, the input/output circuits comprise a first input/output circuit514or516associated with the first subset of memory cells and a second input/output circuit524or526associated with the second subset of memory cells, and for at least one of the units of bad column data, the first input/output circuit is configured to receive the unit of bad column data and the second input/output circuit is configured to receive the related unit of error detection data.

Further, a first set of latches512is connected to the first input/output circuit514; a second set of latches522connected to the second input/output circuit524; and the controller is configured to transfer the at least one of the units of bad column data to the first set of latches via the first input/output circuit and to transfer the related unit of error detection data to the second set of latches via the second input/output circuit.

FIG. 10Bdepicts an example correspondence between bytes of memory cells and data units in the scrambled sequence ofFIG. 10A, and an order of writing the scrambled sequence. A cycle refers to a time period in which data is written to each division. The first through fourth entries for each cycle involve Div0-Div3, respectively. Also, the first and second entries involve the sequence1000, and the third and fourth entries involve the sequence1010.

FIGS. 11A and 12Ashow that different portions of the sequence are separately scrambled.

FIG. 11Adepicts an example of scrambling separate portions1101-1104of the sequences1000and1010ofFIG. 10Aover a half-length of the sequence. Specifically, portions1101and1102of the sequence1000are scrambled separately, and portions1103and1104of the sequence1010are scrambled separately. The portions1101-1104are scrambled within Div0-Div3, respectively. As mentioned, the separation between a bad column data unit and a related unit of error detection data is smaller than inFIG. 10A.

The sequence1120represents the units after they are scrambled. The arrows between the sequences1000and1010and the sequence1120depict the scrambling. For example, in portion1101of the sequence1000, D0is stored in B0and E0is stored in B9. The separation or spacing between these related units is therefore 8 bytes. Moreover, each unit in this pair of units is stored in the same division, e.g., using different L2 input-output circuits. The separation between related units is constant for each pair of related units. In the sequence1120, D0, which is stored in B0is now adjacent to E4, an unrelated unit of error detection data, which is stored in B1.

In a next pair of related units in the sequence1000, D1is stored in B2and E1is stored in B11.

In the portion1102of the sequence1000, D8is stored in B16and E8is stored in B25.

Similarly, in the portion1103of the sequence1010, D0is stored in B32and E0is stored in B41. In the portion1104of the sequence1010, D8is stored in B48and E8is stored in B57.

Also inFIG. 11A, the unit of bad column data and the related unit of error detection data can be written to respective groups of memory cells using different input/output circuits. In particular, referring also toFIG. 5A, where the subset580corresponds to B0-B7and the subset581corresponds to B8-B15, an apparatus is provided in which a plurality of memory cells connected to a word line comprise a first subset580of memory cells and a second subset581of memory cells, the input/output circuits comprise a first input/output circuit514associated with the first subset of memory cells and a second input/output circuit515associated with the second subset of memory cells, and for at least one of the units of bad column data, the first input/output circuit is configured to receive the unit of bad column data and the second input/output circuit is configured to receive the related unit of error detection data.

Further, a first set of latches512is connected to the first input/output circuit514; a second set of latches513connected to the second input/output circuit515; and the controller is configured to transfer the at least one of the units of bad column data to the first set of latches via the first input/output circuit and to transfer the related unit of error detection data to the second set of latches via the second input/output circuit.

FIG. 11Bdepicts an example correspondence between bytes of memory cells and data units in the scrambled sequence ofFIG. 11A, and an order of writing the scrambled sequence. The first through fourth entries for each cycle involve Div0-Div3, respectively. Also, the first and second entries involve the sequence1000, and the third and fourth entries involve the sequence1010.

FIG. 12Adepicts an example of scrambling separate portions1201-1208of the sequences1000and1010ofFIG. 10Aover a quarter length of the sequence. Specifically, portions1201-1204of the sequence1000are scrambled separately, and portions1205-1208of the sequence1010are scrambled separately. The portions1201and1202are scrambled within Div0, the portions1203and1204are scrambled within Div1, the portions1205and1206are scrambled within Div2, and the portions1207and1208are scrambled within Div3. The separation between a bad column data unit and a related unit of error detection data is smaller than inFIG. 11A.

The sequence1220represents the units after they are scrambled. The arrows between the sequences1000and1010and the sequence1220depict the scrambling. For example, in portion1201of the sequence1000, D0is stored in B0and E0is stored in B5. The separation or spacing between these related units is therefore 4 bytes. Moreover, each unit in this pair of units is stored in the same half division, e.g., using one L2 input-output circuits. The separation between related units is constant for each pair of related units. In the sequence1220, D0, which is stored in B0is now adjacent to E2, an unrelated unit of error detection data, which is stored in B1.

In a next pair of related units in the sequence1000, D1is stored in B2and E1is stored in B7.

In the portion1202of the sequence1000, D4is stored in B8and E4is stored in B13.

The spacing between a unit of bad column data and a related unit of error detection data is large enough inFIGS. 11A, 12A and 13Aso that the two units are in different columns. The likelihood of both units being stored in a bad column is therefore reduced, and the robustness of the process is improved.

FIG. 12Bdepicts an example correspondence between bytes of memory cells and data units in the scrambled sequence ofFIG. 12A, and an order of writing the scrambled sequence. The first through fourth entries for each cycle involve Div0-Div3, respectively. Also, the first and second entries involve the sequence1000, and the third and fourth entries involve the sequence1010.

FIG. 13Adepicts an example process for obtaining bad column data and error detection data and writing the data to a selected word line in the bad column block B0-0ofFIG. 2. Step1300includes testing blocks of memory cells to identify bad columns. For example, these may be user data blocks. Step1301includes storing the units of bad column data. For example, the units can be stored temporarily in a working memory of the controller122such as the ROM160(FIG. 1). Step1302includes calculating a unit of error detection data for each unit of bad column data. One example of error detection data is a set of parity bits. Example equations for calculating parity bits are provided inFIG. 14B. Step1303includes preparing copies of a sequence of data comprising the units of bad column data alternating with related units of error detection data. As mentioned, a unit of error detection data is related to a unit of bad column data when the unit of error detection data is calculated from the unit of bad column data, e.g., using an error detection code. Example sequences1000and1010were discussed previously.

Step1304includes transferring the multiple copies to data latches in a ROM block, including scrambling the sequences so that the units of bad column data alternate with unrelated units of error detection data. A unit of error detection data is unrelated to a unit of bad column data when the unit of error detection data is not calculated from the unit of bad column data.FIGS. 10A, 11A and 12Aprovide examples of scrambling. Step1305includes performing a write operation for a selected word line using data in the data latches. This can involve repeatedly applying a program pulse to the selected word line followed by performing a verify test to determine if the memory cells have completed programming, in a series of program verify-operations.

In addition to, or as an alternative to, bad column data, the data which is written can include other types of information such as bad block data, overhead data or any type of non-user data. Note that the bad column information typically involves less than one word line so that multiple copies can be stored in the memory cells connected to one word line. However, it is possible for the multiple copies to be stored in memory cells connected to more than one word line. It is also possible that the bad column data consumes less than one word line.

FIG. 13Bdepicts an example process for reading and validating the bad column data from the selected word line in the block B0-0ofFIG. 2, consistent with the process ofFIG. 13A. Step1310includes beginning a power up of the memory device. Step1311includes reading one of the copies of the data of the scrambled sequence from the memory cells of the selected word line in the ROM block. Step1312includes calculating a unit of error detection data from a unit of bad column data. SeeFIGS. 14A and 14B. Step1313includes comparing the calculated unit of error detection data to a related unit of error detection data which is read from the ROM block. For example, the comparison circuit150ofFIG. 1Amay be used. The comparison can involve an XOR operation between each bit of the calculated unit of error detection data and each corresponding bit of the related unit of error detection data which is read from the ROM block. When the output of the XOR is 0, the two compared bits match. When the output of the XOR is 1, the two compared bits do not match.

A decision step1314determines if there is a mismatch in the comparison of step1313. If the decision step1314is true, there is an error in either or both of the unit of bad column data and the related unit of error detection data, and the decision step1315determines if there is a next copy of the sequence available. If the decision step1315is true, step1311is repeated by reading the next copy of the data, e.g., on the selected word line. Essentially, when there is an error in one sequence of the data, that sequence is unusable so that the next sequence is used. If the decision step1315is false, there is no next sequence available on the word line. Step1316then declares a failure of the power up process. Or, potentially, another ROM block can be accessed to locate a good copy of the sequence.

If decision step1314is false, the current unit has been validated as being error-free, and a decision step1317determines if there is a next unit to process. If the decision step1317is true, step1312is repeated for the next unit. If the decision step1317is false, step1318uses the bad column data to populate the column replacement table.

This example validates one unit of bad column data at a time. Another option is to validate multiple units of bad column data in parallel. Moreover, the decoding of step1318can be for all units of bad column data after they have been validated, in one approach. One or more units of bad column data can identify a bad column.

FIG. 14Adepicts a table showing units of bad column data and related calculated units of error detection data, consistent withFIG. 13B, step1312. The units of bad column data are represented by D0-D15and the corresponding calculated units of error detection data are represented by E0-E15, respectively. This information can be maintained at the controller, for example.

FIG. 14Bdepicts example equations for calculating a unit of error detection data for a unit of bad column data consistent withFIG. 13B, step1312andFIG. 14A. The bits of a unit of bad column data are data[0]-data[7] and the bits of a unit of error detection data are b[0]-b[7]. The symbol “{circumflex over ( )}” denotes an XOR operation and “˜” denotes a NOT operation. In this example, bit[7]=data[7]{circumflex over ( )}data[5]{circumflex over ( )}data[2]{circumflex over ( )}data[0]; bit[6]=data[6]{circumflex over ( )}data[5]{circumflex over ( )}data[4]{circumflex over ( )}data[2]{circumflex over ( )}data[1]{circumflex over ( )}data[0]; bit[5]=data[4]{circumflex over ( )}data[3]{circumflex over ( )}data[2]{circumflex over ( )}data[1]; bit[4]=data[7]{circumflex over ( )}data[3]{circumflex over ( )}data[2]{circumflex over ( )}data[1]{circumflex over ( )}data[0]; bit[3]=˜(data[7]{circumflex over ( )}data[6]{circumflex over ( )}data[5]{circumflex over ( )}data[1]); bit[2]=˜(data[7]{circumflex over ( )}data[6]{circumflex over ( )}data[5]{circumflex over ( )}data[4]{circumflex over ( )}data[0]); bit[1]=˜(data[7]{circumflex over ( )}data[6]{circumflex over ( )}data[4]Adata[3]{circumflex over ( )}data[2]{circumflex over ( )}data[0]); and bit[0]=data[6]{circumflex over ( )}data[3]{circumflex over ( )}data[1]{circumflex over ( )}data[0].

The calculated data can also be error-correction data. Various type of codes can be used to calculate the error detection bits, including a linear code. One example is a (16,8) linear code, i.e., a code having a length of n=16 bits and a rank of k=8. This code can detect any four bits in error. The rank is the number of code words in the basis of a code and the number of rows in its generating matrix.

FIG. 15Adepicts an example process for performing a program operation for a selected word line in block of user data. Once the bad column data is stored in the ROM block, a user data block can be written. Step1500begins a program operation for a selected word line in a user data block. Step1501determines a column address of a word of write data. This column address is for one of the primary divisions of memory cells. A decision step1502determines if the address is for a bad column, e.g., by accessing the column replacement table147. If the decision step1502is true, step1503includes changing the address to the address of a corresponding redundant column in a redundant division of memory cells. This can be done by the column replacement circuit146.

Step1504includes transferring the word of data from the controller to the latches associated with the column address. If the decision step1502is false, step1504is reached without changing the column address.

A decision step1505determines if there is a next word to transfer to the latches. If the decision step1505is true, step1501is repeated for the column address of the next word. If the decision step1505is false, the write data has been loaded into the latches for the program operation, and step1506includes performing program verify-operations until programming is completed.

FIG. 15Bdepicts an example process for performing a read operation for a selected word line in block of user data, consistent withFIG. 15A. Step1510begins a read operation for a selected word line in a block of user data. Step1511includes reading a page of data and storing the data in latches. Step1512includes determining a column address of a word of data to be output from the latches. This column address is for one of the primary divisions of memory cells. A decision step1513determines if the address is for a bad column, e.g., by accessing the column replacement table147. If the decision step1513is true, step1514includes changing the address to the address of a corresponding redundant column in a redundant division of memory cells. Step1515includes transferring the word of data from the latches associated with the column address to the controller. If the decision step1513is false, step1515is reached without changing the column address.

A decision step1516determines if there is a next word to output from the latches. If the decision step1516is true, step1512is repeated for the column address of the next word. If the decision step1516is false, the read data has been output from the latches for the read operation, and step1517indicates the read operation is completed.

Accordingly, it can be see that in one implementation, an apparatus comprises: a plurality of memory cells connected to a word line and arranged in columns, each memory cell connected to a respective bit line; input/output circuits connected to the bit lines; and a controller connected to the input/output circuits, the controller configured to write units of bad column data and units of error detection data to the plurality of memory cells, wherein for each unit of bad column data, the controller is configured to write the unit of bad column data to a respective group of memory cells, to write an unrelated unit of error detection data to a respective group of memory cells which is adjacent to the respective group of memory cells to which the unit of bad column data is written, and to write a related unit of error detection data to a respective group of memory cells which is non-adjacent to the respective group of memory cells to which the unit of bad column data is written.

In another implementation, a method comprises: determining a unit of error detection data for a unit of bad column data; writing the unit of the bad column data to a group of memory cells connected to a word line; and writing the unit of the error detection data to a group of memory cells connected to a word line, wherein the group of memory cells to which the unit of the bad column data is written is non-adjacent to a group of memory cells to which the unit of error detection data is written.

In another implementation, an apparatus comprises: a first subset of memory cells connected to a word line and to respective bit lines; a second subset of memory cells connected to the word line and to respective bit lines; a first input/output circuit connected to the respective bit lines of the first subset of memory cells; a second input/output circuit connected to the respective bit lines of the second subset of memory cells; means for writing a unit of data to the first subset of memory cells using the first input/output circuit; and means for writing a unit of parity bits which is calculated from the unit of data to the second subset of memory cells using the second input/output circuit.

The apparatus can further include means for writing a unit of parity bits which is not calculated from the unit of data to the first subset of memory cells using the first input/output circuit. The means for writing a unit of data and the means for writing a unit of parity bits which is not calculated from the unit of data can include, e.g., the controller122, the access circuitry569,569aand569bofFIGS. 5A, 9A and 9B, respectively, including the input-output circuits and latches, and can perform the process of the flowchart ofFIG. 13A.

The means for writing a unit of data, the means for writing a unit of parity bits which is calculated from the unit of data, and the means for writing a unit of parity bits which is not calculated from the unit of data can include, e.g., the controller122, the access circuitry569,569aand569bofFIGS. 5A, 9A and 9B, respectively, including the input-output circuits and latches, and can perform the process of the flowchart ofFIG. 13A.

The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The described embodiments were chosen in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.