DE69819046T2 - Verfahren für Entwurf von FPGAs für dynamisch rekonfigurierbares Rechnen - Google Patents
Verfahren für Entwurf von FPGAs für dynamisch rekonfigurierbares Rechnen Download PDFInfo
- Publication number
- DE69819046T2 DE69819046T2 DE69819046T DE69819046T DE69819046T2 DE 69819046 T2 DE69819046 T2 DE 69819046T2 DE 69819046 T DE69819046 T DE 69819046T DE 69819046 T DE69819046 T DE 69819046T DE 69819046 T2 DE69819046 T2 DE 69819046T2
- Authority
- DE
- Germany
- Prior art keywords
- fpga
- logic
- mdrc
- elements
- design
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Description
- HINTERGRUND DER ERFINDUNG
- Bereich der Erfindung
- Die vorliegende Erfindung betrifft allgemein den Bereich frei programmierbarer logischer Anordnungen (FPGAs) und insbesondere ein Verfahren zum Konfigurieren einer FPGA mit einem Host-Prozessor und einem Compiler einer höheren Programmiersprache.
- Beschreibung des technischen Hintergrundes
- In den letzten Jahren bestand zunehmendes Interesse an umkonfigurierbarer logikgestützter Verarbeitung. Diese Systeme arbeiten mit dynamisch umkonfigurierbarer Logik wie z. B. FPGAs, die während des Gebrauchs umkonfiguriert werden kann, um 1 Algorithmen direkt hardwaremäßig zu implementieren, wodurch die Leistung erhöht wird.
- Laut einer Zählung wurden wenigstens 50 verschiedene Hardware-Plattformen (z. B. Computer) zum Untersuchen dieses neuartigen Rechenansatzes gebaut. Leider ist hier die Software hinter der Hardware zurückgeblieben. Die meisten Systeme arbeiten heute mit traditionellen Schaltungsentwurfstechniken, und diese Schaltungen werden dann mittels standardmäßiger Programmiersprachen mit einem Host-Computer verbunden.
- Im Bereich High-Level-Sprachsupport durchgeführte Arbeiten für logikgestütztes umkonfigurierbares Rechnen fallen derzeit in zwei Hauptansatzkategorien. Der erste Ansatz ist, eine traditionelle Programmiersprache anstatt einer Hardware-Beschreibungssprache zu verwenden. Dieser Ansatz erfordert immer noch Software-Support auf dem Host-Prozessor. Der zweite Hauptansatz besteht in der Kompilation standardmäßiger Programmiersprachen zu umkonfigurierbaren Logik-Koprozessoren. Bei diesen Ansätzen wird gewöhnlich versucht, rechenintensive Code-Teile zu erfassen und sie auf den Koprozessor abzubilden. Diese Kompilationstools sind jedoch gewöhnlich an traditionelles Platzieren und Routen von Backends gebunden und haben relativ lange Kompilationszeiten. So offenbart z. B. das Dokument WO-A-94 10627 (GIGA OPERATIONS CORP; TAYLOR BRAD (US); DOWLING ROBERT (US), veröffentlicht am 11. Mai 1994, ein System programmierbarer Logikbauelemente (PLDs) zum Implementieren eines Programms in Hardware, wobei der Host-C-Compiler Host-C-Sourcecode in ablauffähigen binären Host-Code kompiliert, während der separate PLD-C-Sourcecode, der die Platzierungs- und Routinginformationen enthält, mit dem PLD-C-Compiler zu Konfigurationsdaten kompiliert werden muss, die auf einem PLD laufen können. Sie bieten auch wenig oder gar keinen Laufzeit-Support für eine dynamische Umkonfiguration.
- Im Allgemeinen basieren heutige Tools auf statischen Schaltungsdesigntools, die ursprünglich für den Einsatz beim Entwerfen von Leiterplatten und integrierten Schaltungen entwickelt wurden. Das volle Potential von dynamischer Logik wird von solchen statischen Design-Tools nicht unterstützt.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Gemäß der vorliegenden Erfindung wird ein Verfahren zum Konfigurieren einer frei programmierbaren logischen Anordnung (FPGA) (
106 ) zum dynamisch umkonfigurierbaren Rechnen bereitgestellt, wobei das Verfahren die folgenden Schritte umfasst: - a) Programmieren des Host-Prozessors
mit Anweisungen (
201 ) in einer höheren Programmiersprache; - b) Bereitstellen eines Compilers (
203 ) für die höhere Programmiersprache, der auf dem Host-Computer läuft, um ablauffähigen Code (204 ) als Reaktion auf die Anweisungen (201 ) zu erzeugen, wobei der ablauffähige Code (204 ) kompilierte Platzierungs- und Leitweginformationen beinhaltet; und - c) Verbinden des Host-Prozessors mit der FPGA (
106 ) für eine dynamische Umkonfigurationsprogrammierung der FPGA (106 ) durch den Host-Prozessor über den ablauffähigen Code (204 ). - Die höhere Programmiersprache kann Java sein. Die Erfindung kann den weiteren Schritt des Instanziierens von Elementen von einer Bibliothek von Elementen umfassen, die mit dem Compiler kompatibel sind. Die Bibliothek kann kombinatorische Logikelemente oder Flipflops oder Latch-Elemente umfassen.
- Das erfindungsgemäße Entwurfsverfahren für umkonfigurierbares Rechnen (MDRC) bedeutet einen neuartigen Ansatz für ein Hardware/Software-Co-Design für umkonfigurierbare logikgestützte Koprozessoren. Es können ein System und ein Verfahren zum Konfigurieren einer FPGA direkt von einem Host-Prozessor bereitgestellt werden. Es ist nicht notwendig, die Konfigurationsdaten in einer Datei zu speichern, obwohl sie bei Bedarf dort gespeichert werden können.
- Daher ist dieses Verfahren besonders für den Einsatz mit FPGAs wie umkonfigurierbare Koprozessoren geeignet, die häufig "im Vorbeigehen" umkonfiguriert werden, d. h. ohne die FPGA zu überwältigen, und zuweilen während nur ein Teil der FPGA umkonfiguriert wird. Die gewünschte Funktionalität für die FPGA wird unter Verwendung der MDRC-Bibliotheken und einer standardmäßigen höheren Progranmiersprache wie JavaTM (Java ist ein Warenzeichnen von Sun Microsystems, Inc.) beschrieben. Konfiguration, Umkonfiguration und Host-Schnittstellensoftware für umkonfigurierbare Koprozessoren werden in einem einzigen Code-Teil unterstützt.
- Da MDRC nicht von dem traditionellem Platzierungs- und Leitwegansatz der Schaltungssynthese Gebrauch macht, sind die Kompilationszeiten erheblich kürzer als bei Verfahren des Standes der Technik und liegen in der Größenordnung von Sekunden. Diese schnelle Kompilation ergibt eine Entwicklungsumgebung, die der für eine moderne Software-Entwicklung verwendeten ähnlich ist.
- MDRC bietet eine einfache Alternative zu einem Design auf der Basis eines traditionellen Computer Aided Design (CAD) Tools. In der bevorzugten Ausgestaltung werden Java-Bibliotheken zum Programmieren eines FPGA-Bauelementes verwendet. Dieses Verfahren hat die folgenden Vorteile:
- Sehr schnelle Kompilationszeiten. Da bei diesem Ansatz Compiler mit standardmäßiger Programmiersprache verwendet werden, ist die Kompilation so schnell wie beim systemorientierten Host-Compiler. Mit derzeitigen Java-Compilern wie dem J++ 1.1 Compiler von Microsoft, der über 10.000 Zeilen Code pro Sekunde kompiliert, erfordert die Kompilation von Schaltungen, die unter Verwendung von MDRC erstellt werden, insgesamt etwa eine Sekunde. Dies steht im Gegensatz zu einem Zeitaufwand von Stunden bei existierenden CAD-Tools.
- Laufzeitparameterisierung von Schaltungen. Vielleicht das interessanteste Merkmal von MDRC ist seine Fähigkeit, Laufzeitparameterisierung von Schaltungen durchzuführen. So kann z. B. ein Konstantenaddierer unter Verwendung eines nur zur Laufzeit bekannten konstanten Wertes während der Ausführung von MDRC konfiguriert werden. Die Größe einer bestimmten Komponente kann ebenfalls dynamisch vorgegeben werden. Ein 5-Bit-Addierer oder ein 9-Bit-Zähler kann beispielsweise zur Laufzeit konfiguriert werden. Dieses Merkmal wird in Bereichen wie adaptive Filterung eingesetzt.
- Objektorientiertes Hardware-Design. Da Java eine objektorientierte Sprache ist (d. h. eine strukturierte Sprache, in der Elemente im Sinne von Objekten und den Verbindungen zwischen diesen Objekten beschrieben werden), kann in dieser Sprache konstruierte Hardware objektorientierten Support nutzen. Mit MDRC konstruierte Bibliotheken können als Objekte verpackt und wie jede standardmäßige Software-Komponente manipuliert und wiederverwendet werden.
- Unterstützung für dynamische Umkonfiguration. Die Fähigkeit, eine Schaltung automatisch dynamisch zu konfigurieren, bringt die Möglichkeit einer dynamischen Umkonfiguration mit sich. Verwendungszwecke für diese Fähigkeit sind bereits im Kommen. So könnte man z. B. einen Teil einer dynamisch umkonfigurierbaren FPGA als Vervielfacher konfigurieren, der einen Eingangswert mit einer Konstante vervielfacht, wobei die Konstante ein Skalierungsfaktor in einer Signalverarbeitungsanwendung ist. Mit dynamischer Umkonfiguration kann dieser Skalierungsfaktor verändert werden, ohne die Funktion anderer Teile der konfigurierten FPGA zu unterbrechen.
- Standardmäßige Software-Entwicklungsumgebung. Mit einer standardmäßigen Programmiersprache (in diesem Fall Java) können Schaltungsentwickler standardmäßige Software-Umgebungen verwenden. Mit anderen Worten, im Handel leicht erhältliche Compiler wie der J++ 1.1 Compiler von Microsoft könnten für die Entwicklung von Schaltungen verwendet werden, die in einer FPGA implementiert werden sollen. Diese Fähigkeit hat zwei unmittelbare Vorteile. Erstens, der Benutzer kann das Tool weiter verwenden, mit dem er/sie bereits vertraut ist. Zweitens, und das ist möglicherweise am wichtigsten, FPGA-Design wird zu einem Software-Entwicklungsbemühen, das für Programmierer offen ist. Diese Fähigkeit könnte die existierende Basis von FPGA-Benutzern stark erweitern.
- Vereinfachtes Host-Interfacing. MDRC verlangt, dass ein Host-Prozessor für die Ausführung des Java-Codes und die Lieferung von Konfigurationsdaten zur FPGA zur Verfügung steht. Diese Kombination aus Prozessor und FPGA ist eine leistungsstarke Coprocessing-Umgebung, die derzeit von Forschern untersucht wird. Ein Hindernis für die Verwendung dieser Systeme ist die Notwendigkeit, das FPGA-Hardware-Design mit dem Host-Software-Design zu verbinden. MDRC führt Software- und Hardware-Design-Aktivitäten zu einer einzigen Aktivität zusammen, so dass diese Schnittstellenprobleme wegfallen.
- Flexibilität. Da MDRC eine Bibliothek umfasst, die von einer standardmäßigen Programmiersprache verwendet wird, kann sie – sogar von Benutzern – erweitert werden. Diese Fähigkeit bietet ein Niveau an Flexibilität, das es in statischen Design-Tools bisher nicht gab. Benutzer können neue Bibliotheken und Bibliothekselemente oder sogar Zubehör wie kundenspezifische grafische Benutzeroberflächen bereitstellen.
- Standardmäßige Bauelementschnittstelle. Eine Art, sich MDRC vorzustellen, ist nicht so sehr als Tool an sich, sondern als Standardschnittstelle zum FPGA-Bauelement. Diese Schnittstelle kann für die FPGA-Konfiguration oder auch zum Schaffen anderer Tools verwendet werden. MDRC kann sogar als Basis für traditionelle CAD-Software wie Platzierungs- und Leitwegtools benutzt werden. Eine andere Art, sich MDRC vorzustellen, ist als "Assembler-Sprache" der FPGA.
- Garantiert "sichere" Schaltungen. MDRC bietet eine Abstraktion (ein Software-Konstrukt, das Hardware – häufig vereinfacht – darstellt), mit der keine Schaltungen mit Konkurrenzproblemen erzeugt werden können. So wird es bei Verwendung von MDRC unmöglich, dass das Bauelement aufgrund einer schlechten Konfiguration aus Versehen beschädigt oder zerstört wird. Ein solcher Schutz ist in einer dynamischen Programmierumgebung wie MDRC äußerst wünschenswert, wo ein Programmierfehler sonst zu dauerhaften Hardwareschäden führen könnte. (Eine falsch konfigurierte FPGA kann zu einem versehentlichen Kurzschluss von Leistung und Masse führen, wodurch das Bauelement zerstört wird.) Ein Nebeneffekt dieses Merkmals ist, dass MDRC als Implementationsvehikel für das in der Entstehung befindliche Feld genetischer Algorithmen verwendet werden kann.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die oben genannten Aufgaben und Vorteile sowie weitere Aufgaben und Vorteile der vorliegenden Erfindung werden nach einem Studium der folgenden ausführlichen Beschreibung einer bevorzugten Ausgestaltung in Verbindung mit den nachfolgenden Zeichnungen besser verständlich.
-
1 ist ein Blockdiagramm, das den Designablauf des Standes der Technik zum Konstruieren einer Schaltung illustriert, die in einer FPGA mit einem umkonfigurierbaren Logik-Koprozessor implementiert wird. -
2 ist ein Blockdiagramm, das den Designablauf in der vorliegenden Erfindung illustriert. -
3 ist ein Diagramm einer Logikzellenabstraktion der vorliegenden Erfindung auf Level1 . -
3A ist ein Diagramm einer XC6200 Logikzelle, die durch die Abstraktion von3 repräsentiert wird. -
4 ist ein Diagramm eines Mehrbit-Zählers gemäß einer Ausgestaltung der Erfindung. -
5 ist eine Elementdefinitionscodeliste für die Grundelemente der Ausgestaltung von4 . -
6A ist ein Diagramm einer Toggle-Flipflopzelle der Ausgestaltung von4 . -
6B ist ein Diagramm einer Übertragslogikzelle der Ausgestaltung von4 . -
7 ist eine Konfigurationscodeliste für den Zähler von4 . -
8A ist Laufzeitcode für den Zähler von4 . -
8B ist eine Ausführungskurve für den Zähler von4 . - AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
- Das Entwerfen einer in einer FPGA implementierten Schaltung mit einem umkonfigurierbaren Logik-Koprozessor erfordert derzeit eine Kombination von zwei verschiedenen Entwurfswegen, wie in
1 (Stand der Technik) dargestellt ist. Der erste und möglicherweise signifikanteste Teil der Arbeit beinhaltet das Schaltungsdesign mit traditionellen CAD-Tools. Der Entwurfweg für diese CAD-Tools beinhaltet gewöhnlich die Eingabe eines Designs101 mit einem Schema-Editor oder einer Hardware-Beschreibungssprache (HDL), die Verwendung eines Netlisters102 zum Erzeugen einer Netzliste103 für das Design, das Importieren dieser Netzliste in ein FPGA-Platzierungs- und -Routingtool104 , das schließlich eine Bitstream-Datei105 von Konfigurationsdaten erzeugt, die zum Konfigurieren der FPGA106 verwendet wird. - Nach dem Erzeugen der Konfigurationsdaten besteht die nächste Aufgabe darin, Software bereitzustellen, die den Host-Prozessor mit der FPGA verbindet. Der Benutzer gibt den Benutzercode
107 ein, der die Benutzeroberflächenanweisungen beschreibt und der dann mit dem Compiler108 zum Erzeugen von ablauffähigem Code109 kompiliert wird. Die Anweisungen in ablauffähigem Code109 werden dann vom Prozessor für die Kommunikation mit der konfigurierten FPGA106 verwendet. Es ist auch bekannt, ablauffähigen Code109 zu verwenden, um die Konfiguration von FPGA106 mit der Bitstream-Datei105 zu steuern. Diese Serie von Aufgaben wird gewöhnlich vollständig von der Aufgabe des Entwerfens der Schaltung abgekoppelt und kann somit schwierig und fehleranfällig sein. - Zusätzlich zu den Problemen in Verbindung mit dem Interfacing von Hardware und Software in dieser Umgebung besteht auch das Problem der Design-Zykluszeit. Jede Änderung des Schaltungsentwurfs erfordert einen kompletten Durchgang durch die Hardware-Designtool-Kette (
101 –106 in1 ). Dieser Vorgang ist zeitaufwändig, und der Platzierungs- und Routingteil der Kette braucht gewöhnlich mehrere Stunden. - Schließlich unterstützt dieser Ansatz keine Umkonfiguration. Die traditionellen Hardware-Designtools bieten Unterstützung fast ausschließlich für statisches Design. Man kann sich nur schwer Konstrukte vorzustellen, die Laufzeitumkonfiguration in Umgebungen auf der Basis einer schematischen oder HDL-Design-Eingabe unterstützen.
- Im Gegensatz dazu umfasst die MDRC-Umgebung eine Bibliothek von Elementen, mit denen Logik und Routing in einem umkonfigurierbaren Logikbauelement vorgegeben und konfiguriert werden können. Mittels Aufrufen an diese Bibliothekselemente können Schaltungen konfiguriert und umkonfiguriert werden. Ferner kann Host-Code so geschrieben werden, dass er mit der umkonfigurierbaren Hardware interagiert. Dadurch können sich alle Designdaten in einem einzelnen System befinden, häufig in einer einzigen Java-Quellcode-Datei.
- Der MDRC-Ansatz vereinfacht nicht nur den Designablauf sehr stark, wie in
2 gezeigt ist, sondern verbindet auch die Hardware- und Software-Entwurfsprozesse eng miteinander. Design-Parameter für die umkonfigurierbare Hardware und die Host-Software werden gemeinsam genutzt. Diese Kopplung bietet eine bessere Unterstützung für die Aufgabe des Verbindens der Logikschaltungen mit der Software. - Wie in
2 gezeigt, erfordert das Eingeben und Kompilieren einer FPGA-Schaltung mit dem MDRC-Verfahren viel weniger Schritte als im Verfahren des Standes der Technik gemäß1 . Benutzercode201 , in dieser Ausgestaltung Java-Code, wird eingegeben. Dieser Code beinhaltet nicht nur Anweisungen, die die Benutzeroberfläche und den Konfigurationsprozess beschreiben, sondern auch eine High-Level-Beschreibung der gewünschten FPGA-Schaltung. Diese Schaltungsbeschreibung umfasst Aufrufe an Bibliothekselemente (Funktionsaufrufe) in MDRC-Bibliotheken202 . In einer Ausgestaltung können diese Zellen parameterisiert werden. Der Java-Compiler203 kombiniert die Schaltungsbeschreibungen von MDRC-Bibliotheken202 mit den Anweisungen vom Benutzercode201 zum Erzeugen von ablauffähigem Code204 . Ablauffähiger Code204 beinhaltet nicht nur Benutzeroberflächenanweisungen, wie im ablauffähige Code109 von1 , sondern Konfigurationsanweisungen. Bei Verwendung von MDRC braucht der Bitstream nicht als Datei gespeichert zu werden; falls gewünscht, können die Konfigurationsdaten direkt von ablauffähigem Code204 auf die FPGA106 heruntergeladen werden. Diese Technik ist besonders beim umkonfigurierbaren Rechnen nützlich, d. h. bei Verwendung einer umkonfigurierbaren FPGA als Koprozessor zum Durchführen einer Reihe verschiedener Rechnungen für einen Mikroprozessor. - Die MDRC-Abstraktion
- MDRC repräsentiert die umkonfigurierbare Logik in einem mehrschichtigen Ansatz. In der untersten (ausführlichsten) Schicht, Level 0 genannt, unterstützt MDRC alle zugängigen Hardware-Ressourcen in der umkonfigurierbaren Logik. Eine umfangreiche Verwendung von Konstanten und anderen symbolischen Daten macht Level 0 trotz der notwendigerweise niedrigen Abstraktionsebene benutzbar.
- Die derzeitige Plattform für die MDRC-Umgebung ist das von Xilinx, Inc., der Zessionarin der vorliegenden Erfindung, hergestellte Entwicklungssystem XC6200DS. Das Entwicklungssystem XC6200DS umfasst eine PCI-Platte mit einer Xilinx XC6216 FPGA. In der FPGA-Familie XC6200 umfasst Level 0 Support Abstraktionen für die umkonfigurierbaren Logikzellen und alle Routing-Schalter einschließlich Taktrouting. Der Code für Level 0 ist im Wesentlichen die Bit-Level-Information in dem in Java codierten XC6200 Data Sheet (das "XC6200 Data Sheet", auf das hierin verwiesen wird, umfasst Seiten 4–251 bis 4–286 des Xilinx 1996 Data Book mit dem Titel "The Programmable Logic Data Book", herausgegeben im September 1996, erhältlich von Xilinx, Inc., 2100 Logic Drive, San Jose, Kalifornien 95124 (Xilinx Inc., Inhaber der Urheberrechte, hat keine Einwände gegen ein Kopieren dieser und anderer Seiten, auf die hierin verwiesen wird, behält sich aber ansonsten alle Urheberrechte vor).
- Level 0 unterstützt zwar im vollen Umfang das Konfigurieren aller Aspekte des Bauelementes, aber sie ist doch sehr tief, ist möglicherweise zu aufwändig und verlangt für die meisten Benutzer zuviel Spezialkenntnis über die Architektur. Diese Schicht steht zwar dem Programmierer immer zur Verfügung, aber es wird erwartet, dass Level 0 Support hauptsächlich als Basis für die höheren Abstraktionsschichten dient. In diesem Sinn ist Level 0 die "Assembler-Sprache" des MDRC-Systems.
- Über Abstraktionslevel 0 liegt Abstraktionslevel 1. Diese Abstraktionsebene vereinfacht den Zugang zu Logikdefinition, Takt- und Lösch-Routing und die Host-Schnittstelle.
- Der signifikanteste Teil von Abstraktionslevel 1 ist die Logikzellendefinition. Mit der Logikzellendefinition kann eine Logikzelle im XC6200-Bauelement zu einem standardmäßigen Logik-Operator konfiguriert werden. In einer Ausgestaltung werden die kombinatorischen Logikelemente AND, NAND, OR, NOR, XOR, XNOR, BUFFER und INVERTER unterstützt. Diese Elemente können einen optionalen registrierten Ausgang haben. Zusätzlich werden ein D-Flipflop und eine Registerlogikzelle definiert. In einer Ausgestaltung wird eine Latch-Zelle anstatt oder zusätzlich zu dem Flipflop-Element definiert. Alle diese Logik-Operatoren werden ausschließlich mit MDRC-Operationen auf Level 0 definiert und lassen sich somit leicht erweitern.
-
3 ist ein Diagramm der Logikzellenabstraktion auf Level 1. Ausgänge Nout, Eout, Sout, Wout entsprechen den gleichnamigen Ausgängen in der XC6200-Logikzelle, wie auf Seite 4–256 des XC6200 Data Sheet abgebildet ist. Die XC6200-Logikzelle ist auch in3A hierin dargestellt. Eingang Sin von3 entspricht Eingang S der Logikzelle von3A , Eingang Win entspricht Eingang W, Nin entspricht N und Ein entspricht E. Das in3 gezeigte Abstraktionslevel 1 ist eine vereinfachte Darstellung des XC6200-Logikblocks. In dieser Ausgestaltung gibt es z. B. für Eingänge S4, W4, N4 und E4 auf Abstraktionslevel 1 keinen Support, auf Abstraktionslevel0 aber schon. Der in3 gezeigte Logikblock und der Flipflop bedeuten die Schaltungen, die in einer XC6200-Logikzelle zur Verfügung stehen. Eingänge A, B und SEL in3 (entsprechend Eingängen X1, X2 und X3 von3A ) sind die Eingänge zum Logikblock; sie können auf beliebige Logikzelleneingänge Sin, Win, Nin und Ein abgebildet werden. Die in einer Logikzelle verfügbaren Schaltungen sind in anderen FPGA-Bauelementen anders. - Zusätzlich zur Logikzellenabstraktion wird das Takt-Routing abstrahiert. Verschiedene globale und lokale Taktsignale (wie z. B. Clk und Clr in
3 ) können definiert und mit einer bestimmten Logikzelle assoziiert werden. - Ein dritter Teil der MDRC-Abstraktion auf Level 1 ist die Registerschnittstelle. Im XC6200-Bauelement können Spalten von Zellen über die Busschnittstelle gelesen oder geschrieben werden, wobei die Spalten von Zellen somit Lese-/Schreibregister bilden. Die Registerschnittstelle erlaubt eine(n) symbolische(n) Konstruktion der und Zugriff auf die Register.
- Ein Beispiel
-
4 zeigt einen einfachen Zähler, der für ein XC6200-Bauelement entworfen wurde, auf der Basis von Toggle-Flipflops402 sowie Übertragslogik401 mit Abstraktionslevel 1. In weniger als 30 Zeilen Code wird die Schaltung beschrieben und konfiguriert und der Zählerwert wird getaktet und gelesen. Zusätzlich erlaubt die Struktur dieser Schaltung eine einfache Verpackung als parameterisiertes Objekt, wobei die Zahl der Bits in dem Zähler über einen anwenderdefinierten Parameter eingestellt wird. Ein solcher objektgestützter Ansatz würde es zulassen, dass Zähler beliebiger Größe vorgegeben und an einer beliebigen Stelle im XC6200-Bauelement platziert werden. Nach der Implementation könnte auch der Zähler von4 in einer Bibliothek von parameterisierten Makrozellen platziert werden. - Der Implementationsprozess ist recht einfach. Zunächst werden die von der Schaltung benötigten Logikelemente definiert. Diese Schaltungselementdefinitionen sind Abstraktionen und sind nicht mit einer bestimmten Hardware-Implementation assoziiert. Nach dem Definieren dieser Logikelemente können sie auf die Hardware geschrieben werden, wodurch die Schaltung konfiguriert wird. Nach dem Konfigurieren der Schaltung erfolgt ein Laufzeit-Interfacing der Schaltung, gewöhnlich in der Form des Lesens und Schreibens von Registern und des Taktens der Schaltung. Wenn es die Anwendung erfordert, kann der Prozess wiederholt werden, wobei die Hardware nach Bedarf umkonfiguriert wird.
- Das Zählerbeispiel enthält neun Grundelemente. Fünf Grundelemente stellen den gesamten notwendigen Unterstützungsschaltkomplex zum Lesen, Schreiben, Takten und Löschen der Hardware bereit. Die übrigen Grundelemente dienen zum Definieren der Zählerschaltung selbst. Diese Elemente sieht man am besten, wenn man
5 in Verbindung mit4 betrachtet.5 führt den MDRC-Code zum Beschreiben der Grundelemente auf. Das zu jeder der beiden Registerdefinitionen geleitete pci6200-Objekt ist die Hardware-Schnittstelle zur XC6200DS PCI-Karte. - Der Unterstützungsschaltkomplex enthält zwei Register, die einfach die Schaltung mit der Host-Software verbinden. Diese beiden Register dienen zum Lesen des Wertes des Zählers ("Register counterReg" in
5 ) und zum Umschalten eines einzigen Flipflops404 , so dass der lokale Takt erzeugt wird ("Register clockReg" in5 ). Um die Flipflops im XC6200-Bauelement zu unterstützen, müssen auch Takt- und Lösch- (Reset) Eingänge definiert werden. Der globale Takt ("ClockMux globalClock" in5 ) ist der Systemtakt für das Bauelement und muss als Takteingang zu einem beschreibbaren Register verwendet werden. In dieser Schaltung muss der Flipflop, der den Software-gesteuerten lokalen Takt erzeugt, den globalen Takt verwenden. Der lokale Takt ("ClockMux localClock" in5 ) ist der Ausgang des Software-gesteuerten Taktgebers und muss zu den Toggle-Flipflops geleitet werden, die den Zähler bilden. Schließlich benötigen alle Flipflops in dem XC6200-Bauelement einen Löscheingang ("ClearMux clear" in5 ). In dieser Ausgestaltung wird der Löscheingang zu allen Flipflops einfach auf logisch null(GND) gesetzt. - Das erste Logikelement in der Zählerschaltung ist der Taktgeber ("Logic clock" in
5 ). Dieses Element ist einfach ein Ein-Bit-Register404 (4 ), auf das mit Software geschrieben werden kann. Das Umschalten von Register404 per Software-Steuerung ergibt den Takt Local clock für die Zählerschaltung. Das nächste Zählerschaltungselement ist ein Toggle-Flipflop wie z. B. der Flipflop402 ("Logic tff" in5 ). Dieser Flipflop ist so definiert, dass er einen von Westen kommenden Eingang hat. (Laut Standardnomenklatur im XC6200 Data Sheet bedeuten die Bezeichnungen Logic.EAST und Ein ein nach Osten gehendes Signal, d. h. ein Signal, das von Westen kommt.) Das Toggle-Flipflop-Element bildet den Zustandsspeicher für den Zähler. Als Nächstes ist das Übertrags-Logikelement401 für den Zähler ("Logic carry" in5 ) einfach ein AND-Gate mit Eingängen von der Übertragslogik der vorherigen Stufe und dem Ausgang des Toggle-Flipflop der aktuellen Stufe. Das Übertragselement erzeugt das "Toggle"-Signal für die nächste Stufe des Zählers. Die6A und6B stellen jeweils die Flipflop- bzw. Übertragslogikzelle in einem XC6200-Bauelement grafisch dar. Schließlich wird eine Logisch-"Eins" oder VCC-Zelle ("Logic one" in5 , Block403 in4 ) für den Übertragseingang zur ersten Stufe des Zählers implementiert. - Nach dem Definieren dieser Sammlung von abstrakten Elementen können diese an einer beliebigen Stelle in der XC6200-Zellenarray instanziiert werden. Diese Instanziierung erfolgt dadurch, dass ein Ruf an die mit jedem Objekt assoziierte write() Funktion erfolgt. Diese Funktion nimmt einen Spalten- und Reihenparameter, der die Zelle in dem zu konfigurierenden XC6200-Bauelement definiert. Zusätzlich wird das Hardware-Schnittstellenobjekt als Parameter geleitet. In diesem Fall erfolgt die gesamte Konfiguration zu pci6200, einer einzelnen XC6200DS PCI-Karte.
- Ein Beispiel für diese Instanziierung ist in
7 dargestellt, wo die Elemente für den Zähler von4 instanziiert werden. Der Code in7 führt die gesamte notwendige Konfiguration durch. In der for() Schleife befinden sich die Übertragszellen (401 in4 ) in einer Spalte mit den Toggle-Flipflops tff (402 in4 ) in der nächsten Spalte. Ein lokales Takt- und ein Löschsignal hängen an jedem Toggle-Flipflop tff an. Der relative Ort dieser Zellen ist in4 dargestellt. - Unter der for( ) Schleife wird eine Konstante "1" als Eingang zur Übertragskette (
403 in4 ) gesetzt. Als Nächstes wird der Software-gesteuerte Taktgeber (Local_clock in4 ) konfiguriert. Dies ist das Taktobjekt, bei dem das localClock-Routing an die Toggle-Flipflops tff des Zählers angehängt ist. Schließlich wird der globale Takt zum Synchronisieren des Software-gesteuerten lokalen Taktgebers verwendet. In einigen Ausgestaltungen werden die Takt- und Lösch-Grundelemente nicht benötigt; in dieser Ausgestaltung ist ihre Anwesenheit zum Unterstützen der XC6200-Architektur notwendig. - Nach dem Konfigurieren der Schaltung ist es eine einfache Sache, die Register-Objekte jeweils über die Funktionen get() bzw. set() zu lesen und zu schreiben. In
8A wird der Takt durch abwechselndes Schreiben von "0" und "1" auf das Taktregister (404 in -
4 ) umgeschaltet. Das Zählerregister (nicht dargestellt) dient zum Lesen des Wertes des Zählers (Ausgänge COUNT[0], COUNT[1], COUNT[2], usw.).8B zeigt den Ablauf der Ausführung dieses Codes, der auf dem XC6200DS-Entwicklungssystem läuft. - Schlussfolgerungen
- Dies ist zwar nur ein einfaches Beispiel für Demonstrationszwecke, aber es werden darin alle MDRC-Merkmale genutzt. Diese Merkmale beinhalten Registerlese- und – schreibvorgänge sowie Merkmale wie Software-gesteuertes lokales Takten. Weitere komplexere Schaltungen wurden ebenfalls mit MDRC entwickelt. Komplexere Schaltungen werden mit denselben Grundmerkmalen aufgebaut; der Hauptunterschied besteht in der Größe des Codes.
- MDRC bietet ein einfaches, schnelles, integriertes Tool für eine umkonfigurierbare logikgestützte Verarbeitung. MDRC ist derzeit ein manuelles Tool, da der Programmierer Platzierung und Routing von Schaltungen für umkonfigurierbares Rechnen streng kontrollieren sollte. MDRC bietet jedoch sehr schnelle Kompilationszeiten im Austausch für den manuellen Design-Stil. Die zum Erzeugen dieser Schaltungen und des Laufzeit-Supportcode notwendigen Kompilationszeiten liegen in der Größenordnung von Sekunden, viele Größenordnungen schneller als die Design-Zykluszeit herkömmlicher CAD-Tools. Diese ungewöhnliche Geschwindigkeit lässt eine Entwicklung in einer Umgebung zu, die einer modernen integrierten Software-Entwicklungsumgebung ähnlich ist. Darüber hinaus lässt die objektorientierte Natur von Java die Erstellung von Bibliotheken von parameterisierten Zellen zu. Dieses Merkmal könnte die Produktivität von MDRC-Benutzern stark erhöhen.
- MDRC kann als Basis für ein traditionelles grafisches CAD-Tool verwendet werden. Dieser Ansatz wäre zum Produzieren von statischen Schaltungen nützlich. Der obige Text beschreibt MDRC im Zusammenhang mit FPGAs, die für dynamisch umkonfigurierbares Rechnen verwendet werden, wie z. B. die FPGA-Familie Xilinx XC6200. Die Erfindung kann jedoch auch auf andere FPGAs und andere mit Software programmierbare ICs angewendet werden, die nicht für dynamisch umkonfigurierbares Rechnen verwendet werden.
- Für Fachpersonen in den jeweiligen Bereichen der Erfindung werden verschiedene Modifikationen und Zusätze offensichtlich sein, die sich aus der vorliegenden Offenbarung ergeben. Demgemäß werden alle solche Modifikationen und Zusätze als in den Umfang der Erfindung fallend angesehen.
Claims (6)
- Verfahren zum Konfigurieren einer frei programmierbaren logischen Anordnung FPGA (
106 ) zum dynamisch umkonfigurierbaren Rechnen, wobei das Verfahren die folgenden Schritte umfasst: a) Programmieren des Host-Prozessors mit Anweisungen (201 ) in einer höheren Programmiersprache; b) Bereitstellen eines Compilers (203 ) für die höhere Programmiersprache, der auf dem Host-Prozessor läuft, um ablauffähigen Code (204 ) als Reaktion auf die Anweisungen (201 ) zu erzeugen, wobei der ablauffähige Code (204 ) kompilierte Platzierungs- und Leitweginformationen beinhaltet; und c) Verbinden des Host-Prozessors mit der FPGA (106 ) für eine dynamische Umkonfigurationsprogrammierung der FPGA (106 ) durch den Host-Prozessor über den ablauffähigen Code (204 ). - Verfahren nach Anspruch 1, bei dem die höhere Programmiersprache Java ist.
- Verfahren nach Anspruch 1 oder 2, ferner umfassend den folgenden Schritt: d) Instanziieren von Elementen von einer Bibliothek (
202 ) von Elementen, die mit dem Compiler (203 ) kompatibel sind. - Verfahren nach Anspruch 3, bei dem die Bibliothek (
202 ) kombinatorische Logikelemente (401 ) umfasst. - Verfahren nach Anspruch 3, bei dem die Bibliothek (
202 ) Flipflop-Elemente (402 ,404 ) umfasst. - Verfahren nach Anspruch 3, bei dem die Bibliothek (
202 ) Latch-Elemente (401 ) umfasst.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US919531 | 1997-08-28 | ||
US08/919,531 US6078736A (en) | 1997-08-28 | 1997-08-28 | Method of designing FPGAs for dynamically reconfigurable computing |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69819046D1 DE69819046D1 (de) | 2003-11-20 |
DE69819046T2 true DE69819046T2 (de) | 2004-07-22 |
Family
ID=25442262
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69805811T Expired - Lifetime DE69805811T2 (de) | 1997-08-28 | 1998-08-07 | Verfahren zum entwurf von fpgas zur dynamischen reconfigurierbaren rechnung |
DE69819046T Expired - Lifetime DE69819046T2 (de) | 1997-08-28 | 1998-08-07 | Verfahren für Entwurf von FPGAs für dynamisch rekonfigurierbares Rechnen |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69805811T Expired - Lifetime DE69805811T2 (de) | 1997-08-28 | 1998-08-07 | Verfahren zum entwurf von fpgas zur dynamischen reconfigurierbaren rechnung |
Country Status (5)
Country | Link |
---|---|
US (3) | US6078736A (de) |
EP (2) | EP1008069B1 (de) |
JP (1) | JP4481487B2 (de) |
DE (2) | DE69805811T2 (de) |
WO (1) | WO1999012111A1 (de) |
Families Citing this family (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US6330659B1 (en) | 1997-11-06 | 2001-12-11 | Iready Corporation | Hardware accelerator for an object-oriented programming language |
US5966534A (en) * | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US6078736A (en) * | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US8686549B2 (en) * | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US7003593B2 (en) * | 1997-12-17 | 2006-02-21 | Src Computers, Inc. | Computer system architecture and memory controller for close-coupling within a hybrid processing system utilizing an adaptive processor interface port |
FR2772944A1 (fr) * | 1997-12-19 | 1999-06-25 | Sgs Thomson Microelectronics | Procede de gestion d'un circuit electronique et unite de gestion pour sa mise en oeuvre |
US8489860B1 (en) * | 1997-12-22 | 2013-07-16 | Texas Instruments Incorporated | Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6237129B1 (en) | 1998-03-27 | 2001-05-22 | Xilinx, Inc. | Method for constraining circuit element positions in structured layouts |
US6430732B1 (en) | 1998-03-27 | 2002-08-06 | Xilinx, Inc. | Method for structured layout in a hardware description language |
US6243851B1 (en) | 1998-03-27 | 2001-06-05 | Xilinx, Inc. | Heterogeneous method for determining module placement in FPGAs |
US6292925B1 (en) | 1998-03-27 | 2001-09-18 | Xilinx, Inc. | Context-sensitive self implementing modules |
US6216258B1 (en) | 1998-03-27 | 2001-04-10 | Xilinx, Inc. | FPGA modules parameterized by expressions |
US6260182B1 (en) | 1998-03-27 | 2001-07-10 | Xilinx, Inc. | Method for specifying routing in a logic module by direct module communication |
US6195774B1 (en) * | 1998-08-13 | 2001-02-27 | Xilinx, Inc. | Boundary-scan method using object-oriented programming language |
US6182183B1 (en) | 1998-11-13 | 2001-01-30 | Sonics, Inc. | Communications system and method with multilevel connection identification |
TW476069B (en) * | 1998-11-20 | 2002-02-11 | Via Tech Inc | Placement and routing for array device |
US6357037B1 (en) * | 1999-01-14 | 2002-03-12 | Xilinx, Inc. | Methods to securely configure an FPGA to accept selected macros |
US6430736B1 (en) | 1999-02-26 | 2002-08-06 | Xilinx, Inc. | Method and apparatus for evolving configuration bitstreams |
US6363517B1 (en) * | 1999-02-26 | 2002-03-26 | Xilinx, Inc. | Method and apparatus for remotely evolving configuration bitstreams |
US6378122B1 (en) | 1999-02-26 | 2002-04-23 | Xilinx, Inc. | Method and apparatus for evolving a plurality of versions of a configuration bitstream in parallel |
US6363519B1 (en) * | 1999-02-26 | 2002-03-26 | Xilinx, Inc. | Method and apparatus for testing evolvable configuration bitstreams |
US6539532B1 (en) | 1999-02-26 | 2003-03-25 | Xilinx, Inc. | Method and apparatus for relocating elements in an evolvable configuration bitstream |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
US8135842B1 (en) | 1999-08-16 | 2012-03-13 | Nvidia Corporation | Internet jack |
US7185293B1 (en) | 1999-11-29 | 2007-02-27 | Cellot, Inc. | Universal hardware device and method and tools for use therewith |
US6496971B1 (en) * | 2000-02-07 | 2002-12-17 | Xilinx, Inc. | Supporting multiple FPGA configuration modes using dedicated on-chip processor |
US6487709B1 (en) * | 2000-02-09 | 2002-11-26 | Xilinx, Inc. | Run-time routing for programmable logic devices |
US6763327B1 (en) * | 2000-02-17 | 2004-07-13 | Tensilica, Inc. | Abstraction of configurable processor functionality for operating systems portability |
US7036106B1 (en) * | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6453456B1 (en) * | 2000-03-22 | 2002-09-17 | Xilinx, Inc. | System and method for interactive implementation and testing of logic cores on a programmable logic device |
US6725441B1 (en) * | 2000-03-22 | 2004-04-20 | Xilinx, Inc. | Method and apparatus for defining and modifying connections between logic cores implemented on programmable logic devices |
US6810432B1 (en) * | 2000-04-03 | 2004-10-26 | Hewlett-Packard Development Company, L.P. | Method for guaranteeing a device minimun bandwidth on a usb bus |
WO2001090887A1 (fr) * | 2000-05-25 | 2001-11-29 | Fujitsu Limited | Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement |
US6581186B1 (en) * | 2000-05-31 | 2003-06-17 | Xilinx, Inc. | Methods and systems for providing logic cores from third party logic core providers |
EP2226732A3 (de) | 2000-06-13 | 2016-04-06 | PACT XPP Technologies AG | Cachehierarchie für einen Multicore-Prozessor |
US7013482B1 (en) * | 2000-07-07 | 2006-03-14 | 802 Systems Llc | Methods for packet filtering including packet invalidation if packet validity determination not timely made |
US7031267B2 (en) * | 2000-12-21 | 2006-04-18 | 802 Systems Llc | PLD-based packet filtering methods with PLD configuration data update of filtering rules |
US6510546B1 (en) * | 2000-07-13 | 2003-01-21 | Xilinx, Inc. | Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores |
US7343594B1 (en) | 2000-08-07 | 2008-03-11 | Altera Corporation | Software-to-hardware compiler with symbol set inference analysis |
US7325221B1 (en) * | 2000-08-08 | 2008-01-29 | Sonics, Incorporated | Logic system with configurable interface |
US6530071B1 (en) | 2000-09-28 | 2003-03-04 | Xilinx, Inc. | Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
GB2406416A (en) * | 2000-10-31 | 2005-03-30 | Advanced Risc Mach Ltd | Describing an integrated circuit configuration |
NZ508052A (en) * | 2000-11-09 | 2003-06-30 | Derek Ward | Programmable controller |
US7039717B2 (en) * | 2000-11-10 | 2006-05-02 | Nvidia Corporation | Internet modem streaming socket method |
US20020083331A1 (en) * | 2000-12-21 | 2002-06-27 | 802 Systems, Inc. | Methods and systems using PLD-based network communication protocols |
US20020080784A1 (en) * | 2000-12-21 | 2002-06-27 | 802 Systems, Inc. | Methods and systems using PLD-based network communication protocols |
US6567970B1 (en) * | 2000-12-27 | 2003-05-20 | Cypress Semiconductor Corp. | PLD configuration architecture |
US7379475B2 (en) * | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7165094B2 (en) * | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US7249242B2 (en) | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7133822B1 (en) | 2001-03-29 | 2006-11-07 | Xilinx, Inc. | Network based diagnostic system and method for programmable hardware |
US7346849B1 (en) | 2001-04-03 | 2008-03-18 | Cypress Semiconductor Corp. | Executable code derived from user-selectable links embedded within the comments portion of a program |
WO2002082267A1 (en) * | 2001-04-06 | 2002-10-17 | Wind River Systems, Inc. | Fpga coprocessing system |
US7272542B1 (en) * | 2001-04-30 | 2007-09-18 | Xilinx, Inc. | Method and system for re-targeting integrated circuits |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US20020184291A1 (en) * | 2001-05-31 | 2002-12-05 | Hogenauer Eugene B. | Method and system for scheduling in an adaptable computing engine |
US20030004699A1 (en) * | 2001-06-04 | 2003-01-02 | Choi Charles Y. | Method and apparatus for evaluating an integrated circuit model |
DE10139610A1 (de) * | 2001-08-11 | 2003-03-06 | Daimler Chrysler Ag | Universelle Rechnerarchitektur |
US6912706B1 (en) | 2001-08-15 | 2005-06-28 | Xilinx, Inc. | Instruction processor and programmable logic device cooperative computing arrangement and method |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7310757B2 (en) * | 2001-10-11 | 2007-12-18 | Altera Corporation | Error detection on programmable logic resources |
US6792584B1 (en) * | 2001-10-30 | 2004-09-14 | Lsi Logic Corporation | System and method for designing an integrated circuit |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US6960935B1 (en) * | 2001-12-18 | 2005-11-01 | Actel Corporation | Method and apparatus for cascade programming a chain of cores in an embedded environment |
US7251594B2 (en) * | 2001-12-21 | 2007-07-31 | Hitachi, Ltd. | Execution time modification of instruction emulation parameters |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
AU2003208266A1 (en) | 2002-01-19 | 2003-07-30 | Pact Xpp Technologies Ag | Reconfigurable processor |
US6785872B2 (en) | 2002-01-22 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Algorithm-to-hardware system and method for creating a digital circuit |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US8284844B2 (en) | 2002-04-01 | 2012-10-09 | Broadcom Corporation | Video decoding system supporting multiple standards |
US6577159B1 (en) | 2002-04-22 | 2003-06-10 | Nicholas Jesse Macias | Method and apparatus for automatic high-speed bypass routing in a cell matrix self-configurable hardware system |
US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7451410B2 (en) * | 2002-05-17 | 2008-11-11 | Pixel Velocity Inc. | Stackable motherboard and related sensor systems |
US7073158B2 (en) * | 2002-05-17 | 2006-07-04 | Pixel Velocity, Inc. | Automated system for designing and developing field programmable gate arrays |
GB0215033D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US7577553B2 (en) * | 2002-07-10 | 2009-08-18 | Numerate, Inc. | Method and apparatus for molecular mechanics analysis of molecular systems |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US20070083730A1 (en) * | 2003-06-17 | 2007-04-12 | Martin Vorbach | Data processing device and method |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US20040044988A1 (en) * | 2002-08-29 | 2004-03-04 | Schene Christopher Robin | Generation of compiled code for simulator speed up |
US20040045007A1 (en) | 2002-08-30 | 2004-03-04 | Bae Systems Information Electronic Systems Integration, Inc. | Object oriented component and framework architecture for signal processing |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US20040122643A1 (en) * | 2002-08-29 | 2004-06-24 | Anderson Howard C. | Apparatus and method for simulating switched-capacitor circuits |
US6978435B2 (en) | 2002-08-29 | 2005-12-20 | Anadigm, Inc. | Apparatus for programming a programmable device, and method |
US7017140B2 (en) | 2002-08-29 | 2006-03-21 | Bae Systems Information And Electronic Systems Integration Inc. | Common components in interface framework for developing field programmable based applications independent of target circuit board |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US7197721B2 (en) * | 2002-12-17 | 2007-03-27 | Intel Corporation | Weight compression/decompression system |
US7873811B1 (en) | 2003-03-10 | 2011-01-18 | The United States Of America As Represented By The United States Department Of Energy | Polymorphous computing fabric |
EP1611528A2 (de) * | 2003-04-04 | 2006-01-04 | PACT XPP Technologies AG | Verfahren und vorrichtung für die datenverarbeitung |
EP1676208A2 (de) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Datenverarbeitungseinrichtung und verfahren |
US7143384B1 (en) * | 2003-11-18 | 2006-11-28 | Xilinx, Inc. | Methods of routing programmable logic devices to minimize programming time |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US7899913B2 (en) * | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US7260631B1 (en) | 2003-12-19 | 2007-08-21 | Nvidia Corporation | System and method for receiving iSCSI protocol data units |
US8549170B2 (en) * | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US7624198B1 (en) | 2003-12-19 | 2009-11-24 | Nvidia Corporation | Sequence tagging system and method for transport offload engine data lists |
US7328377B1 (en) | 2004-01-27 | 2008-02-05 | Altera Corporation | Error correction for programmable logic integrated circuits |
US7823162B1 (en) | 2004-01-30 | 2010-10-26 | Xilinx, Inc. | Thread circuits and a broadcast channel in programmable logic |
US7185309B1 (en) | 2004-01-30 | 2007-02-27 | Xilinx, Inc. | Method and apparatus for application-specific programmable memory architecture and interconnection network on a chip |
US7552042B1 (en) * | 2004-01-30 | 2009-06-23 | Xilinx, Inc. | Method for message processing on a programmable logic device |
US7228520B1 (en) | 2004-01-30 | 2007-06-05 | Xilinx, Inc. | Method and apparatus for a programmable interface of a soft platform on a programmable logic device |
US7770179B1 (en) | 2004-01-30 | 2010-08-03 | Xilinx, Inc. | Method and apparatus for multithreading on a programmable logic device |
US7249306B2 (en) * | 2004-02-20 | 2007-07-24 | Nvidia Corporation | System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity |
US7206872B2 (en) * | 2004-02-20 | 2007-04-17 | Nvidia Corporation | System and method for insertion of markers into a data stream |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
ATE412932T1 (de) * | 2004-09-03 | 2008-11-15 | Derek Ward | Verbesserungen an numerischen steuerungen und verwandten elektronischen geräten |
US7957379B2 (en) * | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US7493578B1 (en) | 2005-03-18 | 2009-02-17 | Xilinx, Inc. | Correlation of data from design analysis tools with design blocks in a high-level modeling system |
US7243330B1 (en) * | 2005-04-21 | 2007-07-10 | Xilinx, Inc. | Method and apparatus for providing self-implementing hardware-software libraries |
DE102005021749A1 (de) * | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
US7363599B1 (en) | 2005-10-04 | 2008-04-22 | Xilinx, Inc. | Method and system for matching a hierarchical identifier |
US7496869B1 (en) | 2005-10-04 | 2009-02-24 | Xilinx, Inc. | Method and apparatus for implementing a program language description of a circuit design for an integrated circuit |
US7904688B1 (en) * | 2005-12-21 | 2011-03-08 | Trend Micro Inc | Memory management unit for field programmable gate array boards |
EP1974265A1 (de) * | 2006-01-18 | 2008-10-01 | PACT XPP Technologies AG | Hardwaredefinitionsverfahren |
US8402409B1 (en) * | 2006-03-10 | 2013-03-19 | Xilinx, Inc. | Method and apparatus for supporting run-time reconfiguration in a programmable logic integrated circuit |
US7380232B1 (en) | 2006-03-10 | 2008-05-27 | Xilinx, Inc. | Method and apparatus for designing a system for implementation in a programmable logic device |
US7761272B1 (en) | 2006-03-10 | 2010-07-20 | Xilinx, Inc. | Method and apparatus for processing a dataflow description of a digital processing system |
US7574688B1 (en) | 2006-06-09 | 2009-08-11 | Xilinx, Inc. | Using high-level language functions in HDL synthesis tools |
US7693257B2 (en) | 2006-06-29 | 2010-04-06 | Accuray Incorporated | Treatment delivery optimization |
US20080036864A1 (en) * | 2006-08-09 | 2008-02-14 | Mccubbrey David | System and method for capturing and transmitting image data streams |
US7847730B2 (en) | 2006-09-27 | 2010-12-07 | Bae Systems Information And Electronic Systems Integration, Inc. | Software defined navigation signal generator |
US20080151049A1 (en) * | 2006-12-14 | 2008-06-26 | Mccubbrey David L | Gaming surveillance system and method of extracting metadata from multiple synchronized cameras |
US7590965B1 (en) * | 2006-12-19 | 2009-09-15 | Xilinx, Inc. | Methods of generating a design architecture tailored to specified requirements of a PLD design |
US8587661B2 (en) * | 2007-02-21 | 2013-11-19 | Pixel Velocity, Inc. | Scalable system for wide area surveillance |
US9720805B1 (en) * | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US20090086023A1 (en) * | 2007-07-18 | 2009-04-02 | Mccubbrey David L | Sensor system including a configuration of the sensor as a virtual sensor device |
JP2011503733A (ja) * | 2007-11-17 | 2011-01-27 | トーマス リヒター | リコンフィギュラブルな浮動小数点レベルおよびビットレベルのデータ処理ユニット |
US8365111B2 (en) * | 2008-02-29 | 2013-01-29 | Et International, Inc. | Data driven logic simulation |
US7979827B1 (en) * | 2008-03-05 | 2011-07-12 | Xilinx, Inc. | Device having programmable resources and a method of configuring a device having programmable resources |
US8347243B2 (en) * | 2008-05-15 | 2013-01-01 | Universiteit Gent | Parameterized configuration for a programmable logic device |
US20100161309A1 (en) * | 2008-12-23 | 2010-06-24 | Scaleo Chip | Apparatus and Methods Thereof for Configuration and Control of a System-On-Chip Emulation Platform |
US20110115909A1 (en) * | 2009-11-13 | 2011-05-19 | Sternberg Stanley R | Method for tracking an object through an environment across multiple cameras |
EP2526494B1 (de) | 2010-01-21 | 2020-01-15 | SVIRAL, Inc. | Verfahren und vorrichtung für ein mehrzweck- und multikern-system zur implementierung von berechnungen auf stream-basis |
US8364946B2 (en) * | 2010-03-22 | 2013-01-29 | Ishebabi Harold | Reconfigurable computing system and method of developing application for deployment on the same |
US9600429B2 (en) | 2010-12-09 | 2017-03-21 | Solarflare Communications, Inc. | Encapsulated accelerator |
US9246928B2 (en) * | 2011-05-02 | 2016-01-26 | International Business Machines Corporation | Compiling pattern contexts to scan lanes under instruction execution constraints |
US8560736B2 (en) | 2011-06-01 | 2013-10-15 | International Business Machines Corporation | Facilitating processing of out-of-order data transfers |
US8787155B2 (en) | 2011-06-01 | 2014-07-22 | International Business Machines Corporation | Sideband error signaling |
US8495265B2 (en) | 2011-06-01 | 2013-07-23 | International Business Machines Corporation | Avoiding non-posted request deadlocks in devices by holding the sending of requests |
US8880956B2 (en) | 2011-06-01 | 2014-11-04 | International Business Machines Corporation | Facilitating processing in a communications environment using stop signaling |
US8903966B2 (en) | 2011-06-01 | 2014-12-02 | International Business Machines Corporation | Re-programming programmable hardware devices without system downtime |
US9298871B1 (en) * | 2011-12-21 | 2016-03-29 | Cadence Design Systems, Inc. | Method and system for implementing translations of parameterized cells |
US9424019B2 (en) | 2012-06-20 | 2016-08-23 | Microsoft Technology Licensing, Llc | Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor |
US9230091B2 (en) | 2012-06-20 | 2016-01-05 | Microsoft Technology Licensing, Llc | Managing use of a field programmable gate array with isolated components |
US9298438B2 (en) * | 2012-06-20 | 2016-03-29 | Microsoft Technology Licensing, Llc | Profiling application code to identify code portions for FPGA implementation |
US8898480B2 (en) | 2012-06-20 | 2014-11-25 | Microsoft Corporation | Managing use of a field programmable gate array with reprogammable cryptographic operations |
US10505747B2 (en) | 2012-10-16 | 2019-12-10 | Solarflare Communications, Inc. | Feed processing |
US9250900B1 (en) | 2014-10-01 | 2016-02-02 | Cadence Design Systems, Inc. | Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network |
US9772897B1 (en) | 2014-12-19 | 2017-09-26 | Xilinx, Inc. | Methods and systems for improving safety of processor system |
US9356642B1 (en) | 2015-07-27 | 2016-05-31 | Qrc, Inc. Dba Qrc Technologies | Systems and methods for managing reconfigurable integrated circuit applications on a radiofrequency transceiver device |
CN105357218B (zh) * | 2015-12-03 | 2018-07-24 | 上海斐讯数据通信技术有限公司 | 一种具备硬件加解密功能的路由器及其加解密方法 |
US10031732B1 (en) | 2016-08-02 | 2018-07-24 | Xilinx, Inc. | Operation processing for high level synthesis |
US10320390B1 (en) | 2016-11-17 | 2019-06-11 | X Development Llc | Field programmable gate array including coupled lookup tables |
DE102018100423A1 (de) * | 2018-01-10 | 2019-07-11 | Dspace Digital Signal Processing And Control Engineering Gmbh | Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche |
BR102018005101A2 (pt) | 2018-03-14 | 2019-10-01 | Samsung Eletrônica da Amazônia Ltda. | Método para gerenciar circuitos lógicos programáveis para aplicativos invocando bibliotecas dinâmicas |
US10867095B2 (en) | 2019-03-19 | 2020-12-15 | Intel Corporation | Methods and apparatus for secure implemention of integrated circuits |
KR20210043942A (ko) | 2019-10-14 | 2021-04-22 | 삼성전자주식회사 | 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 |
US11605166B2 (en) | 2019-10-16 | 2023-03-14 | Parsons Corporation | GPU accelerated image segmentation |
US11303306B2 (en) | 2020-01-20 | 2022-04-12 | Parsons Corporation | Narrowband IQ extraction and storage |
US11619700B2 (en) | 2020-04-07 | 2023-04-04 | Parsons Corporation | Retrospective interferometry direction finding |
US11569848B2 (en) | 2020-04-17 | 2023-01-31 | Parsons Corporation | Software-defined radio linking systems |
US11575407B2 (en) | 2020-04-27 | 2023-02-07 | Parsons Corporation | Narrowband IQ signal obfuscation |
US11392740B2 (en) * | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11849347B2 (en) | 2021-01-05 | 2023-12-19 | Parsons Corporation | Time axis correlation of pulsed electromagnetic transmissions |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109353A (en) * | 1988-12-02 | 1992-04-28 | Quickturn Systems, Incorporated | Apparatus for emulation of electronic hardware system |
US5337255A (en) * | 1991-10-30 | 1994-08-09 | Xilinx, Inc. | Method for implementing set/reset synchronously or asynchronously in a programmable logic device |
US5422833A (en) * | 1991-10-30 | 1995-06-06 | Xilinx, Inc. | Method and system for propagating data type for circuit design from a high level block diagram |
US5499192A (en) * | 1991-10-30 | 1996-03-12 | Xilinx, Inc. | Method for generating logic modules from a high level block diagram |
US5684980A (en) * | 1992-07-29 | 1997-11-04 | Virtual Computer Corporation | FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions |
US5802290A (en) * | 1992-07-29 | 1998-09-01 | Virtual Computer Corporation | Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed |
US5535342A (en) * | 1992-11-05 | 1996-07-09 | Giga Operations Corporation | Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols |
GB9223226D0 (en) | 1992-11-05 | 1992-12-16 | Algotronix Ltd | Improved configurable cellular array (cal ii) |
CA2126265A1 (en) * | 1993-09-27 | 1995-03-28 | Michael Robert Cantone | System for synthesizing field programmable gate array implementations from high level circuit descriptions |
US6077315A (en) * | 1995-04-17 | 2000-06-20 | Ricoh Company Ltd. | Compiling system and method for partially reconfigurable computing |
US5734866A (en) * | 1995-07-18 | 1998-03-31 | Xilinx Inc | Set of functions for mapping into cell based integrated circuits with fixed number of inputs |
US6173245B1 (en) | 1995-10-18 | 2001-01-09 | Altera Corporation | Programmable logic array device design using parameterized logic modules |
US5794033A (en) | 1995-10-24 | 1998-08-11 | International Business Machines Corporation | Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device |
US5946219A (en) * | 1996-10-30 | 1999-08-31 | Atmel Corporation | Method and system for configuring an array of logic devices |
US6078736A (en) * | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US5995744A (en) * | 1997-11-24 | 1999-11-30 | Xilinx, Inc. | Network configuration of programmable circuits |
US6074432A (en) * | 1998-03-19 | 2000-06-13 | Xilinx, Inc. | Method for generating a software class compatible with two or more interpreters |
-
1997
- 1997-08-28 US US08/919,531 patent/US6078736A/en not_active Expired - Lifetime
-
1998
- 1998-08-07 DE DE69805811T patent/DE69805811T2/de not_active Expired - Lifetime
- 1998-08-07 WO PCT/US1998/016436 patent/WO1999012111A1/en active IP Right Grant
- 1998-08-07 JP JP2000509047A patent/JP4481487B2/ja not_active Expired - Lifetime
- 1998-08-07 EP EP98939275A patent/EP1008069B1/de not_active Expired - Lifetime
- 1998-08-07 DE DE69819046T patent/DE69819046T2/de not_active Expired - Lifetime
- 1998-08-07 EP EP01120244A patent/EP1187042B1/de not_active Expired - Lifetime
- 1998-10-07 US US09/168,300 patent/US6216259B1/en not_active Expired - Lifetime
-
2000
- 2000-04-10 US US09/546,460 patent/US6557156B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2001515247A (ja) | 2001-09-18 |
EP1008069B1 (de) | 2002-06-05 |
DE69819046D1 (de) | 2003-11-20 |
DE69805811T2 (de) | 2002-11-21 |
EP1187042B1 (de) | 2003-10-15 |
US6216259B1 (en) | 2001-04-10 |
EP1008069A1 (de) | 2000-06-14 |
WO1999012111B1 (en) | 1999-04-15 |
US6078736A (en) | 2000-06-20 |
DE69805811D1 (de) | 2002-07-11 |
US6557156B1 (en) | 2003-04-29 |
EP1187042A1 (de) | 2002-03-13 |
WO1999012111A1 (en) | 1999-03-11 |
JP4481487B2 (ja) | 2010-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69819046T2 (de) | Verfahren für Entwurf von FPGAs für dynamisch rekonfigurierbares Rechnen | |
DE69817581T2 (de) | System und verfahren zum umwandeln von graphischen programmen in hardware-implementierungen | |
DE69737750T2 (de) | Erst- und Zweitprozessoren verwendetes Verfahren | |
US8150673B1 (en) | Partitioning a model in modeling environments | |
DE69631278T2 (de) | Entwurfssystem und -verfahren zum kombinierten Entwurf von Hardware und Software | |
US20020100029A1 (en) | System, method and article of manufacture for compiling and invoking C functions in hardware | |
US20030140337A1 (en) | System, method, and article of manufacture for data transfer reporting for an application | |
US20030117971A1 (en) | System, method, and article of manufacture for profiling an executable hardware model using calls to profiling functions | |
Barnes et al. | Electronic CAD frameworks | |
US20030120460A1 (en) | System, method, and article of manufacture for enhanced hardware model profiling | |
US5987239A (en) | Computer system and method for building a hardware description language representation of control logic for a complex digital system | |
Hutchings et al. | Using general-purpose programming languages for FPGA design | |
Quadri | MARTE based model driven design methodology for targeting dynamically reconfigurable FPGA based SoCs | |
Cherif et al. | Modeling reconfigurable Systems-on-Chips with UML MARTE profile: an exploratory analysis | |
Quadri et al. | MARTE based design flow for Partially Reconfigurable Systems-on-Chips | |
Le Lann et al. | An integrated toolchain for overlay-centric system-on-chip | |
Wijtvliet et al. | SPINE: From C loop-nests to highly efficient accelerators using Algorithmic Species | |
Frankau | Hardware synthesis from a stream-processing functional language | |
Sklyarov et al. | Synthesis of reconfigurable control devices based on object-oriented specifications | |
Štuikys et al. | Taxonomy of the program transformation processes | |
Quadri et al. | Integrating mode automata control models in soc co-design for dynamically reconfigurable fpgas | |
Mastinu | Design flow to support dynamic partial reconfiguration on Maxeler architectures | |
Sassatelli et al. | Selected Papers from ReCoSoc 2008 | |
DE10338964A1 (de) | Verfahren und Vorrichtung zum Schaltungsentwurf mittels High-Level-Synthese | |
Sklyarov et al. | Development system for FPGA-based digital circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |