A "smart verify" technique, whereby multi-state memories are programmed
using a verify-results-based dynamic adjustment of the multi-states
verify range for sequential-state-based verify implementations, is
presented. This technique can increase multi-state write speed while
maintaining reliable operation within sequentially verified, multi-state
memory implementations by providing "intelligent" means to minimize the
number of sequential verify operations for each program/verify/lockout
step of the write sequence. At the beginning of a program/verify cycle
sequence only the lowest state or states are checked during the verify
phase. As lower states are reached, additional higher states are added to
the verify sequence and lower states can be removed.