A system and method for quickly and efficiently programming
hard-to-program storage elements in non-volatile integrated memory
devices is presented. A number of storage elements are simultaneously
subjected to a programming process with the current flowing through the
storage elements limited to a first level. As a portion of these storage
elements reach a prescribed state, they are removed from the set of cells
being programmed and the current limit on the elements that continue to
be programmed is raised. The current level in these hard-to-program cells
can be raised to a second, higher limit or unregulated. According to
another aspect, during a program operation the current limit allowed for
a cell depends upon the target state to which it is to be programmed.