To program a set of non-volatile storage elements, a set of programming
pulses are applied to the control gates (or other terminals) of the
non-volatile storage elements. The programming pulses have a constant
pulse width and increasing magnitudes until a maximum voltage is reached.
At that point, the magnitude of the programming pulses stops increasing
and the programming pulses are applied in a manner to provide varying
time duration of the programming signal between verification operations.
For example, after the pulses reach the maximum magnitude the pulse
widths are increased. Alternatively, after the pulses reach the maximum
magnitude multiple program pulses are applied between verification
operations.