Patent ID: 8730735

Claim:
A method of programming a semiconductor memory device, the method comprising: precharging all bit lines, including selected and unselected bit lines, to a first voltage; discharging a voltage of the selected bit line in accordance with data to be programmed; programming and program-verifying memory cells coupled to the selected bit line using a first program voltage applied to a selected word line associated with the selected bit line; precharging all bit lines, including selected and unselected bit lines, to a second voltage, which is higher than the first voltage, if the program-verifying determines a program failure; discharging a voltage of the selected bit line, having the second voltage, in accordance with data to be programmed; and programming and program-verifying the memory cells coupled to the selected bit line using a second program voltage, which is higher than the first program voltage, applied to the selected word line.