-
HINTERGRUND
-
Technisches gebiet
-
Hierin beschriebene Ausführungsformen betreffen integrierte Schaltungen und insbesondere Techniken zum Einstellen von Schaltungspfaden innerhalb integrierter Schaltungen.
-
Beschreibung der verwandten Technik
-
Prozessoren, Speicher und andere Typen von integrierten Schaltungen schließen typischerweise eine Anzahl von logischen Schaltungen ein, die aus miteinander verbundenen Transistoren zusammengesetzt sind, die auf einem Halbleitersubstrat gefertigt sind. Solche logischen Schaltungen können gemäß einer Anzahl unterschiedlicher Schaltungsgestaltungsarten konstruiert werden. Zum Beispiel kann eine kombinatorische Logik über eine Ansammlung von ungetakteten, statischen, komplementären Metall-Oxid-Halbleiter-Gattern, kurz CMOS-Gattern implementiert werden, die zwischen getakteten Zustandselementen, wie beispielsweise Flip-Flops oder Latches, angeordnet sind. Alternativ dazu können abhängig von Gestaltungsanforderungen manche Funktionen kombinatorischer Logik unter Verwendung von getakteter dynamischer Logik implementiert werden, wie beispielsweise Domino-Logik-Gattern.
-
Aus Metallisierungsschichten ausgebildete Leitungen, die in einem Halbleiterherstellungsprozess verfügbar sind, können verwendet werden, um die verschiedenen getakteten Zustandselemente und Logikgatter zu verbinden. Herstellungsschwankungen von Chip zu Chip sowie Unterschiede in der physikalischen Streckenführung der Leitungen können zu unterschiedlichen Laufzeiten zwischen Logikgattern führen.
-
Während eines Betriebs können Spannungspegel verschiedener chipinterner Energieversorgungen schwanken. Solch eine Schwankung kann das Ergebnis von Spannungsabfällen über parasitären Schaltungselementen während erhöhter Aktivitätsniveaus von schaltender Logik sein. In manchen Fällen kann die Schwankung der Energieversorgungsspannungspegel das Ergebnis von Änderungen in einem Betriebsmodus eines Chips, einer mobilen Vorrichtung usw. sein. Während Perioden erhöhter Aktivität können Energieversorgungsspannungspegel verringert werden, da ein langsameres Schaltungsverhalten akzeptabel ist.
-
ZUSAMMENFASSUNG DER AUSFÜHRUNGSFORMEN
-
Verschiedene Ausführungsformen eines Verfahrens und einer Einrichtung zum Einstellen einer Verzögerung in einem Schaltungspfad werden offenbart. Allgemein gesprochen werden eine Einrichtung und ein Verfahren betrachtet, bei denen eine Funktionseinheit eine Vielzahl von Schaltungspfaden einschließt, wobei jeder Schaltungspfad mindestens eine Verzögerungseinheit einschließt. Schaltlogik kann konfiguriert sein, einen Spannungspegel einer mit der Funktionseinheit gekoppelten Energieversorgung zu überwachen und als Reaktion auf eine Erfassung einer Änderung des Spannungspegels der Energieversorgung die Verzögerungsmenge einer Verzögerungseinheit eines gegebenen Schaltungspfades anzupassen.
-
In einer bestimmten Ausführungsform ist die Schaltlogik ferner konfiguriert, einen Betrieb des Funktionsblocks als Reaktion auf eine Erfassung der Änderung des Spannungspegels der Energieversorgung pausieren zu lassen.
-
In einer weiteren Ausführungsform kann die Schaltlogik ferner konfiguriert sein, als Reaktion auf ein Abschließen der Anpassung der Verzögerungsmenge der Verzögerungseinheit den Betrieb des Funktionsblocks wiederaufzunehmen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die folgende, detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
-
1 veranschaulicht eine Ausführungsform einer integrierten Schaltung.
-
2 veranschaulicht eine Ausführungsform eines Logikpfades.
-
3 veranschaulicht eine Ausführungsform einer Verzögerungseinheit.
-
4 veranschaulicht eine weitere Ausführungsform einer Verzögerungseinheit.
-
5 veranschaulicht eine Ausführungsform eines Speichers.
-
6 veranschaulicht ein Diagramm einer Ausführungsform eines Verfahrens zum Anpassen einer Verzögerungseinheit.
-
Obwohl die Offenbarung in verschiedenen Modifikationen und alternativen Formen auftreten kann, sind spezifische Ausführungsformen davon in beispielhafter Weise in den Zeichnungen gezeigt und werden hierin im Detail beschrieben. Es sollte sich jedoch verstehen, dass die Zeichnungen und die detaillierte Beschreibung dazu die Offenbarung nicht auf die bestimmte veranschaulichte Form beschränken sollen, sondern im Gegenteil die Erfindung sämtliche Modifikationen, Äquivalente und Alternativen abdecken soll, die in den Geist und Umfang der vorliegenden Offenbarung fallen, wie durch die beigefügten Ansprüche definiert. Die hierin verwendeten Überschriften dienen nur organisatorischen Zwecken und sollen nicht verwendet werden, um den Umfang der Beschreibung einzuschränken. Wie in dieser Anmeldung verwendet, wird das Wort „können” im zulassenden Sinn verwendet (d. h. es bedeutet, dass eine Möglichkeit für etwas besteht) und nicht im obligatorischen Sinn (d. h. im Sinne von „müssen”). Gleichermaßen haben die Wörter „einschließen”, „einschließend”, „einschließlich”, „schließt ein”, die Bedeutung von „einschließlich, jedoch nicht beschränkt auf”.
-
Verschiedene Einheiten, Schaltungen oder andere Komponenten können als zum Durchführen einer oder mehrerer Aufgaben „konfiguriert” beschrieben sein. In solchen Kontexten ist „konfiguriert zu” eine weit gefasste Anführung einer Struktur, die allgemein bedeutet „Schaltlogik besitzend, die” die Aufgabe oder Aufgaben während des Betriebs durchführt. Insofern kann die Einheit/Schaltung/Komponente konfiguriert sein, die Aufgabe durchzuführen, auch wenn die Einheit/Schaltung/Komponente derzeit nicht eingeschaltet ist. Im Allgemeinen kann die Schaltlogik, welche die Struktur entsprechend „konfiguriert zu” bildet, Hardware-Schaltungen einschließen. Gleichermaßen können verschiedene Einheiten/Schaltungen/Komponenten der Zweckmäßigkeit wegen in der Beschreibung so beschrieben sein, dass sie eine Aufgabe oder Aufgaben durchführen. Solche Beschreibungen sollten so ausgelegt werden, als würden sie den Ausdruck „konfiguriert zu” einschließen. Das Nennen einer Einheit/Schaltung/Komponente, die konfiguriert ist, um eine oder mehrere Aufgaben durchzuführen, soll sich ausdrücklich nicht auf eine Interpretation nach 35 U.S.C. § 112, Absatz (f) für diese Einheit/Schaltung/Komponente beziehen. Allgemeiner soll sich die Nennung eines beliebigen Elements ausdrücklich nicht auf eine Interpretation nach 35 U.S.C. § 112, Absatz (f) für dieses Element beziehen, es sei denn die Sprache „Mittel zum” oder „Schritt zum” ist spezifisch genannt.
-
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Dynamische Spannungsskalierung, d. h. die Anpassung von Spannungspegeln einer oder mehrerer interner Energieversorgungen in einem System auf einem Chip (SoC), kann verwendet werden, um dynamische Leistung und Verlustleistung innerhalb einer mobilen Vorrichtung zu verringern. Perioden verringerter Aktivität für Abschnitte eines SoC können erfasst werden, und ein Spannungspegel einer entsprechenden Energieversorgung für die identifizierten Abschnitte kann verringert werden. Eine Frequenz eines den identifizierten Abschnitten bereitgestellten Taktsignals kann zudem ebenso verringert werden. Solche Anpassungen an Energieversorgungsspannungspegel und Taktsignalfrequenzen können einen verringerten Energieverbrauch erlauben.
-
Einzelne Funktionsblöcke innerhalb eines SoC, wie z. B. ein Prozessor oder Speicher, können mehrere Schaltungspfade (sowohl Takt- als auch Datenpfade) einschließen, von denen jeder mehrere Logikgatter einschließen kann. Da Energieversorgungsspannungspegel als Reaktion auf das dynamische Spannungsskalieren geändert werden, können sich Zeittaktungsbeziehungen zwischen in unterschiedlichen Schaltungspfaden eingeschlossenen Signalen ändern. In manchen Fällen kann solch eine Änderung der Zeittaktungsbeziehung zwischen Signalen zu einem Funktionsausfall innerhalb des SoC führen. Wenn zum Beispiel ein Datenpfad relativ zu einem zugeordneten Taktpfad verzögert wird, gelingt es den Daten unter Umständen nicht, an einer Flip-Flop- oder Latch-Schaltung mit ausreichender Vorbereitungszeit anzukommen, was dazu führt, dass die Flip-Flop- oder Latch-Schaltung inkorrekte Daten erfasst. Die in den Zeichnungen veranschaulichten und nachstehend beschriebenen Ausführungsformen können Techniken bereitstellen, die eine Verzögerung innerhalb der Schaltungspfade addieren oder subtrahieren, um einen angemessenen Zeittaktungsspielraum über einen Bereich von Energieversorgungsspannungspegeln aufrechtzuerhalten.
-
Übersicht über ein System auf einem Chip
-
Ein Blockdiagramm einer integrierten Schaltung ist in 1 veranschaulicht. In der veranschaulichten Ausführungsform schließt die integrierte Schaltung 100 einen Prozessor 101 ein, der durch einen internen Bus 105 mit einem Speicherblock 102 und einem Analog-/Mischsignalblock 103 und einem E/A-Block 104 gekoppelt ist. In verschiedenen Ausführungsformen kann die integrierte Schaltung 100 zur Verwendung in einem Desktop-Computer, einem Server oder einer mobilen Rechenanwendung, wie z. B. einem Tablet- oder Laptop-Computer, konfiguriert sein.
-
Wie nachstehend detaillierter beschrieben, kann der Prozessor 101 in verschiedenen Ausführungsformen für einen universellen Prozessor stellvertretend sein, der Rechenoperationen durchführt. Zum Beispiel kann es sich bei dem Prozessor 101 um eine Zentraleinheit (CPU) handeln, wie beispielsweise einen Mikroprozessor, eine Mikrosteuereinheit, eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine vor Ort programmierbare Gatteranordnung (FPGA). In manchen Ausführungsformen kann die Verarbeitungsvorrichtung 101 eine oder mehrere Verzögerungseinheiten 106 einschließen, die konfiguriert sein können, um beim Einstellen eines oder mehrerer Logikpfade zu assistieren, indem zum Beispiel eine variable Verzögerung bereitgestellt wird.
-
Der Speicherblock 102 kann jeden geeigneten Speichertyp einschließen, wie zum Beispiel einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM), einen statischen Speicher mit wahlfreiem Zugriff (SRAM), einen Nur-Lese-Speicher (ROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) oder einen FLASH-Speicher. Es wird festgehalten, dass in der in 1 veranschaulichten Ausführungsform einer integrierten Schaltung ein einzelner Speicherblock abgebildet ist. In anderen Ausführungsformen kann jede geeignete Anzahl von Speicherblöcken verwendet werden.
-
Der Analog-/Mischsignalblock 103 kann eine Vielfalt von Schaltungen einschließen, einschließlich zum Beispiel eines Kristalloszillators, eines Phasenregelkreises (PLL), eines Analog-Digital-Wandlers (ADC) und eines Digital-Analog-Wandlers (DAC) (alle nicht gezeigt). In anderen Ausführungsformen kann der Analog-/Mischsignalblock 103 konfiguriert sein, um Energieverwaltungsaufgaben durchzuführen, einschließlich chipinterner Energieversorgungen und Spannungsregler. Der Analog-/Mischsignalblock 103 kann zudem in manchen Ausführungsformen Funkfrequenzschaltungen (HF-Schaltungen) einschließen, die zum Betrieb mit drahtlosen Netzwerken konfiguriert sind.
-
Der E/A-Block 104 kann konfiguriert sein, um eine Datenübertragung zwischen der integrierten Schaltung 100 und einer oder mehreren Peripherievorrichtungen zu koordinieren. Solche Peripherievorrichtungen können ohne Einschränkung Datenspeichervorrichtungen (z. B. auf magnetische oder optische Medien gestützte Datenspeichervorrichtungen, einschließlich Festplattenlaufwerken, Bandlaufwerken, CD-Laufwerken, DVD-Laufwerken usw.), Audioverarbeitungsteilsysteme oder jeden anderen geeigneten Typ von Peripherievorrichtungen einschließen. In manchen Ausführungsformen kann der E/A-Block 104 konfiguriert sein, um eine Version des „Universal Serial Bus”-Protokolls (USB-Protokolls) oder des „IEEE 1394”-Protokolls (Firewire®-Protokolls) zu implementieren.
-
Der E/A-Block 104 kann zudem konfiguriert sein, um eine Datenübertragung zwischen der integrierten Schaltung 100 und einer oder mehreren Vorrichtungen (z. B. anderen Computersystemen oder integrierten Schaltungen) zu koordinieren, die mit der integrierten Schaltung 100 über ein Netzwerk gekoppelt sind. In einer bestimmten Ausführungsform kann der E/A-Block 104 konfiguriert sein, die Datenverarbeitung durchzuführen, die notwendig ist, um zum Beispiel einen Ethernet-Netzwerkstandard (IEEE 802.3-Netzwerkstandard), wie beispielsweise Gigabit-Ethernet oder 10 Gigabit-Ethernet, zu implementieren, obwohl berücksichtigt wird, dass jeder geeignete Netzwerkstandard implementiert werden kann. In manchen Ausführungsformen kann der E/A-Block 104 konfiguriert sein, um mehrere separate Netzwerkschnittstellenanschlüsse zu implementieren.
-
Es wird festgehalten, dass die in 1 abgebildete Ausführungsform lediglich ein Beispiel darstellt. In anderen Ausführungsformen sind andere Funktionsblöcke und andere Konfigurationen von Funktionsblöcken möglich und werden berücksichtigt.
-
Logikpfade und Verzögerungseinheiten
-
Ein Beispiel eines Abschnitts eines Logikpfades (hierin auch als „Schaltungspfad” bezeichnet) ist in 2 veranschaulicht. In der veranschaulichten Ausführungsform ist ein Flip-Flop 201 mit einem Logikgatter 2-2 gekoppelt, das wiederum mit einem Logikgatter 203 gekoppelt ist. Das Logikgatter 203 ist mit einer Verzögerungseinheit 204 gekoppelt, die wiederum mit einem weiteren Flip-Flop 205 gekoppelt ist. Die veranschaulichte Ausführungsform schließt zudem ein Taktsignal 206, das mit „CLK” bezeichnet ist, und eine Steuerungseingabe 207, die als „CONTROL” bezeichnet ist, ein. Das Taktsignal 206 ist mit einer Verzögerungseinheit 208 gekoppelt, deren Ausgang mit einem Takteingang des Flip-Flops 205 gekoppelt ist. Im Allgemeinen können die Flip-Flops 201 und 205 jedem geeigneten Zustandselement entsprechen, wie beispielsweise einem statischen oder dynamischen Flip-Flop. Die Flip-Flops 201 und 205 können betrieben werden, um Eingabedaten als Reaktion auf das Taktsignal 206 zu erfassen und zu speichern. Zum Beispiel kann es sich bei den Flip-Flops 201 und 205 um ein flankengesteuertes Zustandselement handeln.
-
Die Logikgatter 202 und 203 können konfiguriert sein, um Funktionen kombinatorischer Logik jedes geeigneten Typs zu implementieren (z. B. AND, OR, NAND, NOR, XOR und XNOR oder jeden geeigneten Boole'schen Ausdruck). Jedes der Logikgatter 202 oder 203 kann unter Verwendung von statischer oder dynamischer Logik implementiert sein. Wenn sie zum Beispiel unter Verwendung von dynamischer Logik implementiert sind, können die Logikgatter 202 und 203 auch durch den Takteingang 206 getaktet sein, oder sie können durch ein anderes Taktsignal (nicht gezeigt) getaktet sein, das aus dem Taktsignal 206 abgeleitet ist. Es wird festgehalten, dass die Anzahl von Logikgattern und die Konnektivität, die in 2 gezeigt sind, lediglich ein veranschaulichendes Beispiel darstellen, und dass in anderen Ausführungsformen andere Anzahlen und Konfigurationen von Gattern und Zustandselementen verwendet werden können.
-
Wie nachstehend detaillierter beschrieben, kann die Verzögerungseinheit 204 konfiguriert sein, um eine Ausbreitung einer Ausgabe aus dem Logikgatter 203 zu verzögern, wodurch die Ankunft der Ausgabe des Logikgatters 203 am Eingang von 205 verzögert wird. Zusätzlich kann die Verzögerungseinheit 208 konfiguriert sein, um eine Ausbreitung des Taktsignals 206 vom Takteingang des Flip-Flops 201 zum Takteingang des Flip-Flops 205 zu verzögern. In verschiedenen Ausführungsformen kann eine Anpassung, d. h. eine Erhöhung oder Verringerung, der durch die Verzögerungseinheiten 204 und 206 bereitgestellten Menge an Verzögerung möglich sein. Die Steuerungseingabe 207 kann mehrere Datenbits einschließen, deren Werte decodiert werden können, um eine von verschiedenen möglichen Mengen an Verzögerung für jede der Verzögerungseinheiten 204 und 206 auszuwählen. In anderen Ausführungsformen kann die Steuerungseingabe 207 ein analoges Vorspannungssignal einschließen, das die durch die Verzögerungseinheit 204 in einen Logikpfad 200 eingebrachte Menge an Verzögerung und die in den Taktsignalpfad des Logikpfads 200 eingebrachte Menge an Verzögerung steuert.
-
Die Flip-Flops 201 und 205, die Logikgatter 202 und 203 und die Verzögerungseinheiten 204 und 208 können unter Verwendung von einer oder mehreren Verdrahtungsschichten gekoppelt sein, die in einem Halbleiterherstellungsprozess verfügbar sind. Physikalische Eigenschaften, wie beispielsweise der spezifische elektrische Widerstand, können für jede Verdrahtungsschicht unterschiedlich sein. Des Weiteren können Unterschiede der Streckenführungspfade, Leitungsbreiten und Ähnliches zu unterschiedlichen Zeitkonstanten für die verschiedenen Leitungsverbindungen zwischen Gattern sowie unterschiedlichen Logikpfaden führen.
-
Unterschiede der Verdrahtungszeitkonstanten können Zeittaktungsprobleme erzeugen, d. h. Verletzungen von Vorbereitungs- oder Haltezeiten für Flip-Flops oder Latches, wenn Signale aus einem bestimmten Logikpfad zu einem anderen Logikpfad weitergeleitet werden. In solchen Fällen können Verzögerungsmengen für eine oder mehrere Verzögerungseinheiten, wie z. B. die Verzögerungseinheit 204 oder die Verzögerungseinheit 208, angepasst werden, um einen angemessenen Zeittaktungsspielraum bereitzustellen. In manchen Ausführungsformen können die Verzögerungsmengen als Reaktion auf Änderungen eines Spannungspegels einer mit Komponenten eines Logikpfades gekoppelten Energieversorgung angepasst werden, um einen angemessenen Zeittaktungsspielraum bereitzustellen, wenn sich der Spannungspegel der Energieversorgung ändert.
-
Der in 2 veranschaulichte Logikpfad kann einem beliebigen von zahlreichen unterschiedlichen Typen von digitalen Logikschaltungen entsprechen und kann allgemein eine beliebige Reihe von durch Zustandselemente verbundenen Gattern einschließen. In manchen Ausführungsformen kann der Logikpfad 200 Teil eines Adressdecodierpfades oder eines Daten-Eingabe/Ausgabe-Pfades für einen Speicher sein. Der Logikpfad 200 kann in anderen Ausführungsformen einem Abschnitt eines Datenpfades innerhalb einer Verarbeitungsvorrichtung entsprechen. Bei dem Datenpfad kann es sich um einen Abschnitt eines Addierers, Verschiebers, Multiplizierers, Teilers, Puffers, einer Registerdatei, oder um jeden anderen Typ von Schaltung oder Funktionseinheit handeln, der betrieben wird, um Daten während des Verlaufs einer Anweisungsausführung zu speichern oder an ihnen zu arbeiten. Der Logikpfad kann auch Steuerungspfaden innerhalb eines Prozessors entsprechen, die Signale erzeugen, die den Betrieb eines Datenpfades oder anderer Elemente innerhalb des Prozessors steuern. Es wird jedoch festgehalten, dass andere Konfigurationen von Logikpfaden möglich sind und berücksichtigt werden.
-
Es wird festgehalten, dass der in 2 veranschaulichte Logikpfad lediglich ein Beispiel darstellt. In verschiedenen Ausführungsformen können andere Anzahlen von Logikgattern, Eingaben aus anderen Logikpfaden und zusätzliche Ausgaben an andere Logikpfade verwendet werden.
-
Unter Hinwendung zu 3 wird eine Ausführungsform einer Verzögerungseinheit veranschaulicht. Eine Verzögerungseinheit 300 kann in verschiedenen Ausführungsformen entweder der Verzögerungseinheit 204 oder der Verzögerungseinheit 208 entsprechen, wie in 2 veranschaulicht. In der veranschaulichten Ausführungsform schließt die Verzögerungseinheit 300 Verzögerungsschaltungen 301 bis 303, und eine Multiplexschaltung 304 ein. Die veranschaulichte Ausführungsform schließt zudem ein mit „INPUT” bezeichnetes Eingangssignal 305, mit „CONTROL” bezeichnete Steuerungssignale 307 und ein mit „OUTPUT” bezeichnetes Ausgangssignal 306 ein.
-
Jede der Verzögerungsschaltungen 301 bis 303 schließt mehrere Inverter ein. Zum Beispiel schließt die Verzögerungsschaltung 301 die Inverter 308 und 309 ein, von denen jeder eine Gatterverzögerung, d. h. die Verzögerung, die benötigt wird, damit sich ein Signal vom Gattereingang zu einem Gatterausgang ausbreitet, zur Gesamtverzögerung durch die Verzögerungsschaltung 301 beiträgt. Da jede der Verzögerungsschaltungen 301 bis 303 eine andere Anzahl von Invertern einschließt, besitzt jede Verzögerungsschaltung eine andere intrinsische Verzögerungsmenge, die durch die Multiplexschaltung 304 abhängig vom Steuerungssignal 307 ausgewählt werden kann. Obwohl Inverter in der in 3 veranschaulichten Ausführungsform gezeigt sind, kann in anderen Ausführungsformen jedes geeignete Logikgatter verwendet werden. Darüber hinaus können zusätzliche Vorrichtungen, wie z. B. p-Kanal- und/oder n-Kanal-MOSFETs, verwendet werden, um innerhalb einer Verzögerungsschaltung eine feste Last am Ausgang jedes Gatters aufrechtzuerhalten, wodurch konsistente Anstiegs- und Abfallzeiten bereitgestellt werden, wenn Signale wechseln.
-
Es wird festgehalten, dass statische komplementäre Metall-Oxid-Halbleiter-Inverter (CMOS-Inverter), wie beispielsweise die hierin gezeigten und beschriebenen, eine bestimmte Ausführungsform eines invertierenden Verstärkers darstellen können, die in den hierin beschriebenen Schaltungen verwendet werden kann. In anderen Ausführungsformen kann jedoch jede geeignete Konfiguration von invertierendem Verstärker verwendet werden, die fähig ist, die logische Bedeutung eines Signals zu invertieren, einschließlich invertierender Verstärker, die unter Verwendung von anderer Technologie als CMOS aufgebaut sind.
-
Ein Eingang von jeder der Verzögerungsschaltungen 301 bis 303 ist mit dem Eingangssignal 305 gekoppelt, und ein Ausgang von jeder der Verzögerungsschaltungen 301 bis 303 ist mit jeweiligen Eingängen der Multiplexschaltung 304 gekoppelt. Während des Betriebs kann das Steuerungssignal 307 so gesetzt werden, dass ein Ausgang von jeder der Verzögerungsschaltungen 301 bis 303 durch die Multiplexschaltung 304 ausgewählt werden kann. Wenn das Eingangssignal 305 wechselt, breitet sich der Übergang durch jede der Verzögerungsschaltungen 301 bis 304 aus und kommt nach jeweiligen unterschiedlichen Zeitperioden am Eingang der Multiplexschaltung 304 an. Die gewählte Ausgabe kann dann durch 306 zum Ausgang verbreitet werden. In verschiedenen Ausführungsformen kann durch Auswählen einer Ausgabe aus verschiedenen Verzögerungsschaltungen eine Verzögerungseinheit abhängig von einem Steuerungssignal, wie beispielsweise dem Steuerungssignal 307, unterschiedliche Verzögerungsmengen bereitstellen.
-
Die Multiplexschaltung 304 kann gemäß zahlreichen Gestaltungsarten gestaltet sein. Zum Beispiel kann die Multiplexschaltung 304 ein oder mehrere Durchgangsgatter einschließen, die durch die Steuerungssignale 307 gesteuert werden. Der Ausgang von jedem Durchgangsgatter kann in der Weise eines verdrahteten OR zusammengekoppelt sein. Es wird festgehalten, dass ein Durchgangsgatter (auch als ein „Transmissionsgatter” bezeichnet) einen n-Kanal-Metall-Oxid-Halbleiter-Feldeffekttransistor (MOSFET) und einen p-Kanal-MOSFET einschließen kann, die parallel geschaltet sind. In anderen Ausführungsformen können ein einzelner n-Kanal-MOSFET oder ein einzelner p-Kanal-MOSFET als ein Durchgangsgatter verwendet werden. Es wird ferner festgehalten, dass in verschiedenen Ausführungsformen ein „Transistor” einem oder mehreren Transkonduktanzelementen, wie zum Beispiel einem Sperrschicht-Feldeffekttransistor (JFET), entsprechen kann.
-
Die in 3 abgebildete Ausführungsform stellt lediglich ein Beispiel dar. In anderen Ausführungsformen können andere Anzahlen von Verzögerungsschaltungen verwendet werden.
-
Eine Ausführungsform einer Verzögerungsschaltung ist in 4 veranschaulicht. In der veranschaulichten Ausführungsform schließt eine Verzögerungsschaltung 400 gesteuerte Inverter 413 und 414 ein. Der Ausgang des gesteuerten Inverters 413 ist mit einem Eingang des gesteuerten Inverters 414 gekoppelt, um eine Pufferschaltung zu bilden, d. h. eine Schaltung, die den logischen Zustand (LOW oder HIGH) des Eingangssignals nicht ändert. Die Verzögerungsschaltung 400 schließt ferner ein mit „BIASP” bezeichnetes p-Kanal-Vorspannungssignal 409, ein mit „IN” bezeichnetes Dateneingangssignal 410, ein mit „BIASN” bezeichnetes n-Kanal-Vorspannungssignal 411 und ein mit „OUT” bezeichnetes Datenausgangssignal 412 ein.
-
Es wird festgehalten, dass sich „LOW” oder „niedriges Logikniveau” auf eine Spannung auf oder nahe an der Masse bezieht, und dass sich „HIGH” oder „hohes Logikniveau” auf einen Spannungspegel bezieht, der ausreichend groß ist, um einen n-Kanal-MOSFET einzuschalten und einen p-Kanal-MOSFET auszuschalten. In anderen Ausführungsformen kann eine andere Technologie zu anderen Spannungspegeln für „LOW” und „HIGH” führen.
-
Der gesteuerte Inverter 413 schließt Vorrichtungen 401 bis 404 ein, und der gesteuerte Inverter 414 schließt Vorrichtungen 405 bis 408 ein. Das Dateneingangssignal 410 steuert die Vorrichtungen 402 und 403, was es einer davon erlaubt, sich abhängig vom Logikzustand (entweder HIGH oder LOW) des Eingangssignals 410 zu aktivieren. Das p-Kanal-Vorspannungssignal 409 steuert die Vorrichtung 401, und das n-Kanal-Vorspannungssignal steuert die Vorrichtung 404. In manchen Ausführungsformen können das p-Kanal-Vorspannungssignal 409 und das n-Kanal-Vorspannungssignal 411 dem Steuerungssignal 207 entsprechen, wie in 2 veranschaulicht.
-
Während eines Betriebs können das p-Kanal-Vorspannungssignal 409 und das n-Kanal-Vorspannungssignal 411 auf einen Spannungspegel gesetzt werden, um die Vorrichtungen 401 bzw. 404 teilweise zu aktivieren (oder „einzuschalten”). Das p-Kanal-Vorspannungssignal 409 und das n-Kanal-Vorspannungssignal 411 können gemäß vielfältigen Schaltungsgestaltungstechniken auf vielfältige analoge Spannungspegel gesetzt werden. Zum Beispiel kann ein Stromspiegel verwendet werden, um einen Referenzstrom, oder eine skalierte Version davon, durch die Vorrichtungen 401 und 404 zu spiegeln.
-
Durch teilweises Aktivieren der Vorrichtungen 401 und 404 kann ein dem gesteuerten Inverter 413 zugeführter und von diesem abgeleiteter Strom beschränkt werden, wodurch eine Anstiegs- oder Abfallzeit der Ausgabe des gesteuerten Inverters 413 erhöht wird. Ein Erhöhen der Anstiegs- oder Abfallzeit der Ausgabe des gesteuerten Inverters 413 wird die Zeit der Signalausbreitung durch den gesteuerten Inverter 413 erhöhen, wodurch die Verzögerungsmenge des gesteuerten Inverters 413 erhöht wird. Wie bei der in 3 veranschaulichten Verzögerungseinheit ist die Verzögerungsschaltung 400 durch die Anpassung des p-Kanal-Vorspannungssignals 409 und des n-Kanal-Vorspannungssignals 411 zu mehreren Verzögerungsmengen fähig. Der gesteuerte Inverter 414 arbeitet in einer dem gesteuerten Inverter 413 ähnlichen Weise.
-
Es wird festgehalten, dass die in 4 veranschaulichte Ausführungsform einer Verzögerungseinheit lediglich ein Beispiel darstellt. In anderen Ausführungsformen sind andere Vorrichtungen und andere Konfigurationen von Vorrichtungen möglich und werden berücksichtigt.
-
Unter Hinwendung zu 5 wird ein Funktionsdiagramm einer Ausführungsform eines Speichers veranschaulicht. In der veranschaulichten Ausführungsform schließt der Speicher 500 einen Steuerungsblock 501, einen Adressblock 502, ein Array 504 und einen Datenblock 505 ein. In verschiedenen Ausführungsformen kann der Speicher 500 dem Speicherblock 102 des SoC 100, wie in 1 veranschaulicht, entsprechen. Der Speicher 500 schließt ferner ein mit „CLK” bezeichnetes Taktsignal 507, mit „ADD” bezeichnete Adresssignale 509 und mit „DATA” bezeichnete Datensignale 510 ein. Der Steuerungsblock 501 ist mit dem Adressblock 502 gekoppelt, der wiederum mit dem Array 504 gekoppelt ist. Der Steuerungsblock 501 ist ferner mit dem Datenblock 505 gekoppelt, der auch mit dem Array 504 gekoppelt ist.
-
Das Array 504 kann mehrere in Zeilen und Spalten angeordnete Speicherzellen einschließen. Jeder geeignete Speicherzellentyp kann verwendet werden. Zum Beispiel kann das Array 504 Zellen von statischem Speicher mit wahlfreiem Zugriff (SRAM), Zellen von dynamischem Speicher mit wahlfreiem Zugriff (DRAM) und dergleichen einschließen. In manchen Ausführungsformen kann das Array 504 mit einer dedizierten Energieversorgung gekoppelt sein, die von einer mit dem Steuerungsblock 501, dem Adressblock 502 und dem Datenblock 505 gekoppelten Energieversorgung getrennt ist. Ein Spannungspegel der mit dem Array 504 gekoppelten dedizierten Energieversorgung kann in manchen Ausführungsformen niedriger sein als ein Spannungspegel der mit den anderen Blöcken gekoppelten Energieversorgung.
-
Der Steuerungsblock 501 kann eine Zustandsmaschine oder Zustandslogik einschließen und kann konfiguriert sein, um dem Adressblock 502 und dem Datenblock 505 abhängig vom Status der Zustandsmaschine oder der Zustandslogik sowie des Taktsignals 507 und der Steuerungssignale 508 Zeittaktungssignale bereitzustellen. In manchen Ausführungsformen kann der Steuerungsblock 501 eine Decodierschaltung einschließen, um abhängig vom Zustand der Steuerungssignale 508 den Betriebsmodus des Speichers 500 zu ermitteln, wie z. B. eine Datenspeicher- oder „Schreib”-Operation. In anderen Ausführungsformen kann der Steuerungsblock 501 mehrere Schaltungspfade einschließen.
-
Der Adressblock 502 kann konfiguriert sein, um dem Array 504 Zeilenauswahlsignale und Spaltenauswahlsignale bereitzustellen. In manchen Ausführungsformen kann der Adressblock 502 ein n-zu-2n-Decodierschema, wobei n die Anzahl vom Bits in dem auf den Adresssignalen 509 codierten Adresswert ist, oder ein beliebiges geeignetes Decodierschema verwenden, um Zeilen- und Spaltenauswahlsignale zu erzeugen. Der Adressblock 502 kann Verzögerungseinheiten 503 einschließen. In verschiedenen Ausführungsformen, können unterschiedliche Schaltungspfade innerhalb des Adressblocks 502 eine oder mehrere Verzögerungseinheiten einschließen, und jede Verzögerungseinheit kann konfigurierbar sein, um eine von mehreren möglichen Verzögerungsmengen bereitzustellen. Durch Bereitstellen mehrerer Verzögerungsmengen können unerwünschte Zeittaktungsdifferenzen über einem Bereich von Energieversorgungsbetriebsspannungspegeln beseitigt werden.
-
Der Datenblock 505 kann konfiguriert sein, um in das Array 504 zu speichernde, d. h. zu schreibende, Daten zu empfangen. Darüber hinaus kann der Datenblock 505 Verstärker und zugehörige Schaltlogik einschließen, die notwendig sind, um in einer oder mehreren der im Array 504 eingeschlossenen Speicherzellen gespeicherte Daten abzurufen. Sowohl der Eingangs- als auch der Ausgangsabschnitt des Datenblocks 505 kann mehrere Schaltungspfade einschließen, von denen jeder eine von Verzögerungseinheiten 506 einschließen kann. Es wird festgehalten, dass jede geeignete Anzahl von Verzögerungsblöcken verwendet werden kann, obwohl in 5 nur ein einziger Blockverzögerungseinheitenblock abgebildet ist. Wie bei Verzögerungsblock 503 im Adressblock 502 kann der Verzögerungsblock 506 konfiguriert sein, um eine von einer Vielzahl von Verzögerungsmengen bereitzustellen.
-
Es wird festgehalten, dass die in 5 abgebildete Ausführungsform eines Speichers lediglich ein Beispiel darstellt. Andere Funktionsblöcke und andere Kombinationen von Funktionsblöcken können in anderen Ausführungsformen verwendet werden.
-
Unter Hinwendung zu 6 ist ein Ablaufplan, der ein Verfahren zum Anpassen einer in einem Schaltungspfad eines Funktionsblocks eingeschlossenen Verzögerungseinheit dargestellt. Das Verfahren beginnt in Block 601. Ein Spannungspegel einer mit dem Funktionsblock gekoppelten Energieversorgung kann dann überprüft werden (Block 602). In manchen Ausführungsformen kann eine analoge Vergleichsschaltung verwendet werden, um den Spannungspegel der Energieversorgung mit einer oder mehreren Referenzspannungen zu vergleichen. Die Energieversorgung kann in verschiedenen Ausführungsformen intern in einem SoC oder einer anderen integrierten Schaltung erzeugt werden, und ein oder mehrere Steuerungssignale können erzeugt werden, um andere Schaltungen über eine Änderung der Versorgungsspannung zu benachrichtigen.
-
Das Verfahren kann dann vom Spannungspegel der Energieversorgung abhängen (Block 603). In manchen Ausführungsformen können eine oder mehrere Abtastungen des Spannungspegels über eine Zeitperiode verfolgt und die Abtastungen mit einem vorbestimmten Schwellenwert verglichen werden, um festzustellen, ob sich der Spannungspegel verändert hat. Der Spannungspegel kann sich entweder erhöhen oder verringern, und in verschiedenen Ausführungsformen können abhängig davon, ob sich der Spannungspegel erhöht oder verringert hat, unterschiedliche Verzögerungsmengen ausgewählt werden. Die Größenordnung der Änderung des Spannungspegels kann ebenfalls ermittelt werden. Falls keine Änderung des Spannungspegels der Energieversorgung erfasst wurde, wird das Verfahren wie vorstehend beschrieben ab Block 602 fortgesetzt.
-
Wenn eine Änderung des Spannungspegels der Energieversorgung erfasst wurde, kann der Betrieb der Funktionseinheit oder des Funktionsblocks, wie z. B. des Speichers 500, wie in 5 veranschaulicht, pausiert werden (Block 604). In verschiedenen Ausführungsformen kann ein für den Funktionsblock intern erzeugter Takt gestoppt werden. Alternativ dazu kann ein dem Funktionsblock durch eine externe Erzeugungsschaltung bereitgestelltes Taktsignal am Eingang des Funktionsblock gesperrt werden, um das Taktsignal daran zu hindern, sich in den Funktionsblock auszubreiten. In manchen Ausführungsformen kann durch Pausieren eines Betriebs des Funktionsblocks vor jeglichen Anpassungen von Verzögerungseinheiten ein logischer Zustand des Funktionsblocks gespeichert werden.
-
Sobald der Betrieb pausiert wurde, können dann Verzögerungsmengen für eine oder mehrere Verzögerungseinheiten in verschiedenen Schaltungspfaden angepasst werden (Block 605). Zum Beispiel können Verzögerungsmengen in Schaltungspfaden innerhalb eines Adressdecodierers eines Speichers angepasst werden. Die Schaltungspfade können sowohl Daten- als auch Taktpfade innerhalb des Decodierers. Die angepassten Verzögerungsmengen können davon abhängen, ob die Änderung des Spannungspegels der Energieversorgung den Spannungspegel erhöht oder verringert. In anderen Ausführungsformen kann die Größenordnung der Änderung auch beeinflussen, wie die Verzögerungsmengen angepasst werden. Neue Verzögerungsmengen können in Fuses oder einem beliebigen anderen, geeigneten nichtflüchtigen Speicher gespeichert und abhängig von den vorgenannten Kriterien ausgewählt werden. Die gespeicherten Werte können das Ergebnis eines Kalibrierungsvorgangs sein, der ein Schaltungsverhalten bei verschiedenen Energieversorgungsspannungspegeln kennzeichnet. Solch ein Kalibrierungsvorgang kann während eines anfänglichen Tests des SoC oder der integrierten Schaltung durchgeführt werden.
-
Ist die Anpassung der Verzögerungsmengen abgeschlossen, kann der Betrieb des Funktionsblocks wiederaufgenommen werden (Block 606). Wie vorstehend beschrieben, kann ein intern erzeugter Takt wieder gestartet werden, oder einem extern erzeugten Taktsignal kann es wieder erlaubt werden, sich in den Funktionsblock auszubreiten. Sobald der Funktionsblock wieder betriebsbereit ist, kann das Verfahren in Block 607 enden.
-
Die in dem in 6 veranschaulichten Verfahren abgebildeten Operationen sind als in einer sequenziellen Weise durchgeführt gezeigt. In anderen Ausführungsformen können manche der oder alle Schritte parallel durchgeführt werden.
-
Zahlreiche Variationen und Modifikationen werden für den Fachmann ersichtlich, sobald die vorstehende Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die folgenden Ansprüche so interpretiert werden, dass alle solchen Variationen und Modifikationen eingeschlossen sind.