IP Library Granted Patent US 10,705,900
Granted Patent B2
US 10,705,900 · App. 15/951,097 · Granted Jul 7, 2020

Program verify adaptation for flash memory

Inventor: Ming Jin (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F11/0754G06F11/073G06F11/1048G11C29/00
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 10,705,900
App. No.
15/951,097
Granted
Jul 7, 2020
Kind
B2
Abstract

Disclosed is a system and method for providing program verify adaptation for flash memory. The method includes performing an adjustment iteration, which includes accessing error counts for respective N states of a plurality of memory cells, applying a weighting to the error counts based on a binary data coding for the N states, determining a state Smin of the N states having a minimum error count Emin from the error counts, determining a state Smax of the N states having a maximum error count Emax from the error counts, determining a difference between the Emax and the Emin satisfies an error count threshold, and adjusting, by a predefined value, a respective program verify offset of a lowest state from Smin and Smax, and of each state between Smin and Smax in the N states, wherein the adjusting is a decrement when Smin is less than Smax and an increment otherwise.

Claims (86)

1. A method for adapting program verify offsets for a memory of a solid state drive (SSD), the method comprising:

programming the memory by a controller of the SSD, wherein the controller is coupled to the memory, wherein the memory comprises one or more dies, wherein each of the one or more dies comprises blocks, wherein each of the blocks comprises wordlines, wherein each of the wordlines comprises memory cells, wherein the programming programs a plurality of memory cells within the one or more dies into N states, wherein each of the N states of the plurality of memory cells is associated with a program verify voltage;

performing, by the controller, an adjustment iteration on the one or more dies, wherein performing the adjustment iteration includes incrementing or decrementing the program verify offsets in an iterative manner to distribute errors across pages stored in the memory, wherein performing the adjustment iteration improves bit error correction and the SSD's reliability over not performing the adjustment iteration, and wherein performing the adjustment iteration comprises:

accessing, by the controller, error counts for the respective N states of the plurality of memory cells within the one or more dies, wherein the error counts are for errors between the respective N states and adjacent lower states;

applying, by the controller, a weighting to the error counts, wherein the weighting is based on a binary data coding for the N states;

determining, by the controller, a state Smin of the N states having a minimum error count Emin from the error counts;

determining, by the controller, a state Smax of the N states having a maximum error count Emax from the error counts;

determining, by the controller, a difference between the Emax and the Emin satisfies an error count threshold; and

adjusting using the controller, by a predefined value, a respective program verify offset of a lowest state from Smin and Smax, and of each state between Smin and Smax in the N states,

wherein the predefined value is a voltage increment recognizable by a digital-to-analog converter circuit for performing reads on one or more memory cells within the one or more dies,

wherein the adjusting is a decrement when Smin is less than Smax, and

wherein the adjusting is an increment when Smin is greater than Smax;

storing, by the controller, the adjusted program verify offsets into registers; and

programming, by the controller, at least some of the wordlines using the adjusted program verify offsets.

2. The method of claim 1 , further comprising, prior to performing the adjustment iteration:

determining an adaptation is due for adjusting the program verify offsets for the N states programmable into the plurality of memory cells.

3. The method of claim 2 , wherein determining the adaptation is due is by a program/erase (P/E) cycle count for the plurality of memory cells reaching a periodic threshold value.

4. The method of claim 1 , further comprising:

repeating the performing of the adjustment iteration until the difference between the Emax and the Emin does not satisfy the error count threshold, wherein a minimum number of read operations on data programmed with the adjusted program verify offsets is met after each repeating.

5. The method of claim 1 , further comprising:

incrementing the program verify offset of a highest program state of the N states.

6. The method of claim 1 , wherein the error counts are sampled from a representative distribution of the plurality of memory cells.

7. A solid state drive for facilitating adaption of program verify offsets for a plurality of memory cells, the solid state drive comprising:

a plurality of memory devices comprising one or more dies, wherein each of the one or more dies comprises blocks, wherein each of the blocks comprises wordlines, wherein each of the wordlines comprises memory cells; and

a controller configured to:

program the plurality of memory cells within the one or more dies into N states, wherein each of the N states of the plurality of memory cells is associated with a program verify voltage;

perform an adjustment iteration on the one or more dies, wherein performing the adjustment iteration includes incrementing or decrementing the program verify offsets in an iterative manner to distribute errors across pages stored in the plurality of memory devices, wherein performing the adjustment iteration facilitates improvement of bit error correction and the solid state drive's reliability over not performing the adjustment iteration, and wherein performing the adjustment iteration comprises:

accessing error counts for respective N states of the plurality of memory cells in a memory device of the plurality of memory devices, wherein the error counts are for errors between the respective N states and adjacent lower states;

applying a weighting to the error counts, wherein the weighting is based on a binary data coding for the N states;

determining a state Smin of the N states having a minimum error count Emin from the error counts;

determining a state Smax of the N states having a maximum error count Emax from the error counts;

determining a difference between the Emax and the Emin satisfies an error count threshold; and

adjusting, by a predefined value, a respective program verify offset of a lowest state from Smin and Smax, and of each state between Smin and Smax in the N states,

wherein the predefined value is a voltage increment recognizable by a digital-to-analog converter circuit for performing reads on one or more memory cells in the memory device of the plurality of memory devices,

wherein the adjusting is a decrement when Smin is less than Smax, and

wherein the adjusting is an increment when Smin is greater than Smax;

repeat the performing of the adjustment iteration until the difference between the Emax and the Emin does not satisfy the error count threshold, wherein a minimum number of read operations on data programmed with the adjusted program verify offsets is met after each repeating;

store the adjusted program verify offsets into registers; and

program at least some of the wordlines using the adjusted program verify offsets.

8. The solid state drive of claim 7 , wherein the controller is further configured to:

determine, prior to performing the adjustment iteration, that an adaptation is due for adjusting the program verify offsets for the N states programmable into the plurality of memory cells.

9. The solid state drive of claim 8 , wherein the controller is configured to determine that the adaptation is due when a program/erase (P/E) cycle count for the plurality of memory cells reaches a periodic threshold value.

10. The solid state drive of claim 7 , wherein the controller is further configured to:

increment the program verify offset of a highest program state of the N states.

11. The solid state drive of claim 7 , wherein the controller is configured to sample the error counts from a representative distribution of the plurality of memory cells.

12. A non-transitory machine-readable medium including machine-executable instructions thereon that, when executed by a processor, perform a method for adapting a plurality of program verify offsets for a memory of a solid state drive (SSD), wherein the method comprises:

programming the memory by the processor, wherein the processor is coupled to the memory, wherein the memory comprises one or more dies, wherein each of the one or more dies comprises blocks, wherein each of the blocks comprises wordlines, wherein each of the wordlines comprises memory cells, wherein the programming programs a plurality of memory cells within the one or more dies into N states, wherein each of the N states of the plurality of memory cells is associated with a program verify voltage;

determining, by the processor, an adaptation is due for adjusting program verify offsets for the N states of the plurality of memory cells, wherein the determining is by a program/erase (P/E) cycle count for the plurality of memory cells reaching a periodic threshold value; and

performing, by the processor, an adjustment iteration on the one or more dies, wherein performing the adjustment iteration includes incrementing or decrementing the program verify offsets in an iterative manner to distribute errors across pages stored in the memory, wherein performing the adjustment iteration improves bit error correction and the SSD's reliability over not performing the adjustment iteration, and wherein performing the adjustment iteration comprises:

accessing, by the processor, error counts for the respective N states of the plurality of memory cells within the one or more dies, wherein the error counts are for errors between the respective N states and adjacent lower states;

applying, by the processor, a weighting to the error counts, wherein the weighting is based on a binary data coding for the N states;

determining, by the processor, a state Smin of the N states having a minimum error count Emin from the error counts;

determining, by the processor, a state Smax of the N states having a maximum error count Emax from the error counts;

determining, by the processor, a difference between the Emax and the Emin satisfies an error count threshold; and

adjusting using the processor, by a predefined value, a respective program verify offset of a lowest state from Smin and Smax, and of each state between Smin and Smax in the N states,

wherein the predefined value is a voltage increment recognizable by a digital-to-analog converter circuit for performing reads on one or more memory cells within the one or more dies,

wherein the adjusting is a decrement when Smin is less than Smax, and

wherein the adjusting is an increment when Smin is greater than Smax;

storing, by the processor, the adjusted program verify offsets into registers; and

programming, by the processor, at least some of the wordlines using the adjusted program verify offsets.

13. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises:

repeating the performing of the adjustment iteration until the difference between the Emax and the Emin does not satisfy the error count threshold, wherein a threshold number of read operations on data programmed with the adjusted program verify offsets is met after each repeating.

14. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises:

incrementing the program verify offset of a highest program state of the N states.

15. The non-transitory machine-readable medium of claim 12 , wherein the error counts are sampled from a representative distribution of the plurality of memory cells.

16. A system for facilitating adaption of program verify offsets for a memory, the system comprising:

means for programming the memory, wherein the memory comprises one or more dies, wherein each of the one or more dies comprises blocks, wherein each of the blocks comprises wordlines, wherein each of the wordlines comprises memory cells, wherein the programming programs a plurality of memory cells within the one or more dies into N states, wherein each of the N states of the plurality of memory cells is associated with a program verify voltage;

means for performing an adjustment iteration, wherein the means for performing the adjustment iteration includes means for incrementing or decrementing the program verify offsets in an iterative manner to distribute errors across pages stored in the memory, wherein the means for performing the adjustment iteration facilitates improvement of bit error correction and the system's reliability over not performing the adjustment iteration, and wherein the means for performing the adjustment iteration comprises:

means for accessing error counts for the respective N states of the plurality of memory cells within the one or more dies, wherein the error counts are for errors between the respective N states and adjacent lower states;

means for applying a weighting to the error counts, wherein the weighting is based on a binary data coding for the N states;

means for determining a state Smin of the N states having a minimum error count Emin from the error counts;

means for determining a state Smax of the N states having a maximum error count Emax from the error counts;

means for determining a difference between the Emax and the Emin satisfies an error count threshold; and

means for adjusting, by a predefined value, a respective program verify offset of a lowest state from Smin and Smax, and of each state between Smin and Smax in the N states,

wherein the predefined value is a voltage increment recognizable by a digital-to-analog converter circuit for performing reads on one or more memory cells within the one or more dies,

wherein the adjusting is a decrement when Smin is less than Smax, and

wherein the adjusting is an increment when Smin is greater than Smax;

means for repeating the performing of the adjustment iteration until the difference between the Emax and the Emin does not satisfy the error count threshold, wherein a threshold number of read operations on data programmed with the adjusted program verify offsets is met after each repeating;

means for storing the adjusted program verify offsets into registers; and

means for programming at least some of the wordlines using the adjusted program verify offsets.

17. The system of claim 16 , further comprising:

means for determining an adaptation is due for adjusting the program verify offsets for the N states programmable into the plurality of memory cells.

18. The system of claim 17 , wherein determining the adaptation is due is by a program/erase (P/E) cycle count for the plurality of memory cells reaching a periodic threshold value.

19. The system of claim 16 , further comprising:

means for incrementing the program verify offset of a highest program state of the N states.

20. The system of claim 16 , wherein the error counts are sampled from a representative distribution of the plurality of memory cells.

Assignments (10)
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 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2018
From: JIN, MING
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045528/0075 →
Continuity (2)
Provisional Application 62625907 · Feb 2, 2018
Related Publication 20190243699A1 · Aug 8, 2019
Cited By (4)
US 12,217,813 US 12,406,717 US 12,592,271 US 12,597,459