Patent ID: 7688638

Claim:
A method for programming multi-level non-volatile storage, comprising: applying a set of programming pulses to a plurality of non-volatile storage elements, including a first group of non-volatile storage elements which are intended to be programmed to one state, and a second group of non-volatile storage elements which are intended to be programmed to another state; performing a number n 1 of verify operations for one subset of programming pulses of the set of programming pulses to determine whether the non-volatile storage elements in the first group of non-volatile storage elements have reached the one state; performing a number n 2 of verify operations for the one subset of programming pulses, including a verify operation between an initial programming pulse in the one subset of programming pulses and an immediately subsequent programming pulse, to determine whether the non-volatile storage elements in the second group of non-volatile storage elements have reached the another state, where n 1 >n 2 ; and performing verify operations for another subset of programming pulses of the set of programming pulses which follows the one subset of programming pulses to determine whether the non-volatile storage elements in the second group of non-volatile storage elements have reached the another state, where, in determining whether the non-volatile storage elements in the second group of non-volatile storage elements have reached the another state, the verify operations for the another subset of programming pulses are performed more frequently than the verify operations for the one subset of programming pulses.