DE69534659T2 - Architektur und Verbindungsmodel für programmierbare logische Schaltungen - Google Patents

Architektur und Verbindungsmodel für programmierbare logische Schaltungen Download PDF

Info

Publication number
DE69534659T2
DE69534659T2 DE69534659T DE69534659T DE69534659T2 DE 69534659 T2 DE69534659 T2 DE 69534659T2 DE 69534659 T DE69534659 T DE 69534659T DE 69534659 T DE69534659 T DE 69534659T DE 69534659 T2 DE69534659 T2 DE 69534659T2
Authority
DE
Germany
Prior art keywords
routing
lines
mla
routing lines
block
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.)
Expired - Lifetime
Application number
DE69534659T
Other languages
English (en)
Other versions
DE69534659D1 (de
Inventor
Benjamin S. Saratoga Ting
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.)
Microsemi SoC Corp
Original Assignee
BTR Inc
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 BTR Inc filed Critical BTR Inc
Publication of DE69534659D1 publication Critical patent/DE69534659D1/de
Application granted granted Critical
Publication of DE69534659T2 publication Critical patent/DE69534659T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

  • 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 206211. Das Aktivieren der Schalter 206, 208 und 210 veranlaßt, daß die Signale A, B und D von das Steuerglied 212214 in nicht-invertierter Weise zu den Gattern 201204 gesteuert werden. Das Aktivieren der Schalter 207, 209 und 211 führt dazu, daß die Eingangssignale A, B und D von den Invertern 215217 invertiert werden, bevor sie an die Gatter 201204 weitergeleitet werden. Die sechs Schalter 212217 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 219221 sind mit den Ausgängen der drei Gatter 201203 gekoppelt. Wiederum sind diese Schalter von dem Benutzer programmierbar. Dadurch kann der Benutzer spezifizieren, welches der Ausgangssignale von den Gattern 201203 als Ausgangssignal X von der Zelle 200 an das Steuerglied 224 gesendet werden soll.
  • Die oben erwähnten Schalter 206211, 218221 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 301304 und einem D-Flipflop 305, 25 Schaltern 306330 und fünf Innenverbindungsleitungen 331335. Die Innenverbindungsleitungen 331335 und die Schalter 306330 bilden die I-Matrix. Die I-Matrix schafft die Möglichkeit zur Verbindung des Ausgangssignals X von jeder der vier Zellen 301304 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 301304 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 331335 der Zellen 301304 und des D-Flipflops 305 eines logischen Clusters 107 auf eine benachbartes logischer Cluster 107 über die Durchgangsgatterschalter 336355 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 501516 sind mit dicken Linien dargestellt, wogegen die 16 Ebene-1-MLA-Routing-Netzwerkleitungen 517532 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 501508, horizontale Blockverbinder 509516, vertikale Ebene-1-MLA-Routing-Netzwerkleitungen 517524 und horizontale Ebene-1-MLA-Routing-Netzwerkleitungen 525532.
  • 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 533540 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 575582. Diese acht Steuerglieder 575582 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 533540 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 701704. 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 801804 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 801804 in dem gleichen Sektorcluster 800 gehören. Es gibt 96 den Ebene-3-MLA-Leitungen zugeordnete Ebene-3-MLA-Umlenkpunkte für jeden Blocksektor 801804 (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 801804 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 (331335, 3A) erweitert werden, um eine Verbindungsmöglichkeit zwischen zwei benachbarten I-Matrixleitungen zu schaffen, die zu verschiedenen Clustern gehören. Die Durchgangsgatterschalter 336340, 341345, 346350 und 351355 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 901908 sind dargestellt. Jedem der Logikblöcke 901908 sind mehrere Blockverbinder zugeordnet. Bei dem derzeit bevorzugten Ausführungsbeispiel gibt es acht horizontale und acht vertikale Blockverbinder, die jedem der Logikblöcke 901908 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 909916 den Logikblöcken 901908), und es sind nur die horizontalen Blockverbinder dargestellt.
  • Die Blockverbinder 909916 wiederum sind mit programmierbaren bidirektionalen Steuergliedern 917924 gekoppelt. Folglich können die Blockverbinder 909916 so programmiert werden, daß sie bidirektional mit den MLA-1-Leitungen 925928 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 929932 werden verwendet, um Verbindungen zwischen den MLA-1- Leitungen 925928 und der nächsten MLA-Ebene, den MLA-2-Leitungen 933934 zu schaffen. Programmierbare bidirektionale Steuerglieder 935936 schaffen selektiv Verbindungen zwischen den MLA-2-Leitungen 933934 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 10011008 dargestellt. Jedem der Logikblöcke ist eine Mehrzahl von Blockverbindern 10091016 zugeordnet. Programmierbare bidirektionale Steuerglieder 10171024 werden verwendet, um die Blockverbinder 10091016 selektiv mit Blockverbinder-Anschlußstreifen 10251032 zu koppeln. Die Blockverbinder-Anschlußstreifen 10251032 werden als Verbindungspunkte verwendet, von denen Verbindungen zu mehreren MLA-Schichten hergestellt werden können. Programmierbare bidirektionale Mengen von Steuergliedern (10331035), (10361038), (10391041), (10421044), (10451047), (10481050), (10511053), (10541056) gehören zu den entsprechenden Blockverbinder-Anschlußstreifen 10251032. 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 10051007 können über die Steuerglieder 10591060 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 11011104 und eine zweite Gruppe von Logikblöcken 11051108 sind dargestellt. Die erste Gruppe von Logikblöcken 11011104 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 11131116 verbunden werden. In ähnlicher Weise kann die zweite Gruppe von Logikblöcken 11051108 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 11171120 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 12011232 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 12011232 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 12171232 (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 13011304 dargestellt. Diese vier Logikblöcke sind mit allen MLA-1-Leitungen der Mengen 13051308 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, 16211624 (insgesamt 16 × 16-Blöcke). Den vier 8 × 8-Blöcken 16211624 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 16151618 mit den MLA-4-Leitungen 16111614 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 17011703. Der Schalter ist ganz allgemein ein bidirektional programmierbares Steuergliedernetzwerk, welches ein einfaches bidirektionales Durchgangsgatter sein kann oder eine beliebige der bidirektionalen Treiberkonfigurationen 17011703.
  • 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.

Claims (18)

  1. Eine programmierbare Logikschaltung mit: einer Mehrzahl von Logikblöcken, wobei jeder Logikblock eine Mehrzahl von konfigurierbaren Zellen enthält, 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 gekoppelt ist; eine zweite Menge von Routing-Leitungen, wobei der zweiten Menge von Routing-Leitungen andere Spannen zugeordnet sind als der ersten Menge von Routing-Leitungen; 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 ersten Logikblocks und mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen eines zweiten Logikblocks gekoppelt ist, wobei der zweite Logikblock zum ersten Logikblock benachbart angeordnet ist, wobei die erste Routing-Leitung wenigstens die Länge des ersten und des zweiten Logikblocks überspannt und wobei die zweite Routing-Leitung über die zweite Menge von Schaltern 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 selektiv gekoppelt ist, wobei der dritte Logikblock benachbart zum zweiten Logikblock angeordnet ist und die zweite Routing-Leitung wenigstens die Länge des zweiten und dritten Logikblocks überspannt.
  2. Die programmierbare Logikschaltung nach Anspruch 1, wobei die erste und die zweite Menge von Schaltern Komponenten enthalten, die ausgewählt sind aus der Schalter, programmierbare Durchgangsgatter und programmgesteuerte Treiber/Empfänger enthaltenden Gruppe.
  3. Die programmierbare Logikschaltung nach Anspruch 1, wobei der zweiten Menge von Routing-Leitungen größre Spannen zugeordnet sind als der ersten Menge von Routing-Leitungen.
  4. Die programmierbare Logikschaltung nach Anspruch 1, ferner mit einer dritten Menge von Routing-Leitungen, denen andere Spannen als der ersten Menge von Routing-Leitungen zugeordnet sind und die die erste Menge von Routing-Leitungen selektiv koppeln, wobei eine dritte Routing-Leitung aus der dritten Menge von Routing-Leitungen über eine dritte Menge von Schaltern selektiv mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des ersten Logikblocks und mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des zweiten Logikblocks koppelt.
  5. Die programmierbare Logikschaltung nach Anspruch 4, wobei der dritten Menge von Routing-Leitungen größere Spannen als der ersten Menge von Routing-Leitungen zugeordnet sind.
  6. Die programmierbare Logikschaltung nach Anspruch 4, wobei eine vierte Routing-Leitung aus der dritten Menge von Routing-Leitungen, die gegenüber der dritten Routing-Leitung einen Offset von wenigstens einem Logikblock aufweist, über die dritte Menge von Schaltern selektiv mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des zweiten Logikblocks und mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des dritten Logikblocks koppelt.
  7. Die programmierbare Logikschaltung nach Anspruch 4, wobei der dritten Menge von Routing-Leitungen größere Spannen als der zweiten Menge von Routing-Leitungen zugeordnet sind.
  8. Die programmierbare Logikschaltung nach Anspruch 1, ferner mit wenigstens einer vierten Menge von Routing-Leitungen, denen andere Spannen als der zweiten Menge von Routing-Leitungen zugeordnet sind, wobei die zweite Menge von Routing-Leitungen über eine vierte Menge von Schaltern selektiv mit der wenigstens einen vierten Menge von Routing-Leitungen gekoppelt ist.
  9. Die programmierbare Logikschaltung nach Anspruch 1, wobei die erste Menge von Routing-Leitungen über die zweite Menge von Schaltern selektiv mit wenigstens zwei Routing-Leitungen der zweiten Menge von Routing-Leitungen gekoppelt ist.
  10. Die programmierbare Logikschaltung nach Anspruch 1, wobei ein erster Teil von Routing-Leitungen der ersten Menge von Routing-Leitungen orthogonal zu einem zweiten Teil von Routing-Leitungen der ersten Menge von Routing-Leitungen liegt.
  11. Die programmierbare Logikschaltung nach Anspruch 1, wobei ein erster Teil von Routing-Leitungen der zweiten Menge von Routing-Leitungen in einer ersten Dimension selektiv mit einem zweiten Teil von Routing-Leitungen der zweiten Menge von Routing-Leitungen in einer zweiten Dimension über eine fünfte Menge von Schaltern gekoppelt ist.
  12. Die programmierbare Logikschaltung nach Anspruch 4, wobei ein erster Teil von Routing-Leitungen der dritten Menge von Routing-Leitungen in einer ersten Dimension über eine sechste Menge von Schaltern selektiv mit einem zweiten Teil von Routing-Leitungen der dritten Menge von Routing-Leitungen in einer zweiten Dimension gekoppelt ist.
  13. Ein Verfahren zur Programmierung einer programmierbaren Logikschaltung, 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 mit den Eingang-Ports und Ausgang-Ports der konfigurierbaren Zellen des Logikblocks selektiv 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 werden; eine erste Routing-Leitung der zweiten Menge von Routing-Leitungen 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 selektiv gekoppelt wird, wobei der zweite Logikblock benachbart zum ersten Logikblock angeordnet ist, wobei die erste Routing-Leitung wenigstens die Länge 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 selektiv 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.
  14. Das Verfahren nach Anspruch 13, wobei ferner eine dritte Routing-Leitung aus der dritten Menge von Routing-Leitungen wenigstens eine Routing-Leitung einer ersten Menge von Routing-Leitungen des ersten Logikblocks und wenigstens eine Routing-Leitung einer ersten Menge von Routing-Leitungen des zweiten Logikblocks selektiv koppelt.
  15. Das Verfahren nach Anspruch 13, wobei ferner eine vierte Routing-Leitung der dritten Menge von Routing-Leitun gen, die gegenüber der dritten Routing-Leitung einen Offset von wenigstens einem Logikblock aufweist, selektiv mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des zweiten Logikblocks und mit wenigstens einer Routing-Leitung einer ersten Menge von Routing-Leitungen des dritten Logikblocks gekoppelt wird.
  16. Das Verfahren nach Anspruch 13, wobei ferner die zweite Menge von Routing-Leitungen selektiv mit der wenigstens einen vierten Menge von Routing-Leitungen gekoppelt wird, denen andere Spannen als der zweiten Menge von Routing-Leitungen zugeordnet sind.
  17. Das Verfahren nach Anspruch 13, wobei ferner die erste Menge von Routing-Leitungen selektiv mit wenigstens zwei Routing-Leitungen der zweiten Menge von Routing-Leitungen gekoppelt wird.
  18. Das Verfahren nach Anspruch 13, wobei ferner ein erster Teil von Routing-Leitungen der zweiten Menge von Routing-Leitungen in einer ersten Dimension mit einem zweiten Teil von Routing-Leitungen der zweiten Menge von Routing-Leitungen in einer zweiten Dimension selektiv gekoppelt wird.
DE69534659T 1994-04-14 1995-04-14 Architektur und Verbindungsmodel für programmierbare logische Schaltungen Expired - Lifetime DE69534659T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22992394A 1994-04-14 1994-04-14
US229923 1994-04-14

Publications (2)

Publication Number Publication Date
DE69534659D1 DE69534659D1 (de) 2006-01-05
DE69534659T2 true DE69534659T2 (de) 2006-09-07

Family

ID=22863228

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69534659T Expired - Lifetime DE69534659T2 (de) 1994-04-14 1995-04-14 Architektur und Verbindungsmodel für programmierbare logische Schaltungen
DE69525741T Expired - Lifetime DE69525741D1 (de) 1994-04-14 1995-04-14 Architektur und verbindungsschema für programmierbare logische schaltungen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69525741T Expired - Lifetime DE69525741D1 (de) 1994-04-14 1995-04-14 Architektur und verbindungsschema für programmierbare logische schaltungen

Country Status (7)

Country Link
EP (4) EP1594228A3 (de)
JP (1) JP3581152B2 (de)
CN (1) CN1101082C (de)
AT (1) ATE214210T1 (de)
AU (1) AU2291495A (de)
DE (2) DE69534659T2 (de)
WO (1) WO1995028769A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5457410A (en) 1993-08-03 1995-10-10 Btr, Inc. Architecture and interconnect scheme for programmable logic circuits
GB2305759A (en) * 1995-09-30 1997-04-16 Pilkington Micro Electronics Semi-conductor integrated circuit
EP0913032A4 (de) * 1996-03-29 2001-03-14 Dyna Logic Corp Programmbierbare hochgeschwindigkeits-architektur
US6034547A (en) * 1996-09-04 2000-03-07 Advantage Logic, Inc. Method and apparatus for universal program controlled bus
US6624658B2 (en) 1999-02-04 2003-09-23 Advantage Logic, Inc. Method and apparatus for universal program controlled bus architecture
US5977793A (en) * 1996-10-10 1999-11-02 Altera Corporation Programmable logic device with hierarchical interconnection resources
US5999016A (en) * 1996-10-10 1999-12-07 Altera Corporation Architectures for programmable logic devices
US6300794B1 (en) 1996-10-10 2001-10-09 Altera Corporation Programmable logic device with hierarchical interconnection resources
US6107825A (en) 1997-10-16 2000-08-22 Altera Corporation Input/output circuitry for programmable logic devices
US7389487B1 (en) 1998-04-28 2008-06-17 Actel Corporation Dedicated interface architecture for a hybrid integrated circuit
US7084476B2 (en) * 2004-02-26 2006-08-01 International Business Machines Corp. Integrated circuit logic with self compensating block delays
US6975139B2 (en) 2004-03-30 2005-12-13 Advantage Logic, Inc. Scalable non-blocking switching network for programmable logic
US7460529B2 (en) 2004-07-29 2008-12-02 Advantage Logic, Inc. Interconnection fabric using switching networks in hierarchy
US7423453B1 (en) 2006-01-20 2008-09-09 Advantage Logic, Inc. Efficient integrated circuit layout scheme to implement a scalable switching network used in interconnection fabric
US7456653B2 (en) * 2007-03-09 2008-11-25 Altera Corporation Programmable logic device having logic array block interconnect lines that can interconnect logic elements in different logic blocks
US7999570B2 (en) 2009-06-24 2011-08-16 Advantage Logic, Inc. Enhanced permutable switching network with multicasting signals for interconnection fabric
CN102288903B (zh) * 2011-07-26 2014-12-10 北京航空航天大学 一种fpga内连线资源的测试结构及方法
CN108427829B (zh) * 2018-02-09 2022-11-08 京微齐力(北京)科技有限公司 一种具有公共线结构的fpga

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5317209A (en) * 1991-08-29 1994-05-31 National Semiconductor Corporation Dynamic three-state bussing capability in a configurable logic array
GB9223226D0 (en) * 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
GB9312674D0 (en) * 1993-06-18 1993-08-04 Pilkington Micro Electronics Configurabel logic array
US5457410A (en) * 1993-08-03 1995-10-10 Btr, Inc. Architecture and interconnect scheme for programmable logic circuits

Also Published As

Publication number Publication date
AU2291495A (en) 1995-11-10
EP1162746B1 (de) 2005-11-30
EP0755588A1 (de) 1997-01-29
EP1594228A3 (de) 2005-11-16
EP1594228A2 (de) 2005-11-09
EP1162746A3 (de) 2003-05-14
DE69534659D1 (de) 2006-01-05
EP1162746A2 (de) 2001-12-12
ATE214210T1 (de) 2002-03-15
CN1101082C (zh) 2003-02-05
EP1162745A2 (de) 2001-12-12
JP3581152B2 (ja) 2004-10-27
CN1152375A (zh) 1997-06-18
EP0755588B1 (de) 2002-03-06
JPH10501934A (ja) 1998-02-17
DE69525741D1 (de) 2002-04-11
EP1162745A3 (de) 2003-05-14
WO1995028769A1 (en) 1995-10-26

Similar Documents

Publication Publication Date Title
DE69431732T2 (de) Architektur und Verbindungsschema für programmierbare logische Schaltungen
DE69534659T2 (de) Architektur und Verbindungsmodel für programmierbare logische Schaltungen
DE69721342T2 (de) FPGA mit erhöhter Zellnutzung
DE69525210T2 (de) Programmierbare logikvorrichtung mit regionaler und universeller signalweglenkung
DE69426546T2 (de) Konfigurierbares logisches Feld
DE69904241T2 (de) Konfigurierbarer logischer block in einem nutzerprogrammierbaren gatterfeld mit einer vielzwecklogig/speicherschaltung
DE69716623T2 (de) Fpga-architektur mit ram-blöcken mit programmierbarer wortlänge und -breite und zugeordneten adress- und datenleitungen
DE69635431T2 (de) Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur
DE68925897T2 (de) Gate-Array-Zelle, bestehend aus FET's von verschiedener und optimierter Grösse
DE69031525T2 (de) Konfigurierbare Logikanordnung und zugehöriges Verfahren
DE60204189T2 (de) FPGA mit zumindest zwei unterschiedlichen und unabhängig konfigurierbaren Speicherstrukturen
DE102004063926B4 (de) Konfigurierbare Treiberzelle eines logischen Zellenfeldes
DE69716771T2 (de) Benutzerprogrammierbares gatterfeld mit sich wiederholender verbindungsstruktur
DE69028395T2 (de) Konfigurierbare zellenanordnung
DE3630835C2 (de) Integrierte Halbleiterkreisanordnungen und Systeme
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE60128960T2 (de) Architektur für ziegelförmig aufbaubares nutzerprogrammierbares gatterfeld
DE69125201T2 (de) Konfigurierbares logisches Feld
DE69528393T2 (de) Programmierbarer Logikbaustein für ein anwenderprogrammierbares Gate-Array
DE2822219C2 (de) Auf einem Chip integrierte Logikschaltungen
DE69231933T2 (de) Programmierbare logische zelle und programmierbares logisches feld
DE69812898T2 (de) Nutzerprogrammierbare prozessorfelder
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
EP0202456B1 (de) In integrierter Technik hergestellter Logik-Array-Baustein
DE69232136T2 (de) Basiszellen-architektur für maskenprogrammierbare gattermatrix

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: ACTEL CORP., MOUNTAIN VIEW, CALIF., US