Patent ID: 7453731

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; (b) providing a programming voltage for programming each page of the sample, the programming voltage having a staircase waveform with an initial value and a predetermined maximum voltage limit; (c) erasing the sample of pages; (d) for every page in the sample, programming and verifying the page step by step of the staircase waveform until either the maximum voltage limit has been reached or the page has been programmed to a target pattern and in which case a final programming voltage is accumulated as part of a gathered statistics; and (e) computing an average final programming voltage for the sample from the gathered statistics to derive a starting programming voltage for the page.