To shorten a time for preprogram by performing a program checking operation for each bulk by using a local clock for check after programming of all cells to be programmed is completed, at the time when only a bit not being programmed is programmed after the cell to be programmed is read and checked.
As to preprogram for erase, it is unnecessary to repeat programming and program checking operations for each byte or word. The two operations being separated, otherwise, the programming is performed consecutively for all cells and then a bulk program checking stage is performed. Execution of the consecutive programming is enabled, in other words, since a bit line on which the programming operation proceeds is charged, with a word line in common, after program-up is made. Accordingly, a time for pumping-up and a time for pumping-down for checking the programming operation can be shortened.
Next Patent: SEMICONDUCTOR NONVOLATILE STORAGE DEVICE