A coarse/fine programming technique is used for programming to lower
states while using a standard technique (not coarse/fine programming) for
programming to the highest state(s). However, when the programming of the
lower states is finished, a number of programming pulses are still needed
to program the highest state. To improve the programming speed, a bigger
step size and longer programming pulse can be used from the moment that
the lowest states have been programmed. At the same time, the programming
technique for the highest state can be changed to a coarse/fine
programming technique.