Patent ID: 7903468

Claim:
A method of programming and reading a plurality of flash memory cells, comprising the steps of: (a) programming each cell to a respective one of L≧2 threshold voltage states within a threshold voltage window; (b) reading said cells relative to a set of initial reference voltages that define m≧2 threshold voltage intervals that span said threshold voltage window; (c) based on said reading, for at least a portion of the cells, determining how many of the cells of said portion have respective threshold voltages in each of at least two of said threshold voltage intervals, thereby obtaining, for each of said at least two threshold voltage intervals, a corresponding number of cells of said at least portion; (d) adjusting a respective value of at least one parameter of at least one threshold voltage function to fit said at least one threshold voltage function to said numbers; and (e) based on said respective value of each said at least one parameter of said at least one threshold voltage function, and without reading said cells subsequent to said determining, assigning a respective one of said states to each cell of the plurality.