IP Library Granted Patent US 7,724,580
Granted Patent B2
US 7,724,580 · App. 12/431,573 · Granted May 25, 2010

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,724,580
App. No.
12/431,573
Granted
May 25, 2010
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 (34)

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

subjecting a set of non-volatile storage elements to programming, said set of non-volatile storage elements includes a plurality of groups of non-volatile storage elements and a set of one or more redundant non-volatile storage elements;

determining how many of said redundant non-volatile storage elements have not reached one or more respective target levels;

determining how many non-volatile storage elements of a first group have not reached one or more respective target levels;

calculating a first sum of said redundant non-volatile storage elements that have not reached one or more respective target levels plus said non-volatile storage elements of said first group that have not reached one or more respective target levels;

comparing said first sum to a first threshold; and

determining whether said set of non-volatile storage elements are properly programmed at least partially based on said comparing said first sum to said first threshold.

2. A method according to claim 1 , further comprising:

determining how many non-volatile storage elements of a second group have not reached one or more respective target levels;

calculating a second sum of said redundant non-volatile storage elements that have not reached one or more respective target levels plus said non-volatile storage elements of said second group that have not reached one or more respective target levels;

comparing said second sum to a second threshold; and

determining whether said set of non-volatile storage elements are properly programmed at least partially based on said comparing said second sum to said second threshold.

3. A method for programming according to claim 2 , wherein:

said first threshold is equal to said second threshold.

4. A method according to claim 1 , wherein:

said determining how many non-volatile storage elements of said first group have not reached one or more respective target levels comprises determining how many non-volatile storage elements of a first portion of said first group have not reached one or more respective target levels and determining how many non-volatile storage elements of a second portion of said first group have not reached one or more respective target levels; and

said first sum is based on said redundant non-volatile storage elements that have not reached one or more respective target levels plus said non-volatile storage elements of said first portion of said first group that have not reached one or more respective target levels plus said non-volatile storage elements of said second portion of said first group that have not reached one or more respective target levels.

5. A method according to claim 4 , further comprising:

determining how many non-volatile storage elements of a second portion of a second group have not reached one or more respective target levels;

calculating a second sum of said redundant non-volatile storage elements that have not reached one or more respective target levels plus said non-volatile storage elements of said second portion of said first group that have not reached one or more respective target levels and said non-volatile storage elements of said first portion of said second group that have not reached one or more respective target levels, said second portion of said first group overlaps with said second group;

comparing said second sum to a second threshold; and

determining whether said set of non-volatile storage elements are properly programmed at least partially based on said comparing said second sum to said second threshold.

6. A method for programming according to claim 5 , wherein:

said first threshold is equal to said second threshold.

7. A method according to claim 5 , further comprising:

subjecting said set non-volatile storage elements to additional programming if said first sum is greater than said first threshold or said second sum is greater than said second threshold; and

stopping said programming process if at least said first sum is less than said first threshold and said second sum is less than said second threshold.

8. A method according to claim 1 , wherein said determining how many non-volatile storage elements of said first group have not reached one or more respective target levels comprises:

(a) performing a binary search on said 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) to determine how many non-volatile storage elements are not properly programmed.

9. A method according to claim 8 , wherein:

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

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 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026226/0360 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2009
From: LI, YAN; KAMEI, TERUHIKO; LUTZE, JEFFREY W.
To: SANDISK CORPORATION
Reel/Frame 022608/0473 →