Patent ID: 7606091

Claim:
In a non-volatile memory having an array of memory cells that is organized into erasable blocks, each erasable block containing a block of word lines for accessing memory cells that are erasable together, and each word line containing at least one page of memory cells that are programmable together, a method of determining a starting programming voltage for a given page, comprising: (a) selecting a sample of pages representative of the given page within a block; (b) providing an associated programming voltage for programming each page of the sample, the associated programming voltage having a staircase waveform with an associated initial value and a predetermined number of steps; (c) erasing the block containing the sample of pages; (d) determining for every page in the sample if the page is programmable to a target pattern using the associated programming voltage with the associated initial value; and if programmable, excluding the page from further processing after accumulating the associated initial value as part of a gathered statistics, otherwise, incrementing the associated initial value by a predetermined step; (e) repeating (c) to (d) until all pages in the sample has either been determined to be programmable or the associated initial value has been incremented to a predetermined maximum voltage; (f) computing an average starting programming voltage for the sample from the gathered statistics to derive a starting programming voltage for the page.