Patent ID: 8111557

Claim:
A method of programming a nonvolatile memory device, the method comprising: performing a first program operation on first memory cells selected to store first data, from among memory cells coupled to a selected word line, such that threshold voltages of the first memory cells are each driven to a first target voltage corresponding to the first data; performing a first verification operation on the first memory cells using a first verification voltage; performing a second program operation on second memory cells selected to store second data, from among the memory cells coupled to the selected word line, such that threshold voltages of the second memory cells are each driven to a second target voltage corresponding to the second data; detecting an under-programmed memory cell having a threshold voltage less than the first target voltage using the first verification voltage, from among the first memory cells, after performing the second program operation; performing a second verification operation for detecting a third memory cell having a threshold voltage less than the second target voltage using a second verification voltage, from among the second memory cells; performing a third program operation on the under-programmed memory cell such that the threshold voltage of the under-programmed memory cell becomes more than the first target voltage; and performing a fourth program operation on the third memory cell such that the threshold voltage of the third memory cell becomes more than the second target voltage.