IP Library Granted Patent US 7,161,836
Granted Patent B1
US 7,161,836 · App. 11/194,439 · Granted Jan 9, 2007

Method for programming non-volatile memory with self-adjusting maximum program loop

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,161,836
App. No.
11/194,439
Granted
Jan 9, 2007
Kind
B1
Abstract

The maximum allowable number of voltage programming pulses to program memory elements of a non-volatile memory device is adjusted to account for changes in the memory elements which occur over time. Programming pulses are applied until the threshold voltage of one or more memory elements reaches a certain verify level, after which a defined maximum number of additional pulses may be applied to other memory elements to allow them to also reach associated target threshold voltage levels. The technique enforces a maximum allowable number of programming pulses that can change over time as the memory is cycled.

Claims (59)

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

programming at least a first non-volatile storage element to reach a first verify level using a series of voltage pulses;

detecting when the at least a first non-volatile storage element has reached the first verify level; and

enforcing, responsive to the detecting, a maximum allowable number of additional voltage pulses to be used in programming at least a second non-volatile storage element to reach a second verify level.

2. The method of claim 1 , wherein:

the maximum allowable number of additional voltage pulses is enforced based on a sum of: (a) a number of the voltage pulses needed for the at least a first non-volatile storage element to reach the first verify level, and (b) the maximum allowable number of additional voltage pulses.

3. The method of claim 1 , wherein:

the maximum allowable number of additional voltage pulses is variable according to a number of the voltage pulses needed for the at least a first non-volatile storage element to reach the verify level.

4. The method of claim 1 , wherein:

the maximum allowable number of additional voltage pulses is fixed.

5. The method of claim 1 , wherein:

the maximum allowable number of additional voltage pulses is variable.

6. The method of claim 1 , further comprising:

tracking a usage of the at least a first non-volatile storage element over time;

wherein the maximum allowable number of additional voltage pulses is variable according to the usage.

7. The method of claim 6 , wherein:

the tracking of the usage comprises maintaining a count of programming cycles.

8. The method of claim 1 , wherein the at least a first non-volatile storage element comprises a plurality of non-volatile storage elements that are programmed to reach the first verify level using the series of voltage pulses, the method further comprising:

determining a number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level; and

enforcing the maximum allowable number of additional voltage pulses to be used in programming the at least a second non-volatile storage element to reach the second verify level based on the number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level.

9. The method of claim 8 , wherein:

the maximum allowable number of additional voltage pulses for use in programming the at least a second non-volatile storage element to reach the second verify level is enforced based on a statistical metric derived from the number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level.

10. The method of claim 1 , wherein:

the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.

11. The method of claim 1 , wherein:

the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.

12. The method of claim 1 , wherein:

the maximum allowable number of additional voltage pulses is based on a threshold voltage distribution of at least the first non-volatile storage element divided by a step size of the voltage pulses.

13. The method of claim 1 , wherein:

the at least a first non-volatile storage element and the at least a second non-volatile storage element are provided in at least one of a common block and a common segment.

14. The method of claim 1 , wherein:

the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed with data from a common page.

15. The method of claim 1 , wherein:

at least one of the first and second verify levels is an intermediate voltage level which is before a final voltage level.

16. The method of claim 1 , wherein:

at least one of the first and second verify levels is a final voltage level.

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

performing one or more initial program cycles for a set of non-volatile storage elements until a first subset of said non-volatile storage elements has reached a first verify level; and

performing one or more additional program cycles for said set of non-volatile storage elements subsequent to said first subset of said non-volatile storage elements reaching said first verify level, said one or more additional program cycles not to exceed a predefined maximum number of additional program cycles.

18. The method of claim 17 , wherein:

the maximum number of additional voltage pulses is variable.

19. The method of claim 17 , wherein:

the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.

20. The method of claim 17 , wherein:

the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.

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

detecting when at least a first non-volatile storage element in a set of non-volatile storage elements has reached a first verify level after voltage pulses have been applied thereto; and

enforcing, responsive to the detecting, a maximum allowable number of voltage pulses to be applied to at least a second non-volatile storage element in the set of non-volatile storage elements to cause the at least a second non-volatile storage element to reach a second verify level.

22. The method of claim 21 , wherein:

the maximum allowable number of additional voltage pulses is fixed.

23. The method of claim 21 , wherein:

the maximum allowable number of additional voltage pulses is variable.

24. The method of claim 21 , further comprising:

tracking a usage of the at least a first non-volatile storage element over time;

wherein the maximum allowable number of additional voltage pulses is variable according to the usage.

25. The method of claim 21 , wherein:

the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.

26. The method of claim 21 , wherein:

the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.

Assignments (7)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/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 27, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026353/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2008
From: CLAIRVOYANTE, INC.
To: SAMSUNG ELECTRONICS CO., LTD
Reel/Frame 020723/0613 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2005
From: WAN, JUN; LUTZE, JEFFREY W.
To: SANDISK CORPORATION
Reel/Frame 016545/0183 →