-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Gebiet der programmierbaren Logikschaltungen.
Insbesondere betrifft die vorliegende Erfindung ein Architektur- und
Verbindungsschema für
programmierbare Logikschaltungen.
-
HINTERGRUND
DER ERFINDUNG
-
Als
integrierte Schaltungen (ICs) zum ersten Mal eingeführt wurden,
waren sie extrem kostspielig und ihre Funktionalität war beschränkt. Rapide
Fortschritte in der Halbleitertechnologie haben die Kosten in hohem
Maße reduziert,
während
gleichzeitig die Leistungsfähigkeit
der IC-Chips erhöht
wurde. Trotzdem ist das Design, das Layout und der Herstellungsprozeß für einen
speziellen, kundenspezifisch gestalteten IC ziemlich kostspielig
geblieben. Dies gilt insbesondere für diejenigen Fälle, in
denen nur eine kleine Menge an kundenspezifisch gestalteten ICs
hergestellt werden muß.
Darüber
hinaus kann die Fertigstellungszeit (d. h. die Zeit vom anfänglichen Design
bis zu einem fertigen Produkt) oft ziemlich lang sein, insbesondere
für komplexe
Schaltungsdesigns. Für
elektronische Produkte und Computerprodukte ist es entscheidend,
der erste auf dem Markt zu sein. Außerdem ist es für kundenspezifische
ICs ziemlich schwierig, Änderungen
am Anfangsdesign vorzunehmen. Es kostet Zeit, Aufwand und Geld,
um die erforderlichen Änderungen
durchzuführen.
-
Im
Hinblick auf die mit kundenspezifischen ICs verbundenen Nachteile
bieten frei programmierbare logische Anordnungen (FPGAs) in vielen
Fällen eine
attraktive Lösung.
FPGAs sind im wesentlichen eine hohe Dichte aufweisende, serienmäßig gefertigte
Standard-ICs, die von dem Benutzer in eine gewünschte Konfiguration programmiert
werden können.
Schaltungsdesigner definieren zunächst die gewünschten
Logikfunktionen, und das FPGA wird zur entsprechenden Verarbeitung
der Eingangssignale programmiert. Dadurch können FPGA-Implementierungen
schnell und effizient designt, verifiziert und überarbeitet werden. Abhängig von
den Logikdichtanforderungen und von den Herstellungsvolumen sind
FPGAs im Hinblick auf die Kosten und die Zeit bis zur Marktreife
die besseren Alternativen.
-
Ein übliches
FPGA besteht im wesentlichen aus einem äußeren Ring von I/O-Blöcken, der
eine innere Matrix von konfigurierbaren Logikblöcken umgibt. Die am Rand eines
FPGA angeordneten I/O-Blöcke
sind vom Benutzer programmierbar, so daß jeder Block unabhängig als
Eingang oder als Ausgang und auch als Einheit mit drei Ausgangszuständen programmiert
werden kann. Jeder Logikblock enthält üblicherweise eine programmierbare kombinatorische
Logik und Speicherregister. Die kombinatorische Logik wird zur Ausführung von
booleschen Funktionen an ihren Eingangsvariablen verwendet. Oft
werden die Register von einem Logikblockeingang direkt geladen oder
sie können
von der kombinatorischen Logik geladen werden.
-
Verbindungsressourcen
belegen die Kanäle zwischen
den Zeilen und Spalten der Matrix von Logikblöcken und ferner zwischen den
Logikblöcken und
den I/O-Blöcken.
Diese Verbindungsressourcen stellen die Flexibilität zur Steuerung
der Verbindung zwischen zwei bezeichneten Punkten auf dem Chip zur
Verfügung. Üblicherweise
verläuft
ein metallisches Netzwerk aus Leitungen horizontal und vertikal in
den Zeilen und Spalten zwischen den Logikblöcken. Programmierbare Schalter
verbinden die Eingänge
und Ausgänge
der Logikblöcke
und die I/O-Blöcke
mit diesen metallischen Leitungen. Koppelpunktschalter und Austauschelemente
an den Schnittpunkten der Zeilen und Spalten werden zum Schalten
von Signalen von einer Leitung auf eine andere verwendet. Oft werden
lange Leitungen verwendet, die über
die gesamte Länge
und/oder Breite des Chips verlaufen.
-
Die
Funktionen der I/O-Blöcke,
der Logikblöcke
und ihrer zugehörigen
Verbindungen sind alle programmierbar. Üblicherweise werden diese Funktionen
von einem in einem chipeigenen Speicher gespeicherten Konfigurationsprogramm
gesteuert. Beim Einschalten, auf Befehl oder von einem Mikroprozessor
als Teil der Systeminitialisierung programmiert, wird das Konfigurationsprogramm
automatisch von einem externen Speicher geladen.
-
Das
FPGA-Konzept wurde in den 60-ern von Minnick zusammengefasst, der
das Konzept aus Zelle und zellularer Matrix als rekonfigurierbare
Bauelemente in den folgenden Dokumenten beschrieben hat:
Minnick,
R.C. und Short, R.A., "Cellular
Linear-Input Logic, Final Report, "SRI-Projekt 4122, Vertrag AF 19(628)-498,
Stanford Research Institute, Menlo Park, California, AFCRL 64-6-DDCNr. AD 433802 (Februar
1964); Minnick, R.C., "Cobweb
Cellular Arrays" Proceedings
AFIPS 1965 Fall Joint Computer Conference, Band 27, Teil 1, Seiten
327–341
(1965); Minnick, R.C. et al., "Cellular
Logic, Final Report" SRI-Projekt
5087, Vertrag AF 19(628)-4233, Stanfort Research Institute, Menlo
Park, California, AFCRL 66-613, (April 1966); und Minnick, R.C., "A Survey of Microcellular
Research, " Journal
of the Association for Computing Machinery, Band 14, Nr. 2, Seiten 203–241 (April
1967). Zusätzlich
zu speicherbasierten (z. B. RAM-basierten, Schmelzsicherungs-basierten
oder Antischmelzsicherungs-basierten) Möglichkeiten zur Schaffung von
Verbindungen zwischen Bauelementen hat Minnick ferner sowohl direkte
Verbindungen zwischen benachbarten Zellen als auch die Verwendung
von Bussen als weitere Routing-Technik erörtert. Der Artikel von Spandorfer, L.M., "Synthesis of Logic
Funktion on an Array of Integrated Circuits", Stanford Research Institute, Menlo Park,
California, Vertrag AF 19(628)2907, AFCRL 64-6, DDC Nr. AD 433802
(November 1965), erörtert die
Verwendung eines bidirektionalen komplementären MOS-Durchgangsgatters als
Mittel zum Schalten zwischen zwei Verbindungsleitungen, das mit
Speichermitteln programmiert werden kann, und Verbindungen zwischen
angrenzenden Nachbarzellen. In Wahlstrom, S.E., "Programmable Logic Arrays – Cheaper
by the Millions",
Electroniscs, Band 40, Nr. 25.11, Seiten 90–95 (Dezember 1967) wird eine RAM-basierte
rekonfigurierbare Logikmatrix aus einer zweidimensionalen Matrix
von identischen Zellen mit sowohl direkten Verbindungen zwischen
benachbarten Zellen als auch einem Netzwerk von Datenbussen beschrieben.
-
Shoup,
R.G., "Programmable
Cellular Logic Arrays",
Ph.D. Dissertation, Carnegie-Mellon University, Pittsburgh, PA (März 1970)
beschrieb programmierbare zellulare Logikmatrizen und wiederholt
viele der Konzepte und die Terminologie von Minnick und rekapituliert
die Matrix von Wahlstrom. In der Dissertation von Shoup erstreckt
sich das Konzept von Nachbarverbindungen von den einfachen 2-Eingänge-1-Ausgang-Nächster-Nachbar-Verbindungen
zu den 8-Nachbar-2-Wege-Verbindungen. Shoup beschrieb weiter die
Verwendung eines Busses als Teil der Verbindungsstruktur zur Verbesserung
der Leistungsfähigkeit
und Flexibilität
einer Matrix. Busse können
zum Weiterleiten von Signalen über
zu große Entfernungen
oder in für
gewöhnliche
Nachbarverbindungen nicht geeignete Richtungen verwendet werden.
Dies ist besonders vorteilhaft für
das Weiterleiten von Eingangssignalen und Ausgangssignalen von außerhalb
der Matrix zu inneren Zellen.
-
Das
US 4 020 469 beschrieb eine
programmierbare Logik-Matrix,
die sich selbst programmieren, testen und reparieren kann. Das
US 4 870 302 führte eine
grobkörnige
Architektur ohne Verwendung von Nachbardirektverbindungen ein, wobei
alle programmierten Verbindungen durch die Verwendung von drei verschiedenen
Busgruppen in einer Kanalarchitektur realisiert sind. Die Grobkornzelle (genannt
ein konfigurierbarer Logikblock oder CLB – configurable logical block)
enthält
sowohl eine RAM-basierte Logiktabellensuchverknüpfungslogik und Flipflops innerhalb
des CLB, wobei einen vom Benutzer definierte Logik in die innerhalb
des CLB verfügbaren
Funktionen abgebildet werden muß. Das
US 4 935 734 führte eine
einfache Logikfunktionszelle ein, die als HAND, NOR oder als ähnliche einfache
Logikfunktion innerhalb jeder Zelle definiert ist. Das Verbindungsschema
wird über
direkte Nachbarverbindungen und gerichtete Busverbindungen realisiert.
Das
US 4 700 187 und
das
US 4 918 440 definieren
eine komplexere Logikfunktionszelle, wobei in der Zelle XOR- und
UND-Funktionen und ein Registerbit verfügbar und auswählbar sind.
Das bevorzugte Verbindungsschema erfolgt durch direkte Nachbarverbindungen.
Die Verwendung von bidirektionalen Bussen als Verbindungen war ebenfalls
enthalten. Das
US 5 296 759 offenbart
eine konfigurierbare Logikmatrix, in der allen Verbindungsbussen eine
Standardzeitspanne zugeordnet ist.
-
Die
derzeitige FPGA-Technologie hat einige Nachteile. Diese Probleme
beruhen auf dem niedrigen Grad der Schaltungsnutzung bei gegebener
riesiger Anzahl von auf dem Chip verfügbaren Transistoren, die von
den Herstellern vorgesehen sind. Die Schaltungsnutzung wird von
drei Faktoren beeinflusst. Der erste Faktor auf der Transistor-
oder Feinkornzellen-Ebene ist die Funktion und die Flexibilität des Grundlogikelements,
das von den Benutzern leicht verwendet werden kann. Der zweite Faktor
ist die Einfachheit, mit der bedeutungsvolle Makrologikfunktionen
unter Verwendung der ersten Logikelemente bei minimaler Schaltungsflächenverschwendung
gebildet werden können.
Der letzte Faktor sind die Verbindungen dieser Makrologikfunktionen
zur effizienten Implementierung des Designs auf Chipebene. Die Feinkornzellarchitekturen,
wie die oben beschriebenen, stellten leicht verwendbare und flexible logische
Funktionen für
Designer auf der Ebene des Grundlogikelements zur Verfügung.
-
Jedoch
können
bei dichten und komplexen Makrofunktionen und bei einem entsprechenden Routing
auf Chipebene die Verbindungsressourcen, die zum Verbinden einer
großen
Anzahl von Signalen vom Ausgang einer Zelle zum Eingang (zu den
Eingängen)
anderer Zellen benötigt
werden, schnell erschöpft
sein, und das Hinzufügen
dieser Ressourcen kann aufgrund der Siliziumfläche sehr kostspielig sein.
Daher bleiben im Feinkornarchitekturdesign die meisten Zellen aufgrund
ihrer Unerreichbarkeit entweder ungenutzt oder die Zellen werden
als Verbindungsleitungen anstatt als Logik verwendet. Zusätzlich zu
einer geringen Logiknutzung erhöht
dies die Routing-Verzögerungen
beträchtlich
oder es wird eine übermäßige Menge
Routingressourcen hinzugefügt,
wobei dies die Schaltungsgröße sehr
stark erhöht.
Die grobkörnige
Architektur in Verbindung mit umfangreichen Routing-Bussen ermöglicht beträchtliche
Verbesserungen für
Signale, die die Ausgänge eines
CLB mit den Eingängen
eines anderen CLBs verbinden. Die Nutzung auf der CLB-Verbindungsebene
ist hoch. Jedoch ist die Partitionierung und Abbildung von komplexen
Logikfunktionen schwierig, damit diese genau in die CLBs passen.
Wenn ein Teil der Logik innerhalb des CLB ungenutzt bleibt, dann kann
die Nutzung (effektive Anzahl von pro Flächeneinheit genutzten Gattern)
innerhalb des CLB niedrig sein.
-
Ein
weiteres Problem mit bekannten FPGAs ist auf die Tatsache zurückzuführen, daß üblicherweise
eine feste Anzahl von Eingängen
und eine feste Anzahl von Ausgängen
für jeden
Logikblock vorgesehen wird. Wenn durch Zufall alle Ausgänge eines
bestimmten Logikblocks verbraucht sind, dann ist der Rest des Logikblocks
nicht mehr verwendbar.
-
Daher
besteht in bekannten FPGAs der Bedarf an einer neuen Architektur,
die die Nutzung einer FPGA maximiert, während die Auswirkung auf die Chipgröße minimiert
wird. Die neue Architektur sollte auf der Ebene des niedrigsten
Logikelementes Flexibilität
im Hinblick auf die Funktionalität
und Flexibilität in
der Verwendung für
die Benutzer bereitstellen, eine hohe Funktionalitätsdichte
pro Flächeneinheit auf
der Makroebene, wobei Benutzer komplexe Logikfunktionen mit den
Grundlogikelementen leicht realisieren können, und schließlich einen
hohen Prozentsatz der Verbindbarkeit mit einem hierarchischen, gleichmäßig verteilten
Routing-Netzwerk für Signale,
die Makros und Grundlogikelemente auf der Chipebene verbinden. Darüber hinaus
sollte die neue Architektur Benutzer mit der Flexibilität ausstatten, daß die Anzahl
der Eingänge
und Ausgänge
für einen individuellen
Logikblock auswählbar
und programmierbar vorgesehen wird und eine skalierbare Architektur
vorgesehen wird, um einen Bereich von FPGA-Größen aufzunehmen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft eine Logikarchitektur und ein Verbindungsschema
für programmierbare
Logikschaltungen, z. B. für
frei programmierbare logische Anordnungen (FPGAs) wie es in den
beigefügten
Ansprüchen
definiert ist.
-
Gemäß der vorliegenden
Erfindung wird eine programmierbare Logikschaltung bereitgestellt
mit einer Mehrzahl von konfigurierbaren Zellen, die zur Ausführung von
logischen Funktionen an logischen Signalen konfiguriert sind;
einer
ersten Menge von Routing-Leitungen, die die konfigurierbaren Zellen
eines Logikblocks selektiv koppeln, wobei die erste Menge von Routing-Leitungen über eine
erste Menge von Schaltern selektiv mit den Eingang-Ports und Ausgang-Ports
der konfigurierbaren Zellen des Logikblocks gekoppelt wird;
einer
zweiten Menge von Routing-Leitungen, wobei der zweiten Menge von
Routing-Leitungen andere Spannen als der ersten Menge von Routing-Leitungen
zugeordnet sind;
einer ersten Routing-Leitung und einer zweiten
Routing-Leitung
aus der zweiten Menge von Routing-Leitungen, die zueinander einen
Offset von wenigstens einem Logikblock aufweisen, wobei die erste
Routing-Leitung über
eine zweite Menge von Schaltern selektiv mit wenigstens einer Routing-Leitung
einer ersten Menge von Routing-Leitungen eines zweiten Logikblocks
gekoppelt ist, wobei der zweite Logikblock benachbart zum ersten
Logikblock angeordnet ist, wobei die erste Routing-Leitung wenigstens
die Länge
des ersten und zweiten Logikblocks überspannt, und wobei die zweite
Routing-Leitung über die
zweite Menge von Schaltern selektiv mit wenigstens einer Routing-Leitung
der ersten Menge von Routing-Leitungen des zweiten Logikblocks und
mit wenigstens einer Routing-Leitung der ersten Menge von Routing-Leitungen
eines dritten Logikblocks gekoppelt ist, wobei der dritte Logikblock
benachbart zum zweiten Logikblock angeordnet ist, wobei die zweite
Routing-Leitung wenigstens die Länge
des zweiten und des dritten Logikblocks überspannt.
-
Ebenfalls
gemäß der vorliegenden
Erfindung wird ein Verfahren zum Programmieren einer programmierbaren
Logikschaltung bereitgestellt, wobei:
eine erste Menge von
Routing-Leitungen konfigurierbare Zellen eines Logikblocks aus einer
Mehrzahl von Logikblöcken
selektiv koppelt, wobei die erste Menge von Routing-Leitungen selektiv
mit den Eingang-Ports und den Ausgang-Ports der konfigurierbaren
Zellen des Logikblocks gekoppelt wird;
eine zweite Menge von
Routing-Leitungen vorgesehen wird, wobei der zweiten Menge von Routing-Leitungen
andere Spannen als der ersten Menge von Routing-Leitungen zugeordnet
sind;
eine erste Routing-Leitung der zweiten Menge von Routing-Leitungen selektiv
mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen
eines ersten Logikblocks und mit wenigstens einer Routing-Leitung
einer ersten Menge von Routing-Leitungen eines zweiten Logikblocks
gekoppelt wird, wobei der zweite Logikblock benachbart zum ersten
Logikblock angeordnet ist, wobei die erste Routing-Leitung wenigstens
die Längen
des ersten und des zweiten Logikblocks überspannt; und
die zweite
Routing-Leitung selektiv mit wenigstens einer Routing-Leitung der
ersten Menge von Routing-Leitungen des zweiten Logikblocks und mit
wenigstens einer Routing-Leitung der ersten Menge von Routing-Leitungen
eines dritten Logikblocks gekoppelt wird, wobei der dritte Logikblock
benachbart zum zweiten Logikblock angeordnet ist und wobei die zweite
Routing-Leitung wenigstens die Länge
des zweiten und des dritten Logikblocks überspannt.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist anhand von Beispielen und nicht zur Beschränkung in
den Figuren der zugehörigen
Zeichnung dargestellt, in denen gleiche Bezugszeichen auf ähnliche
Elemente hinweisen und in denen:
-
1 ein
Blockschaltbild einer FPGA-Logik zeigt, an der die vorliegende Erfindung
implementiert werden kann.
-
2A zeigt
ein Beispiel einer einzelnen Zelle.
-
2B zeigt
ein anderes Beispiel einer einzelnen Zelle.
-
3A zeigt
einen logischen Cluster.
-
3B zeigt
die Erweiterung von I-Matrix-Innenverbindungen eines logischen Clusters
zu einem benachbarten logischen Cluster.
-
4A zeigt
ein Beispiel eines logischen Clusters mit vertikalen Blockverbindern.
-
4B zeigt
ein Beispiel eines logischen Clusters mit horizontalen Blockverbindern.
-
5A zeigt
die acht einem logischen Block zugeordneten Blockverbinder zu Ebene-1-MLA-Austauschnetzwerken
und Ebene-1-MLA-Umlenkpunkte.
-
5B zeigt
einen Ebene-1-Umlenkpunkt.
-
5C zeigt
ein Austauschnetzwerk.
-
6 zeigt
das Routing-Netzwerk für
ein Blockcluster.
-
7A zeigt
das Blockschaltbild eines Blocksektors.
-
7B zeigt
ein Ebene-1-Zu-Ebene-2-MLA-Routing-Austauschnetzwerk.
-
8A zeigt
einen Sektorcluster.
-
8B zeigt
ein Ebene-2-Zu-Ebene-3-MLA-Routing-Austauschnetzwerk.
-
9 zeigt
ein Ausführungsbeispiel
eines hierarchischen Routing-Netzwerkes mit mehreren Ebenen zum
Bereitstellen einer Routing-Möglichkeit zwischen
den Logikblöcken
und den MLA-Ebenen.
-
10 zeigt
ein weiteres Ausführungsbeispiel
eines hierarchischen Routing-Netzwerkes mit mehreren Ebenen zum
Bereitstellen einer Routing-Möglichkeit
zwischen den Logikblöcken
und den MLA-Ebenen.
-
11 zeigt
ein Blockschaltbild eines Ausführungsbeispiels
des hierarchischen Routing-Netzwerkes, wobei zwei Gruppen von Blockverbindern auf
dieselben MLA-Leitungen zugreifen.
-
12 zeigt ein Blockschaltbild eines Teils des
Routing-Netzwerkes mit mehreren Ebenen, welches Blockverbinder zu
der MLA-3-Ebene mit MLA-Anschlußstreifen
für höhere Ebenen
des Routing-Netzwerkes umfaßt.
-
13 zeigt
in MLA-1-Umlenk-Netzwerk.
-
14 zeigt
ein MLA-2-Umlenk-Netzwerk.
-
15 zeigt
ein MLA-3-Umlenk-Netzwerk.
-
16 zeigt
ein Ausführungsbeispiel
eines Routing-Netzwerkes für
die MLA-4-Schicht und den Mechanismus, mit dem auf die MLA-Leitungen
zugegriffen wird.
-
17 zeigt
drei verschiedene Schalterausführungsformen.
-
18 zeigt
ein Ausführungsbeispiel
eines Routing-Netzwerkes für
die MLA-5-Schicht und den Mechanismus, mit dem auf MLA-5-Leitungen
zugegriffen wird.
-
DETAILLIERTE
BESCHREIBUNG
-
Es
wird ein Architektur- und ein Verbindungsschema für programmierbare
Logikschaltungen beschrieben. In der folgenden Beschreibung sind
zu Erläuterungszwecken
zahlreiche spezielle Details angegeben, wie beispielsweise eine
kombinatorische Logik, eine Zellenkonfiguration, Zellenanzahlen
usw., um ein vollständiges
Verständnis
der vorliegenden Erfindung zu ermöglichen. Es ist jedoch für einen Fachmann
klar, daß die
vorliegende Erfindung ohne diese speziellen Details ausgeführt werden
kann. In anderen Fällen
sind bekannte Strukturen und Bauelemente nur als Blockschaltbild
dargestellt, um die vorliegende Erfindung nicht unnötig zu verdecken.
Es sollte aber beachtet werden, daß die vorliegende Erfindung
verschiedenste Prozesse betrifft, einschließlich eines statischen RAMs
(SRAM), eines dynamischen RAMs (DRAM), eines Fuse (Schmelzsicherung),
eines Antifuse (Antischmelzsicherung), eines löschbaren und programmierbaren
Nur-Lese-Speichers (EPROM), eines elektrisch löschbaren und programmierbaren
Nur-Lese-Speichers (EEPROM), eines FLASHs und ferroelektrischer
Prozesse, wobei die Erfindung nicht auf diese beschränkt ist.
-
Es
wird nun auf 1 Bezug genommen, in der ein
Blockschaltbild einer FPGA-Logik, an der die vorliegende Erfindung
realisiert werden kann, als 100 gezeigt ist. Die I/O-Logikblöcke 102, 103, 111 und 112 stellen
eine Schnittstelle zwischen externen Anschlußstiften des FPGA und der internen
Benutzerlogik zur Verfügung,
und zwar entweder direkt oder über
eine Core Interface (CIF-Schnittstelle) 104, 105, 113 und 114.
Vier Schnittstellenblöcke 104, 105, 113 und 114 ermöglichen
eine Entkoppelung zwischen dem Kern 106 und der I/O-Logik 102, 103, 111 und 112.
Der Kern 106 besteht aus einer Anzahl von Clustern 107,
die im Inneren durch eine I-Matrix 101 und untereinander
durch ein MLA-Routing-Netzwerk 108 verbunden sind.
-
Eine
Steuer/Programmierlogik 109 wird zum Steuern aller Bits
zum Programmieren der Bit- und Wortleitungen verwendet. Für die Antifuse-
oder Fuse-Technologie wird eine hohe Spannung/ein hoher Strom entweder
zum Zerstören
oder zum Verbinden eines Fuse-Elements angelegt. In der EEPROM-, FLASH-
oder ferroelektrischen Technologie gibt es einen Löschzyklus,
dem ein Programmierzyklus zur Programmierung der logischen Zustände der
Speicherbits folgt. Um Skewing (einen zeitlichen Versatz) zu minimieren,
wird eine separate Takt-/Rücksetzlogik 110 verwendet,
um für
den Takt und für
Rücksetzleitungen
auf Gruppenbasis zu sorgen.
-
In
dem derzeit bevorzugten Ausführungsbeispiel
besteht jeder Cluster 107 aus einer 2 × 2-Hierarchie aus vier Zellen,
die ein logischer Cluster genannt werden. Die 2A und 2B zeigen
Beispiele von einzelnen Zellen 200 und 250. Die
Zelle 200 führt
vielfältige
Logikfunktionen an zwei Eingangssignalen (A und B) aus und stellt
ein Ausgangssignal X zur Verfügung.
In dem derzeitig bevorzugten Ausführungsbeispiel besteht die
Zelle 200 aus einem XOR-Gatter 201, einem NAND-Gatter 202 mit
zwei Eingängen
und einem NOR-Gatter 203 mit zwei Eingängen. Es sollte jedoch beachtet
werden, daß in
anderen Ausführungsformen
die Zelle 200 verschiedene andere Arten und/oder Kombinationen
von Gattern enthalten kann. Die Zelle 250 besteht aus der Zelle 200,
die mit einer D-Flipflop-Zelle 260 gekoppelt ist. Der Ausgang
X der Zelle 200 kann so programmiert werden, daß er direkt
verbunden ist mit dem Dateneingang D des D-Flipflop-Gatters 204,
indem der Schalter 218 aktiviert wird. Auf den Dateneingang D
kann als dritter Eingang der kombinierten Zelle 250 zugegriffen
werden.
-
Jedes
der beiden Eingangssignale A und B und das D-Eingangssignal des
D-Flipflops können
invertiert oder nicht-invertiert
werden, und zwar abhängig
von den Zuständen
der Schalter 206–211.
Das Aktivieren der Schalter 206, 208 und 210 veranlaßt, daß die Signale
A, B und D von das Steuerglied 212–214 in nicht-invertierter
Weise zu den Gattern 201–204 gesteuert werden.
Das Aktivieren der Schalter 207, 209 und 211 führt dazu,
daß die
Eingangssignale A, B und D von den Invertern 215–217 invertiert
werden, bevor sie an die Gatter 201–204 weitergeleitet
werden. Die sechs Schalter 212–217 können individuell
ein- und ausgeschaltet werden, wie es von den Benutzern programmiert
wird.
-
Man
beachte, daß das
XOR-Gatter 201, das NAND-Gatter 202 und das NOR-Gatter 203 auch
zur Ausführung
von XNOR, AND und OR verwendet werden können, indem das Ausgangssignal
an die nächste
Stufe weitergeleitet wird, wobei das Signal wie oben beschrieben
invertiert werden kann.
-
Drei
Schalter 219–221 sind
mit den Ausgängen
der drei Gatter 201–203 gekoppelt.
Wiederum sind diese Schalter von dem Benutzer programmierbar. Dadurch
kann der Benutzer spezifizieren, welches der Ausgangssignale von
den Gattern 201–203 als
Ausgangssignal X von der Zelle 200 an das Steuerglied 224 gesendet
werden soll.
-
Die
oben erwähnten
Schalter 206–211, 218–221 bestehen
aus bidirektionalen programmgesteuerten Durchgangsgattern. In Abhängigkeit
von dem Zustand des Steuersignals sind die Schalter entweder leitend
(d. h. übertragen
ein Signal auf der Leitung) oder nicht leitend (d. h. übertragen
das Signal auf der Leitung nicht). Die in den folgenden Abschnitten
erwähnten
Schalter bestehen in ähnlicher
Weise aus programmgesteuerten Durchgangsgattern.
-
Es
wird nun auf 3A Bezug genommen, in der ein
logischer Cluster 107 gezeigt ist. In dem derzeit bevorzugten
Ausführungsbeispiel
besteht ein logischer Cluster 107 aus vier Zellen 301–304 und
einem D-Flipflop 305, 25 Schaltern 306–330 und
fünf Innenverbindungsleitungen 331–335.
Die Innenverbindungsleitungen 331–335 und die Schalter 306–330 bilden
die I-Matrix. Die I-Matrix schafft die Möglichkeit zur Verbindung des
Ausgangssignals X von jeder der vier Zellen 301–304 und
des Ausgangssignals X des D-Flipflops 305 mit wenigstens
einem Eingang von jeder der drei anderen Zellen und des D-Flipflops.
Beispielsweise kann das Ausgangssignal X der Zelle 301 mit
dem Eingang A der Zelle 302 dadurch verbunden werden, daß die Schalter 306 und 307 aktiviert
werden. In ähn licher
Weise kann das Ausgangssignal X der Zelle 301 mit dem Eingang B
der Zelle 303 verbunden werden, indem die Schalter 306 und 310 aktiviert
werden. Das Ausgangssignal X der Zelle 301 kann mit dem
Eingang A der Zelle 304 verbunden werden, indem die Schalter 306 und 308 aktiviert
werden. Das Ausgangssignal X der Zelle 301 kann mit dem
Eingang D der D-Flipflop Zelle 305 verbunden werden, indem
die Schalter 306 und 309 aktiviert werden.
-
In ähnlicher
Weise kann das Ausgangssignal X von der Zelle 302 mit dem
Eingang A der Zelle 301 verbunden werden, indem die Schalter 311 und 312 aktiviert
werden. Das Ausgangssignal X von der Zelle 302 kann mit
dem Eingang A der Zelle 303 verbunden werden, indem die
Schalter 311 und 315 aktiviert werden. Das Ausgangssignal
X von der Zelle 302 kann mit dem Eingang B der Zelle 304 verbunden werden,
indem die Schalter 311 und 313 aktiviert werden.
Das Ausgangssignal X der Zelle 302 kann mit dem Eingang
D der D-Flipflop-Zelle 305 verbunden werden, indem die
Schalter 311 und 314 aktiviert werden.
-
In ähnlicher
Weise kann das Ausgangssignal X der Zelle 303 mit dem Eingang
B der Zelle 301 verbunden werden, indem die Schalter 326 und 327 aktiviert
werden. Das Ausgangssignal X der Zelle 303 kann mit dem
Eingang A der Zelle 302 verbunden werden, indem die Schalter 326 und 328 aktiviert werden.
Das Ausgangssignal X von der Zelle 303 kann mit dem Eingang
B von der Zelle 304 verbunden werden, indem die Schalter 326 und 329 aktiviert werden.
Das Ausgangssignal X der Zelle 303 kann mit dem Eingang
D der D-Flipflop-Zelle 305 verbunden werden, indem die
Schalter 326 und 330 aktiviert werden.
-
Bei
der Zelle 304 kann das Ausgangssignal X der Zelle 304 mit
dem Eingang B der Zelle 301 verbunden werden, indem die
Schalter 316 und 317 aktiviert werden. Das Ausgangssignal
X der Zelle 304 kann mit dem Eingang B von der Zelle 302 verbunden
werden, indem die Schalter 316 und 318 aktiviert werden.
Das Ausgangssignal X von der Zelle 304 kann mit dem Eingang
A von der Zelle 303 verbunden werden, indem die Schalter 316 und 319 aktiviert werden.
Das Ausgangssignal X der Zelle 304 kann programmierbar
mit dem Eingang D der D-Flipflop-Zelle 305 ver bunden werden,
indem der Schalter 218 in 2A aktiviert
wird.
-
Es
wird auf die Zelle 305 Bezug genommen. Deren Ausgangssignal
kann mit dem A-Eingang der Zelle 301 verbunden werden,
indem die Schalter 320 und 321 aktiviert werden;
mit dem B-Eingang
der Zelle 302, indem die Schalter 320 und 322 aktiviert
werden; mit dem B-Eingang der Zelle 303, indem die Schalter 320 und 325 aktiviert
werden; mit dem A-Eingang der Zelle 304, indem die Schalter 320 und 323 aktiviert
werden und mit dem D-Eingang der Zelle 305 selbst, indem
die Schalter 320 und 324 aktiviert werden.
-
Wie
zu erkennen ist, kann jedes Ausgangssignal der Zellen 301–304 und
des D-Flipflops 305 mit dem Eingang aller seiner benachbarten
Zellen und/oder des Flipflops innerhalb des Clusters verbunden werden.
-
In
dem derzeitig bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung kann jeder logische Cluster mit allen
anderen logischen Clustern innerhalb jedes Logikblocks über Durchgangsgatter-Schalter
verbunden werden, die die I-Matrix von benachbarten Clustern innerhalb
jedes Logikblocks erweitern. Die 3B zeigt
die Erweiterung der I-Matrix-Innenverbindungsleitungen 331–335 der
Zellen 301–304 und
des D-Flipflops 305 eines
logischen Clusters 107 auf eine benachbartes logischer
Cluster 107 über
die Durchgangsgatterschalter 336–355 innerhalb des
gleichen Logikblocks.
-
In
dem derzeit bevorzugten Ausführungsbeispiels
der vorliegenden Erfindung kann jeder logische Block mit allen anderen
logischen Blöcken
des FPGA verbunden werden. Dies gelingt durch die Implementierung
einer Architektur mit mehreren Verbindungsschichten. Es ist wichtig,
zu beachten, daß diese
mehrschichtige Routing-Architektur eine konzeptionelle Hierarchie
und keine Prozeß-
bzw. Technologiehierarchie ist, und daher mit der heutigen Silizium-Prozeßtechnologie
leicht zu implementieren ist. Die unterste Verbindungsschicht wird
als „Blockverbinder" bezeichnet. Eine
Menge von Blockverbindern ermöglicht
den Zugriff und die Verbindungen von Signalen innerhalb eines zugehörigen Logikblocks
(der aus vier logi schen Clustern oder 16 Zellen besteht). Dadurch
sind verschiedene Mengen von logischen Clustern innerhalb desselben
Logikblocks mit jedem beliebigen der anderen logischen Cluster innerhalb der
Gruppe durch die Verwendung der erweiterten I-Matrix und/oder durch Blockverbinder
verbindbar. Wiederum werden programmierbare bidirektionale Durchgangsgatter
als Schalter verwendet, um für den
Benutzer Routing-Flexibilität
bereitzustellen.
-
Die
nächste
Ebene der Verbindungen wird als „Ebene-1-Mehrebenenarchitektur
(Multiple Level Architecture – MLA)"-Routing-Netzwerk bezeichnet. Das Ebene-1-MLA-Routing-Netzwerk
ermöglicht Verbindungen
zwischen verschiedenen Mengen von Blockverbindern. Programmierbare
Durchgangsgatter-Schalter werden verwendet, um den Benutzern die
Auswahlmöglichkeit
zu bieten, welche der Blockverbinder zu verbinden sind. Infolgedessen
ist ein erster Logikblock von einer Menge von Logikblockgruppen
mit einem zweiten Logikblock verbindbar, der zur gleichen Gruppe
gehört.
Die entsprechenden Schalter werden aktiviert, um die Blockverbinder
des ersten Logikblocks mit den Routing-Leitungen des Ebene-1-MLA-Routing-Netzwerks
zu verbinden. Die entsprechenden Schalter des Ebene-1-MLA-Routing-Netzwerks
werden aktiviert, um die Verbindungen für die Blockverbinder des zweiten
Logikblocks zu den Routing-Leitungen des Ebene-1-MLA-Routing-Netzwerks
zur Verfügung
zu stellen. Die entsprechenden Schalter werden aktiviert, um die
Routing-Leitungen des Ebene-1-MLA-Routing-Netzwerkes zu verbinden,
die mit den Blockverbindern des ersten und des zweiten Logikblocks
verbunden haben. Darüber
hinaus hat der Benutzer die Flexibilität, die verschiedenen Schalter
in einem vorgegebenen Logikblock so zu programmieren, daß um die
gewünschten
Innenverbindungen zwischen allen Zellen eines beliebigen Logikblocks
bewirkt werden.
-
Die
nächste
Verbindungsebene wird als „Ebene-2-Mehrebenenarchitektur(MLA)"-Routing-Netzwerk
bezeichnet. Die Ebene-2-MLA ermöglicht
die Zwischenverbindungen zu den verschiedenen Ebene-1-MLA, um den
Zugriff und die Verbindungen eines Blockclusters zu bewirken. Wieder werden
bidirektionale Durchgangs gatterschalter vom von dem Benutzer programmiert,
um die gewünschten
Verbindungen zu bewirken. Durch Implementierung eines Ebene-2-MLA-Routing-Netzwerkes
werden programmierbare Verbindungen zwischen noch größeren Anzahlen
von Logikblöcken
erzielt.
-
Zusätzliche
Ebenen des MLA-Routing-Netzwerkes können implementiert werden,
um programmierbare Verbindungen für weiter ansteigende Anzahlen
und Gruppen von Logikblöcken,
Blockcluster, Blocksektoren usw. zur Verfügung zu stellen. Im wesentlichen
wählt die
vorliegende Erfindung eine dreidimensionale Herangehensweise zum
Implementieren des Routings. Signale werden zwischen den Innenverbindungen
eines Logikblocks weitergeleitet. Auf diese Signale kann dann über Blockverbinder
zugegriffen werden und sie können
entsprechend den programmierten Verbindungen der Blockverbinder weitergeleitet
werden. Sofern erforderlich, können
Signale „angehoben
werden" auf die
Ebene-1-MLA, durch das Ebene-1-MLA-Routing-Netzwerk weitergeleitet
werden, zu den entsprechenden Blockverbindern „abgesenkt" werden und dann zu den Ziellogikblocks
weitergeleitet werden.
-
Sofern
ein Ebene-2-MLA-Routing-Netzwerk erforderlich ist, werden einige
der Signale ein zweites Mal von einer Ebene-1-MLA-Routing-Netzwerkleitung oder direkt
auf das Ebene-2-MLA-Routing-Netzwerk
angehoben, zu einer anderen Menge von Ebene-2-MLA-Routing-Netzwerkleitung weitergeleitet und
von der Ebene-2-MLA-Routing-Netwerkleitung auf eine Ebene-1-MLA-Routing-Netzwerkleitung
abgesenkt. Danach werden die Signale ein zweites Mal „abgesenkt", um das Signal von
der Ebene-1-MLA zu den entsprechenden Blockverbindern des Ziellogikblocks
weiterzuleiten. Alternativ kann das „Anheben" ohne Durchlaufen des Ebene-1-MLA-Routing-Netzwerks
direkt erfolgen. Die gleiche Methode wird für die Ebenen 3, 4, 5,...-MLAs
nach Bedarf ausgeführt, abhängig von
der Größe und der
Dichte der FPGA. Eine Teilebene-n-MLA kann unter Verwendung der oben
beschriebenen Methode zum Implementieren einer FPGA mit einem vorgegebenen
Zellenmatrixzählwert
implementiert werden.
-
4A zeigt
ein Beispiel eines logischen Clusters und die zugehörigen vertikalen
Blockverbinder innerhalb des Logikblocks. In dem derzeit bevorzugten
Ausführungsbeispiel
ist jede Zelle in einem logischen Cluster von dem Eingang durch
zwei vertikale Blockverbinder zugänglich und jeder Ausgang der Zelle
in einem logischen Cluster ist für
zwei der vertikalen Blockverbinder zugänglich. Beispielsweise ist der
Eingang A der Zelle 301 für die vertikalen Blockverbinder 451 (BC-V11)
und 453 (BC-V21) über
die Schalter 467 bzw. 462 zugänglich, der Eingang B der Zelle 301 ist
für die
vertikalen Blockverbinder 452 (BC-V12) und 454 (BC-V22) über die
Schalter 466 bzw. 468 zugänglich, der Ausgang X der Zelle 301 ist für die vertikalen
Blockverbinder 455 (BC-V31) und 458 (BC-V42) über die
Schalter 460 bzw. 459 zugänglich. Der Eingang A der Zelle 302 ist
für die
vertikalen Blockverbinder 453 (BC-V21) und 455 (BC-V31) über die
Schalter 463 bzw. 464 zugänglich, der Eingang B der Zelle 302 ist
für die
vertikalen Blockverbinder 454 (BC-V22) und 456 (BC-V32) über die
Schalter 469 bzw. 470 zugänglich, der Ausgang X der Zelle 302 ist
für die
vertikalen Blockverbinder 452 (BC-V12) und 457 (BC-V41) über die
Schalter 461 bzw. 465 zugänglich. Der Eingang A der Zelle 303 ist für die vertikalen
Blockverbinder 451 (BC-V11) und 453 (BC-V21) über die
Schalter 458 bzw. 476 zugänglich, der Eingang B der Zelle 303 ist
für die
vertikalen Blockverbinder 452 (BC-V12) und 454 (BC-V22) über die
Schalter 480 bzw. 476 zugänglich, der Ausgang X der Zelle 303 ist
für die
vertikalen Blockverbinder 455 (BC-V31) und 458 (BC-V42) über die
Schalter 472 bzw. 471 zugänglich, der Eingang A der Zelle 304 ist
für die
vertikalen Blockverbinder 453 (BC-V121 und 455 (BC-V31) über die
Schalter 477 bzw. 478 zugänglich, der Eingang B der Zelle 304 ist für die vertikalen
Blockverbinder 454 (BC-V22) und 456 (BC-V32) über die
Schalter 482 bzw. 484 zugänglich, der Ausgang X der Zelle 304 ist
für die
vertikalen Blockverbinder 452 (BC-V12) und 457 (BC-V41) über die
Schalter 475 bzw. 474 zugänglich. Der Eingang der D-Flipflop-Zelle 305 ist
für die
vertikalen Blockverbinder 454 (BC-V22) und 455 (BC-V31) über die
Schalter 473 bzw. 479 zugänglich, der Ausgang X der Zelle 305 ist
für die
vertikalen Blockverbinder 452 (BC-V12) und 457 (BC-V41) über die
Schalter 483 bzw. 486 zugänglich.
-
In ähnlicher
Weise zeigt 4B die möglichen Verbindungen, die zu
horizontalen Blockverbindern und dem in 4A gezeigten
logischen Cluster gehören.
Der Eingang A der Zelle 301 ist für die horizontalen Blockverbinder 402 (BC-H12)
und 404 (BC-H22) über
die Schalter 409 bzw. 413 zugänglich, der Eingang B der Zelle 301 ist
für die
horizontalen Blockverbinder 401 (BC-H11) und 403 (BC-H21) über die
Schalter 415 bzw. 416 zugänglich, der Ausgang X der Zelle 301 ist
für die
horizontalen Blockverbinder 405 (BC-H31) und 408 (BC-H42) über die
Schalter 421 bzw. 428 zugänglich. Der Eingang A der Zelle 302 ist
für die
horizontalen Blockverbinder 402 (BC-H12) und 404 (BC-H22) über die
Schalter 411 bzw. 414 zugänglich, der Eingang B der Zelle 302 ist für die horizontalen
Blockverbinder 401 (BC-H11) und 403 (BC-H21) über die
Schalter 433 bzw. 417 zugänglich, der Ausgang X der Zelle 302 ist
für die
horizontalen Blockverbinder 405 (BC-H31) und 408 (BC-H42) über die
Schalter 418 bzw. 424 zugänglich. Der Eingang A der Zelle 303 ist
für die
horizontalen Blockverbinder 404 (BC-H22) und 406 (BC-H32) über die
Schalter 419 bzw. 426 zugänglich, der Eingang B der Zelle 303 ist
für die
horizontalen Blockverbinder 403 (BC-H21) und 405 (BC-H31) über die Schalter 420 bzw. 425 zugänglich,
der Ausgang X der Zelle 303 ist für die horizontalen Blockverbinder 402 (BC-H12)
und 407 (BC-H41) über
die Schalter 410 bzw. 427 zugänglich. Der Eingang A der Zelle 304 ist für die horizontalen
Blockverbinder 404 (BC-H22) und 406 (BC-H32) über die
Schalter 422 bzw. 430 zugänglich, der Eingang B der Zelle 304 ist
für die
horizontalen Blockverbinder 403 (BC-H21) und 405 (BC-H31) über die
Schalter 423 bzw. 429 zugänglich, der Ausgang X der Zelle 304 ist
für die
horizontalen Blockverbinder 402 (BC-H12) und 407 (BC-H41) über die
Schalter 412 bzw. 434 zugänglich. Der Eingang der D-Flipflop-Zelle 305 ist
für die
horizontalen Blockverbinder 403 (BC-H21) und 406 (BC-H32) über die
Schalter 436 bzw. 431 zugänglich, der Ausgang X der Zelle 305 ist
für die
horizontalen Block verbinder 401 (BC-H11) und 408 (BC-H42) über die Schalter 432 bzw. 435 zugänglich.
-
4A und 4B zeigen
die Zugriffsmethode der vertikalen und horizontalen Blockverbinder auf
den logischen Cluster oben links (NW) in einem Logikblock in dem
derzeit bevorzugten Ausführungsbeispiel.
Der untere linke (SW) Cluster hat eine identische Zugriffsmethode
für die
vertikalen Blockverbinder wie das NW-Cluster. Der obere rechte (NE
bzw. NO) Cluster hat eine ähnliche
Zugriffsmethode wie der NW-Cluster im Hinblick auf die vertikalen
Blockverbinder außer
daß die
Sequenz des Zugriffs der vertikalen Blockverbinder verschoben ist.
Die vertikalen Blockverbinder 451–458 können als
zu einem Zylinder (451, 452,...458) verkettet
betrachtet werden. Jede Verschiebung, z. B. um vier, führt zu einer
neuen Sequenz (455, 456, 457, 458, 451, 452, 453, 454). Anstelle
mit den vertikalen Blockverbindern (VBC) 451 und 453 zu
beginnen, zu denen die Zelle 301 in dem in 4A gezeigten
NW-Cluster Zugang hat, ist die Zelle 301 in dem NE-Cluster
für die
VBCs 455 und 457 zugänglich. Die Nummerierung ist
um vier "verschoben". Die Zugriffsbezeichnung
des Clusters unten rechts (SE bzw. SO) für die VBCs ist identisch zu
derjenigen des NE-Clusters.
-
In ähnlicher
Weise ist der Zugriff der horizontalen Blockverbinder auf den NW-Cluster
identisch zu demjenigen für
den NE-Cluster, und der SW-Cluster ist zum SE-Cluster identisch,
während
der Zugriff der horizontalen Blockverbinder auf den SW-Cluster im Vergleich
zu demjenigen des NW-Clusters um vier verschoben ist.
-
In
dem derzeit bevorzugten Ausführungsbeispiel
werden 16 Blockverbinder pro Logikblock (d. h. vier Cluster oder
eine 4 × 4-Zellen-Matrix)
verwendet. Das Hinzufügen
eines Ebene-1-MLA-Routing-Netzwerks
ermöglicht
die Verbindbarkeit einer Blockclusters (eines 8 × 8-Zellen-Matrix). Das Hinzufügen eines
Ebene-2-MLA-Routing-Netzwerkes erhöht die Verbindbarkeit eines
Blocksektors (16 × 16-Zellen-Matrix).
Zusätzliche
Ebenen von MLA-Routing-Netzwerken erhöhen die Anzahl der Blocksektoren
um Faktoren von 4, währen
die Länge
(oder Reichweite) jeder Leitung in dem MLA-Routing-Netzwerk um Faktoren
von 2 erhöht
wird. Die Anzahl von Routing-Leitungen in der Ebene-2-MLA wird um einen
Faktor von 2 erhöht;
da die Anzahl der Blocksektoren um einen Faktor von 4 anstieg, nimmt
die Anzahl der Routing-Leitungen in der nächsten Ebene der Hierarchie
tatsächlich
um einen Faktor von 2 pro Flächeneinheit
ab.
-
5A zeigt
einen Logikblock mit zugehörigen
16 Blockverbindern und dem Logikblock zugeordneten Ebene-1-MLA-Routing-Leitungen.
Die 16 Blockverbinder 501–516 sind mit dicken
Linien dargestellt, wogegen die 16 Ebene-1-MLA-Routing-Netzwerkleitungen 517–532 mit
dünneren
Linien dargestellt sind. Man beachte, daß die Länge oder Spanne der Blockverbinder
in dem Logikblock endet, während
sich die Länge
der Ebene-1-MLA-Routing-Netzwerkleitungen
zu benachbarten Logikblöcken
erstreckt (doppelte Länge
der Blockverbinder).
-
Sowohl
Blockverbinder als auch Ebene-1-MLA-Routing-Netzwerkleitungen sind
in horizontale und vertikale Gruppen unterteilt: vertikale Blockverbinder 501–508,
horizontale Blockverbinder 509–516, vertikale Ebene-1-MLA-Routing-Netzwerkleitungen 517–524 und
horizontale Ebene-1-MLA-Routing-Netzwerkleitungen 525–532.
-
In
dem derzeit bevorzugten Ausführungsbeispiel
gibt es 24 Ebene-1-MLA-Umlenkpunkte für die 16 Ebene-1-MLA-Routing-Netzwerkleitungen
in dem Logikblock. In 5A sind die 24 Umlenkpunkte
als nicht ausgefüllte
Punkte 541 bis 564 dargestellt.
-
Ein
MLA-Umlenkpunkt ist ein programmierbares bidirektionales Durchgangsgatter,
um eine Verbindbarkeit zwischen einer horizontalen MLA-Routing-Netzwerkleitung
und einer vertikalen MLA-Routing-Netzwerkleitung zu schaffen. Beispielsweise führt das
Aktivieren des Ebene-1-MLA-Umlenkpunktes 541 dazu, daß die horizontale
Ebene-1-MLA-Routing-Netzwerkleitung 526 und die vertikale
Ebene-1-MLA-Routing-Netzwerkleitung 520 miteinander verbunden
werden. 5B zeigt den Ebene-1-MLA-Umlenkpunkt 541.
Der Schalter 583 steuert, ob die Ebene-1-MLA-Routing-Netzwerkleitung 526 mit
der Ebene-1-MLA-Routing-Netzwerkleitung 520 verbunden sein
soll. Wenn der Schalter aktiviert ist, dann ist die Ebene-1-MLA-Routing-Netzwerkleitung 526 mit
der Ebene-1-MLA-Routing-Netzwerkleitung 520 verbunden.
Ansonsten ist die Leitung 526 nicht mit der Leitung 520 verbunden.
Der Schalter 583 ist für
den Benutzer programmierbar. Die Umlenkpunkte sind als paarweise
Gruppen angeordnet, und zwar mit dem Ziel, um einen Schaltzugriff
zu ermöglichen,
wobei zwei oder mehr Blockverbinder zunächst über die Blockverbinder mit
Ebene-1-MLA-Austauschnetzwerken verbunden werden und dann ausgewählte Ebene-1-MLA-Routing-Leitungen
durch Aktivierung der Schalter verbunden werden. Die Ebene-1-MLA-Leitungen
werden zum Verbinden derjenigen Blockverbinder verwendet, die in
separaten Logikblocks in dem gleichen Blockcluster angeordnet sind.
-
Es
wird erneut auf die 5A Bezug genommen. Es gibt acht
Blockverbinder zu Ebene-1-MLA-Austauschnetzwerken 533–540 für jeden Logikblock.
Diese Austauschnetzwerke dienen dazu, bestimmte Blockverbinder mit
Ebene-1-MLA-Leitungen zu verbinden, und zwar so wie es vom Benutzer programmiert
ist. 5C zeigt das Austauschnetzwerk 537 detaillierter.
Der Blockverbinder zum Ebene-1-MLA-Routing-Austauschnetzwerk hat
acht Steuerglieder 575–582.
Diese acht Steuerglieder 575–582 werden verwendet,
um eine bidirektionale Ansteuerung für die Blockverbinder 501, 502 und
die Ebene-1-MLA-Leitungen 517, 518 zu ermöglichen. Beispielsweise
führt das
Aktivieren des Schalters 565 dazu, daß das Signal auf dem Blockverbinder 501 durch
das Steuerglied 575 von der Ebene-1-MLA-Leitung 517 gesteuert
wird. Das Aktivieren des Schalters 566 führt dazu,
daß das
Signal auf der Ebene-1-MLA-Leitung 517 durch das Steuerglied 576 von
dem Blockverbinder 501 gesteuert wird. Das Aktivieren des
Schalters 567 führt
dazu, daß das
Signal auf dem Blockverbinder 501 durch das Steuerglied 577 von
der Ebene-1-MLA-Leitung 518 gesteuert wird. Das Aktivieren
des Schalters 568 führt
dazu, daß das
Signal auf der Ebene-1-MLA-Leitung 518 durch
das Steuerglied 578 von dem Blockverbinder 501 gesteuert
wird.
-
In ähnlicher
Weise führt
das Aktivieren des Schalters 569 dazu, daß das Signal
auf dem Blockverbinder 502 durch das Steuerglied 579 von
der Ebene-1-MLA-Leitung 517 gesteuert wird. Das Aktivieren
des Schalters 570 führt
dazu, daß das
Signal auf der Ebene-1-MLA-Leitung 517 durch das Steuerglied 580 von
dem Blockverbinder 502 gesteuert wird. Das Aktivieren des
Schalters 571 führt
dazu, daß das
Signal auf dem Blockverbinder 502 durch das Steuerglied 581 von
der Ebene-1-MLA-Leitung 518 gesteuert
wird. Das Aktivieren des Schalters 572 führt dazu,
daß das
Signal auf der Ebene-1-MLA-Leitung 518 durch das Steuerglied 582 von
dem Blockverbinder 502 gesteuert wird. Der Schalter 573 wird verwendet,
um zu steuern, ob ein Signal von einem Blockverbinder 501 zu
dem benachbarten Blockverbinder 584 passieren soll, der
zum benachbarten Logikblock gehört.
-
In ähnlicher
Weise wird der Schalter 574 verwendet, um zu steuern, ob
ein Signal von einem Blockverbinder 502 zum benachbarten
Blockverbinder 585 passieren soll, der zum benachbarten
Logikblock gehört.
-
6 zeigt
das Routing-Netzwerk für
einen Blockcluster. Der Blockcluster besteht im wesentlichen aus
vier Logikblökken,
die von den Ebene-1-MLA-Austauschnetzwerken 533–540 verbunden
sein können.
Wie zu sehen ist, gibt es 32 Ebene-1-MLA-Routing-Netzwerkleitungen.
-
7A zeigt
das Blockschaltbild für
einen Blocksektor. Der Blocksektor besteht aus vier Blockclustern 701–704.
Wie oben erörtert,
sind die Blockcluster durch Blockverbinder und Ebene-1-MLA-Routing-Netzwerkleitungen
miteinander verbunden. Darüber
hinaus besteht der Blocksektor ferner aus 64 Ebene-2-MLA-Routing-Netzwerkleitungen
und 64 Ebene-2-zu-Ebene-1-Austauschnetzwerken, um eine Verbindungsmöglichkeit
zwischen einem Ebene-1-MLA-Routing-Netzwerk und einem Ebene-2-MLA-Routing-Netzwerk
zu schaffen. Die Ebene-1-zu-Ebene-2-MLA-Routing-Austauschnetzwerke sind in 7A mit
Rechtecken dargestellt. Ferner gehören zu jedem der vier Logikblöcke in dem
Blocksektor 64 Ebene-2-MLA-Umlenkpunkte. Dementsprechend
gibt es für
den Blocksektor 192 Ebene-2-MLA-Umlenkpunkte.
-
7B zeigt
ein beispielhaftes Ebene-1-zu-Ebene-2-MLA-Routing-Austauschnetzwerk 705.
Es ist erkennbar, daß der
Schalter 710 verwendet wird, um zu steuern, ob ein Signal
zwi schen der Ebene-1-MLA-Leitung 709 und der Ebene-2-MLA-Leitung 708 durchgelassen
werden soll. Ein Schalter 711 wird verwendet, um zu steuern,
ob ein Signal zwischen der Ebene-1-MLA-Leitung 709 und der Ebene-2-MLA-Leitung 707 durchgelassen werden
soll. Ein Schalter 712 wird verwendet, um zu steuern, ob
ein Signal zwischen der Ebene-1-MLA-Leitung 706 und der
Ebene-2-MLA-Leitung 708 durchgelassen
werden soll. Ein Schalter 713 wird verwendet, um zu steuern,
ob ein Signal zwischen der Ebene-1-MLA-Leitung 706 und
der Ebene-2-MLA-Leitung 707 durchgelassen werden soll.
Ein Schalter 714 wird verwendet, um zu steuern, ob ein
Signal von einer Ebene-1-MLA-Leitung 709 zu der benachbarten
Ebene-1-MLA-Leitung 716 durchgelassen werden soll, welche
zu dem benachbarten Blockcluster gehört. In ähnlicher Weise wird ein Schalter 715 verwendet,
um zu steuern, ob ein Signal von einer Ebene-1-MLA-Leitung 706 zu
der benachbarten Ebene-1-MLA-Leitung 715 durchgelassen werden
soll, die zu dem benachbarten Blockcluster gehört.
-
8A zeigt
einen Sektorcluster. Der Sektorcluster besteht aus vier Blocksektoren 801–804 und
deren zugehörigen
Blockverbindern, Ebene-1- und Ebene-2-MLA-Routing-Netzwerkleitungen
und Austauschnetzwerken. Darüber
hinaus gibt es 128 Ebene-3-MLA-Routing-Netzwerkleitungen, die eine Verbindungsmöglichkeit
zwischen den Ebene-2-MLA-Leitungen bereitstellen, die zu verschiedenen
Blockclustern 801–804 in
dem gleichen Sektorcluster 800 gehören. Es gibt 96 den Ebene-3-MLA-Leitungen
zugeordnete Ebene-3-MLA-Umlenkpunkte für jeden Blocksektor 801–804 (d,
h. insgesamt 384 Ebene-3-MLA-Umlenkpunkte für den Sektorcluster). Darüber hinaus gibt
es 32 Ebene-2-zu-Ebene-3-MLA-Routing-Austauschnetzwerke,
die jedem der vier Blocksektoren 801–804 zugeordnet sind.
Infolgedessen gibt es insgesamt 128 Ebene-3-MLA-Routing-Austauschnetzwerke,
um eine programmierbare Verbindungsmöglichkeit zwischen den verschiedenen
Ebene-2- und Ebene-3-MLA-Leitungen bereitzustellen.
-
8B zeigt
ein Beispiel eines Ebene-2-zu-Ebene-3-MLA-Routing-Austauschnetzwerkes 805.
Wie zu erkennen ist, führt
das Aktivieren des Schalters 810 dazu, daß ein Signal
auf der Ebene-2-MLA-Leitung 808 mit der Ebene-3-MLA-Leitung 806 ver bunden
wird. Das Entaktivieren des Schalters 810 trennt die Ebene-2-MLA-Leitung 808 von
der Ebene-3-MLA-Leitung 806. Das Aktivieren des Schalters 811 führt dazu,
daß ein
Signal auf der Ebene-2-MLA-Leitung 808 mit der Ebene-3-MLA-Leitung 807 verbunden
wird. Das Entaktivieren des Schalters 811 trennt die Ebene-2-MLA-Leitung 808 von
der Ebene-3-MLA-Leitung 807. In ähnlicher Weise führt das
Aktivieren des Schalters 812 dazu, daß ein Signal auf der Ebene-2-MLA-Leitung 809 mit
der Ebene-3-MLA-Leitung 806 verbunden
wird. Das Entaktivieren des Schalters 812 trennt die Ebene-2-MLA-Leitung 809 von
der Ebene-3-MLA-Leitung 806.
Das Aktivieren des Schalters 813 führt dazu, daß ein Signal
auf der Ebene-2-MLA-Leitung 809 mit der Ebene-3-MLA-Leitung 807 verbunden
wird. Das Entaktivieren des Schalters 813 trennt die Ebene-2-MLA-Leitung 809 von
der Ebene-3-MLA-Leitung 807.
-
Gemäß der vorliegenden
Erfindung können größere und
leistungsfähigere
FPGAs dadurch realisiert werden, daß zusätzliche Logiksektorcluster
hinzugefügt
werden, die mit Hilfe von zusätzlichen
Ebenen von MLA-Routing-Netzwerken mit den entsprechenden MLA-Umlenkpunkten
und Austauschnetzwerken verbunden werden.
-
Bei
einem Ausführungsbeispiel
der vorliegenden Erfindung kann jede der fünf I-Matrixleitungen (331–335, 3A)
erweitert werden, um eine Verbindungsmöglichkeit zwischen zwei benachbarten
I-Matrixleitungen zu schaffen, die zu verschiedenen Clustern gehören. Die
Durchgangsgatterschalter 336–340, 341–345, 346–350 und 351–355 in 3B sind
Beispiele für
vier verschiedene Mengen von 2-Matrixleitungserweiterungschaltern.
Dies schafft eine noch größere Flexibilität, indem
die Möglichkeit zur
Verfügung
gestellt wird, ein Signal zwischen zwei benachbarten Clustern weiterzuleiten,
ohne daß Blockverbinder
zum Weiterleiten verwendet werden müssen.
-
In ähnlicher
Weise können
die Blockverbinder erweitert werden, um eine Verbindungsmöglichkeit
zwischen zwei benachbarten Blockverbindern zu schaffen, die zu zwei
verschiedenen Logikblöcken gehören. Der
Schalter 573 von 5C zeigt
eine derartige Blockverbindererweiterung, die den Blockverbinder 501 über den
Schalter 573 mit dem Blockverbinder 584 verbindet.
Dies schafft eine noch größere Flexibilität, indem
die Möglichkeit
geschaffen wird, ein Signal zwischen zwei benachbarten Logikblöcken weiterzuleiten,
ohne daß es über die
Ebene-1-MLA-Leitungen und die zugehörigen MLA-Austauschnetzwerke
weitergeleitet werden muß.
Dieses Konzept kann in ähnlicher
Weise auch auf die Ebene-1-MLA-Leitungen angewendet werden. Der Schalter 714 von 7B zeigt
ein Beispiel, bei dem eine Ebene-1-MLA-Leitung 709 erweitert
wird, um beim Aktivieren des Schalters 714 eine Verbindung zur
Ebene-1-MLA-Leitung 716 herzustellen. Dies schafft weitere
Flexibilität,
in dem die Möglichkeit
geschaffen wird, ein Signal zwischen zwei benachbarten Blockclustern
weiterzuleiten, ohne daß es über die
Ebene-2-MLA-Leitungen und die zugehörigen MLA-Austauschnetzwerke
weitergeleitet werden muß.
-
9 zeigt
ein Ausführungsbeispiel
eines hierarchischen Mehrebenen-Routing-Netzwerks, das eine Weiterleitungsmöglichkeit
zwischen den Logikblöcken
und den MLA-Ebenen bietet. Acht Logikblöcke 901–908 sind
dargestellt. Jedem der Logikblöcke 901–908 sind
mehrere Blockverbinder zugeordnet. Bei dem derzeit bevorzugten Ausführungsbeispiel gibt
es acht horizontale und acht vertikale Blockverbinder, die jedem
der Logikblöcke 901–908 zugeordnet
sind. Zur Klarheit und zum leichteren Verständnis sind die einem einzelnen
Logikblock entsprechenden Blockverbinder durch eine einzelne Linie
dargestellt (z. B. entsprechen die Blockverbinder 909–916 den Logikblöcken 901–908),
und es sind nur die horizontalen Blockverbinder dargestellt.
-
Die
Blockverbinder 909–916 wiederum
sind mit programmierbaren bidirektionalen Steuergliedern 917–924 gekoppelt.
Folglich können
die Blockverbinder 909–916 so
programmiert werden, daß sie
bidirektional mit den MLA-1-Leitungen 925–928 gekoppelt
sind. Beispielsweise kann das Austauschnetzwerk 917 so
programmiert sein, daß es
einen der Blockverbinder 909 des Logikblock 901 mit
der MLA-1-Leitung 925 verbindet. Zusätzliche programmierbare bidirektionale
Steuerglieder 929–932 werden
verwendet, um Verbindungen zwischen den MLA-1- Leitungen 925–928 und
der nächsten MLA-Ebene,
den MLA-2-Leitungen 933–934 zu schaffen.
Programmierbare bidirektionale Steuerglieder 935–936 schaffen
selektiv Verbindungen zwischen den MLA-2-Leitungen 933–934 und
der MLA-3-Leitung 937. Dieses hierarchische Verbindungsschema
kann für
mehrere zusätzliche MLA-Ebenen
wiederholt werden.
-
10 zeigt
ein weiteres Ausführungsbeispiel
eines hierarchischen Mehrebenen-Routing-Netzwerkes, das eine Verbindungsmöglichkeit zwischen
den Logikblöcken
und den MLA-Ebenen schafft. Dieses Ausführungsbeispiel ähnelt dem
in 9 gezeigten Routing-Netzwerk, außer daß die Blockverbinder
direkt mit einer beliebigen MLA-Ebene verbunden werden können und
alle dazwischenliegenden MLA-Ebenen übersprungen werden können. Es
sind acht Logikblöcke 1001–1008 dargestellt. Jedem
der Logikblöcke
ist eine Mehrzahl von Blockverbindern 1009–1016 zugeordnet.
Programmierbare bidirektionale Steuerglieder 1017–1024 werden verwendet,
um die Blockverbinder 1009–1016 selektiv mit
Blockverbinder-Anschlußstreifen 1025–1032 zu
koppeln. Die Blockverbinder-Anschlußstreifen 1025–1032 werden
als Verbindungspunkte verwendet, von denen Verbindungen zu mehreren MLA-Schichten
hergestellt werden können.
Programmierbare bidirektionale Mengen von Steuergliedern (1033–1035),
(1036–1038),
(1039–1041), (1042–1044),
(1045–1047),
(1048–1050), (1051–1053),
(1054–1056)
gehören
zu den entsprechenden Blockverbinder-Anschlußstreifen 1025–1032.
Jede dieser Mengen von Steuergliedern ermöglicht, daß ihr entsprechender Logikblock
mit der MLA-1-Leitung 1061 oder der MLA-2-Leitung 1062 oder
der MLA-3-Leitung 1063 verbunden wird, ohne daß dazwischenliegende
MLA-Leitungen passiert werden müssen.
Beispielsweise kann der Logikblock 1001 mit der MLA-1-Leitung 1061 verbunden werden,
indem selektiv die Steuerglieder 1017 und 1033 aktiviert
werden. Der Logikblock 1001 kann auch mit der MLA-2-Leitung 1062 verbunden
werden, indem die Steuerglieder 1017 und 1034 selektiv aktiviert
werden. Man beachte, daß bei
diesem Ausführungsbeispiel
der Logikblock 1001 mit der MLA-2-Leitung 1062 verbunden
werden kann, ohne zunächst
mit der MLA-1-Leitung 1061 verbunden werden zu müs sen. Ferner
kann der Logikblock 1001 mit der MLA-3-Leitung 1063 verbunden
werden, indem selektiv die Steuerglieder 1017 und 1035 aktiviert
werden. Man beachte, daß bei
diesem Ausführungsbeispiel
der Logikblock 1001 weder mit der MLA-1-Schicht noch mit
der MLA-2-Schicht verbunden werden muß, um mit der MLA-3-Schicht
verbunden zu werden. Durch direktes Verbinden des Logikblocks mit
der gewünschten
MLA-Schicht kann die Geschwindigkeit des gesamten Routing-Netzwerkes verbessert
werden. Darüber
hinaus können
die Geschwindigkeit und die Routing-Flexibilität erhöht werden, indem zwei oder
mehr benachbarte Logikblöcke direkt
verbunden werden. Dadurch können
benachbarte Logikblöcke
miteinander kommunizieren, ohne über
irgendwelche MLA-Schichten weitergeleitet werden zu müssen. Beispielsweise
können
die Logikblöcke 1001 und 1002 über das
programmierbare bidirektionale Steuerglied 1057 verbunden
werden; die Logikblöcke 1003 und 1004 können über das Steuerglied 1058 verbunden
werden; und die Logikblöcke 1005–1007 können über die
Steuerglieder 1059–1060 verbunden
werden. Dieses hierarchische Routing-Schema kann ohne weiteres eine
beliebige Anzahl von Logikblöcken
und MLA-Schichten haben. Zusätzlich
kann ein Durchgangsgatter 1064 integriert werden, um den
zum Logikblock 1002 gehörenden Blockverbinder 1010 mit
dem zum Logikblock 1003 gehörenden Blockverbinder 1011 zu
verbinden.
-
11 zeigt
ein Blockschaltbild eines Ausführungsbeispiels
des hierarchischen Routing-Netzwerkes, wobei zwei Gruppen von Blockverbindern auf
die gleichen MLA-Leitungen zugreifen. Eine erste Gruppe von Logikblöcken 1101–1104 und
eine zweite Gruppe von Logikblöcken 1105–1108 sind
dargestellt. Die erste Gruppe von Logikblöcken 1101–1104 kann
selektiv mit der MLA-1-Schicht 1109 und 1121, der
MLA-2-Schicht 1110, der MLA-3-Schicht 1111 und
dem MLA-Anschlußstreifen 1112 über Blockverbinder-Anschlußstreifen 1113–1116 verbunden
werden. In ähnlicher
Weise kann die zweite Gruppe von Logikblöcken 1105–1108 selektiv
mit der MLA-1-Schicht 1109 und 1121 der MLA-2-Schicht 1110 der
MLA-3-Schicht 1111 und dem MLA-Anschlußstreifen 1112 über deren
jeweilige Blockverbinder-Anschlußstreifen 1117–1120 verbunden
werden.
-
12 zeigt ein Blockschaltbild eines Teils des
Mehrebenen-Routing-Netzwerkes, welches Blockverbinder zu der MLA-3-Ebene mit MLA-Anschlußstreifen
für höhere Ebenen
des Routing-Netzwerkes (die I-Matrix ist nicht dargestellt) umfaßt. 12 zeigt die Verbindungen einer Menge
von Blockverbindern und ihrer zugehörigen höheren Ebenen von MLAs in der
horizontalen Richtung. Außerdem
gibt es eine entsprechende senkrechte (z. B. vertikale) Gruppe von
Routing-Netzwerken, die die Blockverbinder und die zugehörigen MLAs
verbinden. Diese senkrechte Gruppe ist in 12 nicht
gezeigt, um die vorliegende Erfindung nicht zu verdecken. Man beachte,
daß es
eine entsprechende Kopie des Routing-Netzwerkes für jeden
einzelnen Blockverbinder und zugehörige MLAs des FPGA gibt.
-
In 12 sind 32 Blöcke 1201–1232 dargestellt.
Jedem Block ist ein einzelner und benachbarter Block zusammen mit
zwei Blockverbinder- bzw. BC-Anschlußstreifen zugeordnet, z. B.
einem horizontalen und einem vertikalen Anschlußstreifen. Jeder der Blockverbinder 1201–1232 ist
mit zwei auswählbaren
BC-Anschlußstreifen über einen
programmierbaren Schalter gekoppelt. Beispielsweise ist der Blockverbinder 1201 mit
dem auswählbaren
BC-Anschlußstreifen 1233 über den
programmierbaren Schalter 1234 gekoppelt. Die zweite Gruppe
von BC-Anschlußstreifen,
welche senkrecht (z. B. vertikal) zu der ersten BC-Kontaktgruppe
liegt, ist nicht dargestellt. Ein ähnliches BC-Anschlußstreifen-Verbindungsschema
gibt es für
die Blockverbinder 1217–1232 (sowohl horizontal
als auch vertikal). Für jeden
BC-Anschlußstreifen
gibt es bidirektional programmierbare Steuerglieder, die mit den
MLA-1-Routing-Leitungen verbindbar sind. Beispielsweise ist der BC-Anschlußstreifen 1233 über die
Steuerglieder 1236 selektiv mit der MLA-1-Routing-Leitung 1235 verbindbar.
Diese Steuerglieder können
zu den entsprechenden BC-Anschlußstreifen entweder parallel oder
senkrecht verlaufen. Bei dem derzeit bevorzugten Ausführungsbeispiel
beträgt
die Anzahl der MLA-1-Leitungen die Hälfte der Anzahl der Blockverbinder,
da es für
jeden Blockverbinder eine entsprechende MLA-1-Leitung plus eine
weitere MLA-1-Leitung gibt, welche senkrecht zu der ersten MLA-1-Leitung
liegt. Jede MLA-1-Leitung ist über
programmierbare Mittel mit dem entsprechenden Blockverbinder, MLA-2
und MLA-3-Leitungen über
deren zugehörige BC-Anschlußstreifen
verbindbar. Man beachte, daß das
MLA-1-Routing-Netzwerk zusammen mit den I-Matrix-Leitungen und den
Blockverbindern die Routing-Ressourcen in einem 2 × 2-Blockgebiet
bilden. Dieses Format verbessert die komplexere Logikfunktionsbildung
beim Zugreifen und Verbinden der Zellen. Ferner wird das MLA-1-Routing-Netzwerk
zusätzlich
zu den I-Matrix-Leitungen
und den Blockverbindern zu zusätzlichen
bidirektional programmierbaren Zugriffsleitungen, die als Zugangsports
für die
Implementierung noch komplexerer Logikfunktionen über Verbindungen
von anderen MLA-Leitungen oder von Blockverbindern von außerhalb
des 2 × 2-Blockgebiets
dienen können.
Durch Verwendung von programmierbaren Schaltern kann auf die I-Matrix-Leitungen
und Blockverbinder selektiv zugegriffen werden, die nicht notwendigerweise
benachbart oder kongruent zu den 2 × 2-Blockbereichen sind. Daher
nimmt die Gesamtanzahl der Routing-Segmente, einschließlich I-Matrix-Leitungen, Blockverbinder
und MLA-1-Leitungen geometrisch zu, wenn eine Entwicklung von einem
Block zu 2 × 2-Blöcken vorliegt.
-
Für jeden
BC-Anschlußstreifen
gibt es bidirektional programmierbare Steuerglieder, die mit den MLA-2-Routing-Leitungen
verbindbar sind. Beispielsweise ist der Blockverbinder-Anschlußstreifen 1233 mit
der MLA-2-Leitung 1237 über
Steuerglied 1238 verbindbar. Das MLA-2 kann entweder parallel
oder senkrecht zu den entsprechenden BC-Anschlußstreifen verlaufen. In dem
derzeit bevorzugten Ausführungsbeispiel
beträgt
die Anzahl der MLA-2-Leitungen die Hälfte der Anzahl der MLA-1-Leitungen. Jede MLA-2-Leitung
ist über
programmierbare Mittel mit dem entsprechenden Blockverbinder, MLA-1
und MLA-3-Leitungen durch den entsprechenden BC-Anschlußstreifen
verbindbar. Das MLA-2-Routing-Netzwerk zusammen mit den I-Matrix-Leitungen,
Blockverbindern und dem MLA-1-Routing-Netzwerk bilden die Ressourcen
in einem 4 × 4-Blockbereich
für einen Zugriff
und ein Verbinden der Zellen mit einer komplexeren Logikfunktionsbildung.
In diesem Fall wird das MLA-2-Routing-Netzwerk in Verbindung mit
den I-Matrix-Leitungen, den Blockverbindern und den MLA-1-Leitungen
zu zusätzlichen
bidirektional programmierbaren Zugriffsleitungen, die als Zugriffsports
für die
Implementierung von noch komplexeren Logikfunktionen durch Verbindungen
mit anderen MLA-Leitungen oder Blockverbindern von außerhalb
des 4 × 4-Blockbereichs
dienen können.
Mit Hilfe von programmierbaren Schaltern muß der Zugriff nicht notwendigerweise
benachbart oder kongruent zu dem 4 × 4-Blockbereich sein. Die
Gesamtanzahl von Routing-Segmenten, einschließlich den 2-Matrix-Leitungen,
den Blockverbindern, den MLA-1-Leitungen und den MLA-2-Leitungen
in einer 4 × 4-Blockeinheit
wächst
proportional zur Zunahme der Logikzellen. Die Zunahme der Gesamtanzahl
ist geometrisch, wenn eine Entwicklung von einem Block zu 4 × 4-Blöcken vorliegt.
In ähnlicher
Weise gibt es für
jeden BC-Anschlußstreifen
bidirektional programmierbare Steuerglieder, die mit MLA-3-Routing-Leitungen
verbindbar sind. Beispielsweise ist der BC-Anschlußstreifen 1233 mit
der MLA-3-Leitung 1239 über
Steuerglieder 1240 verbindbar. Die MLA-3-Routing-Leitung
kann entweder parallel oder senkrecht (z. B. horizontal oder vertikal)
zu den entsprechenden BC-Anschlußstreifen
sein. Bei dem derzeit bevorzugten Ausführungsbeispiel beträgt die Anzahl
der MLA-3-Leitungen die Hälfte
der Anzahl der MLA-2-Leitungen. Jede MLA-3-Leitung ist über programmierbare
Mittel mit dem entsprechenden Blockverbinder, MLA-1- und MLA-2-Leitungen über den
entsprechenden BC-Anschlußstreifen
verbindbar. Das MLA-3-Routing-Netzwerk
zusammen mit den I-Matrix-Leitungen, den Blockverbindern, dem MLA-1-Routing-Netzwerk
und dem MLA-2-Routing-Netzwerk
bilden die Routing-Ressourcen in einem 8 × 8-Blockbereich zum Zugreifen und zum Verbinden
der Zellen mit einer komplexeren Logikfunktionsbildung. Das MLA-3-Routing-Netzwerk wird zusätzlich zu
den I-Matrix-Leitungen, Blockverbindern, MLA-1-Leitungen und MLA-2-Leitungen
zu zusätzlichen
bidirektional programmierbaren Zugriffsleitungen, die als Zugriffsports
zur Implementierung noch komplexerer Logikfunktionen dienen können, und zwar über Verbindungen
von anderen MLA-Leitungen oder von Blockverbindern, die außerhalb des
8 × 8-Blockbereichs
angeordnet sind, und nicht notwendigerweise benachbart oder durch
programmierbare Mittel kongruent zu dem 8 × 8-Blockbereich sind. Daher
wächst
die Gesamtanzahl von Routing-Segmenten, einschließlich der
I-Matrix-Leitungen,
der Blockverbinder, MLA-1-Leitungen, der MLA-2-Leitungen und der
MLA-3-Leitungen in einer 8 × 8-Blockeinheit proportional
zur Zunahme der Logikzellen. Dieser Anstieg ist geometrisch, wenn
eine Entwicklung von einem Block zu 8 × 8-Blöcken vorliegt. Zusätzlich gibt es
für jeden
BC-Anschlußstreifen
bidirektional programmierbare Steuerglieder, die mit den MLA-Anschlußstreifen
verbindbar sind. Beispielsweise ist der BC-Anschlußstreifen 1233 mit
dem MLA-Anschlußstreifen 1241 über die
Steuerglieder 1242 verbindbar. Die MLA-Anschlußstreifen können entweder parallel oder
senkrecht zu den entsprechenden BC-Anschlußstreifen verlaufen. Jedes
bidirektional programmierbare Steuerglied (z. B. die Steuerglieder 1236, 1238, 1240, 1242 usw.)
kann ein von einem programmierbaren Mittel gesteuertes Durchgangsgatter;
bidirektionale Steuerglieder mit von einem programmierbaren Mittel
gesteuerten Durchgangsgattern; ein von einem programmierbaren Mittel
in einer Richtung gesteuertes Tristate und ein Durchgangsgatter
oder ein Steuerglied mit einem von einem programmierbaren Mittel
gesteuerten Durchgangsgatter; oder zwei von einem programmierbaren Mittel
gesteuerte Tristates in entgegengesetzten Richtungen sein. Die Wahl
erfolgt als Funktion der Geschwindigkeits- und Dichteanforderungen.
-
Bei
einem Ausführungsbeispiel
hat jeder Blockverbinder und jeder BC-Anschlußstreifen Erweiterungen zu
den benachbarten Blöcken.
Beispielsweise ist der Block 1201 über einen programmierbaren
Schalter 1243 mit dem Block 1202 verbindbar. Der
BC-Anschlußstreifen 1244 ist über einen
programmierbaren Schalter 1246 mit dem BC-Anschlußstreifen 1245 verbindbar.
Man beachte, daß zusätzliche
Erweiterungen für
MLA-Leitungen implementiert werden können, um den Routing-Bereich
zu erweitern, ohne daß MLA-Leitungen
einer höheren
Ebene verwendet werden müssen.
Es gibt zahlreiche Variationen zu dem in 12 dargestellten
Routing-Netzwerk. Beispielsweise kann das MLA-1-Routing-Netz werk
zur Erhöhung
der Routing-Ressourcen und damit der Routing-Möglichkeiten durch zwei Kopien
des MLA-2-Routing-Netzwerks ersetzt werden. Wenn dagegen die Aufgabe darin
besteht, die Routing-Fläche
zu minimieren, so minimiert ein Ausführungsbeispiel die Anzahl der Programmierbits,
indem das MLA-1-Routing-Netzwerk
durch eine Kopie des MLA-2-Routing-Netzwerks ersetzt wird. Diese
Variationsmöglichkeiten können auf
eine Kombination von anderen Ebenen angewendet werden. Eine weitere
Ausführungsform besteht
darin, zwischen einer oder mehreren MLA-Leitungen einen Offset vorzusehen.
Beispielsweise ist in 12 1247 über die
BC-Anschlußstreifen 1245, 1248, 1249 und 1250 zugänglich.
Die MLA-1-Leitung 1247 kann um einen Block verschoben werden,
um statt dessen über
die BC-Anschlußstreifen 1248, 1251, 1250 und 1252 zugänglich zu sein.
Alle weiteren MLA-1-Leitungen können
entsprechend verschoben werden. Dies gilt auch für die andere(n) Ebene(n).
-
13 zeigt
ein MLA-1-Umlenknetzwerk. Es sind vier Logikblöcke 1301–1304 dargestellt.
Diese vier Logikblöcke
sind mit allen MLA-1-Leitungen der Mengen 1305–1308 verbunden.
Jede der MLA-1-Leitungen ist über
ein programmierbares Mittel (z. B. Umlenkpunkte 1309) mit
allen senkrechten MLA-1-Leitungen
außer
der entsprechenden senkrechten MLA-1-Leitung verbindbar. Beispielsweise
ist die horizontale MLA-1-Leitung 1310 über den Umlenkpunkt 1312 mit
der vertikalen MLA-1-Leitung 1311 verbindbar. Die Aufgabe
der MLA-1-Leitungen besteht darin, eine Menge von Blockverbindern
miteinander zu verbinden, die innerhalb des MLA-1-Routing-Netzwerkbereichs
liegt. In dem Fall des Verbindens entsprechender Blockverbinder
in einem 4-Blockbereich, wie in 13 dargestellt,
kann (können)
die Verbindung(en) entweder über
die Blockverbindererweiterung oder über einen BC-Anschlußstreifen
zu einer der zugehörigen
MLA-1-Leitung hergestellt werden, ohne daß darauf zurückgegriffen
werden muß,
zwei senkrechte MLA-2-Leitungen über
Umlenkpunkte zu verwenden. Bei einer Ausführungsform wird die Anzahl
der Umlenkpunkte reduziert. Dies beschränkt die Umlenkflexibilität, aber reduziert
außerdem
sowohl die Belastung auf den MLA-1-Leitungen als auch die zum Layout
des Designs benötigte
Fläche.
Allerdings können
die Routing-Flexibilität
und die Routing-Möglichkeit
beeinträchtigt
werden.
-
14 zeigt
ein MLA-2-Umlenknetzwerk. Wie zu erkennen ist, ist jede MLA-2-Leitung über ein programmierbares
Mittel mit allen MLA-2-Leitungen verbindbar, die senkrecht zu der
MLA-2-Leitung verlaufen. Beispielsweise ist die vertikale MLA-Leitung 1401 mit
der horizontalen MLA-2-Leitung 1402 über die Umlenkpunkte 1403 verbindbar.
Bei anderen Ausführungsformen
kann die Umlenkflexibilität
stärker
beschränkt
werden, indem die Anzahl der Umlenkpunkte reduziert wird. Dies reduziert
sowohl die Belastung auf der MLA-2-Leitung als auch die zum Layout
des Designs benötigte
Fläche.
Allerdings kann die Routing-Flexibilität und die Routing-Möglichkeit
beeinträchtigt
werden.
-
15 zeigt
ein MLA-3-Umlenknetzwerk. Jede MLA-3-Leitung ist über ein
programmierbares Mittel mit allen senkrechten MLA-3-Leitungen verbindbar.
Beispielsweise ist die vertikale MLA-3-Leitung 1501 mit
der horizontalen MLA-3-Leitung 1502 über den Umlenkpunkt 1503 verbindbar.
Die Umlenkflexibilität
kann dadurch weiter beschränkt
werden, daß die
Anzahl der Umlenkpunkte reduziert wird. Dies reduziert sowohl die
Belastung auf der MLA-3-Leitung als auch die zum Layout des Designs benötigte Fläche. Jedoch
können
die Routing-Flexibilität
und die Routing-Möglichkeiten
beeinträchtigt werden.
-
16 zeigt
ein Ausführungsbeispiel
eines Routing-Netzwerkes für
die MLA-4-Schicht und den Mechanismus, mit dem auf die MLA-4-Leitungen
zugegriffen werden. 16 zeigt vier 8 × 8-Blöcke, 1621–1624 (insgesamt
16 × 16-Blöcke). Den
vier 8 × 8-Blöcken 1621–1624 sind
vier horizontale und vier vertikale Gruppen von MLA-Anschlußstreifen
zugeordnet. In dem derzeit bevorzugten Ausführungsbeispiel sind die MLA-4-Leitungen
und die MLA-Anschlußstreifen
8-Bit breit. Da jeder Block acht zugehörige Blockverbinder aufweist,
ist jeder MLA-Anschlußstreifen
acht Leitungen breit dargestellt, wobei jede der Leitungen einem
der acht Blockverbinder entspricht, wie zuvor in 12 gezeigt.
In dem derzeit bevorzugten Ausführungsbeispiel
gibt es vier vertikale und vier horizontale MLA-4-Lei tungen, von denen
jede acht Leitungen breit ist. Auf diese Weise beträgt die Anzahl
der MLA-4-Leitungen ein Viertel der Anzahl der MLA-3-Leitungen.
Jede MLA-4-Leitung ist über
ein programmierbares Mittel mit dem entsprechenden Blockverbinder,
den MLA-1-, MLA-2- und MLA-3-Leitungen verbindbar. Die gewünschte Verbindungsmöglichkeit
wird über
den entsprechenden MLA-Anschlußstreifen
und den BC-Anschlußstreifen
hergestellt. Das MLA-4-Routing-Netzwerk bildet zusammen mit den
I-Matrix-Leitungen, Blockverbindern,
dem MLA-1-Routing-Netzwerk, dem MLA-2-Routing-Netzwerk und dem MLA-3-Routing-Netzwerk
die Routing-Ressourcen in einem 16 × 16-Block-Bereich zum Zugreifen
und zum Verbinden der Zellen mit einer komplexeren Logikfunktionsbildung.
Bei einem Ausführungsbeispiel
wird das MLA-4-Routing-Netzwerk
zusätzlich
zu den beiden I-Matrix-Leitungen, den Blockverbindern, den MLA-1-Leitungen,
den MLA-2-Leitungen und den MLA-3-Leitungen zu bidirektional programmierbaren Zugriffsleitungen,
die als Zugriffsports für
die Implementierung noch komplexerer Logikfunktionen dienen können, und
zwar über
die Verbindungen von anderen MLA-Leitungen von Blockverbindern von
außerhalb
des 16 × 16-Block-Bereichs über ein
programmierbares Mittel. Diese anderen MLA-Leitungen oder Blockverbinder
müssen
nicht unbedingt benachbart oder kongruent zu dem 16 × 16-Block-Bereich
sein. Die Gesamtanzahl der Routing-Segmente, einschließlich der I-Matrix-Leitungen,
der Blockverbinder, der MLA-1-Leitungen, der MLA-2-Leitungen, der
MLA-3-Leitungen
und der MLA-4-Leitungen in einer 16 × 16-Blockeinheit wächst proportional
zur Zunahme der Logikzellen. Diese Größenzunahme ist geometrisch,
wenn die Entwicklung von einem Block zu 16 × 16-Blöcken erfolgt. Von jedem MLA-Anschlußstreifen
gibt es eine entsprechende MLA-4-Leitung, die über einen Schalter mit dem MLA-Anschlußstreifen
verbindbar ist. Beispielsweise ist der MLA-Anschlußstreifen 1601 mit
der MLA-4-Leitung 1602 über den
Schalter 1603 verbindbar. In ähnlicher Weise ist der MLA-Anschlußstreifen 1601 über den
Schalter 1605 mit der MLA-4-Leitung 1604 verbindbar;
mit der MLA-4-Leitung 1606 über den Schalter 1607;
und mit der MLA-4-Leitung 1608 über den Schalter 1609.
In ähnlicher
Weise ist der MLA- Anschlußstreifen 1610 über die
Schalter 1615–1618 mit
den MLA-4-Leitungen 1611–1614 verbindbar.
Jeder MLA-Anschlußstreifen
in einer der vier Ecken ist über
ein programmierbares Mittel mit allen zugehörigen MLA-Anschlußstreifen
in allen vier Ecken über
die vertikalen oder horizontalen MLA-4-Leitungen verbindbar.
-
17 zeigt
drei verschiedene Schalterausführungsformen 1701–1703.
Der Schalter ist ganz allgemein ein bidirektional programmierbares
Steuergliedernetzwerk, welches ein einfaches bidirektionales Durchgangsgatter
sein kann oder eine beliebige der bidirektionalen Treiberkonfigurationen 1701–1703.
-
18 zeigt
ein Ausführungsbeispiel
eines Routing-Netzwerkes für
die MLA-5-Schicht und den Mechanismus, mit dem auf MLA-5-Leitungen
zugegriffen wird. 16 8 × 8-Blöcke sind
dargestellt. Jedem der 8 × 8-Blöcke sind
vier horizontale und vier vertikale MLA-Anschlußstreifen zugeordnet, die gleich den
in 16 gezeigten MLA-Anschlußstreifen sind. Wenn die 16 × 16-Blöcke (wie
in 16 gezeigt) als Einheit gruppiert werden, wird
die nächsthöhere Ebene,
die aus 32 × 32-Blöcken besteht,
gebildet. Jeder der vier 16 × 16
Eckeneinheiten sind vier horizontale und vier vertikale MLA-5-Leitungen
zugeordnet, von denen jede 8 Bit breit ist. Diese Leitungen werden von
den benachbarten Eckeneinheiten gemeinsam genutzt, wie in 18 gezeigt
ist. Auf diese Weise beträgt
die Anzahl der MLA-5-Leitungen die Hälfte der Anzahl der MLA-4-Leitungen.
Jede MLA-5-Leitung ist über
ein programmierbares Mittel mit dem entsprechenden Blockverbinder,
den MLA-1-, MLA-2-, MLA-3- und
MLA-4-Leitungen über
den entsprechenden MLA-Anschlußstreifen
und den BC-Anschlußstreifen
verbindbar. Das MLA-5-Routing-Netzwerk
bildet zusammen mit den I-Matrixleitungen, den Blockverbindern,
dem MLA-1-Routing-Netzwerk, dem MLA-2-Routing-Netzwerk, dem MLA-3-Routing-Netzwerk
und dem MLA-4-Routing-Netzwerk
die Routing-Ressourcen in einem 32 × 32-Block-Bereich zum Zugreifen
und zum Verbinden der Zellen mit komplexerer Logikfunktionsbildung.
Ferner kann das MLA-5-Routing-Netzwerk zusätzlich zu den I-Matrix-Leitungen,
den Blockverbindern, den MLA-1-Leitungen, den MLA-2-Leitungen, den
MLA-3-Leitungen und den MLA-4-Leitungen als zusätzliche bidirektional programmierbare
Zugriffsleitungen verwendet werden, die als Zugriffsports für die Implementierung von
noch komplexeren Funktionen über
Verbindungen von anderen MLA-Leitungen oder von Blockverbindern
von außerhalb
des 32 × 32-Block-Bereichs (die
nicht notwendigerweise an den 32 × 32-Block-Bereich angrenzen
müssen
oder kongruent zu diesem sein müssen) über ein
programmierbares Mittel dienen. Die Gesamtanzahl der Routing-Segmente,
einschließlich
der I-Matrix-Leitungen, der Blockverbinder, der MLA-1-Leitungen,
der MLA-2-Leitungen, der MLA-3-Leitungen, der MLA-4-Leitungen und
der MLA-5-Leitungen in einer 32 × 32-Block-Einheit wächst proportional zur Zunahme
der Logikzellen. Diese Zunahme ist geometrisch, wenn eine Entwicklung
von einem Block zu 32 × 32-Blöcken vorliegt.
-
Von
jedem MLA-Anschlußstreifen
gibt es eine zugehörige
MLA-5-Leitung, die mit dem MLA-Anschlußstreifen über einen Schalter verbindbar
ist. Der Schalter ist ein bidirektional programmierbares Steuergliedernetzwerk,
welches ein einfaches bidirektionales Durchgangsgatter oder eine
beliebige der in 17 gezeigten Steuergliederkonfigurationen
sein kann. Zusätzlich
sind über
ein programmierbares Mittel dort Umlenkpunkte integriert, wo die
vertikalen MLA-Leitungen die horizontalen MLA-5-Leitungen schneiden.
Jeder MLA-Anschlußstreifen
in einer der vier Ecken ist über
programmierbare Mittel mit allen entsprechenden MLA-Anschlußstreifen
in allen vier Ecken verbindbar. Dies wird mit Hilfe einer Kombination
der programmierbaren Verbindungen zu den vertikalen und horizontalen
MLA-5-Leitungen plus
die Verwendung der Umlenkpunkte implementiert.
-
Höhere Ebenen
von MLA-Netzwerken können
durch einen programmierbaren Zugriff über die MLA-Anschlußstreifen
oder durch Einbringen weiterer neuer dazwischenliegender MLA-Anschlußstreifen
entwickelt werden. In solchen Fällen
ist die Anzahl der MLA-Leitungen ein Bruchteil der MLAs der nächstniedrigeren
Ebene. Die Gesamtanzahl der Routing-Segmente, einschließlich der
I-Matrix-Leitungen, der Blockverbinder, der MLA-1-Leitungen, der
MLA-2-Leitungen, der MLA-3-Leitungen, der MLA-4-Lei tungen, der MLA-5-Leitungen
und höherer Ebenen
von MLA-Leitungen, und die entsprechende Anzahl der n × n-Block-Einheit
wächst
proportional zur Zunahme der Logikzellen. Diese Zunahme ist geometrisch,
wenn eine Entwicklung von einem Block zu den n × n-Blöcken vorliegt.
-
Somit
wurde für
programmierbare Logikschaltungen eine Architektur mit einem Schema
zur Innenverbindung und Verbindung miteinander beschrieben.