DE102018122826A1 - Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür - Google Patents

Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür Download PDF

Info

Publication number
DE102018122826A1
DE102018122826A1 DE102018122826.0A DE102018122826A DE102018122826A1 DE 102018122826 A1 DE102018122826 A1 DE 102018122826A1 DE 102018122826 A DE102018122826 A DE 102018122826A DE 102018122826 A1 DE102018122826 A1 DE 102018122826A1
Authority
DE
Germany
Prior art keywords
data
error
memory
bit
enc
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.)
Pending
Application number
DE102018122826.0A
Other languages
English (en)
Inventor
Suk-Soo Pyo
Hyun-Taek Jung
Tae-Joong Song
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020180020017A external-priority patent/KR102661931B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102018122826A1 publication Critical patent/DE102018122826A1/de
Pending legal-status Critical Current

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/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
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • 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
    • 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/46Test trigger logic
    • 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/0403Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals during or with feedback to manufacture
    • 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/36Data generation devices, e.g. data inverters

Abstract

Eine Einrichtung (10) zum Unterstützen eines Testmodus zum Speichertesten gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte kann Folgendes umfassen: einen Speicher (300), der dazu ausgelegt ist, Schreibdaten (D_ENC, D_WR) zu empfangen und zu speichern und Lesedaten (D_RD) aus den gespeicherten Schreibdaten (D_WR) auszugeben; eine Fehlerkorrekturcode (ECC)-Engine (100), die dazu ausgelegt ist, die Schreibdaten (D_ENC) durch Codieren von Eingangsdaten (D_IN) zu generieren und Ausgangsdaten (D_OUT) durch Fehlerbit-Korrigieren von N Bits oder weniger, die in Empfangsdaten (D_RX) enthalten sind, zu generieren, wobei N eine positive ganze Zahl ist; und eine Fehlereinfügeschaltung (200), die dazu ausgelegt ist, der ECC-Engine (100) die Lesedaten (D_RD) als die Empfangsdaten (D_RX) in einem Normalmodus bereitzustellen und der ECC-Engine (100) Daten, die durch Invertieren wenigstens eines Bits von weniger als N Bits der Lesedaten (D_RD) ermittelt werden, als die Empfangsdaten (D_RX) im Testmodus bereitzustellen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • HINTERGRUND
  • Die erfindungsgemäßen Konzepte beziehen sich auf Vorrichtungen zum Unterstützen eines Fehlerkorrekturcodes und insbesondere auf Vorrichtungen zum Unterstützen eines Fehlerkorrekturcodes und/oder eines Testverfahrens dafür.
  • Ein Fehlerkorrekturcode (ECC)-System kann verwendet werden, um Fehler zu korrigieren, die in Daten auftreten, die durch einen verrauschten Kanal gelaufen sind. Zum Beispiel kann das ECC-System verwendet werden, um einen Fehler zu korrigieren, der in Daten auftritt, die über einen Kommunikationskanal empfangen worden sind, oder er kann verwendet werden, um einen Fehler zu korrigieren, der in Daten auftritt, die aus einem Speicher gelesen worden sind. Gemäß dem ECC-System kann ein Codewort generiert werden, dem Redundanz zu den Originaldaten hinzugefügt wird, und die Originaldaten können wiederhergestellt werden, indem der Fehler in den Daten, die durch den verrauschten Kanal gelaufen sind, korrigiert wird. Das ECC-System kann eine korrigierbare Fehlermenge aufweisen, und je größer die korrigierbare Fehlermenge ist, desto mehr können sowohl die Ressourcen zum Implementieren des ECC-Systems als auch die einem ECC hinzugefügte Redundanz zunehmen. Daher kann die Menge an Fehlern, die in dem verrauschten Kanal auftreten, auf einen Bereich einer Fehlermenge begrenzt werden, die von einem gegebenen ECC-System korrigiert werden kann. Falls zum Beispiel der verrauschte Kanal ein Speicher im ECC-System ist, kann es erforderlich sein, zu verifizieren, ob die Menge an Fehlern, die im Speicher auftreten können, innerhalb des Bereichs einer Fehlermenge liegt, die von einem gegebenen ECC-System korrigiert werden kann.
  • ZUSAMMENFASSUNG
  • Die erfindungsgemäßen Konzepte stellen Vorrichtungen, um einen Fehlerkorrekturcode (ECC) zu unterstützen, und insbesondere Vorrichtungen, um einen ECC zu unterstützen, um einfach zu bestimmen, ob ein verrauschter Kanal einen Bereich einer Fehlermenge aufweist, die von einem ECC-System korrigiert werden kann, und/oder ein Testverfahren dafür bereit.
  • Gemäß einer beispielhaften Ausführungsform kann eine Vorrichtung zum Unterstützen eines Testmodus für das Speichertesten Folgendes umfassen: einen Speicher, der dazu ausgelegt ist, Schreibdaten zu empfangen und zu speichern und Lesedaten aus den gespeicherten Schreibdaten auszugeben; eine Fehlerkorrekturcode (ECC)-Engine, die dazu ausgelegt ist, die Schreibdaten durch Codieren von Eingangsdaten zu generieren und Ausgangsdaten durch Fehlerbit-Korrigieren von N Bits oder weniger, die in Empfangsdaten enthalten sind, zu generieren, wobei N eine positive ganze Zahl ist; und eine Fehlereinfügeschaltung, die dazu ausgelegt ist, der ECC-Engine die Lesedaten als die Empfangsdaten in einem Normalmodus bereitzustellen und der ECC-Engine Daten, die durch Invertieren wenigstens eines Bits von weniger als N Bits der Lesedaten ermittelt werden, als die Empfangsdaten im Testmodus bereitzustellen.
  • Gemäß einer beispielhaften Ausführungsform kann eine Vorrichtung zum Unterstützen eines Testmodus für das Speichertesten Folgendes umfassen: einen Speicher, der dazu ausgelegt ist, Schreibdaten zu empfangen und zu speichern und Lesedaten aus den gespeicherten Schreibdaten auszugeben; eine Fehlerkorrekturcode (ECC)-Engine, die dazu ausgelegt ist, codierte Daten durch Codieren von Eingangsdaten zu generieren und Ausgangsdaten durch Fehlerbit-Korrigieren von N Bits oder weniger, die in Lesedaten enthalten sind, zu generieren, wobei N eine positive ganze Zahl ist; und eine Fehlereinfügeschaltung, die dazu ausgelegt ist, dem Speicher die codierten Daten als die Schreibdaten in einem Normalmodus bereitzustellen und dem Speicher Daten, die durch Invertieren wenigstens eines Bits von weniger als N Bits der codierten Daten ermittelt werden, als die Schreibdaten im Testmodus bereitzustellen.
  • Gemäß einer beispielhaften Ausführungsform kann ein Verfahren zum Testen einer Vorrichtung, die eine Fehlerkorrekturcode (ECC)-Engine und einen Speicher umfasst, die dazu ausgelegt sind, Fehlerbits von N Bits oder weniger zu korrigieren, wobei N eine positive ganze Zahl ist, Folgendes umfassen: Generieren von Schreibdaten, indem Eingangsdaten von der ECC-Engine codiert werden; Schreiben der Schreibdaten in den Speicher, Lesen der Schreibdaten und Ausgeben der Lesedaten; und Generieren von Ausgangsdaten, indem ein Fehler der Lesedaten von der ECC-Engine korrigiert wird, wobei das Schreiben der Schreibdaten und das Ausgeben der Lesedaten ein Invertieren wenigstens eines Bits von weniger als N Bits in wenigstens einem der beiden, den Schreibdaten und den Lesedaten, umfasst.
  • Figurenliste
  • Beispielhafte Ausführungsformen der erfindungsgemäßen Konzepte werden besser anhand der folgenden ausführlichen Beschreibung in Verbindung mit den zugehörigen Zeichnungen verstanden werden:
    • 1 ist ein Blockschaltbild einer Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes (ECC) gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 2A und 2B sind Blockschaltbilder, die Beispiele für die Vorrichtung der 1 veranschaulichen, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 3A und 3B sind Blockschaltbilder, die Beispiele für eine Fehlereinfügeschaltung der 1 veranschaulichen, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 4 ist eine Ansicht von Beispielen für Schreibdaten der 2A in einem Testmodus gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 5 ist ein Flussdiagramm, das ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 6A und 6B sind Flussdiagramme, die ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulichen, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 7A bis 7C sind Blockschaltbilder, die Beispiele für Bitauswahlschaltungen veranschaulichen, gemäß beispielhaften Ausführungsformen der erfindungsgemäßen Konzepte;
    • 8 ist ein Flussdiagramm, das ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 9 ist ein Flussdiagramm, das ein Beispiel für die Operation S80 der 8 veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte;
    • 10 ist ein Blockschaltbild, das ein Beispiel für eine Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte; und
    • 11 ist ein Blockschaltbild, das ein Beispiel für eine Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Blockschaltbild einer Vorrichtung 10 zum Unterstützen eines Fehlerkorrekturcodes (ECC) gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer gesagt zeigt 1 die Vorrichtung 10, die einen Speicher 300 als einen verrauschten Kanal in einem ECC-System aufweist. Wie in 1 gezeigt ist, kann die Vorrichtung 10 eine ECC-Engine 100, eine Fehlereinfügeschaltung 200 und/oder den Speicher 300 umfassen.
  • Die Vorrichtung 10 kann irgendeine Vorrichtung 10 sein, die den Speicher 300 umfasst, um Eingangsdaten D_IN zu speichern und die gespeicherten Daten als Ausgangsdaten D_OUT zu verwenden. In einigen beispielhaften Ausführungsformen kann die Vorrichtung 10 ein System-on-Chip (SoC) sein, wie zum Beispiel ein Anwendungsprozessor (AP), ist aber nicht darauf beschränkt. In einigen beispielhaften Ausführungsformen kann die Vorrichtung 10 eine Halbleiterspeichervorrichtung zum Speichern der Eingangsdaten D_IN und Ausgeben der Ausgangsdaten D_OUT gemäß einem externen Befehl sein, wie zum Beispiel ein dynamischer Direktzugriffsspeicher (DRAM), ein Flash-Speicher und dergleichen, ist aber nicht darauf beschränkt. In einigen beispielhaften Ausführungsformen kann die Vorrichtung 10 ein Speichersystem zum Speichern der Eingangsdaten D_IN und Ausgeben der Ausgangsdaten D_OUT als Reaktion auf eine Host-Anforderung sein, wie zum Beispiel ein Festkörperlaufwerk (SSD), eine Speicherkarte und dergleichen , ist aber nicht darauf beschränkt.
  • Die ECC-Engine 100 kann codierte Daten D_ENC durch Codieren der Eingangsdaten D_IN generieren und kann die Ausgangsdaten D_OUT durch Decodieren der Empfangsdaten D_RX generieren. Der Speicher 300 in der Vorrichtung 10 kann ein verrauschter Kanal sein. Zum Beispiel kann Rauschen aufgrund von Defekten in Speicherzellen, die Daten im Speicher 300 speichern, und/oder aufgrund eines Defekts in einem Pfad, auf dem sich Schreibdaten D_WR bewegen, die im Speicher 300 bereitgestellt werden, oder in einem Pfad, auf dem sich Lesedaten D_RD bewegen, die aus dem Speicher 300 ausgegeben werden, auftreten, ist aber nicht darauf beschränkt. Die Vorrichtung 10 kann die ECC-Engine 100 umfassen, und die ECC-Engine 100 kann die codierten Daten D_ENC generieren, indem sie zu den Eingangsdaten D_IN, die im Speicher 300 gespeichert werden sollen, Redundanz hinzufügt, und sie kann die Ausgangsdaten D_OUT generieren, indem sie Fehler auf Basis der Redundanz in den Empfangsdaten D_RX, die aus dem Speicher 300 empfangen worden sind, korrigiert. In einigen beispielhaften Ausführungsformen können die codierten Daten D_ENC dem Speicher 300 in Einheiten von Codewörtern bereitgestellt werden, die einen Teil der Eingangsdaten D_IN (oder daraus generierte Daten) und Redundanz umfassen.
  • Die ECC-Engine 100 kann Codieren und Decodieren auf verschiedene Weisen durchführen. Zum Beispiel kann die ECC-Engine 100 Codieren und Decodieren auf Basis eines ECC durchführen, wie zum Beispiel eines AN-Codes, BCH-Codes, Hamming-Codes, Polar-Codes, Turbo-Codes und/oder dergleichen, ist aber nicht darauf beschränkt. In einigen beispielhaften Ausführungsformen kann die ECC-Engine 100 einen Prozessor und einen Speicher umfassen, um Anweisungen zu speichern, die vom Prozessor ausgeführt werden, oder sie kann eine Logikschaltung umfassen, die in einigen beispielhaften Ausführungsformen durch Logiksynthese konzipiert ist.
  • Die ECC-Engine 100 kann eine korrigierbare Fehlermenge aufweisen. Wenn die ECC-Engine 100 zum Beispiel gemäß einem 2-Bit-Korrektur-ECC-System konzipiert ist, kann die ECC-Engine 100 Fehler von weniger als 2 Bits in den Empfangsdaten D_RX detektieren und korrigieren, zum Beispiel 1-Bit-Fehler und 2-Bit-Fehler. In einigen beispielhaften Ausführungsformen kann die ECC-Engine 100 detektieren, dass die Menge an Fehlern in den Empfangsdaten D_RX die Menge von Fehlern überschreitet, die von der ECC-Engine 100 korrigiert werden können, oder sie kann ein Signal generieren, das angibt, dass die Fehlerkorrektur nicht möglich ist.
  • Mit der Zunahme der Fehlermenge, die von der ECC-Engine 100 korrigiert werden kann, kann die zu den codierten Daten D_ENC hinzugefügte Redundanz zunehmen, und die Speicherkapazität des Speichers 300 zum Speichern der Eingangsdaten D_IN kann abnehmen. Mit der Zunahme der Fehlermenge, die von der ECC-Engine 100 korrigiert werden kann, können auch die von der ECC-Engine 100 verbrauchten Ressourcen, wie zum Beispiel Fläche, Leistung und/oder Zeit, zunehmen. Dementsprechend kann die ECC-Engine 100 dazu konzipiert werden, dass sie eine korrigierbare Fehlermenge aufweist, die auf Basis eines verrauschten Kanals bestimmt wird, das heißt eine Bitfehlerrate (BER, Bit Error Rate), die im Speicher 300 auftritt. Wenn zum Beispiel eine erwartete BER des Speichers 300 0,2 ist und Dateneinheiten, die von der ECC-Engine 100 verarbeitet werden, 10-Bit-Dateneinheiten sind, kann eine korrigierbare Fehlermenge der ECC-Engine 100 so konzipiert sein, dass sie 2 Bits oder mehr beträgt. Wenn die ECC-Engine 100 eine korrigierbare Fehlermenge von N Bit (N > 0) aufweist, kann das ECC-System als ein N-Bit-Korrektur-ECC-System bezeichnet werden, und die ECC-Engine 100 kann als die N-Bit-Korrektur-ECC-Engine 100 bezeichnet werden.
  • Die Fehlereinfügeschaltung 200 kann selektiv einen Fehler gemäß einem Modussignal C_MODE zwischen der ECC-Engine 100 und dem Speicher 300 einfügen. Wie in 1 gezeigt wird, kann die Fehlereinfügeschaltung 200 die codierten Daten D_ENC aus der ECC-Engine 100 empfangen und die Schreibdaten D_WR dem Speicher 300 bereitstellen. Die Fehlereinfügeschaltung 200 kann ebenfalls die Lesedaten D_RD aus dem Speicher 300 empfangen und die Empfangsdaten D_RX der ECC-Engine 100 bereitstellen. Das Modussignal C_MODE kann einen Modus der Vorrichtung 10 angeben, und die Vorrichtung 10 kann gemäß dem Modussignal C_MODE in einem Normalmodus und in einem Testmodus arbeiten. Die Fehlereinfügeschaltung 200 kann einen Prozessor und einen Speicher umfassen, um Anweisungen zu speichern, die vom Prozessor ausgeführt werden, oder sie kann eine Logikschaltung umfassen, die in einigen beispielhaften Ausführungsformen durch Logiksynthese konzipiert ist.
  • Die Fehlereinfügeschaltung 200 kann wenigstens eine Bitfehlerschaltung BE umfassen. Die Bitfehlerschaltung BE kann ein Eingangssignal IN empfangen, das einen Wert eines Bits angibt, und kann ein Ausgangssignal OUT ausgeben, das einen Wert eines Bits angibt. Wie in 1 gezeigt wird, kann die Bitfehlerschaltung BE einen Inverter INV und einen Schalter SW umfassen, und das Ausgangssignal OUT kann das Gleiche wie das Eingangssignal IN sein, oder es kann das Gleiche wie ein Signal sein, das durch Invertieren des Eingangssignals IN ermittelt wird. In einigen beispielhaften Ausführungsformen kann der Schalter SW der Bitfehlerschaltung BE auf Basis des Modussignals C_MODE gesteuert werden, das in die Fehlereinfügeschaltung 200 eingegeben wird. Wenn zum Beispiel das Modussignal C_MODE einen Normalmodus angibt, kann der Schalter SW so gesteuert werden, dass das Ausgangssignal OUT mit dem Eingangssignal IN übereinstimmt. Wenn zum Beispiel das Modussignal C_MODE einen Testmodus angibt, kann der Schalter SW so gesteuert werden, dass das Ausgangssignal OUT mit dem Signal übereinstimmt, das durch Invertieren des Eingangssignals IN ermittelt wird. Wenn das Ausgangssignal OUT, das mit dem Eingangssignal IN übereinstimmt, ausgegeben wird, kann die Bitfehlerschaltung BE als deaktiviert dargestellt werden, und wenn das Ausgangssignal OUT, das durch Invertieren des Eingangssignals IN ermittelt wird, ausgegeben wird, kann die Bitfehlerschaltung BE als aktiviert dargestellt werden.
  • Die Fehlereinfügeschaltung 200 kann die Bitfehlerschaltung BE verwenden, um einen Fehler in Daten einzufügen, die von der Fehlereinfügeschaltung 200 in einem Testmodus empfangen werden. In einigen beispielhaften Ausführungsformen kann die Fehlereinfügeschaltung 200 die Schreibdaten D_WR durch Einfügen wenigstens eines Bitfehlers in die codierten Daten D_ENC, die von der ECC-Engine 100 bereitgestellt werden, als Reaktion darauf, dass das Modussignal C_MODE einen Testmodus angibt, generieren, wie später nachstehend unter Bezugnahme auf 2A beschrieben wird. In einigen beispielhaften Ausführungsformen kann die Fehlereinfügeschaltung 200, als Reaktion darauf, dass das Modussignal C_MODE den Testmodus angibt, auch die Empfangsdaten D_RX durch Einfügen wenigstens eines Bitfehlers in die Lesedaten D_RD, die aus dem Speicher 300 bereitgestellt werden, generieren, wie später nachstehend unter Bezugnahme auf 2B beschrieben wird. Des Weiteren kann die Fehlereinfügeschaltung 200 in einigen beispielhaften Ausführungsformen wenigstens einen Bitfehler in die codierten Daten D_ENC bzw. die Lesedaten D_RD als Reaktion darauf einfügen, dass das Modussignal C_MODE den Testmodus angibt.
  • Von daher kann wenigstens ein Bitfehler von der Fehlereinfügeschaltung 200 im Testmodus eingefügt werden, und somit kann der Speicher 300 als akzeptabel oder als defekt verifiziert werden. Zu Defekten, die Fehler im Speicher 300 bewirken, kann nicht nur ein anfänglicher Defekt zählen, der während eines Herstellungsprozesses des Speichers 300 auftritt, sondern auch ein folgender Defekt, der während eines Zeitraums auftritt, in dem der Speicher 300 oder die Vorrichtung 10, die den Speicher 300 umfasst, ausgeliefert und/oder verwendet wird. Somit kann während des Herstellungsprozesses des Speichers 300 oder der Vorrichtung 10 verifiziert werden, ob der Speicher 300 eine bestimmte Fehlerspanne von einer von der ECC-Engine 100 korrigierbaren Fehlermenge aufweist oder nicht. Wenn zum Beispiel die ECC-Engine 100 einem 3-Bit-Korrektur-ECC-System entspricht, kann der Speicher 300 so hergestellt werden, dass er eine 1-Bit-Fehlerspanne aufweist. Dementsprechend kann der Speicher 300 normalerweise verwendet werden, sogar wenn ein 1-Bit-Fehler aufgrund eines Defekts im Speicher 300 auftritt. Daher kann im Herstellungsprozess des Speichers 300 oder der Vorrichtung 10 der Speicher 300 getestet werden, um nur den Speicher 300 auszuliefern, der einen 2-Bit-Fehler oder weniger aufweist, das heißt den Speicher 300, der eine 1-Bit-Fehlerspanne aufweist. Das heißt, der Speicher 300 oder die Vorrichtung 10 kann während des Herstellungsprozesses getestet werden, so dass ein Fehler von der ECC-Engine 100 für die 3-Bit-Korrektur korrigiert wird, um kein Problem in der Vorrichtung 10 zu bewirken, sogar wenn ein 1-Bit-Fehler auftritt, während die Vorrichtung 10 von einem Nutzer verwendet wird.
  • Die Fehlereinfügeschaltung 200 kann die Fehlermenge des ECC-Systems, die von der ECC-Engine 100 korrigierbar ist, künstlich reduzieren, indem eine Fehlermenge eingefügt wird, die der Fehlerspanne des Speichers 300 entspricht. Wenn zum Beispiel die Vorrichtung 10 die 3-Bit-Korrektur-ECC-Engine 100 umfasst und die Fehlereinfügeschaltung 200 einen 1-Bit-Fehler einfügt, dann kann der Speicher 300 immer so angesehen werden, dass er einen 1-Bit-Fehler umfasst, und somit kann die Vorrichtung 10 einem 2-Bit-ECC-System entsprechen. Zusätzlich kann die Fehlereinfügeschaltung 200 in einem Testmodus einen Fehler zwischen der ECC-Engine 100 und dem Speicher 300 unter Verwendung der Bitfehlerschaltung BE mit einer einfachen Struktur einfügen, wie in 1 gezeigt wird. Die Akzeptanz oder das Versagen des Speichers 300 oder der Vorrichtung 10 kann abhängig davon bestimmt werden, ob die Fehlerkorrektur durch die ECC-Engine 100 erfolgreich ist oder nicht. Wenn zum Beispiel der Speicher 300 so hergestellt ist, dass er eine 1-Bit-Fehlerspanne aufweist, kann die Fehlereinfügeschaltung 200 in einem Testmodus, um den Speicher 300 oder die Vorrichtung 10 zu testen, einen 1-Bit-Fehler einfügen und bestimmen, ob die ECC-Engine 100 den Fehler erfolgreich korrigiert. Somit kann der Speicher 300 in der Vorrichtung 10, die den Speicher 300 umfasst, einfach verifiziert werden und ECC unterstützen, und dementsprechend kann die Produktivität der Vorrichtung 10 verbessert werden. Obwohl 1 ein Beispiel des Speichers 300 als einen verrauschten Kanal zeigt, versteht es sich, dass ein ECC-System, das gegenüber einer Fehlermenge, die von einem Kanal mit oder ohne Rauschen, zum Beispiel einem Kommunikationskanal, prognostizierbar ist, eine zusätzliche Spanne bereitstellt, ohne Weiteres gemäß beispielhaften Ausführungsformen der erfindungsgemäßen Konzepte verifiziert werden kann.
  • Der Speicher 300 kann die Schreibdaten D_WR empfangen und speichern und kann die Lesedaten D_RD aus den gespeicherten Schreibdaten D_WR ausgeben. Der Speicher 300 kann mehrere Speicherzellen zum Speichern von Daten umfassen. In einigen beispielhaften Ausführungsformen kann zum Speicher 300 ein nichtflüchtiger Speicher zählen (z. B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), ein Flash-Speicher, Phasenwechsel-Direktzugriffsspeicher (PRAM), resistiver Direktzugriffsspeicher (RRAM), Nano-Floating-Gate-Speicher (NFGM), Polymer-Direktzugriffsspeicher (PoRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) oder ferroelektrischer Direktzugriffsspeicher (FRAM)). In einigen beispielhaften Ausführungsformen kann zum Speicher 300 ein flüchtiger Speicher zählen (z. B. DRAM, statisches RAM, mobiles DRAM, synchrones DRAM mit doppelter Datenrate (DDR SDRAM), Low Power DDR (LPDDR) SDRAM, grafisches DDR (GDDR) SDRAM oder Rambus DRAM (RDRAM)).
  • 2A und 2B sind Blockschaltbilder, die Beispiele für die Vorrichtung 10 der 1 veranschaulichen, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Wie oben unter Bezugnahme auf 1 beschrieben wird, können die Vorrichtungen 10a und 10b der 2A und 2B jeweils einen Normalmodus und einen Testmodus gemäß dem Modussignal C_MODE, das von außerhalb bereitgestellt wird, unterstützen. Hier bezeichnen in 2A und 2B die gleichen Bezugszeichen wie in 1 die gleichen Elemente, und daher werden hier keine ausführlichen Beschreibungen davon erfolgen.
  • Mit Bezug auf 2A kann die Vorrichtung 10a eine ECC-Engine 100a, eine Fehlereinfügeschaltung 200a und einen Speicher 300a umfassen. Die Fehlereinfügeschaltung 200a kann die codierten Daten D_ENC bereitstellen, die dem Speicher 300a aus der ECC-Engine 100a in einem Normalmodus als die Schreibdaten D_WR bereitgestellt werden, und/oder sie kann dem Speicher 300a die Schreibdaten D_WR bereitstellen, die durch Einfügen wenigstens eines Bitfehlers in die codierten Daten D_ENC generiert werden. Die ECC-Engine 100a kann die Lesedaten D_RD empfangen, die aus dem Speicher 300a ausgegeben werden, und dementsprechend können die Lesedaten D_RD und die Empfangsdaten D_RX der 1 in einem Testmodus miteinander übereinstimmen.
  • In einem Testmodus können die Eingangsdaten D_IN im Speicher 300a gespeichert werden, und dann können die Ausgangsdaten D_OUT aus den Lesedaten D_RD, die aus dem Speicher 300a ausgegeben werden, generiert werden. Nachdem zum Beispiel eine Operation, identische Eingangsdaten D_IN sequentiell zu speichern, im gesamten Speicher 300a durchgeführt worden ist, können die Ausgangsdaten D_OUT aus den Lesedaten D_RD generiert werden, die sequentiell aus dem gesamten Speicher 300a ausgegeben werden. In einigen beispielhaften Ausführungsformen können die Eingangsdaten D_IN mit den Ausgangsdaten D_OUT verglichen werden, die von der ECC-Engine 100a generiert werden, und wenn die Eingangsdaten D_IN und die Ausgangsdaten D_OUT nicht miteinander übereinstimmen, kann bestimmt werden, dass der Speicher 300a defekt ist. Wenn die ECC-Engine 100a einen Fehler der Lesedaten D_RD nicht korrigieren kann, das heißt, ein Fehler in den Lesedaten übersteigt eine von der ECC-Engine 100a korrigierbare Fehlermenge, kann die ECC-Engine 100a in einigen beispielhaften Ausführungsformen ein Signal ausgeben, das dies angibt. Des Weiteren kann gemäß einem Signal, das aus der ECC-Engine 100a ausgegeben wird, bestimmt werden, dass der Speicher 300a defekt ist.
  • Die Fehlereinfügeschaltung 200a kann die Position wenigstens eines Bitfehlers, der in einem Testmodus eingefügt worden ist, ändern. Die Fehlereinfügeschaltung 200a kann zum Beispiel die Schreibdaten D_WR, die durch Einfügen wenigstens eines Bitfehlers in die codierten Daten D_ENC generiert worden sind, in einen spezifischen Bereich des Speichers 300a schreiben und kann die Lesedaten D_RD durch Lesen von Daten ausgeben, die im spezifischen Bereich des Speichers 300a gespeichert sind. Als Nächstes kann die Fehlereinfügeschaltung 200a die Schreibdaten D_WR, die wenigstens einen Bitfehler umfassen, der an einer Position, die sich von der vorherigen Position unterscheidet, in den gleichen codierten Daten D_ENC wie vorher eingefügt worden ist, in den gleichen Bereich wie den vorherigen Bereich des Speichers 300a schreiben und kann Daten lesen, die im gleichen Bereich wie dem vorherigen Bereich des Speichers 300a gespeichert werden, wodurch sie die Lesedaten D_RD ausgibt. Wenn ein echter Bitfehler, der tatsächlich vom Speicher 300a bewirkt wird, in dem Bitfehler auftritt, der von der Fehlereinfügeschaltung 200a eingefügt worden ist, kann der von der Fehlereinfügeschaltung 200a eingefügte Bitfehler nicht als eine Fehlerspanne des Speichers 300a dienen. Dementsprechend kann eine Operation, die generierten Schreibdaten D_WR zu schreiben und die Lesedaten D_RD auszugeben, wiederholt werden, während eine Position, an der der Bitfehler eingefügt wird, für den gleichen Bereich und die gleichen codierten Daten D_ENC geändert wird. Beispiele für das Ändern der Position eines Bitfehlers durch eine Fehlereinfügeschaltung 200b werden später nachstehend unter Bezugnahme auf 3A und 3B und 4 beschrieben.
  • Mit Bezug auf 2B kann die Vorrichtung 10b eine ECC-Engine 100b, die Fehlereinfügeschaltung 200b und einen Speicher 300b umfassen. Die Fehlereinfügeschaltung 200b kann die Lesedaten D_RD bereitstellen, die in einem Normalmodus der ECC-Engine 100b aus dem Speicher 300b als die Empfangsdaten D_RX bereitgestellt werden, und/oder sie kann der ECC-Engine 100b die Empfangsdaten D_RX bereitstellen, die durch Einfügen wenigstens eines Bitfehlers in die Lesedaten D_RD generiert werden. Der Speicher 300b kann die Schreibdaten D_WR empfangen, die von der ECC-Engine 100b ausgegeben werden. Gemäß dem Beispiel der 2B können die codierten Daten D_ENC und die Schreibdaten D_WR der 1 miteinander in einem Testmodus übereinstimmen.
  • Wie oben unter Bezugnahme auf 2B beschrieben wird, kann die Fehlereinfügeschaltung 200b die Position wenigstens eines Bitfehlers, der in einem Testmodus eingefügt worden ist, ändern. Die Fehlereinfügeschaltung 200b kann zum Beispiel der ECC-Engine 100b die Empfangsdaten D_RX bereitstellen, die durch Einfügen wenigstens eines Bitfehlers in die Lesedaten D_RD generiert werden, die durch Lesen eines Bereichs ausgegeben werden, in den die Schreibdaten D_WR geschrieben werden. Danach kann die Fehlereinfügeschaltung 200b die ECC-Engine 100b mit den Empfangsdaten D_RX versorgen, die wenigstens einen Bitfehler umfassen, der an einer anderen Position als die vorherige Position in die Lesedaten D_RD eingefügt worden ist, die durch Lesen des gleichen Bereichs wie zuvor ausgegeben werden. In der Vorrichtung 10a der 2A können die Lesedaten D_RD mehrere Male ausgegeben werden, indem die Schreibdaten D_WR mehrere Male in einen gemäß der Position des Bitfehlers identischen Bereich geschrieben werden und die geschriebenen Daten mehrere Male gelesen werden. Allerdings können die Lesedaten D_RD in der Vorrichtung 10b der 2B mehrere Male ausgegeben werden, indem die Schreibdaten D_WR einmal in einen identischen Bereich geschrieben werden und die geschriebenen Daten mehrere Male gelesen werden. Wie später nachstehend unter Bezugnahme auf 6B beschrieben wird, kann auch eine Leseoperation für einen identischen Bereich des Speichers 300b einmal in der Vorrichtung 10b der 2B durchgeführt werden.
  • Hier nachstehend werden hauptsächlich beispielhafte Ausführungsformen der erfindungsgemäßen Konzepte unter Bezugnahme auf ein Beispiel beschrieben, bei dem die Fehlereinfügeschaltung 200a die Schreibdaten D_WR speichert, die durch Einfügen eines Bitfehlers in die codierten Daten D_ENC im Speicher 300a in einem Testmodus generiert werden, sind aber nicht darauf beschränkt. Die beispielhaften Ausführungsformen der erfindungsgemäßen Konzepte können auch auf eine Vorrichtung angewendet werden, welche die gesamte Vorrichtung 10b der 2B und die Fehlereinfügeschaltungen 200a und 200b der 2A und 2B umfasst.
  • 3A und 3B sind Blockschaltbilder, die Beispiele für eine Fehlereinfügeschaltung 200 der 1 veranschaulichen, gemäß beispielhaften Ausführungsformen der erfindungsgemäßen Konzepte. Genauer veranschaulichen 3A und 3B Beispiele für die Fehlereinfügeschaltung 200a der 2A. Wie oben unter Bezugnahme auf 2A beschrieben wird, können die Fehlereinfügeschaltungen 200a' und 200a" der 3A und 3B wenigstens einen Bitfehler in n-Bit codierte Daten D_ENC in einem Testmodus einfügen, um n-Bit Schreibdaten D_WR zu generieren (n > 0). Hier werden nachstehend 3A und 3B unter Bezugnahme auf 2A beschrieben, und doppelte Beschreibungen von 3A und 3B erfolgen hier nicht.
  • Mit Bezug auf 3A kann die Fehlereinfügeschaltung 200a' eine Bitauswahlschaltung 210' und m Bitfehlerschaltungen 220' umfassen (n > m > 0). Die m Bitfehlerschaltungen 220' können mehrere Bitfehlerschaltungen BE1 bis BEm umfassen. Die Bitauswahlschaltung 210' kann das Modussignal C_MODE empfangen und kann den m Bitfehlerschaltungen 220' jeweils bis zu m Bits der Auswahlsignale SEL bereitstellen. Als Reaktion darauf, dass das Modussignal C_MODE einen Normalmodus angibt, kann die Bitauswahlschaltung 210' ein Auswahlsignal SEL generieren, so dass alle m Bitfehlerschaltungen 220' deaktiviert werden, das heißt, ein Bitsignal der codierten Daten D_ENC wird direkt als ein Bitsignal der Schreibdaten D_WR ausgegeben. Andererseits kann die Bitauswahlschaltung 210' als Reaktion darauf. dass das Modussignal C_MODE einen Testmodus angibt, das Auswahlsignal SEL generieren, so dass wenigstens eine der m Bitfehlerschaltungen 220' aktiviert wird, das heißt, ein Bitsignal, das durch Invertieren des Bitsignals der codierten Daten D_ENC ermittelt wird, wird als das Bitsignal der Schreibdaten D_WR ausgegeben.
  • Wie in 3A veranschaulicht wird, können die m Bitfehlerschaltungen 220' in n Bits der codierten Daten D_ENC angeordnet sein. Die Anordnung der m Bitfehlerschaltungen 220', die in 3A gezeigt wird, ist nur beispielhaft, und die m Bitfehlerschaltungen 220' können zum Beispiel in sequentiellen m-Bits D_ENC [n:n-m+1] von einem höchstwertigsten Bit (MSB) der codierten Daten D_ENC angeordnet sein, oder sie können in sequentiellen m-Bits D_ENC [m:1] vom MSB der codierten Daten D_ENC angeordnet sein, im Gegensatz zu der in 3A gezeigten.
  • Die Bitauswahlschaltung 210' kann zeitgleich Bitfehlerschaltungen der Anzahl von Bits unter den m Bitfehlerschaltungen 220' in einem Testmodus aktivieren, die einer Fehlerspanne des Speichers 300a entsprechen. Falls zum Beispiel eine Fehlerspanne, die im Speicher 300a erforderlich ist, ein Bit beträgt, kann die Bitauswahlschaltung 210' eine von m Bitfehlerschaltungen 220' aktivieren. Zusätzlich kann die Bitauswahlschaltung 210' eine zu aktivierende Bitfehlerschaltung ändern. Zum Beispiel kann die Bitauswahlschaltung 210' das Auswahlsignal SEL generieren, so dass jeweils unterschiedliche Bitfehlerschaltungen in den gleichen codierten Daten D_ENC aktiviert werden, die kontinuierlich K Male in einen identischen Bereich des Speichers 300a geschrieben werden. Wie später nachstehend unter Bezugnahme auf 4 beschrieben wird, kann die Anzahl von Malen K, welche die Schreibdaten D_WR, die aus den gleichen codierten Daten D_ENC generiert werden, in den identischen Bereich des Speichers 300a geschrieben werden, auf Basis der Anzahl korrigierbarer Bits der ECC-Engine 100a und der Fehlerspanne des Speichers 300a bestimmt werden.
  • Mit Bezug auf 3B kann die Fehlereinfügeschaltung 200a" eine Bitauswahlschaltung 210" und n Bitfehlerschaltungen 220" umfassen. Das heißt, die Fehlereinfügeschaltung 200a" kann die n Bitfehlerschaltungen 220" umfassen, die jeweils n Bits der codierten Daten D_ENC entsprechen. Die n Bitfehlerschaltungen 220" können mehrere Bitfehlerschaltungen BEI bis BEn umfassen. Die Bitauswahlschaltung 210" kann das Modussignal C_MODE empfangen und kann den n Bitfehlerschaltungen 220" jeweils n Bits der Auswahlsignale SEL bereitstellen. Die Bitauswahlschaltung 210" kann das Auswahlsignal SEL generieren, so dass alle n Bitfehlerschaltungen 220" als Reaktion darauf deaktiviert werden, dass das Modussignal C_MODE einen Normalmodus angibt. Andererseits kann die Bitauswahlschaltung 210" das Auswahlsignal SEL generieren, so dass wenigstens eine der n Bitfehlerschaltungen 220" als Reaktion darauf aktiviert wird, dass das Modussignal C_MODE einen Testmodus angibt.
  • Die 4 ist eine Ansicht von Beispielen für Schreibdaten D_WR der 2A in einem Testmodus gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer zeigt 4 Schreibdaten D_WR, die aus den gleichen codierten Daten D_ENC generiert werden und kontinuierlich in den Speicher 300a der 2A geschrieben werden. In dem Beispiel 4 kann die ECC-Engine 100a der 2A einem 2-Bit-Korrektur-ECC-System entsprechen, und eine im Speicher 300a erforderliche Fehlerspanne kann 1 Bit betragen. Dementsprechend kann die Fehlereinfügeschaltung 200a die Schreibdaten D_WR generieren, in denen 1-Bit-Fehler durch Invertieren von 1 Bit in den codierten Daten D_ENC eingefügt werden. In 4 stellt ein schattierter Teil das Bit dar, das von der Fehlereinfügeschaltung 200a invertiert wird. Hier wird nachstehend 4 unter Bezugnahme auf 2A beschrieben.
  • Die Anzahl von Malen K, welche die Schreibdaten D_WR, die aus den gleichen codierten Daten D_ENC generiert werden, in den identischen Bereich des Speichers 300a geschrieben werden, kann auf Basis der Anzahl korrigierbarer Bits der ECC-Engine 100a und der Fehlerspanne des Speichers 300a bestimmt werden. Wie in dem Beispiel der 4 gezeigt wird, kann, wenn N 2 ist und die Fehlerspanne des Speichers 300a 1 -Bit beträgt, der Speicher 300a, der die Lesedaten D_RD ausgibt, die aufgrund eines Defekts im Speicher 300a zwei oder mehr echte Bitfehler umfasst, als defekt bestimmt werden. Wenn ein Bitfehler aufgrund der Fehlereinfügeschaltung 200a an der gleichen Position wie die echten Bitfehler aufgrund des Defekts im Speicher 300a eingefügt wird, kann eine Wirkung des Einfügens von Bitfehlern eliminiert werden, da die Lesedaten D_RD weniger Bitfehler als die echten Bitfehler umfassen, da die echten Bitfehler durch den eingefügten Bitfehler korrigiert werden oder der eingefügte Bitfehler und die echten Bitfehler in den Lesedaten D_RD als ein Bitfehler enthalten sind. Dementsprechend können in einem Prozess der ECC-Engine 100a, welche die Lesedaten D_RD verarbeitet, Fehler der Lesedaten D_RD normal korrigiert werden, und der Speicher 300a, der als defekt bestimmt werden soll, kann als akzeptabel bestimmt werden. Um zu verhindern, dass ein Bitfehler, der von der Fehlereinfügeschaltung 200a eingefügt wird, an der gleichen Position wie ein echter Bitfehler angeordnet wird, kann die Fehlereinfügeschaltung 200a eine Position ändern, an der der Bitfehler eingefügt wird. In einem Beispiel der 4 kann die Fehlereinfügeschaltung 200a, um zu bestimmen, dass der Speicher 300a defekt ist, der die Lesedaten D_RD ausgibt, die zwei echte Bitfehler umfassen, die Schreibdaten D_WR sequentiell generieren, die Bitfehler an drei unterschiedlichen Positionen umfassen.
  • Mit Bezug auf 4 können die Schreibdaten D_WR die Anzahl x-Bit Datenbits und die Anzahl y-Bit Paritätsbits (n = x + y) umfassen, und die Fehlereinfügeschaltung 200a kann einen Bitfehler durch Invertieren des ersten Datenbits D1 der Datenbits einfügen. Die Schreibdaten D_WR, die durch Invertieren des ersten Datenbits D1 von den codierten Daten ermittelt werden, können in den Speicher 300a geschrieben werden, und die Lesedaten D_RD können der ECC-Engine 100a durch Lesen von Daten bereitgestellt werden, die in einem Bereich des Speichers 300a gespeichert sind, in den die Schreibdaten D_WR geschrieben werden.
  • Die Fehlereinfügeschaltung 200a kann dann einen Bitfehler einfügen, indem sie ein drittes Datenbit D3 der Datenbits invertiert. Die Schreibdaten D_WR, die durch Invertieren des dritten Datenbits D3 von den codierten Daten ermittelt werden, können in den Speicher 300a geschrieben werden, und die Lesedaten D_RD können der ECC-Engine 100a durch Lesen von Daten bereitgestellt werden, die im Bereich des Speichers 300a gespeichert sind, in den die Schreibdaten D_WR geschrieben werden.
  • Abschließend kann die Fehlereinfügeschaltung 200a kann einen Bitfehler einfügen, indem sie ein fünftes Datenbit D5 der Datenbits invertiert. Die Schreibdaten D_WR, die durch Invertieren des fünften Datenbits D5 von den codierten Daten ermittelt werden, können in den Speicher 300a geschrieben werden, und die Lesedaten D_RD können der ECC-Engine 100a durch Lesen von Daten bereitgestellt werden, die im Bereich des Speichers 300a gespeichert sind, in den die Schreibdaten D_WR geschrieben werden. Es versteht sich, dass Positionen, an denen Bitfehler in 4 eingefügt werden, nur ein Beispiel sind, und dass Bitfehler an irgendeiner von drei unterschiedlichen Positionen eingefügt werden können.
  • Wenn die n-Bit-Korrektur-ECC-Engine 100a verwendet wird und die Fehlerspanne des Speichers 300a 1 Bit beträgt, kann K, das die Anzahl von Wiederholungen von Schreib- und Leseoperationen für einen identischen Bereich des Speichers 300a ist, mit n+1 übereinstimmen. In einigen beispielhaften Ausführungsformen ist es möglicherweise unwahrscheinlich, dass sich alle an unterschiedlichen Orten eingefügten Bitfehler an der gleichen Position wie echte Bitfehler befinden, falls n relativ groß ist, das heißt, falls von der ECC-Engine 100a verarbeitete Dateneinheiten relativ groß sind. Daher kann die Fehlereinfügeschaltung 200a weniger als drei, zum Beispiel zwei, Schreib- und Leseoperationen durchführen, anstatt drei Schreib- und Leseoperation durchzuführen. In dem Beispiel der 4 kann es zum Beispiel unwahrscheinlich sein, dass sowohl im ersten Datenbit D1 als auch im dritten Datenbit D3 echte Bitfehler vorhanden sind, so dass ein Testzeitraum für den Speicher 300a oder die Vorrichtung 10a verkürzt werden kann, indem nur zwei Schreib- und Leseoperationen durchgeführt werden.
  • Die 5 ist ein Flussdiagramm, das ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer zeigt 5 ein Verfahren zum Testen der Vorrichtung 10a der 2A in einem Testmodus. Hier wird nachstehend 5 unter Bezugnahme auf 2A beschrieben.
  • In der Operation S110 kann eine Initialisierungsoperation durchgeführt werden. Zum Beispiel kann, wie in 5 gezeigt wird, eine Variable i auf 1 gesetzt werden, und die Variable i kann die Anzahl von Operationen angeben, die durchgeführt werden, um einen Bitfehler an unterschiedlichen Positionen in den codierten Daten D_ENC einzufügen, das heißt, die Anzahl von Malen, die eine anschließende Reihe von Operationen (S121 bis S126) durchgeführt wird.
  • In der Operation S121 kann eine Operation, wenigstens ein Bit der codierten Daten D_ENC zu invertieren, durchgeführt werden. Zum Beispiel kann die Fehlereinfügeschaltung 200a die Schreibdaten D_WR generieren, indem sie wenigstens ein Bit der codierten Daten D_ENC als Reaktion darauf, dass das Modussignal C_MODE einen Testmodus angibt, invertiert.
  • Eine Operation, die Schreibdaten D_WR in den Speicher 300a zu schreiben, kann in der Operation S122 durchgeführt werden, und eine Operation, die in den Speicher 300a geschriebenen Daten zu lesen, kann in der Operation S123 durchgeführt werden. Die Lesedaten D_RD können aus dem Speicher 300a ausgegeben werden, indem Daten gelesen werden, die in dem Bereich des Speichers 300a gespeichert sind, in den die Schreibdaten D_WR geschrieben werden.
  • In der Operation S124 kann ein Fehler der Lesedaten D_RD korrigiert werden. Zum Beispiel kann die ECC-Engine 100a die Lesedaten D_RD aus dem Speicher 300a empfangen und kann einen Fehler in den Lesedaten D_RD korrigieren. Dann kann in der Operation S125 bestimmt werden, ob die Fehlerkorrektur erfolgreich ist oder nicht. Zum Beispiel kann die ECC-Engine 100a die Anzahl an korrigierbaren Bits aufweisen, und somit kann eine Fehlerkorrektur der Fehler enthaltenden Lesedaten D_RD, die die Anzahl korrigierbarer Bits überschreiten, fehlschlagen. Falls die Fehlerkorrektur fehlschlägt, kann anschließend die Operation S130 durchgeführt werden, und eine Operation, zu bestimmen, dass der Speicher 300a defekt ist, kann in der Operation S130 durchgeführt werden. Falls andererseits die Fehlerkorrektur erfolgreich ist, kann anschließend die Operation S126 durchgeführt werden.
  • In der Operation S126 kann bestimmt werden, ob die Variable i gleich K ist. Das heißt, es kann bestimmt werden, ob Schreib- und Leseoperationen K Male durchgeführt worden sind. Wie oben unter Bezugnahme auf 4 beschrieben wird, kann K auf Basis der korrigierbaren Fehlermenge der ECC-Engine 100a und der Fehlerspanne des Speichers 300a bestimmt werden. Falls die Variable i gleich K ist, kann anschließend die Operation S140 durchgeführt werden, und eine Operation, zu bestimmen, dass der Speicher 300a akzeptabel ist, kann in der Operation S140 durchgeführt werden. Falls die Variable i nicht gleich K ist, kann andererseits die Variable i in der Operation S127 um eins erhöht werden, und dann kann anschließend die Operation S121 durchgeführt werden. In der Operation S121 kann ein Bit an einer Position, die sich von einer Position des vorher invertierten Bits unterscheidet, invertiert werden.
  • 6A und 6B sind Flussdiagramme, die ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulichen, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer zeigen 6A und 6B ein Verfahren zum Testen der Vorrichtung 10b der 2B in einem Testmodus. Hier werden nachstehend 6A und 6B unter Bezugnahme auf 2B beschrieben. Des Weiteren bezeichnen die gleichen Bezugszeichen wie in 2B die gleichen Elemente, und daher werden hier keine doppelten Beschreibungen 6A und 6B erfolgen.
  • Mit Bezug auf 6A kann in der Operation S210 eine Initialisierungsoperation durchgeführt werden. Zum Beispiel kann, wie in 6A gezeigt wird, die Variable i auf 1 gesetzt werden, und die Variable i kann die Anzahl von Operationen angeben, die durchgeführt werden, um einen Bitfehler an unterschiedlichen Positionen in die Lesedaten D_RD einzufügen, das heißt, die Anzahl von Malen, die eine Reihe von Operationen (S231 bis S235) durchgeführt wird.
  • In der Operation S220 können die Schreibdaten D_WR geschrieben werden. Wie in 6A veranschaulicht wird, können die Schreibdaten D_WR zum Verifizieren eines spezifischen Bereichs des Speichers 300b einmal geschrieben werden, und eine Operation, die Lesedaten D_RD durch Lesen der gespeicherten Schreibdaten D_WR auszugeben, kann wiederholt werden, wie später nachstehend beschrieben wird. Im Vergleich zu dem Beispiel der 5 kann die Anzahl an Schreiboperationen an sich in dem Beispiel der 6A und 6B reduziert werden, und somit kann der Zeitraum, der zum Testen des Speichers 300b beansprucht wird, relativ verkürzt werden.
  • In der Operation S231 können die gespeicherten Schreibdaten D_WR gelesen werden. Die Lesedaten D_RD können aus dem Speicher 300b ausgegeben werden, indem die Daten gelesen werden, die in dem Bereich des Speichers 300b gespeichert sind, in den die Schreibdaten D_WR geschrieben werden.
  • In der Operation S232 kann wenigstens ein Bit der Lesedaten D_RD invertiert werden. Zum Beispiel kann die Fehlereinfügeschaltung 200b die Empfangsdaten D_RX generieren, indem sie wenigstens ein Bit der Lesedaten D_RD als Reaktion darauf, dass das Modussignal C_MODE einen Testmodus angibt, invertiert.
  • In der Operation S233 kann ein Fehler der Empfangsdaten D_RX korrigiert werden. Zum Beispiel kann die ECC-Engine 100b die Empfangsdaten D_RX aus der Fehlereinfügeschaltung 200b empfangen und kann einen Fehler in den Empfangsdaten D_RX korrigieren. Dann kann in der Operation S234 bestimmt werden, ob die Fehlerkorrektur erfolgreich ist oder nicht. Zum Beispiel kann die ECC-Engine 100b die Anzahl an korrigierbaren Bits aufweisen, und somit kann eine Fehlerkorrektur der Fehler enthaltenden Empfangsdaten D_RX, die die Anzahl korrigierbarer Bits überschreiten, fehlschlagen. Falls die Fehlerkorrektur fehlschlägt, kann anschließend die Operation S240 durchgeführt werden, und eine Operation, zu bestimmen, dass der Speicher 300b defekt ist, kann in der Operation S240 durchgeführt werden. Falls andererseits die Fehlerkorrektur erfolgreich ist, kann anschließend die Operation S235 durchgeführt werden.
  • In der Operation S235 kann bestimmt werden, ob die Variable i gleich K ist. Das heißt, es kann bestimmt werden, ob Leseoperationen K Male durchgeführt worden sind. Wie oben unter Bezugnahme auf 4 beschrieben wird, kann K auf Basis der korrigierbaren Fehlermenge der ECC-Engine 100b und der Fehlerspanne des Speichers 300b bestimmt werden. Falls die Variable i gleich K ist, kann anschließend die Operation S250 durchgeführt werden, und eine Operation, zu bestimmen, dass der Speicher 300b akzeptabel ist, kann in der Operation S250 durchgeführt werden. Falls die Variable i nicht gleich K ist, kann andererseits die Variable i in der Operation S236 um eins erhöht werden, und dann kann anschließend die Operation S231 durchgeführt werden. In der Operation S231 kann ein Bit an einer Position, die sich von einer Position des vorher invertierten Bits unterscheidet, invertiert werden.
  • Mit Bezug auf 6B kann im Vergleich mit dem Beispiel der 6A die Schreiboperation der Schreibdaten D_WR einmal durchgeführt werden, um einen spezifischen Bereich des Speichers 300b zu verifizieren, und die Leseoperation der gespeicherten Schreibdaten D_WR kann ebenfalls einmal durchgeführt werden. Das heißt, da die Lesedaten D_RD, die durch wiederholtes Lesen der gespeicherten Schreibdaten D_WR ausgegeben werden, identisch sind, kann eine Operation, nur die Position eines Bitfehlers in den Lesedaten D_RD durch die Fehlereinfügeschaltung 200b zu ändern, wiederholt werden.
  • Wie in 6B veranschaulicht wird, können Operationen der 6B gleich oder ähnlich den entsprechenden Operationen der 6A sein. Falls allerdings in der Operation S235' der 6B die Variable i nicht gleich K ist, kann die Variable i in der Operation S236' um 1 erhöht werden, und die Operation S232' kann anstelle der Operation S231' anschließend an die Operation S236' durchgeführt werden. Daher können die Operation, in der Operation S220' die Schreibdaten D_WR zu schreiben, und die Operation, Daten zu lesen, die in der Operation S231' geschrieben werden, jeweils einmal durchgeführt werden, und die Operation, wenigstens ein Bit der Lesedaten D_RD zu invertieren, kann in der Operation S232' wiederholt werden. Im Vergleich zu dem Beispiel der 6A kann daher die Anzahl an Leseoperationen des Speichers 300b gemäß einem Beispiel der 6B reduziert werden.
  • 7A bis 7C sind Blockschaltbilder, die Beispiele für Bitauswahlschaltungen veranschaulichen, gemäß beispielhaften Ausführungsformen der erfindungsgemäßen Konzepte. Wie oben unter Bezugnahme auf 3A und 3B beschrieben wird, können die Bitauswahlschaltungen 210a, 210b und 210c der 7A bis 7C das Modussignal C_MODE empfangen und das Auswahlsignal SEL ausgeben. Hier werden nachstehend 7A und 7B unter Bezugnahme auf 1 beschrieben, und doppelte Beschreibungen der 7A bis 7C erfolgen hier nicht.
  • Mit Bezug auf 7A kann die Bitauswahlschaltung 210a die Bitmuster 211 umfassen. Die Bitauswahlschaltung 210a kann das Auswahlsignal SEL als Reaktion darauf generieren, dass das Modussignal C_MODE einen Testmodus angibt, so dass ein Bitfehler an einer Position gemäß den Bitmustern 211 auftritt. Wie zum Beispiel oben unter Bezugnahme auf 4 beschrieben wird, können die Bitmuster 211 drei unterschiedliche Muster umfassen, wenn Bitfehler an drei unterschiedlichen Positionen eingefügt werden.
  • Mit Bezug auf 7B kann die Bitauswahlschaltung 210b einen Zufallszahlengenerator 212 umfassen. Als Reaktion darauf, dass das Modussignal C_MODE einen Testmodus angibt, kann die Bitauswahlschaltung 210b das Auswahlsignal SEL generieren, so dass ein Bitfehler an einer Position gemäß einer Zufallszahl auftritt, die vom Zufallszahlengenerator 212 generiert wird. In einigen beispielhaften Ausführungsform kann der Zufallszahlengenerator 212 ein Pseudozufallszahlengenerator sein.
  • Mit Bezug auf 7C kann die Bitauswahlschaltung 210c des Weiteren ein Einstellsignal C_SET empfangen. Das Einstellsignal C_SET kann zum Beispiel aus einem Signal generiert werden, das von außerhalb der Vorrichtung 10 in 1 empfangen wird, und kann Einstellinformationen der Bitauswahlschaltung 210c umfassen. In einigen beispielhaften Ausführungsformen kann das Einstellsignal C_SET die Anzahl an Fehlerkorrekturoperationen für einen identischen Bereich des Speichers 300 bestimmen, das heißt K. Falls zum Beispiel die korrigierbare Fehlermenge der ECC-Engine 100 festgelegt ist, kann K gemäß dem Einstellsignal C_SET geändert werden, um die Fehlerspanne des Speichers 300 anzupassen. Wie oben unter Bezugnahme auf 4 beschrieben wird, kann, um einen Testzeitraum zu verkürzen, zusätzlich K zum Beispiel gemäß dem Einstellsignal C_SET geändert werden, so dass es gleich oder kleiner als die Anzahl ist, die der korrigierbaren Fehlermenge der ECC-Engine 100 entspricht.
  • Die 8 ist ein Flussdiagramm, das ein Verfahren zum Testen einer Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Zum Beispiel kann das Verfahren der 8 ein Verfahren zum Testen der Vorrichtung 10 der 1 in einem Testmodus darstellen. In 8 können die codierten Daten D_ENC und die Schreibdaten D_WR der 1 zusammengenommen als Schreibdaten bezeichnet werden, und die Lesedaten D_RD und die Empfangsdaten D_RX können zusammengenommen als Lesedaten bezeichnet werden. Zum Beispiel kann das Generieren der Schreibdaten D_WR durch Einfügen eines Fehlers in die codierten Daten D_ENC der 1 als Einfügen eines Fehlers in Schreibdaten bezeichnet werden, und das Generieren der Empfangsdaten D_RX durch Einfügen eines Fehlers in die Lesedaten D_RD kann als Einfügen eines Fehlers in Lesedaten bezeichnet werden. Hier wird nachstehend 8 unter Bezugnahme auf 1 beschrieben.
  • In der Operation S20 können Schreibdaten durch Codieren von Eingangsdaten generiert werden. Zum Beispiel kann die ECC-Engine 100 der 1 Schreibdaten durch Hinzufügen von Redundanz zu den Eingangsdaten D_IN generieren.
  • In der Operation S40 können Schreibdaten in den Speicher 300 geschrieben werden, und Lesedaten können aus dem Speicher 300 ausgegeben werden. Zum Beispiel können Schreibdaten in einen spezifischen Bereich des Speichers 300 geschrieben werden, und Lesedaten können durch Lesen von Daten ausgegeben werden, die in dem Bereich gespeichert sind, in den die Schreibdaten geschrieben werden. Die Fehlereinfügeschaltung 200 kann einen Fehler in Daten einfügen, die in den Speicher 300 geschrieben werden sollen, d. h. in Schreibdaten, oder sie kann einen Fehler in Daten einfügen, die aus dem Speicher 300 gelesen werden, das heißt in Lesedaten. In einigen beispielhaften Ausführungsformen kann die Fehlereinfügeschaltung 200 einen Fehler sowohl in Schreibdaten als auch in Lesedaten einfügen. Wie in 8 veranschaulicht wird, kann die Operation S40 die Operation S42 umfassen.
  • In der Operation S42 kann wenigstens ein Bit der Schreibdaten und/oder der Lesedaten invertiert werden. Zum Beispiel kann die Fehlereinfügeschaltung 200 die Bitfehlerschaltung BE umfassen und kann wenigstens ein Bit der Schreibdaten und/oder der Lesedaten durch Aktivieren wenigstens einer Bitfehlerschaltung BE invertieren. Die deaktivierte Bitfehlerschaltung BE kann ein Eingangsbitsignal ausgeben.
  • In der Operation S60 können die Ausgangsdaten D_OUT durch Korrigieren eines Fehlers der Lesedaten generiert werden. Zum Beispiel kann die ECC-Engine 100 der 1 die Ausgangsdaten D_OUT durch Korrigieren eines Fehlers der Lesedaten generieren.
  • In der Operation S80 kann ein Defekt des Speichers 300 detektiert werden. Wie oben unter Bezugnahme auf 5 und dergleichen beschrieben wird, kann in einigen beispielhaften Ausführungsformen ein Defekt im Speicher 300 abhängig davon detektiert werden, ob die Fehlerkorrektur in der Operation S60 erfolgreich ist oder nicht. Wie später nachstehend unter Bezugnahme auf 9 beschrieben wird, kann in einigen beispielhaften Ausführungsformen ein Defekt im Speicher 300 auf Basis der Ausgangsdaten detektiert werden, die in der Operation S60 generiert werden.
  • Die 9 ist ein Flussdiagramm, das ein Beispiel für die Operation S80 der 8 veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Wie oben unter Bezugnahme auf 8 beschrieben wird, kann ein Defekt eines Speichers detektiert werden. Wie in 9 veranschaulicht wird, kann die Operation S80' mehrere Operationen S82, S84 und S86 umfassen, und 9 kann unter Bezugnahme auf 1 und 8 beschrieben werden.
  • In einigen beispielhaften Ausführungsformen kann die Operation S80' von einer Testvorrichtung durchgeführt werden, die der Vorrichtung 10 die Eingangsdaten D_IN außerhalb der Vorrichtung 10 der 1 bereitstellt und die Ausgangsdaten D_OUT empfängt. Die Testvorrichtung kann die Vorrichtung 10 unter Verwendung des Modussignals C_MODE in einen Testmodus einstellen. Es ist möglich, der Vorrichtung 10, die in einen Testmodus eingestellt ist, die Eingangsdaten D_IN bereitzustellen und die Ausgangsdaten D_OUT entsprechend den bereitgestellten Eingangsdaten D_IN zu empfangen.
  • In der Operation S82 kann bestimmt werden, ob die Eingangsdaten D_IN und die Ausgangsdaten D_OUT miteinander übereinstimmen oder nicht. Zum Beispiel kann die Testvorrichtung bestimmen, ob die Eingangsdaten D_IN, die der Vorrichtung 10 bereitgestellt werden, und die entsprechenden Ausgangsdaten D_OUT miteinander übereinstimmen. Die fehlerkorrigierten Ausgangsdaten D_OUT können aus Daten empfangen werden, die aus dem Speicher 300 gelesen werden, nachdem die Eingangsdaten D_ IN über einen Codierprozess im Speicher 300 gespeichert sind, und die Testvorrichtung kann die Eingangsdaten D_IN mit den Ausgangsdaten D_OUT vergleichen. Wie oben unter Bezugnahme auf die Zeichnungen beschrieben wird, kann ein Fehler in Daten eingefügt werden, die aus den Eingangsdaten D_IN codiert werden, und ein Fehler kann in Daten eingefügt werden, die aus dem Speicher 300 gelesen werden.
  • Falls die Eingangsdaten D_IN und die Ausgangsdaten D_OUT trotz des eingefügten Fehlers miteinander übereinstimmen, kann bestimmt werden, dass der Speicher 300 eine ausreichende Fehlerspanne aufweist, und der Speicher 300 wird in der Operation S84 akzeptiert. Falls andererseits die Eingangsdaten D_IN und die Ausgangsdaten D_OUT nicht miteinander übereinstimmen, kann bestimmt werden, dass der Speicher 300 eine mangelhafte Fehlerspanne aufweist, und in der Operation S86 kann bestimmt werden, dass der Speicher 300 defekt ist.
  • 10 ist ein Blockschaltbild, das ein Beispiel für eine Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer zeigt 10 eine Speichervorrichtung 20, die ein Zellen-Array 21 als einen verrauschten Kanal umfasst.
  • Die Speichervorrichtung 20 kann einen Befehl CMD und eine Adresse ADDR empfangen, und sie kann Daten DATA empfangen oder übertragen. Zum Beispiel kann die Speichervorrichtung 20 den Befehl CMD, wie zum Beispiel einen Schreibbefehl, einen Lesebefehl und dergleichen, und die Adresse, die dem Befehl CMD entspricht, aus einer Speichersteuerung empfangen. Zusätzlich kann die Speichervorrichtung 20 Daten DATA (d. h. Eingangsdaten) aus der Speichersteuerung empfangen oder der Speichersteuerung Daten DATA (d. h. Ausgangsdaten) bereitstellen. Obwohl 10 den Befehl CMD, die Adresse ADDR und die Daten DATA separat zeigt, können in einigen beispielhaften Ausführungsformen wenigstens zwei der Folgenden, der Befehl CMD, die Adresse ADDR und die Daten DATA, über einen identischen Kanal übertragen werden. Wie in 10 gezeigt wird, kann die Speichervorrichtung 20 das Zellen-Array 21, eine Lese-/Schreibschaltung 22, eine Fehlereinfügeschaltung 23, eine ECC-Engine 24, einen Zeilendecodierer 25_1, einen Spaltendecodierer 25_2, ein Adressregister 26_1, ein Datenregister 26_2, eine Steuerlogik 27 und eine Eingangs-/Ausgangsschaltung 28 umfassen.
  • Das Zellen-Array 21 kann mehrere Speicherzellen umfassen und Daten speichern. Ein Fehler, bei dem sich Daten, die aus dem Zellen-Array 21 von der Lese-/Schreibschaltung 22 gelesen werden, von Daten unterscheiden, die in das Zellen-Array 21 geschrieben werden, kann aufgrund eines Defekts, der im Zellen-Array 21 enthalten ist, auftreten. Um den Fehler zu korrigieren, kann die ECC-Engine 24 Daten generieren, indem sie die Empfangsdaten DATA (d. h. Eingangsdaten) zusammen mit dem Schreibbefehl CMD codiert, und kann als Reaktion auf den Lesebefehl CMD Daten DATA generieren (d. h. Ausgangsdaten), die durch Korrigieren von Fehlern in Daten generiert werden, die aus dem Zellen-Array 21 gelesen worden sind.
  • Die Fehlereinfügeschaltung 23 kann das Modussignal C_MODE aus der Eingangs-/Ausgangsschaltung 28 empfangen und kann als Reaktion darauf, dass das Modussignal C_MODE einen Testmodus angibt, einen Fehler in Daten einfügen, die zwischen der Lese-/Schreibschaltung 22 und der ECC-Engine 24 übertragen werden. Des Weiteren kann die Fehlereinfügeschaltung 23 eine Position des Fehlers, der eingefügt werden soll, ändern. Eine durch die Fehlereinfügeschaltung 23 eingefügte Fehlermenge kann einer Fehlerspanne des Zellen-Arrays 21 entsprechen. Somit kann leicht verifiziert werden, ob das Zellen-Array 21 eine ausreichende Fehlerspanne aufweist oder nicht, und folglich kann ein Defekt in der Speichervorrichtung 20 leicht detektiert werden.
  • Der Zeilendecodierer 25_1 kann gemäß einer Zeilenadresse, die aus dem Adressregister 26_1 bereitgestellt wird, wenigstens eine von mehreren Wortleitungen aktivieren, die mit dem Zellen-Array 21 verbunden sind. Der Spaltendecodierer 25_2 kann gemäß einer Spaltenadresse, die aus dem Adressregister 26_1 bereitgestellt wird, einige der Signale auswählen, die aus den Speicherzellen ausgegeben werden, die mit der aktivierten Wortleitung verbunden sind.
  • Das Adressregister 26_1 kann die Adresse ADDR aus der Eingangs/Ausgangsschaltung 28 empfangen und speichern. Das Datenregister 26_2 kann Daten speichern, die es aus der Eingangs-/Ausgangsschaltung 28 empfängt, und kann der ECC-Engine 24 die gespeicherten Daten bereitstellen. Zusätzlich kann das Datenregister 26_2 Daten speichern, die es aus der ECC-Engine 24 empfängt, und kann der Eingangs-/Ausgangsschaltung 28 die gespeicherten Daten bereitstellen.
  • Die Steuerlogik 27 kann Steuersignale für eine Operation der Speichervorrichtung 20 gemäß dem Befehl CMD generieren, der von der Eingangs-/Ausgangsschaltung 28 empfangen wird, bzw. die Steuersignale können Komponenten bereitgestellt werden, die in der Speichervorrichtung 20 enthalten sind.
  • Die Eingangs-/Ausgangsschaltung 28 kann den Befehl CMD, die Adresse ADDR und die Daten DATA von außerhalb der Speichervorrichtung 20 empfangen und die Daten DATA ausgeben. In einigen beispielhaften Ausführungsformen kann die Eingangs-/Ausgangsschaltung 28 den Befehl CMD decodieren und der Steuerlogik 27 ein Ergebnis des Decodierens bereitstellen.
  • Die 11 ist ein Blockschaltbild, das ein Beispiel für eine Vorrichtung zum Unterstützen des ECC veranschaulicht, gemäß einer beispielhaften Ausführungsform der erfindungsgemäßen Konzepte. Genauer zeigt 11 ein Speichersystem 30, das eine Speichervorrichtung 32 als einen verrauschten Kanal umfasst, und einen Host 40, der mit ihm kommuniziert.
  • Das Speichersystem 30 kann mit dem Host 40 über eine Schnittstelle 50 kommunizieren. Die Schnittstelle 50, über die das Speichersystem 30 und der Host 40 miteinander kommunizieren, kann ein elektrisches und/oder optisches Signal verwenden und kann durch eine Serial Advanced Technology Attachment (SATA)Schnittstelle, eine SATA Express (SATAe)-Schnittstelle, eine Serial Attached Small Computer System (SAS)-Schnittstelle, eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle, eine Non-Volatile Memory Express (NVMe)-Schnittstelle, eine Advanced Host Controller Interface (AHCI) oder eine Kombination aus davon implementiert werden, ist aber nicht darauf beschränkt.
  • In einigen beispielhaften Ausführungsformen kann das Speichersystem 30 mit dem Host 40 dadurch kommunizieren, dass es abnehmbar mit dem Host 40 gekoppelt ist. Die Speichervorrichtung 32 kann ein nichtflüchtiger Speicher sein, wie zum Beispiel ein resistiver Speicher, und das Speichersystem 30 kann als ein Speichersystem bezeichnet werden. Zum Beispiel kann das Speichersystem 30 durch ein Solid-State-Drive oder Solid-State-Disk (SSD), eine Embedded SSD (eSSD), eine Multimedia Card (MMC), eine Embedded MMC (eMMC) und dergleichen implementiert werden, ist aber nicht darauf beschränkt.
  • Wie in 11 veranschaulicht wird, kann das Speichersystem 30 eine Steuerung 31 und wenigstens eine Speichervorrichtung 32 umfassen. Die wenigstens eine Speichervorrichtung 32 kann den Befehl CMD und die Adresse ADDR empfangen, die aus der Steuerung 31 empfangen werden, und sie kann die Daten DATA empfangen oder übertragen.
  • Die Steuerung 31 kann wenigstens eine Speichervorrichtung 32 als Reaktion auf eine Anforderung steuern, die aus dem Host 40 über die Schnittstelle 50 empfangen worden ist. Zum Beispiel kann die Steuerung 31 Daten schreiben, die mit einer Schreibanforderung in der wenigstens einen Speichervorrichtung 32 als Reaktion auf die Schreibanforderung empfangen worden sind, oder sie kann dem Host 40 als Reaktion auf die Leseanforderung Daten bereitstellen, die in der wenigstens einen Speichervorrichtung 32 gespeichert sind. Wie in 11 gezeigt wird, kann die Steuerung 31 eine Fehlereinfügeschaltung 31_1 und eine ECC-Engine 31_2 umfassen.
  • In einigen beispielhaften Ausführungsformen kann die Fehlereinfügeschaltung 31_1 einen Fehler in Daten einfügen, die durch Codieren von Daten ermittelt worden sind, für die durch die ECC-Engine 31_2 in einem Testmodus angefordert worden ist, dass sie aus dem Host 40 geschrieben werden sollen, und kann der wenigstens einen Speichervorrichtung 32 die Daten mit eingefügten Fehlern als Schreibdaten bereitstellen. In einigen beispielhaften Ausführungsformen kann die Fehlereinfügeschaltung 31_1 einen Fehler in Daten einfügen, die aus der wenigstens einen Speichervorrichtung 32 als Reaktion auf eine Leseanforderung des Host 40 in einem Testmodus gelesen worden sind, und kann die Daten mit eingefügten Fehlern der ECC-Engine 31_2 bereitstellen. Des Weiteren kann die Fehlereinfügeschaltung 31_1 eine Position des Fehlers, der eingefügt werden soll, ändern. Eine durch die Fehlereinfügeschaltung 31_1 eingefügte Fehlermenge kann einer Fehlerspanne der wenigstens einen Speichervorrichtung 32 entsprechen. Somit kann leicht verifiziert werden, ob die wenigstens eine Speichervorrichtung 32 eine ausreichende Fehlerspanne aufweist oder nicht.
  • Während die erfindungsgemäßen Konzepte insbesondere in Bezug auf beispielhafte Ausführungsformen davon gezeigt und beschrieben worden sind, versteht es sich, dass daran verschiedene Änderungen in Form und Details vorgenommen werden können, ohne vom Schutzumfang der folgenden Ansprüche abzuweichen.

Claims (10)

  1. Vorrichtung zum Unterstützen eines Testmodus zum Speichertesten, wobei die Vorrichtung (10; 10a) Folgendes umfasst: einen Speicher (300; 300b), der dazu ausgelegt ist, Schreibdaten (D_WR) zu empfangen und zu speichern und Lesedaten (D_RD) aus den gespeicherten Schreibdaten (D_WR) auszugeben; eine Fehlerkorrekturcode (ECC-) Engine (100; 100b), die dazu ausgelegt ist, die Schreibdaten (D_ENC, D_WR) durch Codieren von Eingangsdaten (D_IN) zu generieren und Ausgangsdaten (D_OUT) durch Fehlerbit-Korrigieren von N Bits oder weniger, die in Empfangsdaten (D_RX) enthalten sind, zu generieren, wobei N eine positive ganze Zahl ist; und eine Fehlereinfügeschaltung (200; 200b), die dazu ausgelegt ist, der Fehlerkorrekturcode-Engine (100; 100b) die Lesedaten (D_RD) als die Empfangsdaten (D_RX) in einem Normalmodus bereitzustellen und der Fehlerkorrekturcode-Engine (100; 100b) Daten, die durch Invertieren wenigstens eines Bits von weniger als N Bits der Lesedaten (D_RD) ermittelt werden, als die Empfangsdaten (D_RX) im Testmodus bereitzustellen.
  2. Vorrichtung nach Anspruch 1, wobei die Fehlereinfügeschaltung (200; 200b) des Weiteren dazu ausgelegt ist, eine Position des wenigstens einen Bits in den Lesedaten (D_RD) im Testmodus zu ändern, die kontinuierlich aus dem Speicher (300; 300b) K Male ausgegeben werden, wobei K eine ganze Zahl gleich oder größer als 2 ist.
  3. Vorrichtung nach Anspruch 2, wobei K gleich (N+1) ist.
  4. Vorrichtung nach Anspruch 2, wobei K gleich oder kleiner als N ist und auf Basis des Umfangs der Daten bestimmt wird, die von der Fehlerkorrekturcode-Engine (100) verarbeitet werden.
  5. Vorrichtung nach Anspruch 2, wobei die Fehlereinfügeschaltung (200; 200b) des Weiteren dazu ausgelegt ist, K gemäß einem Einstellsignal zu bestimmen, das von außerhalb der Vorrichtung (10; 10b) empfangen wird.
  6. Vorrichtung zum Unterstützen eines Testmodus zum Speichertesten, wobei die Vorrichtung (10; 10a) Folgendes umfasst: einen Speicher (300; 300a), der dazu ausgelegt ist, Schreibdaten (D_WR) zu empfangen und zu speichern und Lesedaten (D_RD) aus den gespeicherten Schreibdaten (D_WR) auszugeben; eine Fehlerkorrekturcode (ECC-) Engine (100; 100a), die dazu ausgelegt ist, codierte Daten (D ENC) durch Codieren von Eingangsdaten (D IN) zu generieren und Ausgangsdaten (D_OUT) durch Fehlerbit-Korrigieren von N Bits oder weniger, die in den Lesedaten (D_RD) enthalten sind, zu generieren, wobei N eine positive ganze Zahl ist; und eine Fehlereinfügeschaltung (200; 200a; 200a'; 200a"), die dazu ausgelegt ist, dem Speicher die codierten Daten (D_ENC) als die Schreibdaten (D_WR) in einem Normalmodus bereitzustellen und dem Speicher (300; 300a) Daten, die durch Invertieren wenigstens eines Bits von weniger als N Bits der codierten Daten (D_ENC) ermittelt werden, als die Schreibdaten (D_WR) im Testmodus bereitzustellen.
  7. Vorrichtung nach Anspruch 6, wobei die Fehlereinfügeschaltung (200; 200a; 200a'; 200a") des Weiteren dazu ausgelegt ist, eine Position des wenigstens einen Bits in den codierten Daten (D_ENC) im Testmodus zu ändern, die kontinuierlich in den Speicher K Male geschrieben werden, wobei K eine ganze Zahl gleich oder größer als 2 ist.
  8. Verfahren zum Testen einer Vorrichtung, die eine Fehlerkorrekturcode (ECC-) Engine (100; 100a; 100b) und einen Speicher (300; 300a; 300b) umfasst, die dazu ausgelegt sind, Fehlerbits von N Bits oder weniger zu korrigieren, wobei N eine positive ganze Zahl ist, wobei das Verfahren Folgendes umfasst: Generieren (S20) von Schreibdaten (D_ENC, D_WR), indem Eingangsdaten (D_IN) durch die Fehlerkorrekturcode-Engine (100; 100a; 100b) codiert werden; Schreiben (S122; S220; S220') der Schreibdaten (D_ENC, D_WR) in den Speicher (300; 300a; 300b), Lesen (S123; S231; S231') der Schreibdaten (D_ENC, D_WR)und Ausgeben der Lesedaten (D_RD); und Generieren (S60) von Ausgangsdaten, indem ein Fehler der Lesedaten (D_RD) durch die Fehlerkorrekturcode-Engine korrigiert wird, wobei das Schreiben (S122; S220; S220') der Schreibdaten (D_ENC, D_WR) und das Ausgeben der Lesedaten ein Invertieren (S121; S232; S232') von wenigstens einem Bit von weniger als N Bits in wenigstens einem von beiden, den Schreibdaten (D ENC, D_WR) oder den Lesedaten (D_WR), umfasst.
  9. Verfahren nach Anspruch 8, das des Weiteren Folgendes umfasst: Detektieren (S80; S80') eines Defekts des Speichers (300; 300a; 300b) auf Basis der Eingangsdaten (D_IN) und der Ausgangsdaten (D_OUT).
  10. Verfahren nach Anspruch 8, wobei das Generieren der Ausgangsdaten Detektieren durch die Fehlerkorrekturcode-Engine (100; 100a; 100b) umfasst, ob eine Korrektur von Fehlerbits in den Lesedaten (D_RD) erfolgreich ist, und Detektieren eines Defekts des Speichers (300; 300a; 300b) auf Basis davon umfasst, ob die Korrektur erfolgreich ist oder nicht.
DE102018122826.0A 2017-09-21 2018-09-18 Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür Pending DE102018122826A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20170121878 2017-09-21
KR10-2017-0121878 2017-09-21
KR10-2018-0020017 2018-02-20
KR1020180020017A KR102661931B1 (ko) 2017-09-21 2018-02-20 오류 정정 코드를 지원하는 장치 및 그것의 테스트 방법

Publications (1)

Publication Number Publication Date
DE102018122826A1 true DE102018122826A1 (de) 2019-03-21

Family

ID=65527092

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018122826.0A Pending DE102018122826A1 (de) 2017-09-21 2018-09-18 Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür

Country Status (3)

Country Link
US (1) US10803971B2 (de)
CN (1) CN109542666A (de)
DE (1) DE102018122826A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10706950B1 (en) * 2018-06-19 2020-07-07 Cadence Design Systems, Inc. Testing for memory error correction code logic
US11182244B2 (en) * 2018-10-16 2021-11-23 Micron Technology, Inc. Error correction management for a memory device
CN110444247A (zh) * 2019-07-31 2019-11-12 至誉科技(武汉)有限公司 存储设备写错误纠错能力的测试装置
CN110459259A (zh) * 2019-07-31 2019-11-15 至誉科技(武汉)有限公司 存储设备写错误纠错能力的测试方法、系统及存储介质
FR3100346B1 (fr) * 2019-09-04 2022-07-15 St Microelectronics Rousset Détection d'erreurs
US11144203B2 (en) * 2019-12-03 2021-10-12 Micron Technology, Inc. Selectively operable memory device
US11468962B2 (en) 2021-03-03 2022-10-11 Micron Technology, Inc. Performing memory testing using error correction code values
US20230335210A1 (en) * 2022-04-14 2023-10-19 Nxp B.V. Memory-read verification
US11940872B2 (en) 2022-04-21 2024-03-26 Analog Devices International Unlimited Company Error correction code validation
CN117112287A (zh) * 2023-09-07 2023-11-24 上海合芯数字科技有限公司 备用校验纠错方法、装置、服务器及存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030527A (ja) 2002-06-28 2004-01-29 Fujitsu Ltd 記憶制御装置、および記憶制御方法
US7069494B2 (en) 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
JP3940713B2 (ja) * 2003-09-01 2007-07-04 株式会社東芝 半導体装置
US7376887B2 (en) * 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
JP4041076B2 (ja) 2004-02-27 2008-01-30 株式会社東芝 データ記憶システム
JP2005310313A (ja) 2004-04-23 2005-11-04 Toshiba Corp 半導体記憶装置
KR100856129B1 (ko) * 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
US8255758B2 (en) 2008-01-21 2012-08-28 Apple Inc. Decoding of error correction code using partial bit inversion
US8301972B2 (en) 2009-05-27 2012-10-30 Seagate Technology Llc Apparatus for correcting single bit insertion or deletion in a data payload with a checksum corrector
US8612828B2 (en) 2009-12-22 2013-12-17 Intel Corporation Error correction mechanisms for 8-bit memory devices
US8914687B2 (en) * 2011-04-15 2014-12-16 Advanced Micro Devices, Inc. Providing test coverage of integrated ECC logic en embedded memory
US8509003B2 (en) 2011-09-20 2013-08-13 Taiwan Semiconductor Manufacturing Co., Ltd. Read architecture for MRAM
US8576617B2 (en) 2011-11-10 2013-11-05 Qualcomm Incorporated Circuit and method for generating a reference level for a magnetic random access memory element
US8693273B2 (en) 2012-01-06 2014-04-08 Headway Technologies, Inc. Reference averaging for MRAM sense amplifiers
US9444496B2 (en) 2012-04-04 2016-09-13 University Of Southern California Correctable parity protected memory
US8644060B2 (en) 2012-06-07 2014-02-04 Avalanche Technology, Inc. Method of sensing data of a magnetic random access memories (MRAM)
US9043674B2 (en) 2012-12-26 2015-05-26 Intel Corporation Error detection and correction apparatus and method
DE102013211077B4 (de) * 2013-06-13 2015-09-24 Infineon Technologies Ag Verfahren zum Testen eines Speichers und Speichersystem
KR102354350B1 (ko) 2015-05-18 2022-01-21 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
KR102324769B1 (ko) * 2015-06-29 2021-11-10 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US9817714B2 (en) * 2015-08-28 2017-11-14 Intel Corporation Memory device on-die error checking and correcting code
US9910090B2 (en) * 2016-03-08 2018-03-06 International Business Machines Corporation Bypassing an encoded latch on a chip during a test-pattern scan
US9923579B2 (en) * 2016-03-08 2018-03-20 International Business Machines Corporation Clock path technique for using on-chip circuitry to generate a correct encode pattern to test the on-chip circuitry
US10191799B2 (en) * 2016-12-29 2019-01-29 Sandisk Technologies Llc BER model evaluation
US10572343B2 (en) * 2017-01-19 2020-02-25 Intel Corporation Targeted aliasing single error correction (SEC) code
US10389379B2 (en) * 2017-05-12 2019-08-20 Qualcomm Incorporated Error correcting code testing
EP3454216B1 (de) * 2017-09-08 2020-11-18 Nxp B.V. Verfahren zum schutz vor unberechtigtem datenzugriff aus einem speicher

Also Published As

Publication number Publication date
CN109542666A (zh) 2019-03-29
US20190088349A1 (en) 2019-03-21
US10803971B2 (en) 2020-10-13

Similar Documents

Publication Publication Date Title
DE102018122826A1 (de) Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE60217591T2 (de) Speicher-Steuerung für Mehrpegel-Speicherzelle
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102008003113A1 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102007058828A1 (de) Speicherbauelement und Fehlerkorrekturverfahren
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE102013103391A1 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE112014001305T5 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE102019123510A1 (de) Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst
DE102019102573A1 (de) Speichercontroller, speichersystem und verfahren zum verwenden einer speichervorrichtung
DE102020106203A1 (de) Vorrichtung für integrierte Speicher-Selbsttests mit Fehlererkennungs- und -Korrekturcodebekanntheit
DE112015003569B4 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern
DE112020003489T5 (de) Speichersteuerung und verfahren zum decodieren von speichervorrichtungen mit vorzeitigem hartdecodierabbruch

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)