A non-volatile memory device is programmed by first performing a coarse
programming process and subsequently performing a fine programming
process. The coarse/fine programming methodology is enhanced by using an
efficient verification scheme that allows some non-volatile memory cells
to be verified for the coarse programming process while other
non-volatile memory cells are verified for the fine programming process.
The fine programming process can be accomplished using current sinking,
charge packet metering or other suitable means.