IP Library Granted Patent US 8,868,821
Granted Patent B2
US 8,868,821 · App. 12/836,948 · Granted Oct 21, 2014

Systems and methods for pre-equalization and code design for a flash memory

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 8,868,821
App. No.
12/836,948
Granted
Oct 21, 2014
Kind
B2
Abstract

A system, computer readable program, and method for programming flash memory, the method includes: providing multiple pairs of most significant bit (MSB) page uncoded bit error rates (UBERs) and least significant bit (LSB) page UBERs; selecting a selected MSB page code rate and a selected LSB page code rate so that a selected MSB page UBER associated with the selected MSB page code rate and a selected LSB page UBER associated with the selected LSB page code rate support a highest average UBER out of the multiple pairs of MSB page UBERs and LSB page UBERs, wherein the selected MSB page code rate and the selected LSB page code rate are obtainable under a desired code rate constraint; and determining an encoding and programming scheme that may be based on the selected MSB page UBER, the selected MSB code rate, the selected LSB page UBER and the selected LSB code rate.

Claims (95)

1. A method for programming a flash memory having two bits per cell flash memory cells, the method comprising:

providing multiple pairs of most significant bit (MSB) page uncoded bit error rates (UBERs) and least significant bit (LSB) page UBERs, each pair of said multiple pairs for a respective plurality of two bits per cell flash memory cells; wherein an average UBER of each pair of said multiple pairs is an average of an MSB page UBER of the pair and a LSB page UBER of the pair;

associating each MSB page with an MSB of the two bits;

associating each LSB page with an LSB of the two bits;

selecting a highest pair of said multiple pairs, wherein the average UBER of the highest pair is highest of the average UBER of each pair of said multiple pairs, wherein the MSB page UBER of the highest pair is a selected MSB page UBER, and the LSB page UBER of the highest pair is a selected LSB page UBER;

determining a selected MSB page code rate and a selected LSB page code rate, wherein the selected MSB page code rate is associated with the selected MSB page UBER, and the selected LSB page code rate is associated with the selected LSB page UBER, wherein the selected MSB page code rate and the selected LSB page code rate are obtained under a desired code rate constraint; and

determining an encoding and programming scheme based on the selected MSB page UBER, the selected MSB page code rate, the selected LSB page UBER, and the selected LSB page code rate.

2. The method of claim 1 , further including the steps of: encoding information and storing the encoded information in a MSB page by applying encoding and programming operations that are responsive to the selected MSB page UBER and to the selected MSB page code rate; and encoding information and storing the encoded information in a LSB page by applying encoding and programming operations that are responsive to the selected LSB page UBER and to the selected LSB page code rate.

3. The method of claim 1 , further including the step of programming multiple pages of the flash memory in different manners to provide the multiple pairs of MSB page UBERs and LSB page UBERs.

4. The method of claim 1 , further including the steps of: calculating a relationship between UBER values and code rate values for a desired code rate range; and selecting the selected MSB page code rate, the selected LSB page code rate, the selected MSB page UBER, and the selected LSB page UBER such as to comply with the relationship.

5. The method of claim 1 , further including the step of programming multiple cells of the flash memory by utilizing a programming operation that facilitates non-uniform voltage level distribution.

6. The method of claim 5 , further including the step of programming the flash memory to obtain equal UBER for each of the multiple pairs.

7. The method of claim 1 , further including the step of programming the flash memory to obtain equal UBER for each of the multiple pairs.

8. The method of claim 1 , further including the step of estimating voltage level distributions that achieve the multiple pairs of MSB page UBERs and LSB page UBERs.

9. The method of claim 8 wherein the estimating step further includes the step of applying a statistical retention model.

10. The method of claim 8 , further including the step of applying an accelerated retention test at a temperature greater than 55.degree. C.

11. The method of claim 1 , further including the steps of: measuring UBERs of different voltage level distributions; and selecting voltage level distributions that support the multiple pairs of MSB page UBERs and LSB page UBERs.

12. The method of claim 11 , further including the step of programming the flash memory to support the highest average UBER.

13. A system for programming a flash memory, the system comprising:

a flash memory unit having two bits per cell flash memory cells;

an uncoded bit error rate generator unit configured to provide multiple pairs of most significant bit (MSB) page uncoded bit error rates (UBERs) and least significant bit (LSB) page UBERs; wherein an average UBER of each pair of said multiple pairs is an average of (a) an MSB page UBER of the pair and (b) a LSB page UBER of the pair; wherein each MSB page is associated with a MSB of the two bits; and wherein each LSB page is associated with a LSB of the two bits;

a selector unit configured to select a highest pair of said multiple pairs, wherein the average UBER of the highest pair is highest of the average UBER of each pair of said multiple pairs, wherein the MSB page UBER of the highest pair is a selected MSB page UBER, and the LSB page UBER of the highest pair is a selected LSB page UBER; and determine a selected MSB page code rate and a selected LSB page code rate, wherein the selected MSB page code rate is associated with the selected MSB page UBER, and the selected LSB page code rate is associated with the selected LSB page UBER, wherein the selected MSB page code rate and the selected LSB page code rate are obtained under a desired code rate constraint;

a programming scheme determination module configured to determine an encoding and programming scheme that is based on the selected MSB page code rate and the selected LSB page code rate; and

a controller configured to use the selected MSB page code rate and the selected LSB page code rate and a determined encoding and programming scheme for a range of program/erase cycles and for all or a subset of the two bits per cell flash memory cells.

14. The system of claim 13 , further comprising: an encoder unit configured to encode information by applying encoding operations that are responsive to either one of the selected MSB page code rate and the selected LSB page code rate; and a programming circuit configured to program encoded information to a LSB page by applying programming operations responsive to the selected LSB page UBER, and further configured to encode information to a MSB page by applying programming operations that are responsive to the selected MSB page UBER.

15. The system of claim 13 , further comprising a programming circuit configured to program multiple pages of the flash memory in different manners to provide the multiple pairs.

16. The system of claim 13 , wherein the uncoded bit error rate generator unit is configured to calculate a relationship between UBER values and code rate values for a desired code rate range; and wherein the selector unit is configured to select the selected MSB page code rate, the selected LSB page code rate, the selected MSB page UBER and the selected LSB page UBER such as to comply with the relationship.

17. The system of claim 13 , further comprising a programming circuit configured to program an MSB page by utilizing a programming operation that facilitates non-uniform voltage level distribution.

18. The system of claim 13 , further comprising a voltage level distribution module configured to estimate voltage level distributions that achieve the multiple pairs.

19. The system of claim 18 , wherein the voltage level distribution module is further configured to estimate the voltage level distributions by applying a statistical retention model.

20. The system of claim 18 , further including a voltage level distribution module configured to estimate at least one voltage level distribution by applying an accelerated retention test at a temperature that is greater than 55.degree. C.

21. The system of claim 13 , further comprising a voltage level distribution module configured to measure UBERs of different voltage level distributions and select voltage level distributions that achieve the multiple pairs, under a coding rate constraint.

22. A method for programming a flash memory having multiple bits per cell flash memory cells, the method comprising the steps of:

providing multiple groups of uncoded bit error rates (UBERs), wherein each group of UBERs of said multiple groups of UBERs comprises UBERs for a plurality of page types, and wherein each page type of the plurality of page types is associated with a different bit of the multiple bits; wherein each group of UBERs has an average UBER that equals an average of all UBERs of the group of UBERs;

selecting a highest group of said multiple groups, wherein an average UBER of the highest group is highest of the average UBER of each group of said multiple groups, wherein each page of the highest group of each type of page of the plurality of page types is a selected page type UBER;

determining a selected group of code rates that are associated with selected page type UBERs, wherein the selected group of code rates are obtained under a desired code rate constraint;

determining an encoding and programming scheme based on the selected group of code rates; and

configuring a controller to use the selected group of code rates and the encoding and programming scheme for a range of program/erase cycles and for all or a subset of the multiple bits per cell memory cells.

23. The method of claim 22 wherein each group of UBERs of said multiple groups of UBERs comprises

most significant bit (MSB) page UBERs and least significant bit (LSB) page UBERs.

24. The method of claim 22 , further including the steps of encoding information and storing the encoded information in each page type by applying encoding and programming operations responsive to a selected UBER of that page type and a selected code rate of that page type.

25. The method of claim 22 , further including the step of programming multiple pages of the flash memory in different manners to provide at least one group of UBERs.

26. The method of claim 22 , further including the steps of: calculating a relationship between UBER values and code rate values for a desired code rate range; and selecting the selected group of code rates such as to comply with the relationship.

27. The method of claim 22 , further including the step of programming multiple cells of the flash memory by utilizing a programming operation that facilitates non-uniform voltage level distribution.

28. The method of claim 27 , further including the step of programming the flash memory to obtain equal UBER for each of the page types.

29. The method of claim 22 , further including the step of programming the flash memory to obtain equal UBER for each of the page types.

30. The method of claim 22 , further including the step of estimating voltage level distributions that achieve the multiple groups of UBERs.

31. The method of claim 30 , wherein the estimating step includes applying a statistical retention model.

32. The method of claim 30 , further including the step of applying an accelerated retention test at high temperature.

33. The method of claim 22 , further including the steps of: measuring UBERs of different voltage level distributions; and selecting voltage level distributions that support the multiple groups of UBERs.

34. The method of claim 22 , further including the step of programming the flash memory to support the highest average UBER.

35. A system for programming a flash memory, the system comprises:

a flash memory unit having multiple bits per cell memory cells;

an uncoded bit error rate generator unit configured to provide multiple groups of uncoded bit error rates (UBERs), wherein each group of UBERs of said multiple groups of UBERs comprises UBERs for a plurality of page types, and each page type of the plurality of page types is associated with a different bit of the multiple bits; wherein each group of UBERs has an average UBER that equals an average of all UBERs of the group of UBERs;

a selector unit configured to select a highest group of said multiple groups, wherein the average UBER of the highest group is highest of the average UBER of each group of said multiple groups, wherein each page of the highest group of each type of page of the plurality of page types is a selected page type UBER; and determine a selected group of code rates that are associated with selected page type UBERs, wherein the selected group of code rates are obtained under a desired code rate constraint;

a programming scheme determination module configured to determine an encoding and programming scheme that is based on the selected group of code rates; and

a controller configured to use the selected group of code rates and the encoding and programming scheme for a range of program/erase cycles and for all or a subset of the multiple bits per cell memory cells.

36. The system of claim 35 , further comprising an encoder unit configured to encode information and store the encoded information in each page type by applying encoding and programming operations responsive to a selected UBER of that page type and a selected code rate of that page type.

37. The system of claim 35 , further comprising a programming circuit configured to program multiple pages of the flash memory in different manners to provide at least one group of UBERs.

38. The system of claim 35 , wherein the uncoded bit error rate generator unit is further configured to calculate a relationship between UBER values and code rate values for a desired code rate range; and the selector unit is further configured to select a group of code rates such as to comply with the relationship.

39. The system of claim 35 , further comprising a programming circuit configured to program the flash memory to obtain equal UBER for each of the page types.

40. The system of claim 35 , further comprising a programming circuit configured to program the flash memory to obtain equal UBER for each of the page types.

41. The system of claim 35 , further comprising a voltage level distribution module configured to estimate voltage level distributions that achieve the multiple groups of UBERs.

42. The system of claim 41 wherein the voltage level distribution module is configured to estimate voltage level distributions by applying a statistical retention model.

43. The system of claim 41 , wherein the voltage level distribution module is configured to estimate at least one voltage level distribution by applying an accelerated retention test at a temperature that is greater than 55.degree. C.

44. The system of claim 35 , further including a voltage level distribution module configured to measure UBERs of different voltage level distributions and select voltage level distributions that support the multiple groups of UBERs.

45. The system of claim 35 , further comprising a programming circuit configured to program the flash memory to support the highest average UBER.

46. A non-transitory computer readable medium embedding an executable computer program code configured to instruct a system to program a flash memory having two bits per cell flash memory cells, the executable computer program code comprising the steps of: providing multiple pairs of most significant bit (MSB) page uncoded bit error rates (UBERs) and least significant bit (LSB) page UBERs; wherein each MSB page is associated with a MSB of the two bits and wherein each LSB page is associated with a LSB of the two bits; wherein an average UBER of each pair of the multiple pairs of MSB page UBERs and LSB page UBERs is an average of an MSB page UBER of the pair and a LSB page UBER of the pair;

selecting a highest pair of said multiple pairs, wherein the average UBER of the highest pair is highest of the average UBER of each pair of said multiple pairs, wherein the MSB page UBER of the highest pair is a selected MSB page UBER, and the LSB page UBER of the highest pair is a selected LSB page UBER;

determining a selected MSB page code rate and a selected LSB page code rate, wherein the selected MSB page code rate is associated with the selected MSB page UBER, and the selected LSB page code rate is associated with the selected LSB page UBER, wherein the selected MSB page code rate and the selected LSB page code rate are obtained under a desired code rate constraint; and determining an encoding and programming scheme that is based on the selected MSB code rate and the selected LSB code rate.

47. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for: encoding information and storing the encoded information in a MSB page by applying encoding and programming operations that are responsive to the selected MSB page UBER and to the selected MSB page code rate; and encoding information and storing the encoded information in a LSB page by applying encoding and programming operations that are responsive to the selected LSB page UBER and to the selected LSB page code rate.

48. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for programming multiple pages of the flash memory in different manners to provide the multiple pairs.

49. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for: calculating a relationship between UBER values and code rate values for a desired code rate range; and selecting the selected MSB page code rate, the selected LSB page code rate, the selected MSB page UBER and the selected LSB page UBER such as to comply with the relationship.

50. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for programming multiple cells of the flash memory by utilizing a programming operation that facilitates non-uniform voltage level distribution.

51. The non-transitory computer readable medium of claim 50 , wherein the executable computer program code further comprising instructions for programming the flash memory to obtain equal UBER for each of the multiple pairs.

52. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for programming the flash memory to obtain equal UBER for each of the multiple pairs.

53. The non-transitory computer readable medium of claim 46 , wherein the executable computer code further comprising instructions for estimating voltage level distributions that achieve the multiple pairs of MSB page UBERs and LSB page UBERs.

54. The non-transitory computer readable medium of claim 53 , wherein the executable computer program code further comprising instructions for applying a statistical retention model.

55. The non-transitory computer readable medium of claim 46 , wherein the executable computer program code further comprising instructions for measuring UBERs of different voltage level distributions and selecting voltage level distributions that support the multiple pairs of MSB page UBERs and LSB page UBERs.

56. The non-transitory computer readable medium of claim 55 , wherein the executable computer program code comprising instructions for programming the flash memory to support a highest average UBER.

57. A non-transitory computer readable medium embedding an executable computer program code configured to instruct a system to program a flash memory, the executable computer program code comprising the steps of:

providing multiple groups of uncoded bit error rates (UBERs), wherein each group of UBERs of the multiple groups of UBERs comprises UBERs for a plurality of page types; wherein each page type of the plurality of page types is associated with a different bit of the multiple bits; wherein each group of UBERs has an average UBER that equals an average UBER of all UBERs of the group of UBERs;

selecting a highest group of said multiple groups, wherein an average UBER of the highest group is highest of the average UBER of each group of said multiple groups, wherein each page of the highest group of each type of page of the plurality of page types is a selected page type UBER;

determining a selected group of code rates that are associated with selected page type UBERs, wherein the selected group of code rates are obtained under a desired code rate constraint; and

determining an encoding and programming scheme that is based on the selected group of UBERs.

58. The non-transitory computer readable medium of claim 57 , wherein each group of UBERs of the multiple groups of UBERs comprises most significant bit (MSB) page UBERs and least significant bit (LSB) page UBERs.

59. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for encoding information and storing the encoded information in each page type by applying encoding and programming operations responsive to a selected UBER of that page type and a selected code rate of that page type.

60. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for programming multiple pages of the flash memory in different manners to provide at least one group of UBERs.

61. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for: calculating a relationship between UBER values and code rate values for the desired code rate range constraint; and selecting the selected group of code rates such as to comply with the relationship.

62. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for programming multiple cells of the flash memory by utilizing a programming operation that facilitates non-uniform voltage level distribution.

63. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for programming the flash memory to obtain equal UBER for each of the page types.

64. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for estimating voltage level distributions that achieve the multiple groups of UBERs.

65. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for applying a statistical retention model.

66. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for measuring UBERs of different voltage level distributions and selecting voltage level distributions that support the multiple groups of UBERs.

67. The non-transitory computer readable medium of claim 57 , wherein the executable computer code further comprising instructions for programming the flash memory to support the highest average UBER.

Assignments (9)
MERGER Recorded Mar 3, 2023
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED; BROADCOM INTERNATIONAL PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 062952/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2020
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
To: BROADCOM INTERNATIONAL PTE. LTD.
Reel/Frame 053771/0901 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
RELEASE OF SECURITY INTEREST Recorded Jan 11, 2017
From: KREOS CAPITAL IV (EXPERT FUND) LIMITED
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 041339/0921 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2016
From: DENSBITS TECHNOLOGIES LTD.
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 037622/0224 →
SECURITY INTEREST Recorded Mar 18, 2015
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 035222/0547 →
SECURITY INTEREST Recorded Jul 30, 2014
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 033444/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2011
From: STEINER, AVI; WEINGARTEN, HANAN
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 026367/0786 →