Patent ID: 7688631

Claim:
A method of programming a flash memory device, the method comprising: setting increments of program voltages according to one or more data states expressed as one or more threshold voltage distributions of multi-level memory cells; generating an Increment Step Pulse Programming (ISPP) clock signal in response to program pass/fail information, the ISPP clock signal corresponding to a loop clock signal and to the increments of the program voltages; generating a default level enable signal by performing a first counting operation that counts up to the increments of the program voltages, in response to the loop clock signal; generating an additional level enable signal by performing a second counting operation that counts up to the increments of the program voltages, in response to the ISPP clock signal; increasing the program voltage by 1 increment, in response to the default level enable signal; and increasing the program voltage by 2 increments, in response to the additional level enable signal.