IP Library Granted Patent US 7,545,681
Granted Patent B2
US 7,545,681 · App. 11/563,585 · Granted Jun 9, 2009

Segmented bitscan for verification of programming

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,545,681
App. No.
11/563,585
Granted
Jun 9, 2009
Kind
B2
Abstract

A set non-volatile storage elements are subjected to a programming process in order to store a set of data. During the programming process, one or more verification operations are performed to determine whether the non-volatile storage elements have reached their target condition to store the appropriate data. Decisions about whether to continue programming or whether the programming is successful are made based on whether overlapping groups of the non-volatile storage elements have less than a threshold number of non-volatile storage elements that are not properly programmed.

Claims (47)

1. A method for programming non-volatile storage, comprising:

subjecting a set non-volatile storage elements to programming as part of a programming process, said set of non-volatile storage elements includes overlapping groups of non-volatile storage elements;

testing whether each group has less than a threshold number of non-volatile storage elements that are not properly programmed; and

proceeding with said programming process based on whether each group has less than said threshold number of non-volatile storage elements that are not properly programmed.

2. A method according to claim 1 , wherein said proceeding with said programming process comprises:

subjecting said set non-volatile storage elements to additional programming if at least one of said groups does not have less than said threshold number of non-volatile storage elements that are not properly programmed; and

stopping said programming process if all of said groups have less than said threshold number of non-volatile storage elements that are not properly programmed.

3. A method according to claim 1 , wherein said proceeding with said programming process comprises:

determining that said programming process was successful if all of said groups have less than said threshold number of non-volatile storage elements that are not properly programmed; and

determining that said programming process was unsuccessful if at least one of said groups does not have less than said threshold number of non-volatile storage elements that are not properly programmed.

4. A method according to claim 1 , wherein said testing whether each group has less than said threshold number of non-volatile storage elements that are not properly programmed comprises:

determining a first number of redundant non-volatile storage elements for a particular group have not been properly programmed;

determining a second number of original non-volatile storage elements for said particular group have not been properly programmed; and

comparing a sum of said first number and said second number to said threshold number.

5. A method according to claim 1 , wherein said testing whether each group has less than said threshold number of non-volatile storage elements that are not properly programmed comprises:

determining a first number of redundant non-volatile storage elements for a particular group have not been properly programmed;

determining a second number of original non-volatile storage elements for a second half of said particular group have not been properly programmed;

creating a sum of said first number, said second number and a third number, said third number represents original non-volatile storage elements for a first half of said particular group have not been properly programmed, said third number had been determined when processing a previous group; and

comparing said sum to said threshold number.

6. A method according to claim 1 , wherein:

said non-volatile storage elements store data in sectors; and

each group is bigger than a sector and spans at least portions of two sectors.

7. A method according to claim 1 , wherein said testing whether each group has less than said threshold number of non-volatile storage elements that are not properly programmed comprises:

(a) performing a binary search on a particular group to find a first non-volatile storage element that is not properly programmed;

(b) updating a count of non-volatile storage elements that are not properly programmed;

(c) tagging said first non-volatile storage element so that it will not be counted again;

repeating steps (a), (b) and (c) to determine a number of non-volatile storage elements that are not properly programmed.

8. A method according to claim 1 , wherein said testing whether each group has less than said threshold number of non-volatile storage elements that are not properly programmed comprises:

(a) performing a binary search on a particular group to find a first non-volatile storage element that is not properly programmed;

(b) updating a count of non-volatile storage elements that are not properly programmed;

(c) tagging said first non-volatile storage element so that it will not be counted again; and

(d) repeating steps (a), (b) and (c) until all non-volatile storage elements that are not properly programmed for said particular group have been counted.

9. A method according to claim 1 , wherein:

said non-volatile storage elements are flash memory devices.

10. A method according to claim 1 , wherein:

said non-volatile storage elements are NAND flash memory devices.

11. A method according to claim 1 , wherein:

said non-volatile storage elements are multi-state flash memory devices.

12. A method according to claim 1 , wherein:

said non-volatile storage elements are flash memory devices that store multiple bits of data per flash memory device;

each bit of data on a respective flash memory device is in a different page;

each page includes multiple sectors of data; and

each group is bigger than a sector and spans at least portions of two sectors.

13. A method according to claim 1 , wherein:

said non-volatile storage elements are flash memory devices;

said subjecting said set of non-volatile storage elements to programming includes applying a voltage pulse to control gates of said flash memory devices; and

said testing includes determining how many flash memory devices for each group have a respective threshold voltage that has not reached a respective target level.

Assignments (6)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0472 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026226/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2006
From: LI, YAN; KAMEI, TERUHIKO; LUTZE, JEFFREY W.
To: SANDISK CORPORATION
Reel/Frame 018640/0027 →