Patent ID: 8787093

Claim:
A semiconductor memory device comprising: a memory cell array including a plurality of memory cells being capable of storing multi-level data; and a control circuit configured to perform a program cycle including a plurality of program loops, each of the program loops involving a first operation supplying a program voltage and a second operation supplying a verify voltage to a gate of a selected memory cell, the program cycle involving a first phase, a second phase, and a third phase, the control circuit being configured to perform a first program loop of the first phase, a second program loop of the second phase, and a third program loop of the third phase in order, the control circuit being configured to perform the second operation after performing the first operation in each of the program loops, the control circuit being configured to perform a third operation after performing the second operation in each of the program loops, the control circuit being configured to supply a first verify voltage in the second operation of the first program loop, without performing a program loop supplying only a second verify voltage before the first program loop, the second verify voltage being lower than the first verify voltage, the control circuit being configured to supply the second verify voltage, supply the first verify voltage, and supply a third verify voltage in order without reducing a voltage of the gate of the selected memory cell to zero voltage after supplying the second verify voltage in the second operation of the second program loop, the control circuit being configured to supply the third verify voltage without reducing a voltage of the gate of the selected memory cell to zero voltage after supplying the first verify voltage, the third verify voltage being larger than the second verify voltage, and the control circuit being configured to supply the first verify voltage and supply the third verify voltage without supplying the second verify voltage in the second operation of the third program loop.