DE102020111905A1 - Grobkörniges programmierbares routing-netz für logikvorrichtungen - Google Patents

Grobkörniges programmierbares routing-netz für logikvorrichtungen Download PDF

Info

Publication number
DE102020111905A1
DE102020111905A1 DE102020111905.4A DE102020111905A DE102020111905A1 DE 102020111905 A1 DE102020111905 A1 DE 102020111905A1 DE 102020111905 A DE102020111905 A DE 102020111905A DE 102020111905 A1 DE102020111905 A1 DE 102020111905A1
Authority
DE
Germany
Prior art keywords
routing
coarse
grained
circuit arrangement
network
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.)
Pending
Application number
DE102020111905.4A
Other languages
English (en)
Inventor
Gary Wallichs
Sean Atsatt
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020111905A1 publication Critical patent/DE102020111905A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0008Arrangements for reducing power consumption
    • 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/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/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

Es wird eine Schaltungsanordnung bereitgestellt, die ein programmierbares Fabric mit feinkörnigen Routing-Leitungen und ein separates programmierbares grobkörnige Routing-Netz, das erweiterte Bandbreite, geringe Latenz und deterministisches Routing-Verhalten bereitstellt, enthält. Das programmierbare grobkörnige Routing-Netz kann auf einem aktiven Interposer-Baustein implementiert sein. Das programmierbare Fabric kann auf einem oberen Baustein, der auf dem aktiven Interposer-Baustein gestapelt ist, implementiert sein. Ein protokollbasiertes On-Chip-Netz (NoC) kann dem grobkörnigen Routing-Netz überlagert sein. Obwohl das NoC-Protokoll nichtdeterministisch ist, enthält das grobkörnige Routing-Netz ein Array aus programmierbaren „Switchboxes“, die unter Verwendung einer vorbestimmten Anzahl von Routing-Kanälen miteinander verknüpft sind, um deterministisches Routing bereitzustellen. Pipeline-Register können innerhalb der Routing-Kanäle an festen Orten dazwischengeschoben sein, um zeitlichen Abschluss zu garantieren.

Description

  • Hintergrund
  • Dies bezieht sich allgemein auf integrierte Schaltungen und insbesondere auf programmierbare integrierte Schaltungen.
  • Programmierbare integrierte Schaltungen sind ein Typ integrierter Schaltungen, die durch einen Anwender programmiert werden können, um eine gewünschte angepasste Logikfunktion zu implementieren. In einem typischen Szenario verwendet ein Logik-Designer computergestützte Design-Werkzeuge, um eine angepasste Logikschaltung zu konstruieren. Wenn der Design-Prozess abgeschlossen ist, erzeugen die computergestützten Design-Werkzeuge Konfigurationsdaten. Die Konfigurationsdaten werden dann in Speicherelemente auf einer Vorrichtung einer programmierbaren integrierten Schaltung geladen, um diese Vorrichtung zu konfigurieren, die Funktionen der angepassten Logikschaltung auszuführen. Solche Typen programmierbarer integrierter Schaltungen werden manchmal als im Feld programmierbares Gatter-Array (FPGA) bezeichnet.
  • FGPAs enthalten typischerweise Eingabe-Ausgabe-(I/O-) Komponenten zum Kommunizieren mit externen Vorrichtungen unter Verwendung von I/O-Standards wie z. B. des PCIe- („Peripheral Component Interconnect Express“) Protokolls, des Ethernet-Protokolls nach IEEE 802.3 und von Schnittstellenprotokollen für externen Speicher mit doppelter Datenrate (DDR). Solche Protokolle für externe Schnittstellen verdoppeln hinsichtlich der Bandbreite alle zwei bis drei Jahre. Andererseits wächst die Leistungsverbesserung eines herkömmlichen FPGA-Routing-Fabric nicht mit ähnlicher Geschwindigkeit an und ist auf etwa 10-15 % pro Generation beschränkt und wird somit zum Leistungsengpass für FPGAs.
  • Es liegt in diesem Kontext, dass sich die hier beschriebenen Ausführungsformen anbieten.
  • Figurenliste
    • 1 ist ein Diagramm einer erläuternden programmierbaren Schaltungsanordnung in Übereinstimmung mit einer Ausführungsform.
    • 2 ist ein Diagramm, das zeigt, wie eine programmierbare integrierte Schaltungsanordnung feinkörnige Routing-Leitungen und ein separates programmierbares deterministisches grobkörniges Routing-Netz in Übereinstimmung mit einer Ausführungsform enthält.
    • 3 ist eine Querschnittsseitenansicht einer erläuternden 3-dimensionalen (3D) gestapelten Multichip-Baugruppe in Übereinstimmung mit einer Ausführungsform.
    • 4 ist ein Diagramm eines erläuternden programmierbaren grobkörnigen Routing-Netzes, das ein Array aus programmierbaren „Switchbox“-Schaltungen in Übereinstimmung mit einer Ausführungsform enthält.
    • 5 ist ein Diagramm, das zeigt, wie ein programmierbares grobkörniges Routing-Netz mit mehreren 8-Bit-Kanälen in Übereinstimmung mit einer Ausführungsform ausgestattet sein kann.
    • 6 ist ein Schaltplan einer erläuternden programmierbaren „Switchbox“-Schaltung in Übereinstimmung mit einer Ausführungsform.
    • 7 ist ein Diagramm, das darstellt, wie eine programmierbare „Switchbox“-Schaltung ferner konfiguriert sein kann, um ein On-Chip-Netz (NoC) in Übereinstimmung mit einer Ausführungsform zu implementieren.
    • 8 ist ein Diagramm, das verschiedene Betriebsarten zeigt, in denen ein programmierbares grobkörniges Routing-Netz in Übereinstimmung mit einer Ausführungsform betrieben werden kann.
    • 9A, 9B und 9C sind Diagramme, die Werte zeigen, die durch die Zeitdomänenmultiplexier-Zähler (TDM-Zähler) ausgegeben werden können, wenn die verschiedenen in 8 gezeigten Betriebsarten unterstützt werden, in Übereinstimmung mit einigen Ausführungsformen.
    • 10 ist ein Diagramm, das zeigt, wie ein programmierbares grobkörniges Routing-Netz verwendet werden kann, um ein kreditbasiertes Protokoll in Übereinstimmung mit einer Ausführungsform zu implementieren.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen beziehen sich auf programmierbare integrierte Schaltungen und insbesondere auf programmierbare integrierte Schaltungen, die ein programmierbares grobkörniges Routing-Netz aufweisen, das deterministische vorverdrahtete Routing-Zusammenschaltungen bereitstellt, die einen Abschluss mit garantierter Zeit und Register-Pipelines an festen Orten anbieten, um eine maximale Zielbetriebsfrequenz in einem weiteren Bereich von Berechnungsanwendungen zu erfüllen.
  • Die Verwendung eines separaten dedizierten programmierbaren grobkörnigen Routing-Netzes zusätzlich zu existierenden feinkörnigen Routing-Leitungen auf einer programmierbaren integrierten Schaltung (IC) stellt dadurch eine greifbare Verbesserung für die Computer-Technologie bereit, dass sie effizientere Datenbewegung mit hoher Bandbreite und gesteigerter Parallelität zwischen dem programmierbaren Fabric auf der IC und externen Komponenten ermöglicht, was späte Bindungsentscheidungen für verschiedene Anwendungsfälle erlaubt, während es Protokollüberlagerungen auf hoher Ebene wie z. B. ein On-Chip-Netz (NoC) oder speicherabgebildetes Netz nicht ausschließt, was effizientes gemeinsames Verwenden von Routing-Kanälen für unabhängige Verkehrsströme erlaubt, und zu deterministischem Daten-Streaming zwischen unterschiedlichen Endpunkten (z. B. zwischen unterschiedlichen Quellen und Zielen) befähigt.
  • Es ist durch einen Fachmann zu erkennen, dass die vorliegenden beispielhaften Ausführungsformen ohne einige dieser oder alle diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind bekannte Operationen nicht im Einzelnen beschrieben worden, um die vorliegenden Ausführungsformen nicht unnötigerweise zu verdecken.
  • Eine erläuternde Ausführungsform einer Schaltungsanordnung 100 mit programmierbarer integrierter Schaltung wie z. B. eine programmierbare Logikvorrichtung (PLD) oder ein im Feld programmierbares Gatter-Array (FPGA), die konfiguriert sein kann, um ein Schaltungs-Design zu implementieren, ist in 1 gezeigt. Wie in 1 gezeigt ist, kann die Schaltungsanordnung 100 ein zweidimensionales Array von Funktionsblöcken enthalten, die beispielsweise Logik-Array-Blöcke (LABs) 110 und andere Funktionsblöcke wie z. B. Direktzugriffsspeicher-(RAM-) Blöcke 130 und Blöcke 120 zur digitalen Signalverarbeitung (DSP) enthalten.
  • Funktionsblöcke wie z. B. LABs 110 können kleinere programmierbare Bereiche (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und angepasste Funktionen auf den Eingangssignalen ausführen, um Ausgangssignale zu produzieren. LABs 110 können auch in größere programmierbare Bereiche gruppiert sein, die manchmal als Logiksektoren bezeichnet sind, die durch entsprechende Logiksektormanager individuell gemanagt und konfiguriert werden. Das Gruppieren der programmierbaren Logikbetriebsmittel auf der Vorrichtung 100 in Logiksektoren, Logik-Array-Blöcke, Logikelemente oder adaptive Logikmodule ist lediglich erläuternd. Im Allgemeinen kann die Schaltungsanordnung 100 Funktionslogikblöcke von irgendeiner/irgendeinem geeigneten Größe und Typ enthalten, die in Übereinstimmung mit irgendeiner geeigneten Logikbetriebsmittelhierarchie organisiert sein können.
  • Die Schaltungsanordnung 100 kann programmierbare Speicherelemente beinhalten. Diese Speicherelemente können mit Konfigurationsdaten (auch als Programmierdaten bezeichnet) geladen sein. Sobald sie geladen sind, können die Speicherelemente jeweils ein entsprechendes statisches Steuersignal bereitstellen, das den Betrieb eines zugeordneten Funktionsblocks (z. B. LABs 110, DSP 120, RAM 130 usw.) steuert. In einem typischen Szenario werden die Ausgaben der geladenen Speicherelemente an die Gates von Metalloxidhalbleitertransistoren in einem Funktionsblock angelegt, um spezielle Transistoren an- und abzuschalten und dadurch die Logik in dem Funktionsblock, der die Routing-Wege enthält, zu konfigurieren. Programmierbare Logikschaltungselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexierern (z. B. Multiplexierern, die zum Bilden von Routing-Wegen in Zusammenschaltungsschaltungen verwendet werden), Nachschlagetabellen, Logik-Arrays, AND-, OR-, NAND- und NOR-Logikgatter, Pass-Gates usw.
  • Die Speicherelemente können irgendwelche geeigneten flüchtigen und/oder nichtflüchtigen Speicherstrukturen verwenden, wie z. B. Direktzugriffsspeicher- (RAM-) Zellen, Sicherungen, Anti-Sicherungen, programmierbare Festwertspeicher-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, Kombinationen aus diesen Strukturen usw. Weil die Speicherelemente mit Konfigurationsdaten während des Programmierens geladen werden, sind die Speicherelemente manchmal als Konfigurationsspeicher, Konfigurationsdirektzugriffsspeicher (CRAM) oder programmierbare Speicherelemente bezeichnet. Die Schaltungsanordnung 100 kann konfiguriert sein, ein angepasstes Schaltungs-Design zu implementieren. Beispielsweise kann der Konfigurations-RAM so programmiert sein, dass LABs 110, DSP 120 und RAM 130 und programmierbare Zusammenschaltungsschaltungsanordnung (d. h. vertikale Kanäle 140 und horizontale Kanäle 150) die Implementierung des Schaltungs-Design bilden.
  • Zusätzlich kann die programmierbare Logikvorrichtung ferner Eingabe-Ausgabe- (I/O-) Elemente (nicht gezeigt) zum Treiben von Signalen aus der Schaltungsanordnung 100 und zum Empfangen von Signalen von anderen Vorrichtungen enthalten. Die Eingabe-Ausgabe-Elemente können parallele Eingabe-Ausgabe-Schaltungsanordnung, serielle Datensender/empfänger-Schaltungsanordnung, differentielle Empfänger- und Sender-Schaltungsanordnung oder eine andere Schaltungsanordnung enthalten, die verwendet wird, um eine Vorrichtung mit integrierter Schaltung mit einer weiteren zu verbinden.
  • Wie vorstehend beschrieben kann die Schaltungsanordnung 100 außerdem programmierbare Zusammenschaltungsschaltungsanordnung in der Form vertikaler Routing-Kanäle 140 und horizontaler Routing-Kanäle 150 aufweisen, wobei jeder Routing-Kanal wenigstens eine Bahn zum Routen wenigstens einer oder mehrerer Leitungen enthält. Falls gewünscht kann die Zusammenschaltungsschaltungsanordnung Pipeline-Elemente enthalten, und auf die in diesen Pipeline-Elementen gespeicherten Inhalte kann während des Betriebs zugegriffen werden.
  • Es wird darauf hingewiesen, dass beabsichtigt ist, dass andere Routing-Topologien, neben der Topologie der in 1 abgebildeten Zusammenschaltungsschaltungsanordnung, in den Schutzbereich der vorliegenden Erfindung aufgenommen werden. Beispielsweise kann die Routing-Topologie sowohl Leitungen enthalten, die diagonal verlaufen oder die horizontal und vertikal entlang unterschiedlichen Teilen verlaufen, als auch Leitungen, die senkrecht zu der Vorrichtungsebene im Fall dreidimensionaler integrierter Schaltungen verlaufen, und der Treiber einer Leitung kann sich an einem anderen Ort als an dem Ende einer Leitung befinden. Die Routing-Topologie kann globale Leitungen, die im Wesentlichen die gesamte Schaltungsanordnung 100 überspannen, teilweise globale Leitungen wie z. B. Leitungen, die einen Teil der Schaltungsanordnung 100 überspannen, gestaffelte Leitungen einer speziellen Länge, kleinere lokale Leitungen oder irgendeine andere geeignete Zusammenschaltungsbetriebsmittelanordnung enthalten.
  • Wie vorstehend in Verbindung mit 1 beschrieben kann die Schaltungsanordnung 100 eine programmierbare integrierte Schaltung wie z. B. ein im Feld programmierbares Gatter-Array (FPGA) implementieren. Konfigurationen, in denen ein FPGA mit einem dedizierten programmierbaren grobkörnigen Routing-Netz ausgestattet ist, können hier manchmal als ein Beispiel beschrieben sein. Das ist jedoch lediglich erläuternd. Im Allgemeinen können die hier beschriebenen Strukturen, Verfahren und Techniken auf andere geeignete Typen integrierter Schaltungen erweitert werden.
  • Die horizontalen Routing-Leitungen 140 und die vertikalen Routing-Leitungen 150, die verwendet werden, um die verschiedenen Funktionsblöcke innerhalb eines FPGA zusammenzuschalten, sind manchmal als „feinkörnige“ Routing-Leitungen bezeichnet. Feinkörnige Routing-Leitungen sind mit einer Granularität auf Bit-Ebene programmierbar. Obwohl sich die Geschwindigkeit externer Eingabe-Ausgabe-Schnittstellenprotokolle weiterhin alle zwei bis drei Jahre verdoppelt, ist die Leistungsverbesserung feinkörniger Routing-Zusammenschaltung jedoch aufgrund von parasitischen Halbleitereffekten (d. h. parasitische/r Kapazität und Widerstand) und Metallbreiten- und -abstandsanforderungen, die alle den maximalen Frequenz-Gewinn (Fmax-Gewinn) begrenzen, auf nur 10 - 15 % pro Generation von Vorrichtungen begrenzt. Außerdem wird, da das feinkörnige Routing verwendet wird, um sowohl lokale als auch globale Leitungen zu verteilen, das Zusammenpaketieren großer zugehöriger Bus-Netze die Anzahl der Routing-Leitungen, die zur herkömmlichen Konnektivität zwischen LogikElemente der FPGA-Logik verfügbar sind, reduzieren.
  • FPGAs können außerdem mit einem dedizierten Fabric für ein On-Chip-Netz (NoC) mit fester Funktion ausgestattet sein, das höhere Bandbreitenkapazität bieten kann, jedoch zusätzlichen Overhead und Kompromisse mit sich bringt. Beispielsweise enthalten NoC-Fabric-Zusammenschaltungen zusätzlichen Overhead, der zum Implementieren von Kreditdrosseln, Gegendruck und Überbrückung erforderlich ist, die für NoC-basierte Protokolle wie z. B. das AXI-NoC-Schnittstellenprotokoll erforderlich sind. Andere Probleme, die mit einem NoCbasierten Fabric verbunden sind, sind, dass sein Routing nichtdeterministisch sein kann und dass die Bandbreitenzuweisung unflexibel und komplex ist.
  • In Übereinstimmung mit einer Ausführungsform ist 2 ein Diagramm, das zeigt, wie eine programmierbare integrierte Schaltungsanordnung wie z. B. die FPGA-Schaltungsanordnung 200 feinkörnige Routing-Leitungen und ein separates programmierbares deterministisches grobkörniges Routing-Netz enthalten kann. Wie in 2 gezeigt kann die FPGA-Schaltungsanordnung 200 eine Logikschaltungsanordnung 204 (z. B. organisiert in adaptive Logikmodule, Logikelemente, Logik-Array-Blöcke, Logiksektoren usw.), DSP-Blöcke 206 (siehe z. B. die DSP-Blöcke 120 von 1), RAM-Blöcke 208 (siehe z. B. die RAM-Blöcke 130 von 1) und feinkörnige Routing-Leitungen 210 enthalten. Die Logikschaltungsanordnung 204, DSP-Blöcke 206, RAM-Blöcke 208 und feinkörnigen Routing-Leitungen 210 können manchmal gemeinsam als FPGA-Fabric 202, Kern-Fabric-Schaltungsanordnung oder Speicher-, Verarbeitungs- und Routing-Fabric bezeichnet sein. Das FPGA-Fabric 202 kann eingebettete Speicherelemente wie z. B. Konfigurationsdirektzugriffsspeicher- (CRAM-) Zellen 212 enthalten, die statische Steuersignale zum Konfigurieren verschiedener Logik-, Arithmetik-, Speicher- und feinkörniger Routing-Schaltungsanordnung innerhalb des Fabric 202 ausgeben.
  • Die FPGA-Schaltungsanordnung 200 kann ferner ein programmierbares deterministisches grobkörniges Routing-Netz wie z. B. das programmierbare grobkörnige Routing-Netz 220, zusätzlichen Speicher wie z. B. den Großspeicher-RAM 222, zusätzliche Rechenschaltungen wie z. B. gehärtete Rechenblöcke 224 und Eingabe-Ausgabe- (I/O-) Blöcke 226 enthalten. Die IO-Blöcke 226 sind konfiguriert, mit Vorrichtungen außerhalb der FPGA-Schaltungsanordnung 200 zu kommunizieren. Beispielsweise können IO-Blöcke einen gehärteten „Peripheral Component Interconnect“-(PCIe-) Schnittstellenblock, einen IEEE 802.3-Ethernet-Block, einen Block für den universellen seriellen Bus (USB), einen Interlaken-Block, einen RapidIO-Block, einen „Common Public Radio Interface“- (CPRI-) Block und/oder andere Computerbusprotokollschnittstellenblöcke enthalten.
  • Im Vergleich zu RAM-Blöcken 208 innerhalb des Kern-Fabric 202 sind Großspeicher-RAM 222 viel größere Direktzugriffsspeicherblöcke, die manchmal als eingebettete statische Direktzugriffsspeicher- (eSRAM-) Blöcke bezeichnet sind. Die Großspeicher-RAM-Blöcke 222 neigen dazu, viel größer und dichter zu sein als die Kern-RAM-Blöcke 208, während sie mit relativ längeren Speicherzugriffslatenzen einhergehen. Beispielsweise kann Großspeicher-RAM 222 als Speicher-Cache für einen zugeordneten Prozessor verwendet werden, kann verwendet werden, um Konfigurationsdaten (z. B. einen Konfigurations-Bitstrom oder ein CRAM-Abbild) zu speichern, oder kann verwendet werden, um andere Anwenderdaten zu speichern. Ähnlich können im Vergleich zu DSP-Blöcken 206 innerhalb des Kern-Fabric 202 die Rechenblöcke 224 viel größer und dichter sein. Beispielsweise können die Rechenblöcke 224 festverdrahtet sein, um Multiplizier-Akkumulier-Operationen auszuführen, um Skalarprodukte zu berechnen, um irgendeine geeignete Arithmetikfunktion auszuführen und/oder um irgendeine gewünschte Rechenfähigkeit bereitzustellen.
  • Insbesondere kann das programmierbare grobkörnige Routing-Netz 220 verwendet werden, um die Bedürfnisse programmierbarer IC-Designs zu adressieren, die die Verwendung deterministischer globaler Routing-Zusammenschaltungen und/oder von Netzen vom NoC-Typ-Fabric erfordern. Feinkörnige Routing-Leitungen 210, die herkömmlicherweise lokales und globales Routing innerhalb des FPGA-Fabric implementieren, weisen variable Routing-Längen und Pipelining-Orte auf, die programmierbar sind (d. h. die feinkörnigen Routing-Leitungen weisen Längen und Pipelining-Orte auf, die nicht fest sind). Ein Design-Compiler-Werkzeug zum Zusammenstellen eines FPGA-Designs muss versuchen, eine Ziel-Fmax-Anforderung ohne Garantien zu erfüllen. Kürzere feinkörnige Leitungen sind zusammen kaskadiert, um längere Leitungen zu bilden, und müssen an einem hinreichend nahe Register ankommen, um Zeitanforderungen zu verfüllen. Außerdem können alle Multi-Bit-Busse in einer feinkörnigen Routing-Konfiguration unterschiedliche Routing-Wege nehmen, bevor sie an demselben Endziel ankommen. Die verschiedenen Wege, die genommen werden können, können sich außerdem von einer Design-Zusammenstellung zu einer weiteren ändern. Mit anderen Worten ist feinkörniges Routing nichtdeterministisch. Im Gegensatz dazu können alle Multi-Bit-Busse in dem grobkörnigen Routing-Netz 220 denselben Routing-Weg auf dem Interposer-Baustein nehmen.
  • Im Gegensatz zu den feinkörnigen Routing-Leitungen 210 ist das programmierbare grobkörnige Routing-Netz 220 auf Byte-Ebenen-, Wort-Ebenen- oder einer anderen Multi-Bit-breiten Granularität programmierbar und ist ein deterministisches Routing-Netz mit Pipelines an festen Orten, um eine Zielbetriebsfrequenz zu erfüllen. Die 8-Bit-Granularität stellt sowohl die kleinste gemeinsame grobkörnige Breite, die zum Unterstützen der Bedürfnisse unterschiedlicher Rechenvariablen (8/16/32/64 Bits) fähig ist, als auch die am häufigste verwendeten Speicher- und IO-Datenpfadbreiten bereit. Der Begriff „deterministisch“ gibt an, dass das Netz 220 fähig sein wird zu bestimmen, an welchem Taktzyklus ein Ereignis mit Sicherheit auftreten wird. Anders als die feinkörnigen Routing-Leitungen 210 sind die Zusammenschaltungen innerhalb des grobkörnigen Routing-Netzes 220 im Voraus verdrahtet, um den zeitlichen Abschluss sicherzustellen (z. B. sind die Routing-Kanäle innerhalb des Netzes 220 hinsichtlich der Zeit und des Inter-Bus-Bitversatzes garantiert).
  • Die Pipeline-Register innerhalb des grobkörnigen Routing-Netzes 220 können unter Verwendung eines einzelnen dedizierten synchronen Netztakts, der über das Netz 220 verteilt wird, zeitgesteuert werden. Um zum Minimieren des dynamischen Energieverbrauchs beizutragen, können ungenutzte oder freie Routing-Kanäle innerhalb des Netzes 220 statisch geschlossen sein. Datenübertragungen von dem FPGA-Fabric 202 oder den IO-Blöcken 226 zu dem grobkörnigen Routing-Netz 220, die zu unterschiedlichen Taktdomänen gehören, werden Phasen- oder Frequenzkompensations-First-In-First-Out- (FIFO-) Schaltungen 250 (manchmal auch als Ratenabgleichs-FIFOs bezeichnet) durchlaufen müssen. Das grobkörnige Routing-Netz 220 kann außerdem Taktabgriffspunkte in einen oder mehrere IO-Blöcke 226 und das Kern-Fabric 202 zum Gebrauch zum Aufbauen der Schnittstellenlogik bereitstellen.
  • Da sich die Technologie integrierter Schaltungen zu kleineren Abmessungen von Vorrichtungen skaliert, verbessert sich die Leistungsfähigkeit der Vorrichtungen weiterhin auf Kosten eines erhöhen Energieverbrauchs. In einer Bemühung, den Energieverbrauch zu reduzieren, kann mehr als ein Baustein innerhalb einer einzigen Baugruppe mit integrierter Schaltung (d. h. einer Multichip-Baugruppe) platziert sein. Da unterschiedliche Typen von Vorrichtungen auf unterschiedliche Typen von Anwendungen ausgerichtet sind, können in einigen Systemen mehr Bausteine erforderlich sein, um die Anforderungen von Hochleistungsanwendungen zu erfüllen. Dementsprechend kann, um eine bessere Leistung und höhere Dichte zu erhalten, eine Baugruppe mit integrierter Schaltung mehrere Bausteine enthalten, die seitlich entlang derselben Ebene angeordnet sind, oder kann mehrere Bausteine enthalten, die aufeinander gestapelt sind (manchmal als 3-dimensional oder „3D-Bausteinstapeln“ bezeichnet).
  • Technologien wie z. B. 3D-Stapeln haben eine neue Dimension zum Aufbauen heterogener Produkte durch Nutzen eines der gestapelten Bausteine zum Erweitern der Speicherkapazität, Rechenleistung und außerdem Zusammenschaltungskapazität ermöglicht, um dazu beizutragen, dass FPGAs mit externen 10-Schnittstellenprotokollen schritthalten und skalieren können. 3 zeigt eine Querschnittsseitenansicht einer erläuternden Multichip-Baugruppe 300, die ein Baugruppensubstrat 306, einen aktiven Interposer-Baustein 304, der auf dem Baugruppensubstrat 306 montiert ist, und einen Baustein 302 mit integrierter Schaltung (IC-Baustein), der auf dem aktiven Interposer 304 montiert ist, enthält. Wie in 3 gezeigt ist, kann das FPGA-Fabric 202 (z. B. die programmierbare Logik 204, DSP-Blöcke 206, RAM-Blöcke 208, feinkörnige Routing-Leitungen 210 und zugeordneten CRAM-Zellen 212 von 2) auf dem obersten IC-Baustein 302 gebildet sein.
  • Mikrohöcker 312 können zwischen den Bausteinen 302 und 304 gebildet sein, um das Koppeln der Schaltungsanordnung auf dem Baustein 302 mit der Schaltungsanordnung auf dem Baustein 304 zu unterstützen. Höcker wie z. B. „Controlled Collapse Chip Connection“-(C4-) Höcker 314 (manchmal auch als Flip-Chip-Höcker bezeichnet) können an der Unterseite des Interposers 304 gebildet sein. Allgemein sind C4-Höcker 314 (z. B. Höcker, die als Schnittstellen mit Komponenten außerhalb der Baugruppe verwendet werden) wesentlich größer im Vergleich zu Mikrohöckern 312 (z. B. Höcker, die als Schnittstellen mit anderen Bausteinen innerhalb derselben Multichip-Baugruppe verwendet werden). Die Anzahl von Mikrohöckern 312 ist außerdem im Allgemeinen viel größer als die Anzahl von Flip-Chip-Höckern 314 (z. B. das Verhältnis der Anzahl von Mikrohöckern zu der Anzahl von C4-Höckern kann größer sein als 2:1, 5:1, 10:1 usw.).
  • Getrennt davon kann das programmierbare grobkörnige Routing-Netz 220 auf dem unteren Interposer-Baustein 304 gebildet sein. Zusätzliche IC-Bausteine (nicht gezeigt) können optional auf dem aktiven Interposer-Baustein 304 neben dem oberen Baustein 302 gebildet sein. Durch Bilden des grobkörnigen Routing-Netzes 220 als eine von dem oberen FPGA-Baustein 302 separate Komponente können irgendwelchen globalen oder längerreichweitigen Routing-Wege, die eine größere Anzahl von Logikgebieten überspannen (die z. B. fünf oder mehr Logik-Array-Blöcke überspannen) nach unten zu dem Routing-Netz 220 und dann zurück zu einem geeigneten entfernten Ziel auf dem oberen Baustein 302 geführt werden, wie durch den grobkörnigen Routing-Weg 350 gezeigt ist.
  • Das Dedizieren des grobkörnigen Routing-Netzes 220 zum Ausführen von globalem Routing ermöglicht es, dass sich die feinkörnigen Routing-Leitungen 210 auf dem oberen Baustein 302 nur auf das Handhaben von lokalen oder kurzreichweitigen Routing-Wegen fokussieren. Das Entladen von deterministischem, Pipeline-, grobkörnigem Routing auf diese Weise stellt eine Verbesserung für die Leistungsfähigkeit integrierter Schaltungen bereit durch Ermöglichen effizienterer Datenbewegung mit hoher Bandbreite innerhalb der FPGA-Schaltungsanordnung und auch An- und Abschalten des FPGA, durch Erlauben von späten Bindungsentscheidungen für FPGA-Anwendungsfälle, während Protokollüberlagerungen auf hoher Ebene wie z. B. ein On-Chip-Netz (NoC) nicht ausgeschlossen sind, durch Erlauben des effizienten gemeinsamen Verwendens von Leitungen für unterschiedliche unabhängige Verkehrsströme, durch Erlauben flexibler Skalierbarkeit, um die gewünschte Parallelität und Bandbreite zu erreichen, und durch Bereitstellen von deterministischem Daten-Streaming zwischen Endpunkten unter Verwendung einer festen im Voraus verdrahteten Pipeline-Kanalstruktur.
  • Ein oder mehrere Großspeicher-RAM-Blöcke 222, gehärtete Rechenblöcke 224 und/oder IO-Blöcke, die in Verbindung mit 2 beschrieben sind, können auf dem aktiven Interposer-Baustein 304 gebildet sein. Wieder Bezug nehmend zurück auf 3 kann ein IO-Block 226 innerhalb des unteren Interposer-Bausteins 304 konfiguriert sein, eine Schnittstelle mit Komponenten außerhalb der Multichip-Baugruppe 300 zu bilden, wie durch die Kommunikationswege 352 angegeben ist.
  • Das Beispiel von 3, in dem das programmierbare grobkörnige Routing-Netz 220 auf einem separaten gestapelten 3D-Baustein relativ zu dem FPGA-Baustein 302 gebildet ist, ist lediglich erläuternd. Falls gewünscht könnte das grobkörnige Routing-Netz 220 in anderen Gebieten als das Fabric 202 auf demselben Baustein gebildet sein, könnte über dem Fabric 202 in unterschiedlichen Metall-Routing-Schichten desselben Bausteins überlagert sein, kann auf separaten seitlich montierten 2D-Bausteinen gebildet sein, kann als Teil anderer IC-Baugruppen gebildet sein, usw.
  • 4 zeigt eine geeignete Anordnung, in der das programmierbare grobkörnige Routing-Netz 220 unter Verwendung eines Arrays aus programmierbaren „Switchbox“-Schaltungen 400, die ein Gitter aus mehreren Pipeline-Kanälen von Byte-Größe bilden, aufgebaut ist. Wie in 4 gezeigt ist, kann das programmierbare grobkörnige Routing-Netz 220 Zeilen und Spalten aus programmierbaren „Switchbox“-Schaltungen 400 enthalten. Jedes benachbarte Paar von „Switchbox“-Schaltungen 400 kann über mehrere Kanäle 402 miteinander verknüpft sein. Die Kanäle 402 können an festen Orten unter Verwendung von Pipeline-Registern 404 in einer Pipeline sein.
  • Die mehreren „Switchbox“-Schaltungen 400 und Kanäle 320 können ein Gitter oder eine Matrix von Routing-Wegen erzeugen, das/die Öffnungen oder Einbauplätze bildet, die von vier benachbarten Kanälen 402 umgeben sind. In dem Beispiel von 4 kann die Öffnung in dem nordwestlichen Quadranten durch einen Großspeicher-SRAM-Block 222 besetzt sein; die Öffnung in dem südwestlichen Quadranten kann durch eine Rechenblock 224 besetzt sein; die Öffnung in dem südöstlichen Quadranten kann durch einen IO-Block 266 (z. B. einen PCIe-Block oder einen Ethernet-Block) besetzt sein; und der Einbauplatz in dem nordöstlichen Quadranten kann unbesetzt sein. Diese beispielhafte Anordnung, in der das Netz 220 ein 3-mal-3-Array programmierbarer „Switchbox“-Schaltungen 400 enthält, ist lediglich erläuternd. Allgemein kann das Netz 220 ein Array von irgendeiner geeigneten Dimension mit einigen zehn, einigen hundert oder sogar einigen tausend programmierbarer „Switchbox“-Schaltungen 400 enthalten, die Gitteröffnungen bilden, von denen wenigstens einige durch Speicher-, Rechen- und/oder Eingabe-Ausgabe-Schaltungsanordnung besetzt sind.
  • Immer noch mit Bezug auf 4 kann ein protokollbasiertes On-Chip-Netz (NoC) dem grobkörnigen Routing-Netz 220 überlagert sein. Mit anderen Worten kann das programmierbare grobkörnige Routing-Netz 220 für das NoC-Protokoll konfiguriert und wiederverwendet werden. Das NoC-Protokoll ist ein vordefiniertes Routing-Protokoll, das nichtdeterministisch ist und das die Zustellzeit nicht garantiert. Wenn das NoC-Protokoll implementiert wird, können eine oder mehrere „Switchbox“-Schaltungen 400 innerhalb des grobkörnigen Routing-Netzes 220 mit einer oder mehreren NoC-Brücken 410, die in dem oberen FPGA-Baustein 302 gebildet sind, kommunizieren. In dem Beispiel von 4 sind vier der neun „Switchbox“-Schaltungen 400 mit einer entsprechenden NoC-Brücke 410 (z. B. einer AXI-Brücke oder einer Avalon-Brücke) gekoppelt. Das ist lediglich erläuternd. Allgemein kann irgendeine geeignete Teilmenge der „Switchbox“-Schaltungen 400 mit ihrer eigenen zugeordneten NoC-Brücke 410 gekoppelt sein.
  • 5 ist ein Diagramm, das ein programmierbares grobkörniges Routing-Netz 220 zeigt, das mehrere 8-Bit-Kanäle enthält. Wie in 5 gezeigt ist, kann jede „Switchbox“-Schaltung 400 aus 4 mehrere Instanzen aus N individuellen „Switchboxes“ 400' enthalten. Jede individuelle „Switchbox“ 400' kann mit jeder aus vier benachbarten „Switchboxes“ 400' über eine Gruppe aus einem ankommenden 8-Bit-Bus und einem ausgehenden 8-Bit-Bus gekoppelt sein. Ein Paar aus ankommenden und ausgehenden Bussen bildet einen „Kanal“ aus 16 Leitungen (als ein Beispiel).
  • In dem Beispiel von 5 kann eine erste „Switchbox“ 400' in der „Switchbox“-Schaltung 400-1 mit der ersten „Switchbox“ 400' in der „Switchbox“-Schaltung 400-2 über einen ersten Kanal 402-1 gekoppelt sein; eine zweite „Switchbox“ 400' in der „Switchbox“-Schaltung 400-1 kann mit der zweiten „Switchbox“ 400' in der „Switchbox“-Schaltung 400-2 über einen zweiten Kanal 402-2 gekoppelt sein; ...; und eine N-te „Switchbox“ 400' in der „Switchbox“-Schaltung 400-1 kann mit der N-ten „Switchbox“ 400' in der „Switchbox“-Schaltung 400-2 über einen N-ten Kanal 402-N gekoppelt sein. Kanäle routen sowohl in der horizontalen Richtung (und verknüpfen „Switchboxes“, die entlang derselben Zeile angeordnet sind) und der vertikalen Richtung (und verknüpfen „Switchboxes“, die entlang derselben Spalte angeordnet sind).
  • Die Anzahl von Kanälen N ist vorbestimmt. Als ein Beispiel würde, falls N=32 ist, die Routing-Zusammenschaltung in jeder Richtung 256 Bits enthalten (d. h. 32*8 ist gleich 256). Unter der Annahme, dass eine Pipeline-Zusammenschaltungszeit bei 1 GHz schließt, würde das grobkörnige Routing-Netz 220 dann fähig sein, 32 GBps pro Richtung zu unterstützen.
  • In einigen Ausführungsformen kann das Kanal-Routing auf Byte-Ebene granular sein und kann in mehrere Gruppen bondfähig sein. In einer geeigneten Ausführungsform können die grobkörnigen Routing-Zusammenschaltungen in vier unabhängige Gruppen unterteilt sein: (1) eine erste Gruppe aus 16 Kanälen, (2) eine zweite Gruppe aus 8 Kanälen, (3) eine dritte Gruppe aus 4 Kanälen und (4) eine vierte Gruppe aus 4 Kanälen. Die Konfiguration stellt vier unabhängige Netze von 16 GBps, 8 GBps, 4 GBps bzw. 4 GBps zur Verfügung. Ein anderes Anwender-Design könnte eine andere Zuweisung von Kanälen basierend auf seinen spezifischen Anforderungen wählen.
  • In einer weiteren geeigneten Ausführungsform können die grobkörnigen Routing-Zusammenschaltungen in zwei unabhängige Gruppen unterteilt sein: (1) eine erste Gruppe aus 16 Kanälen und (2) eine zweite Gruppe aus 16 Kanälen. Diese Konfiguration stellt zwei unabhängige Netze zur Verfügung, die jeweils 15 GBps bereitstellen. In noch einer weiteren geeigneten Ausführungsform können die grobkörnigen Routing-Zusammenschaltungen in drei unabhängige Gruppen unterteilt sein: (1) eine erste Gruppe aus 16 Kanälen, (2) eine zweite Gruppe aus 12 Kanälen und (3) eine dritte Gruppe aus 4 Kanälen Die Konfiguration stellt drei unabhängige Netze von 16 GBps, 12 GBps bzw. 4 GBps zur Verfügung.
  • Diese Kanalzuweisungen sind lediglich erläuternd. Im Allgemeinen kann N irgendeine im Voraus ausgewählte Ganzzahl sein und kann in irgendeine geeignete Anzahl von Gruppen unterteilt sein, abhängig von dem Bedarf der Anwendung. Dieses Beispiel, in dem die Zuweisung unter 8-Bit-Bussen ausgewählt ist, ist lediglich erläuternd. Falls gewünscht kann jeder Bus 4 Bits (manchmal als ein „Wort“ bezeichnet), 2 Bits, 2-8 Bits, mehr als 8 Bits, 16 Bits, 8-16-Bits, mehr als 16 Bits, 32 Bits, 16-32 Bits, mehr als 32 Bits, 64 Bits, 32-64 Bits, mehr als 64 Bits oder irgendeine andere geeignete Anzahl von Bits übertragen.
  • Jede „Switchbox“ 400', die sich nicht am Rand des Routing-Netzes 220 befindet, kann bis zu vier Datenweg-Routing-Multiplexierer 602 enthalten, die Routing-Kanäle in jeder Richtung (z. B. Norden nach Süden, Süden nach Norden, Westen nach Osten und Osten nach Westen) empfangen und senden. Beispielsweise kann ein erster Datenweg-Routing-Multiplexierer 602W einen ersten („0“) Eingang, der mit einer horizontalen Zusammenschaltung von Westen (W) verbunden ist, einen zweiten („1“) Eingang, der mit dem Knoten FN (d. h. mit dem Ausgang des Multiplexierers 602N) gekoppelt ist, einen dritten („2“) Eingang, der mit dem Knoten FS (d. h. dem Ausgang des Multiplexierers 602S) gekoppelt ist, einen vierten Eingang („3“), der ein Signal von dem FPGA-Fabric in dem oberen Baustein empfängt, und einen Ausgangsansteuerknoten FW aufweisen. Der Ausgang des Datenweg-Routing-Multiplexierers 602W kann unter Verwendung eines entsprechenden Pipeline-Registers 650 verriegelt sein. Abhängig von dem Abstand zwischen benachbarten „Switchboxes“ 400' können die Pipeline-Register 650 statisch umgangen werden.
  • Der Datenweg-Routing-Multiplexierer 602W kann unter Verwendung eines Selektor-Multiplexierers 604W gesteuert werden. Der Selektor-Multiplexierer 604W kann einen ersten („0“) Eingang, der konfiguriert ist, ein statisches Steuer-Bit von einer zugeordneten CRAM-Zelle 608W, die auf dem oberen FPGA-Baustein eingebettet ist, zu empfangen, einen zweiten („1“) Eingang, der konfiguriert ist, ein Steuersignal von dem FPGA-Fabric in dem oberen Baustein zu empfangen, und einen dritten („2“) Eingang, der konfiguriert ist, einen Zählwert von einer Zählerschaltung wie z. B. dem Zeitdomänenmultiplexier-Zähler (TDM-Zähler) 606W zu empfangen, aufweisen.
  • Auf diese Weise konfiguriert kann der Datenweg-Routing-Multiplexierer 602W seinen „0“-Eingang verwenden, um das existierende Signal-Routing von Westen fortzusetzen, zwischen den zwei senkrechten gerichteten Routing-Kanälen auswählen (d. h. durch Wählen aus entweder dem „1“- oder dem „2“-Eingang) auswählen oder Daten von dem FPGA-Fabric auswählen (d. h. durch Wählen des „3“-Eingangs). Jede der vier Richtungen kann auf eine ähnliche Weise angeordnet sein, unter Verwendung des zweiten Datenweg-Routing-Multiplexierers 602N, um den Knoten FN von Norden anzusteuern, unter Verwendung des dritten Datenweg-Routing-Multiplexierers 602E, um den Knoten FE von Osten anzusteuern, und unter Verwendung des vierten Datenweg-Routing-Multiplexierers 602S, um den Knoten FS von Süden anzusteuern. Der Multiplexierer 602N kann durch den Selektor-Multiplexierer 604N gesteuert werden. Der Multiplexierer 602E kann durch den Selektor-Multiplexierer 604E gesteuert werden. Der Multiplexierer 602S kann durch den Selektor-Multiplexierer 604S gesteuert werden. Die genaue Verdrahtung und Verbindungen sind in 6 gezeigt.
  • Das Beispiel von 6, in dem die „Switchbox“ 400' Datenweg-Routing-Multiplexierer 602 mit 4:1-Selektivität aufweist, ist lediglich erläuternd. 7 stellt ein weiteres Beispiel dar, in dem der Datenweg-Routing-Multiplexierer 5:1-Selektivität unterstützt. Wie in 7 gezeigt ist, bleiben die Eingänge des Routing-Multiplexierers 602W gleich den in 6 gezeigten. Es wird darauf hingewiesen, dass alle Eingänge des Multiplexierers 602W registriert sein können. Der Multiplexierer 602W ist ferner mit einem NoC-Multiplexierer 603W verbunden. Der NoC-Multiplexierer 603W weist einen ersten („1“) Eingang, der mit dem Ausgang des Datenweg-Routing-Multiplexierers 602W verbunden ist, einen zweiten („0“) Eingang, der konfiguriert ist, Signale von einer entsprechenden NoC-Brücke 410 zu empfangen, und einen Ausgang, der unter Verwendung der Register-Pipeline 650 selektiv verriegelt ist und der den Knoten FW ansteuert, auf. In dieser Anordnung können sowohl der Datenweg-Routing-Multiplexierer 602W als auch der NoC-Multiplexierer 604W unter Verwendung des Selektor-Multiplexierers 604W gesteuert werden, der so gezeigt ist, dass er separat durch ein statisches Steuer-Bit aus einer in dem oberen FPGA-Baustein eingebetteten CRAM-Zelle 609W gesteuert wird. Jede der vier Richtungen kann auf eine ähnliche Weise angeordnet sein, um Zugriff auf eine Funktionsüberlagerung höherer Ebene wie z. B. ein On-Chip-Netz bereitzustellen.
  • 8 ist ein Diagramm, das verschiedene Betriebsarten zeigt, in denen ein programmierbares grobkörniges Routing-Netz 220 betrieben werden kann. Wie in 8 gezeigt ist, kann das grobkörnige Routing-Netz 220 in einer ersten Betriebsart 800, während der die Bandbreitenzuweisung fest ist, einer zweiten Betriebsart 802, während der die Bandbreitenzuweisung dynamisch geplant wird, und einer dritten Betriebsart 804, während der das FPGA das Routing während der Laufzeit bestimmt, betrieben werden. Während der Betriebsart 800 mit fester Bandbreitenzuweisung können die N Kanäle in feste Gruppen zugewiesen oder gebondet werden, die durch Konfigurieren jedes Selektor-Multiplexierers 604 zum Routen durch das statische Steuer-Bit von der CRAM-Zelle 608 realisiert sein können. Da der Wert der CRAM-Zelle 608 fest bleiben wird (wenigstens bis sie zu einem späteren Zeitpunkt neu konfiguriert wird), sollte die Routing-Anordnung statisch fest sein.
  • Während der Betriebsart 802 mit dynamischer Bandbreitenzuweisung kann der Selektor-Multiplexierer 604 konfiguriert sein, die Zählwerte aus dem TDM-Zähler 606 aufzunehmen. Die TDM-Zähler 606 können verwendet werden, um die Konfiguration von Datenweg-Routing-Multiplexierern 602 als eine Funktion der Zeit dynamisch zu steuern. Beispielsweise kann ein TDM-Zähler 606 verwendet werden, um eine spezifische Anzahl von S Zeitschlitzen (z. B. 16 Zeitschlitzen) bereitzustellen, die jedem Datenweg-Routing-Multiplexierer 602 zugewiesen werden können, um die TDM-Gewichte und Gerechtigkeit zu bestimmen.
  • Die 9A, 9B und 9C sind Diagramme, die Werte zeigen, die durch den TDM-Zähler 606 ausgegeben werden können. 9A stellt ein Beispiel dar, in dem die Zuweisung zwischen den vier Multiplexierereingängen gleichmäßig verteilt ist (z. B. ist jedem Eingang ein 25 %-Gewicht zugewiesen). 9B stellt ein weiteres Beispiel dar, in dem die Zuweisung den „0“-Eingang bevorzugt, gefolgt von dem „1“-Eingang, und dann gefolgt von den „2“/„3“-Eingängen (z. B. ist für den „0“-Eingang 50 % Gewicht vergeben, für den „1“-Eingang ist 25 % Gewicht vergeben, und für die „2“/„3“-Eingänge ist jeweils 12,5 % Gewicht vergeben). 9C stellt noch ein weiteres Beispiel dar, in dem die Zuweisung für den „0“-Eingang fest ist, was eine weitere Art und Weise zum Implementieren der festen/statischen Zusammenschaltungsbandbreitenzuweisung der Betriebsart 800 ist. Die TDM-Zähler-Schlitze können während der FPGA-Zusammenstellungszeit bestimmt werden und wären während der Laufzeit fest. Falls gewünscht können die TDM-Zähler-Schlitze während der Laufzeit über eine Programmierschnittstelle dynamisch angepasst werden.
  • Während der Betriebsart 804 kann der Selektor-Multiplexierer 604 konfiguriert sein, durch die an Eingang „1“ empfangenen FPGA-Fabric-Steuerungen zu routen. Dieser Steuermechanismus stellt eine Übermenge der Bandbreitenzuweisung auf Kosten der Anwender-Design-Komplexität und einer eingeschränkten Größe der FPGA-Betriebsmittel bereit. Dieses Verfahren könnte das Steuern von irgendeinem Typ der FPGA-„Soft“-Logik erlauben, wie z. B. ein einfaches statisches Einstellen, die während der Laufzeit änderbar sind, basierend auf unterschiedlichen partiellen Neukonfigurationsbildern, deterministischen endlichen Zustandsautomaten, oder sogar unter Verwendung einer „soften“ zentralen Verarbeitungseinheit (CPU) oder einer Mikrosteuereinheit gesteuert werden können. Dieser Typ von fabric-basierender dynamischer Routing-Steuerung kann auch verwendet werden, um eine Fabric-Rückschleifen-Verbindung bereitzustellen, die Leitungen enthält, die früh ankommende Adress- und/oder Header-Informationen beinhalten, um nachfolgende Datenbewegung in dem grobkörnigen Routing-Netz 220 zu steuern und zu bewegen.
  • Angesichts der flexiblen Eigenschaften des programmierbaren grobkörnigen Routing-Netzes 220 können, neben der Header- und Nutzdaten-Bewegung durch das Netz, zusätzliche Hilfskanäle für andere Zwecke zugewiesen werden (z. B. um Gültigkeits-Flags, Paketstart, Kreditinformationen, andere Statusinformationen usw. zu befördern). Das grobkörnige Routing-Netz 220 definiert im Voraus keine speziellen Nutzungsmodelle; vielmehr würde das basierend auf dem Bedarf der Nutzeranwendung bestimmt.
  • 10 stellt ein Beispiel dar, in dem das grobkörnige Routing-Netz 220 verwendet wird, um ein kreditbasiertes Gegendrucksystem zu implementieren. Wie in 10 gezeigt ist, werden sechzehn Kanäle 402-a (z. 128 Bits) für die Datennutzlast in jeder Richtung für Ursprung zum Ziel verwendet, vier Kanäle 402-b (z. B. 32 Bits) werden verwendet, im Header-Informationen zu befördern, und ein Hilfskanal 402-c wird verwendet, um ein Header-Gültigkeits-Bit, ein Daten-Gültigkeits-Bit, fünf Kredit-Bits und ein Kreditrückgabe-Gültigkeits-Bit zu befördern.
  • Das Beispiel von 10 ist lediglich erläuternd und ist nicht dafür vorgesehen, den Schutzbereich der vorliegenden Ausführungsformen einzuschränken. Falls gewünscht kann irgendeine Gruppe von Kanälen oder Leitungen logisch zugeordnet werden, um einen Stapel von Informationen deterministisch zu befördern. In einer weiteren geeigneten Ausführungsform können Hilfskanäle verwendet werden, um Zeitstempel und andere Paketidentifizierungsinformationen zu Synchronisationszwecken zu senden. Ein globaler Zeitgeber könne implementiert sein, und ein N*8b-Zeitstempel könnte zusammen mit den Paketen, die sich durch das Netz bewegen, enthalten sein, der an dem Ursprung injiziert und an dem Ziel extrahiert wird. Die Zeitstempelinformationen würden gegen den globalen Zeitgeberwert geprüft, um zu bestimmen, wie lange das Paket brauchte, um das Routing-Netz zu durchqueren. Lokale Zeitgeber können in „Switchbox“-Schaltungen 400 verwendet und unter Verwendung eines globalen Rücksetzsignals synchronisiert werden.
  • In noch einer weiteren geeigneten Ausführungsform kann das programmierbare grobkörnige Routing-Netz für Fehlerbehebungs-Zwecke verwendet werden. Beispielsweise kann ein Ersatz/Hilfskanal verwendet werden, um Paketidentifizierungs- und Zeitstempelinformationen zu befördern, die dann nach oben zu dem oberen Baustein weitergegeben und unter Verwendung von Fehlerbehebungsschaltungen (z. B. einer eingebetteten Logikanalysatorschaltung) in dem FPGA-Fabric des oberen Bausteins einer Fehlerbehebung unterzogen werden können. Diese Beispiele sind lediglich erläuternd. Falls gewünscht kann das grobkörnige Routing-Netz wirksam eingesetzt oder benutzt werden, um irgendeinen Typ von Informationen zu befördern und/oder irgendein Datenkommunikationsprotokoll zu unterstützen, um die Rate, mit der Daten innerhalb des eines und/oder in ein / aus einem FPGA übertragen werden, zu verbessern.
  • Die Ausführungsformen sind bisher in Bezug auf integrierte Schaltungen beschrieben worden. Die Verfahren und Einrichtungen, die hier beschrieben sind können in irgendeine geeignete Schaltung integriert werden. Beispielsweise können sie in zahlreiche Typen von Vorrichtungen integriert sein, wie z. B. programmierbare Logikvorrichtungen, anwendungsspezifische Standardprodukte (ASSPs) und anwendungsspezifische integrierte Schaltungen (ASICs), Mikrosteuereinheiten, Mikroprozessoren, zentrale Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs) usw. Beispiele für programmierbare Logikvorrichtungen enthalten programmierbare Arrays-Logik (PALs), programmierbare Logik-Arrays (PLAs), im Feld programmierbare Logik-Arrays (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellen-Arrays (LCAs), komplexe programmierbare Logikvorrichtungen (CPLDs) und im Feld programmierbare Gatter-Arrays (FPGAs), um nur einige wenige zu nennen.
  • Die in einer oder mehreren Ausführungsformen hier beschriebene programmierbare Logikvorrichtung kann Teil eines Datenverarbeitungssystems sein, das eine oder mehrere aus den folgenden Komponenten enthält: einen Prozessor; Speicher; IO-Schaltungsanordnung; und Peripheriegeräte. Die Datenverarbeitung kann in einer großen Vielzahl von Anwendungen verwendet werden, wie z. B. Computer-Vernetzung, Daten-Vernetzung, Instrumentierung, Videoverarbeitung, digitale Signalverarbeitung oder irgendeine geeignete andere Anwendung, in der der Vorteil der Verwendung programmierbar oder neu programmierbarer Logik wünschenswert ist. Die programmierbare Logikvorrichtung kann verwendet werden, um eine Vielzahl unterschiedlicher Logikfunktionen auszuführen. Beispielsweise kann die programmierbare Logikvorrichtung als ein Prozessor oder eine Steuereinheit konfiguriert sein, der/die in Kooperation mit einem Systemprozessor arbeitet. Die programmierbare Logikvorrichtung kann außerdem als ein Vermittler zum Vermitteln des Zugriffs auf ein gemeinsam verwendetes Betriebsmittel in dem Datenverarbeitungssystem verwendet werden. In noch einem weiteren Beispiel kann die programmierbare Logikvorrichtung als eine Schnittstelle zwischen einem Prozessor und einer der anderen Komponenten in dem System konfiguriert sein.
  • Obwohl die Verfahren der Operationen in einer spezifischen Reihenfolge beschrieben worden sind, ist zu verstehen, dass andere Operationen zwischen beschriebenen Operationen ausgeführt werden können, beschriebene Operationen angepasst werden können, so dass sie zu geringfügig unterschiedlichen Zeiten stattfinden, oder beschriebene Operationen in einem System verteilt sein können, das das Stattfinden der Verarbeitungsoperationen in verschiedenen Zeitabständen, die der Verarbeitung zugeordnet sind, ermöglicht, solange die Verarbeitung der überlagernden Operationen auf eine gewünschte Weise ausgeführt werden.
  • Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Einrichtung auch in Bezug auf das Verfahren oder den Prozess, das/der hier beschrieben ist, implementiert sein. Das Vorstehende ist lediglich erläuternd für die Prinzipien dieser Offenbarung, und verschiedene Modifikationen können durch Fachleute vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in irgendeiner Kombination implementiert werden.

Claims (25)

  1. Schaltungsanordnung, die Folgendes umfasst: einen ersten Baustein, der feinkörnige Routing-Leitungen enthält, wobei die feinkörnigen Routing-Leitungen variable Routing-Längen aufweisen; und einen zweiten Baustein, der ein grobkörniges Routing-Netz enthält, wobei das grobkörnige Routing-Netz mehrere Kanäle enthält, die einen deterministischen Routing-Weg mit garantiertem zeitlichem Abschluss bilden, und wobei das globale Routing für den ersten Baustein unter Verwendung des grobkörnigen Routing-Netzes auf dem zweiten Baustein ausgeführt wird.
  2. Schaltungsanordnung nach Anspruch 1, wobei das grobkörnige Routing-Netz Pipeline-Register an festen Orten auf dem zweiten Baustein umfasst.
  3. Schaltungsanordnung nach Anspruch 2, wobei Register-Pipelining auf dem ersten Baustein nicht fest ist.
  4. Schaltungsanordnung nach einem der Ansprüche 1-3, wobei die feinkörnigen Routing-Leitungen eine Granularität auf Bit-Ebene aufweisen.
  5. Schaltungsanordnung nach Anspruch 4, wobei das grobkörnige Routing-Netz eine Granularität auf Byte-Ebene aufweist.
  6. Schaltungsanordnung nach einem der Ansprüche 1-5, wobei Multi-Bit-Busse in den feinkörnigen Routing-Leitungen unterschiedliche Routing-Wege auf dem ersten Baustein nehmen.
  7. Schaltungsanordnung nach Anspruch 6, wobei die Multi-Bit-Busse in dem grobkörnigen Routing-Netz denselben Routing-Weg auf dem zweiten Baustein nehmen.
  8. Schaltungsanordnung nach einem der Ansprüche 1-7, wobei das grobkörnige Routing-Netz konfiguriert ist, ein protokollbasiertes On-Chip-Netz zu implementieren, und wobei das protokollbasierte On-Chip-Netz nichtdeterministisch ist.
  9. Schaltungsanordnung nach einem der Ansprüche 1-8, wobei der erste Baustein auf dem zweiten Baustein gestapelt ist.
  10. Schaltungsanordnung nach einem der Ansprüche 1-9, wobei nur der erste Baustein Konfigurationsdirektzugriffsspeicher enthält.
  11. Schaltungsanordnung nach einem der Ansprüche 1-10, wobei der erste Baustein Speicherblöcke einer ersten Größe und Dichte enthält und wobei der zweite Baustein Speicherblöcke einer zweiten Größe und Dichte, die größer ist als die erste Größe und Dichte, enthält.
  12. Schaltungsanordnung nach einem der Ansprüche 1-11, wobei das grobkörnige Routing-Netz ein Array aus „Switchbox“-Schaltungen, die über die mehreren Kanäle miteinander verbunden sind, enthält.
  13. Schaltungsanordnung nach Anspruch 12, wobei jede „Switchbox“-Schaltung in dem Array von „Switchbox“-Schaltungen mehrere „Switchboxes“ umfasst und wobei eine „Switchbox“ in den mehreren „Switchboxes“ Folgendes umfasst: einen Datenweg-Routing-Multiplexierer, der einen ersten Eingang, der mit einer Zusammenschaltung aus einer ersten Richtung gekoppelt ist, einen zweiten Eingang, der mit einer Zusammenschaltung aus einer zweiten Richtung senkrecht zu der ersten Richtung gekoppelt ist, einen dritten Eingang, der mit einer Zusammenschaltung aus einer dritten Richtung senkrecht zu der ersten und der zweiten Richtung gekoppelt ist, und einen vierten Eingang, der konfiguriert ist, ein Signal von dem ersten Baustein zu empfangen.
  14. Schaltungsanordnung nach Anspruch 13, wobei die „Switchbox“ ferner Folgendes umfasst: einen Auswahl-Multiplexierer, der einen ersten Eingang aufweist, der konfiguriert ist, ein statisches Steuer-Bit von einer Konfigurationsdirektzugriffsspeicherzelle auf dem ersten Baustein zu empfangen, einen zweiten Eingang, der konfiguriert ist, ein Steuersignal von dem ersten Baustein, und ein drittes Signal, das mit einem Zeitdomänenmultiplexierzähler gekoppelt ist, zu empfangen.
  15. Schaltungsanordnung nach einem der Ansprüche 13-14, wobei die „Switchbox“ ferner Folgendes umfasst: einen zusätzlichen Multiplexierer, der einen ersten Eingang, der konfiguriert ist, Signale von dem Datenweg-Routing-Multiplexierer zu empfangen, und einen zweiten Eingang, der mit einer On-Chip-Netz- (NoC-) Brückenkomponente auf dem ersten Baustein gekoppelt ist, aufweist.
  16. Einrichtung, die Folgendes umfasst: ein programmierbares Fabric, das eine Logikschaltungsanordnung, digitale Signalverarbeitungs-(DSP-) Blöcke, Direktzugriffsspeicher- (RAM-) Blöcke und feinkörnige Routing-Leitungen enthält; und ein grobkörniges Routing-Netz, das mit dem programmierbaren Fabric gekoppelt ist, wobei das grobkörnige Routing-Netz einen deterministischen Routing-Weg bereitstellt, der unter Verwendung mehrerer Kanäle mit einem zeitlichen Abschluss auf eine spezifizierte Datenübertragungsrate gebildet ist.
  17. Einrichtung nach Anspruch 16, wobei die feinkörnigen Routing-Leitungen die spezifizierte Datenübertragungsrate nicht garantieren können.
  18. Einrichtung nach einem der Ansprüche 16-17, wobei das grobkörnige Routing-Netz ein Gitter aus „Switchboxes“ umfasst, die mehrere Gittereinbauplätze bilden, und wobei wenigstens einige der mehreren Gittereinbauplätze durch zusätzliche Speicherblöcke, zusätzliche Rechenblöcke oder Eingabe-Ausgabe-Blöcke besetzt sind.
  19. Programmierbare Schaltungsanordnung, die Folgendes umfasst: feinkörnige Routing-Leitungen, die konfiguriert sind, eine erste Ebene der Routing-Granularität bereitzustellen; und ein grobkörniges Routing-Netz, das konfiguriert ist, eine zweite Ebene der Routing-Granularität, die von der ersten Ebene der Routing-Granularität verschieden ist, bereitzustellen, wobei das grobkörnige Routing-Netz in einer ersten Betriebsart betreibbar ist, während der Kanäle in dem grobkörnigen Routing-Netz unter Verwendung einer festen Bandbreitenzuweisung konfiguriert werden, und das ferner in einer zweiten Betriebsart betreibbar ist, während der die Kanäle in dem grobkörnigen Routing-Netz unter Verwendung einer dynamisch geplanten Bandbreitenzuweisung konfiguriert werden.
  20. Programmierbare Schaltungsanordnung nach Anspruch 19, die ferner eine Logikschaltungsanordnung umfasst, wobei das grobkörnige Routing-Netz ferner in einer dritten Betriebsart betreibbar ist, während der die Kanäle in dem grobkörnigen Routing-Netz zur Laufzeit unter Verwendung von durch die Logikschaltungsanordnung erzeugten Steuersignalen konfiguriert werden.
  21. Schaltungsanordnung, die Folgendes umfasst: eine erste Schaltung, die feinkörnige Routing-Leitungen enthält; und eine zweite Schaltung, die ein grobkörniges Routing-Netz enthält, das mehrere Kanäle aufweist, die einen deterministischen Routing-Weg bilden, wobei ein erster Teil der mehreren Kanäle für Datennutzlast verwendet wird und wobei ein zweiter Teil der mehreren Kanäle konfiguriert ist, einen Zusammenschaltungsgegendruckmechanismus zu implementieren.
  22. Schaltungsanordnung nach Anspruch 21, wobei die erste Schaltung physikalisch oberhalb der zweiten Schaltung montiert ist.
  23. Schaltungsanordnung nach einem der Ansprüche 21-22, wobei der zweite Teil der mehreren Kanäle, der den Zusammenschaltungsgegendruckmechanismus implementiert, ferner konfiguriert ist, Gegendruckkredit-Bits und ein Daten-Gültigkeits-Bit zu befördern.
  24. Schaltungsanordnung nach einem der Ansprüche 21-23, wobei der zweite Teil der mehreren Kanäle ferner konfiguriert ist, Zeitstempelinformationen deterministisch zu senden.
  25. Schaltungsanordnung nach einem der Ansprüche 21-24, wobei der zweite Teil der mehreren Kanäle ferner konfiguriert ist, Fehlerbehebungsoperationen zu unterstützen.
DE102020111905.4A 2019-06-12 2020-05-04 Grobkörniges programmierbares routing-netz für logikvorrichtungen Pending DE102020111905A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/439,577 US10587270B2 (en) 2019-06-12 2019-06-12 Coarse-grain programmable routing network for logic devices
US16/439,577 2019-06-12

Publications (1)

Publication Number Publication Date
DE102020111905A1 true DE102020111905A1 (de) 2020-12-17

Family

ID=67985868

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020111905.4A Pending DE102020111905A1 (de) 2019-06-12 2020-05-04 Grobkörniges programmierbares routing-netz für logikvorrichtungen

Country Status (3)

Country Link
US (2) US10587270B2 (de)
CN (1) CN112084729A (de)
DE (1) DE102020111905A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10749528B2 (en) * 2019-08-20 2020-08-18 Intel Corporation Stacked programmable integrated circuitry with smart memory
CN112559117B (zh) * 2019-09-25 2024-06-07 阿里巴巴集团控股有限公司 定时器处理方法、装置、电子设备及计算机存储介质
US11579894B2 (en) * 2020-10-27 2023-02-14 Nokia Solutions And Networks Oy Deterministic dynamic reconfiguration of interconnects within programmable network-based devices
WO2023022919A1 (en) * 2021-08-19 2023-02-23 Tesla, Inc. Globals blocks in replicated block arrays

Family Cites Families (27)

* 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
US5787007A (en) 1996-01-30 1998-07-28 Xilinx, Inc. Structure and method for loading RAM data within a programmable logic device
US6072233A (en) 1998-05-04 2000-06-06 Micron Technology, Inc. Stackable ball grid array package
US6604230B1 (en) 1999-02-09 2003-08-05 The Governing Counsel Of The University Of Toronto Multi-logic device systems having partial crossbar and direct interconnection architectures
US6605962B2 (en) * 2001-05-06 2003-08-12 Altera Corporation PLD architecture for flexible placement of IP function blocks
US6844757B2 (en) * 2002-06-28 2005-01-18 Lattice Semiconductor Corp. Converting bits to vectors in a programmable logic device
US6842034B1 (en) 2003-07-01 2005-01-11 Altera Corporation Selectable dynamic reconfiguration of programmable embedded IP
US7242218B2 (en) 2004-12-02 2007-07-10 Altera Corporation Techniques for combining volatile and non-volatile programmable logic on an integrated circuit
US7536669B1 (en) 2006-08-30 2009-05-19 Xilinx, Inc. Generic DMA IP core interface for FPGA platform design
CN101354694B (zh) 2007-07-26 2010-10-13 上海红神信息技术有限公司 基于mpu架构的超高扩展超级计算系统
US7619441B1 (en) 2008-03-03 2009-11-17 Xilinx, Inc. Apparatus for interconnecting stacked dice on a programmable integrated circuit
US8542032B1 (en) 2012-01-06 2013-09-24 Altera Corporation Integrated circuits with interconnect selection circuitry
US9647668B2 (en) 2012-01-13 2017-05-09 Altera Corporation Apparatus for flexible electronic interfaces and associated methods
US9099999B1 (en) 2012-05-31 2015-08-04 Altera Corporation Adjustable drive strength input-output buffer circuitry
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US9129935B1 (en) 2012-10-05 2015-09-08 Altera Corporation Multi-chip packages with reduced power distribution network noise
US8860460B1 (en) 2012-11-05 2014-10-14 Altera Corporation Programmable integrated circuits with redundant circuitry
US9135185B2 (en) 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9633872B2 (en) * 2013-01-29 2017-04-25 Altera Corporation Integrated circuit package with active interposer
US9106229B1 (en) 2013-03-14 2015-08-11 Altera Corporation Programmable interposer circuitry
US9294092B2 (en) 2013-07-26 2016-03-22 Altera Corporation Error resilient packaged components
US9639646B2 (en) 2014-07-22 2017-05-02 Xilinx, Inc. System-on-chip intellectual property block discovery
GB201414286D0 (en) * 2014-08-12 2014-09-24 Imp Innovations Ltd Reconfigurable integrated circuit with on-chip configuration generation
US9935052B1 (en) 2014-11-26 2018-04-03 Altera Corporation Power line layout in integrated circuits
US9847783B1 (en) 2015-10-13 2017-12-19 Altera Corporation Scalable architecture for IP block integration
US10291397B2 (en) 2016-12-16 2019-05-14 Intel Corporation Active interposer for localized programmable integrated circuit reconfiguration
US11632112B2 (en) 2017-12-27 2023-04-18 Intel Corporation Integrated circuit device with separate die for programmable fabric and programmable fabric support circuitry

Also Published As

Publication number Publication date
CN112084729A (zh) 2020-12-15
US11121715B2 (en) 2021-09-14
US10587270B2 (en) 2020-03-10
US20200395942A1 (en) 2020-12-17
US20190296744A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
DE102020111905A1 (de) Grobkörniges programmierbares routing-netz für logikvorrichtungen
DE4425552C2 (de) Gatterarray
DE69121122T2 (de) Integrierter Schaltkreis
DE69525210T2 (de) Programmierbare logikvorrichtung mit regionaler und universeller signalweglenkung
DE102020108217A1 (de) Die-zu-Die-Verbindungsstruktur für modularisierte integrierte Schaltungsvorrichtungen
DE102019121523A1 (de) Skalierbares netz werk-auf-chip für hochbandbreitenspeicher
DE69304163T2 (de) Programmierbare logische Vorrichtung
DE69933525T2 (de) Architekturen für programmierbare logische Vorrichtungen
DE69924486T2 (de) Spezielle schnittstellenarchitektur für eine hybride schaltung
DE69733931T2 (de) Kreuzvermittlungsschalter und verfahren mit beschränktem spannungshub und blockierungsfreien vermittlungswegen
DE69028395T2 (de) Konfigurierbare zellenanordnung
US7906987B2 (en) Semiconductor integrated circuit, program transformation apparatus, and mapping apparatus
DE10304912A1 (de) Vorrichtung und Verfahren mit generischen Logikblöcken
DE102005051478A1 (de) Flashdatenspeichervorrichtung
DE102020113949A1 (de) Interconnect von Fabric-Die zu Fabric-Die für modularisierte integrierte Schaltungsvorrichtungen
DE102007039763A1 (de) Integrierte Schaltung, Chipstapel und Datenverarbeitungssystem
DE102020104639A1 (de) Regularisierte Hochleistungs-Network-on-Chip-Architektur
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE102006036969A1 (de) Elektronischer Schaltkreis, Wrapper-Schaltkreis, Speichersystem und Koppelverfahren
DE102019112628A1 (de) Dimm für speicherkanal mit hoher bandbreite
DE102020119017A1 (de) Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis
DE69620583T2 (de) Datenübertragungssystem mit einem datenpuffer, der eine baumstruktur von multiplexern aufweist
DE102005005073A1 (de) Rekonfigurierbare Architektur zur parallelen Berechnung beliebiger Algorithmen
CN205068374U (zh) 用于在集成电路设备中处理数据的电路
DE102019112613A1 (de) Dimm mit hoher bandbreite