PROGRAM METHOD WITH OPTIMIZED VOLTAGE LEVEL FOR FLASH MEMORY
First Claim
1. A method of operating a non-volatile memory device, comprising:
- calculating a number of expected data bits from program data to be programmed into a non-volatile memory array in a program operation;
calculating a number of failed data bits that failed to program in the program operation; and
increasing a programming voltage in response to comparison of the number of expected data bits and the number of failed data bits.
8 Assignments
0 Petitions
Accused Products
Abstract
A non-volatile memory device and programming process is described that increases the programming voltage of successive programming cycles in relation to the percentage of the data bits that failed programming verification during the previous programming cycle and were not correctly programmed into the memory array. This allows for a faster on average program operation and a more accurate match of the subsequent increase in the programming voltage to the non-volatile memory device, the specific region or row being programmed and any changes due to device wear. In one embodiment of the present invention the manufacturing process/design and/or specific memory device is characterized by generating a failed bit percentage to programming voltage increase profile to set the desired programming voltage delta/increase. In another embodiment of the present invention, methods and apparatus are related for the programming of data into non-volatile memory devices and, in particular, NAND and NOR architecture Flash memory.
99 Citations
47 Claims
-
1. A method of operating a non-volatile memory device, comprising:
-
calculating a number of expected data bits from program data to be programmed into a non-volatile memory array in a program operation;
calculating a number of failed data bits that failed to program in the program operation; and
increasing a programming voltage in response to comparison of the number of expected data bits and the number of failed data bits. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of operating a non-volatile memory device, comprising:
-
programming a plurality of data bits into a non-volatile memory array of the non-volatile memory device in a programming cycle by applying an initial programming voltage to a plurality of memory cells that are selected to be programmed with the plurality of data bits;
increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells of the non-volatile memory array during the programming cycle;
disabling programming of one or more memory cells that correctly programmed; and
applying the increased programming voltage to program one or more bits of the data that failed to program correctly. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A method of programming data, comprising:
-
receiving a programming command and program data containing a plurality of data bits;
programming the plurality of data bits into a non-volatile memory array in a programming cycle by applying an initial programming voltage to a plurality of memory cells that are selected to be programmed with the plurality of data bits; and
attempting to program any memory cells of the plurality of memory cells that failed to program correctly by, verifying the plurality of data bits of program data programmed into the plurality of memory cells of the non-volatile memory array, increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells, disabling programming of one or more memory cells that correctly programmed, applying the increased programming voltage to program one or more bits of the data that failed to program correctly, and repeating for one or more iteration cycles. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A method of profiling a non-volatile memory device comprising:
profiling the non-volatile memory device to specify the desired programming voltage delta increase for subsequent programming cycles for a given failing percentage of data bits that are being programmed into the non-volatile memory device. - View Dependent Claims (25)
-
26. A method of operating a Flash memory device, comprising:
-
receiving a programming command and program data containing a plurality of data bits on an interface of the Flash memory device;
transferring the program data to a data cache;
transferring the program data to a write data latch;
calculating the number of bits to be programmed in the program data held in the data cache;
programming the plurality of data bits into a Flash memory array in a programming cycle by applying an initial programming voltage to a plurality of memory cells that are selected to be programmed with the plurality of data bits; and
attempting to program any memory cells of the plurality of memory cells that failed to program correctly by, verifying the plurality of data bits of program data programmed into the plurality of memory cells of the Flash memory array, calculating the number of memory cells that failed to program correctly, calculating a percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells in relation to the number of bits to be programmed held in the data cache, increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells, disabling programming of one or more memory cells that correctly programmed, applying the increased programming voltage to program one or more bits of the data that failed to program correctly, and repeating for one or more iteration cycles. - View Dependent Claims (27, 28, 29, 30, 31)
-
-
32. A non-volatile memory device comprising:
-
a non-volatile memory array; and
a control circuit, wherein the control circuit is adapted to program a plurality of data bits into the non-volatile memory array in a programming operation by applying an initial programming voltage to a plurality of memory cells that are selected to be programmed with the plurality of data bits, and attempting to program any memory cells of the plurality of memory cells that failed to program correctly by, verifying the plurality of data bits programmed into the plurality of memory cells of the non-volatile memory array, increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells, disabling programming of one or more memory cells that correctly programmed, applying the increased programming voltage to program one or more bits of the data that failed to program correctly, and repeating for one or more iteration cycles. - View Dependent Claims (33, 34, 35, 36)
-
-
37. A Flash memory device comprising:
-
a Flash memory array;
a plurality of sense amplifiers;
an I/O buffer;
a memory interface; and
a control state machine coupled to the Flash memory array, the I/O buffer, the plurality of sense amplifiers, and the memory interface, wherein the control state machine is adapted to program a plurality of data bits into the Flash memory array in a programming operation received at the memory interface by applying an initial programming voltage to a plurality of floating gate memory cells that are selected to be programmed with the plurality of data bits, and attempting to program any memory cells of the plurality of memory cells that failed to program correctly by, verifying the plurality of data bits programmed into the plurality of memory cells of the Flash memory array, increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells, disabling programming of one or more memory cells that correctly programmed, applying the increased programming voltage to program one or more bits of the data that failed to program correctly, and repeating for one or more iteration cycles. - View Dependent Claims (38, 39, 40, 41)
-
-
42. A system comprising:
a host coupled to a non-volatile memory device, wherein the non-volatile memory device comprises, a non-volatile memory array; and
a control state machine circuit, wherein the control state machine circuit is adapted to program a plurality of data bits into the non-volatile memory array in a programming operation by applying an initial programming voltage to a plurality of memory cells that are selected to be programmed with the plurality of data bits, and attempting to program any memory cells of the plurality of memory cells that failed to program correctly by, verifying the plurality of data bits programmed into the plurality of memory cells of the non-volatile memory array, increasing the programming voltage in a selected relation to the percentage of the plurality of data bits that failed to correctly program into the plurality of memory cells, disabling programming of one or more memory cells that correctly programmed, applying the increased programming voltage to program one or more bits of the data that failed to program correctly, and repeating for one or more iteration cycles. - View Dependent Claims (43, 44, 45, 46, 47)
Specification