Patent ID: 8223556

Claim:
A method for performing a plurality of programming iterations of a programming operation for a set of storage elements in a non-volatile storage system, comprising: for each of N 2 programming iterations for the set, applying a program pulse to the set of storage elements, each storage element in the set of storage elements has a common target data state and a respective threshold voltage, performing a verify operation to identify storage elements in the set whose respective threshold voltage exceeds an offset verify level for the common target data state, the offset verify level is offset from a final verify level for the common target data state, and performing a verify operation to identify storage elements in the set whose respective threshold voltage exceeds the final verify level; determining when a condition is met to stop using the verify operation to identify storage elements in the set whose respective threshold voltage exceeds the offset verify level, the condition is met when the respective threshold voltages of most of the storage elements have reached the offset verify level; and when the condition is met: for each of N 3 programming iterations for the set, following the N 2 programming iterations, applying a program pulse to the set of storage elements, and performing a verify operation to identify storage elements in the set whose respective threshold voltage exceeds the final verify level, without performing a verify operation to identify storage elements in the set whose respective threshold voltage exceeds the offset verify level.