As the present NAND flash memory, a so-called multivalue NAND memory in which each memory cell stores plural bits such as two bits (four values), three bits (eight values), or four bits (16 values) in contrast with a conventional binary memory in which each memory cell stores only one bit is dominantly used because of the large memory capacity thereof.
In the multivalue NAND memory, the amount of electrons trapped in a floating gate at the program time, that is, the threshold voltage of a memory cell is changed to 4, 8, 16 steps and multivalue data is stored according to the level in which the threshold voltage is distributed. At the read time, the on/off state of the memory cell is determined while the potential of word line WL is sequentially set on the boundary between the distribution ranges. Then, the distribution range in which the threshold voltage of the memory cell is set is specified to read multivalue data. Individual memory cells to which programming is ended have threshold voltage distribution ranges of respective levels corresponding to stored data. It is considered that the threshold voltage distribution ranges of the multivalue NAND memory in which random data is programmed respectively have 4, 8, 16 normal distribution ranges in the case of 4-value, 8-value, 16-value memories.
In such a multivalue NAND memory, since the number of threshold distribution ranges is greater in comparison with the conventional binary memory, it becomes extremely important to set the width of each distribution range narrow. This is because it becomes impossible to read data by applying a voltage (read level) to WL if the widths of the respective distribution ranges are widened and overlapped with one another when programmed data is read.