IP Library Granted Patent US 10,459,785
Granted Patent B2
US 10,459,785 · App. 15/717,572 · Granted Oct 29, 2019

Error detection for training non-volatile memories

Inventors: Gautam Ashok Dusija (Burlingame, CA); Venkatesh Prasa Ramachandra (San Jose, CA); Mrinal Kochar (San Jose, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F11/1004G06F3/064G06F3/0619G06F3/0679
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,459,785
App. No.
15/717,572
Granted
Oct 29, 2019
Kind
B2
Abstract

The present disclosure, in various embodiments, describes technologies and techniques for detecting errors in a non-volatile memory (NVM) device prior to performing re-training/recalibration. A processing device in a NVM controller detects a cyclic redundancy check (CRC) condition for detecting error in the NVM device, and a re-training condition that is based on the CRC condition. A CRC circuit generates CRC code when a CRC condition is detected, and the processing is configured to compare CRC code received from the NVM controller with the generated CRC code to detect error. A calibration circuit then re-trains the NVM device if the CRC circuit detects error and the re-training condition has been met.

Claims (54)

1. A non-volatile memory (NVM) controller, comprising:

a host interface for communicating with a host device;

a memory interface for communicating with a NVM via one or more channels;

a cyclic redundancy check (CRC) circuit configured to generate a CRC code; and

a calibration circuit configured to provide re-training data to the NVM,

wherein the NVM controller is configured to:

(i) receive a CRC code from the NVM via the memory interface,

(ii) compare the received CRC code with the generated CRC code to detect error,

(iii) determine if a re-training condition has been met, based on the comparison of the received CRC code with the generated CRC code, and

(iv) activate the calibration circuit, if the re-training condition has been met, to re-train the NVM using the re-training data.

2. The NVM controller of claim 1 , wherein the NVM comprises a NAND memory, and the NVM controller is configured to receive the CRC code in response to a read command.

3. The NVM controller of claim 1 , wherein the NVM controller is further configured to:

determine if a CRC condition is present, and

receive CRC code from the NVM only if the CRC condition is present.

4. The NVM controller of claim 3 , wherein the CRC condition comprises at least one of (i) expiration of a predetermined period of time, (ii) a predetermined number of read errors detected, and/or (iii) a temperature delta detected.

5. The NVM controller of claim 1 , wherein the re-training condition comprises at least one of:

a predetermined number of CRC errors detected within a predetermined time period, and/or

a predetermined number of CRC errors detected after a temperature delta threshold has been met or exceeded.

6. The NVM controller of claim 1 , wherein the generated and received CRC codes each comprise one of (i) a fixed-length binary sequence or (ii) a data pattern.

7. The NVM controller of claim 1 , wherein the calibration circuit is configured to calibrate the NVM by matching impedance between the NVM controller and the NVM.

8. The NVM controller of claim 1 , wherein the calibration circuit is configured to calibrate the NVM based on a duty cycle of a strobe of the controller.

9. The NVM controller of claim 1 , wherein the calibration circuit is configured to calibrate the NVM by correcting at least one of a strobe and a phase relationship between data and the strobe, wherein the strobe and the data are provided via the memory interface to the NVM.

10. A non-volatile memory (NVM) controller, configured to communicate with a host and a NVM, comprising:

a processing circuit configured to determine (i) a cyclic redundancy check (CRC) condition indicative of error in the NVM, and (ii) if a re-training condition, based on the CRC condition, has been met;

a CRC circuit operatively coupled to the processing circuit and configured to generate a CRC code when the CRC condition is met, wherein the processing circuit is configured to compare a CRC code received from the NVM controller with the generated CRC code to detect error; and

a calibration circuit operatively coupled to the processing circuit and configured to re-train the NVM if the processing circuit detects error and the re-training condition has been met.

11. The NVM controller of claim 10 , wherein the NVM comprises a NAND memory, and the NVM controller is configured to receive the CRC code in response to a read command.

12. The NVM controller of claim 10 , wherein the CRC condition comprises at least one of (i) expiration of a predetermined period of time, (ii) a predetermined number of read errors detected, and/or (iii) a temperature delta detected.

13. The NVM controller of claim 10 , wherein the re-training condition comprises at least one of:

a predetermined number of CRC errors detected within a predetermined time period, and/or

a predetermined number of CRC errors detected after a temperature delta threshold has been met or exceeded.

14. The NVM controller of claim 10 , wherein the generated and received CRC codes each comprise one of (i) a fixed-length binary sequence or (ii) a data pattern.

15. The NVM controller of claim 10 , wherein the calibration circuit is configured to calibrate the NVM by matching impedance between the NVM controller and the NVM.

16. The NVM controller of claim 10 , wherein the calibration circuit is configured to to calibrate the NVM based on a duty cycle of a strobe of the controller.

17. The NVM controller of claim 10 , wherein the calibration circuit is configured to calibrate the NVM by correcting at least one of a strobe and a phase relationship between data and the strobe, wherein the strobe and the data are provided via the memory interface to the NVM.

18. A method of operating a non-volatile memory (NVM) controller, configured to communicate with a host and a NVM, comprising:

determining a cyclic redundancy check (CRC) condition for detecting error in the NVM;

generating a CRC code comprising a fixed-length binary sequence when the CRC condition is determined;

receiving a fixed-length binary sequence CRC code from the NVM in response to a read command from the NVM controller;

comparing the CRC code received from the NVM with the generated CRC code to detect error;

determining if a re-training condition has been met based on detected error in the comparing of the CRC code; and

re-training the NVM if the comparison of the CRC codes is indicative of error and the re-training condition has been met.

19. The method of claim 18 , wherein the CRC condition comprises at least one of (i) expiration of a predetermined period of time, and/or (ii) a temperature delta detected.

20. The method of claim 18 , wherein the re-training condition comprises at least one of:

a predetermined number of CRC errors detected within a predetermined time period, and/or

a predetermined number of CRC errors detected after a temperature delta threshold has been met or exceeded.

21. The method of claim 18 , wherein re-training the NVM comprises calibrating the NVM by matching impedance between the NVM controller and the NVM.

22. The method of claim 21 , wherein re-training the NVM comprises calibrating the NVM based on re-training data received from the NVM and correcting at least one of timing and phase of the re-training data received from the NVM.

23. A non-volatile memory (NVM) controller, configured to communicate with a host and a NVM, comprising:

means for determining a cyclic redundancy check (CRC) condition for detecting error in the NVM;

means for generating a CRC code when the CRC condition is determined;

means for comparing a CRC code received from the NVM controller with the generated CRC code to detect error;

means for determining if a re-training condition has been met, based on detected error in the comparing of the CRC code; and

means for re-training the NVM if the means for comparing CRC code detects error and the re-training condition has been met.

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 Sep 27, 2017
From: DUSIJA, GAUTAM ASHOK; RAMACHANDRA, VENKATESH PRASA; KOCHAR, MRINAL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043718/0646 →
Continuity (1)
Related Publication 20190095275A1 · Mar 28, 2019
Cited By (3)
US 12,204,409 US 12,298,846 US 12,670,061