DE102009035022A1 - Makrozelle und Verfahren zum Addieren - Google Patents

Makrozelle und Verfahren zum Addieren Download PDF

Info

Publication number
DE102009035022A1
DE102009035022A1 DE102009035022A DE102009035022A DE102009035022A1 DE 102009035022 A1 DE102009035022 A1 DE 102009035022A1 DE 102009035022 A DE102009035022 A DE 102009035022A DE 102009035022 A DE102009035022 A DE 102009035022A DE 102009035022 A1 DE102009035022 A1 DE 102009035022A1
Authority
DE
Germany
Prior art keywords
carry
bit
macrocell
signal
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102009035022A
Other languages
English (en)
Other versions
DE102009035022B4 (de
Inventor
Thomas Kuenemund
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009035022A1 publication Critical patent/DE102009035022A1/de
Application granted granted Critical
Publication of DE102009035022B4 publication Critical patent/DE102009035022B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3896Bit slicing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

Eine Makrozelle, die einen Addiererblock mit einer Mehrzahl von Bit-Slice-Addierern, einen Umgehungsweg und eine Steuereinheit umfasst, die angepasst sind, um einen Übertrag einer ersten, benachbarten Makrozelle zu empfangen und einen Übertrag auszugeben durch Erzeugung innerhalb des Addiererblocks oder durch Weiterleiten des Übertrags der ersten, benachbarten Makrozelle durch den Umgehungsweg zu einer zweiten, benachbarten Makrozelle. Die Steuereinheit ist angepasst, um eine Gültigkeit des Übertragungsausgangs der Makrozelle zu signalisieren, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen. Die Steuereinheit ist ferner angepasst, abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle, das eine Gültigkeit des Übertrags anzeigt, ein Weiterleiten des Übertrags zu verhindern.

Description

  • Die Erfindung bezieht sich auf eine Makrozelle und auf ein Verfahren zum Addieren. Makrozellen können als funktionale Einheiten zum Verarbeiten von Daten z. B. in Mikroprozessoren, Steuerungen oder Coprozessoren verwendet werden. Makrozellen können für Baublöcke wie z. B. Registerdateien, Multiplexer, Arithmetik-Logik-Einheiten (ALU; arithmetic logic units) und Verschiebeeinrichtungen verwendet werden. Eine zentrale Verarbeitungseinheit (CPU; central processing unit) verwendet Datenwege für die Verbindung aller funktionalen Einheiten zum Verarbeiten von Daten. Herkömmliche CPUs weisen Datenwege einer Breite von 8, 16 oder 32 Bit auf. Auf dem Gebiet von Kryptoprozessoren für eine Öffentlicher-Schlüssel-Kryptographie sind Recheneinheiten zur Langzahlenberechnung erforderlich. Kryptoprozessoren für eine Öffentlicher-Schlüssel-Kryptographie können z. B. arithmetische und logische Einheiten einer Breite von zumindest mehreren 100 Bits benötigen, um die gewünschte Berechnungsgeschwindigkeit in einem Bereich von Millisekunden zu ermöglichen. Dies stellt wiederum eine hohe Anforderung an Entwurf, Verifizierung und Layout solcher Einheiten.
  • Es ist die Aufgabe der vorliegenden Erfindung, eine Makrozelle, eine Drei-Operanden-ALU, ein Verfahren zum Addieren und ein Computerprogrammprodukt mit verbesserten Charakteristika zu schaffen.
  • Die Aufgabe wird gelöst durch die Merkmale der unabhängigen Ansprüche. Weiterbildungen finden sich in den abhängigen Ansprüchen.
  • Ausführungsbeispiele der Erfindung schaffen eine Makrozelle, die einen Addiererblock mit einer Mehrzahl von Bit-Slice-Addierern aufweist, die einer Sequenz aus aufeinanderfolgenden Signifikanzbitpositionen von Eingangswerten entsprechen, einen Umgehungsweg und eine Steuereinheit, die angepasst ist, um einen Übertrag einer ersten, benachbarten Makrozelle, die Bitpositionen niedrigerer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragseingangsleitungen zu empfangen, und einen Übertrag auszugeben durch eine Erzeugung innerhalb des Addiererblocks oder durch ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle durch den Umgehungsweg zu einer zweiten, benachbarten Makrozelle, die Bitpositionen höherer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragsausgangsleitungen. Die Steuereinheit ist angepasst, um aus Daten abhängig von den Eingangswerten des Addiererblocks zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle den Umgehungsweg zu der zweiten, benachbarten Makrozelle freigeben kann. Die Steuereinheit ist angepasst, um eine Gültigkeit des Übertragsausgangs der Makrozelle der zweiten, benachbarten Makrozelle zu signalisieren, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen. Die Steuereinheit ist ferner angepasst, abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle, das eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigt, ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle zu dem Umgehungsweg bzw. dem Addiererblock zu verhindern.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1a ein Blockdiagramm einer Makrozelle gemäß einem Ausführungsbeispiel der Erfindung;
  • 1b ein Blockdiagramm von drei aufeinanderfolgenden Makrozellen gemäß einem Ausführungsbeispiel der Erfindung;
  • 2 ein Blockdiagramm einer Makrozelle mit einem Addiererblock und einer Steuereinheit gemäß einem Ausführungsbeispiel der Erfindung;
  • 3 ein Blockdiagramm eines Bit-Slice-Addierers gemäß einem Ausführungsbeispiel der Erfindung;
  • 4 ein Blockdiagramm eines Bit-Slice-Addierers gemäß einem anderen Ausführungsbeispiel der Erfindung;
  • 5a ein Schaltungsdiagramm eines Eingangsdatenmultiplexermoduls gemäß einem Ausführungsbeispiel der Erfindung;
  • 5b ein Schaltungsdiagramm eines Datenformatumwandlungsmoduls basierend auf einer Verallgemeinerung einer Spiegel-Addierer-Implementierung eines Voll-Addierers gemäß einem Ausführungsbeispiel der Erfindung;
  • 6 ein Schaltungsdiagramm eines GPK-Latchmoduls gemäß einem Ausführungsbeispiel der Erfindung;
  • 7 ein Schaltungsdiagramm eines Ausgangsdaten-XOR-Latchmoduls gemäß einem Ausführungsbeispiel der Erfindung;
  • 8 ein Schaltungsdiagramm eines Übertragswegmoduls gemäß einem Ausführungsbeispiel der Erfindung;
  • 9 ein Schaltungsdiagramm eines Übertragsumgehungsmoduls gemäß einem Ausführungsbeispiel der Erfindung; und
  • 10 ein Zeitgebungsdiagramm gemäß einem Ausführungsbeispiel der Erfindung.
  • Bezug nehmend auf die beiliegenden Zeichnungen 1a10 werden Ausführungsbeispiele einer Makrozelle. und eines Verfahrens zum Addieren beschrieben.
  • 1a zeigt ein Blockdiagramm einer Makrozelle gemäß einem Ausführungsbeispiel der Erfindung. Die Makrozelle 100 weist einen Addiererblock 101 bzw. einen Mehrbitdatenweg und eine Steuereinheit 102 bzw. eine Datenwegsteuerung auf. Der Addiererblock 101 stellt den tatsächlichen Datenweg dar (Mehrbitdatenweg). Der Addiererblock 101 weist einen ersten Eingang auf, um die w_di Bit breiten Eingangswerte „data_i” zu empfangen. Der Addiererblock 101 weist einen zweiten Eingang auf, um w_f Bit breite Eingangsflagsignale „flags” zum Anzeigen von Übertragsbits (carry bits) zu empfangen. Der Addiererblock 101 weist einen dritten Eingang auf, um w_c Bit breite interne Steuersignale „ctrl” zu empfangen. Dieser dritte Eingang ist ein bidirektionaler Eingang, der auch als ein erster Ausgang zum Ausgeben der internen Steuersignale „ctrl” an die Steuereinheit 102 dient. Der Addiererblock 101 weist einen zweiten Ausgang zum Ausgeben von w_fo Ausgangsflagsignalen „flags_o” auf der Ausgangsseite zum Anzeigen von Übertragsbits auf. Der Addiererblock 101 weist einen dritten Ausgang zum Ausgeben von w_do Bit breiten Ausgangswerten „data_o” auf.
  • Die Steuereinheit 102 weist einen ersten Eingang zum Empfangen von w_fi Bit breiten Eingangsflagsignalen „flags_i” zum Anzeigen von Übertragsbits auf. Die Steuereinheit 102 weist einen zweiten Eingang auf zum Empfangen von w_ci Bit breiten Eingangssteuersignalen „ctrl_i”, die Gültigkeitssignale umfassen, die die Gültigkeit von Übertragsbits von Makrozellen anzeigen, die Bitpositionen und z. B. anderen Signalen mit niedrigerer Wertigkeit zugeordnet sind. Die Steuereinheit 102 weist einen dritten Eingang zum Empfangen eines gemeinsamen Taktsignals „clk” auf. Die Steuereinheit 102 weist einen vierten Eingang zum Empfangen der w_c Bit breiten, internen Steuersignale „ctrl” von dem Addiererblock 101 auf. Die Steuereinheit 102 weist einen ersten Ausgang zum Ausgeben der w_f Bit breiten, internen Flagsignale „flag_s” zu dem Addiererblock 101 auf. Die Steuereinheit 102 weist einen dritten Ausgang zum Ausgeben von w_co Bit breiten Ausgangssteuersignalen „ctrl_o” auf.
  • Der Addiererblock 101 weist eine Mehrzahl von Bit-Slice-Addierern 111114 auf, die einer Sequenz aus aufeinanderfolgenden Signifikanzbitpositionen der Eingangswerte „data_i” entsprechen. Der Addiererblock 101 ist konfiguriert, um die Ausgangswerte „data_o” und die Ausgangsflagsignale „flags_o” zu liefern, die Übertragswerte für eine zweite, benachbarte Makrozelle umfassen, die Bitpositionen mit höherer Wertigkeit zugeordnet ist.
  • Die Steuereinheit 102 ist konfiguriert, um einen Übertrag einer ersten benachbarten Makrozelle zu empfangen, die Bitpositionen mit niedrigerer Wertigkeit zugeordnet ist, in einer doppelschienen-codierten Form (dual rail coded form), auf zwei Übertragseingangsleitungen. Der Übertrag der ersten benachbarten Makrozelle kann in den Eingangsflagsignalen „flags_i” umfasst sein. Die Steuereinheit 102 ist ferner konfiguriert, zum den Übertrag auszugeben, nach dem Durchtritt durch den Addiererblock 101 oder einen Umgehungsweg bzw. Umleitungsweg (bypass path), zu der zweiten, benachbarten Makrozelle, die Bitpositionen mit höherer Wertigkeit zugeordnet ist, in einer doppelschienen-codierten Form auf zwei Übertragsausgangsleitungen. Der Übertrag kann in den Ausgangsflagsignalen „flags_o” umfasst sein. Die Steuereinheit 102 ist konfiguriert, um aus den Daten, abhängig von den Eingangswerten „data_i” des Addiererblocks 101, gesteuert durch die internen Steuersignale „ctrl” zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle einen Umgehungsweg bzw. Umleitungsweg (bypass path) zu der zweiten, benachbarten Makrozelle durchlaufen kann. Der Umgehungsweg kann in der Steuereinheit 102 umfasst sein, um einen Übertrag umzuleiten, wenn die Steuereinheit 102 bestimmt hat, den Übertrag umzuleiten, z. B. über die internen Flagsignale „flags” zu den Ausgangsflagsignalen „flags_o”. Die Steuereinheit 102 ist konfiguriert, um die Gültigkeit des Übertragsausgangs der Makrozelle der zweiten benachbarten Makrozelle zu signalisieren, abhängig von einer logischen Kombination von Bits der zwei Übertragsausgangsleitungen, die eine doppelschienen-codierte Form hat. Ein Gültigkeitssignal kann in den Ausgangsflagsignalen „flags_o” oder in den Ausgangssteuersignalen „ctrl_o” umfasst sein. Die Steuereinheit 102 ist ferner angepasst, abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle, die in den Eingangsflagsignalen „flag_i” oder in den Eingangssteuersignalen „ctrl_i” umfasst sein kann, die eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigen, um eine Weiterleitung des Übertrags der ersten, benachbarten Makrozelle zu dem Umgehungsweg bzw. dem Addiererblock 101 zu verhindern.
  • 1b zeigt ein Blockdiagramm von drei aufeinanderfolgenden Makrozellen gemäß einem Ausführungsbeispiel der Erfindung. Eine Makrozelle 100 gemäß einem Ausführungsbeispiel der Erfindung, wie in 1a beschrieben ist, ist mit einer ersten, benachbarten Makrozelle 10 gekoppelt und mit einer zweiten, benachbarten Makrozelle 20 gekoppelt. Ein gemeinsames Taktsignal „clk” wird zu allen drei Makrozellen 10, 20, 100 geliefert, um die Makrozellen 10, 20, 100 mit dem gemeinsamen Taktsignal „clk” zu speisen. Die erste, benachbarte Makrozelle 10 ist Bitpositionen niedrigerer Wertigkeit der Eingangswerte „data_i1” zugeordnet. Die Makrozelle 100 ist Bitpositionen der Eingangswerte „data_i” (mittlerer Wertigkeit) zugeordnet, und die zweite, benachbarte Makrozelle 20 ist Bitpositionen der Eingangswerte „data_i2” mit höherer Wertigkeit zugeordnet. Die Eingangswerte reichen von Eingangswerten mit niedriger Wertigkeit „data_i1” über Eingangswerte (mittlerer Wertigkeit) data_i bis zu Eingangswerten mit hoher Wertigkeit data_i2. Die erste, benachbarte Makrozelle 10 wird mit Eingangssteuersignalen niedriger Wertigkeit „ctrl_i1” gespeist. Die Makrozelle 100 wird mit Eingangssteuersignalen (mittlerer Wertigkeit) „ctrl_i” gespeist und die zweite, benachbarte Makrozelle wird mit Eingangssteuersignalen hoher Wertigkeit „ctrl_i2” gespeist. Die erste, benachbarte Makrozelle 10 liefert die Ausgangswerte niedriger Wertigkeit „data_o1”. Die Makrozelle 100 liefert die Ausgangswerte (mittlerer Wertigkeit) „data_o”, und die zweite benachbarte Makrozelle 20 liefert Ausgangswerte mit hoher Wertigkeit „data_o2”. Die erste, benachbarte Makrozelle liefert Ausgangssteuersignale mit niedriger Wertigkeit „ctrl_o1”, die Makrozelle 100 liefert Ausgangssteuersignale (mittlerer Wertigkeit) „ctrl_o”, und die zweite benachbarte Makrozelle 20 liefert Ausgangssteuersignale hoher Wertigkeit „ctrl_o2”. Bei diesem Ausführungsbeispiel der Erfindung wird ein Übertrag der ersten benachbarten Makrozelle 10 über die Ausgangsflagsignale „flags_o1” niedriger Wertigkeit zu den Eingangsflagsignalen „flags_i” der Makrozelle 100 geliefert. Durch eine Erzeugung des Übertrags innerhalb des Addiererblocks 101 oder durch den Durchtritt des Übertrags durch den Umgehungsweg der Makrozelle 100 wird die Übertragsausgabe der Makrozelle 100 an den Augangsflagsignalen „flags_o” der Makrozelle 100 ausgegeben. Der umgeleitete bzw. umgangene Übertrag aus der ersten benachbarten Makrozelle 10 bzw. der Übertrag, der innerhalb der Makrozelle 100 erzeugt wird und an den Ausgangsflagsignalen „flags_o” ausgegeben wird, wird zu der zweiten benachbarten Makrozelle 20 weitergelei tet, die den Übertrag über die Eingangsflagsignale „flags_i2” hoher Wertigkeit empfängt. Abhängig von einer Erzeugung innerhalb des Addiererblocks und des Durchlaufs durch den Umgehungsweg der zweiten benachbarten Makrozelle 20 wird der Übertrag an den Ausgangsflagsignalen „flags_o2” hoher Wertigkeit ausgegeben.
  • Die erste benachbarte Makrozelle 10 weist einen Eingang zum Empfangen von Eingangsflagsignalen „flags_i1” niedriger Wertigkeit auf, die von einer vorangehenden Makrozelle kommen können, die wiederum niedrigeren Bitpositionen von Eingangswerten zugeordnet sind, oder die von einem anderen logischen Bauelement stammen können, das Übertragsignale in einer doppelschienen-codierten Form liefert. Die interne Kommunikation zwischen der Steuereinheit 102 und dem Addiererblock 101 der drei Makrozellen 10, 20, 100 entspricht dem Ausführungsbeispiel der Erfindung, wie es in 1a beschrieben ist.
  • Ausführungsbeispiele der Erfindung liefern Arithmetik-Logik-Makrozellen für Arithmetik-Logik-Einheiten mit einer großen Datenwegbreite mit der Wirkung einer optimalen Kombination der entsprechenden Vorteile der zwei unterschiedlichen klassischen Implementierungsansätze „halbkundenspezifisch (SC; semi-custom)” und „vollkundenspezifisch (FC; full-custom)”. Halbkundenspezifische Implementierungsentwürfe können z. B. vordefinierte Zellen verwenden, z. B. UND- oder NOR-Zellen, die durch die VHDL-Sprache beschrieben sind. Der Entwurf kann ein automatischer Entwurfsprozess sein, der unterschiedliche Zellen nimmt, die Zellen verbindet und das Zeitverhalten der resultierenden Schaltung prüft. Im Gegensatz zu dem vollkundenspezifischen Entwurf benötigt der halbkundenspezifische Entwurf üblicherweise eine größere Anzahl von Transistoren. Als Standard für eine vollständige Beschreibung und Zeitgebungsanalyse mit niedrigem Aufwand erfordert ein halbkundenspezifischer Entwurf, dass alle Eingänge mit einem Gateanschluss von einem der Transistoren verbunden ist, aus denen die Schaltung entworfen ist (wenn einer der Eingänge der Schaltung mit einem Source- oder Drainanschluss von einem der Transistoren verbunden wäre, wäre die Zeitgebungsanalyse der Schaltung sehr schwierig, da der Source- oder Drainanschluss auf anderen Parametern basieren würde, die die Zeitgebungsanalyse beeinflussen und Berechnungen sehr schwierig machen, insbesondere für eine große Anzahl von Transistoren).
  • Das Entwerfen von Arithmetik-Logik-Makrozellen für Arithmetik- und Logikeinheiten mit einer großen Datenwegbreite, z. B. für Kryptoprozessoren, erfordert die Kombination einer großen Anzahl von Makrozellen, wobei jede der Makrozellen z. B. 50 Transistoren aufweist. Das Realisieren einer Schaltung, wie in 1b dargestellt ist, innerhalb eines halbkundenspezifischen Entwurfs, erfordert eine Zeitgebungsanalyse des gesamten Übertragswegs von Eingangsflagsignalen „flags_i1” niedriger Wertigkeit über Eingangsflagsignale „flags_i” zu Ausgangsflagsignalen „flags_o2” hoher Wertigkeit. Durch Ausführungsbeispiele der Erfindung, die 1b entsprechen, kann der Übertragsweg in drei Abschnitte unterteilt werden, wobei der erste Abschnitt durch die erste benachbarte Makrozelle 10 beschrieben ist, der zweite Abschnitt durch die Makrozelle 100 beschrieben ist und der dritte Abschnitt durch die zweite, benachbarte Makrozelle 20 beschrieben ist. Eine Eingangs/Ausgangs-Zeitgebungsanalyse von Signalen kann auf drei unabhängige Zeitgebungsanalyseschritte reduziert werden, durch Analysieren des Zeitgebungsverhaltens der ersten, benachbarten Makrozelle 10, der Makrozelle 100 und der zweiten, benachbarten Makrozelle 20, anstatt die gesamte Schaltung zu analysieren, die alle drei Makrozellen 10, 20, 100 umfasst.
  • Ausführungsbeispiele der Erfindung liefern ein Konzept einer abgestimmten, asynchronen Selbsttaktung innerhalb individueller Makrozellen und Makrozellen, die miteinander in Wechselwirkung stehen. Durch dieses Konzept ist es möglich, im Wesentlichen asynchrone Teile des Datenwegs, z. B. den Übertragsweg, der über mehrere Makrozellen verläuft, vollständig in den synchronen, halbkundenspezifischen Entwurfsfluss zu integrieren, so dass alle Vorteile der halbkundenspezifischen Entwurfsautomatisierung vollständig beibehalten werden, d. h. alle Elemente der Kette aus halbkundenspezifischen Entwurfswerkzeugen, wie z. B. Design Compiler (Entwurfskompilierer), Place & Route (Platzieren und Leiten), Static Timing Analysis (statische Zeitgebungsanalyse), auch eine vollständige Steuerung über diese asynchronen, vollkundenspezifischen Teile des Datenwegs haben.
  • Andererseits werden auch die Vorteile einer vollkundenspezifischen Implementierung beibehalten: wesentlich kleinerer Bereich, wesentlich niedrigerer Energieverbrauch und höhere Verarbeitungsgeschwindigkeit im Vergleich zu der klassischen, halbkundenspezifischen Implementierung.
  • Zusätzlich dazu kann durch eine geeignete Auswahl der physischen Größe einer Makrozelle, z. B. jeweils 4 Bits eines 32 Bit breiten Datenwegs in einer Makrozelle, oder jeweils 48 Bits eines 288 Bit breiten Datenwegs in einer Makrozelle, wie z. B. für Kryptoprozessoren realisiert ist, kann deren Können mit wenig Aufwand garantiert werden, d. h. die zuverlässige und vollständige Vorhersage der korrekten Funktion innerhalb der spezifizierten Regionen von Versorgungsspannung, Temperatur, Frequenz etc. auf der Basis von Simulationen kann mit wenig Aufwand ausgeführt werden. Ausführungsbeispiele der Erfindung liefern Arithmetik-Logik-Einheiten (ALUs) in CPUs und/oder Coprozessoren auf Mikrosteuerungs-ICs.
  • Die Verwendung einer Schaltung, wie in 1b dargestellt ist, ohne Trennung der Schaltung in die drei Makrozellen 10, 20, 100 und ohne eine individuelle Analyse der drei Makrozellen, würden zu Nachteilen führen, z. B. entweder einem größeren Chipbereich und einem höheren Energieverbrauch und einer relativ niedrigen Verarbeitungsgeschwindigkeit in dem Fall einer halbkundenspezifischen Lösung oder einem geringeren Grad einer Entwurfsautomatisierung in dem Fall der vollkundenspezifischen Lösung und einem höheren Risiko im Hinblick auf Können, z. B. die zuverlässige und vollständige Vorhersage der korrekten Funktion innerhalb der spezifizierten Bereiche, z. B. Versorgungsspannung, Temperatur, Frequenz etc., auf der Basis von Simulationen: Für große vollkundenspezifische Makros wäre sehr viel Zeit und Aufwand für ihre funktionale und physische Charakterisierung, für ihre Integration in den Entwurfsfluss und für ihre Testbarkeit erforderlich.
  • Die Steuereinheit 102 ist an die Signalgültigkeit des Übertrags der Makrozelle 100 zu der zweiten benachbarten Makrozelle 20 angepasst, abhängig von einer logischen Kombination des Zustands der zwei Übertragsausgangsleitungen, z. B. bereitgestellt an den Ausgangsflagsignalen flags_o. Dasselbe Verhalten gilt für die erste, benachbarte Makrozelle, so dass die Steuereinheit 102 der Makrozelle 100 konfiguriert ist, abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle 100, das eine Gültigkeit des Übertragsausgangs der Makrozelle 100 anzeigt, eine Weiterleitung des Übertrags der ersten, benachbarten Makrozelle 10 zu dem Umgehungsweg bzw. dem Addiererblock der Makrozelle 100 zu verhindern. Durch dieses Verhalten von Ausführungsbeispielen der Erfindung sperren die Makrozellen 10, 20, 100 ein Weiterleiten des Übertrags, wenn der Zustand des Übertrags, der an den zwei Übertragsausgangsleitungen vorgesehen ist, nicht gültig ist. Dieses Verfahren kann als ein asynchrones Inter- und Intra-Makrozellen-Selbsttakten beschrieben werden. Dieses Selbsttakten ist nichts desto trotz mit dem halbkundenspezifischen Fluss kompatibel, und ein wesentlicher Teil der Vorteile im Hinblick auf Siliziumbereich, Verarbeitungszeit und Energieverbrauch sowie Können und Entwurfsanstrengungen resultieren daraus.
  • Die Steuereinheit 102 ist konfiguriert, um den Übertrag in doppelschienencodierter Form auf zwei Übertragsausgangsleitungen auszugeben, die z. B. in den Ausgangsflagsignalen „flags_o” gemäß 1b umfasst sind. Die Dual-Rail-Logik (Doppelschienenlogik), die auch als komplementäre Logik oder One-Hot-Logik (Eine-Heiß-Logik) bezeichnet wird, stellt jedes Bit durch zwei Knoten b und bq dar, wobei dieses Bit einen gültigen, logischen Wert aufweist, wenn b dem wahren logischen Wert dieses Bits entspricht, und bq dem negierten Wert dieses Bits entspricht (im Gegensatz zu der herkömmlichen Single-Rail-Logik (Einzelschienenlogik), bei der jedes Bit innerhalb eines Daten- oder Signalwegs physisch durch genau einen elektrischen Knoten eines Schaltnetzwerks oder einer Schalt/Steuer-Einheit dargestellt ist). Die Dual-Rail-Logik kann eine gewünschte Freiheit an Spitzen oder Störimpulsen basierend auf Laufzeitdifferenzen liefern. Dieses Verhalten wird erreicht durch Einfügen eines Vorladezustands zwischen zwei aufeinanderfolgende, logisch gültige Zustände, z. B. (1, 0) oder (0, 1), wobei für den Vorladezustand sowohl b als auch bq auf dasselbe elektrische Potential geladen sind, d. h. ungültige, logische Werte (1, 1) oder (0, 0) annehmen.
  • Nachdem alle Zwischenberechnungen ausgeführt sind (Störimpulse sind abgeklungen), nehmen b und bq gültige, logische Werte an, die mit weiteren Verarbeitungsknoten verbunden werden können.
  • Ausführungsbeispiele der Erfindung liefern eine Makrozelle 100, die einen Addiererblock 101 aufweist, der eine Mehrzahl von Bit-Slice- bzw. Bitelement-Addierern 111114 aufweist, die einer Sequenz aus aufeinanderfolgenden Signifikanzbitpositionen von Eingangswerten „data_i” entsprechen, wobei die Bit-Slice-Addierer 111114 konfiguriert sind, um abhängig von einem der Eingangswerte „data_i” oder den Zwischenwerten, die davon abhängen, und einem Übertrag von einer ersten, benachbarten Makrozelle, die Bitpositionen niedrigerer Signifikanz bzw. Wertigkeit zugeordnet ist, wie sie durch Bit-Slice-Addierer 111114 verarbeitet werden, die Positionen niedrigerer Signifikanz entsprechen, während der Erzeugung des Übertrags von der ersten, benachbarten Makrozelle 10 innerhalb des Addiererblocks 101, den Übertrag der ersten, benachbarten Makrozelle 10 zu verarbeiten und Ausgangswerte „data_o” zu bestimmen, und um einen der Eingangswerte „data_i” oder der Zwischenwerte, die davon abhängen, zwischenzuspeichern, ansprechend auf ein erstes Steuersignal. Das erste Steuersignal ist in den internen Steuersignalen „ctrl” umfasst. Die Makrozelle 100 weist ferner einen Umgehungsweg und eine Steuereinheit 102 auf, und ist konfiguriert, um den Übertrag der ersten, benachbarten Makrozelle 10 in doppelschienencodierter Form auf zwei Übertragseingangsleitungen zu empfangen, der in den Eingangsflagsignalen „flags_i” umfasst ist, und einen Übertrag durch eine Erzeugung innerhalb des Addiererblocks 101 oder durch ein Leiten durch den Umgehungsweg an eine zweite, benachbarte Makrozelle 20 auszugeben, die Bitpositionen höherer Wertigkeit zugeordnet ist, in doppelschienencodierter Form, auf zwei Übertragsausgangsleitungen, der in den Ausgangsflagsignalen „flags_o” umfasst ist, und um aus den Daten, abhängig von den Eingangswerten „data_i” des Addiererblocks 101 zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle 10 den Umgehungsweg zu der zweiten, benachbarten Makrozelle 20 passieren kann. Die Steuereinheit 102 ist ferner konfiguriert, um das erste Steuersignal zu aktivieren, das in den internen Steuersignalen „ctrl” umfasst ist, in einer vorbestimmten Zeitgebung relativ zu einem Taktsignal „clk”, so dass der Übertrag, der aus der ersten, benachbarten Makrozelle 10 ausgegeben wird, zu dem Addiererblock 101 während der Aktivierungsphase des ersten Steuersignals weitergeleitet wird.
  • Ausführungsbeispiele der Erfindung, die Zwischenwerte abhängig von den Eingangswerten „data_i” zwischenspeichern, wobei die Zwischenwerte z. B. Übertrags-Erzeugungs-(carry gernerate), Übertrags-Ausbreitungs-(carry propagate) und Übertrags-Lösch-Signale (carry kill) sind, wie in den nachfolgenden Abschnitten beschrieben ist (3, 4), zeigen wesentliche Vorteile gegenüber klassischen halb- und vollkundenspezifischen Ansätzen, die nur die Eingangswerte „data_i” zwischenspeichern. Durch Ausführungsbeispiele der Erfindung, die die Zwischenwerte zwischenspeichern, wird der Datenweg nur an dem Ort getaktet, wo der Übergang von der Einzel- zur Doppelschienen-Implementierung die bestmöglichen Vorteile im Hinblick auf Siliziumbereich, Verarbeitungszeit und Energieverbrauch ermöglicht. Andererseits würde aufgrund vieler, paralleler Einflüsse aller Bit-Slices ein Übertragsweg ohne Doppelschienen-Implementierung eine sehr hohe Anzahl von ungewollten Störimpulsen oder Spitzen bedeuten, d. h. Kurzzeitsignalwertübergänge basierend auf Laufzeitdifferenzen, was wiederum den Energieverbrauch dramatisch ansteigen ließe. Andererseits tragen solche Störimpulse in dem ersten Einzelschienenteil des Datenwegs wesentlich weniger zu einem Bereichs- und Energieverbrauch bei als es eine Doppelschienenimplementierung mit den dann notwendigen Registern für Daten- und Steuereingaben tun würde. Zusätzlich dazu ermöglicht die Einzelschienenimplementierung nicht nur minimale Transistorzahlen, sondern auch minimale Transistorabmessungen. Eine Spannungsversorgung „VDD” für diesen ersten Einzelschienenteil des Datenwegs könnte jedoch auch abgeschaltet werden, z. B. durch Einstellen von „clk”, dem gemeinsamen Taktsignal, auf null, um die noch verbleibenden Störimpulse so weit wie möglich zu unterdrücken. Die letztere Maßnahme kann ferner für ICs wichtig sein, die in dem SLEEP-(Schlaf), IDLE-(Ruhe) oder STANDBY-(Bereitschafts)Modus einen sehr niedrigen Leckstrom haben können.
  • Die Freiheit an Störimpulsen trifft nicht nur auf den Übertragsweg zu, sondern aufgrund der selbstgetakteten Makrozelle auch auf die Ausgangswerte data_o der Makrozelle 100, was den Energieverbrauch aller folgenden Schaltungen wesentlich reduziert.
  • 2 zeigt eine Makrozelle 100 mit einem Addiererblock 101 und einer Steuereinheit 102 gemäß einem Ausführungsbeispiel der Erfindung. Die Makrozelle 100 weist einen Addiererblock 101 und eine Steuereinheit 102 auf. Der Addiererblock 101 weist vier Bit-Slice-Addierer 111114 auf. Die Steuereinheit 102 weist ein Übertragsumgehungsmodul 201 auf, das einen Umgehungsweg 202 aufweist. Das Ausführungsbeispiel der Erfindung, das in 2 gezeigt ist, ist ein Beispiel für den Teilschaltungs-„Addiererblock” 101 aus 1a/b. Es zeigt einen vier Bit breiten Datenweg, der vier Bit-Slice-Addierer 111114 aufweist zum Berechnen der w_do Bit breiten Ausgangswerte „data_o” (erster Ausgangswert d_o<0>, zweiter Ausgangswert d_o<1>, dritter Ausgangswert d_o<2> und vierter Ausgangswert d_o<3>), aus den w_di Bit breiten Eingangswerten „data_i” (einem ersten Eingangswert d_i<0>, einem zweiten Eingangswert d_i<1>, einem dritten Eingangswert d_i<2> und einem vierten Eingangswert d_i<3>), und es zeigt ein Übertragsumgehungsmodul 201. Der erste, zweite, dritte und vierte Eingangswert d_i<λ>, λ = 0–3, entsprechen den Eingangswerten „data_i”, wie in 1a und 1b gezeigt ist. Der erste, zweite, dritte und vierte Ausgangswert d_o<λ>, λ = 0–3, entsprechen den Ausgangswerten „data_o”, die in 1a und 1b gezeigt sind.
  • Die Steuereinheit 102 ist angepasst, um die vier Bit-Slice-Addierer 111114 über ein w_cbs Bit breites Bit-Slice-Steuersignal „ctrl_bs” zu steuern, und ist angepasst, um das Übertragsumgehungsmodul 201 über ein w_ccb Bit breites Übertragsumgehungssteuersignal „ctrl_cb” zu steuern. Das Bit-Slice-Steuersignal „ctrl_bs” und das Übertragsumgehungssteuersignal „ctrl_cb” können geliefert werden oder hergeleitet werden aus den Eingangssteuersignalen „ctrl_i”, wie in 1a und 1b gezeigt ist. Die Steuereinheit 102 ist konfiguriert, um zusätzliche Übertragseingangswerte „dc_i” zu dem ersten Bit-Slice-Addierer 111 zu liefern, der dem ersten Eingangswert d_i<0> zugeordnet ist, der niederwertigsten Bits der Eingangswerte „data_i” zugeordnet ist. Die w_dc Bit breiten zusätzlichen Übertragseingangswerte „dc_i” können durch die Eingangsflagsignale „flags_i” geliefert werden, die der Makrozelle 100 entsprechen, wie in 1a und 1b gezeigt ist. Der erste Bit-Slice-Addierer 111 liefert w_dc Bit breite erste zusätzliche Übertragswerte dc_<1> zu dem zweiten Bit-Slice-Addierer 112. Der zweite Bit-Slice-Addierer 112 liefert w_dc Bit breite zweite zusätzliche Übertragswerte dc_<2> zu dem dritten Bit-Slice-Addierer 113. Der dritte Bit-Slice-Addierer 113 liefert w_dc Bit breite dritte zusätzliche Übertragswerte dc_<3> zu dem vierten Bit-Slice-Addierer 114. Der vierte Bit-Slice-Addierer 114 liefert w_dc Bit breite zusätzliche Übertragsausgangswerte dc_o an einem Ausgang der Makrozelle 100, die zu den Ausgangsflagsignalen „flags_o” geliefert werden können, gemäß Ausführungsbeispielen der Erfindung, wie in 1a oder 1b gezeigt ist. Die Steuereinheit 102 liefert ein Gültigkeitssignal „cRdy_o” an einem Ausgang der Makrozelle 100, das zu den Ausgangsflagsignalen „flags_o” geliefert werden kann, oder alternativ zu den Ausgangssteuersignalen „ctrl_o”, gemäß Ausführungsbeispielen der Erfindung, die in 1a und 1b gezeigt sind.
  • Die Steuereinheit 102 ist angepasst, um einen Übertrag der ersten benachbarten Makrozelle 10 mit einem ersten Schienenteil c_i und einem zweiten Schienenteil cq_i zu empfangen (Rail Part; Rail = Schiene bzw. Verbindung). Der Übertragsausgang aus der ersten benachbarten Makrozelle 10 kann in den Eingangsflagsignalen „flags_i” umfasst sein. Der erste Schienenteil c_i und der zweite Schienenteil cq_i des Übertrags von der ersten benachbarten Makrozelle 10 weisen eine Breite von 1 Bit auf. Der Übertrag von der ersten benachbarten Makrozelle 10 ist ein doppelschienencodiertes Signal. Die Steuereinheit 102 ist ferner konfiguriert, um einen Übertrag zu der zweiten benachbarten Makrozelle 20 mit einem ersten Schienenteil c_o und einem zweiten Schienenteil cq_o an einem Ausgang der Makrozelle 100 zu liefern. Der Übertrag zu der zweiten, benachbarten Makrozelle (c_o, cq_o) ist ein doppelschienencodiertes Signal, das an zwei Übertragsausgangsleitungen bereitgestellt ist, die in den Ausgangsflagsignalen „flag_o” umfasst sein können, gemäß Ausführungsbeispielen der Erfindung, wie sie in 1a und 1b gezeigt sind.
  • Die Steuereinheit 102 ist ferner angepasst, um den zwei Bit breiten Übertragseingang mit dem ersten Schienenteil c_i und dem zweiten Schienenteil cq_i zu dem ersten Bit-Slice-Addierer 111 zu liefern. Der erste Bit-Slice-Addierer 111 ist konfiguriert, um einen zwei Bit breiten ersten Übertrag mit einem ersten Schienenteil c<0> und einem zweiten Schienenteil cq<0> zu dem zweiten Bit-Slice-Addierer 112 zu liefern. Der zweite Bit-Slice-Addierer 112 ist konfiguriert, um einen zwei Bit breiten zweiten Übertrag mit einem ersten Schienenteil c<1> und einem zweiten Schienenteil cq<1> zu dem dritten Bit-Slice-Addierer 113 zu liefern. Der dritte Bit-Slice-Addierer 113 ist konfiguriert, um einen zwei Bit breiten dritten Übertrag mit einem ersten Schienenteil c<2> und einem zweiten Schienenteil cq<2> zu dem vierten Bit-Slice-Addierer 114 zu liefern. Der vierte Bit-Slice-Addierer 114 ist angepasst, um einen zwei Bit breiten Übertragsausgang mit einem ersten Schienenteil c<3> und einem zweiten Schienenteil cq<3> zu der Steuereinheit 102 zu liefern. Der erste Bit-Slice-Addierer 111 ist konfiguriert, um ein erstes Ausbreiten-Signal p<0> (propagate signal) zu der Steuereinheit 102 zu liefern. Der zweite Bit-Slice-Addierer 112 ist konfiguriert, um ein zweites Ausbreiten-Signal p<1> zu der Steuereinheit 102 zu liefern. Der dritte Bit-Slice-Addierer 113 ist konfiguriert, um ein drittes Ausbreiten-Signal p<2> zu der Steuereinheit 102 zu liefern. Der vierte Bit-Slice-Addierer 114 ist konfiguriert, um ein viertes Ausbreiten-Signal p<3> zu der Steuereinheit 102 zu liefern. Alle vier Ausbreiten-Signale haben eine Bitbreite von 1 Bit.
  • Das Übertragsumgehungsmodul 201 weist einen Umgehungsweg 202 zum Umgehen bzw. Umleiten des Übertrags von der ersten benachbarten Makrozelle (c_i, cq_i) zu dem Übertrag zu der zweiten benachbarten Makrozelle (c_o, cq_o) auf. Jedenfalls tritt der Übertrag von der ersten, benachbarten Makrozelle (c_i, cq_i) in den Addiererblock 101 über dessen Übertragseingang (c_i, cq_i) ein und wird innerhalb des Addiererblocks 101 verarbeitet, um die Datenausgaben d_o<3:0> und den Übertragsausgang (c_o, cq_o) zu der zweiten benachbarten Makrozelle 20 zu berechnen.
  • Ein Bit-Slice-Addierer 111114 kann ein 1-Bit-Voll-Addierer sein, nach Bedarf, d. h. ein Addierer, der zwei Dateneingangsbits sowie einen Übertrag von einem benachbarten niedrigerwertigen Bit-Slice empfängt und der ein Summenbit sowie einen Übertrag für ein benachbartes, höherwertiges Bit-Slice ausgibt. Alternativ können die Bit-Slice-Addierer 111114 auch Bit-Slice-ALUs zum Verarbeiten von Eingangswerten entsprechen. Alle Bit-Slice-Addierer 111114 haben die Eigenschaft, dass sie ein Übertragsbit zu dem benachbarten, höherwertigen Bit-Slice liefern, dass sie ein Summenbit liefern und dass sie einen Übertrag von dem benachbarten, niedrigerwertigen Bit-Slice empfangen. Der Addiererblock 101 kann intern eine beliebige Kombination aus Recheneinheiten aufweisen, die z. B. als ein Einfach-Welligkeit-Übertrag-Addierer (simple ripple carry adder) konfiguriert sind.
  • Eine Makrozelle kann einer Drei-Operanden-ALU entsprechen, z. B. einem Drei-Operanden-Addierer, zum Verarbeiten von drei Eingangswerten. Die Drei-Operanden-ALU kann einen ALU-Block mit einer Mehrzahl von Bit-Slice-ALUs aufweisen.
  • Die Bit-Slice-ALUs können z. B. einen Drei-Bit-Formatwandler aufweisen, z. B. einen Halbaddierer, der abhängig von drei Eingangsbits, die einer entsprechenden einen der Wertigkeits- bzw. Signifikanzbitpositionen zugeordnet sind, konfiguriert ist, um ein Formatwandlerausgangsbit und ein zusätzliches Übertragsbit zu berechnen, wobei das zusätzliche Übertragsbit in eine Bit-Slice-ALU eingegeben wird, die Bitpositionen der nächsthöheren Wertigkeit der drei Eingangswerte entspricht.
  • Die Bit-Slice-ALUs können z. B. ferner einen Zwei-Bit-Volladdierer aufweisen, der angepasst ist, abhängig von dem Formatwandler-Ausgangsbit oder von Zwischenbits, die davon abhängen, abhängig von einem zusätzlichen Übertragsbit, das einer Bit-Slice-ALU zugeordnet ist, die der Bitposition nächstniedrigerer Wertigkeit der drei Eingangswerte entspricht, und abhängig von einem Übertrag einer ersten benachbarten Drei-Operanden- ALU, die Bitpositionen niedrigerer Wertigkeit zugeordnet ist, wie sie durch Bit-Slice-ALUs verarbeitet werden, die Bitpositionen des ALU-Blocks mit niedrigerer Wertigkeit entsprechen, den Übertrag der ersten, benachbarten Drei-Operanden-ALU zu verarbeiten und ein Drei-Operanden-ALU-Ausgangsbit zu bestimmen, und das Formatwandler-Ausgangsbit oder die Zwischenbits, die davon abhängen, ansprechend auf das erste Steuersignal zwischenzuspeichern. Das erste Steuersignal ist in den internen Steuersignalen „ctrl” umfasst.
  • Obwohl Bit-Slice-Addierer 111114 in 2 gezeigt sind, wird darauf hingewiesen, dass anstelle der Bit-Slice-Addierer Bit-Slice-ALUS (arithmetic logic units; Arithmetik-Logik-Einheiten) verwendet werden können, die in der Lage sind, ein Addieren und zusätzliche logische und/oder arithmetische Operationen auszuführen. Zum Beispiel können solche Bit-Slice-ALUs konfiguriert sein, um die Ausgangswerte „data_o” aus den Eingangswerten „data_i” arithmetisch-logisch zu verarbeiten, wobei die „arithmetisch-logische Verarbeitung” einem „Addieren” entspricht. Ein Addiererblock 101 ist ein Ausführungsbeispiel eines ALU-Blocks, der eine Mehrzahl von Bit-Slice-ALUs aufweist.
  • Bei dem Ausführungsbeispiel, wie in 2 gezeigt ist, weist ein Addiererblock 101 eine Anzahl von „vier” Bit-Slice-Addierern 111114 auf, um die entsprechenden Figuren zu vereinfachen. Andere Ausführungsbeispiele der Erfindung können eine andere Anzahl aufweisen. Ein anderes Ausführungsbeispiel kann z. B. einen ALU-Block aufweisen, der 48 Bit-Slice-ALUs zum Verarbeiten der Ausgangswerte „data_o” aus den Eingangswerten „data_i” aufweist. Das entsprechende Übertragsumgehungsmodul wäre dann konfiguriert, um Überträge zu verarbeiten, die den 48 Bit-Slice-ALUs zugeordnet sind.
  • 3 zeigt ein Blockdiagramm eines Bit-Slice-Addierers 111114 gemäß einem Ausführungsbeispiel der Erfindung. Der Bit-Slice-Addierer entspricht einem der Bit-Slice-Addierer 111114, die in 2 gezeigt sind. Der Bit-Slice-Addierer 111–114 weist ein Eingangsdatenumwandlungsmodul 301, ein GPK-Latchmodul 302, ein Ausgangsdaten-XOR-Latchmodul 303 und ein Übertragswegmodul 304 auf. Das Eingangsdatenumwandlungsmodul 301 weist einen ersten Eingang auf, der einen w_d Bit breiten Bit-Slice-Eingangswert d_i liefert, der einem der Eingangswerte entsprechen kann, d. h. dem ersten Eingangswert d_i<0>, dem zweiten Eingangswert d_i<1>, dem dritten Eingangswert d_i<2> oder dem vierten Eingangswert d_i<3>, wie in 2 gezeigt ist. Das Eingangsdatenumwandlungsmodul 301 weist einen zweiten Eingang auf, zum Empfangen eines w_cidc Bit breiten, dritten Steuersignals „ctrl_idc” (bzw. IDC-Steuersignals), das in dem Bit-Slice-Steuersignal „ctrl_bs” umfasst sein kann, wie in 2 gezeigt ist. Das Eingangs datenumwandlungsmodul 301 weist einen ersten Ausgang auf, der einen w_dc Bit breiten, zusätzlichen Bit-Slice-Übertragsausgangswert „dc_bs_o” liefert, der einem der zusätzlichen Übertragswerte entsprechen kann, die in 2 gezeigt sind, z. B. den ersten zusätzlichen Übertragswerten dc_<1>, den zweiten zusätzlichen Übertragswerten dc_<2>, den dritten zusätzlichen Übertragswerten dc_<3> oder den zusätzlichen Übertragsausgangswerten dc_o.
  • Das Eingangsdatenumwandlungsmodul 301 weist einen zweiten Ausgang auf, der einen w_dc Bit breiten, umgewandelten Bit-Slice-Eingangswert „dc” zu dem GPK-Latchmodul 302 als den ersten Eingang dieses Moduls liefert. Das GPK-Latchmodul 302 weist einen zweiten Eingang auf, der einen w_dc Bit breiten, zusätzlichen Bit-Slice-Übertragseingangswert „dc_bs_i” empfängt, der einem der zusätzlichen Übertragswerte entsprechen kann, die in 2 gezeigt sind, z. B. den zusätzlichen Übertragseingangswerten dc_i, den ersten zusätzlichen Übertragswerten dc_<1>, den zweiten zusätzlichen Übertragswerten dc_<2> oder den dritten zusätzlichen Übertragswerten dc_<3>. Das GPK-Latchmodul 302 weist einen dritten Eingang auf, der ein w_cgpk Bit breites erstes Steuersignal „ctrl_gpk” empfängt, das in dem Bit-Slice-Steuersignal „ctrl_bs” umfasst sein kann, wie in 2 gezeigt ist. Das GPK-Latchmodul 302 weist einen ersten Ausgang auf, der ein 1 Bit breites Erzeugen-Signal g (generste-signal) liefert, einen zweiten Ausgang zum Liefern eines 1 Bit breiten Ausbreiten-Signals p und einen dritten Ausgang zum Liefern eines 1 Bit breiten Löschen-Signals k (kill-signal). Das Erzeugen-Signal g und das Löschen-Signal k werden zu dem Übertragswegmodul 304 geliefert, sowie das Löschen-Signal k, während das Ausbreiten-Signal p zu dem Ausgangsdaten-XOR-Latchmodul 303, zu dem Übertragswegmodul 304 und zu einem Ausgang des Bit-Slice-Addierers 111114 geliefert wird. Das Ausbreiten-Signal p, das an dem Ausgang des Bit-Slice-Addierers 111114 geliefert wird, kann den Ausbreiten-Signalen entsprechen, die in 2 gezeigt sind, z. B. dem ersten Ausbreiten-Signal p<0>, dem zweiten Ausbreiten-Signal p<1>, dem dritten Ausbreiten-Signal p<2> oder dem vierten Ausbreiten-Signal p<3>.
  • Das Ausbreiten-Signal p wird zu einem ersten Eingang des Ausgangsdaten-XOR-Latchmoduls 303 geliefert. Das Ausgangsdaten-XOR-Latchmodul 303 weist einen zweiten Eingang auf, der ein w_coxl Bit breites, zweites Steuersignal „ctrl_oxl” bzw. OXL-Steuersignal empfängt, das in dem Bit-Slice-Steuersignal „ctrl_bs” umfasst sein kann, das in 2 gezeigt ist. Das Ausgangsdaten-XOR-Latchmodul 303 weist einen dritten Eingang auf, der einen 2 Bit breiten Bit-Slice-Eingangsübertrag mit einem ersten Schienenteil „c_bs_i” und einem zweiten Schienenteil „cq_bs_i” empfängt, der einem der Überträge entspricht, die in 2 gezeigt sind, d. h. dem Übertragseingang (c_i, cq_i), dem ersten Übertrag (c<0>, cq<0>), dem zweiten Übertrag (c<1>, cq<1>) oder dem dritten Übertrag (c<2>, cq<2>). Das Ausgangsdaten-XOR-Latchmodul 303 weist einen Ausgang auf, der einen 1 Bit breiten Bit-Slice-Ausgangswert d_o liefert, der einem der Ausgangswerte entspricht, die in 2 gezeigt sind, z. B. dem ersten Ausgangswert d_o<0>, dem zweiten Ausgangswert d_o<1>, dem dritten Ausgangswert d_o<2> oder dem vierten Ausgangswert d_o<3>.
  • Das Übertragswegmodul 304 weist drei Eingänge zum Empfangen der 1 Bit breiten GPK-Signale g, p, k und einen vierten Eingang zum Empfangen des 2 Bit breiten Bit-Slice-Eingangsübertrags (c_bs_i, cq_bs_i) auf, der ebenfalls durch das Ausgangsdaten-XOR-Latchmodul 303 empfangen wird. Das Übertragswegmodul 304 weist einen Ausgang zum Liefern des 2 Bit breiten Bit-Slice-Ausgangsübertrags mit einem ersten Schienenteil c_bs_o und einem zweiten Schienenteil cq_bs_o auf, der einem der Überträge entspricht, die in 2 gezeigt sind, z. B. dem ersten Übertrag (c<0>, cq<0>), dem zweiten Übertrag (c<1>, cq<1>), dem dritten Übertrag (c<2>, cq<2>) oder dem Übertragsausgang (c<3>, cq<3>).
  • Die GPK-Signale g, p, k sind log/add-Parameter, z. B. eines 2-Bit-Voll-Addierers. Der log/add-Parameter p, der auch als „Ausbreiten” (propagate) bezeichnet wird, bezeichnet den Fall, in dem genau ein Bit von zwei Bits, die addiert werden sollen, gleich 1 ist (g, p, k) = (0, 1, 0). In diesem Fall wird ein Übertrag, der von der ersten benachbarten Makrozelle 10 kommt, einfach weitergeleitet und breitet sich aus. Wenn jedoch beide Eingangsbits bei einem Bit-Slice gleich 1 sind, erzeugt diese Bit-Slice einen neuen Übertrag, der auch als „Erzeugen” (generste) bezeichnet wird (g, p, k) = (1, 0, 0). Wenn andererseits beide Eingangsbits gleich 0 sind, wird ein Übertrag, der möglicherweise in das Bit-Slice eintreten kann, durch das gegenwärtig betrachtete Bit-Slice absorbiert, d. h. der Übertrag wird gelöscht, daher wird der Parameter logg/add k auch als „Löschen” (kill) bezeichnet (g, p, k) = (0, 0, 1). Da nur entweder p, k oder g einen logischen Zustand von 1 aufweisen, weist nur jeweils eines der GPK-Signale g, p, k einen logischen Zustand von 1 auf. Die GPK-Signale stellen zusammen eine One-Hot-Codierung dar.
  • Das Eingangsdatenumwandlungsmodul 301 ist für die Umwandlung und/oder Modifikation des Bit-Slice-Eingangswerts „d_i” angepasst, abhängig von dem dritten Steuersignal „ctrl_idc”, z. B. für Operationen wie Multiplexen, Verschieben, Datenformatumwandlung in den umgewandelten Bit-Slice-Eingangswert „dc” und den zusätzlichen Bit-Slice-Übertragsausgangswert „dc_bs_o”, wobei der zusätzliche Bit-Slice-Übertragsausgangswert „dc_bs_o” Übertragsdaten für das benachbarte höherwertige Bit-Slice darstellt. Das GPK- Latchmodul 302 ist angepasst, um abhängig von dem ersten Steuersignal „ctrl_gpk” aus dem umgewandelten Bit-Slice-Eingangswert „dc” und dem zusätzlichen Bit-Slice-Übertragseingangswert „dc_bs_i”, der die Übertragsdaten aus dem benachbarten niedrigerwertigen Bit-Slice umfasst, die sogenannten „Übertrag-Erzeugen”, „Übertrag-Ausbreiten” und „Übertrag-Löschen”-Signale g, p und k bzw. GPK-Signale zu erzeugen und die letzteren für die Dauer des nachfolgenden, vollständigen Übertrag-Welligkeit-(bzw. Schnellübertrags-; carry-ripple) und/oder Übertrag-Umgehungs-Prozesses (carry-bypass) zu speichern.
  • Das Ausgangsdaten-XOR-Latchmodul 303 ist angepasst, um abhängig von dem OXL-Steuersignal „ctrl_oxl” den Bit-Slice-Ausgangswert „d_o” aus dem Übertrag-Ausbreiten-Signal p und dem Doppelschienen-Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) zu berechnen und „d_o” zu speichern.
  • Das Übertragswegmodul 304 ist angepasst, um den Bit-Slice-Ausgangsübertrag (c_bs_o, cq_bs_o) aus dem Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) und den GPK-Signalen g, p, k zu bestimmen.
  • 4 ist ein Blockdiagramm eines Bit-Slice-Addierers gemäß einem anderen Ausführungsbeispiel der Erfindung. Der Bit-Slice-Addierer 111114 entspricht einem der Bit-Slice-Addierer, wie sie in 2 oder 3 gezeigt sind. Der Bit-Slice-Addierer 111114 weist ein Eingangsdatenumwandlungsmodul 301, ein GPK-Latchmodul 302, ein Ausgangsdaten-XOR-Latchmodul 303 und ein Übertragswegmodul 304 auf. Das Eingangsdatenumwandlungsmodul weist drei IDM-Module auf (IDM = input data multiplexing = Eingangsdaten-Multiplexen), ein erstes IDM-Modul 401, ein zweites IDM-Modul 402 und ein drittes IDM-Modul 403. Das Eingangsdatenumwandlungsmodul 301 weist ferner ein DFC-Modul (DFC = data format conversion; Datenformatumwandlung) 404 auf. Das erste IDM-Modul 401 weist einen Eingang zum Empfangen eines ersten Bit-Slice-Eingangswerts „c” auf. Das zweite IDM-Modul 402 weist einen Eingang zum Empfangen eines zweiten Bit-Slice-Eingangswerts „b” auf. Das dritte IDM-Modul 403 weist einen Eingang zum Empfangen eines dritten Bit-Slice-Eingangswerts „a” auf. Die drei Bit-Slice-Eingangswerte c, b, a entsprechen dem Bit-Slice-Eingangswert d_i, wie in 3 gezeigt ist, oder einem der Eingangswerte d_i<0>, d_i<1>, d_i<2>, d_k<3>, wie in 2 gezeigt ist. Jedes der IDM-Module 401403 liefert einen IDM-Ausgangswert, das erste IDM-Modul 401 liefert einen ersten IDM-Ausgangswert z1, das zweite IDM-Modul 402 liefert einen zweiten IDM-Ausgangswert z2 und das dritte IDM-Modul 403 liefert einen dritten IDM-Ausgangswert z3. Jeder der drei IDM-Ausgangswerte z1, z2, z3 wird zu dem DFC- Modul 404 geliefert. Die drei Bit-Slice-Eingangswerte c, b, a sowie die drei IDM-Ausgangswerte z1, z2, z3 sind 1 Bit breite Signale.
  • Das Eingangsdatenumwandlungsmodul 301 weist vier 2 Bit Breite weitere Eingänge zum Empfangen eines dritten Steuersignals mit einer ersten Signalkomponente „sc”, einer zweiten Signalkomponente „scn”, einer dritten Signalkomponente „sb”, einer vierten Signalkomponente „sbn”, einer fünften Signalkomponente „sa”, einer sechsten Signalkomponente „san”, einer siebten Signalkomponente „s1Q” und einer achten Signalkomponente „s0” auf. Die Signalkomponenten „sa”, „san”, „sb”, „sbn”, „sc”, „scn” sind Eingangssignale für ein jeweiliges IDM-Modul 403, 402, 401. Die Signalkomponenten „s1Q” und „s0” sind Eingangssignale in das DFC-Modul 404. Das dritte Steuersignal „(sa, san), (sb, sbn), (sc, scn), (S1Q, s0)” kann dem dritten Steuersignal „ctrl_idc” entsprechen, wie in 3 gezeigt ist.
  • Das DFC-Modul 404 weist drei Eingänge zum Empfangen der drei IDM-Ausgangswerte z1, z2, z3 auf, einen weiteren Eingang zum Empfangen der siebten und achten Signalkomponente „s1Q”, „s0” des dritten Steuersignals und liefert zwei Ausgänge, die auch Ausgänge des Eingangsdatenumwandlungsmoduls 301 sind. Ein Ausgang liefert einen 1 Bit breiten, umgewandelten Bit-Slice-Eingangswert z, der dem umgewandelten Bit-Slice-Eingangswert „dc” entsprechen kann, wie er in 3 gezeigt ist. Der umgewandelte Bit-Slice-Eingangswert z wird zu dem GPK-Latchmodul 302 geliefert. Der zweite Ausgang des DFC-Moduls 404 bzw. des Eingangsdatenumwandlungsmoduls 301 liefert einen zusätzlichen 1 Bit breiten Bit-Slice-Ausgangsübertragswert z_o, der auch eine Ausgabe des Bit-Slice-Addierers 111114 ist, und dem zusätzlichen Bit-Slice-Übertragsausgangswert „dc_bs_o” entsprechen kann, wie in 3 gezeigt ist.
  • Das GPK-Latchmodul 302 weist einen ersten Eingang zum Empfangen eines ersten GPK-Eingangswerts a0 auf, der dem zusätzlichen Bit-Slice-Übertragseingangswert z_i entspricht, der eine Eingabe in den Bit-Slice-Addierer 111114 ist, und dem zusätzlichen Bit-Slice-Übertragseingangswert „dc_bs_i” entsprechen kann, wie in 3 gezeigt ist. Das GPK-Modul 302 weist einen zweiten Eingang zum Empfangen eines zweiten GPK-Eingangswerts a1 auf, der dem umgewandelten Bit-Slice-Eingangswert z entspricht, aus einem Ausgang des DFC-Moduls 404, der dem umgewandelten Bit-Slice-Eingangswert „dc” entsprechen kann, wie in 3 gezeigt ist. Der erste GPK-Eingangswert a0 und der zweite GPK-Eingangswert sind 1 Bit breite Eingangswerte. Das GPK-Latchmodul 302 weist einen dritten Eingang zum Empfangen eines 4 Bit breiten ersten Steuersignals mit einer log-Signalkomponente „log”, einer add-Signalkomponente „add”, einer Vorlade- Signalkomponente „pchQ” und einer Latch- bzw. Speicher-Signalkomponente „latch” auf. Das erste Steuersignal (log, add, pchQ, latch) kann dem ersten Steuersignal ctrl_gpk entsprechen, wie in 3 gezeigt ist. So wie die log-Signalkomponente „log” sind die Addieren-Signalkomponente „add”, die Vorladen-Signalkomponente „pchQ” und die „Latch”-Signalkomponente latch 1 Bit breite Signale. Das GPK-Latchmodul 302 ist angepasst, um die GPK-Signale g, p, k an drei Ausgängen zu liefern, die den GPK-Signalen entsprechen, die in 3 gezeigt sind.
  • Bei Ausführungsbeispielen der Erfindung beschreiben Signale, die mit einem großen „Q” oder einem kleinen „q” als letztes Zeichen des Signalspezifizierers bezeichnet sind, niedrige, aktive Signale, während Signale, die nicht mit einem großen „Q” bzw. kleinem „q” enden, hohe, aktive Signale beschreiben.
  • Das Ausgangsdaten-XOR-Latchmodul 303 weist einen Eingang auf zum Empfangen des Ausbreiten-Signals p von dem GPK-Latchmodul 302, und einen zweiten Eingang zum Empfangen eines 1 Bit breiten, zweiten Steuersignals wrQ, das dem zweiten Steuersignal ctrl_oxl bzw. dem OXL-Steuersignal entsprechen kann, das in 3 gezeigt ist. Das Ausgangsdaten-XOR-Latchmodul 303 weist einen dritten Eingang zum Empfangen des Bit-Slice-Eingangsübertragswerts mit dem ersten Schienenteil „c_bs_i” und dem zweiten Schienenteil „cq_bs_i” auf, der dem Bit-Slice-Eingangsübertragswert entspricht (c_bs_i, cq_bs_i), wie in 3 gezeigt ist. Das Ausgangsdaten-XOR-Latchmodul 303 ist konfiguriert, um einen Bit-Slice-Ausgangswert „d_o” an einem Ausgang bereitzustellen, der ebenfalls der Ausgang des Bit-Slice-Addierers 111114 ist, und der dem Bit-Slice-Ausgangswert „d_o” entspricht, wie in 3 gezeigt ist.
  • Das Übertragswegmodul 304 entspricht dem Übertragswegmodul 304, wie es in 3 gezeigt ist. Das Übertragswegmodul 304 weist drei Eingänge zum Empfangen der GPK-Signale g, p, k auf, und einen weiteren Eingang zum Empfangen des Bit-Slice-Eingangsübertragswerts (c_bs_i, cq_bs_i), der auch einen Eingang des Bit-Slice-Addierers 111114 ist. Ferner weist das Übertragswegmodul 304 einen Ausgang auf zum Liefern des Bit-Slice-Ausgangsübertragswerts (c_bs_o, cq_bs_o), der auch ein Ausgang des Bit-Slice-Addierers 111114 ist.
  • Der Bit-Slice-Addierer 111114 gemäß dem Ausführungsbeispiel der Erfindung, wie in 4 gezeigt ist, ist ein Beispiel für den Aufbau eines Bit-Slice-Addierers gemäß einem Ausführungsbeispiel der Erfindung, wie in 3 gezeigt ist, wobei das Eingangsdatenumwandlungsmodul 301 drei IDM-Module 401403 und ein DFC-Modul 404 aufweist.
  • Im Gegensatz zu dem Ausführungsbeispiel der Erfindung, das in 3 gezeigt ist, weist der Beispiel-Bit-Slice-Addierer, wie er in 4 gezeigt ist, 1 Bit breite Einzelschienensignale für Eingangs-, Ausgangs- und interne Werte und 2 Bit breite Doppelschienensignale für Eingangs- und Ausgangsüberträge auf.
  • 5a zeigt ein Schaltungsdiagramm eines Eingangsdatenmultiplexermoduls (IDM-Modul; input data multiplexer) gemäß einem Ausführungsbeispiel der Erfindung. Das IDM-Modul entspricht dem dritten IDM-Modul 403, das dem Ausführungsbeispiel der Erfindung entspricht, wie in 4 gezeigt ist. Das dritte IDM-Modul 403 weist ein DualAndNor-Gate „DualAndNor” auf und einen Inverter „INV”. Das DualAndNor-Gate „DualAndNor” hat vier Eingänge, wobei der erste Eingang den 1 Bit breiten dritten Bit-Slice-Eingangswert „a” empfängt, wie in 4 gezeigt ist, der zweite Eingang die fünfte Signalkomponente „sa” des dritten Steuersignals empfängt, das dem dritten Steuersignal entspricht, wie in 4 gezeigt ist, der dritte Eingang ein Ausgangssignal „an” des Inverters „INV” empfängt, das dem invertierten, dritten Bit-Slice-Eingangswert „a” entspricht, was dem dritten Bit-Slice-Eingangswert „a” entspricht, wie in 4 gezeigt ist, und der vierte Eingang die sechste Signalkomponente „san” des dritten Steuersignals empfängt, das dem dritten Steuersignal entspricht, das in 4 gezeigt ist. Das DualAndNor-Gate „DualAndNor” weist einen Ausgang zum Liefern des dritten IDM-Ausgangswerts „z3” auf, der dem dritten IDM-Ausgangswert „z3” entspricht, wie in 4 gezeigt ist. Der dritte IDM-Ausgangswert „z3” ist eine Ausgabe des DualAndNor-Gates „DualAndNor” und auch eine Ausgabe des dritten IDM-Moduls 403.
  • Der Inverter „INV” ist konfiguriert, um den dritten Bit-Slice-Eingangswert „a” in einen invertierten, dritten Bit-Slice-Eingangswert „an” zu invertieren. Der dritte Bit-Slice-Eingangswert „a” ist eine Eingabe in den Inverter „INV”, in das DualAndNor-Gate „DualAndNor” und auch in das dritte IDM-Modul 403. Die fünfte und sechste Signalkomponente des dritten IDC-Steuersignals (sa, san) sind Eingaben in das DualAndNor-Gate „DualAndNor” und auch Eingaben in das dritte IDM-Modul 403.
  • Das DualAndNor-Gate „DualAndNor” kombiniert den ersten und den zweiten Eingang über eine logische UND-Kombination, den dritten und vierten Eingang über eine logische UND-Kombination und die resultierenden Ausgänge beider logischen UND-Kombinationen durch eine logische NOR-Kombination.
  • Das Ergebnis der DualAndNor-Kombination, das durch das DualAndNor-Gate „DualAndNor” bereitgestellt wird, ist z3 = NOT(a·sa + not(a)·san),das heißt, abhängig von der fünften und sechsten Signalkomponente des dritten Steuersignals „sa” und „san”, gilt Folgendes:
    z3 = 1 (für sa = 0, san = 0),
    z3 = a (für sa = 0, san = 1),
    z3 = not(a) (für sa = 1, san = 0),
    z3 = 0 (für sa = 1, san = 1).
  • Das erste IDM-Modul 401 und das zweite IDM-Modul 402 haben einen ähnlichen Entwurf wie das dritte IDM-Modul 403, aber unterschiedliche Bit-Slice-Eingangswerte und unterschiedliche IDC-Steuersignale sind angelegt, und unterschiedliche IDM-Ausgangswerte werden geliefert, gemäß dem Ausführungsbeispiel der Erfindung, wie in 4 gezeigt ist.
  • 5b zeigt ein Schaltungsdiagramm eines Datenformatumwandlungsmoduls basierend auf einer Verallgemeinerung einer Spiegel-Addierer-Implementierung eines Voll-Addierers gemäß einem Ausführungsbeispiel der Erfindung. Das Datenformatumwandlungsmodul (DFC; data format conversion) entspricht dem Datenformatumwandlungsmodul (DFC), wie in 4 gezeigt ist. Das DFC-Modul 404 weist fünf Eingänge auf, einen ersten Eingang zum Empfangen des 1 Bit breiten IDM-Ausgangswerts z1, der dem ersten IDM-Ausgangswert z1 entspricht, wie in 4 gezeigt ist, einen zweiten Eingang zum Empfangen des 1 Bit breiten, zweiten IDM-Ausgangswerts z2, der dem zweiten IDM-Ausgangswert z2 entspricht, wie in 4 gezeigt ist, einen dritten Eingang zum Empfangen des 1 Bit breiten, dritten IDM-Ausgangswerts z3, der dem dritten IDM-Ausgangswert z3 entspricht, wie in 4 und 5a gezeigt ist, einen vierten Eingang zum Empfangen der siebten Signalkomponente des dritten Steuersignals s0 und einen fünften Eingang zum Empfangen der achten Signalkomponente des dritten Steuersignals s1Q. Das DFC-Modul 404 weist zwei Ausgänge auf, einen ersten Ausgang z zum Liefern des umgewandelten Bit-Slice-Eingangswerts z, der dem umgewandelten Bit-Slice-Eingangswert entspricht, wie in 4 gezeigt ist, und einen zweiten Ausgang zum Liefern des zusätzlichen Bit-Slice-Übertragsausgangswerts z_o, der dem zusätzlichen Übertragswert z_o des Bit-Slice-Ausgangs entspricht, wie in 4 gezeigt ist.
  • Das DFC-Modul 404 weist 14 PMOS-Transistoren TP1–TP14 und 14 NMOS-Transistoren TN1–TN14 auf. Jeder der Transistoren weist einen Gateanschluss auf, einen ersten Kanalanschluss und einen zweiten Kanalanschluss. Das DFC-Modul 404 kann durch seine 21 internen Knoten n1*–n21* beschrieben sein.
  • Der erste, interne Knoten n1* ist mit dem dritten Eingang verbunden, der den dritten IDM-Ausgangswert z3 empfängt, und ist mit den Gateanschlüssen von TN2, TN5, TN9, TN13, qTP1, TP4, TP8 und TP12 verbunden.
  • Der zweite, interne Knoten n2* ist mit dem ersten Eingang verbunden, der den ersten IDM-Ausgangswert z1 empfängt, und ist mit den Gateanschlüssen von TN1, TN4, PN8, TN12, TP2, TP5, TP9 und TP13 verbunden.
  • Der dritte, interne Knoten n3* ist mit einer positiven Versorgungsspannung VDD und mit den ersten Kanalanschlüssen von TP1, TP2, TP4, TP8, TP9, TP10, TP7 und TP12 verbunden.
  • Der vierte, interne Knoten n4* ist mit dem zweiten Eingang verbunden, der den zweiten IDM-Ausgangswert z2 empfängt, und ist mit den Gateanschlüssen von TP3, TP10, TP14, TN3, TN10 und TN14 verbunden.
  • Der fünfte, interne Knoten n5* ist mit dem zweiten Ausgang verbunden, zum Liefern des zusätzlichen Bit-Slice-Übertragsausgangswerts z_o, mit den Gateanschlüssen von TP11 und TN11 verbunden, mit dem ersten Kanalanschluss von TN7 verbunden und mit den zweiten Kanalanschlüssen von TP6 und TP7 verbunden.
  • Der sechste, interne Knoten n6* ist mit dem ersten Ausgang zum Liefern des umgewandelten Bit-Slice-Eingangswerts z verbunden, mit den ersten Kanalanschlüssen von TN11 und TN14 verbunden und mit den zweiten Kanalanschlüssen von TP11 und TP14 verbunden.
  • Der siebte, interne Knoten n7* ist mit einem Referenzmassepotential verbunden und ist mit den zweiten Kanalanschlüssen von TP1, TN2, TN4, TN8, TN9, TN10, TN12 und TN6 verbunden.
  • Der achte, interne Knoten n8* ist mit den ersten Kanalanschlüssen von TN8, TN9 und TN10 verbunden und ist mit dem zweiten Kanalanschluss von TN11 verbunden.
  • Der neunte, interne Knoten n9* ist mit dem ersten Kanalanschluss von TP11 verbunden und ist mit den zweiten Kanalanschlüssen von TP8, TP9, TP10 verbunden.
  • Der zehnte, interne Knoten n10* ist mit den ersten Kanalanschlüssen von TN1, TN2 verbunden und ist mit dem zweiten Kanalanschluss von TN3 verbunden.
  • Der elfte, interne Knoten n11* ist mit dem ersten Kanalanschluss von TP3 verbunden und ist mit den zweiten Kanalanschlüssen von TP1, TP2 verbunden.
  • Der zwölfte, interne Knoten n12* ist mit dem ersten Kanalanschluss von TP5 verbunden und ist mit dem zweiten Kanalanschluss von TP4 verbunden.
  • Der dreizehnte, interne Knoten n13* ist mit dem ersten Kanalanschluss von TP13 verbunden und ist mit dem zweiten Kanalanschluss von TP12 verbunden.
  • Der vierzehnte, interne Knoten n14* ist mit dem ersten Kanalanschluss von TP14 verbunden und ist mit dem zweiten Kanalanschluss von TP13 verbunden.
  • Der fünfzehnte, interne Knoten n15* ist mit dem ersten Kanalanschluss von TN4 verbunden und ist mit dem zweiten Kanalanschluss von TN5 verbunden.
  • Der sechzehnte, interne Knoten n16* ist mit dem ersten Kanalanschluss von TN13 verbunden und ist mit dem zweiten Kanalanschluss von TN14 verbunden.
  • Der siebzehnte, interne Knoten n17* ist mit dem ersten Kanalanschluss von TN12 verbunden und ist mit dem zweiten Kanalanschluss von TN13 verbunden.
  • Der achtzehnte, interne Knoten n18* ist mit dem vierten Eingang zum Empfangen der siebten Signalkomponente des dritten Steuersignals s0 verbunden und ist mit den Gateanschlüssen von TN6 und TP6 verbunden.
  • Der neunzehnte, interne Knoten n19* ist mit dem fünften Eingang zum Empfangen der achten Signalkomponente des dritten Steuersignals s1Q verbunden und ist mit den Gateanschlüssen TN7 und TP7 verbunden.
  • Der zwanzigste, interne Knoten n20* ist mit den ersten Kanalanschlüssen von TN3, TN5 und TN6 verbunden und ist mit dem zweiten Kanalanschluss von TN7 verbunden.
  • Der einundzwanzigste, interne Knoten n21* ist mit dem ersten Kanalanschluss von TP6 verbunden und ist mit den zweiten Kanalanschlüssen von TP3 und TP5 verbunden.
  • Das DFC-Modul 404 ist angepasst, um die nachfolgenden Funktionen zu realisieren, abhängig von der siebten Signalkomponente s0 und der achten Signalkomponente s1Q des dritten Steuersignals.
    • Für s0 = 0, s1Q = 1: z = NOT(z3 ⊕ z2 ⊕ z1), z_o = NOT(z3·z2 + z2·z1 + z1·z3).
    • Für s0 = 1, s1Q = 1: z = NOT(z3·z2·z1), z_o = 0.
    • Für s1Q = 0: z = NOT(z3 + z2 + z1), z_o = 1.
  • z stellt den umgewandelten Bit-Slice-Eingangswert dar und z_o stellt den zusätzlichen Übertragswert des Bit-Slice-Ausgangs dar, entsprechend dem Ausführungsbeispiel der Erfindung, wie es in 4 gezeigt ist.
  • 6 zeigt ein Schaltungsdiagramm eines GPK-Latchmoduls gemäß einem Ausführungsbeispiel der Erfindung. Das GPK-Latchmodul 302 weist einen ersten Eingang auf zum Empfangen des ersten GPK-Eingangswerts a0, einen zweiten Eingang zum Empfangen des zweiten GPK-Eingangswert a1, entsprechend den GPK-Eingangswerten, die in 4 gezeigt sind. Das GPK-Latchmodul 302 weist einen dritten Eingang auf zum Empfangen der „log”-Signalkomponente „log” des ersten Steuersignals, einen vierten Eingang zum Empfangen der „add”-Signalkomponente addieren des ersten Steuersignals, einen fünften Eingang zum Empfangen der Vorlade-Signalkomponente „pchQ” des ersten Steuersignals und einen sechsten Eingang zum Empfangen der „latch”-Signalkomponente Latch bzw. Speichern des ersten Steuersignals. Das GPK-Latchmodul 302 weist einen ersten Ausgang auf zum Liefern des Erzeugen-Signals g, einen zweiten Ausgang zum Liefern des Ausbreiten-Signals p und einen dritten Ausgang zum Liefern des Löschen-Signals k. Eingangs- und Ausgangssignale entsprechen den Eingangs- und Ausgangssignalen des GPK-Latchmoduls 302, wie in 4 gezeigt ist.
  • Das GPK-Latchmodul 302 weist neun PMOS-Transistoren TP1–9, 14 NMOS-Transistoren TN1–14 und fünf Inverter INVa, b, g, p, k auf. Jeder der Transistoren weist einen Gateanschluss, einen ersten Kanalanschluss und einen zweiten Kanalanschluss auf. Jeder der Inverter weist einen Eingang und einen Ausgang auf. Das GPK-Latchmodul 302 kann durch seine dreiundzwanzig internen Knoten n1*–n23* beschrieben werden.
  • Der erste, interne Knoten n1* ist mit dem ersten Eingang zum Empfangen des ersten GPK-Eingangswerts a0 verbunden, mit dem Eingang von INVb verbunden und mit den Gateanschlüssen von TN7, TN8 verbunden.
  • Der zweite, interne Knoten n2* ist mit dem zweiten Eingang zum Empfangen des zweiten GPK-Eingangswerts a1 verbunden, mit dem Eingang von INVa verbunden und mit den Gateanschlüssen von TN2, TN5 verbunden.
  • Der dritte, interne Knoten n3* ist mit dem ersten Ausgang zum Liefern des Erzeugen-Signals g verbunden, mit dem Ausgang von INVg verbunden und mit dem Gateanschluss von TN14 verbunden.
  • Der vierte, interne Knoten n4* ist mit dem zweiten Ausgang zum Liefern des Ausbreiten-Signals p verbunden, mit dem Ausgang von INVp verbunden und mit dem Gateanschluss von TN13 verbunden.
  • Der fünfte, interne Knoten n5* ist mit dem dritten Ausgang zum Liefern des Löschen-Signals k verbunden, mit dem Ausgang von INVk verbunden und mit dem Gateanschluss von TN12 verbunden.
  • Der sechste, interne Knoten n6* ist mit dem dritten Eingang zum Empfangen der „log”-Signalkomponente „log” des ersten Steuersignals verbunden und ist mit dem Gateanschluss von TN1 verbunden.
  • Der siebte, interne Knoten n7* ist mit dem vierten Eingang zum Empfangen der „add”-Signalkomponente „add” des ersten Steuersignals verbunden und ist mit dem Gateanschluss von TN4 verbunden.
  • Der achte, interne Knoten n8* ist mit dem fünften Eingang zum Empfangen der „pchQ”-Signalkomponente „pchQ” des ersten Steuersignals verbunden und ist mit den Gateanschlüssen von TP7, TP8, TP9 verbunden.
  • Der neunte, interne Knoten n9* ist mit dem sechsten Eingang zum Empfangen der „latch”-Signalkomponente „latch” des ersten Steuersignals verbunden und ist mit dem Gateanschluss von TN11 verbunden.
  • Der zehnte, interne Knoten n10* überträgt das Inverse gq des Erzeugen-Signals g und ist mit dem Eingang von INVg verbunden, mit den Gateanschlüssen von TP2, TP6 verbunden, mit den ersten Kanalanschlüssen von TN14, TN7 verbunden und mit den zweiten Kanalanschlüssen von TP3, TP4, TP7 verbunden.
  • Der elfte, interne Knoten n11* trägt das Inverse pq des Ausbreiten-Signals p und ist mit dem Eingang von INVp verbunden, mit den Gateanschlüssen von TP4, TP5 verbunden, mit den ersten Kanalanschlüssen von TN3, TN9, TN13, TN8 verbunden und mit den zweiten Kanalanschlüssen von TP1, TP2, TP8 verbunden.
  • Der zwölfte, interne Knoten n12* trägt das Inverse kq des Löschen-Signals k und ist mit dem Eingang von INVk verbunden, mit den Gateanschlüssen von TP1, TP3 verbunden, mit den ersten Kanalanschlüssen von TN2, TN10, TN12 verbunden und mit den zweiten Kanalanschlüssen von TP5, TP6, TP9 verbunden.
  • Der dreizehnte, interne Knoten n13* ist mit dem ersten Kanalanschluss von TN1 verbunden und ist mit den zweiten Kanalanschlüssen von TN2, TN3 verbunden.
  • Der vierzehnte, interne Knoten n14* ist mit dem ersten Kanalanschluss von TP5 verbunden und mit den zweiten Kanalanschlüssen von TN7, TN9 verbunden.
  • Der fünfzehnte, interne Knoten n15* ist mit dem ersten Kanalanschluss von TN6 verbunden und mit den zweiten Kanalanschlüssen von TN8, TN10 verbunden.
  • Der sechzehnte, interne Knoten n16* ist mit dem ersten Kanalanschluss von TN11 verbunden und ist mit den zweiten Kanalanschlüssen von TN14, TN13, TN12 verbunden.
  • Der siebzehnte, interne Knoten n17* ist mit einem Massepotential verbunden und ist mit dem zweiten Kanalanschluss von TN1 verbunden.
  • Der achtzehnte, interne Knoten n18* ist mit dem Massepotential verbunden und ist mit dem zweiten Kanalanschluss von TN4 verbunden.
  • Der neunzehnte, interne Knoten n19* ist mit dem ersten Kanalanschluss von TN4 verbunden und ist mit den zweiten Kanalanschlüssen von TN5, TN6 verbunden.
  • Der zwanzigste, interne Knoten n20* ist mit dem Ausgang von INVb verbunden und ist mit den Gateanschlüssen von TN9, TN10 verbunden.
  • Der einundzwanzigste, interne Knoten n21* ist mit dem Ausgang von INVa verbunden und ist mit den Gateanschlüssen von TN3, TN6 verbunden.
  • Der zweiundzwanzigste, interne Knoten n22* ist mit einem positiven Referenzpotential VDD verbunden und ist mit den ersten Kanalanschlüssen von TP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9 verbunden.
  • Der dreiundzwanzigste, interne Knoten n23* ist mit dem Massepotential verbunden und ist mit dem zweiten Kanalanschluss von TN11 verbunden.
  • Das GPK-Latchmodul 302 ist angepasst, um abhängig von der log-Signalkomponente „log”, der Addieren-Signalkomponente „add”, der Vorladen-Signalkomponente „pchQ” und der Latch-Signalkomponente „latch” des ersten Steuersignals aus dem ersten GPK-Eingangswert a0 und dem zweiten GPK-Eingangswert a1, wobei a0 den zusätzlichen Bit-Slice-Übertragseingangswert aus dem benachbarten, niedrigerwertigen Bit-Slice darstellt, die sogenannten Übertrag-Erzeugen-, Übertrag-Ausbreiten- und Übertrag-Löschen-Signale (GPK-Signale) g, p und k zu erzeugen. Das GPK-Latchmodul 302 ist ferner konfiguriert, um die GPK-Signale für die Dauer des nachfolgenden vollständigen Übertrag-Welligkeit-(carry ripple) und/oder des Übertragsumgehungs-Prozesses zu speichern. Abhängig von dem ersten Steuersignal, den log-, add-, pchQ- und latch-Komponenten, nimmt das GPK-Latchmodul 302 die folgenden Zustände an:
    „PRECHARGE”: für pchQ = 0, latch = 0, log = 0, add = 0,
    „LOG” für pchQ = 1, latch = 0, log = 1, add = 0,
    „ADD”: für pchQ = 1, latch = 0, log = 0, add = 1,
    „LATCH”: für pchQ = 1, latch = 1, log = 0, add = 0.
  • Hier und in den nachfolgenden Abschnitten werden die gemeinsamen Äquivalente 1, was VDD entspricht, und 0, was VSS entspricht, zwischen den logischen Zuständen 0 und 1 und den physischen Pegeln VSS (Massepotential) und VDD (positives Versorgungspotential) verwendet.
  • In dem Zustand „PRECHARGE” haben der erste und der zweite GPK-Eingangswert a0 und a1 keinen Einfluss (aufgrund von log = add = 0), und auch die Rückkopplung der drei Ausgaben g, p und k wird deaktiviert durch latch = 0, so dass aufgrund von pchQ = 0 die Knoten gq, pq und kq mit VDD über die leitfähigen p-Kanal-Transistoren TP7–9 verbunden werden, wodurch Nachfolgendes gilt:
    gq = pq = kq = 1 und g = p = k = 0.
  • In dem Zustand „LOG” sind die Transistoren TP7–9 nicht leitfähig aufgrund von pchQ = 1, die Rückkopplung der Datenausgaben g, p und k ist abgeschaltet durch latch = 0, und aufgrund von log = 1, add = 0 wird die Funktion g = 0, p = a1, k = not(a1) über den zweiten NMOS-Transistor TN2 und den dritten NMOS-Transistor TN3 realisiert.
  • In dem Zustand „ADD” sind die Transistoren TP7–9 nicht leitfähig aufgrund von pchQ = 1, die Rückkopplung der Datenausgaben g, p und k wird abgeschaltet durch latch = 0, und aufgrund von log = 0, add = 1 werden die Funktionen g = a1·a0, p = XOR(a1, a0) und k = NOT(a1 + a0) über die Transistoren TN5–10 realisiert.
  • In dem Zustand „LATCH” sind die TP7–9 nicht leitfähig aufgrund von pchQ = 1, die Dateneingaben a1 und a0 haben keinen Einfluss aufgrund von log = add = 0, und die Rückkopplung der Datenausgaben g, p und k wird durch latch = 1 eingeschaltet, so dass der oben eingerichtete Zustand („LOG” oder „ADD”) von g, p und k und von gq, pq und kq mit Hilfe der Speicherzellen beibehalten wird, die gebildet sind aus TN12–14, TP1–6 und INVg, INVp und INVk für g, p und k und gq, pq und kq, um den nachfolgenden Übertrag-Welligkeit-(carry ripple) und/oder den Übertrag-Umleitungs-Prozess zu garantieren, der in Doppelschienenschaltungen (dual-rail circuits) implementiert ist.
  • 7 zeigt ein Schaltungsdiagramm eines Ausgangsdaten-XOR-Latchmoduls gemäß einem Ausführungsbeispiel der Erfindung. Das Ausgangsdaten-XOR-Latchmodul 303 weist sieben PMOS-Transistoren TP1–7, vier NMOS-Transistoren TN1–4, zwei Inverter INVp, INVyg und zwei NOR-Gates NORxy, NORxgyg auf. Jeder der Transistoren weist einen Gateanschluss, einen ersten Kanalanschluss und einen zweiten Kanalanschluss auf. Jeder der Inverter weist einen Eingang und einen Ausgang auf. Jedes der NOR-Gates weist einen ersten Eingang, einen zweiten Eingang und einen Ausgang auf. Das GPK-Latchmodul 302 kann durch seine fünfzehn internen Knoten n1*–n15* beschrieben sein.
  • Das Ausgangsdaten-XOR-Latchmodul 303 weist vier Eingänge auf, einen ersten Eingang zum Empfangen des Ausbreiten-Signals p, das dem Ausbreiten-Signal p entspricht, das in 6 gezeigt ist, einen zweiten Eingang zum Empfangen des ersten Schienenteils des Bit-Slice-Eingangsübertragswerts „c_bs_i”, das dem ersten Schienenteil des Bit-Slice-Eingangsübertragswerts „c_bs_i” entspricht, wie in 4 gezeigt ist, einen dritten Eingang zum Empfangen des zweiten Schienenteils des Bit-Slice-Eingangsübertragswerts „cq_bs_i”, das dem zweiten Schienenteil des Bit-Slice-Eingangsübertragswerts cq_bs_i entspricht, wie in 4 gezeigt ist, einen vierten Eingang zum Empfangen des zweiten Steuersignals wrQ, das dem zweiten Steuersignal wrQ entspricht, das in 4 gezeigt ist. Das Ausgangsdaten-XOR-Latchmodul 303 weist ferner einen Ausgang auf zum Liefern des Bit-Slice-Ausgangswerts „d_o” auf, der dem Bit-Slice-Ausgangswert „d_o” entspricht, wie in 4 gezeigt ist.
  • Das Ausgangsdaten-XOR-Latchmodul 303 liefert interne Werte an den internen Knoten der Schaltung, die internen Werte sind das Inverse pq des Ausbreiten-Signals p, der erste und zweite Schienenteils des Bit-Slice-Summenwerts (x, xq) und der erste und zweite Schienenteil des Bit-Slice-Latchwerts (y, yq).
  • Der erste, interne Knoten n1* ist mit dem ersten Eingang zum Empfangen des Ausbreiten-Signals p verbunden, ist mit dem Eingang von INVp verbunden und mit den Gateanschlüssen TP2, TP6 verbunden.
  • Der zweite, interne Knoten n2* ist mit dem zweiten Eingang zum Empfangen des ersten Schienenteils des Bit-Slice-Eingangsübertragswerts c_bs_i verbunden und ist mit dem Gateanschluss von TP3 verbunden.
  • Der dritte, interne Knoten n3* ist mit dem dritten Eingang zum Empfangen des zweiten Schienenteils des Bit-Slice-Eingangsübertragswerts cq_bs_i verbunden und ist mit dem Gateanschluss von TP5 verbunden.
  • Der vierte, interne Knoten n4* ist mit dem vierten Eingang zum Empfangen des zweiten Steuersignals wrQ verbunden und ist mit den Gateanschlüssen von TN3, TP4, TN4 verbunden.
  • Der fünfte, interne Knoten n5* ist mit dem Ausgang zum Liefern des Bit-Slice-Ausgangswerts d_o verbunden und ist mit dem Ausgang von INVyq verbunden.
  • Der sechste, interne Knoten n6* trägt den ersten Schienenteil des Bit-Slice-Summenwerts x und ist mit dem ersten Eingang von NORxy verbunden, mit dem Gateanschluss von TN2 verbunden und mit den ersten Kanalanschlüssen von TP1, TP6, TN1, TN3 verbunden.
  • Der siebte, interne Knoten n7* trägt den zweiten Schienenteil des Bit-Slice-Summenwerts xq und ist mit dem zweiten Eingang von NORxqyq verbunden, ist mit dem Gateanschluss von TN1 verbunden und mit den zweiten Kanalanschlüssen von TP2, TP7, TN2, TN4 verbunden.
  • Der achte, interne Knoten n8* trägt den zweiten Schienenteil des Bit-Slice-Latchwerts yq und ist mit dem ersten Eingang von NORxqyq verbunden, ist mit dem Ausgang von NORxy verbunden und mit dem Eingang von INVyq verbunden.
  • Der neunte, interne Knoten n9* trägt den ersten Schienenteil des Bit-Slice-Latchwerts y und ist mit dem zweiten Eingang von NORxy verbunden und mit dem Ausgang von NORxqyq verbunden.
  • Der zehnte, interne Knoten n10* ist mit den ersten Kanalanschlüssen von TP2, TP3 verbunden und ist mit dem zweiten Kanalanschluss von TP1 verbunden.
  • Der elfte, interne Knoten n11* ist mit dem ersten Kanalanschluss von TP5 verbunden und ist mit den zweiten Kanalanschlüssen von TP3, TP4 verbunden.
  • Der zwölfte, interne Knoten n12* ist mit dem ersten Kanalanschluss von TP7 verbunden und ist mit den zweiten Kanalanschlüssen von TP5, TP6 verbunden.
  • Der dreizehnte, interne Knoten n13* ist mit den ersten Kanalanschlüssen von TN2, TN4 verbunden, ist mit den zweiten Kanalanschlüssen von TN1, TN3 verbunden und ist mit einem Referenzmassepotential verbunden.
  • Der vierzehnte, interne Knoten n14* ist mit dem ersten Kanalanschluss von TP4 verbunden und ist mit einem positiven Referenzpotential VDD verbunden.
  • Der fünfzehnte, interne Knoten n15* trägt das Inverse pq des Ausbreiten-Signals p und ist mit dem Ausgang von INVp verbunden und ist mit den Gateanschlüssen von TP1, TP7 verbunden.
  • Das Ausgangsdaten-XOR-Latchmodul 303 ist angepasst, um abhängig von dem zweiten Steuersignal wrQ den Bit-Slice-Ausgangswert d_o aus dem Ausbreiten-Signal p zu berechnen, das den Übertrag-Ausbreiten- und den Doppelschienen-Bit-Slice-Eingangsübertragswert (c_b_i, cq_bs_i) darstellt, und denselben zu speichern.
  • Wenn das zweite Steuersignal wrQ gleich 1 ist, gilt x = xq = 0, und das RS-Latch, das aus dem ersten NOR-Gate NORxy, dem zweiten NOR-Gate NORxqyq und dem ersten Inverter INVyq gebildet ist, enthält einen vorangehend geschriebenen Zustand (y, yq) = (0, 1) oder = (1, 0). Wenn das zweite Steuersignal wrQ gleich 0 ist, wird der Vorlade- bzw. Entladeprozess von (x, xq) zu (0, 0) beendet und durch den jetzt leitfähigen vierten PMOS-Transistor TP4 werden die Doppelschienen-XOR-Funktionen x = NOT(p)·NOT(cq) + NOT(pq)·NOT(c), xq = NOT(p)·NOT(c) + NOT(pq)·NOT(cq)die durch den ersten, zweiten und dritten PMOS-Transistor TP1–3 und den fünften bis siebten PMOS-Transistor TP5–7 realisiert sind, aktiviert.
  • Der Übergang des zweiten Steuersignals wrQ von einer logischen 1 auf eine logische 0 findet nur statt, was durch die Steuereinheit gesteuert wird, nachdem das Übertrag-Ausbreiten-Signal p, das in dem GPK-Latchmodul 302 berechnet wird, logisch gültig ist, während der Bit-Slice-Eingangsübertragswert (c_bs_i, cq_bs_i), der von dem benachbarten niedrigerwertigen Bit-Slice-Addierer 111114 oder von dem Übertragsumgehungsmodul 201 kommt, wie in 2 gezeigt ist, entweder immer noch in dem Vorladezustand sein kann (1, 1) oder auch bereits logisch gültig sein kann, d. h. (0, 1) oder (1, 0). Somit wird durch das Ausgangsdaten-XOR-Latchmodul 303 eine so genannte Selbsttaktung garantiert: in dem Fall von (c_bs_i, cq_bs_i) = (1, 1) während des Übergangs des zweiten Steuersignals wrQ von einer logischen 1 auf eine logische 0, bleiben die oben angezeigten Doppelschienen-XOR-Funktionen inaktiv, bis der Bit-Slice-Eingangsübertragswert (c_bs_i, cq_bs_i) logisch gültig wird, d. h. (komplementäre) (0, 1) oder (1, 0), d. h. nur wenn die logische Gültigkeit von (c_bs_i, cq_bs_i) gegeben ist, kann der Bit-Slice-Summenwert (x, xq) auch seinen Vorladezustand verlassen (0, 0) und das RS-Latch überschreiben, das gebildet ist aus dem NOR-Gate NORxy, dem NOR-Gate NORxqyq und dem Inverter INVyq. Dies bedeutet wiederum, dass der Bit-Slice-Summenwert (x, xq) genau einmal pro Takt und/oder Rechenprozess logisch gültig wird, während der Bit-Slice-Latchwert (y, yq) und der Bit-Slice-Ausgangswert d_o ihren Zustand höchstens einmal pro Takt ändern.
  • 8 zeigt ein Schaltungsdiagramm eines Übertragswegmoduls gemäß einem Ausführungsbeispiel der Erfindung. Das Übertragswegmodul 304 weist einen ersten Eingang zum Empfangen des Löschen-Signals k, einen zweiten Eingang zum Empfangen des Erzeugen-Signals g, einen dritten Eingang zum Empfangen des Ausbreiten-Signals p auf, die den GPK-Signalen entsprechen, die in 6 gezeigt sind. Das Übertragswegmodul 304 weist einen vierten Eingang auf zum Empfangen des ersten Schienenteils des Bit-Slice-Eingangsübertrags c_bs_i, und einen fünften Eingang zum Empfangen des zweiten Schienenteils des Bit-Slice-Eingangsübertrags cq_bs_i, die dem Bit-Slice-Eingangsübertrag entsprechen (c_bs_i, cq_bs_i), wie in 4 gezeigt ist. Das Übertragswegmodul 304 weist einen ersten Ausgang auf zum Liefern des ersten Schienenteils des Bit-Slice-Ausgangsübertrags c_bs_o, und weist einen zweiten Ausgang auf zum Liefern des ersten Schienenteils des Bit-Slice-Ausgangsübertrags cq_bs_o. Das Übertragswegmodul 304 weist sechs PMOS-Transistoren TP1–6 und vier NMOS-Transistoren TN1–4 auf.
  • Jeder der Transistoren weist einen Gateanschluss, einen ersten Kanalanschluss und einen zweiten Kanalanschluss auf. Jeder der Inverter weist einen Eingang und einen Ausgang auf. Das Übertragswegmodul 304 kann durch seine fünfzehn internen Knoten n1*–n15* beschrieben sein.
  • Der erste, interne Knoten n1* ist mit dem ersten Eingang zum Empfangen des Löschen-Signals k verbunden und ist mit den Gateanschlüssen von TP4, TN3 verbunden.
  • Der zweite, interne Knoten n2* ist mit dem zweiten Eingang zum Empfangen des Erzeugen-Signals g verbunden und ist mit den Gateanschlüssen von TP6, TN4 verbunden.
  • Der dritte, interne Knoten n3* ist mit dem dritten Eingang zum Empfangen des Ausbreiten-Signals p verbunden und ist mit den Gateanschlüssen TN1, TN2, TP3, TP5 verbunden.
  • Der vierte, interne Knoten n4* ist mit dem ersten Ausgang zum Liefern des ersten Schienenteils des Bit-Slice-Ausgangsübertrags c_bs_o verbunden, mit dem Gateanschluss TP1 verbunden, mit den ersten Kanalanschlüssen von TN1, TN3 verbunden und mit den zweiten Kanalanschlüssen von TP2, TP4 verbunden.
  • Der fünfte, interne Knoten n5* ist mit dem zweiten Ausgang zum Liefern des zweiten Schienenteils des Bit-Slice-Ausgangsübertrags cq_bs_o verbunden, mit dem Gateanschluss von TP2 verbunden, mit den ersten Kanalanschlüssen von TN4, TN2 verbunden und mit den zweiten Kanalanschlüssen von TP1, TP6 verbunden.
  • Der sechste, interne Knoten n6* ist mit dem vierten Eingang zum Empfangen des ersten Schienenteils des Bit-Slice-Eingangsübertrags c_bs_i verbunden und mit dem zweiten Kanalanschluss von TN1 verbunden.
  • Der siebte, interne Knoten n7* ist mit dem fünften Eingang zum Empfangen des zweiten Schienenteils des Bit-Slice-Eingangsübertrags cq_bs_i verbunden und mit dem zweiten Kanalanschluss von TN2 verbunden.
  • Der achte, interne Knoten n8* ist mit dem ersten Kanalanschluss von TP3 verbunden und mit einer positiven Versorgungsspannung VDD verbunden.
  • Der neunte, interne Knoten n9* ist mit dem ersten Kanalanschluss von TP1 verbunden und mit der positiven Versorgungsspannung VDD verbunden.
  • Der zehnte, interne Knoten n10* ist mit dem ersten Kanalanschluss von TP2 verbunden und ist mit der positiven Versorgungsspannung VDD verbunden.
  • Der elfte, interne Knoten n11* ist mit dem ersten Kanalanschluss von TP5 verbunden und mit der positiven Versorgungsspannung VDD verbunden.
  • Der zwölfte, interne Knoten n12* ist mit dem zweiten Kanalanschluss von TN3 verbunden und mit einem Massereferenzpotential verbunden.
  • Der dreizehnte, interne Knoten n13* ist mit dem zweiten Kanalanschluss von TN4 verbunden und mit dem Massereferenzpotential verbunden.
  • Der vierzehnte, interne Knoten n14* ist mit dem zweiten Kanalanschluss von TP3 verbunden und mit dem ersten Kanalanschluss von TP4 verbunden.
  • Der fünfzehnte, interne Knoten n15* ist mit dem zweiten Kanalanschluss von TP5 verbunden und mit dem ersten Kanalanschluss von TP6 verbunden.
  • Das Übertragswegmodul 304 ist angepasst, um den Bit-Slice-Ausgangsübertrag (c_bs_o, cq_bs_o) aus dem Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) und aus den GPK-Signalen g, p, k zu bestimmen. In dem oben beschriebenen Zustand „PRECHARGE” gilt zuerst g = p = k = 0 und daher für den Bit-Slice-Ausgangsübertrag (c_bs_o, cq_bs_o) = (1, 1), während der Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) von dem Rest der Schaltung isoliert ist, da das Ausbreiten-Signal p gleich 0 ist. Da jedoch der Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) entweder von dem nächsten niedrigerwertigen Bit-Slice-Addierer 111114 kommt oder von dem Übertragsumgehungsmodul 201 kommt, wie in 2 gezeigt ist, gilt auch der Bit-Slice-Eingangsübertrag (c_bs_i, cq_bs_i) = (1, 1) während des Zustands „PRECHARGE”.
  • Sobald die GPK-Signale g, p, k während des Zustands „LOG” oder des Zustands „ADD” und des Zustands „LATCH” logisch gültig werden, d. h. (g, p, k) = (0, 0, 1), (0, 1, 0) oder (1, 0, 0), können die folgenden Fälle auftreten: für „carry kill” (Übertrag-Löschen), d. h. (g, p, k) = (0, 0, 1), (c_bs_o, cq_bs_o) = (0, 1) wird unabhängig von (c_bs_i, cq_bs_i) aufgrund von p = 0; für „carry generste” (Übertrag-Erzeugen), d. h. (g, p, k) = (1, 0, 0), (c_bs_o, cq_bs_o) = (1, 0) wird unabhängig von (c_bs_i, cq_bs_i) aufgrund von p = 0; für „carry propagate” (Übertrag-Ausbreiten), d. h. (g, p, k) = (0, 1, 0), (c_bs_o, cq_bs_o) = (c_bs_i, cq_bs_i) aufgrund von p = 1.
  • 9 zeigt ein Schaltungsdiagramm eines Übertragsumgehungsmoduls gemäß einem Ausführungsbeispiel der Erfindung. Das Übertragsumgehungsmodul 201 entspricht dem Übertragsumgehungsmodul 201, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist zehn Eingänge, fünf Ausgänge, ein UND-Gate „AD0” zum Ausführen einer logischen UND-Operation, drei NAND-Gates „ND0”, „ND1”, „ND2” zum Ausführen der logischen NAND-Operation, zwölf Inverter „IV0–11”, zehn PMOS-Transistoren TP0–9 und sechs NMOS-Transistoren „TN0–5” auf.
  • Jeder der Transistoren weist einen Gateanschluss, einen ersten Kanalanschluss und einen zweiten Kanalanschluss auf. Jeder der Inverter weist einen Eingang und einen Ausgang auf. Jedes der NAND-Gates weist einen ersten Eingang, einen zweiten Eingang und einen Ausgang auf. Das UND-Gate weist einen ersten, zweiten, dritten und vierten Eingang und einen Ausgang auf. Das Übertragswegmodul 304 kann durch seine Eingänge c<3>, cq<3>, p<3>, p<2>, p<1>, p<0>, cRdy_i, pchQ, cq_i, c_i, Ausgänge ci, cqi, cRdy_o, cq_o, c_o, seine internen Knoten co*, coq*, cq3*, c3*, p30*, c*, cq*, cq0*, c0*, p30Q*, cByEnQ*, cByPchQ*, cByEn*, ci*, ciq* und Referenzknoten beschrieben sein, die eine positive Versorgungsspannung VDD und ein Massereferenzpotential tragen.
  • Das Übertragsumgehungsmodul 201 weist einen ersten Eingang zum Empfangen des ersten Schienenteils des Übertragsausgangs c<3> auf, der dem ersten Schienenteil des Übertragsausgangs c<3> entspricht, der in 2 gezeigt ist.
  • Das Übertragsumgehungsmodul 201 weist einen zweiten Eingang zum Empfangen des zweiten Schienenteils des Übertragsausgangs cq<3> auf, der dem zweiten Schienenteil des Übertragsausgangs cq<3> entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen dritten Eingang zum Empfangen des vierten Ausbreiten-Signals p<3> auf, das dem vierten Ausbreiten-Signal p<3> entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen vierten Eingang zum Empfangen des dritten Ausbreiten-Signals p<2> auf, das dem dritten Ausbreiten-Signal p<2> entspricht, das in 2 gezeigt ist. Das Übertragsumgehungsmodul weist einen fünften Eingang zum Empfangen des zweiten Ausbreiten-Signals p<1> auf, das dem zweiten Ausbreiten-Signal p<1> entspricht, das in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen sechsten Eingang zum Empfangen des ersten Ausbreiten-Signals p<0> auf, das dem ersten Ausbreiten-Signal p<0> entspricht, das in 2 gezeigt ist.
  • Das Übertragsumgehungsmodul 201 weist einen siebten Eingang zum Empfangen des Gültigkeitssignals der ersten benachbarten Makrozelle „cRdy_i” auf, das in dem Übertragsumgehungssteuersignal ctrl_cb umfasst sein kann, das in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen achten Eingang zum Empfangen einer Vorlade-Signalkomponente „pchQ” des ersten Steuersignals „ctrl_gpk” auf, die der Vorlade-Signalkomponente „pchQ” des ersten Steuersignals „ctrl_gpk” entspricht, das in 4 gezeigt ist, und in dem Übertragsumgehungssteuersignal „ctrl_cb” umfasst ist, das in 2 gezeigt ist.
  • Das Übertragsumgehungsmodul 201 weist einen neunten Eingang auf zum Empfangen des zweiten Schienenteils des Übertrags der ersten, benachbarten Makrozelle „cq_i”, der dem zweiten Schienenteil des Übertrags der ersten, benachbarten Makrozelle „cq_i” entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen zehnten Eingang auf zum Empfangen des ersten Schienenteils des Übertrags der ersten, benachbarten Makrozelle „c_i”, der dem ersten Schienenteil des Übertrags der ersten, benachbarten Makrozelle „c_i” entspricht, wie in 2 gezeigt ist.
  • Das Übertragsumgehungsmodul 201 weist einen ersten Ausgang auf zum Liefern des ersten Schienenteils des Übertragseingangs zu dem Addiererblock „ci”, der dem ersten Schienenteil des Übertragseingangs zu dem Addiererblock „ci” entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen zweiten Ausgang zum Liefern des zweiten Schienenteils des Übertragseingangs zu dem Addiererblock „cqi” auf, der dem zweiten Schienenteil des Übertragseingangs des Addiererblocks „cqi” entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen dritten Ausgang auf zum Liefern des Ausgangsgültigkeitssignals „cRdy_o”, das dem Ausgangsgültigkeitssignal „cRdy_o” entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen vierten Ausgang zum Liefern des zweiten Schienenteils des Übertrags zu der zweiten, benachbarten Makrozelle „cq_o” auf, der dem zweiten Schienenteil des Übertrags zu der zweiten, benachbarten Makrozelle „cq_o” entspricht, wie in 2 gezeigt ist. Das Übertragsumgehungsmodul 201 weist einen fünften Ausgang auf zum Liefern des ersten Schienenteils des Übertrags zu der zweiten, benachbarten Makrozelle „c_o”, der dem ersten Schienenteil des Übertrags zu der zweiten, benachbarten Makrozelle „c_o” entspricht, wie in 2 gezeigt ist.
  • Der erste Eingang zum Empfangen des ersten Schienenteils des Übertragsausgangs c<3> ist mit dem Eingang von IV7 verbunden. Der zweite Eingang zum Empfangen des zweiten Schienenteils des Übertragsausgangs cq<3> ist mit dem Eingang von IV8 verbunden.
  • Der dritte Eingang zum Empfangen des vierten Ausbreiten-Signals p<3> ist mit dem ersten Eingang von AD0 verbunden. Der vierte Eingang zum Empfangen des dritten Ausbreiten-Signals p<2> ist mit dem zweiten Eingang von AD0 verbunden. Der fünfte Eingang zum Empfangen des zweiten Ausbreiten-Signals p<1> ist mit dem dritten Eingang von AD0 verbunden. Der sechste Eingang zum Empfangen des ersten Ausbreiten-Signals p<0> ist mit dem vierten Eingang von AD0 verbunden.
  • Der siebte Eingang zum Empfangen des Gültigkeitssignals der ersten, benachbarten Makrozelle cRdy_i ist mit dem ersten Eingang von ND0 verbunden. Der achte Eingang zum Empfangen der Vorlade-Signalkomponente „pchQ” des ersten Steuersignals ctrl_gpk ist mit dem zweiten Eingang von ND0 verbunden.
  • Der neunte Eingang zum Empfangen des zweiten Schienenteils des Übertrags der ersten, benachbarten Makrozelle cq_i ist mit dem Eingang von IV1 verbunden. Der zehnte Eingang zum Empfangen des ersten Schienenteils des Übertrags der ersten, benachbarten Makrozelle c_i ist mit dem Eingang von IV2 verbunden.
  • Der erste Ausgang zum Liefern des ersten Schienenteils des Übertragseingangs zu dem Addiererblock ci ist mit dem Ausgang von IV4 verbunden. Der zweite Ausgang zum Liefern des zweiten Schienenteils des Übertragseingangs zu dem Addiererblock cqi ist mit dem Ausgang von IV6 verbunden.
  • Der dritte Ausgang zum Liefern des Ausgangsgültigkeitssignals cRdy_o ist mit dem Ausgang von ND2 verbunden. Der vierte Ausgang zum Liefern des zweiten Schienenteils des Übertrags zu der zweiten, benachbarten Makrozelle cq_o ist mit dem Ausgang von IV10 verbunden. Der fünfte Ausgang zum Liefern des ersten Schienenteils des Übertrags zu der zweiten, benachbarten Makrozelle c_o ist mit dem Ausgang von IV9 verbunden.
  • Der interne Knoten co* ist mit dem Eingang von IV10 verbunden, mit dem ersten Eingang von ND2 verbunden, mit dem Gateanschluss von TP9 verbunden, mit den ersten Kanalanschlüssen von TP8, TN4, TN2 verbunden und mit dem zweiten Kanalanschluss von TP6 verbunden.
  • Der interne Knoten coq* ist mit dem Eingang von IV9 verbunden, mit dem zweiten Eingang von ND2 verbunden, mit dem Gateanschluss von TP8 verbunden, mit den ersten Kanalanschlüssen von TN5, TN3 verbunden und mit den zweiten Kanalanschlüssen von TP9, TP4 verbunden.
  • Der interne Knoten c* ist mit dem Eingang von IV3 verbunden, mit dem Gateanschluss von TP3 verbunden, mit den ersten Kanalanschlüssen von TP2, TP0, TN0 verbunden und mit dem zweiten Kanalanschluss von TN2 verbunden.
  • Der interne Knoten cq* ist mit dem Eingang von IV5 verbunden, mit dem Gateanschluss von TP2 verbunden, mit dem ersten Kanalanschluss von TN1 verbunden und mit den zweiten Kanalanschlüssen von TP3, TN3, TP1 verbunden.
  • Der interne Knoten ci* ist mit dem Ausgang von IV1 verbunden und mit dem zweiten Kanalanschluss von TN0 verbunden.
  • Der interne Knoten ciq* ist mit dem Ausgang von IV2 verbunden und mit dem zweiten Kanalanschluss von TN1 verbunden.
  • Der interne Knoten cq3* ist mit dem Ausgang von IV7 verbunden und mit den Gateanschlüssen von TN4, TP6 verbunden.
  • Der interne Knoten c3* ist mit dem Ausgang von IV8 verbunden und mit den Gateanschlüssen von TN5, TP4 verbunden.
  • Der interne Knoten p30* ist mit dem Ausgang von AD0 verbunden, mit dem Eingang von IV11 verbunden und mit den Gateanschlüssen von TN2, TN3, TP7, TP5 verbunden.
  • Der interne Knoten cq0* ist mit dem Ausgang von IV3 verbunden und mit dem Eingang von IV4 verbunden.
  • Der interne Knoten c0* ist mit dem Ausgang von IV5 verbunden und mit dem Eingang von IV6 verbunden.
  • Der interne Knoten p30Q* ist mit dem Ausgang von IV11 verbunden und mit dem ersten Eingang von ND1 verbunden.
  • Der interne Knoten cByEnQ* ist mit dem Ausgang von ND0 verbunden, mit dem Eingang von IV0 verbunden und mit dem zweiten Eingang von ND1 verbunden.
  • Der interne Knoten cByPchQ* ist mit dem Ausgang von ND1 verbunden und mit den Gateanschlüssen von TP0, TP1 verbunden.
  • Der interne Knoten cByEn* ist mit dem Ausgang von IV0 verbunden und mit den Gateanschlüssen von TN0, TN1 verbunden.
  • Der Referenzknoten, der die positive Versorgungsspannung VDD trägt, ist mit den ersten Kanalanschlüssen von TP9, TP5, TP7, TP3, TP1 verbunden und mit den zweiten Kanalanschlüssen von TP8, TP2, TP0 verbunden.
  • Der Referenzknoten, der das Massereferenzpotential trägt, ist mit den zweiten Kanalanschlüssen von TN5, TN4 verbunden.
  • Der zweite Kanalanschluss von TP7 ist mit dem ersten Kanalanschluss von TP6 verbunden.
  • Der zweite Kanalanschluss von TP5 ist mit dem ersten Kanalanschluss von TP4 verbunden.
  • Das Übertragsumgehungsmodul 201 ist ein Teil der Steuereinheit 102 und ist angepasst, um aus den Daten abhängig von den Eingangswerten data_i des Addiererblocks 101, d. h. aus dem ersten, zweiten, dritten und vierten Ausbreiten-Signal p<0>, p<1>, p<2>, p<3> zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle (cq_i, c_i) einen Umgehungsweg zu der zweiten, benachbarten Makrozelle 20 (über den Umgehungsweg 202) passieren kann. Die Steuereinheit 102 ist angepasst, um eine Gültigkeit des Übertrags, der aus der Makrozelle 100 zu der zweiten, benachbarten Makrozelle 20 ausgegeben wird, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen (cq_o, c_o) zu signalisieren. Die Gültigkeit wird über das Ausgangsgültigkeitssignal cRdy_o signalisiert. Die Steuereinheit 102 ist ferner angepasst, abhängig von einem Gültigkeitssignal (cRdy_i) der ersten, benachbarten Makrozelle 10, die eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle (cq_i, c_i) anzeigt, ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle (cq_i, c_i) zu dem Umgehungsweg 202 bzw. dem Addiererblock 902 zu verhindern. Die Steuereinheit 102 ist ferner angepasst, um ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle (cq_i, c_i) abhängig von der Vorlade-Signalkomponente pchQ des ersten Steuersignals zu verhindern.
  • Das Übertragsumgehungsmodul 201 ist angepasst, um als einen Eingang einen Doppelschienenübertrag an seinen Übertragseingängen (c_i, cq_i) zu akzeptieren, d. h. entweder eine andere Makrozelle, die den Übertrag durch ihre Ausgangsflagsignale flags_o und/oder Übertragsbits liefert, oder aus einer halbkundenspezifischen Logik, die von anderswo bereitgestellt wird.
  • Das Übertragsumgehungsmodul (carry bypass module) 201 ist angepasst, um den Übertrag der ersten, benachbarten Makrozelle (c_i, cq_i) auf den niederwertigsten Bit-Slice-Addierer 111 als Übertragseingang zu dem Addiererblock (ci, cqi) innerhalb der entsprechenden Makrozelle 100 zu leiten. Das Übertragsumgehungsmodul 201 ist ferner angepasst, entweder den Übertrag seiner benachbarten Makrozelle (c_i, cq_i) auf den fünften und vierten Ausgang des Übertragsumgehungsmoduls 201 als Übertrag zu der zweiten, benachbarten Makrozelle (c_o, cq_o) zu schalten, der in den Ausgangsflagsignalen flags_o umfasst sein kann, wie in 1 gezeigt ist (in diesem Fall von „carry bypass” (Übertrag- Umgehung), sind die Übertrag-Ausbreiten-Signale bzw. die Ausbreiten-Signale p<3>, p<2>, p<1> und p<0> aller vier Bit-Slice-Addierer 111114 gleich 1, daher ist das interne Signal des Übertragsumgehungsmoduls 201 p30* = 1), und um den Übertragsausgang (c<3>, cq<3>) des höchstwertigen Bit-Slice-Addierers 114 zu empfangen, wie in 2 gezeigt ist, an seinem ersten und zweiten Eingang, und denselben über seinen vierten und fünften Ausgang (cq_o, c_o) zu den Ausgangsflagsignalen flags_o der Makrozelle 100 auszugeben (in diesem Fall sind die Übertrag-Ausbreiten-Signale bzw. die Ausbreiten-Signale p<3>, p<2>, p<1> und p<0> der vier Bit-Slice-Addierer 111114 nicht notwendigerweise alle gleich 1, daher kann das interne Signal des Übertragsumgehungsmoduls 201 p30* 0 sein), und um das Ausgangsgültigkeitssignal cRdy_o zum Anzeigen des internen Zustands der Makrozelle 100 zu erzeugen: cRdy_o = 0 entspricht dem PRECHARGE-Zustand (Vorladezustand), cRdy_o = 1 entspricht entweder dem Zustand ADD (Addieren), LOG oder LATCH. Aufgrund von cRdy_o = NOT(co*·coq*), wird einerseits angezeigt durch cRdy_o = 0, dass co* = coq* = 1, d. h. dass (co*, coq*) in dem Vorladezustand „PRECHARGE” sind (tatsächlich sind in dem obigen Zustand „PRECHARGE”, der für das Teilschaltungs-GPK-Latchmodul 302 beschrieben wurde, nicht nur die Bit-Slice-Ausgangsüberträge (c_bs_o, cq_bs_o) des Teilschaltungsübertragswegmoduls 304 in den Vorladezustand (1, 1) in allen Bit-Slice-Addierern 111114 gesetzt, sondern über den Übertragsausgang (c<3>, cq<3>) = (1, 0) und die Ausbreiten-Signale p<3> = p<2> = p<1> = p<0> = 0 und das interne Signal p30* = 0; auch das interne Signal (co*, coq*) = (1, 1) innerhalb des Übertragsumgehungsmoduls 201). Andererseits bedeutet das Ausgangsgültigkeitssignal cRdy_o = 1, dass das interne Signal (co*, coq*) logisch gültig ist, d. h. entweder gleich (0, 1) oder (1, 0).
  • Das Signal des siebten Eingangs, das Gültigkeitssignal der ersten, benachbarten Makrozelle cRdy_i entspricht dem Ausgangssignal an dem dritten Ausgang des Übertragsumgehungsmoduls 201 der ersten benachbarten Makrozelle 10, was dem Ausgangsgültigkeitssignal cRdy_o der ersten, benachbarten Makrozelle 10 entspricht, d. h. durch das Gültigkeitssignal der ersten, benachbarten Makrozelle cRdy_i = 1 wird der Makrozelle 100 durch die erste, benachbarte Makrozelle 10 signalisiert, dass ihre niedrigerwertigen Übertragsausgänge (c_o, cq_o) und somit die Übertragseingänge (c_i, cq_i) der betrachteten Makrozelle 100 logisch gültig sind, d. h. entweder gleich (0, 1) oder gleich (1, 0).
  • Die Vorlade-Signalkomponente pchQ des ersten Steuersignals entspricht der Vorlade-Signalkomponente pchQ des ersten Steuersignals, wie in 4 gezeigt ist. Daraus ergibt sich, dass der Übertrag der ersten, benachbarten Makrozelle (c_i, cq_i) nur zu den internen Knoten (c*, cq*) des Übertragsumgehungsmoduls 201 mit dem internen Signal cByEn* = 1 weitergeleitet wird, wenn pchQ = cRdy_i = 1 gilt, d. h. wenn die Makrozelle 100 nicht in dem Zustand „PRECHARGE” ist, und wenn der Übertragsausgang aus der ersten, benachbarten Makrozelle zu der betrachteten Makrozelle (c_i, cq_i) logisch gültig ist. Dementsprechend wird das Vorladen der internen Knoten (c*, cq*) des Übertragsumgehungsmoduls 201 nur ausgeschaltet (mit dem internen Knotensignal cByPchQ = 1), wenn pchQ = cRdy_i = 1 (oder wenn das interne Signal p30* = 1, wodurch verhindert wird, dass mit p30* = 1 das Vorladesignal cByPchQ* mit der abfallenden Flanke pchQ = 1 -> 0 zu bald aktiv wird, d. h. gleich 0, wobei in diesem Fall ein temporarer Treiberkonflikt zwischen den p-Kanal-Transistoren, die durch cByPchQ* gesteuert werden, und den n-Kanal-Transistoren, die durch c3* und c3q* gesteuert werden, resultieren würde, die noch nicht im Vorladezustand sind; somit kann cByPchQ* nur aktiv werden, wenn das interne Signal p30* = 0 und/oder nachdem eine mögliche abfallende Flanke p30* = 1 -> 0, wodurch ein unnötiger Energieverlust verhindert wird).
  • 10 zeigt ein Zeitgebungsdiagramm für Makrozellensignale gemäß einem Ausführungsbeispiel der Erfindung. 10 zeigt die Zeitgebung des gemeinsamen Taktsignals clk, die Latch-Signalkomponente „latch” des ersten Steuersignals, die Vorlade-Signalkomponente „pchQ” des ersten Steuersignals, die add/log-Signalkomponente „add/log” des ersten Steuersignals, das zweite Steuersignal wrQ, den ersten bis vierten Eingangswert data_i<>, das IDC/GPK-Steuersignal ctrl_idc/gpk (ctrl_gpk entspricht dem ersten Steuersignal, ctrl_idc entspricht dem dritten Steuersignal) und das Ausgangsgültigkeitssignal cRdy_o. Die Steuereinheit 102 ist angepasst, um die Latch-Signalkomponente „latch” des ersten Steuersignals auf eine logische 0 einzustellen, ansprechend auf eine ansteigende Flanke des gemeinsamen Taktsignals clk, dargestellt durch einen ersten Pfeil 1001. 10 stellt nur den Fall eines Ansteigende-Taktflanke-Auslösers dar. Ein anderes Ausführungsbeispiel der Erfindung weist eine Steuereinheit 102 auf, die durch eine abfallende Taktflanke ausgelöst wird.
  • Die Steuereinheit 102 ist ferner angepasst, um die pchQ-Signalkomponente „pchQ” des ersten Steuersignals auf eine logische Null einzustellen, ansprechend auf eine abfallende Flanke der Latch-Signalkomponente latch, wie durch einen zweiten Pfeil 1002 dargestellt ist. Die Steuereinheit 102 ist ferner angepasst, um das zweite Steuersignal wrQ auf eine logische 1 einzustellen, ansprechend auf die ansteigende oder abfallende Flanke des gemeinsamen Taktsignals clk, wie durch einen dritten Pfeil 1003 dargestellt ist. Die Steuereinheit 102 ist ferner angepasst, um die pchQ-Signalkomponente „pchQ” des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf eine abfallende Flanke des Ausgangsgültigkeitssignals cRdy_o, wie durch einen vierten Pfeil 1004 angezeigt ist, ist angepasst, um die Addieren-Signalkomponente „add” oder die log-Signalkomponente „log” des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf die Einstellung der pchQ-Signalkomponente „pchQ” auf die logische 1, dargestellt durch einen fünften Pfeil 1005, ist angepasst, um die Latch-Signalkomponente „latch” des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf das Einstellen der Addieren-Signalkomponente „add” oder der log-Signalkomponente „log” auf die logische 1, wie durch einen sechsten Pfeil 1006 dargestellt ist, und ist angepasst, um die Addieren-Signalkomponente „add” oder die log-Signalkomponente „log” des ersten Steuersignals auf eine logische 0 einzustellen, ansprechend auf das Einstellen der Latch-Signalkomponente „latch” auf die logische 1, wie durch einen siebten Pfeil 1007 dargestellt ist.
  • Die Steuereinheit 102 ist ferner angepasst, um das zweite Steuersignal wrQ auf eine logische 0 einzustellen, ansprechend auf die nächste Flanke nach der ansteigenden Flanke des gemeinsamen Taktsignals clk, dargestellt durch einen achten Pfeil 1008. Der Addiererblock 101 wird mit einer nächsten Sequenz aus Eingangswerten data_i durch eine externe Schaltungsanordnung zwischen der abfallenden und der nächsten ansteigenden Flanke des gemeinsamen Taktsignals clk gespeist, wie durch einen neunten Pfeil 1009 dargestellt ist. Das Speisen des Addiererblocks 101 mit Eingangswerten wird nicht durch die Steuereinheit 102 gesteuert. Die externe Schaltungsanordnung benötigt eine Synchronisierung mit dem gemeinsamen Taktsignal clk, um ein synchronisiertes Speisen des Addiererblocks zu garantieren. Auch das dritte Steuersignal ctrl_idc und das erste Steuersignal ctrl_gpk können durch die externe Schaltungsanordnung geändert werden, synchronisiert mit dem Speisen des Addiererblocks 101 mit neuen Eingangswerten data_i, wie durch den zehnten Pfeil 1010 dargestellt ist.
  • Das Einstellen des Ausgangsgültigkeitssignals cRdy_o von einer logischen 1 auf eine logische 0 hängt von den internen Zustandsübergängen der Makrozelle 100 ab, wie in dem obigen Abschnitt entsprechend der Beschreibung von 9 beschrieben ist, und führt schließlich zu dem Übergang von einer logischen 1 auf eine logische 0, wie durch einen elften Pfeil 1011 dargestellt ist. Ferner hängt der zugehörige Übergang des Ausgangsgültigkeitssignals cRdy_o von einer logischen 0 auf eine logische 1, dargestellt durch einen zwölften Pfeil 1012, von den internen Übergängen der Makrozelle 100 ab, und hängt daher nicht direkt von dem gemeinsamen Taktsignal clk ab. Die Pfeile 1011 und 1012, die sich auf die Zustandsübergänge des Ausgangsgültigkeitssignals cRdy_o beziehen, stellen das asynchrone Inter- und Intra-Makrozellen-Selbsttakten der Makrozelle 100 dar, das zu den oben erwähnten Vorteilen führt, im Hinblick auf Siliziumbereich, Verarbeitungszeit und Energieverbrauch sowie Können und Entwurfsaufwand.
  • Vor der ansteigenden Flanke clk = 0 -> 1 des Taktsignals clk (von außen geliefert) ist die Makrozelle 100 in dem Zustand „LATCH” und Folgendes gilt: pchQ = 1, latch = 1, log = 0, add = 0.
  • Wenn clk = 0 -> 1, werden in der Steuereinheit 102 zwei Aktionen ausgelöst: eine abfallende Flanke des Signals latch = 1 -> 0 und eine ansteigende Flanke wrQ = 0 -> 1, wodurch einerseits die Latchfunktion in dem GPK-Latchmodul 302 ausgeschaltet wird, um dann das RS-Latch in dem Ausgangsdaten-XOR-Latchmodul 303 einzustellen, seinen Modus zu halten.
  • Aus latch = 1 -> 0 wird eine abfallende Flanke pchQ = 1 -> 0 hergeleitet, wodurch die Makrozelle 100 in den Zustand „PRECHARGE” gesetzt wird und Folgendes gilt: pchQ = 1, latch = 0, log = 0, add = 0. Wie bereits vorangehend beschrieben wurde, führt dies in der Beschreibung von 9 schließlich zu cRdy_o = 0, was verursacht, dass die Steuereinheit 102 eine ansteigende Flanke pchQ = 0 -> 1 erzeugt und direkt nachfolgend entweder log = 0 -> 1 oder add = 0 -> 1 auslöst, wodurch die Makrozelle 100 entweder auf „LOG” oder „ADD” gesetzt wird und Folgendes gilt: pchQ = 1, latch = 0, log = 1, add = 0 oder pchQ = 1, latch = 0, log = 0, add = 1. Aus jeder dieser ansteigenden Flanken wird nun mit latch = 0 -> 1 die Latch-Rückkopplung in dem GPK-Latchmodul 302 wieder eingeschaltet, woraufhin die abfallende Flanke log = 1 -> 0 oder add = 1 -> 0 aus latch = 0 -> 1 hergeleitet wird. Somit wird die Makrozelle 100 in den Zustand „LATCH” gesetzt und Folgendes gilt: pchQ = 1, latch = 1, log = 0, add = 0.
  • Drei weitere, zeitliche Abhängigkeiten sind in 10 dargestellt: einerseits zeigt log/add = 1 -> 0 die Startzeit für die logischen/arithmetischen Operationen in den Makrozellen an, d. h. abhängig von den angewendeten Operanden, gilt früher oder später cRdy_o = 0 -> 1, wodurch der jeweiligen nächsten höherwertigen Makrozelle, d. h. der zweiten benachbarten Makrozelle 20, die logische Gültigkeit der Übertragsausgänge durch die Ausgangsflagsignale flags_o angezeigt wird oder der Übertragsausgang der Makrozelle der zweiten benachbarten Makrozelle (c_o, cq_o); zweitens wird aus clk = 1 -> 0 die abfallende Flanke wrQ = 1 -> 0 hergeleitet, d. h. die XOR- und RS-Latchfunktionen in dem Ausgangsdaten-XOR-Latchmodul 303 werden aktiviert und schließlich wird auch die Vorbedingung angezeigt, dass die Daten- und Steuersignale data_i und ctrl_idc/gpk, die von außerhalb der Makrozellen kommen, ihre Werte nach der abfallenden Flanke clk = 1 -> 0 ändern können, wobei die Werte, die für die nachfolgende Operation gültig sind, jedoch spätestens zu der ebenfalls angezeigten negativen Setup-Zeit tsetup relativ zu clk = 0 -> 1 angenommen werden müssen.
  • Die niederwertigste Makrozelle ist die einzige Makrozelle, deren Übertragseingang durch das Eingangsflagsignal flags_i oder durch (c_i, cq_i) nicht von einer niederwertigsten Makrozelle geliefert wird, sondern von anderswo, d. h. von einer halbkundenspezifischen Umgebung. Um ein korrektes Zeitverhalten zu garantieren, kann pchQ über geeignete Treiberstufen geliefert werden, als eines der Ausgangssteuersignale ctrl_o, zu dieser halbkundenspezifischen Umgebung, als ein invertiertes Taktsignal für halbkundenspezifische Latches, deren Datenausgänge mit den Übertragseingängen, den Eingangsflagsignalen flag_i bzw. (c_i, cq_i) der niederwertigsten Makrozelle verbunden sind: somit kann sich (c_i, cq_i) nur ändern, nachdem die Eingangsstufe, die in der Beschreibung des Übertragsumgehungsmoduls 201 gemäß 9 beschrieben ist, für (c_i, cq_i) aufgrund von cByEn* = 0 blockiert ist und solange stabil bleibt wie pchQ = 1.
  • Ein Verfahren zum Addieren verwendet einen Addiererblock mit einer Mehrzahl von Bit-Slice-Addierern, die einer Sequenz aus aufeinanderfolgenden Wertigkeits- bzw. Signifikanz-Bitpositionen von Eingangswerten entsprechen, und weist folgende Schritte auf: „Empfangen eines Übertrags, der Bitpositionen niedrigerer Wertigkeit entspricht, in doppelschienencodierter Form”, „Verhindern eines Weiterleitens des Übertrags, der den Bitpositionen niedrigerer Wertigkeit zugeordnet ist, abhängig von einer Gültigkeit, die dem Übertrag zugeordnet ist, der Bitpositionen mit niedrigerer Wertigkeit zugeordnet ist”, „Bestimmen aus den Daten, abhängig von den Eingangswerten, ob der Übertrag, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, einen Umgehungsweg freigeben kann”, „Ausgeben eines Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch die Erzeugung innerhalb des Addiererblocks oder durch Weiterleiten des Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch den Umgehungsweg in doppelschienencodierter Form” und „Signalisieren der Gültigkeit des Übertragsausgangs abhängig von einem Doppelschienencode des Übertragsausgangs”.
  • Das Verfahren zum Addieren ist ein Ausführungsbeispiel eines Verfahrens zum arithmetisch logischen Verarbeiten, wobei das „arithmetisch logische Verarbeiten” ein „Addieren” ist. Das Verfahren zum arithmetisch logischen Verarbeiten verwendet einen ALU-Block mit einer Mehrzahl von Bit-Slice-ALUS, die einer Reihe aus aufeinanderfolgenden Signifikanzbitpositionen von Eingangswerten entsprechen, und weist folgende Schritte auf: „Empfangen eines Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, in doppelschienencodierter Form”, „Verhindern eines Weiterleitens des Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, abhängig von einer Gültigkeit, die dem Übertrag zugeordnet ist, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist”, „Bestimmen aus Daten, abhängig von den Eingangswerten, ob der Übertrag, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, einen Umgehungsweg freigeben kann”, „Ausgeben eines Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch eine Erzeugung innerhalb des ALU-Blocks oder durch Weiterleiten des Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch den Umgehungsweg in doppelschienencodierter Form” und „Signalisieren der Gültigkeit des Übertragsausgangs abhängig von einem Doppelschienencode des Übertragsausgangs”.
  • Ein Computerprogramm mit einem Programmcode zum Ausführen der Verfahren, wie sie oben beschrieben wurden, kann zum Betreiben des Computerprogramms auf einem Computer verwendet werden.

Claims (25)

  1. Makrozelle (100), die folgende Merkmale aufweist: einen Addiererblock (101), der eine Mehrzahl von Bit-Slice-Addierern (111, 112, 113, 114) aufweist, die einer Sequenz aus aufeinanderfolgenden Signifikanzbitpositionen von Eingangswerten entsprechen; einen Umgehungsweg; und eine Steuereinheit (102), die angepasst ist, um einen Übertrag einer ersten, benachbarten Makrozelle (10), die Bitpositionen niedrigerer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragseingangsleitungen zu empfangen, und einen Übertrag auszugeben durch eine Erzeugung innerhalb des Addiererblocks oder durch ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle (10) durch den Umgehungsweg zu einer zweiten, benachbarten Makrozelle (20), die Bitpositionen höherer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragsausgangsleitungen, wobei die Steuereinheit (102) angepasst ist, um aus Daten abhängig von den Eingangswerten des Addiererblocks zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle (10) den Umgehungsweg zu der zweiten, benachbarten Makrozelle (20) freigeben kann; wobei die Steuereinheit (102) angepasst ist, um eine Gültigkeit des Übertragsausgangs der Makrozelle nach einer Erzeugung desselben innerhalb der Makrozelle oder einem Weiterleiten desselben durch die Makrozelle, der zweiten, benachbarten Makrozelle zu signalisieren, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen; und wobei die Steuereinheit (102) ferner angepasst ist, abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle, das eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigt, ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle zu dem Umgehungsweg bzw. dem Addiererblock zu verhindern.
  2. Makrozelle (100), die folgende Merkmale aufweist: einen Addiererblock (101), der eine Mehrzahl von Bit-Slice-Addierern (111114) aufweist, die einer Sequenz aus aufeinanderfolgenden Signifikanzbitpositionen von Eingangswerten entsprechen, wobei die Bit-Slice-Addierer angepasst sind, abhängig von einem der Eingangswerte oder davon abhängigen Zwischenwerten, und einem Übertrag einer ersten, benachbarten Makrozelle, die Bitpositionen niedrigerer Wertigkeit zugeordnet ist, wie sie durch Bit-Slice-Addierer verarbeitet werden, die Bitpositionen einer niedrigeren Wertigkeit entsprechen, während der Verarbeitung des Übertrags der ersten, benachbarten Makrozelle durch den Addiererblock, um den Übertrag der ersten, benachbarten Makrozelle zu verarbeiten und Ausgangswerte zu bestimmen und den einen der Eingangswerte oder der davon abhängigen Zwischenwerte ansprechend auf ein erstes Steuersignal zwischenzuspeichern; einen Umgehungsweg (202); und eine Steuereinheit (102), die konfiguriert ist, um den Übertrag der ersten, benachbarten Makrozelle (10) in doppelschienencodierter Form auf zwei Übertragseingangsleitungen zu empfangen, und einen Übertrag auszugeben durch eine Erzeugung innerhalb des Addiererblocks (101) oder durch Weiterleiten durch den Umgehungsweg zu einer zweiten, benachbarten Makrozelle, die Bitpositionen höherer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragsausgangsleitungen, und um aus Daten abhängig von den Eingangswerten des Addiererblocks (101) zu bestimmen, ob der Übertrag der ersten, benachbarten Makrozelle den Umgehungsweg zu der zweiten, benachbarten Makrozelle passieren kann, und um das erste Steuersignal in einer vorbestimmten Zeitgebung relativ zu einem gemeinsamen Taktsignal freizugeben, das der ersten, benachbarten Makrozelle und der Makrozelle gemeinsam ist, so dass der Übertrag der ersten, benachbarten Makrozelle (10) als ein Eingang akzeptiert wird und dann zu dem Addiererblock während der Freigabe des ersten Steuersignals weitergeleitet wird.
  3. Makrozelle (100) gemäß Anspruch 2, bei der jeder der Mehrzahl von Bit-Slice-Addierern folgende Merkmale aufweist: ein GPK-Latchmodul (302); und ein Terminierungsmodul, das dem GPK-Latchmodul (302) zugeordnet ist, wobei das GPK-Latchmodul (302) angepasst ist, abhängig von dem einen der Eingangswerte oder den davon abhängigen Zwischenwerten, Erzeugen-, Ausbreiten-, Löschen- (GPK-)Signale herzuleiten und die GPK-Signale ansprechend auf das erste Steuersignal zwischenzuspeichern; und wobei das Terminierungsmodul angepasst ist, abhängig von den GPK-Signalen und dem Übertrag des benachbarten Bit-Slice nächstniedriger Wertigkeit, einen der Ausgangswerte zu bestimmen, der Signifikanzbitpositionen des einen der Eingangswerte entspricht.
  4. Makrozelle (100) gemäß Anspruch 3, bei der jeder der Mehrzahl von Bit-Slice-Addierern (111114) ein Eingangsdatenumwandlungs-(IDC-)Modul (301) aufweist, das angepasst ist, abhängig von dem einen der Eingangswerte, den einen der Zwischenwerte zu liefern, der in das GPK-Latchmodul (302) eingegeben wird, und einen der zusätzlichen Übertragswerte zu liefern, die in ein GPK-Latchmodul eines Bit-Slice-Addierers eingegeben werden, der den Bitpositionen nächsthöherer Wertigkeit der Eingangswerte entspricht, ansprechend auf ein drittes Steuersignal; und bei der das GPK-Latchmodul (302) angepasst ist, abhängig von dem einen der Eingangswerte und abhängig von einem der ersten, benachbarten zusätzlichen Übertragswerte, die einem IDC-Modul (301) eines Bit-Slice-Addierers zugeordnet sind, der den Bitpositionen nächstniedrigerer Wertigkeit der Eingangswerte entspricht, die GPK-Signale herzuleiten.
  5. Makrozelle (100) gemäß Anspruch 4, bei der das erste Steuersignal eine pchQ-Signalkomponente, eine log-Signalkomponente, eine add-Signalkomponente und eine latch-Signalkomponente aufweist; und bei der die Steuereinheit (102) angepasst ist, um das GPK-Latchmodul (302) in einen „PRECHARGE”-Zustand, in einen „LOG”-Zustand, in einen „ADD”-Zustand und in einen „LATCH”-Zustand zu setzen, durch Setzen der vier Signalkomponenten des ersten Steuersignals auf logische Kombinationen, die den vier Zuständen des GPK-Latchmoduls zugeordnet sind.
  6. Makrozelle (100) gemäß Anspruch 5, bei der das GPK-Latchmodul 302) angepasst ist, um das Erzeugen-, Ausbreiten-, Löschen-Signal (g, p, k) auf eine logische 1 in dem „PRECHARGE”-Zustand zu setzen; bei der das GPK-Latchmodul (302) angepasst ist, um das Erzeugen-Signal (g) auf eine logische 0, das Ausbreiten-Signal (p) auf den einen der Eingangswerte und das Löschen-Signal (k) auf den invertierten einen der Eingangswerte in dem „LOG”-Zustand zu setzen; bei der das GPK-Latchmodul (302) angepasst ist, um das Erzeugen-Signal (g) auf eine logische UND-Kombination des einen der Eingangswerte und des einen der ersten, benachbarten zusätzlichen Übertragswerte zu setzen, das Ausbreiten-Signal (p) auf eine logische EXOR-Kombination des einen der Eingangswerte und des einen der ersten, benachbarten zusätzlichen Übertragswerte zu setzen, das Löschen-Signal (k) auf eine logische NOR-Kombination des einen der Eingangswerte und des einen der ersten, benachbarten zusätzlichen Übertragswerte zu setzen; in dem „ADD”-Zustand und bei der das GPK-Modul angepasst ist, um die Erzeugen-, Ausbreiten-, Löschen-Signale aus dem letzten „LOG”- oder „ADD”-Zustand, in den das GPK-Latchmodul gesetzt war, in den „LATCH”-Zustand zu speichern.
  7. Makrozelle (100) gemäß einem der Ansprüche 4 bis 6, bei der das IDC-Modul folgende Merkmale aufweist: eine Mehrzahl von Eingangsdatenmultiplexer-(IDM-)Modulen, wobei jedes der IDM-Module angepasst ist, um eines der Eingangsbits von dem einen der Eingangswerte ansprechend auf das dritte Steuersignal zu multiplexen, um eine Mehrzahl von IDM-Ausgangswerten zu liefern, wobei jeder der IDM-Ausgangswerte einem der IDM-Module zugeordnet ist; und ein Datenformatumwandlungs-(DFC-)Modul (404), das angepasst ist, um die Mehrzahl von IDM-Ausgangswerten umzuwandeln, um den einen der Zwischenwerte und den einen der zusätzlichen Übertragswerte zu liefern; wobei das dritte Steuersignal eine Mehrzahl von Signalkomponenten mit einem Erstschienen- und einem Zweitschienen-Signalteil aufweist, wobei jede der Signalkomponenten einem der IDM-Module zugeordnet ist.
  8. Makrozelle (100) gemäß Anspruch 7, bei der jedes der IDM-Module angepasst ist, um einen der Mehrzahl von IDM-Ausgangswerten zu liefern, durch Bilden einer logischen NOR-Kombination aus zwei logischen UND-Kombinationen, wobei die erste der zwei logischen UND-Kombinationen das eine der Eingangsbits des einen der Eingangswerte mit dem Erstschienensignalteil der Signalkomponente des dritten Steuersignals kombiniert, das jedem der IDM-Module zugeordnet ist, und die zweite der zwei logischen UND-Kombinationen das invertierte eine der Eingangsbits des einen der Eingangswerte mit dem Zweitschienensignalteil der Signalkomponente des dritten Steuersignals kombiniert, das jedem der IDM-Module zugeordnet ist.
  9. Makrozelle (100) gemäß Anspruch 7 oder 8, bei der das DFC-Modul (404) angepasst ist, um den einen der Zwischenwerte durch Bilden einer logischen XNOR-Kombination aller Werte der Mehrzahl von IDM-Ausgangswerten zu liefern; wobei das DFC-Modul angepasst ist, um den einen der zusätzlichen Übertragswerte durch Bilden einer logischen NOR-Kombination aller möglichen logischen UND-Kombinationen von zwei unterschiedlichen IDM-Ausgangswerten der Mehrzahl von IDM-Ausgangswerten zu liefern.
  10. Makrozelle (100) gemäß einem der Ansprüche 3 bis 9, bei der das Terminierungsmodul folgende Merkmale aufweist: ein Ausgangsdaten-XOR-Latchmodul, das konfiguriert ist, abhängig von dem Ausbreiten-Signal, das durch das GPK-Latchmodul hergeleitet wird, das dem Ausgangsdaten-XOR-Latchmodul zugeordnet ist, und abhängig von dem Übertrag der ersten, benachbarten niedrigerwertigen Bitposition, verarbeitet durch Bit-Slice-Addierer, entsprechend Bitpositionen des Addiererblocks mit niedrigerer Wertigkeit, um einen doppelschienencodierten Bit-Slice-Summenwert ansprechend auf ein zweites Steuersignal zu bestimmen und einen Bit-Slice-Latchwert zwischenzuspeichern, der dem Terminierungsmodul zugeordnet ist, abhängig von dem Bit-Slice-Summenwert, ansprechend auf einen gültigen Code des Übertrags entsprechend einer Doppelschienencodierung.
  11. Makrozelle (100) gemäß einem der Ansprüche 3 bis 10, bei der das Terminierungsmodul ein Übertragswegmodul aufweist, das konfiguriert ist, abhängig von den GPK-Signalen, den Übertrag zu einem nächsten Übertragswegmodul weiterzuleiten, das Bitpositionen nächsthöherer Wertigkeit der Eingangswerte zugeordnet ist, oder den Übertrag zu absorbieren; wobei der Übertrag weitergeleitet wird, abhängig von einem aktiven Ausbreiten-Signal; wobei der Übertrag absorbiert wird, abhängig von einem inaktiven Ausbreiten-Signal.
  12. Makrozelle (100) gemäß Anspruch 10 oder 11, bei der das Ausgangsdaten-XOR-Latchmodul angepasst ist, um einen ersten Schienenteil des Bit-Slice-Summenwerts zu bestimmen durch Bilden einer logischen ODER-Kombination aus einer ersten und einer zweiten logischen UND-Kombination, wobei die erste logische UND-Kombination einen invertierten ersten Schienenteil des Ausbreiten-Signals und einen invertierten zweiten Schienenteil des Übertrags kombiniert, und die zweite logische UND-Kombination einen invertierten zweiten Schienenteil des Ausbreiten-Signals und einen invertierten ersten Schienenteil des Übertrags ansprechend auf ein aktives zweites Steuersignal kombiniert, das einer logischen 0 entspricht; wobei das Ausgangsdaten-XOR-Latchmodul (303) angepasst ist, um einen zweiten Schienenteil des Bit-Slice-Summenwerts zu bestimmen durch Bilden einer logischen ODER-Kombination aus einer dritten und einer vierten logischen UND-Kombination, wobei die dritte logische UND-Kombination den invertierten ersten Schienenteil des Ausbreiten-Signals und den invertierten ersten Schienenteil des Übertrags kombiniert, und die vierte, logische UND-Kombination den invertierten zweiten Schienenteil des Ausbreiten-Signals und den invertierten zweiten Schienenteil des Übertrags ansprechend auf ein aktives zweites Steuersignal kombiniert, das einer logischen 0 entspricht; und wobei das Ausgangsdaten-XOR-Latchmodul (303) angepasst ist, um den ersten Schienenteil des Bit-Slice-Summenwerts gleich dem zweiten Schienenteil des Bit-Slice-Summenwerts einzustellen, ansprechend auf ein inaktives zweites Steuersignal, das einer logischen 1 entspricht.
  13. Makrozelle (100) gemäß einem der Ansprüche 10 bis 12, bei der das Ausgangsdaten-XOR-Latchmodul (303) ein RS-Flip-Flop aufweist, wobei einer der Eingänge des RS-Flip-Flops mit dem ersten Schienenteil des Bit-Slice-Summenwerts verbunden ist, der andere Eingang des RS-Flip-Flops mit dem zweiten Schienenteil des Bit-Slice-Summenwerts verbunden ist, und der Ausgang des RS-Flip-Flops einen Bit-Slice-Ausgangswert oder einen inversen Wert desselben liefert, um das RS-Flip-Flop ansprechend auf einen gültigen Doppelschienencode des Bit-Slice-Summenwerts zu setzen oder zurückzusetzen, und um den Bit-Slice-Ausgangswert ansprechend auf einen nicht gültigen Doppelschienencode des Bit-Slice-Summenwerts zwischenzuspeichern.
  14. Makrozelle (100) gemäß einem der Ansprüche 11 bis 13, bei der das Übertragswegmodul (304) angepasst ist, abhängig davon, dass das Ausbreiten-Signal aktiv ist, dass das Löschen-Signal inaktiv ist und dass das Erzeugen-Signal inaktiv ist, den Übertrag der ersten, benachbarten Makrozelle zu dem nächsten Übertragswegmodul weiterzuleiten; bei der das Übertragswegmodul (304) angepasst ist, abhängig davon, dass das Ausbreiten-Signal inaktiv ist, das Löschen-Signal inaktiv ist und das Erzeugen-Signal aktiv ist, den Übertrag der ersten, benachbarten Makrozelle zu absorbieren, einen neuen Übertrag in doppelschienencodierter Form mit einem aktiven ersten Schienenteil und einem inaktiven zweiten Schienenteil zu erzeugen und den neuen Übertrag zu dem nächsten Übertragswegmodul weiterzuleiten, das Bitpositionen nächsthöherer Wertigkeit der Eingangswerte zugeordnet ist; wobei das Übertragswegmodul (304) angepasst ist, abhängig davon, dass das Ausbreiten-Signal inaktiv ist, das Löschen-Signal aktiv ist und das Erzeugen-Signal inaktiv ist, den Übertrag der ersten, benachbarten Makrozelle zu absorbieren, einen neuen, inversen Übertrag in doppelschienencodierter Form mit einem inaktiven ersten Schienenteil und einem aktiven zweiten Schienenteil zu erzeugen und den neuen, inversen Übertrag zu dem nächsten Übertragswegmodul weiterzuleiten, das Bitpositionen nächsthöherer Wertigkeit der Eingangswerte zugeordnet ist; und wobei das Übertragswegmodul (304) angepasst ist, abhängig davon, dass die GPK-Signale inaktiv sind, den Übertrag der ersten, benachbarten Makrozelle zu absorbieren, einen ungültigen Übertrag in doppelschienencodierter Form mit einem ungültigen Doppelschienencode zu erzeugen und den ungültigen Übertrag zu dem nächsten Übertragswegmodul weiterzuleiten, das Bitpositionen nächsthöherer Wertigkeit der Eingangswerte zugeordnet ist.
  15. Makrozelle (100) gemäß einem der Ansprüche 5 bis 14, bei der die Steuereinheit (102) ein Übertragsumgehungsmodul (201) aufweist, das konfiguriert ist, abhängig von einer pchQ-Signalkomponente des ersten Steuersignals und abhängig von einem Gültigkeitssignal der ersten, benachbarten Makrozelle, das eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigt, den Übertrag der ersten, benachbarten Makrozelle zu dem Terminierungsmodul weiterzuleiten, das niederwertigsten Bitpositionen der Eingangswerte zugeordnet ist, und das Weiterleiten des Übertrags der ersten, benachbarten Makrozelle durch den Umgehungsweg zu ermöglichen oder das Weiterleiten des Übertrags der ersten, benachbarten Makrozelle zu dem Umgehungsweg bzw. dem Addiererblock zu verhindern.
  16. Makrozelle (100) gemäß Anspruch 15, bei der das Übertragsumgehungsmodul (201) angepasst ist, abhängig von den Ausbreiten-Signalen, die den GPK-Latchmodulen zugeordnet sind, einen Übertrag der Makrozelle durch Erzeugung innerhalb des Addiererblocks auf den zwei Übertragsausgangsleitungen auszugeben oder den Übertrag der ersten, benachbarten Makrozelle durch Weiterleiten durch den Umgehungsweg auf den zwei Übertragsausgangsleitungen auszugeben; und bei der die Steuereinheit (102) ferner angepasst ist, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen, eine Gültigkeit des Übertrags der Makrozelle nach einer Erzeugung desselben innerhalb der Makrozelle zu der zweiten, benachbarten Makrozelle zu signalisieren.
  17. Makrozelle (100) gemäß Anspruch 16, bei der das Übertragsumgehungsmodul (201) konfiguriert ist, abhängig von einer aktiven pchQ-Signalkomponente des ersten Steuersignals und einem Gültigkeitssignal der ersten, benachbarten Makrozelle (10), das eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigt, den Übertrag der ersten, benachbarten Makrozelle (10) zu dem Terminierungsmodul weiterzuleiten, das niederwertigsten Bitpositionen der Eingangswerte zugeordnet ist, und ein Weiterleiten des Übertrags der ersten, benachbarten Makrozelle durch den Umgehungsweg zu ermöglichen; und bei der das Übertragsumgehungsmodul (201) konfiguriert ist, abhängig von einer aktiven pchQ-Signalkomponente des ersten Steuersignals, das einer logischen 0 entspricht, oder einem Gültigkeitssignal der ersten, benachbarten Makrozelle, das eine Ungültigkeit des Übertrags der ersten, benachbarten Makrozelle anzeigt, was einer logischen 0 entspricht, um das Weiterleiten des Übertrags der ersten, benachbarten Makrozelle zu dem Umgehungsweg bzw. dem Addiererblock zu verhindern.
  18. Makrozelle (100) gemäß Anspruch 16 oder 17, bei der das Übertragsumgehungsmodul (201) konfiguriert ist, abhängig von aktiven Ausbreiten-Signalen, die jedem der GPK-Latchmodule der Mehrzahl von Bit-Slice-Addierern zugeordnet sind, den Übertrag der ersten, benachbarten Makrozelle nach dem Passieren des Umgehungswegs auf den zwei Übertragsausgangsleitungen auszugeben; und bei der das Übertragsumgehungsmodul konfiguriert ist, abhängig von zumindest einem der Ausbreiten-Signale, die jedem der GPK-Latchmodule der Mehrzahl von Bit-Slice-Addierern zugeordnet sind, die inaktiv sind, den Übertrag der Makrozelle durch Erzeugung innerhalb des Addiererblocks auf den zwei Übertragsausgangsleitungen auszugeben.
  19. Makrozelle (100) gemäß einem der Ansprüche 16 bis 18, bei der das Übertragsumgehungsmodul (201) konfiguriert ist, abhängig von einer logischen NAND-Kombination von Signalen der zwei Ausgangsleitungen, eine Gültigkeit des Übertrags der ersten, benachbarten Makrozelle zu der zweiten, benachbarten Makrozelle zu signalisieren; und bei der das Übertragsumgehungsmodul (201) ein Ausgangsgültigkeitssignal aufweist, das konfiguriert ist, um die Gültigkeit des Übertrags der ersten, benachbarten Makrozelle zu signalisieren.
  20. Makrozelle (100) gemäß Anspruch 19, bei der die Steuereinheit (102) angepasst ist, um die Latch-Signalkomponente des ersten Steuersignals auf eine logische 0 einzustellen, ansprechend auf eine ansteigende oder abfallende Flanke des gemeinsamen Taktsignals, und angepasst ist, um die pchQ-Signalkomponente des ersten Steuersignals auf eine logische 0 einzustellen, ansprechend auf eine abfallende Flanke der Latch-Signalkomponente; und bei der die Steuereinheit (102) angepasst ist, um die pchQ-Signalkomponente des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf eine abfallende Flanke des Ausgangsgültigkeitssignals (das die Vollständigkeit des makrozelleninternen Vorladeprozesses anzeigt), und angepasst ist, um die Addieren-Signalkomponente oder die log-Signalkomponente des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf das Einstellen der pchQ-Signalkomponente auf die logische 1, und angepasst ist, um die Latch-Signalkomponente des ersten Steuersignals auf eine logische 1 einzustellen, ansprechend auf das Einstellen der Addieren-Signalkomponente oder der log-Signalkomponente auf die logische 1, und angepasst ist, um die ADD-Signalkomponente oder die log-Signalkomponente des ersten Steuersignals auf eine logische 0 einzustellen, ansprechend auf das Einstellen der Latch-Signalkomponente auf die logische 1.
  21. Makrozelle (100) gemäß einem der Ansprüche 12 bis 20, bei der die Steuereinheit (102) angepasst ist, um das zweite Steuersignal auf eine logische 1 einzustellen, ansprechend auf die ansteigende oder abfallende Flanke des gemeinsamen Taktsignals; bei der die Steuereinheit (102) angepasst ist, um das zweite Steuersignal auf eine logische 0 einzustellen, ansprechend auf die nächste Flanke nach der ansteigenden oder abfallenden Flanke des gemeinsamen Taktsignals; und bei der der Addiererblock (101) mit einer nächsten Sequenz aus Eingangswerten gespeist wird, gesteuert durch eine externe Steuer- und Datenweg-Logik, vor der nächsten ansteigenden oder abfallenden Flanke des gemeinsamen Taktsignals.
  22. Drei-Operanden-ALU zum Verarbeiten von drei Eingangswerten, die folgende Merkmale aufweist: einen ALU-Block, der folgende Merkmale aufweist: eine Mehrzahl von Bit-Slice-ALUS, die einer Sequenz aus aufeinanderfolgenden Signifikanz-Bitpositionen der drei Eingangswerte entsprechen, wobei jeder der Bit-Slice-ALUs folgende Merkmale aufweist: einen Drei-Bit-Formatwandler, der angepasst ist, abhängig von drei Eingangsbits, die einer entsprechenden einen der Wertigkeits-Bitpositionen zugeordnet sind, ein Halbaddierer-Ausgangsbit und ein zusätzliches Übertragsbit zu berechnen, wobei das zusätzliche Übertragsbit in eine Bit-Slice-ALU eingegeben wird, die Bitpositionen nächsthöherer Wertigkeit der drei Eingangswerte entspricht; und einen Zwei-Bit-Volladdierer, der angepasst ist, abhängig von dem Formatwandler-Ausgangsbit oder davon abhängigen Zwischenbits, abhängig von einem zusätzlichen Übertragsbit, das einer Bit-Slice-ALU zugeordnet ist, die der Bitposition nächstniedrigerer Wertigkeit der drei Eingangswerte entspricht, und abhängig von einem Übertrag einer ersten benachbarten Drei-Operanden-ALU, die einer Bitposition niedrigerer Wertigkeit zugeordnet ist, verarbeitet durch Bit-Slice-ALUs, die Bitpositionen niedrigerer Wertigkeit des ALU-Blocks entsprechen, um den Übertrag der ersten benachbarten Drei-Operanden-ALU zu verarbeiten und ein Drei-Operanden-ALU-Ausgangsbit zu bestimmen und das Formatwandler-Ausgangsbit oder die davon abhängigen Zwischenbits ansprechend auf ein erstes Steuersignal zwischenzuspeichern; wobei der ALU-Block ferner folgende Merkmale aufweist: einen Umgehungsweg (202); und eine Steuereinheit, die konfiguriert ist, um den Übertrag der ersten, benachbarten Drei-Operanden-ALU in doppelschienencodierter Form auf zwei Übertragseingangsleitungen zu empfangen, und um den Übertrag auszugeben, durch Erzeugung innerhalb des ALU-Blocks oder durch Weiterleiten durch den Umgehungsweg zu einer zweiten, benachbarten Drei-Operanden-ALU, die Bitpositionen höherer Wertigkeit zugeordnet ist, in doppelschienencodierter Form auf zwei Übertragsausgangsleitungen, und um aus Daten abhängig von den drei Eingangswerten des ALU-Blocks zu bestimmen, ob der Übertrag der ersten, benachbarten Drei-Operanden-ALU den Umgehungsweg zu der zweiten, benachbarten Drei-Operanden-ALU passieren kann, und um das erste Steuersignal in einer vorbestimmten Zeitgebung relativ zu einem gemeinsamen Taktsignal freizugeben, das der ersten, benachbarten Drei-Operanden-ALU und der Drei-Operanden-ALU gemeinsam ist, so dass der Übertrag der ersten benachbarten Drei-Operanden-ALU als eine Eingabe für den ALU-Block akzeptiert wird und zu demselben weitergeleitet wird, während der Freigabe des ersten Steuersignals.
  23. Drei-Operanden-ALU gemäß Anspruch 22, bei der die Steuereinheit angepasst ist, um eine Gültigkeit des Übertragsausgangs der Drei-Operanden-ALU der zweiten, benachbarten Drei-Operanden-ALU zu signalisieren, abhängig von einer logischen Kombination von Zuständen der zwei Übertragsausgangsleitungen; und bei der die Steuereinheit ferner angepasst ist, abhängig von einem Gültigkeitssignal der ersten, benachbarten Drei-Operanden-ALU, das eine Gültigkeit des Übertragsausgangs der ersten, benachbarten Drei-Operanden-ALU anzeigt, das Weiterleiten des Übertragsausgangs der ersten, benachbarten Drei-Operanden-ALU zu dem Umgehungsweg bzw. dem Addiererblock zu verhindern.
  24. Verfahren zum Addieren unter Verwendung eines Addiererblocks mit einer Mehrzahl von Bit-Slice-Addierern, die einer Sequenz aus aufeinanderfolgenden Wertigkeits-Bitpositionen von Eingangswerten entsprechen, das folgende Schritte aufweist: Empfangen eines Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, in doppelschienencodierter Form; Verhindern des Weiterleitens des Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, abhängig von einer Gültigkeit, die dem Übertrag zugeordnet ist, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist; Bestimmen aus den Daten abhängig von den Eingangswerten, ob der Übertrag, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, einen Umgehungsweg freigeben kann; Ausgeben eines Übertrags, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch Erzeugung des Übertrags innerhalb des Addiererblocks oder durch Weiterleiten desselben, der Bitpositionen niedrigerer Wertigkeit zugeordnet ist, durch den Umgehungsweg in doppelschienencodierter Form; und Signalisieren der Gültigkeit des Übertragsausgangs abhängig von einem Doppelschienencode des Übertragsausgangs.
  25. Computerprogrammprodukt mit einem Programmcode zum Ausführen des Verfahrens gemäß Anspruch 24, wenn das Computerprogramm auf einem Computer läuft.
DE102009035022.5A 2008-08-01 2009-07-28 Makrozelle zum Addieren Active DE102009035022B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/184,682 2008-08-01
US12/184,682 US7707237B2 (en) 2008-08-01 2008-08-01 Macrocell and method for adding

Publications (2)

Publication Number Publication Date
DE102009035022A1 true DE102009035022A1 (de) 2010-03-25
DE102009035022B4 DE102009035022B4 (de) 2015-12-31

Family

ID=41607676

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009035022.5A Active DE102009035022B4 (de) 2008-08-01 2009-07-28 Makrozelle zum Addieren

Country Status (2)

Country Link
US (1) US7707237B2 (de)
DE (1) DE102009035022B4 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101803205B (zh) * 2008-08-15 2013-12-18 Lsi公司 近码字的ram列表解码
US11227084B2 (en) * 2018-11-14 2022-01-18 Taiwan Semiconductor Manufacturing Company Ltd. Multi-bit standard cell

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4764887A (en) * 1985-08-02 1988-08-16 Advanced Micro Devices, Inc. Carry-bypass arithmetic logic unit
US5808926A (en) * 1995-06-01 1998-09-15 Sun Microsystems, Inc. Floating point addition methods and apparatus
US6366943B1 (en) * 1999-03-31 2002-04-02 Brian Martin Clinton Adder circuit with the ability to detect zero when rounding
US6708190B1 (en) * 2000-06-05 2004-03-16 Cypress Semiconductor Corp. Reduced product term carry chain
JP3613396B2 (ja) * 2001-06-25 2005-01-26 日本電気株式会社 機能ブロック
US6990508B1 (en) * 2001-09-11 2006-01-24 Cypress Semiconductor Corp. High performance carry chain with reduced macrocell logic and fast carry lookahead
US7003545B1 (en) * 2001-09-11 2006-02-21 Cypress Semiconductor Corp. High performance carry chain with reduced macrocell logic and fast carry lookahead
US6765408B2 (en) * 2002-02-11 2004-07-20 Lattice Semiconductor Corporation Device and method with generic logic blocks
DE10244738B3 (de) * 2002-09-25 2004-03-04 Infineon Technologies Ag Vorrichtung und Verfahren zum Umsetzen und Addierer
US7157934B2 (en) * 2003-08-19 2007-01-02 Cornell Research Foundation, Inc. Programmable asynchronous pipeline arrays

Also Published As

Publication number Publication date
US20100026341A1 (en) 2010-02-04
DE102009035022B4 (de) 2015-12-31
US7707237B2 (en) 2010-04-27

Similar Documents

Publication Publication Date Title
DE68927907T2 (de) Einchipmikrorechner
DE4212202C2 (de) Logikgatter
DE69118585T2 (de) Leseverstärker mit einer integralen logischen Funktion
EP0010173B1 (de) Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE102015106508B4 (de) Halbleiterchip
DE102016015773B3 (de) Mehrfachlese- Speichervorrichtung
DE112005001906B4 (de) Mehrbit-Addierer und Verfahren zum Propagieren, Generieren oder Killen von Carry-In-Bits entlang einer Carry-Kette
DE112012005060B4 (de) Höhere Energieeinsparung bei Speicher-Arrays
DE102007037363B4 (de) Standardzelle für Arithmetiklogikeinheit und Chipkartensteuerung
DE102009035022B4 (de) Makrozelle zum Addieren
DE102012111414B4 (de) Master-Slave-Speicherschaltung
DE19741915A1 (de) Zwischenspeicheroptimierung in Hardware-Logikemulations-Systemen
US5027312A (en) Carry-select adder
DE69835547T2 (de) Inhaltsadressierbares Speichersystem
Chaiyakul et al. Timing models for high-level synthesis
DE102020131154A1 (de) Gefährdungsabschwächung für leichte Prozessorkerne
DE102009017773A1 (de) Speicher zum Speichern eines binären Zustands
Mrazek et al. Evolutionary design of transistor level digital circuits using discrete simulation
DE60024088T2 (de) Ereignis-simulation einer schaltkreislogik
DE102018217016A1 (de) Ein-Chip-System und Sicherheitsschaltung mit einem derartigen Ein-Chip-System
DE10227618B4 (de) Logikschaltung
US20030009318A1 (en) Method of utilizing timing models to provide data for static timing analysis of electronic circuits
DE19756591B4 (de) Vorrichtung zum hierarchischen Verbinden einer Mehrzahl von Funktionseinheiten in einem Prozessor
DE10217375B4 (de) Schaltungsanordnung und Verfahren zur Erzeugung eines Dual-Rail-Signals

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative