DE102015210651B4 - Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit - Google Patents

Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit Download PDF

Info

Publication number
DE102015210651B4
DE102015210651B4 DE102015210651.9A DE102015210651A DE102015210651B4 DE 102015210651 B4 DE102015210651 B4 DE 102015210651B4 DE 102015210651 A DE102015210651 A DE 102015210651A DE 102015210651 B4 DE102015210651 B4 DE 102015210651B4
Authority
DE
Germany
Prior art keywords
error correction
data word
circuit
bit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102015210651.9A
Other languages
English (en)
Other versions
DE102015210651A1 (de
Inventor
Martin Perner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102015210651.9A priority Critical patent/DE102015210651B4/de
Priority to JP2016111306A priority patent/JP6290303B2/ja
Priority to US15/176,679 priority patent/US20160364280A1/en
Priority to KR1020160071795A priority patent/KR101852919B1/ko
Publication of DE102015210651A1 publication Critical patent/DE102015210651A1/de
Application granted granted Critical
Publication of DE102015210651B4 publication Critical patent/DE102015210651B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2215Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test error correction or detection circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/01Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/015Simulation or testing of codes, e.g. bit error rate [BER] measurements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Abstract

Schaltung (100) zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente (130) der Schaltung (100), wobei die Schaltung (100) umfasst:eine Eingangsschnittstelle (110) zum Empfangen eines Eingangsdatenwortes,einen Datenmanipulator (120),die Fehlerkorrekturkomponente (130), undeine Bewertungskomponente (140),wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, zu überprüfen, ob das Eingangsdatenwort fehlerhaft ist,wobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt, dass das Eingangsdatenwort fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das Eingangsdatenwort zu korrigieren, um ein vorkorrigiertes Datenwort zu erhalten, und dazu ausgelegt ist, das vorkorrigierte Datenwort als ein Testdatenwort in den Datenmanipulator (120) einzuspeisen, undwobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt, dass das Eingangsdatenwort nicht fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das Eingangsdatenwort als das Testdatenwort in den Datenmanipulator (120) einzuspeisen,wobei der Datenmanipulator (120) dazu ausgelegt ist, eines oder mehrere Bits des Testdatenwortes zu manipulieren, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist,wobei die Fehlerkorrekturkomponente (130) dazu angelegt ist, das modifizierte Datenwort zu verarbeiten, undwobei die Bewertungskomponente (140) dazu ausgelegt ist, die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente (130) zu bewerten.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung stellt Konzepte zum Testen einer Fehlerkorrekturcode-Schaltung eines Speichers während des Betriebs ohne Bedarf an fehlerfreien Testdaten bereit.
  • HINTERGRUND
  • Im Stand der Technik werden bekannte fehlerhafte Testdaten zum Überprüfen der korrekten Ausführung der Fehlerkorrektur von Einzel-Bit-Fehlern oder Doppel-Bit-Fehlern in einem (nicht-flüchtigen) Flash-Speicher erzeugt, indem ein inkorrekter Fehlerkorrekturcode als Testcode verwendet wird (durch doppelte Programmierung). Unter anderem hat dieses Verfahren die folgenden Nachteile:
    • Ein jeweiliger Speicherabschnitt muss im Voraus getestet werden, um zu bestätigen, dass er fehlerfrei ist. Speicherabschnitte, bei denen davon ausgegangen wird, dass sie an sich fehlerfrei sind, können nicht für den Testcode verwendet werden, da die genaue Kenntnis der Einzel-Bit-Fehler und Doppel-Bit-Fehler, die zu erwarten sind, sonst nicht zum Beurteilen der Fehlerkorrekturcode-Funktion verwendet werden kann.
  • Wenn zusätzlich ein spaltenorientierter Burstlängenfehler beteiligt ist, dann wird im Betrieb der Testcode unabsichtlich gestört. Wenn die Testsoftware den gestörten Testcode nicht in einer fehlertoleranten Weise handhabt, erzeugt die Komponente ein unbeabsichtigtes Fehlersignal.
  • Zum Umgehen der Standardfehlerbehandlung wird entweder der strenge Fehlerdetektionsalgorithmus gelockert oder alternative Speicherabschnitte angegeben, die für eine Mehrheitsbestimmung ebenfalls getestet werden. Ein resultierender Nachteil besteht darin, dass weitere Speicherabschnitte für den Mehrfachvergleich zugewiesen werden müssen.
  • Ferner wird der Anwender bei dem Stand der Technik nicht mit Mitteln zum separaten Programmieren von Daten und Fehlerkorrekturcodes in einer konkreten fehlerhaften Weise ausgestattet. Der Testcode, der einen Einzel-Bit-Fehler oder einen Doppel-Bit-Fehler aufweist, ist stattdessen nur im Anwendermodus programmierbar. Derzeit wird im Fall von einem nicht-flüchtigen Speicher wie einem Flash-Speicher die Komponente zweimal im Anwendermodus programmiert und dadurch werden die Fehlerkorrekturcodes so zugeordnet, als ob eine ODER-Operation (doppelte Programmierung ohne vorherige Löschung) durchgeführt werden würde. Da ein solches Vorgehen nicht von der Komponente erlaubt ist, wurde nicht getestet, ob eine solche Operation richtig arbeitet. Darüber hinaus ist es in flüchtigen Speichern auch nicht möglich, innerhalb eines ECC-Worts den ECC-Inhalt unabhängig von dem Dateninhalt zu konfigurieren, ohne ein Modifizieren des ECC zu ermöglichen.
  • Um alle Datenbits für eine Fehlerkorrekturcode-Fehlererkennung zu testen, wird ein spezieller Speicherabschnitt programmiert und dann ein zweiter geeigneter Code doppelt programmiert. Die Daten werden so gewählt, dass eine doppelte Programmierung nicht den Fehlerkorrekturcode-Inhalt in unerwünschter Weise ändert und, abgesehen von den beabsichtigten Bitabweichungen, das Ergebnis gleich der anfänglichen Programmierung ist.
  • Darüber hinaus kann die mehrfache Programmierung des Fehlerkorrektur-Testcodes durch Einsatz von Adressenfehlerkorrekturcode verkompliziert werden. Bei Verwendung eines Adressenfehlerkorrekturcodes wird zusätzlich zu den Daten die Adresse der Daten auch für die Fehlerkorrekturcode-Berechnung verwendet. Es ist somit möglich, einen fehlerhaft adressierten, aber korrekten Fehlerkorrekturcode-Speicherinhalt zu detektieren. In diesem Fall ist der adressenunabhängige Fehlerkorrektur-Testcode abhängig von dem Speicherabschnitt und nicht mehr flexibel einsetzbar.
  • Ferner wird bei dem Stand der Technik der Testcode von dem Hersteller vorgegeben. Der Anwender ist nicht mit Mitteln ausgestattet, um die Fehlerkorrekturcodewörter selbst auszuwählen. Hilfsmittel oder die Möglichkeit, ein Anwenderdatenwort für ein Fehlerkorrekturcodewort (Anwenderdaten- und Fehlerkorrekturcode-Byte) für ein Fehlerkorrekturcodewort und für ein vorgegebenes Fehlerkorrekturcodedatenwort zu bestimmen, sind nicht vorgesehen.
  • US 8 140 940 B2 zeigt eine Speichersteuervorrichtung, wobei, wenn eine Einfügungsposition mit der Fehlerposition übereinstimmt, korrigierte Daten ausgegeben werden, die durch Korrigieren eines Fehlers an der Fehlerposition erhalten wurden.
  • US 8 707 104 B1 zeigt Mechanismen zum Testen eine Fehlerwiederherstellung, wobei ein System so konfiguriert ist, dass es Fehler in Datenspeicherbefehlen oder -operationen einführt oder injiziert, wobei Fehlerbehebungsmechanismen getestet werden.
  • DE 10 2008 026 568 A1 zeigt ein Halbleiterbauelement, das eine Bitfehlerschaltung aufweist, die einen Bitfehler erzeugt.
  • GB 2 226 168 A zeigt eine Fehlerbit-Erzeugungsschaltung, wobei eine Verschlechterung der Betriebsleistung in einer Fehlerprüf- und Korrekturvorrichtung überprüft wird.
  • Es wäre sehr vorteilhaft, wenn verbesserte Konzepte zum Testen einer Fehlerkorrekturcode-Schaltung bereitgestellt würden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine Schaltung zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente der Schaltung ist vorgesehen. Die Schaltung umfasst eine Eingangsschnittstelle zum Empfangen eines Eingangsdatenwortes. Ferner umfasst die Schaltung einen Datenmanipulator zum Manipulieren eines oder mehrerer Bits eines Testdatenwortes, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist. Darüber hinaus umfasst die Schaltung die Fehlerkorrekturkomponente zum Verarbeiten des modifizierten Datenwortes. Ferner umfasst die Schaltung eine Bewertungskomponente zum Bewerten der Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente.
  • Außerdem ist ein Verfahren zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente vorgesehen. Das Verfahren umfasst Folgendes:
    • - Empfangen eines Eingangsdatenwortes durch eine Eingangsschnittstelle.
    • - Manipulieren eines oder mehrerer Bits eines Testdatenwortes durch einen Datenmanipulator, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist.
    • - Verarbeiten des modifizierten Datenwortes durch die Fehlerkorrekturkomponente.
    Und:
    • - Bewerten der Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente.
  • Ferner ist ein Computerprogramm zum Implementieren des oben beschriebenen Verfahrens, wenn es auf einem Computer oder einem Signalprozessor ausgeführt wird, vorgesehen. Weiterhin ist ein nichtflüchtiges digitales Speichermedium, das das Computerprogramm zum Implementieren des oben beschriebenen Verfahrens umfasst, wenn es auf einem Computer oder Prozessor ausgeführt wird, bereitgestellt.
  • Bevor Ausführungsformen der vorliegenden Erfindung unter Verwendung der beigefügten Figuren im Einzelnen beschrieben werden, wird darauf hingewiesen, dass gleiche oder funktionell gleiche Elemente die gleichen Bezugszeichen in den Figuren erhalten und dass eine wiederholte Beschreibung der mit den gleichen Bezugszeichen versehenen Elemente entfällt. Daher sind Beschreibungen für Elemente, die die gleichen Bezugszahlen aufweisen, miteinander austauschbar.
  • Figurenliste
    • 1 veranschaulicht eine Schaltung zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente der Schaltung gemäß einer Ausführungsform;
    • 2 veranschaulicht eine Schaltung gemäß einer Ausführungsform, wobei die Fehlerkorrekturkomponente dazu ausgelegt ist, das Eingangsdatenwort von der Eingangsschnittstelle zu empfangen;
    • 3 zeigt eine Schaltung gemäß einer Ausführungsform, wobei die Schaltung ferner einen Moduswechsler zum Aktivieren eines normalen Betriebsmodus umfasst;
    • 4 zeigt eine Schaltung gemäß einer Ausführungsform, wobei die Schaltung, zusätzlich zu den Komponenten von 1 bis 3 ferner eine Anwenderschnittstelle aufweist;
    • 5 veranschaulicht eine Schaltung gemäß einer Ausführungsform, wobei das Testdatenwort die Anwenderdatenbits, die Fehlerkorrekturbits und Adressbits zum Spezifizieren eines Orts der Anwenderdatenbits innerhalb eines Speichers umfassen kann;
    • 6 veranschaulicht eine Schaltung gemäß einer Ausführungsform, wobei die Schaltung selbst darüber hinaus einen Speicher umfasst;
    • 7 veranschaulicht eine Schaltung gemäß einer bestimmten Ausführungsform, wobei die Schaltung den Speicher und eine Anwenderschnittstelle zum Spezifizieren eines oder mehrerer adressierbarer Bits, die durch eine Adresse innerhalb des Speichers angegeben sind und die geändert werden sollen, umfasst. Die Adresse wird explizit angewendet oder es wird implizit auf sie Bezug genommen;
    • 8 veranschaulicht einen Datenmanipulator gemäß einer Ausführungsform, wobei der Datenmanipulator ein Schaltungselement, ein weiteres Schaltungselement und ein Bitregister umfasst. Der Datenmanipulator in 8 hat ein einstufiges XOR. Einzel-Bit-Modifikationen wie Verschieben oder Rotieren können in einer separaten Stufe angewendet werden. Gemäß einigen Ausführungsformen können beide Bit-Manipulationsschritte beispielsweise in einer zweistufigen Manipulation enthalten sein, wie es in 18, 19 und 20 dargestellt ist;
    • 9 veranschaulicht einen Fehlerkorrekturcodespeicher gemäß Ausführungsformen mit wahlfreiem Zugriff durch einen Lesepfad und einen Schreibpfad;
    • 10 veranschaulicht eine Fehlerkorrekturcodeschaltung, die in einem Datenpfad zwischen einer CPU und einem Speicher realisiert ist. Außerdem sind die eingesetzten Adressregister dargestellt.
    • 11 zeigt eine kleine Registersatzerweiterung zum Unterstützen der Schaltungskorrekturprüfung während des Betriebs;
    • 12 veranschaulicht ein Ablaufdiagramm zum Initialisieren, Betreiben und Bewerten der Funktion der Fehlerkorrekturfähigkeit für einen absichtlich doppelt programmierten Flash-Speicher, der eine Fehlerkorrekturcode-Fähigkeit aufweist;
    • 13 veranschaulicht ein Ablaufdiagramm, um eine Fehlerkorrekturcode-Funktion manuell zu überprüfen;
    • 14 veranschaulicht ein Ablaufdiagramm, um eine Fehlerkorrekturcode-Funktion halbautomatisch zu überprüfen;
    • 15 veranschaulicht ein Ablaufdiagramm, um eine Fehlerkorrekturcode-Funktion kontinuierlich vollständig automatisch zu überprüfen;
    • 16 veranschaulicht einen Registersatz, um eine Fehlerkorrekturcode-Funktion kontinuierlich vollständig automatisch zu überprüfen;
    • 17 veranschaulicht eine Fehlerkorrekturcode-Funktionsprüfung;
    • 18 veranschaulicht eine Hardware-Implementierung gemäß einer Ausführungsform;
    • 19 veranschaulicht Baumprozeduren der Konfiguration (Initialisierung, Aktivierung, autonomen Überwachung) einer finiten Fehlerkorrekturcode-Test-Zustandsmaschine gemäß einer Ausführungsform; und
    • 20 veranschaulicht ein Beispiel, das ein Erzwingen und Zählen von Einzel-Bit-Fehlern und Doppel-Bit-Fehlern gemäß einer Ausführungsform darstellt.
  • GENAUE BESCHREIBUNG
  • 1 veranschaulicht eine Schaltung 100 für die Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente 130 der Schaltung 100 gemäß einer Ausführungsform.
  • Die Schaltung 100 umfasst eine Eingangsschnittstelle 110, um ein Eingangsdatenwort zu empfangen.
  • Außerdem umfasst die Schaltung 100 einen Datenmanipulator 120 zum Manipulieren eines oder mehrerer Bits eines Testdatenwortes, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist.
  • Darüber hinaus umfasst die Schaltung 100 eine Fehlerkorrekturkomponente 130 zum Verarbeiten des modifizierten Datenwortes.
  • Außerdem umfasst die Schaltung 100 eine Bewertungskomponente 140 zum Bewerten der Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente 130 in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente 130.
  • Ein Zweck des Datenmanipulators 120 besteht darin, dass bestimmte Fehler absichtlich in dem modifizierten Datenwort erzeugt werden können. Unter der Annahme, dass das Testdatenwort fehlerfrei ist, erzeugt ein Modifizieren eines Bits des Testdatenwortes ein modifiziertes Datenwort, das genau einen Einzel-Bit-Fehler aufweist. Es kann dann durch die Bewertungskomponente 140 bewertet werden, ob der Fehlerkorrekturcode das modifizierte Datenwort korrekt verarbeitet.
  • In einigen Ausführungsformen kann die Bewertungseinheit 140 beispielsweise dazu ausgelegt sein, die Schaltung 100 zu deaktivieren oder einen Alarm oder eine Alarmmeldung auszugeben, wenn die Bewertungskomponente 140 detektiert hat, dass die Fehlerkorrektur der Fehlerkorrekturkomponente 130 inkorrekt ist.
  • In verschiedenen Ausführungsformen werden unterschiedliche Kriterien zum Bewerten einer korrekten Verarbeitung der Fehlerkorrekturkomponente angewendet.
  • Gemäß einer Ausführungsform hält die Bewertungskomponente 140 eine Verarbeitung der Fehlerkorrekturkomponente für richtig, wenn die Fehlerkorrekturkomponente korrekt detektiert, dass ein modifiziertes Datenwort einen Fehler aufweist, und wenn die Fehlerkorrekturkomponente den Fehler dieses Datenwortes korrekt korrigiert.
  • Eine solche Ausführungsform hat den Vorteil, dass nicht nur die Fehlerdetektion, sondern auch die Fehlerkorrektur der Fehlerkorrekturkomponente überprüft wird.
  • In einer weiteren Ausführungsform hält die Bewertungskomponente 140 eine Verarbeitung der Fehlerkorrekturkomponente für richtig, wenn die Fehlerkorrekturkomponente korrekt detektiert, dass ein modifiziertes Datenwort einen Fehler aufweist, und testet nicht, ob eine Korrektur des modifizierten Datenwortes erfolgreich sein würde. In einigen solchen Ausführungsformen korrigiert die Fehlerkorrekturschaltung das modifizierte Datenwort nicht, sondern bestimmt nur, ob eine Korrektur des modifizierten Datenwortes erforderlich ist.
  • Eine solche Ausführungsform hat den Vorteil, dass die Verarbeitungszeit eingespart wird, die zur Korrektur des modifizierten Datenwortes notwendig wäre. Unter anderem ermöglicht dies, dass eine große Anzahl von modifizierten Datenwörtern, die verschiedene Modifikationen aufweisen, für die korrekte Fehlerdetektion in kürzerer Zeit im Vergleich zu Ausführungsformen, in denen auch die richtige Fehlerkorrektur überprüft wird, getestet werden können. Eine grundlegende Annahme solcher Ausführungsformen ist, dass die Fehlerkorrektur durch die Fehlerkorrekturkomponente 130 korrekt durchgeführt wird, solange alle Fehler, die detektiert werden sollen, wirklich detektiert werden.
  • Wie oben dargelegt wird gemäß einigen Ausführungsformen getestet, ob das Ergebnis der Fehlerkorrektur korrekt ist. In einigen Ausführungsformen kann dann, wenn eine Korrektur stattfand, beispielsweise ein Einzel-Bit-Fehler-Indikator oder ein Doppel-Bit-Fehler-Indikator gesetzt werden.
  • Gemäß einer weiteren Ausführungsform kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist. Wenn die Fehlerkorrekturkomponente 130 bestimmt hat, dass das modifizierte Datenwort fehlerhaft ist, kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, das modifizierte Datenwort zu korrigieren, um ein korrigiertes Datenwort zu erhalten, das Anwenderdatenbits und Fehlerkorrekturbits umfasst. Die Bewertungskomponente 140 kann beispielsweise dazu ausgelegt sein, in Abhängigkeit von den Anwenderdatenbits des korrigierten Datenwortes und in Abhängigkeit von den Fehlerkorrekturbits des korrigierten Datenwortes zu bestimmen, ob das korrigierte Datenwort fehlerhaft ist. Wenn das korrigierte Datenwort fehlerhaft ist, ist die Bewertungskomponente 140 dazu ausgelegt, zu bestimmen, dass die Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente 130 inkorrekt ist.
  • Somit wird nach Durchführen einer Korrektur eines detektierten Fehlers ein weiterer Test durchgeführt, um zu bestimmen, ob ein Fehler in dem korrigierten Datenwort vorhanden ist. Wenn die durchgeführte Korrektur erfolgreich war, sollte kein Fehler in dem korrigierten Datenwort vorhanden sein. Andernfalls wird bestimmt, dass die Fehlerkorrekturkomponente 130 inkorrekt ist.
  • Das Modifizieren eines Bits eines Testdatenwortes kann beispielsweise durchgeführt werden, indem das Testdatenwort invertiert wird, beispielsweise durch Ändern eines Bitwerts von „0“ auf „1“ oder durch Ändern eines Bitwerts von „-1“ aus „0“.
  • Gemäß einer Ausführungsform kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, zu überprüfen (und kann beispielsweise dazu ausgelegt sein, durch Setzen eines Merkers anzugeben), ob das modifizierte Datenwort fehlerhaft ist. In einer solchen Ausführungsform kann die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, die Korrektheit der Fehlerkorrekturfähigkeit (z. B. Markieren von Fehlern und/oder angewandte Datenkorrektur) der Fehlerkorrekturkomponente 130 abhängig von dem Ergebnis der Überprüfung, ob das modifizierte Datenwort fehlerhaft ist, die von der Fehlerkorrekturkomponente 130 durchgeführt wird, zu bewerten.
  • Gemäß einer Ausführungsform kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist. In einer derartigen Ausführungsform kann dann, wenn die Fehlerkorrekturkomponente 130 bestimmt hat, dass das modifizierte Datenwort fehlerhaft ist, die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, das modifizierte Datenwort zu korrigieren, um ein korrigiertes Datenwort zu erhalten. Darüber hinaus kann in einer solchen Ausführungsform die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, zu bestimmen, ob das korrigierte Datenwort gleich einem erwarteten Datenwort ist. Ferner kann in einer derartigen Ausführungsform dann, wenn das korrigierte Datenwort von dem erwarteten Datenwort verschieden ist, die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, zu bestimmen, dass die Fehlerkorrekturfähigkeit des Fehlerkorrekturkomponente 130 inkorrekt ist.
  • In anderen Ausführungsformen kann das Testdatenwort selbst ohne Modifikation in die Fehlerkorrekturkomponente 130 eingespeist werden. Die Bewertungskomponente 140 kann die Fehlerkorrekturkomponente 130 als fehlerhaft ansehen, wenn die Fehlerkorrekturkomponente 130 das Testdatenwort für fehlerhaft hält, während das Testdatenwort tatsächlich fehlerfrei ist.
  • Allgemeiner kann in einigen Ausführungsformen ein fehlerfreies Datenwort beispielsweise in die Fehlerkorrekturkomponente 130 eingespeist werden. Die Bewertungskomponente 140 kann die Fehlerkorrekturkomponente 130 als fehlerhaft ansehen, wenn die Fehlerkorrekturkomponente 130 das fehlerfreie Datenwort für fehlerhaft hält.
  • 2 veranschaulicht eine Schaltung 100 gemäß einer Ausführungsform, wobei die Fehlerkorrekturkomponente 130 dazu ausgelegt ist, das Eingangsdatenwort aus der Eingangsschnittstelle 110 zu empfangen. In einer solchen Ausführungsform kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, zu überprüfen, ob das Eingangsdatenwort fehlerhaft ist.
  • Wenn in 2 die Fehlerkorrekturkomponente 130 bestimmt, dass das Eingangsdatenwort fehlerhaft ist, kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, das Eingangsdatenwort zu korrigieren, um ein vorkorrigiertes Datenwort zu erhalten, und kann beispielsweise dazu ausgelegt sein, das vorkorrigierte Datenwort als das Testdatenwort in den Datenmanipulator 120 einzuspeisen.
  • Wenn die Fehlerkorrekturkomponente 130 bestimmt, dass das Eingangsdatenwort nicht fehlerhaft ist, kann die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, das Eingangsdatenwort als das Testdatenwort in den Datenmanipulator 120 einzuspeisen.
  • Die Ausführungsform von 2 hat unter anderem den Vorteil, dass, nachdem die Korrektheit der Eingangsdaten durch die Fehlerkorrekturkomponente 130 überprüft worden ist und nachdem gegebenenfalls eine Korrektur des Eingangsdatenwortes durchgeführt worden ist, die Wahrscheinlichkeit steigt, dass das Testdatenwort, das in den Datenmanipulator eingespeist wird, fehlerfrei ist.
  • Eine alternative Ausführungsform zu 2 speist das Eingangsdatenwort direkt aus der Eingangsschnittstelle 110 in den Datenmanipulator 130 ein. Eine solche Ausführungsform hat unter anderem den Vorteil, dass keine Verarbeitungszeit für die Überprüfung und gegebenenfalls Korrektur des Eingangsdatenwortes aufgewendet wird.
  • 3 veranschaulicht eine Schaltung gemäß einer Ausführungsform, wobei die Schaltung 100 weiterhin einen Moduswechsler 150 umfasst, um einen normalen Betriebsmodus zu aktivieren. In einer derartigen Ausführungsform ist dann, wenn der normale Betriebsmodus aktiviert ist, der Moduswechsler 150 dazu ausgelegt, den Datenmanipulator 120 und den Bewerter zu deaktivieren, so dass dann, wenn der normale Betriebsmodus aktiviert ist, der Datenmanipulator 120 beispielsweise dazu ausgelegt sein kann, nicht eines oder mehrere Bits des Testdatenwortes zu manipulieren, und so dass dann, wenn der normale Betriebsmodus aktiviert ist, die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein kann, nicht die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente 130 zu bewerten.
  • Insbesondere veranschaulicht 3 einen normalen Betriebsmodus, angezeigt durch „1“, und einen Testmodus, angezeigt durch „2“. In 3 wird in dem normalen Betriebsmodus ein Eingangsdatenwort von der Eingangsschnittstelle 110 in die Fehlerkorrekturkomponente 130 eingespeist, wobei das Eingangsdatenwort auf Korrektheit überprüft wird und gegebenenfalls korrigiert wird. Das (möglicherweise korrigierte) Datenwort wird dann von der Fehlerkorrekturkomponente 130 ausgegeben.
  • Im Testmodus, in 3 angezeigt durch „2“, arbeitet die Schaltung 100 wie unter Bezugnahme auf 1 und 2 beschrieben.
  • In bevorzugten Ausführungsformen sind zwei Betriebsarten vorhanden, beispielsweise ein normaler Betriebsmodus und ein Testmodus. Der Testmodus wird nur zu Zeiten aktiviert, zu denen die Fehlerkorrekturkomponente oder ein Prozessor keine Daten verarbeitet.
  • 4 veranschaulicht eine Schaltung 100 gemäß einer Ausführungsform, wobei die Schaltung 100 zusätzlich zu den Komponenten von 1 bis 3 ferner eine Anwenderschnittstelle 160 aufweist, die dazu ausgelegt ist, es einem Anwender zu ermöglichen, ein oder mehrere Bits des Testdatenwortes zu spezifizieren, die manipuliert werden sollen. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, das eine oder die mehreren Bits des Testdatenwortes, die von dem Anwender über die Anwenderschnittstelle 160 spezifiziert worden sind, zu manipulieren.
  • Im Gegensatz zu dem Stand der Technik muss sich der Anwender nicht auf vorbestimmte Testverfahren verlassen, sondern kann selbst spezifizieren, wie das Testdatenwort zu modifizieren ist, um spezifische Bitfehler zu erstellen, die er testen möchte. Eine Individualisierung des Tests für die speziellen Anforderungen des Anwenders wird möglich.
  • In einer Ausführungsform kann das Testdatenwort beispielsweise Anwenderdatenbits und Fehlerkorrekturbits für die Fehlerkorrektur umfassen. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, mindestens ein Bit der Fehlerkorrekturbits des Testdatenwortes zu manipulieren.
  • Somit ist es nicht nur möglich, modifizierte Datenwörter mit fehlerhaften Anwenderdaten zu testen, sondern es wird möglich, auch modifizierte Datenworte, die fehlerhafte Fehlerkorrekturbits enthalten, zu testen.
  • Gemäß einer Ausführungsform der Schaltung 100 kann die Anwenderschnittstelle 160 beispielsweise dazu ausgelegt sein, es einem Anwender zu ermöglichen, das mindestens eine Bit der Fehlerkorrekturbits des Testdatenwortes zu spezifizieren. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, das mindestens eine Bit der Fehlerkorrekturbits des Testdatenwortes, das von dem Anwender über die Anwenderschnittstelle 160 spezifiziert worden ist, zu manipulieren.
  • 5 veranschaulicht eine Schaltung 100 gemäß einer Ausführungsform, wobei das Testdatenwort beispielsweise die Anwenderdatenbits, die Fehlerkorrekturbits und Adressbits zum Spezifizieren eines Ortes der Anwenderdatenbits innerhalb eines Speichers 200 umfassen kann. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, mindestens ein Bit der Adressbits des Testdatenwortes zu manipulieren.
  • Gemäß einer Ausführungsform kann die Anwenderschnittstelle 160 beispielsweise dazu ausgelegt sein, es einem Anwender zu ermöglichen, das mindestens eine Bit der Adressbits des Testdatenwortes zu spezifizieren. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, das mindestens eine Bit der Adressbits des Testdatenwortes, das von dem Anwender über die Anwenderschnittstelle 160 spezifiziert worden ist, zu manipulieren.
  • Somit ist es nicht nur möglich, modifizierte Datenwörter mit fehlerhaften Anwenderdaten oder fehlerhaften Fehlerkorrekturbits zu testen, sondern es wird möglich, auch modifizierte Datenwörter, die fehlerhafte Adressbits enthalten, zu testen.
  • 6 zeigt eine Schaltung 100 gemäß einer Ausführungsform, wobei die Schaltung 100 selbst ferner einen Speicher 170 umfasst. In einer solchen Ausführungsform kann die Eingangsschnittstelle 110 beispielsweise dazu ausgelegt sein, das Eingangsdatenwort aus dem Speicher 170 zu laden.
  • In einer Ausführungsform kann der Speicher 170 beispielsweise ein Flash-Speicher oder jede andere Art von nichtflüchtigen Speichern sein.
  • Im Allgemeinen können in dem Flash-Speicher selbst die Bits des Flash-Speichers nur von einem spezifischen ersten Bitwert auf einen spezifischen zweiten Bitwert, aber nicht von dem spezifischen zweiten Bitwert auf den spezifischen ersten Bitwert verändert werden. (Beispielsweise ist in einem besonderen Beispiel in einem bestimmten Flash-Speicher der Bitwert „0“ zu dem Bitwert „1“ während der Programmieroperation veränderbar, aber der Bitwert „1“ ist nicht ohne Löschoperation zu dem Bitwert „0“ veränderbar). Ausführungsformen ändern nicht den Flash-Wert selbst, sondern erzeugen ein oder mehrere modifizierte Datenwörter außerhalb des Flash-Speichers. Daher sind willkürliche Änderungen der Bitwerte von „0“ auf 1" und auch von „1“ auf „0“ möglich.
  • In einer Ausführungsform kann das Testdatenwort beispielsweise die Anwenderdatenbits und die Fehlerkorrekturbits und Adressbits zum Spezifizieren eines Ortes der Anwenderdatenbits innerhalb des Speichers 170 der Schaltung 100 umfassen, wie oben für den Speicher 200 beschrieben. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, mindestens ein Bit der Adressbits des Testdatenwortes zu manipulieren.
  • 7 veranschaulicht eine Schaltung 100 gemäß einer bestimmten Ausführungsform, wobei die Schaltung 100 den Speicher 170 und die Anwenderschnittstelle 160 zum Spezifizieren eines oder mehrerer Adressbits, die eine Adresse innerhalb des Speichers 170 der Schaltung 100 angeben und modifiziert werden sollen, umfasst.
  • Gemäß einer Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, zwei oder mehr modifizierte Datenwörter zu erzeugen, wobei das modifizierte Datenwort eines der zwei oder mehr Datenwörter ist, so dass jedes modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter von jedem anderen modifizierten Datenwort der zwei oder mehr modifizierten Datenwörter verschieden ist. In einer solchen Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, jedes der zwei oder mehr modifizierten Datenwörter zu erzeugen, indem er mindestens ein Bit des Testdatenwortes modifiziert. Darüber hinaus kann in einer solchen Ausführungsform für jedes modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter die Fehlerkorrekturkomponente 130 beispielsweise dazu ausgelegt sein, zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist. Ferner kann in einer derartigen Ausführungsform die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, die Korrektheit der Fehlerkorrekturfähigkeit des Fehlerkorrekturkomponente 130 abhängig von dem Ergebnis der Überprüfung der zwei oder mehr modifizierten Datenwörter zu bewerten.
  • In einer Ausführungsform kann die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, eine Anzahl fehlerhafter Wörter zu bestimmen, die angibt, wie viele modifizierte Datenwörter der zwei oder mehr modifizierten Datenwörter die Fehlerkorrekturkomponente 130 als fehlerhaft beurteilt. In einer solchen Ausführungsform kann die Bewertungskomponente 140 beispielsweise dazu ausgelegt sein, zu bestimmen, ob die Anzahl fehlerhafter Wörter gleich einer erwarteten Fehlerzahl ist, die angibt, wie viele der zwei oder mehr modifizierten Datenwörter tatsächlich fehlerhaft sind.
  • Gemäß einer Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, jedes der zwei oder mehr modifizierten Datenwörter zu erzeugen, indem er genau ein Bit des Testdatenwortes modifiziert.
  • Eine solche Ausführungsform testet modifizierte Datenwörter mit genau einem Bit-Fehler (Einzel-Bit-Fehler) unter der Annahme, dass das Testdatenwort fehlerfrei ist.
  • In einer Ausführungsform kann der Datenmanipulator 120 beispielsweise dazu ausgelegt sein, jedes der zwei oder mehr modifizierten Datenwörter zu erzeugen, indem er genau zwei Bits des Testdatenwortes modifiziert.
  • Eine solche Ausführungsform testet modifizierte Datenwörter mit genau zwei Bit-Fehlern (Doppel-Bit-Fehlern) unter der Annahme, dass das Testdatenwort fehlerfrei ist.
  • 8 veranschaulicht den Datenmanipulator 120 gemäß einer Ausführungsform, wobei der Datenmanipulator ein XOR-Schaltungselement 122, ein weiteres Schaltungselement 124 und ein Bitregister 126 umfasst.
  • Bei einer solchen Ausführungsform kann das Bitregister 126 beispielsweise ein Bit für jede Bitposition des Testdatenwortes umfassen. Darüber hinaus kann in einer solchen Ausführungsform das Bitregister 126 beispielsweise so ausgelegt sein, dass jedes Bit in dem Bitregister 126, das einer Bitposition des Testdatenwortes zugeordnet ist, die invertiert werden soll, um ein erstes modifiziertes Datenwort der zwei oder mehr modifizierten Datenwörter zu erzeugen, einen ersten Bitwert in dem Bitregister 126 aufweist. Weiterhin kann das Bitregister in einer solchen Ausführungsform beispielsweise so ausgelegt sein, dass jedes Bit in dem Bitregister, das einer Bitposition des Testdatenwortes zugeordnet ist, die nicht invertiert werden soll, um das erste modifizierte Datenwort zu erzeugen, einen zweiten Bitwert in dem Bitregister 126 aufweisen, wobei der zweite Bitwert von dem ersten Bitwert verschieden ist.
  • Darüber hinaus kann in einer solchen Ausführungsform das XOR-Schaltungselement 122 beispielsweise dazu ausgelegt sein, das Testdatenwort als eine erste Eingabe zu empfangen. Ferner kann in einer derartigen Ausführungsform das XOR-Schaltungselement 126 beispielsweise dazu ausgelegt sein, die Bitwerte der Bits in dem Bitregister 126 als eine anfängliche zweite Eingabe zu empfangen, um das erste modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter zu erzeugen.
  • Darüber hinaus kann in einer solchen Ausführungsform das weitere Schaltungselement 124 beispielsweise dazu ausgelegt sein, die Bitwerte der Bits innerhalb des Bitregisters 126 um eine Bitposition zu verschieben oder zu rotieren, nachdem das erste modifizierte Datenwort erzeugt worden ist, um aktualisierte Bitwerte der Bits innerhalb des Bitregisters 126 zu erhalten. Ferner kann in einer solchen Ausführungsform 122 das XOR-Schaltungselement beispielsweise dazu ausgelegt sein, die aktualisierten Bitwerte der Bits innerhalb des Bitregisters 126 als eine aktualisierte zweite Eingabe zu empfangen, um ein zweites modifiziertes Datenwort der zwei oder mehr modifizierten Datenwörter zu erhalten.
  • Eine solche Ausführungsform ist besonders zum Testen von mehreren fehlerhaften modifizierten Datenwörtern geeignet, indem die mehreren modifizierten Datenwörter effizient erzeugt werden.
  • Außerdem kann beispielsweise dann, wenn eine Rotation zum Erzeugen von nachfolgenden modifizierten Datenwörtern verwendet wird, angenommen werden, dass ein Bitfehler verschoben wird, aber dass in der Regel die Anzahl der Bitfehler in nachfolgenden Datenwörtern gleich bleibt.
  • Im Folgenden werden bestimmte Ausführungsformen im Einzelnen beschrieben.
  • Gemäß Ausführungsformen sind ein oder mehrere Anwenderregister für den Anwender bereitgestellt, die es dem Anwender ermöglichen, nach dem Auslesen der Testdaten zu bestimmen, an welchen Bitpositionen die Fehlerkorrektur das Leseergebnis korrumpiert (umkehrt).
  • Dies geschieht durch Initialisieren eines XOR-Inhalts, der die Bit-Positionen invertiert, die den Wert „1“ aufweisen. Gemäß Ausführungsformen wird ein Fehlerkorrektur-Testcode nur einmal fehlerfrei oder zumindest durch Fehlerkorrekturcode korrigierbar programmiert. Die bitweise Modifizierbarkeit eines möglicherweise korrigierten, gelesenen Testwortes könnte direkt nach dem Lesen des fehlerhaften Zellfelds ohne Fehlerkorrekturcodekorrektur sowie nach einer Korrektur durchgeführt werden.
  • Gemäß Ausführungsformen wird das Korrumpieren der gelesenen Daten vorzugsweise schaltungsbasiert unmittelbar vor der Fehlerkorrekturcode-Berechnung der gelesenen Testdaten durchgeführt. In welcher Weise und an welchen Bitpositionen die Testdaten modifiziert werden, wird durch einen Registersatz bestimmt, der vor dem Testen der Fehlerkorrekturcode-Berechnung initialisiert wird.
  • Der Zweck der Verwendung des Fehlerkorrekturcodes-Testwortes besteht darin, selektiv den Fehlerkorrekturcode-Erzeugungspfad zu testen, nachdem ein selektiver Fehler in die Fehlerkorrekturcode-Logik bei fehlerhaft interpretierten 0- oder 1 -Bits eingefügt worden ist. Vorzugsweise werden das eine oder die mehreren Bitschaltmittel in einer gesteuerten Weise in einer zweiten Stufe erzeugt und danach wird die aktiv gestartete Fehlerkorrekturcode-Reaktion bewertet.
  • Gemäß einer Ausführungsform kann das Überprüfen der Fehlerkorrekturcode-Fähigkeit beispielsweise in vier Schritten durchgeführt werden. In einem ersten Schritt wird die Fehlerkorrekturcode-Testauslesung initialisiert, beispielsweise durch Bestimmen, in welcher Art und Weise das Bit der Testauslesung invertiert werden soll und gegebenenfalls, auf welche Speicheradresse sich die Daten beziehen, im Fall von Adressfehlerkorrekturcode. In einem zweiten Schritt wird eine Bitumschaltung in dem korrigierbaren Fehlerkorrekturcodewort durchgeführt und die Fehlerkorrekturcode-Berechnung wird für den soeben ausgelösten Korrekturschritt durchgeführt, ohne die Daten erneut aus dem Zellfeld zu laden. Die Reaktion der Fehlerkorrektur auf die vorher geladenen und bitweise modifizierten Daten wird in einem letzten Schritt mit den üblichen Registern und Merkern durchgeführt, die dem Anwender bekannt sind.
  • Gemäß Ausführungsformen ist ein Registersatz vorgesehen, der einer Fehlerkorrekturcode-Schaltung eines Datenbusses zugeordnet ist, um eine erwartete Funktion der Fehlerkorrekturcode-Schaltung zu überprüfen. Die Fehlerkorrekturschaltung kann einem flüchtigen oder nichtflüchtigen Speicher zugeordnet sein.
  • In einer Ausführungsform wird ein Laden aus einem programmierbaren Registersatz durchgeführt und es wird bestimmt, welche der Bits der Anwenderdaten, der gelesenen Adresse und der Fehlerkorrekturcode-Daten der geladenen Fehlerkorrekturcodedaten modifiziert werden sollen.
  • Gemäß einer Ausführungsform kann eine Modifikation der Bits, die modifiziert werden sollen, durch Setzen eines oder mehrerer Bits, Löschen eines oder mehrerer Bits und/oder Invertieren eines oder mehrerer Bits durchgeführt werden.
  • In Ausführungsformen kann wahlweise bestimmt werden, ob im Fall einer Adressfehlerkorrekturcode-Berechnung die Adressbits zusätzlich zu den Anwender- und Fehlerkorrekturcode-Datenbits ebenfalls gesetzt, gelöscht und/oder invertiert werden.
  • Gemäß einer Ausführungsform kann eine Bit-Einstellung angegeben werden, die angibt, dass für einen Speicherlesezugriff die Testdaten und die Leseadresse bereits bestimmt worden sind und dass der nächste Lesezugriff nicht auf das bestimmte Zellfeld zugreifen wird.
  • Gemäß einer Ausführungsform kann wahlweise bestimmt werden, ob ein zweiter Lesebefehl mit einer Bitmanipulation, ohne Zugriff auf das Zellfeld, unmittelbar nach dem ersten durchgeführt wird.
  • Gemäß einer Ausführungsform kann wahlweise bestimmt werden, ob eine Fehlermerker-Signatur in einem Ergebnisregister gesammelt oder geladen werden soll.
  • Gemäß einer Ausführungsform kann wahlweise das Auftreten einer Fehlersignatur in einem (z. B. initialisierbaren) Zählerregister gesammelt werden.
  • In Ausführungsformen kann die Fehlerkorrekturcode-Funktionsprüfung und die Bewertung der Fehlersignatur im Vergleich zu einem erwarteten Verhalten schrittweise, halbautomatisch und/oder kontinuierlich (möglicherweise beispielsweise durch Einsetzen einer oder mehrerer Unterbrechungen) durchgeführt werden.
  • Ausführungsformen zeigen einen, einige oder alle der folgenden Vorteile: gemäß Ausführungsformen kann die Fehlerkorrekturcode-Funktionalität auch von nichtflüchtigen Speichern im Betrieb getestet werden, da eine fehlerhafte doppelte Programmierung nicht zwingend erforderlich ist.
  • Die Speicherkomponente und die Fehlerkorrekturschaltung müssen nicht in eine einzelne Komponente integriert sein. Jede Fehlerkorrekturcode-Einheit kann einen Selbsttest durchführen, in dem die Einheit sich selbst testet.
  • Eine explizite Speicherzuordnung der fehlerhaften Daten ist nicht erforderlich. Im Fall eines Adressenfehlerkorrekturcode-Verfahrens muss die Speicheradresse nicht bekannt sein und es ist möglich, frei wählbare Adressquellen zu bestimmen. Mehrfache Speicherung der Testdaten für einen mehrfachen Vergleich ist nicht erforderlich.
  • In Ausführungsformen kann die erste Auslesung beispielsweise mit der Fehlerkorrekturcodekorrektur durchgeführt werden, um die Speicherfehlerkorrektur unabhängig von der Zellfehlerkorrekturmöglichkeit in einer genauen Art und Weise durchzuführen, auch wenn zusätzliche Zellfehler auftreten.
  • Wenn das erste erhaltene Ausleseergebnis für die Prüfung in einem nachfolgenden Schritt modifiziert wird, dann kann die zweite Fehlerkorrekturcode-Testauslesung mit spezifischer Bitmanipulation ohne zusätzliche Latenz (Wartezustände) durchgeführt werden.
  • Wenn nur ein einziger Registersatz auf die Weise einer Bitmanipulationsschaltung umgesetzt ist, dann kann die Fehlerkorrekturcode-Testauslesung mit der gleichen Schaltung wie die übliche erste Auslesung durchgeführt werden. Dies führt zu einer Platzersparnis in der Gestaltung der Testschaltung und auch die Testfähigkeit der Schaltung für die Fehlerkorrekturcode-Testauslesung selbst erfordert keinen zusätzlichen Platz.
  • Es ist keine zweite Fehlerkorrekturcode-Schaltung erforderlich, die das Fehlerkorrckturcode-Ergebnis parallel bestätigt und die während des Betriebs überprüft werden müsste.
  • Wahlweise können weitere Ausführungsformen beispielsweise das Fehlerkorrekturcode-Testprogramm gesteuert oder automatisch durchführen. Wenn die Funktionsprüfung automatisch durchgeführt wird, kann diese halbautomatisch oder kontinuierlich gesteuert erfolgen.
  • Zum Veranschaulichen einer bestimmten Ausführungsform ist 9 vorgesehen, die einen Fehlerkorrekturcode-Speicher gemäß einer Ausführungsform mit wahlfreiem Zugriff durch einen Lesepfad und einen Schreibpfad veranschaulicht.
  • Zudem veranschaulicht 10 eine Fehlerkorrekturcode-Schaltung, die in einem Datenpfad zwischen einer CPU und einem Speicher verwirklicht ist.
  • In 11 ist eine kleine Registersatzerweiterung zum Unterstützen der Schaltungskorrekturprüfung während des Betriebs gemäß einer Ausführungsform dargestellt.
  • „Adress-XOR“ (Address XOR) kann beispielsweise ein 32-Bit-Register für eine Adressbitinvertierung sein.
  • „ECCR XOR“ kann beispielsweise ein 8-Bit-Register für eine ECC-Lese-Invertierung (ECCR-Invertierung) sein.
  • „Daten-XOR“ (Data XOR) kann beispielsweise ein 64-Bit-Register für eine Dateninvertierung sein.
  • „FSR“ bedeutet Flash-Zustandsregister.
  • 12 veranschaulicht ein Ablaufdiagramm zum Initialisieren, Betreiben und Bewerten der Funktion der Fehlerkorrekturfähigkeit für einen absichtlich doppelt programmierten Flash-Speicher, der eine Fehlerkorrekturcode-Fähigkeit aufweist. Insbesondere zeigt 12 zeigt ein übliches Doppelprogrammierverfahren.
  • In 13 ist ein Ablaufdiagramm zum manuellen Überprüfen einer Fehlerkorrekturcode-Funktion gemäß einer Ausführungsform dargestellt. Insbesondere zeigt 13 einen manuellen Ein-Bit-Antwort-Test (Zustand „CleaN“ oder „CleaR“?).
  • 14 veranschaulicht ein Ablaufdiagramm zum halbautomatischen Überprüfen einer Fehlerkorrekturcode-Funktion gemäß einer Ausführungsform. Insbesondere zeigt 14 einen kompletten, einzelnen halbautomatischen Fehlerkorrekturcode-Antworttest.
  • In 15 ist ein Ablaufdiagramm zum kontinuierlichen Überprüfen einer Fehlerkorrekturcode-Funktion in vollständig automatischer Weise dargestellt. Insbesondere zeigt 15 eine unterbrechungsgesteuerte kontinuierliche Fehlerkorrekturcode-Testroutine.
  • 16 zeigt einen Registersatz zum kontinuierlichen Überprüfen einer Fehlerkorrekturcode-Funktion in komplett automatischer Weise gemäß einer Ausführungsform. Insbesondere umfasst 16 verschiedene Fehlerfälle „X“ ( „X“: Einzel-Bit-Fehler = SBE = S, Doppel-Bit-Fehler = DBE = D, Multi-Bit-Fehler = MBE = M).
  • Im Folgenden werden weitere Ausführungsformen der vorliegenden Erfindung im Einzelnen beschrieben. Davor wird jedoch der Stand der Technik näher untersucht.
  • Bei dem Stand der Technik braucht der Kunde zum Durchführen einer Fehlerkorrekturcode-Funktionsüberprüfung eine Bestätigung der Fehlerkorrekturcode-Funktionalität der Datenpfadkorrekturfähigkeiten des Speicherzugriffs während der Laufzeit. Ein Fehlerkorrekturcode-Test wird durch Verarbeiten spezifischer, absichtlich korrumpierter Fehlerkorrektur-Codewörter durchgeführt. Die Fehlerkorrekturcodewörter können aus Eingangsdatenwörtern abgeleitet worden sein, die aus einem Speicher geladen worden sind, beispielsweise aus einem Flash-Speicher.
  • Bei eFlash werden Fehlerkorrekturcodefehler durch Doppelprogrammierung ohne Löschen (erzwungene Fehlschlagsignatur) künstlich gespeichert. Die detektierten Fehler-Merker werden mit den erwarteten Fehler-Merkern („Erfolgsfall“) verglichen. Dies ist in 17 dargestellt.
  • Ein Problem ist die Fehlinterpretation der Fehlerkorrekturcode-Fehlschlagzählung. Korrigierbare Speicherbitfehler führen zu Fehlinterpretationen von unvorhergesagten erzwungenen Fehlschlagsignaturen aufgrund einzelner Defekte. Beispiele sind beispielsweise einzelne Bit-Flips und/oder lokale/globale Burstlängenfehler.
  • Dies bedeutet, dass unbeabsichtigte Bit-Flips die Signatur der erwarteten Fehlerkorrekturcode-Fehlschlagmerker-Zählungssignatur beeinflussen.
  • Eine Fehlerkorrekturcode-Fehlschlagsignatur-Änderung kann auftreten.
  • 18 veranschaulicht eine Hardware-Lösung gemäß einer Ausführungsform. Ein Registersatz wird einem Kunden zur Verfügung gestellt, um die erzwungene Fehlschlagsignatur eines Fehlerkorrekturcode-konsistenten Datensatzes (Adresse /Daten/Fehlerkorrekturcode), der über den Speicherlesepfad oder durch direkte Registereinstellung erhalten wird, zu steuern.
  • Während des Lesens aus dem Speicher werden alle unvorhergesagten korrigierbaren Bitfehler in dem Datensatz Fehlerkorrekturcode-konsistent eliminiert. Die durchgeführte Fehlerkorrektur kann beispielsweise kundenspezifisch sein.
  • Der Datensatz wird als ein Testmuster verwendet, auf den ein Bit-Flip-Muster in einem einzelnen Fehlerkorrekturcode-Berechnungsschritt angewendet werden kann.
  • Die Bit-Flip-Sequenz kann durch eine vereinfachte Zustandsmaschine, die die Bit-Flip-Musterrotation steuert und die Bit-Fehler/Doppel-Bit-Fehler-Ereignisse aufzeichnet, iteriert/automatisiert werden. Die Zustandsmaschine wird durch einen Registersatz gesteuert.
  • 19 veranschaulicht ein weiteres Beispiel gemäß einer Ausführungsform. Drei Schritte der Konfiguration können beispielsweise möglich sein: Initialisierung, Aktivierung, Überwachung.
  • 20 veranschaulicht noch ein weiteres Beispiel gemäß einer weiteren Ausführungsform.
  • Ausführungsformen zeigen ferner verschiedene Vorteile der ECC-FSM-Test-Engine (FSM = Finite Zustandsmaschine).
  • Eine offene Kundentest-Funktion für Fehlerkorrekturcode-Funktionstests von Sicherheitsaspekten während der Laufzeit ist verwirklicht. Ausführungsformen sind auf alle Fehlerkorrekturcode-korrigierbaren Speicher (nicht auf Flash beschränkt) anwendbar.
  • Keine Kenntnisse über die Konstruktion von Fehlerkorrekturcode-konsistenten Datensätzen sind notwendig.
  • Gemäß Ausführungsformen sind Fehlerkorrekturcodeeinheits-Tests auf dem gleichen Weg und mit der gleichen Logik möglich wie bei der Speicherauslesung.
  • In Ausführungsformen wird keine Definition einer erzwungenen Musterfehlschlagsignatur für RAM/eFlash benötigt.
  • Gemäß Ausführungen wird keine genaue Definition von Adressort und Sequenz einer erzwungenen Fehlschlagmustererzeugung benötigt.
  • Die Ausführungsformen beruhen auf den folgenden Erkenntnissen:
    • Erzwungene Fehlschläge werden eingesetzt, um zu überprüfen, ob die Fehlerkorrektur funktioniert.
  • Nichtflüchtige Speicher, beispielsweise Flash, sind von besonderem Interesse. Flash-Speicher kann für eine Doppelprogrammierung geeignet sein. Für den Fehlerkorrekturcode können beispielsweise 64 Anwenderdatenbits von 8 Korrekturdatenbits begleitet werden.
  • Bei Doppel-Programmierung können beispielsweise das erste Programmierergebnis und das zweite Programmierergebnis durch ein logisches bitweises ODER verbunden sein.
  • Die CPU prüft, ob der Fehlerkorrekturcode (ECC) funktioniert. S-Läufe können beispielsweise getestet werden. Beispielsweise sind Airbaganwendungen von besonderem Interesse. Es muss herausgefunden werden, ob eine Fehlerkorrekturcodeeinheit fehlerhaft ist. Der Fehlerkorrekturcode kann sich im Laufe der Zeit verschlechtern. Tests können beispielsweise entweder durch einen Anwender initialisiert oder automatisch gestartet werden.
  • Es kann beispielsweise programmierbar sein, dass beispielsweise nur eine einzige Zelle getestet wird oder dass mehr Zellen getestet werden.
  • Typischerweise kann ein Speicher zum Testen des Speichers eine einzelne Fehlerkorrekturcode-Einheit aufweisen.
  • Tests können in der Regel nur während Leerlaufzeiten durchgeführt werden.
  • Eine Initialisierung des Adressenstarters und des Fehlerkorrekturcodes kann erforderlich sein.
  • Pseudo-zufällige Tests können durchgeführt werden.
  • Wie bereits erwähnt können Anwendungsbereiche beispielsweise in der Automobilindustrie liegen.
  • Gemäß einer Ausführungsform wird eine Fehlerkorrektur durch Bestimmen, ob ein Merker angibt, ob eine Fehlerkorrektur durchgeführt wurde, durchgeführt. Die Anzahl der Merker kann gezählt werden, wobei die Anzahl der Merker die Anzahl der Fehlerkorrekturen, die durchgeführt worden sind, angibt. Dann wird getestet, ob die Anzahl der durchgeführten Fehlerkorrekturen gleich der Anzahl der erwarteten Fehlerkorrekturen ist.
  • In einer weiteren Ausführungsform wird immer dann, wenn die Fehlerkorrektur durchgeführt wird, getestet, ob die korrigierten Bits gleich den erwarteten Bits sind.
  • Obwohl einige Aspekte im Zusammenhang mit einer Vorrichtung beschrieben worden sind, ist klar, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschrittes entspricht. Analog stellen im Zusammenhang mit einem Verfahrensschritt beschriebene Aspekte auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung dar. Einige oder alle der Verfahrensschritte können durch (oder mittels) einer Hardware-Vorrichtung wie beispielsweise einen Mikroprozessor, einen programmierbaren Computer oder eine elektronische Schaltung ausgeführt werden. In einigen Ausführungsformen können ein oder mehrere der wichtigsten Verfahrensschritte von einer solchen Vorrichtung ausgeführt werden.
  • Abhängig von bestimmten Implementierungsanforderungen können Ausführungsformen der Erfindung in Hardware oder in Software oder zumindest teilweise in Hardware oder zumindest teilweise in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums wie beispielsweise einer Diskette, einer DVD, einer Blu-Ray, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers mit elektronisch auslesbaren darauf gespeicherten Steuersignalen erfolgen, die mit einem programmierbaren Computersystem derart zusammenarbeiten (oder zusammenarbeiten können), dass das entsprechende Verfahren ausgeführt wird. Daher kann das digitale Speichermedium computerlesbar sein.
  • Einige Ausführungsformen gemäß der Erfindung umfassen einen Datenträger, der elektronisch auslesbare Steuersignale aufweist, die mit einem programmierbaren Computersystem derart zusammenarbeiten können, dass eines der hierin beschriebenen Verfahren durchgeführt wird.
  • Im Allgemeinen können Ausführungsformen der vorliegenden Erfindung als ein Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode betreibbar ist, um eines der Verfahren auszuführen, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auf einem maschinenlesbaren Träger gespeichert sein.
  • Andere Ausführungsformen umfassen das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
  • Mit anderen Worten ist eine Ausführungsform des erfindungsgemäßen Verfahrens daher ein Computerprogramm mit einem Programmcode zum Durchführen eines der hierin beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer läuft.
  • Eine weitere Ausführungsform des erfindungsgemäßen Verfahren ist daher ein Datenträger (oder ein digitales Speichermedium, oder ein computerlesbares Medium), das darauf aufgezeichnet das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren enthält. Der Datenträger, das digitale Speichermedium oder das Aufzeichnungsmedium ist typischerweise materiell und/oder nichtflüchtig.
  • Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens ist daher ein Datenstrom oder eine Sequenz von Signalen, die das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren darstellen. Der Datenstrom oder die Sequenz von Signalen können beispielsweise dazu ausgelegt sein, über eine Datenkommunikationsverbindung wie beispielsweise über das Internet übertragen zu werden.
  • Eine weitere Ausführungsform umfasst Verarbeitungsmittel wie beispielsweise einen Computer oder eine programmierbare Logikvorrichtung, die dazu ausgelegt oder angepasst sind, eines der hierin beschriebenen Verfahren durchzuführen.
  • Eine weitere Ausführungsform umfasst einen Computer, wobei das Computerprogramm zum Ausführen eines der hierin beschriebenen Verfahren darauf installiert ist.
  • Eine weitere Ausführungsform gemäß der Erfindung weist eine Vorrichtung oder ein System auf, das dazu ausgelegt ist, ein Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren an einen Empfänger zu übertragen (beispielsweise elektronisch oder optisch). Der Empfänger kann zum Beispiel ein Computer, ein Mobilgerät, eine Speichervorrichtung oder dergleichen sein. Die Vorrichtung oder das System kann beispielsweise einen Datei-Server umfassen, um das Computerprogramm an den Empfänger zu übertragen.
  • In einigen Ausführungsformen kann eine programmierbare Logikvorrichtung (beispielsweise eine feldprogrammierbare Gatteranordnung) verwendet werden, um einige oder alle der Funktionen der hierin beschriebenen Verfahren durchzuführen. In einigen Ausführungsformen kann eine feldprogrammierbare Gatteranordnung mit einem Mikroprozessor zusammenarbeiten, um eines der hier beschriebenen Verfahren auszuführen. Im Allgemeinen werden die Verfahren vorzugsweise durch irgendeine Hardwarevorrichtung durchgeführt.
  • Die hier beschriebene Vorrichtung kann mittels einer Hardwarevorrichtung oder mittels eines Computers oder mittels einer Kombination aus einer Hardware-Vorrichtung und einem Computer implementiert sein.
  • Die hierin beschriebenen Verfahren können mittels einer Hardwarevorrichtung oder mittels eines Computers oder mittels einer Kombination aus einer Hardware-Vorrichtung und einem Computer durchgeführt werden.

Claims (21)

  1. Schaltung (100) zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfähigkeit einer Fehlerkorrekturkomponente (130) der Schaltung (100), wobei die Schaltung (100) umfasst: eine Eingangsschnittstelle (110) zum Empfangen eines Eingangsdatenwortes, einen Datenmanipulator (120), die Fehlerkorrekturkomponente (130), und eine Bewertungskomponente (140), wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, zu überprüfen, ob das Eingangsdatenwort fehlerhaft ist, wobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt, dass das Eingangsdatenwort fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das Eingangsdatenwort zu korrigieren, um ein vorkorrigiertes Datenwort zu erhalten, und dazu ausgelegt ist, das vorkorrigierte Datenwort als ein Testdatenwort in den Datenmanipulator (120) einzuspeisen, und wobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt, dass das Eingangsdatenwort nicht fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das Eingangsdatenwort als das Testdatenwort in den Datenmanipulator (120) einzuspeisen, wobei der Datenmanipulator (120) dazu ausgelegt ist, eines oder mehrere Bits des Testdatenwortes zu manipulieren, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist, wobei die Fehlerkorrekturkomponente (130) dazu angelegt ist, das modifizierte Datenwort zu verarbeiten, und wobei die Bewertungskomponente (140) dazu ausgelegt ist, die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente (130) zu bewerten.
  2. Schaltung (100) nach Anspruch 1, wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, zu überprüfen und durch Setzen von Merkern anzugeben, ob das modifizierte Datenwort fehlerhaft ist, und wobei die Bewertungskomponente (140) dazu ausgelegt ist, die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) in Abhängigkeit von dem Ergebnis der Überprüfung, ob das modifizierte Datenwort fehlerhaft ist, die durch die Fehlerkorrekturkomponente (130) durchgeführt wird, zu bewerten.
  3. Schaltung (100) nach Anspruch 1 oder 2, wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist, und wobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt hat, dass das modifizierte Datenwort fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das modifizierte Datenwort zu korrigieren, um ein korrigiertes Datenwort zu erhalten, wobei die Bewertungskomponente (140) dazu ausgelegt ist, zu bestimmen, ob das korrigierte Datenwort einem erwarteten Datenwort entspricht, und wobei dann, wenn das korrigierte Datenwort von dem erwarteten Datenwort verschieden ist, die Bewertungskomponente (140) dazu ausgelegt ist, zu bestimmen, dass die Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) inkorrekt ist.
  4. Schaltung (100) nach Anspruch 1 oder 2, wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist, und wobei dann, wenn die Fehlerkorrekturkomponente (130) bestimmt hat, dass das modifizierte Datenwort fehlerhaft ist, die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, das modifizierte Datenwort zu korrigieren, um ein korrigiertes Datenwort zu erhalten, das Anwenderdatenbits und Fehlerkorrekturbits umfasst, wobei die Bewertungskomponente (140) dazu ausgelegt ist, abhängig von den Anwenderdatenbits des korrigierten Datenwortes, und abhängig von den Fehlerkorrekturbits des korrigierten Datenwortes zu bestimmen, ob das korrigierte Datenwort fehlerhaft ist, und wobei dann, wenn das korrigierte Datenwort fehlerhaft ist, die Bewertungskomponente (140) dazu ausgelegt ist, zu bestimmen, dass die Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) inkorrekt ist.
  5. Schaltung (100) nach einem der vorhergehenden Ansprüche, wobei die Schaltung (100) ferner einen Moduswechsler (150) zum Aktivieren eines normalen Betriebsmodus umfasst, wobei dann, wenn der normale Betriebsmodus aktiviert ist, der Moduswechsler (150) dazu ausgelegt ist, den Datenmanipulator (120) und den Bewerter zu deaktivieren, so dass dann, wenn der normale Betriebsmodus aktiviert ist, der Datenmanipulator (120) dazu ausgelegt ist, nicht eines oder mehrere Bits des Testdatenwortes zu manipulieren, und so dass dann, wenn der normale Betriebsmodus aktiviert ist, die Bewertungskomponente (140) dazu ausgelegt ist, nicht die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) zu bewerten.
  6. Schaltung (100) nach einem der vorhergehenden Ansprüche, wobei die Schaltung (100) ferner eine Anwenderschnittstelle (160) umfasst, die dazu ausgelegt ist, es einem Anwender zu ermöglichen, ein oder mehrere Bits des Testdatenwortes zu spezifizieren, die manipuliert werden sollen, und wobei der Datenmanipulator (120) dazu ausgelegt ist, das eine oder die mehreren Bits des Testdatenwortes, die von dem Anwender über die Anwenderschnittstelle (160) spezifiziert worden sind, zu manipulieren.
  7. Schaltung (100) nach einem der Ansprüche 1 bis 5, wobei das Testdatenwort Anwenderdatenbits und Fehlerkorrekturbits für eine Fehlerkorrektur umfasst, wobei der Datenmanipulator (120) dazu ausgelegt ist, mindestens ein Bit der Fehlerkorrekturbits des Testdatenwortes zu manipulieren.
  8. Schaltung (100) nach Anspruch 7, wobei die Schaltung (100) ferner eine Anwenderschnittstelle (160) umfasst, die dazu ausgelegt ist, es einem Anwender zu ermöglichen, das mindestens eine Bit der Fehlerkorrekturbits des Testdatenwortes zu spezifizieren, und wobei der Datenmanipulator (120) dazu ausgelegt ist, das mindestens eine Bit der Fehlerkorrekturbits des Testdatenwortes, das von dem Anwender über die Anwenderschnittstelle (160) spezifiziert worden ist, zu manipulieren.
  9. Schaltung (100) nach Anspruch 7 oder 8, wobei das Testdatenwort die Anwenderdatenbits, die Fehlerkorrekturbits und Adressbits zum Spezifizieren eines Ortes der Anwenderdatenbits innerhalb eines Speichers (200) umfasst, wobei der Datenmanipulator (120) dazu ausgelegt ist, mindestens ein Bit der Adressbits des Testdatenwortes zu manipulieren.
  10. Schaltung (100) nach Anspruch 9, wobei die Schaltung (100) ferner eine Anwenderschnittstelle (160) umfasst, die dazu ausgelegt ist, es einem Anwender zu ermöglichen, das mindestens eine Bit der Adressbits des Testdatenwortes zu spezifizieren, und wobei der Datenmanipulator (120) dazu ausgelegt ist, das mindestens eine Bit der Adressbits des Testdatenwortes, das von dem Anwender über die Anwenderschnittstelle (160) spezifiziert worden ist, zu manipulieren.
  11. Schaltung (100) nach einem der Ansprüche I bis 8, wobei die Schaltung (100) ferner einen Speicher (170) umfasst, und wobei die Eingangsschnittstelle (110) dazu ausgelegt ist, das Eingangsdatenwort aus dem Speicher (170) zu laden.
  12. Schaltung (100) nach Anspruch 9 oder 10, wobei die Schaltung (100) ferner den Speicher (200) nach Anspruch 10 umfasst, und wobei die Eingangsschnittstelle (110) dazu ausgelegt ist, das Eingangsdatenwort aus dem Speicher (200) zu laden.
  13. Schaltung (100) nach Anspruch 11 oder 12, wobei der Speicher (170; 200) ein Flash-Speicher ist.
  14. Schaltung (100) nach einem der vorhergehenden Ansprüche, wobei die Bewertungseinheit (140) dazu ausgelegt ist, die Schaltung (100) zu deaktivieren oder einen Alarm oder eine Alarmmeldung auszugeben, wenn die Bewertungskomponente (140) detektiert hat, dass die Fehlerkorrektur der Fehlerkorrekturkomponente (130) inkorrekt ist.
  15. Schaltung (100) nach einem der vorhergehenden Ansprüche, wobei der Datenmanipulator (120) dazu ausgelegt ist, zwei oder mehr modifizierte Datenwörter zu erzeugen, wobei das modifizierte Datenwort eines der zwei oder mehr Datenwörter ist, so dass jedes modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter von jedem anderen modifizierten Datenwort der zwei oder mehr modifizierten Datenwörter verschieden ist, wobei der Datenmanipulator (120) dazu ausgelegt ist, jedes der zwei oder mehr modifizierten Datenwörter durch Modifizieren mindestens eines Bits des Testdatenwortes zu erzeugen, wobei die Fehlerkorrekturkomponente (130) dazu ausgelegt ist, für jedes modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter zu überprüfen, ob das modifizierte Datenwort fehlerhaft ist, und wobei die Bewertungskomponente (140) dazu ausgelegt ist, die Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente (130) abhängig von dem Ergebnis der Überprüfung der zwei oder mehr modifizierten Datenwörter zu bewerten.
  16. Schaltung (100) nach Anspruch 15, wobei die Bewertungskomponente (140) dazu ausgelegt ist, eine Anzahl fehlerhafter Wörter zu bestimmen, die angibt, wie viele modifizierte Datenwörter der zwei oder mehr modifizierten Datenwörter die Fehlerkorrekturkomponente als fehlerhaft beurteilt, und wobei die Bewertungskomponente (140) dazu ausgelegt ist, zu bestimmen, ob die Anzahl fehlerhafter Wörter gleich einer erwarteten Fehlerzahl ist, die angibt, wie viele der zwei oder mehr modifizierten Datenwörter tatsächlich fehlerhaft sind.
  17. Schaltung (100) nach Anspruch 15 oder 16, wobei der Datenmanipulator (120) dazu ausgelegt ist, jedes der zwei oder mehr modifizierten Datenwörter durch Modifizieren genau eines Bits des Testdatenwortes zu erzeugen.
  18. Schaltung (100) nach Anspruch 15 oder 16, wobei der Datenmanipulator (120) dazu ausgelegt ist, jedes der zwei oder mehr modifizierten Datenwörter durch Modifizieren von genau zwei Bits des Testdatenwortes zu erzeugen.
  19. Schaltung (100) nach einem der Ansprüche 15 bis 18, wobei der Datenmanipulator (120) ein XOR-Schaltungselement (122), ein weiteres Schaltungselement (124) und ein Bitregister (126) umfasst, wobei das Bitregister (126) ein Bit für jede Bitposition des Testdatenwortes umfasst, wobei das Bitregister (126) so ausgelegt ist, dass jedes Bit in dem Bitregister (126), das einer Bitposition des Testdatenwortes zugeordnet ist. die invertiert werden soll, um ein erstes modifiziertes Datenwort der zwei oder mehr modifizierten Datenwörter zu erzeugen, einen ersten Bitwert in dem Bitregister (126) aufweist, und wobei das Bitregister (126) so ausgelegt ist, dass jedes Bit in dem Bitregister (126), das einer Bitposition des Testdatenwortes zugeordnet ist, die nicht invertiert werden soll, um das erste modifizierte Datenwort zu erzeugen, einen zweiten Bitwert in dem Bitregister (126) aufweist, wobei der zweite Bitwert von dem ersten Bitwert verschieden ist, wobei das XOR-Schaltungselement (122) dazu ausgelegt ist, das Testdatenwort als eine erste Eingabe zu empfangen, wobei das XOR-Schaltungselement (122) dazu ausgelegt ist, die Bitwerte der Bits in dem Bitregister (126) als eine anfängliche zweite Eingabe zu empfangen, um das erste modifizierte Datenwort der zwei oder mehr modifizierten Datenwörter zu erzeugen, wobei das weitere Schaltungselement (124) dazu ausgelegt ist, die Bitwerte der Bits innerhalb des Bitregisters (126) um eine Bitposition zu verschieben oder zu rotieren, nachdem das erste modifizierte Datenwort erzeugt worden ist, um aktualisierte Bitwerte der Bits innerhalb des Bitregisters (126) zu erhalten, und wobei das XOR-Schaltungselement (122) dazu ausgelegt ist, die aktualisierten Bitwerte der Bits innerhalb des Bitregisters (126) als eine aktualisierte zweite Eingabe zu empfangen, um ein zweites modifiziertes Datenwort der zwei oder mehr modifizierten Datenwörter zu erzeugen.
  20. Verfahren zur Fehlerkorrektur von Daten und zum Überprüfen einer Korrektheit einer Fehlerkorrekturfahigkeit einer Fehlerkorrekturkomponente, wobei das Verfahren Folgendes umfasst: Empfangen eines Eingangsdatenwortes durch eine Eingangsschnittstelle, Prüfen durch die Fehlerkorrekturkomponente, ob das Eingangsdatenwort fehlerhaft ist, falls die Fehlerkorrekturkomponente bestimmt, dass das Eingangsdatenwort fehlerhaft ist, Korrigieren des Eingangsdatenwortes, um ein vorkorrigiertes Datenwort zu erhalten, und Einspeisen des vorkorrigierten Datenwortes als das Testdatenwort in einen Datenmanipulator, falls die Fehlerkorrekturkomponente bestimmt, dass das Eingangsdatenwort nicht fehlerhaft ist, Einspeisen des Eingangsdatenwortes als ein Testdatenwort in den Datenmanipulator, Manipulieren, durch den Datenmanipulator, eines oder mehrerer Bits des Testdatenwortes, um ein modifiziertes Datenwort zu erhalten, wobei das Testdatenwort das Eingangsdatenwort ist oder aus dem Eingangsdatenwort abgeleitet ist, Verarbeiten des modifizierten Datenwortes durch die Fehlerkorrekturkomponente, und Bewerten der Korrektheit der Fehlerkorrekturfähigkeit der Fehlerkorrekturkomponente in Abhängigkeit von der Verarbeitung des modifizierten Datenwortes durch die Fehlerkorrekturkomponente.
  21. Computerprogramm zum Implementieren des Verfahrens nach Anspruch 20, wenn es auf einem Computer oder einem Signalprozessor ausgeführt wird.
DE102015210651.9A 2015-06-10 2015-06-10 Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit Active DE102015210651B4 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102015210651.9A DE102015210651B4 (de) 2015-06-10 2015-06-10 Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
JP2016111306A JP6290303B2 (ja) 2015-06-10 2016-06-02 誤り訂正能力をテストするための回路および方法
US15/176,679 US20160364280A1 (en) 2015-06-10 2016-06-08 Circuitry and method for testing an error-correction capability
KR1020160071795A KR101852919B1 (ko) 2015-06-10 2016-06-09 에러 정정 능력을 테스트하기 위한 회로 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015210651.9A DE102015210651B4 (de) 2015-06-10 2015-06-10 Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit

Publications (2)

Publication Number Publication Date
DE102015210651A1 DE102015210651A1 (de) 2016-12-15
DE102015210651B4 true DE102015210651B4 (de) 2022-10-27

Family

ID=57395064

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015210651.9A Active DE102015210651B4 (de) 2015-06-10 2015-06-10 Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit

Country Status (4)

Country Link
US (1) US20160364280A1 (de)
JP (1) JP6290303B2 (de)
KR (1) KR101852919B1 (de)
DE (1) DE102015210651B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108512B2 (en) * 2016-04-01 2018-10-23 Intel Corporation Validation of memory on-die error correction code
US11048602B2 (en) 2017-10-17 2021-06-29 SK Hynix Inc. Electronic devices
KR20190043043A (ko) 2017-10-17 2019-04-25 에스케이하이닉스 주식회사 전자장치
DE102019132153B3 (de) * 2019-11-27 2021-02-18 Infineon Technologies Ag Integrierte schaltung
EP4120083A1 (de) * 2021-07-13 2023-01-18 STMicroelectronics Application GmbH Verarbeitungssystem, zugehörige integrierte schaltung, vorrichtung und verfahren

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2226168A (en) 1988-12-15 1990-06-20 Samsung Electronics Co Ltd Testing error checking and correction circuit in digital memory device
DE102008026568A1 (de) 2008-06-03 2010-04-08 Qimonda Ag Halbleiterbauelement, Speichermodul und Verfahren zum Testen einer Fehlerkorrektur-Funktionalität beim Zugriff auf ein Speicherbauelement
US8140940B2 (en) 2006-02-24 2012-03-20 Fujitsu Limited Method and apparatus for controlling memory
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5362936A (en) * 1976-11-17 1978-06-05 Toshiba Corp Memory control device
JPS59200349A (ja) * 1983-04-27 1984-11-13 Nec Corp 誤り訂正回路用診断回路
JPS62226353A (ja) * 1986-03-28 1987-10-05 Mitsubishi Electric Corp Ras回路付記憶装置
US4794597A (en) * 1986-03-28 1988-12-27 Mitsubishi Denki Kabushiki Kaisha Memory device equipped with a RAS circuit
JPH01140356A (ja) * 1987-11-27 1989-06-01 Fujitsu Ltd Ecc回路チェック方式
JPH0346047A (ja) * 1989-07-14 1991-02-27 Nec Corp 検査回路
JP2806856B2 (ja) * 1996-01-29 1998-09-30 甲府日本電気株式会社 誤り検出訂正回路の診断装置
JPH10228388A (ja) * 1997-02-13 1998-08-25 Nec Eng Ltd データ誤り検出回路
JP2000242515A (ja) * 1999-02-19 2000-09-08 Nec Eng Ltd Ecc機能検証回路及びecc機能検証方法
JP2003529998A (ja) 2000-03-31 2003-10-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ エラー訂正集積回路および方法
US6799287B1 (en) * 2000-05-01 2004-09-28 Hewlett-Packard Development Company, L.P. Method and apparatus for verifying error correcting codes
US7020811B2 (en) * 2001-04-24 2006-03-28 Sun Microsystems, Inc. System and method for verifying error detection/correction logic
JP2003007085A (ja) * 2001-06-19 2003-01-10 Nec Microsystems Ltd エラー訂正機能付きメモリ
US7149945B2 (en) 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
US7373583B2 (en) 2005-05-19 2008-05-13 Infineon Technologies North America Corp. ECC flag for testing on-chip error correction circuit
US8281219B2 (en) 2007-08-16 2012-10-02 Invensas Corporation Error correction code (ECC) circuit test mode
US9419651B2 (en) * 2008-12-31 2016-08-16 Stmicroelectronics, Inc. Non-polynomial processing unit for soft-decision error correction coding
US9535119B2 (en) * 2014-06-30 2017-01-03 Intel Corporation Duty cycle based timing margining for I/O AC timing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2226168A (en) 1988-12-15 1990-06-20 Samsung Electronics Co Ltd Testing error checking and correction circuit in digital memory device
US8140940B2 (en) 2006-02-24 2012-03-20 Fujitsu Limited Method and apparatus for controlling memory
DE102008026568A1 (de) 2008-06-03 2010-04-08 Qimonda Ag Halbleiterbauelement, Speichermodul und Verfahren zum Testen einer Fehlerkorrektur-Funktionalität beim Zugriff auf ein Speicherbauelement
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems

Also Published As

Publication number Publication date
US20160364280A1 (en) 2016-12-15
KR101852919B1 (ko) 2018-04-30
DE102015210651A1 (de) 2016-12-15
KR20160145503A (ko) 2016-12-20
JP2017004588A (ja) 2017-01-05
JP6290303B2 (ja) 2018-03-07

Similar Documents

Publication Publication Date Title
DE102015210651B4 (de) Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
EP2318920B1 (de) Steuergerät für ein fahrzeug und verfahren für eine datenaktualisierung für ein steuergerät für ein fahrzeug
DE102012109614B4 (de) Verfahren zum Wiederherstellen von Stapelüberlauf- oder Stapelunterlauffehlern in einer Softwareanwendung
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
EP1794680A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102017114054B4 (de) Speicheradressen-Schutzschaltung und Verfahren
DE102022105600A1 (de) Register-fehlerdetektor
EP3811263B1 (de) Kryptografiemodul und betriebsverfahren hierfür
DE102018105090A1 (de) Sichere Rücksetztechniken für Mikrocontrollersysteme in sicherheitsbezogenen Anwendungen
DE102019131865A1 (de) Verfahren und vorrichtung zur eigendiagnose der ram-fehlererkennungslogik eines antriebsstrangcontrollers
EP3378006B1 (de) Verfahren zum laden eines sicheren speicherabbilds eines mikrocontrollers und anordnung mit einem mikrocontroller
DE102005016801B4 (de) Verfahren und Rechnereinheit zur Fehlererkennung und Fehlerprotokollierung in einem Speicher
DE102007040721B4 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
EP1444700A2 (de) Speichertest
DE19940611A1 (de) Verfahren und Vorrichtung zum zuverlässigen Anzeigen von Testergebnissen während einer Selbstprüfung
DE102013202961A1 (de) Verfahren zum Überwachen eines Stackspeichers in einem Betriebssystem eines Steuergeräts eines Kraftfahrzeuges
DE102014114157B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102021207872A1 (de) Kompositionelle verifikation von eingebetteten softwaresystemen
WO2007071590A1 (de) Verfahren zur erkennung einer versorgungsunterbrechung in einem datenspeicher und zur wiederherstellung des datenspeichers
DE102013108073A1 (de) Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
DE102018219700B4 (de) Steuervorrichtung
DE102017115056B3 (de) Verfahren zur Überprüfung sicherheitsrelevanter Register- oder Speicherzellen auf Stuck-At-Fehler im Betrieb
EP4036739A1 (de) Fehleranfälligkeit einer build-pipeline
DE102022102412A1 (de) Störungsdetektion für einen elektronischen Verarbeitungsschaltkreis mit einer arithmetisch-logischen Einheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative