Patent ID: 8687431

Claim:
A method of programming a memory, comprising: programming a selected cell to a determined pretarget threshold voltage; programming neighbor cells of the selected cell to respective determined pretarget threshold voltages; programming the selected cell to a determined target threshold voltage; programming neighbor cells of the neighbor cells of the selected cell to respective determined pretarget threshold voltages; and programming the neighbor cells of the selected cell to a determined target threshold voltage, wherein programming a selected cell to a determined pretarget threshold voltage comprises: determining a threshold voltage differential between a memory erase threshold voltage and a desired pretarget voltage for at least one of the neighbor cells of the selected cell; determining a total threshold voltage shift of the selected cell threshold voltage due to coupling during later programming of one or more levels of neighbor cells; and setting the determined pretarget threshold voltage of the selected cell to a desired pretarget threshold voltage minus the total threshold voltage shift.