-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft ein Verfahren zum Einstellen von Betriebsparametern einer integrierten Schaltung. Insbesondere bezieht sich die vorliegende Offenbarung auf ein Verfahren zum Selbsttrimmen von Betriebsparametern und internem Timing einer integrierten Speichervorrichtung.
-
Die vorliegende Offenbarung bezieht sich ferner auf eine nichtflüchtige Speichervorrichtung mit Selbsttrimmfähigkeiten in Anwendungen mit einem breiten Temperatur- und einem breiten Spannungsbereich.
-
STAND DER TECHNIK
-
Eines der Hauptprobleme beim Betrieb integrierter Schaltungen besteht darin, die Funktionalität bei allen Prozessspreizungen, Versorgungs- und Temperaturschwankungen zu gewährleisten.
-
Zum Beispiel hat jeder synchrone Eingang, der an die integrierte Schaltung adressiert ist, eine geeignete Einrichtungs- und Haltezeitspezifikation in Bezug auf den Takteingang.
-
Die Setup-Zeit S ist die Zeitspanne (oder ein Zeitintervall), die an einem synchronen Eingang einer einfachen Flip-Flop-Schaltung D empfangene Daten stabil bleiben müssen, bevor eine aktive Flanke eines Taktsignals ankommt, damit die Schaltung solche Daten gut einfängt. In ähnlicher Weise ist die Haltezeit H die Zeitspanne (oder ein Zeitintervall), die an einem synchronen Eingang einer einfachen Flip-Flop-Schaltung D empfangene Daten nach dem Eintreffen der aktiven Flanke eines Taktsignals stabil bleiben müssen.
-
Die Setup & Hold-Parameter S und H müssen entsprechend eingestellt werden, damit die integrierte Schaltung richtig funktioniert.
-
Setup und Hold sind jedoch entgegengesetzte Parameter im Sinne, die unten besser erklärt werden; die hohe Temperatur macht normalerweise beide Intervalle langsamer, während die niedrige Temperatur sie schneller macht; als Konsequenz verschieben sich die beiden Parameter mit der Zeit entsprechend.
-
Ein weiterer Parameter ist die Summe der beiden Intervalle S+H = MPW, die vor und nach dem Wechsel des Takteingangs stabil bleiben sollen. Dieses Intervall MPW hat einen minimalen Wert, der für eine ordnungsgemäße Funktion zulässig ist, aber dieser Wert kann sogar länger sein, da das Signal stabil bleiben kann, während es auf die Abtastung und eine anschließende Änderung wartet.
-
In jedem Fall kann eine Verletzung des Setup-and-Hold-Timings nicht nur eine einzelne Fehlersituation, sondern sogar schwere Fehlfunktionen wie die Metastabilität der Flip-Flop-Ausgänge verursachen, die unbestimmt sind und nicht wiederhergestellt werden können, es sei denn, es wird ein Reset oder ein Aus- und Einschalten erzwungen.
-
Die integrierten Schaltkreise werden unter Berücksichtigung der obigen Probleme entworfen und simuliert, jedoch ist es für einige Anwendungen nicht möglich, die Leistung und die Funktionalität in den zugewiesenen Bereichen zu garantieren, beispielsweise bei großen Schwankungen der Versorgungs-, Temperatur- und Prozessbereiche.
-
Um zu versuchen, eine mögliche Prozessstreuung zu überwinden, werden im Werk einige Tests und Beschnitte durchgeführt; diese übliche Praxis ist jedoch zeitaufwendig, da sie an jedem einzelnen IC durchgeführt werden muss; mit anderen Worten, Würfel je Würfel.
-
Figurenliste
-
- 1 ist eine schematische Ansicht einer einfachen bistabilen Schaltung, die einen Dateneingang und einen Takteingang gemäß einem bekannten Schema empfängt;
- 1A ist ein Vergleichsdiagramm, das die Datenaufbau- und Haltezeiträume im Vergleich zu einem bekannten Taktsignal zeigt;
- 2 ist eine schematische und perspektivische Ansicht einer System-on-Chip-Vorrichtung mit einer zugehörigen Speichervorrichtung gemäß der vorliegenden Offenbarung ist;
- 3 ist ein Blockdiagramm eines Beispiels eines Logikschaltungsabschnitts, der in eine integrierte Schaltung, dh eine Speichervorrichtung, gemäß einer Ausführungsform der vorliegenden Offenbarung eingebaut ist
- 4 ist eine schematische Ansicht eines Speicherblocks, der durch eine Vielzahl von Zeilen eines Speicherarrays gemäß einer Ausführungsform der vorliegenden Offenbarung gebildet wird;
- 5 ist eine schematische Ansicht eines Abschnitts einer integrierten Speichervorrichtung, die gemäß einer Ausführungsform der vorliegenden Offenbarung realisiert wird;
- 6 ist ein Diagramm, das die Auswahlpunkte einer Trimmprozedur zeigt, die von einem Optimierungsalgorithmus durchgeführt wird, der gemäß der vorliegenden Offenbarung verwendet wird;
- 7 zeigt schematisch ein Beispiel eines Ausgangspuffers, der in die Speichervorrichtung der vorliegenden Offenbarung eingebaut ist und mehrere Drei-Zustands-Treiber enthält;
- 8 ist eine schematische Ansicht eines Modells einer Übertragung auf einem verdrahteten BUS, die einen Ausgangspuffer der Speichervorrichtung und eine andere Vorrichtung in Kommunikation mit dem Speicher umfasst;
- 9 und 10 sind schematische Ansichten von Diagrammen, die die Spannung über der Zeit von zwei gegenüberliegenden Knoten A und B an der gegenüberliegenden Seite des verdrahteten BUS von 8 angeben; diese Diagramme sind die Wellenform auf der Ausgangspufferseite und auf der Empfängerseite sowie das entsprechende und zugehörige Augendiagramm, ohne und mit Rauschen;
- 11 und 12 zeigen eine reelle bzw. eine schematische Diagrammdarstellung eines Augendiagramms in Bezug auf die Ausgabepuffer der Speichervorrichtung der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
In der vorangehenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen verwiesen, die einen Teil des Dokuments bilden und in denen zur Veranschaulichung spezifische Beispiele dargestellt sind. In den Zeichnungen beschreiben gleiche Bezugszeichen in den verschiedenen Ansichten im Wesentlichen ähnliche Komponenten. Es können auch Ausführungesformen offenbart werden, und es können strukturelle, logische und/oder elektrische Änderungen vorgenommen werden, ohne den Rahmen der vorliegenden Offenbarung zu sprengen. Die folgende detaillierte Beschreibung ist deshalb nicht in einschränkendem Sinn aufzufassen.
-
Die vorliegende Offenbarung bezieht sich auf ein Verfahren zum Einstellen von Betriebsparametern einer integrierten Schaltung und insbesondere zum Selbsttrimmen von Betriebsparametern und internem Timing einer Speichervorrichtung sowie zum Unterstützen des Speicherhosts bei einer Feineinstellung des Bustreibers durch Optimieren der Anpassung von Impedanz und Timing.
-
Die Speichervorrichtung der vorliegenden Offenbarung ist eine nichtflüchtige Speichervorrichtung oder Komponente, die in 2 mit der Nummer 200 bzw. in 5 mit der Nummer 500 gekennzeichnet ist. Eine solche Speichervorrichtung 200 wurde als unabhängiger Chip mit einem spezifischen Lithographieprozess realisiert und kann über einen Kommunikationskanal an eine Hostvorrichtung oder an ein System-on-Chip gekoppelt werden. Bei der HostVorrichtung kann es sich um ein System-on-Chip mit einer eingebetteten Speicherkomponente oder um eine komplexere elektronische Vorrichtung handeln, die ein mit einer Speichervorrichtung gekoppeltes System enthält, wie aus der Beschreibung anderer Ausführungsformen der vorliegenden Offenlegung hervorgeht, die unter Bezugnahme auf andere Figuren erfolgt. In jedem Fall werden das System-on-Chip und die zugehörige Speichervorrichtung auf einem jeweiligen Chip realisiert, der durch einen anderen Lithographieprozess erhalten wurde.
-
Als Alternative kann das System ein externer Controller sein, der mit dem System-on-Chip kommuniziert, aber für die Zwecke der vorliegenden Offenbarung wird auf das Hostgerät oder das SoC als Entitäten in Kommunikation mit der Speicherkomponente verwiesen. Das System 10 kann beispielsweise eines von mehreren elektronischen Geräten sein, die Speicher für die vorübergehende oder dauerhafte Speicherung von Informationen verwenden können. Ein Host-Gerät kann beispielsweise ein Computergerät, ein Mobiltelefon, ein Tablet oder die Zentraleinheit eines autonomen Fahrzeugs sein.
-
Nichtflüchtige Speicher können dauerhafte Daten liefern, indem sie gespeicherte Daten beibehalten, wenn sie nicht mit Strom versorgt werden, und können NAND-Flash-Speicher, NOR-Flash-Speicher, Festwertspeicher (ROM), elektrisch löschbare programmierbare oder trimmbare ROM (EEPROM), löschbare programmierbare oder trimmbare ROM (EPROM) umfassen, und widerstandsvariable Speicher wie Phasenwechsel-Direktzugriffsspeicher (PCRAM), selbstselektierende Speicher auf Chalkogenidbasis, resistiver Direktzugriffsspeicher (RRAM), 3D-XPunkt-Speicher (3DXP) und magnetoresistiver Direktzugriffsspeicher (MRAM), um nur einige zu nennen.
-
Ein Flash-Speicher ist eine Art nichtflüchtiger Speicher, der gespeicherte Daten speichert und sich durch eine sehr schnelle Zugriffszeit auszeichnet. Außerdem kann er blockweise und nicht byteweise gelöscht werden. Jeder löschbare Speicherblock umfasst eine Vielzahl von nichtflüchtigen Speicherzellen, die in einer Matrix von Zeilen und Spalten angeordnet sind. Jede Zelle ist mit einer Zugangsleitung und/oder einer Datenleitung gekoppelt. Die Zellen werden programmiert und gelöscht, indem die Spannungen an den Zugriffs- und Datenleitungen manipuliert werden.
-
Wie in 2 gezeigt, wird gemäß der vorliegenden Offenbarung die Speichervorrichtung 200 aus der SoC-Struktur des Standes der Technik entfernt, so dass der entsprechende Halbleiterbereich für andere Logikschaltungen verwendet werden kann und eine strukturell unabhängige Speicherkomponente 200 unterstützt wird, die die SoC-Struktur 210 teilweise überlappt. Die Speicherkomponente 200 weist abhängig von der Größe des darin enthaltenen Speicherarrays eine variable Größe auf, die gemäß den Bedürfnissen des Benutzers beispielsweise in einem Wertebereich von 128 Mbit bis 512 Mbit oder mehr hergestellt wird.
-
Das Entfernen des eingebetteten Speicherabschnitts des Standes der Technik hat ferner den großen Vorteil, Platz freizugeben, wodurch ein Halbleiterbereich 220 der SoC-Struktur 210 erhalten wird, der die Integration zusätzlicher Benutzerfunktionen und/oder die Reduzierung der gesamten Chipfläche ermöglicht.
-
Das Ergebnis dieser Lösung ist die neue SoC-Struktur von 2, die eng mit der neuen strukturell unabhängigen Speicherkomponente 200 verbunden ist, die mit der SoC-Struktur 210 gekoppelt ist, beispielsweise durch eine Vielzahl von Kopplungselementen 230, wie Säulen, sowie durch Bumping Balls, Flip-Chip-Technologie, drahtlose Verbindungen (Spulen) und dergleichen. In einer bevorzugten Ausführungsform handelt es sich bei den Kopplungselementen um Säulen, die in dem Halbleiterbereich 220 angeordnet sind, der zuvor für einen eingebetteten Speicherteil vorgesehen war.
-
In einer Ausführungsform der vorliegenden Offenbarung umfasst die Speicherkomponente 210 für die SoC-Struktur 200 mindestens einen Speicherabschnitt und einen Logikschaltungsabschnitt zum Interagieren mit dem Speicherabschnitt und mit der SoC-Struktur 210 , wobei die Speicherkomponente 200 strukturell unabhängig ist Halbleiterbauelement, das mit der System-on-Chip-Struktur 210 gekoppelt ist und diese teilweise überlappt.
-
Eine Logikschaltung 240 ist in die SoC-Struktur 210 integriert, um mit dem Logikschaltungsteil der Speicherkomponente 200 zusammenzuarbeiten.
-
Die Kopplung zwischen der SoC-Struktur 210 und der Speicherkomponente 200 erfolgt durch die Verbindung einer Vielzahl von entsprechenden Pads oder Stiftanschlüssen, die einander in einem Schaltungslayout zugewandt sind, das die Ausrichtung der Pads beibehält, selbst wenn die Größe der Speicherkomponente 200 geändert wird.
-
In einer Ausführungsform der vorliegenden Offenbarung wurde die Anordnung der Pads der Speicherkomponente 200 auf einer Oberfläche der Speicherkomponente 200 realisiert. Genauer gesagt sind die Pads über dem Array so angeordnet, dass, wenn die Speicherkomponente 200 umgedreht wird, ihre Pads den entsprechenden Pads der SoC-Struktur 210 zugewandt sind. Der Halbleiterbereich 220, der bei bekannten System-on-Chip-Bauelementen 210 von dem eingebetteten nichtflüchtigen Speicherteil belegt wurde, ist für die Unterbringung der Verbindungspads vorgesehen, die den Pads der Speicherkomponente 200 entsprechen.
-
Auch eine größere Speicherkomponente kann mit den Pads der SoC-Struktur 210 abgestützt und verbunden werden, wobei die Position und Versetzung der Verbindungspads beibehalten wird.
-
Im Rahmen der vorliegenden Offenbarung ist die Oberseite der SoC-Struktur 210 mit der Rückseite der Speicherkomponente 200 verbunden, wobei die Pads der SoC-Struktur 210 auf die entsprechenden Pads der umgekehrten Speicherkomponente ausgerichtet sind. Alternativ kann die strukturell unabhängige Speicherkomponente 200 auch drahtlos mit der SoC-Struktur 210 verbunden werden. Bei einer drahtlosen Kopplung könnte ein Stapel von Speicherkomponenten gleicher Größe überlagert werden, so dass eine Stapelstruktur entsteht, bei der jede unabhängige Komponente von der Logikschaltung der SoC-Struktur 210 durch eine entsprechende Identifikationsadresse adressiert wird.
-
Der Halbleiterbereich 220, der zuvor von dem eingebetteten Speicherteil belegt war, wird nun zur Implementierung zusätzlicher Funktionen und zur Vorbereitung des Halbleiterbauelements für die Logic-Over-Pads-Technologie genutzt. Der Ausdruck „Logik über Pads“ bedeutet, dass eine logische Schaltung vorgesehen ist, die einige Verbindungspads überlappt, die sich im Inneren einer ersten oder Basisschicht befinden, die durch ein vollständiges Halbleiterprodukt, d. h. die SoC-Struktur 210, dargestellt wird.
-
Die Speicherkomponente 200 stellt somit eine obere Schicht dar, die an die SoC-Basisstruktur 210 gekoppelt und mit ihr verbunden ist. Die Speicherkomponente 200 überlappt teilweise die Oberfläche der SoC-Struktur, die zumindest den Halbleiterbereich 220 in der bekannten Lösung abdeckt, der von einem eingebetteten Speicherabschnitt belegt ist. Das Speicherbauteil 200 hat jedoch eine größere Kapazität und kann einen größeren Halbleiterbereich abdecken als der Halbleiterbereich 220.
-
In dieser Hinsicht ist die Größe der überlappenden Speicherkomponente 200 größer als die Größe des überlappten Halbleiterbereichs 220, der den Verbindungen mit einer solchen überdeckenden Speicherkomponente 200 gewidmet ist. Mit anderen Worten ist die Fläche der überlappenden Speicherkomponente 200 größer als die Halbleiterfläche 220 der SoC-Struktur 210 , die den Verbindungspads für die Speicherkomponente 200 gewidmet ist.
-
Darüber hinaus kann für ein besseres Funktionieren der SoC-Struktur 210 sogar ein logischer Schaltungsteil, der normalerweise in den SoC integriert ist und eine Finite-State-Maschine oder eine RISC-Architektur enthält, entfernt und in Verbindung mit der Speicherkomponente 200 neu organisiert werden.
-
Daher ist gemäß der vorliegenden Offenlegung eine Modify Finite State Machine oder RISC 240 in die Speicherkomponente 200 migriert, um die Schreib- und Löschphasen zu unterstützen, die auf der größeren Speicherkomponente 200 durchgeführt werden.
-
Die Abtrennung und Optimierung des Logikschaltungsteils ermöglicht es außerdem, die Funktionalität der gesamten SoC-Struktur 210 zu verbessern und so eine unabhängige Halbleiterspeicherkomponente 200 zu erhalten, die mit der SoC-Struktur 210 verbunden ist. Diese unabhängige Halbleiterspeicherkomponente 200 umfasst daher mindestens den Speicherteil (z. B. einen nichtflüchtigen Speicherteil) und die zugehörige modifizierte endliche Zustandsmaschine 240, die beide in ein Halbleiterprodukt integriert sind, das mit der SoC-Struktur 210 verbunden ist. In diesem Fall ist die Speicherlogik in der SoC-Struktur 210 diejenige, die die Speicherschnittstellenkommunikation handhabt.
-
Mit anderen Worten, sowohl der nichtflüchtige Speicherabschnitt als auch der zugehörige Logikschaltungsabschnitt sind in der unabhängigen Halbleiterspeicherkomponente 200 integriert, die mit der SoC-Struktur 210 gekoppelt und verbunden ist.
-
Gemäß Ausführungsformen der vorliegenden Offenbarung ist die Speichervorrichtung 200 ein nichtflüchtiger Flash-Speichertyp, der mindestens die folgenden Komponenten umfasst: eine I/O-Schaltung, einen Mikrosequenzer, der eine Steuerung und JTAG-Logik und Leseverstärker umfasst.
-
Die Flash-Speichervorrichtung 200 umfasst ferner eine Befehlsbenutzerschnittstelle CUI, Spannungs- und Stromreferenzgeneratoren, Ladungspumpen und Decodierungsschaltungen. Der Flash-Speicher enthält auch einen internen Mikrocontroller für die Ausführung des Lösch- und Programmalgorithmus.
-
Es sollte beachtet werden, dass beim Zusammenkoppeln zweier integrierter Halbleiterbauelemente einige Probleme bei der Handhabung der E/A-Signale zwischen den beiden Bauelementen auftreten können. Wenn ein Controller in der Lage ist, mit einem Taktfrequenzsignal zu arbeiten, das den Wert von mindestens einem GHz erreicht (manchmal auch als Hochfrequenz bezeichnet), wurden andere Schaltungsteile, wie z niedrigere Frequenz, zum Beispiel einige hundert MHz (manchmal als niedrige Frequenz bezeichnet).
-
Eine typische Situation dieser Art tritt beispielsweise auf, wenn während des Funktionierens des Systems, dem der Speicher zugeordnet ist, eine Temperaturerhöhung auftritt. Die Speicherkomponente leidet unter einer thermischen Drift und/oder anderen Driften der Stromversorgungs- oder Spannungspegel, die ihre Fähigkeit einschränken, gemäß den im Werk definierten ursprünglichen Einstellwerten zu arbeiten.
-
Eine andere typische Situation ist die Anpassung des Speichergeräts an das Hostgerät (zum Beispiel eine Platine, auf der das Speichergerät montiert ist, oder das SoC, auf dem es gehostet wird). Eine solche Anpassung besteht in der Anpassung der Impedanz zwischen dem Speicherausgangspuffer und dem externen Bus und dem externen Signalversatz. Solche Bedingungen können sich während der Lebensdauer des Geräts ändern, da sich die externe Buslast ändern könnte (ein neues Gerät wird angeschlossen/getrennt, Temperaturschwankungen usw.
-
Um diese Probleme zu lösen, das heißt: Zurücksetzen der Setup- und Hold-Dauer für die interne FSM und Regulieren der Impedanzanpassung plus Signalversatz werden einige Beispiele des erfindungsgemäßen Verfahrens betrachtet. Das Verfahren muss als in einer integrierten Schaltung implementiert betrachtet werden, wie etwa der Speichervorrichtung 200, zum Beispiel einer Speichervorrichtung oder Komponente 200, die mit einem SoC 210 gekoppelt ist.
-
Eine solche integrierte Speichervorrichtung 200 enthält eine Vielzahl elementarer Schaltungsteile wie ein einfaches Flip-Flop, ein Latch oder ein Logikgatter.
-
Es ist bekannt, dass ein einfaches Flip-Flop D, beispielsweise wie die in 1 gezeigte bekannte Schaltung, an Metastabilität leiden kann. Die Datensignale müssen für eine vorbestimmte Zeitdauer vor der ansteigenden Flanke des Taktsignals stabil sein, um einen richtigen Datenfang zu ermöglichen. Eine solche vorgegebene Zeitspanne ist die sogenannte Rüstzeit S.
-
Wie bereits erwähnt, ist die Haltezeit H die Zeitspanne (oder das Zeitintervall), die die an einem synchronen Eingang der einfachen Flip-Flop-Schaltung D empfangenen Daten nach dem Eintreffen der aktiven Flanke eines Taktsignals stabil bleiben müssen.
-
1 zeigt eine schematische Ansicht eines Flip-Flops D10, wobei der Hauptblock ein einfaches Logikgatter darstellt, das einen Dateneingang DATA und einen Takteingang CLK empfängt. Weiterhin ist ein Reset-Eingang Reset vorgesehen, um das Flip-Flop D 10 zurückzusetzen.
-
In dieser Figur ist eine logische Synchronschaltung mit mindestens einem Eingang und einem Ausgang dargestellt. Die Dateneingabe/-ausgabe wird durch ein Taktsignal verwaltet. Eine solche Schaltung könnte ein einfacher Latch oder sogar eine komplexe Finite State Machine sein, aber das Bild ist ein Beispiel für die Einführung des Setup/Hold-Trimmens, das jede synchrone Schaltung benötigt.
-
Natürlich wird der Dateneingang DATA im Symbol der 1 mit mehreren parallel präsentierten digitalen Werten angezeigt. Mit anderen Worten, der Eingangsanschluss DATA ist der Kopfabschluss eines Busses, der von einer digitalen Quelle kommt.
-
Ebenso ist ein Datenausgang OUT mit einer entsprechenden Vielzahl von digitalen Ausgangswerten dargestellt.
-
Es sei darauf hingewiesen, dass die Setup-Zeit S sowohl für das einfache Flip-Flop D 10 als auch für eine komplexere Finite State Machine mit Hunderten von Flip-Flops oder Logikgattern definiert ist.
-
Ein mögliches Neutrimmen der Betriebsparameter wäre sehr wünschenswert, um schwere Fehlfunktionen entweder aufgrund einer möglichen Metastabilität des Flip-Flops oder aufgrund eines kritischen Wettlaufs in internen synchronen Schaltungen zu vermeiden. Höchstwahrscheinlich wird das gültige Fenster zum Erfassen der Daten aufgrund der intrinsischen Änderungen des Prozesses driften, dh der Leitungswiderstand kann sich ändern, die Kapazität kann sich ändern, die Zeitkonstante wird sich entsprechend ändern.
-
Darüber hinaus können andere Betriebsparameter nach einer langen Aktivitätszeit der integrierten Schaltung oder aufgrund einer möglichen Neukonfiguration/Aktualisierung der Platine, auf der der Speicher gehostet wird, mit neuen Komponenten, die die Impedanzen der Busse ändern, ein Trimmen erfordern. Zum Beispiel könnte die Ausgangsimpedanz zum System-on-Chip eine ähnliche Neutrimmung erfordern, indem im Ausgangspuffer einer der verfügbaren Treiber ausgewählt wird, die die Impedanzanpassung und damit die besten Leistungen in Bezug auf Geschwindigkeit und Form der erzeugten Spannungs-/Stromsignale garantieren. Während diese Trimmphase für den Ausgang des untersuchten integrierten Schaltkreises, dh des Speicherbauelements, geeignet ist, konzentriert sich das Trimmen der Setup- und Haltezeitintervalle auf die interne Aktivität des integrierten Schaltkreises.
-
Gemäß einigen Ausführungsformen der vorliegenden Offenbarung wird mindestens ein programmierbares oder trimmbares Verzögerungselement oder eine Schaltung verwendet, wobei das programmierbare oder trimmbare Verzögerungselement oder die Schaltung stromaufwärts zum Takteingang und/oder zum Dateneingang eingefügt wird, um den relativen Abstand zwischen den Dateneingang und die aktive oder vordere Flanke des Taktsignals.
-
Mit anderen Worten, Verwenden von mindestens einem programmierbaren oder trimmbaren Verzögerungselement oder einer Schaltung, die stromaufwärts dem Takteingang und/oder dem Dateneingang eingefügt ist, um den relativen Abstand zwischen dem Dateneingang und der aktiven oder vorderen Flanke des Taktsignals abzustimmen. Diese Verzögerung wird auf den kritischen Leitungen, dh Takt, Daten, Befehlen, FSM usw. hinzugefügt, um alle Signale, die von altersbedingter Drift betroffen sind, neu zu zentrieren.
-
Dieses Trimmen wird durchgeführt, indem der FSM (oder der zu trimmenden Schaltung) eine Sequenz zugeführt wird, die aus einem nichtflüchtigen Bereich des Speicherarrays gelesen wird und dann überprüft, ob die Ausgabe der FSM (oder der Schaltung) mit den erwarteten Werten übereinstimmt.
-
Beim Trimmen werden alle möglichen Verzögerungswerte untersucht, um den größtmöglichen Funktionsumfang bei einer bestimmten Bedingung (d.h. Temperatur) zu erhalten.
-
Darüber hinaus sind auch die Ausgabepuffer der Speichervorrichtung 200 an der Trimmoperation beteiligt, und insbesondere werden diese Puffer wie folgt gehandhabt:
- - eine geeignete Auswahl des Ausgangspuffer-Divers wird durchgeführt, um die Impedanz zwischen dem Speicherpuffer und dem externen Bus so gut wie möglich anzupassen; und
- - Es wird ein geeignetes Trimmen der Datenpfadverzögerungen durchgeführt, um den richtigen Versatz zwischen dem externen Takt und den Signalen des Host-Geräts zu haben.
-
Die obigen zwei Verfahren werden durchgeführt, indem eine spezielle Struktur innerhalb des Ausgabepuffers angenommen wird.
-
In diesem spezielleren Fall erfolgt das Trimmen durch eine Lesephase unter Verwendung eines Standarddatenpfads, der in einer speziellen Dummy-Zeile eines Speicherblocks gespeichert ist. Der externe Controller misst die Qualität des Lesevorgangs anhand eines Augendiagramms und gibt dann dem Gerät eine Rückmeldung über die Lesequalität. Der Vorgang ist abgeschlossen, sobald die beste Einstellung gefunden wurde.
-
Anders gesagt, die Uhr und die Datenleitungen werden neu ausgerichtet und stellen wieder die Betriebsbedingungen her, wenn das Gerät frisch oder fabrikneu war. Gemäß einigen Ausführungsformen wird die Einstellung der programmierbaren Verzögerung geändert, um die Zeitdifferenz zwischen dem Abtasttaktsignal und dem Abtastdatensignal zurückzusetzen.
-
Gemäß einer Ausführungsform der vorliegenden Offenbarung wird ein Verfahren zum Einstellen von Betriebsparametern eines integrierten Schaltkreises offenbart, insbesondere zum Selbsttrimmen eines internen Timings des integrierten Schaltkreises, das zumindest einen Schaltungsabschnitt umfasst, der zumindest einen bekannten Datenstrom auf einem Datenstrom empfängt Eingang und ein Taktsignal an einem Takteingang, wobei das Verfahren umfasst:
-
zeitliches Ausrichten des Taktsignals und/oder des Datenstroms durch Einfügen eines stromaufwärts programmierbaren oder trimmbaren Verzögerungselements oder -schaltkreises vor einem oder beiden der Eingänge.
-
Darüber hinaus umfasst die Phase der zeitlichen Ausrichtung das Festlegen der Betriebsbedingungen, wenn die integrierte Schaltung frisch oder fabrikneu war.
-
Die zeitliche Ausrichtung wird durch Einfügen eines programmierbaren oder trimmbaren Verzögerungselements oder einer Schaltung stromaufwärts des Takteingangs erreicht, um den relativen Abstand zwischen dem Datenstrom und der aktiven oder vorderen Flanke des Taktsignals zu modifizieren.
-
Das programmierbare oder trimmbare Verzögerungselement oder die Schaltung wird in Bezug auf den Takteingang stromaufwärts in den Taktsignalpfad eingefügt.
-
Alternativ kann die zeitliche Ausrichtung durch Einfügen eines programmierbaren oder trimmbaren Verzögerungselements oder -schaltkreises vor dem Dateneingang erreicht werden, um den relativen Abstand zwischen dem Datenstrom und der aktiven oder vorderen Flanke des Taktsignals zu verändern.
-
In diesem letzten Fall wird das programmierbare oder trimmbare Verzögerungselement oder die Schaltung auf dem Datenstrompfad stromaufwärts bezüglich des Dateneingangs eingefügt. Das obige Verfahren kann zumindest ein erstes Mal im Werk bei der ersten Verwendung des Geräts durchgeführt werden, und dies kann unter Verwendung einer Prüfmaschine erfolgen. Die gefundenen Werte werden zur zukünftigen Verwendung in einem nichtflüchtigen Register gespeichert.
-
In noch einer anderen Ausführungsform wird die Phase der zeitlichen Ausrichtung des Taktsignals und/oder des Datenstroms durch programmierbare oder trimmbare Verzögerungen stromaufwärts sowohl des Dateneingangs als auch des Takteingangs erhalten.
-
Eine andere Alternative im Werk ist es, alle Verzögerungen mit der Angabe, die vom Designteam kommen, einzustellen und der Feinabstimmung des Hosts zu überlassen.
-
Alternativ erfolgt die Setzphase automatisch, beispielsweise beim Reset des integrierten Schaltkreises.
-
Alternativ wird die obige Prozedur auf Anfrage des Host-Geräts durchgeführt, also gemäß einer Anfrage, die von dem System-on-Chip spezifiziert wird, dem der integrierte Schaltkreis, d.h. das Speichergerät, zugeordnet ist.
-
Als weitere Alternative wird die oben beschriebene Prozedur nach Empfang eines vom Host-Gerät erzeugten Warnsignals aktiviert, beispielsweise nachdem eine Multifunktions- oder Lesefehlermeldung des Speichergeräts erkannt wurde oder wenn das Host-Gerät eine große Änderung des Betriebszustands erkennt des Bauteils zum Beispiel eine Temperaturerhöhung/-erniedrigung.
-
Als Ausgangspunkt zum Aktivieren der Nachtrimmphase der Betriebsparameter des integrierten Schaltkreises können andere alternative Warnmeldungen definiert werden.
-
Falls es beispielsweise erforderlich ist, die Ausgangsimpedanz und/oder die Pufferverzögerung zu trimmen, wird ein spezifisches Ereignis bereitgestellt, das die Anforderung zum erneuten Trimmen der Betriebsparameter erzeugt. Zum Beispiel eine Laständerung an den I/O-Pins aufgrund einer Platinen-Rekonfiguration durch den Host, Temperaturänderungen und andere mögliche Änderungen der Betriebsbedingungen legen nahe, den Puffertreiber (zum Beispiel den ausgewählten unter mehreren verfügbaren) und die Verzögerung im Datenpfad zu trimmen, da der richtige Versatz zwischen externem Signal und Takt erforderlich ist.
-
In einer Ausführungsform der vorliegenden Offenbarung kann die Setup-Zeit oder die Haltezeit durch Ändern des relativen Abstands zwischen den vom Dateneingangsanschluss empfangenen Daten und der aktiven Taktflanke durch Einfügen eines trimmbaren Verzögerungselements oder einer trimmbaren Verzögerungsschaltung, wie in 3 gezeigt, abgestimmt werden Die Figur zeigt einen schematischen generischen Logikschaltungsabschnitt 150 mit mindestens einem Flip-Flop 10 oder einem Zwischenspeicher oder sogar einem komplexen FSM mit mindestens einem Flip-Flop, der an seinen Eingängen einen Datenstrom und ein Taktsignal empfängt.
-
Normalerweise wird die Verzögerung in den CLK-Pfad eingefügt, aber in einigen kritischen Situationen wird auch der Datenpfad verwendet, insbesondere wenn der Eingangsbus aus Signalen besteht, die von sehr unterschiedlichen Quellen stammen.
-
Beispielsweise wird in einem Beispiel eine erste Verzögerung in einen ersten Datenstrom eingefügt, während eine zweite Verzögerung in einen zweiten Datenstrom eingefügt wird; die jeweiligen Ausgänge jedes Verzögerungsblocks werden summiert, um an den Dateneingang der zu trimmenden Komponente angelegt zu werden.
-
Jeder Verzögerungsblock ist durch einen Konfigurationsbefehl programmierbar oder trimmbar.
-
Gemäß einer Ausführungsform der vorliegenden Offenbarung, die beispielsweise unter Bezugnahme auf 3 offenbart ist, wird eine Verzögerungskette 190 in den Taktsignalpfad stromaufwärts bezüglich des Takteingangs CLK eingefügt.
-
Diese Verzögerungskette ist durch ein Konfigurationssignal CLK Delay config programmierbar oder trimmbar.
-
Darüber hinaus wird in Bezug auf die Dateneingabe DATA mindestens eine weitere Verzögerungskette 170 auf dem Datenpfad stromaufwärts eingefügt.
-
Genauer gesagt wird eine erste Verzögerungskette 170 zwischen einer ersten digitalen Datenquelle und dem Dateneingang DATA eingefügt, zum Beispiel für eine erste Gruppe von acht Bit [0: 7], während eine zweite Verzögerungskette 180 zwischen einer zweiten digitalen Datenquelle eingefügt wird und der Dateneingang DATA, zum Beispiel für eine zweite Gruppe von acht Bit [7: 15].
-
Die jeweiligen Ausgänge des ersten und zweiten Datenstroms werden in einem einzigen Dateneingang für den digitalen DATA-Anschluss des Flip-Flops oder Latch 10 summiert.
-
Jede der Verzögerungsketten ist durch ein entsprechendes Konfigurationssignal programmierbar oder trimmbar: Data Delay config #1 und Data Delay config #2.
-
In einer Ausführungsform der vorliegenden Offenbarung ist das Speicherarray als eine Sammlung von Unterarrays 120 (in den 4 und 5 gezeigt) aufgebaut. Auf diese Weise wird mit kleineren Sektoren im Vergleich zu bekannten Lösungen die Zugriffszeit erheblich reduziert und der gesamte Durchsatz des Speicherbauelements verbessert.
-
Jedes Unterarray 120 ist innerhalb der Speichervorrichtung 200 unabhängig adressierbar. Jedes Unterarray 120 enthält mehrere Speicherblöcke 160, wie in 4 dargestellt.
-
Durch die Verwendung kleinerer Blöcke oder Sektoren 160 wird die Zugriffszeit im Vergleich zu bekannten Lösungen erheblich verkürzt und der Gesamtdurchsatz der Speicherkomponente verbessert. Die Reduzierung der anfänglichen Latenzzeit erfolgt auf Blockebene, da die Zeilen- und Spaltenleitungen, die mit dem Lesepfad verbundene Latenz und die externe Kommunikation optimiert wurden.
-
In den hier offenbarten Ausführungsformen ist das Speicherarray mit einer Anzahl von Unterarrays 120 strukturiert, die der Anzahl der Kerne des zugehörigen SoC und damit der Anzahl der entsprechenden Kommunikationskanäle entspricht. So sind beispielsweise mindestens vier Speicher-Unterarrays 120 vorgesehen, eines für jeden Kommunikationskanal mit einem entsprechenden Kern des SoC.
-
Das Host-Gerät oder das System-on-Chip enthält normalerweise mehr als einen Kern, und jeder Kern ist mit einem entsprechenden Bus oder Kanal zum Empfang und zur Übertragung von Daten an das Speichergerät 200 verbunden.
-
In der vorliegenden Implementierung hat daher jedes Unterarray 120 Zugang zu einem entsprechenden Kanal, um mit einem entsprechenden Kern des System-on-Chip zu kommunizieren. Das Ergebnis der Speicherblöcke wird direkt auf den SoC übertragen, ohne Hochleistungspuffer zu verwenden und den Pfad zu optimieren.
-
Der Vorteil dieser Architektur besteht darin, dass sie sehr skalierbar ist, wobei sich das Erweitern und/oder Reduzieren der Dichte des Endgeräts nur in der Spiegelung eines Unterarrays und der Erzeugung der Verbindung oder der Erhöhung der Anzahl von Blöcken jedes Unterarrays, d.h. der verfügbaren Dichte pro Kern niederschlägt.
-
Jedes Unterarray 120 ist innerhalb der Speichervorrichtung 200 unabhängig adressierbar. Darüber hinaus ist jedes Speicherarray mit mindestens vier Speicherunterarrays 120 strukturiert. Dies ist der Formfaktor für dieses Gerät, kann aber in anderen Technologien und/oder Anwendungen anders sein. Wie gesagt, trägt es zu der geringen anfänglichen Latenz bei und entspricht den letzten Wörtern, die im SoC in dieser speziellen Anwendung verarbeitet werden
-
In einer Ausführungsform der vorliegenden Offenlegung wird der Ausgang eines Unterarrays 120 durch Kombination der folgenden Reihenfolge gebildet: Datenzellen plus Adresszellen plus ECC-Zellen. Die Gesamtmenge von Bits kann in der hierin offenbarten Implementierung 168 Pads pro Kanal umfassen.
-
Darüber hinaus ist, wie in 4 schematisch gezeigt, jedes Speicherunterarray 120 in einem Speicherblock 160 strukturiert. Die Architektur des Speicherblocks 160, der jede Stelle des Speicherarrays umfasst, kann als Superseite definiert werden. In Ausführungsformen der vorliegenden Offenbarung adressiert jeder unabhängig adressierbare Speicherplatz der Blöcke 160 jedes Speicher-Unterarrays 120 eine erweiterte Seite 130, die im Folgenden mit dem Begriff Superseite bezeichnet wird.
-
Anders gesagt, die atomare Seite von 128 Bit, die in jedem Unterarray 120 verwendet wird, um den Kommunikationskanal mit der SoC-Vorrichtung zu füllen, wurde vergrößert, um die gespeicherte Adresse und den ECC zu enthalten.
-
Als nicht einschränkendes Beispiel umfasst diese erweiterte Seite 130 eine Zeichenfolge mit einer ersten Gruppe von mindestens einhundertachtundzwanzig (128) Bit für den E/A-Datenaustausch mit dem SoC-Gerät sowie mindestens einer zweiten Gruppe von vierundzwanzig (24) Adressbits und einer letzten oder dritten Gruppe von mindestens sechzehn (16) ECC-Bits. Die vierundzwanzig (24) Adressbits reichen aus, um bis zu 2 GigaBit des verfügbaren Speicherplatzes zu adressieren.
-
Gemäß der vorliegenden Offenbarung bereiten die Ausgänge der Leseverstärker SA jeweils eine doppelt erweiterte Seite vor, d.h. eine Superseite 130 mit einer Anzahl von Bits, die durch die doppelte Kombination der oben erwähnten drei Gruppen von Datenbits gegeben sind, Adresse Bits und ECC-Bits, entsprechend der Größe des Speicherarrays.
-
In dem spezifischen, aber nicht einschränkenden Beispiel, das hier offengelegt wird, umfasst jede erweiterte Seite 130 mindestens 168 Bit, die sich aus der Kombination der obigen drei Gruppen von 128 + 24 + 16 Daten-, Adress- und ECC-Bits ergeben, und jede Superseite wird durch ein Paar erweiterter Seiten gebildet, d.h. eine Gruppe von 168 x 2 Bits.
-
Um ein nicht begrenztes numerisches Beispiel zu geben, umfasst jede Zeile 125 eines Speicherblocks 160 sechzehn erweiterte Seiten. Daher enthält die resultierende Zeile 2688 Bit, die aus der Kombination von sechzehn erweiterten Seiten stammen, die unabhängig adressierbar sind und jede davon 168 Bit enthält, oder, anders gesagt, die Kombination von acht Superseiten.
-
Der kombinierte String aus Datenzellen + Adresszellen + ECC-Zellen ermöglicht die Umsetzung der gesamten Sicherheitsabdeckung des Busses gemäß den Standardanforderungen, da die ECC die gesamte Buskommunikation (Datenzellen + Adresszellen) abdeckt, während das Vorhandensein der Adresszellen die Gewissheit bietet, dass die Daten genau von der adressierten Stelle des Controllers kommen.
-
Daher enthält jede Zeile 125 mindestens sechzehn Seiten, die ein Speicherwort plus die entsprechenden Adressbits und die entsprechenden ECC-Bits umfassen. Offensichtlich kann eine andere Größe ausgewählt worden sein, und der berichtete Wert dient nur der Veranschaulichung eines nicht einschränkenden Beispiels.
-
Der Vollständigkeit halber sollte angemerkt werden, dass gemäß einer Ausführungsform der vorliegenden Offenbarung, die in 4 veranschaulicht ist, jedem Block 160 des Speicherunterarrays 120 eine Dummy-Zeile oder -Zeile 300 zugeordnet ist.
-
Diese Dummy-Zeile 300 befindet sich außerhalb des Adressraums des Speicherarrays und wird zur Optimierung der Trimmparameter verwendet. Diese Dummy-Zeile wird eingefügt, um die Zelldrift zu überwachen und gleichzeitig die optimalen Einstellungen für verschiedene Bedienecken zu speichern.
-
Ein Hauptzweck dieser Dummy-Reihe 300 besteht darin, die Temperatur-, Spannungs- und Prozessvariationen zu verfolgen. Auf diese Weise ist es möglich, Parameter einzurichten, um Lese- und Schreiboperationen innerhalb des Arrays abhängig von den optimalen Einstellungen, die in der Dummy-Reihe gespeichert sind, durchzuführen.
-
Die Dummy-Zeile 300 enthält ein bekanntes Muster für die Speichersteuerung der Speichervorrichtung 200.
-
Tatsächlich kann ein Vergleich zwischen den erwarteten Daten und dem Inhalt der Dummy-Zeile 300 Informationen über die Änderungen liefern, die an den Trimmparametern vorzunehmen sind.
-
Auf diese Weise ist es möglich, den Lesevorgang, der bei unterschiedlichen Temperatur-, Spannungs- oder Prozesswerten stattfindet, zu optimieren.
-
Um diese Möglichkeit zu bieten, werden unterschiedliche Musterwerte von Trimmparametern für jeden unterschiedlichen Temperatur- oder Spannungsgrad in einem programmierbaren oder trimmbaren Register aufgezeichnet. Mit anderen Worten, in einem solchen programmierbaren oder trimmbaren Register werden unterschiedliche Lesespannungswerte aufgezeichnet, um die Lesephase bei unterschiedlichen Temperatur- oder Spannungsbedingungen und durch Ändern der Trimmparameter durchzuführen.
-
Dadurch ist es möglich, ein bekanntes Referenzmuster bei unterschiedlichen Temperatur- oder Spannungswerten zu erfassen und zu vergleichen. Dieses bekannte Referenzmuster wird im internen Speicher des Mikrocontrollers gespeichert. Der Controller kennt die Adressen dieses bekannten Referenzmusters und kann eine Feinabstimmung des gelesenen internen Trimmens durchführen, bis die optimale Ecke gefunden ist. An diesem Punkt verwendet der Controller die Informationen in dieser Zeile oder an einer anderen Stelle, an der der Speicher die „bestmöglichen“ Einstellungen für die Lese- und Schreibphase enthält.
-
Um ein spezifisches Beispiel für ein besseres Verständnis der vorliegenden Offenbarung zu geben, nehmen wir an, in der Dummy-Zeile 300 einen bekannten Wert wie 0x55 in hexadezimaler Form aufzuzeichnen. Dieser Wert ist besonders geeignet, da er die gleiche Anzahl von „0“-Logikwerten und „1‟-Logikwerten umfasst.
-
Da dieser Wert a priori bekannt ist, führt das System einige Lesezyklen durch, die die Trimmparameter ändern, bis der Wert richtig gelesen wird. Der geänderte Trimmparameter des korrekten Messwerts entspricht einem eingestellten Temperaturwert oder einem eingestellten Spannungswert, der im programmierbaren oder trimmbaren Register aufgezeichnet ist.
-
Nur wenn die gelesenen getrimmten Parameter perfekt dem korrekten Lesen des bekannten Wertes entsprechen, kann die Lesephase der anderen Abschnitte oder Sektoren des Unterarrays 120 durchgeführt werden.
-
Anders gesagt ist die Verwendung einer bekannten Datenkette, die in der speziellen Dummy-Zeile 300 eines Array-Blocks 120 gespeichert ist, nützlich, um schnell einen aktuellen Messwert mit einer Referenz-Lesephase zu vergleichen.
-
Es besteht keine wirkliche Notwendigkeit, den obigen bekannten Wert unter vorbestimmten Betriebsbedingungen zu speichern, da das Muster dem internen Controller und auch seine Adresse bekannt sind. Daher kann der Controller einen Durchlauf des Trimmparameters durchführen, bis dieses Muster mit dem bestmöglichen Spielraum gelesen wird. An diesem Punkt wird die bestmögliche Ecke gefunden und der interne Controller verwendet diese Einstellungen für die anderen Operationen.
-
Der Controller benötigt nur dann eine zusätzliche Prüfung, wenn einige Daten, die mit der möglichen optimalen Trimmung gelesen wurden, einen hohen ECC aufweisen. Dieses Ereignis kann anzeigen, dass sich die Betriebsbedingungen geändert haben und eine Neutrimmphase erforderlich ist.
-
Mit Kenntnis dieser bekannten Zeichenkette ist es möglich, ein Kalibriermuster für die Setup- und Haltezeitintervalle sowie für andere periodisch zu trimmende Parameter einzustellen.
-
Die in der Dummy-Zeile 300 gespeicherten speziellen Informationen werden während einer Kalibrierungsphase gelesen und mit sehr entspanntem Timing gelesen, so dass sie nicht von möglichen Problemen bei der Erkennung der Setup- und Haltezeitintervalle beeinflusst werden.
-
Bei einem bestimmten Ereignis, dh Temperatur, Referenzspannung (Vdd) ändert sich oder auf Benutzeranforderung wird das in der Dummy-Reihe 300 gespeicherte bekannte Muster gelesen und der interne Kalibrierungsalgorithmus beginnt, die Konfiguration zu trimmen, um die beste Leistung zu erzielen und jegliche zu vermeiden Metastabilität.
-
Optional kann die integrierte Schaltung die Fähigkeit haben, in dem oben erwähnten programmierbaren oder trimmbaren Register, beispielsweise einer Nachschlagetabelle, die bei jedem Trimmen erhaltenen Parameter zu speichern, um sie bei künftigen Gelegenheiten wiederverwenden zu können, wenn die gleichen oder ähnliche Bedingungen eintreten.
-
So kann der Controller der integrierten Speichervorrichtung prüfen, ob bereits eine ähnliche Umgebungssituation aufgetreten ist, bevor eine neue Trimmung berechnet wird. Wenn eine vorherige Situation durch das positive Ergebnis eines Vergleichs zwischen den aus dem programmierbaren oder trimmbaren Register abgerufenen Daten und den in der Referenz-Dummy-Zeile 300 gespeicherten Daten erkannt wird, kann diese Anzeige als Ausgangspunkt für die Suche nach einer neuen Feintrimmung verwendet werden.
-
Alternativ können die abgerufenen Informationen per se für eine nachfolgende Trimmphase verwendet werden, da keine Rechenzeit zur Verfügung steht, da dringender Betrieb läuft.
-
In jedem Fall ermöglicht das Erkennen der Notwendigkeit eines Nachtrimmvorgangs eine Beschleunigung und Optimierung des Abstimmungsprozesses.
-
Unter genauerer Bezugnahme auf das Beispiel von 5 wurde ein Trimmerblock 155 innerhalb der Speichervorrichtung 200 als Kern der Trimmmethodik bereitgestellt.
-
Dieser Block 155 empfängt an seinem Eingang mindestens einen für die Betriebstemperatur repräsentativen Wert sowie Informationen über den Referenzspannungspegel Vdd. Diese Signale können von der Außenwelt kommen, also von außerhalb des System-on-Chip oder eines externen Geräts.
-
Außerdem kann ein Eingang eine externe Kalibrieranforderung sein.
-
Der Trimmerblock 155 ist auch so aufgebaut, dass er intern sowohl die Innentemperatur als auch die Vdd-Information mit Innendetektoren berechnet.
-
Die digitale Ausgabe des Trimmerblocks 155 wird durch einen Trimmbus an eine Vielzahl von internen Schaltungen dargestellt, die durch einen generischen Block 150 angezeigt werden. Dieser Block wird als zwischen den Ausgängen der Leseverstärker eines Speicherarrays und den Ausgangspuffern eingefügt angezeigt. Dieser Block 150 stellt den Takt und die Daten bereit, um den Trimmvorgang durchzuführen. Wenn dieser Trimmvorgang durchgeführt wird, werden die E/A getrennt, um den Speicher während dieser Art von Kalibrierungssequenz zu isolieren. In der Zwischenzeit führt der „Sonde“ genannte Block 175 den richtigen Vergleich zwischen den Daten aus dem Array und den Daten aus dem Trimmblock durch.
-
Die schematische Ansicht von 5 zeigt Lese- und Schreibschaltungen am Ausgang der Leseverstärker SA, die Logikschaltungen 150 darstellen, in denen ein Einrichtungs- und Haltezeitintervall periodisch getrimmt werden muss. Die Verzögerungstrimmung befindet sich normalerweise in einem anderen Block, der die globale Konfiguration des Geräts enthält.
-
Die in diesem Block 150 enthaltenen Daten werden auf Leseverstärker und analoge Schaltungen getrimmt, die richtig funktionieren müssen, um die Speichervorrichtung zu verwenden.
-
Diese Parameter können blockabhängig sein, da die gespeicherten Daten, einschließlich des zuvor offenbarten Dummy-Musters 0x55, in jede beliebige Ecke geschrieben werden können.
-
Es sollte auch berücksichtigt werden, dass eine Löschphase des Array-Blocks 120 die „Dummy-Zeile“ 300 und ihren Inhalt löscht. Es sollte immer vor der Löschphase ein Speichervorgang durchgeführt werden, um die optimalen Einstellungen an anderer Stelle im Speicher zu sichern und anschließend wieder herzustellen.
-
Das goldene Muster (d.h. der gespeicherte 0x55-Wert) wird nicht benötigt, da der interne Speichercontroller den Ort und den Inhalt kennt. Die zweite wichtige Überlegung ist, dass das Löschen dieses Blocks in jeder Ecke erfolgen kann, und dies impliziert die Notwendigkeit, spezielle optimale Parameter wiederherzustellen und dann mit den unter Verwendung des oben erwähnten Algorithmus gefundenen optimalen Werten zu lesen.
-
Das Beispiel von 3 bezieht sich auf die Verzögerungskonfiguration, die normalerweise im Werk in einem speziellen Konfigurationsblock im Gerät gespeichert wird.
-
Wichtig ist ein korrektes Lesen des bekannten Inhalts der Dummy-Reihe 300, so dass alle Variationen zum korrekten Lesen dieses Inhalts bei den tatsächlichen Umgebungsbedingungen die Trimmregelung anzeigen, die notwendig ist, um die Parameter in einen Zustand zum Zurücksetzen der zu bringen Zeitintervalle einrichten und halten. Wie bereits erwähnt, wird die Verzögerungstrimmung in einen Konfigurationsblock für den gesamten Speicher geschrieben und einmal im Werk gespeichert. Natürlich kann diese Methodik angewendet werden, aber das Löschen wird nie durchgeführt und die optimalen Einstellungen können mit dem regulären Array-Block geteilt werden, wenn das Augendiagramm analysiert und der Opt-Punkt gefunden wird.
-
Wie bereits erwähnt, wird die Verzögerungstrimmung in einem Konfigurationsblock, beispielsweise dem Block 160, gespeichert. Jedes der Speicherunterarrays 120 (oder Blöcke 160, abhängig von der Implementierung) kann die Dummy-Zeile 300 enthalten, um das goldene Muster und die analogen/digitalen Kalibrierungsparameter zu speichern. Daher sind die Trimmbusse am Ausgang des Trimmerblocks 155 an den Daten- und Takteingängen der Logikschaltungen aktiv, um die mit Bezug auf 3 offenbarten Verzögerungsblöcke zu regulieren und zu konfigurieren und um ein beabsichtigtes Selbsttrimmen der Speicherkomponente zu ermöglichen als integrierte Schaltung, die ein periodisches Trimmen benötigt.
-
Normalerweise müssen das Speicherarray und die Trimmblöcke von der Außenwelt isoliert werden, um sicherzustellen, dass das Trimmen nicht durch Rauschen beeinflusst wird, das von den I/O-Leitungen kommt. In dieser Hinsicht beginnt der Trimmerblock beim Empfang einer Benutzeranforderung zu arbeiten, indem er einen spezifischen Ausgabebefehl für einen Isolatorblock 165 HiZ bereitstellt.
-
Zuallererst isoliert der Trimmer 155 das Äußere der PCB, indem er den Isolator 165 aktiviert, beispielsweise indem er den HiZ-Block 165 zwingt, als Ausgangspuffer zu arbeiten.
-
Zweitens ermöglicht die Überprüfung des Ox55-Wertes das Finden des optimalen Trimmens. Sobald die Trimmparameter gefunden sind, wird die Nachschlagetabelle adressiert, um alle richtigen Einstellungen zu laden. Die richtigen Einstellungen können auch Daten zur Durchführung der Schreib- und Löschphase enthalten, die ausgewählt wurden, da sie mit den optimalen Parametern zusammenkommen, die während der Ox55-Untersuchung und des Vergleichs gefunden wurden.
-
Das Trimmen mit 0x55 zeigt immer auf gültige Einstellungen in der Nachschlagetabelle. Der Grund liegt darin, dass diese Einstellungen werkseitig gewählt sind und den gesamten Arbeitsbereich des Speichers abdecken müssen.
-
Wenn nichts verfügbar ist (oder eine solche Funktion nicht vorhanden ist), wird das Trimmen von Grund auf neu gestartet und der Optimierungsalgorithmus aktiviert.
-
Der Optimierungsalgorithmus arbeitet dabei nach folgendem Vorgehen:
- die spezielle Informationszeile wird (auch mehrmals) gelesen, um das Augendiagramm zu erstellen und dann die besten Einstellungen für den Arbeitspunkt auszuwählen, an dem der Speicher verwendet wird;
- der Trimmerblock 155 enthält das goldene Muster. Der Grund dafür ist, dass das goldene Muster die ganze Zeit über neu geschrieben werden muss, wenn das Unterarray und/oder der Block und/oder die Gruppe von Unterarrays gelöscht werden.
-
Die Schreibphase des goldenen Musters wird von der Flash-Speichersteuerung am Ende des Löschvorgangs durchgeführt. Das Ende des Löschens ist hauptsächlich das Schreiben des goldenen Musters und die Wiederherstellung der optimalen Parameter aus dem lokalen Speicherbereich und/oder das Kopieren aus einem anderen ähnlichen Block mit einer Dummy-Reihe.
-
Der Trimmerblock fordert einen Lesevorgang für die spezielle Dummy-Reihe an, jedoch mit einem Standard-Timing (oder mit der besten Bedingung, die für die spezielle Temperatur/Vdd-Bedingung bekannt ist). Die Standard-Timings sind normalerweise Standard-Low-Speed/Safe-Parameter. In jedem Fall kennt der Trimmblock das Muster im Controller, so dass die Operation selbst für eine hohe Speicherarray-Geschwindigkeit aufgrund des direkten Speicherzugriffs des SoC 210 ausgeführt werden kann. Die Speicherlogik führt mehrere Lesevorgänge des gespeicherten goldenen Musters durch, wobei die Leseparameter variiert werden, um die besten herauszufinden.
-
Wenn kein Timing verfügbar ist, verwendet der Trimmer die besten Parameter, die aus dem Designprozess verfügbar sind. Der Algorithmus wird implementiert, um die optimale Öffnung des in 6 gezeigten Augendiagramms herauszufinden; Das heißt: Die Lesephase wird schrittweise mit allen möglichen Konfigurationen durchgeführt, die Lesung wird verglichen, um zu verstehen, wie gut die goldene Variante ist. Am Ende der Operation wird das Augendiagramm überprüft und die optimale Einstellung gewählt.
-
7 stellt ein Beispiel für einen Ausgangspuffer 700 dar, der in der Speichervorrichtung der vorliegenden Offenbarung enthalten ist und als Endstufen mehrere Drei-Zustands-Treiber 710 beinhaltet. Der Ausgang der Stufen 710 wird an ein Ausgangspad 750 adressiert, in dem das Ausgangssignal BUFFER #N_OUT verfügbar ist.
-
Jeder Treiber 710 kann selektiv ausgewählt werden, indem ein Treiberselektor 720 verwendet wird. Die Auswahl wird durch das Eingangssignal Data_sel [7:0] bereitgestellt, sobald der Selektor 720 durch Setzen eines Auswahlsignals Drive Selektor config #N aktiviert wird.
-
Das Puffereingangssignal BUFFER #N_IN wird von einer Eingangsstufe 740 empfangen, die über eine Vortreiberstufe 730 mit der Reihe von Treibern 710 gekoppelt ist.
-
Ein Verzögerungsblock 760 ist zwischen den Ausgang der Eingangsstufe 740 und den Eingang der Vortreiberstufe 730 gekoppelt. Ähnlich dem unter Bezugnahme auf 3 offenbarten Beispiel empfängt dieser Verzögerungsblock 760 als Eingaben ein erstes Signal Data Delay config #N und ein zweites Datensignal Data[7:0].
-
Die Trimmregelung des Ausgangspuffers 700 ermöglicht die Auswahl der richtigen Ausgangsimpedanz. Das Trimmen des Verzögerungsblocks 760 ermöglicht eine feine Regulierung des DATA_PATH, das ist der Weg der Daten von dem Speicherarray zum Ausgangs-PAD, um das Setup & Hold-Timing in Bezug auf den SoC-Takt zu optimieren.
-
In diesem Zusammenhang zeigt 8 eine schematische Ansicht eines einfachen Modells einer Übertragung auf einem kabelgebundenen BUS. Das in 7 gezeigte Pad 750 sollte als mit einem Sender TX verbunden betrachtet werden, der als ein Ende A eines Kommunikationskanals, wie etwa einer Busleitung 800, betrachtet werden kann. Somit steht der Flash-Array-Ausgangspuffer mit einem Hostgerät oder einem SoC über die Leitung 800 in Verbindung, und am gegenüberliegenden Ende dieser Leitung befindet sich ein Knoten B, der einen Empfänger RX des anderen an den Bus angeschlossenen Geräts darstellt.
-
Die 9 und 10 zeigen in entsprechenden schematischen Ansichten die Diagramme der Spannungswerte über der Zeit an den zwei gegenüberliegenden Knoten A und B auf der gegenüberliegenden Seite des verdrahteten BUS von 8.
-
Wie zu erkennen ist, ist der Spannungswert Va am Knoten A eine Rechteckwellenform, während der resultierende übertragene Wert Vb eine Sinuswellenform ist.
-
Auf einer Seite jeder 9 und 10 ist ein Augendiagramm angegeben, das eine Methodik zum Darstellen und Analysieren eines digitalen Hochgeschwindigkeitssignals darstellt. Mit dem Augendiagramm lassen sich wichtige Parameter der elektrischen Qualität des Signals schnell visualisieren und bestimmen. Das Datenaugendiagramm wird aus einer digitalen Wellenform aufgebaut, indem die Teile der Wellenform, die jedem einzelnen Bit entsprechen, in einen einzelnen Graphen mit der Signalamplitude auf der vertikalen Achse und der Zeit auf der horizontalen Achse gefaltet werden.
-
Daher zeigen die 9 und 10 die Wellenform auf der Ausgangspufferseite und auf der Empfängerseite sowie das entsprechende und zugehörige Augendiagramm, ohne und mit Rauschen.
-
Aus diesen Darstellungen ist ersichtlich, dass 9 ein ideales Augendiagramm darstellt, während 10 ein reales (oder nahezu reales) Augendiagramm darstellt, das Verzerrungen, z. B. lastbezogene Verzerrungen, und Rauschen umfasst.
-
Aus diesen Diagrammen ist ersichtlich, dass es einen optimalen Punkt gibt, um das Ausgangssignal des Ausgabepuffers abzutasten, und dieser Punkt ist im Wesentlichen der zentrale Abschnitt oder Kasten des Auges, wo er von einem Bereich begrenzt wird, in dem die Abtastung akzeptabel ist
-
Das Ziel der Trimm- und Abstimmphase der Verzögerung oder der Impedanz besteht natürlich darin, ein gut geöffnetes Auge zu haben, das heißt einen relativ großen Abtastbereich.
-
Das zuvor offenbarte Verfahren wird in der DRAM-Welt und in der PCI-Welt auch als Kalibrierung und/oder Training bezeichnet, wie folgt:
- 1. Vergleicht den gelesenen Wert mit den erwarteten
- a. Bei Übereinstimmung ist die erste Phase (Anfangspunkt) abgeschlossen → siehe Punkt 610 im Diagramm von 6
- b. Wenn einige Ausgaben nicht übereinstimmen, wird die Konfiguration bis zu dem Moment geändert, in dem sie übereinstimmen (also wird Schritt (a) mehrmals wiederholt)
- 2. Sobald der Anfangspunkt erreicht ist, wird jede Konfiguration geändert, um für jede das breiteste Funktionsintervall zu finden - (Punkt 620 im Diagramm von 6).
-
Eine Optimierungsmethode zum Verkürzen der Zeit zum Ermitteln des optimalen zu verwendenden Punkts kann die Auswahl der richtigen Werte in der Nachschlagetabelle gemäß einem der folgenden Punkte in Betracht ziehen:
-
Zufallssuche (bitweise)
-
Binäre Suche (bitweise)
-
Gradientenabstieg; dies bedeutet, dass data[N-1:0] weise mit 2N Wörtern in den Lösungsraum bringt.
-
Der gleiche Ansatz kann für jeden anderen Parameter innerhalb des Geräts verwendet werden, der von Vdd/Temperatur/Prozess oder externen Bedingungen der integrierten Schaltung abhängt. Dies könnte auch unter Berücksichtigung der Prozessalterung nützlich sein und wenn ein erneutes Trimmen der internen Parameter erwünscht ist.
-
Das Verfahren könnte im Wesentlichen das gleiche wie das oben offenbarte goldene Muster sein, das in der internen Flash-Steuerung gespeichert ist und als Verfahren verwendet wird, um die Abweichung der Parameter gegenüber dem bekannten Wert zu finden.
-
Beispielsweise kann das Verfahren auch zum Anpassen der Leiterplattenimpedanz verwendet werden, in diesem Fall wählt das Trimmen verschiedene Puffer Zout und die Rückkopplung für den Trimmer ist das reflektierte Signal.
-
Bezieht man sich nun beispielsweise auf eine Nachtrimmung aufgrund einer thermischen Drift, ist es nicht wichtig, den tatsächlichen Temperaturwert zu erfassen, bei dem die Lesephase durchgeführt wird. Eine solche Temperatur könnte höher (sogar viel höher) oder niedriger sein, verglichen mit dem Temperaturniveau, bei dem die Programmierphase durchgeführt wurde. Das Problem hierbei ist, dass die Temperaturänderung eine virtuelle Drift erzeugt und die interne Pegelverteilung vergrößert. Dieses Driften und Vergrößern kann aufgrund der Überlappung der Verteilung Fehler erzeugen. Dieser Effekt ist am schlimmsten, wenn das Gerät gealtert ist, da die Verteilung bereits größer ist als im Neuzustand
-
Mit dem Verfahren der vorliegenden Offenbarung würde das System automatisch vor jeglicher thermischer Drift geschützt, da die Trimmparameter ausgewählt werden, nachdem das korrekte Lesen der in der Dummy-Reihe 300 gespeicherten bekannten Sequenz durchgeführt und der Trimmparameter, der in der programmierbaren Zeile enthalten ist, entsprechend identifiziert wurde oder trimmbares Register und zum Lesen des gleichen bekannten Wertes bei unterschiedlichen Temperaturen oder mit unterschiedlichen Referenzspannungswerten verwendet.
-
Die Verfahren, die es ermöglichen, die geeigneteren Lesetrimmparameter für eine korrekte Nachtrimmphase bei einem bestimmten Temperaturwert zu identifizieren, werden nicht unbedingt mit großer Periodizität wiederholt. Die Prozedur wird ausgeführt, wenn das externe SoC dies wünscht und/oder wenn während der Leseoperationen ein hoher ECC-Pegel erkannt wird.
-
Im Gegenteil, eine solche Prozedur kann periodisch oder in geeigneterer Weise durchgeführt werden, wenn mögliche Probleme durch die ECC-Bits erkannt werden.
-
Es kommt zum Beispiel vor, dass eine erhöhte Anzahl von ECC-Bits (das Array-ECC kann sich gemäß dem vorherigen Kommentar von dem Sicherheitsbit unterscheiden) eine übermäßige Anzahl von falschen Lesevorgängen aus dem Speichergerät melden. In einem solchen Fall kann das System automatisch die Prozedur zum Erfassen einer möglichen thermischen Drift und einer daraus resultierenden Notwendigkeit, die Trimmparameter zu ändern, starten.
-
In manchen Fällen kann das Verfahren als Reaktion auf eine Änderung von äußeren Bedingungen durchgeführt werden, wie beispielsweise die Erfassung einer Temperatur oder einer Änderung der Spannungsversorgung durch entsprechende Sensoren in einem Fahrzeug.
-
Die Architektur und das Verfahren der vorliegenden Offenbarung haben mehrere offensichtliche Vorteile. Beispielsweise wird die Möglichkeit geschaffen, einer etwaigen thermischen Drift der Umgebung, in die die Speichereinrichtung bzw. das System der Speichereinrichtung eingebettet ist, zu folgen. Dies ist mit den optimalen Einstellungen verbunden. Außerdem wird die Programmierbarkeit des Systems bereitgestellt, da die Dummy-Zeile 300, in der der bekannte Wert aufgezeichnet ist, gelöscht und nach Bedarf, also sogar entsprechend einer Umgebungsänderung für die Speichervorrichtung, neu programmiert werden kann. Denn 0x55 kann als Ort und Muster vom internen Flash-Controller abgerufen werden, während die Look-Up-Tabelle in dieser Implementierung von einem anderen Unterarray ankommen kann.
-
Obwohl in dieser Schrift konkrete Ausführungsformen veranschaulicht und beschrieben wurden, wird der Durchschnittsfachmann verstehen, dass eine Anordnung, die zum Erreichen der gleichen Ergebnisse ausgelegt ist, an die Stelle der konkreten gezeigten Ausführungsformen treten kann. Diese Offenbarung soll Anpassungen oder Variationen der verschiedenen Ausführungsformen der vorliegenden Offenbarung abdecken. Es versteht sich, dass die obige Beschreibung veranschaulichend und nicht einschränkend gemacht wurde. Kombinationen der vorstehenden Ausführungsformen und anderer Ausführungsformen, die nicht spezifisch hierin beschrieben sind, werden nach der Lektüre der vorstehenden Beschreibung für den Fachmann auf der Hand liegen. Der Anwendungsbereich der verschiedenen Ausführungsformen der vorliegenden Offenbarung umfasst auch andere Anwendungen, bei denen die oben genannten Strukturen und Verfahren verwendet werden. Daher sollte der Umfang der verschiedenen Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf die beigefügten Ansprüche bestimmt werden, zusammen mit dem gesamten Bereich der Äquivalente, zu denen diese Ansprüche berechtigt sind.