A ramp-down programming voltage is used to program a group of nonvolatile
memory cells in parallel, step by step from a highest step to a lowest
step. Overall programming time is improved when a conventional setup for
program inhibit together with a verify after each program step are
avoided. A program voltage estimate is provided for each cell indicating
the programming voltage expected to program the cell to its target.
Initially, all but those cells having estimates at or above the current
program voltage step will be program-inhibited. Thereafter, with each
descending program voltage step, additional cells will be un-inhibited.
Once un-inhibited, a cell need not be re-inhibited even if programmed to
its target. This is because subsequent program steps are at lower
voltages and ineffective in programming the cell beyond its target. The
un-inhibit operation in one implementation amounts to simply pulling the
associated bit lines to ground.