DE102018100423A1 - Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche - Google Patents

Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche Download PDF

Info

Publication number
DE102018100423A1
DE102018100423A1 DE102018100423.0A DE102018100423A DE102018100423A1 DE 102018100423 A1 DE102018100423 A1 DE 102018100423A1 DE 102018100423 A DE102018100423 A DE 102018100423A DE 102018100423 A1 DE102018100423 A1 DE 102018100423A1
Authority
DE
Germany
Prior art keywords
fpga
implementation
graph
similar
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.)
Pending
Application number
DE102018100423.0A
Other languages
English (en)
Inventor
Dominik LUBELEY
Heiko KALTE
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.)
Dspace GmbH
Original Assignee
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering GmbH
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 Dspace GmbH, Dspace Digital Signal Processing and Control Engineering GmbH filed Critical Dspace GmbH
Priority to DE102018100423.0A priority Critical patent/DE102018100423A1/de
Priority to US16/207,457 priority patent/US10706196B2/en
Priority to CN201811616236.2A priority patent/CN110020456A/zh
Priority to JP2019001636A priority patent/JP7065794B2/ja
Publication of DE102018100423A1 publication Critical patent/DE102018100423A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/06Spare resources, e.g. for permanent fault suppression

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Generieren einer FPGA-Implementierung (14) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die Schritte Synthese einer Netzliste (12) aus dem FPGA-Design (10) und Erzeugen der FPGA-Implementierung (14) aus der Netzliste (12), wobei das Verfahren ein Suchen einer ähnlichen FPGA-Implementierung (14) umfasst, der Schritt des Erzeugens der FPGA-Implementierung (14) aus der Netzliste (12) unter Verwendung der ähnlichen FPGA-Implementierung (14) erfolgt, das Verfahren einen Schritt zum Erzeugen einer Graphen-basierten Repräsentation basierend auf dem FPGA-Design (10) umfasst, und der Schritt des Suchens einer ähnlichen FPGA-Implementierung (14) ein Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs (10) mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) umfasst. Die Erfindung betrifft außerdem ein Verfahren zum Generieren eines Bitstroms (16) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die Schritte Generieren einer FPGA-Implementierung (14) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung nach dem obigen Verfahren und Erzeugen des Bitstroms (16) aus der generierten FPGA-Implementierung (14) .

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Generieren einer FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die Schritte Synthese einer Netzliste aus dem FPGA-Design, und Erzeugen der FPGA-Implementierung aus der Netzliste, wobei das Verfahren ein Suchen einer ähnlichen FPGA-Implementierung umfasst, und der Schritt des Erzeugens der FPGA-Implementierung aus der Netzliste unter Verwendung der ähnlichen FPGA-Implementierung erfolgt.
  • Weiterhin betrifft die Erfindung ein Verfahren zum Generieren eines Bitstroms basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die obigen Schritte zum Generieren einer FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung, und ein Erzeugen des Bitstroms aus der generierten FPGA-Implementierung.
  • Derartige Verfahren werden verwendet, um Code für FPGAs (Field Programmable Gate Array) zu erzeugen. FPGAs sind integrierte Schaltkreise, in welchen eine logische Schaltung geladen werden kann. Eine Programmierung umfasst dabei im Gegensatz zur klassischen Programmierung in einer bekannten Programmiersprache weniger eine Vorgabe zeitlicher Abläufe, sondern eine Definition einer gewünschten Schaltungsstruktur.
  • Ein FPGA-Design zur Definition der gewünschten Schaltungsstruktur wird dabei typischerweise als graphisches FPGA-Modell erzeugt, das in eine Hardwarebeschreibungssprache, beispielsweise VHDL, übersetzt wird. Prinzipiell kann das FPGA-Design auch unmittelbar in der Hardwarebeschreibungssprache erzeugt werden.
  • Das FPGA-Design wird dann in einem Syntheseschritt von einer entsprechenden Software zunächst in eine Netzliste übersetzt, welche vorgibt, wie einzelne logische Elemente im FPGA verschaltet werden sollen. Man spricht daher auch von der Konfiguration eines FPGA. Die Netzliste mit den logischen Elementen und deren Verschaltung wird zur weiteren Verwendung gespeichert.
  • Daran schließt sich ein Schritt zur Erzeugung der FPGA-Implementierung an. Dieser Schritt wird üblicherweise als „Place and Route“ bezeichnet. Dabei werden die in der Netzliste gespeicherten logischen Elemente für das FPGA platziert (Place) und miteinander gemäß der Netzliste verbunden (Route). Das Ergebnis ist die FPGA-Implementierung.
  • Im Anschluss wird aus der FPGA-Implementierung ein Bitstrom erzeugt, der auf das FPGA übertragen wird, um in diesem eine gewünschte Funktion zu implementieren.
  • Die vorgenannten Schritte werden oft als „Build“ zusammengefasst.
  • Dabei gibt es heutzutage einfach zu handhabende Tools, die beispielsweise eine abstrahierende FPGA Entwicklungsumgebung für Kunden bereitstellen, so dass die Kunden auch ohne detaillierte Kenntnisse über FPGAs und Toolflows eigene Hardware entwickeln können. Die Kunden können dadurch FPGA-Designs erstellen, implementieren und auf einer entsprechenden FPGA-Hardware, dem FPGA, betreiben. Regelmäßige Änderungen am FPGA-Modell mit einem anschließendem Re-Build sind natürlicher Bestandteil eines solchen Entwicklungsprozesses, z.B. beim Rapid Control Prototyping.
  • Ein Problem dabei besteht in oft sehr langen Build-Zeiten, die auch für ein Re-Build eines FPGAs bei einer auch nur geringfügigen Änderung des FPGA-Modells erforderlich sein können. Die Build-Zeiten liegen dabei oft im Bereich von Stunden. Da die FPGAs immer komplexer werden und mehr Ressourcen in der Form von Registern, Logik, DSP Blöcken, oder Speicher bereitstellen, erhöhen sich die Build-Zeiten immer weiter. Dies kann nur teilweise durch Verbesserungen von Algorithmen und schnellere Rechner zur Durchführung des Builds kompensiert werden. Ein besonders zeitaufwändiger Schritt ist dabei meistens das Platzieren und Verbinden.
  • In aktuellen FPGA-Tools gibt es zwei Ansätze, um die Build-Zeiten zu reduzieren. Beide Ansätze basieren darauf, dass unveränderte Regionen/Komponenten einer bereits erfolgreich erzeugten FPGA-Implementierung wiederverwendet werden. Bei dem ersten Ansatz wird jeder Komponente eine (rechteckige) Region im FPGA zugeordnet. Wenn eine Komponente verändert wird, wird die Region mit dieser Komponente neu implementiert, während der Rest der FPGA-Implementierung unverändert bleibt und wiederverwendet werden kann. Bei dem zweiten Ansatz, der hier als inkrementeller Build bezeichnet wird, sind keine vordefinierten Regionen erforderlich. Es wird zur Implementierung eine bereits implementierte FPGA-Implementierung als Referenz angegeben. Wenn die Übereinstimmung groß ist, können viele Platzierungen und Verdrahtungen automatisch übernommen werden, und die Zeit für das Erzeugen der FPGA-Implementierung wird reduziert.
  • Dabei kann es vorteilhaft sein, wenn eine FPGA-Implementierung bereits von Anfang an so erzeugt wird, dass einzelne Module bzw. Teilimplementierungen wiederverwendet werden können. Dieser Ansatz verfolgt eine automatische Modularisierung des FPGA-Modells. Auf dieser Modulbasis kann ein Floorplanning erfolgen, d.h. eine Unterteilung in Regionen. Wenn für die einzelnen Module noch Reserven vorgesehen sind, können Änderungen des FPGA-Modells auf die einzelnen Module beschränkt bleiben.
  • Außerdem sind Verfahren für ein Re-Planning bekannt. Wenn ein Kunde Änderungen an seinem FPGA-Modell vorgenommen hat, wird das letzte Buildergebnis verwendet. Darauf basierend werden veränderte Module einzeln gebaut und anschließend im Gesamtbuild ausgetauscht. Für den Fall, dass mehrere Module betroffen sind, können Buildzeiten dadurch reduziert werden, wenn der Build für die geänderten Module auf unterschiedlichen Rechnern erfolgt. Es wird also ein paralleler Build der geänderten Module durchgeführt. Dabei kann eine Versionierung von verschiedenen Versionen von Modulen vorgesehen sein, um eine Wiederverwendung zu erleichtern.
  • Auch wenn diese Verfahren die Build-zeiten bereits reduzieren können, besteht noch weiteres Verbesserungspotential. So ergeben sich beispielsweise bei einer feingranularen Modularisierung ein großer Verschnitt und ein erhöhtes Risiko von Timing Verletzungen, da nicht über Modulgrenzen hinweg optimiert werden kann und für die Module jeweils ein großzügiger Bereich mit entsprechenden Reserven vorgesehen werden muss. Außerdem lässt sich das Verfahren nur mit großen Implementierungsaufwänden in der Produktentwicklung umsetzen.
  • Um eine Ähnlichkeit zweier Designs festzustellen, wird von aktuellen Synthesetools eine Referenz-Netzliste mit der neu zu platzierenden und zu routenden Netzliste verglichen. Der Vergleich basiert dabei ausschließlich auf einem Namensvergleich von Netzlistenpfadnamen. Dies ist problematisch, da es bei abstrahierenden High-Level FPGA Design Tools wie Xilinx Vivado System Generator, Xilinx Vivado HLS, Xilinx Vivado SDSoC üblich ist, eine schnelle Umbenennung und Umorganisation identischer FPGA Komponenten vorzunehmen, z.B. in Subsysteme. Dadurch ergeben sich automatisch neue Netzlistenpfade auch für eigentlich identische Komponenten. Die Umbenennung kann von den aktuellen Synthesetools nicht erkannt werden.
  • Ausgehend von dem oben genannten Stand der Technik liegt der Erfindung somit die Aufgabe zugrunde, ein Verfahren zum Generieren einer FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung sowie ein Verfahren zum Generieren eines Bitstroms basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung der oben genannten Art anzugeben, die ein einfaches und effizientes Erzeugen einer FFGA Implementierung ermöglichen, insbesondere unter Verwendung von bereits existierenden, ähnlichen FPGA-Implementierungen.
  • Die Lösung der Aufgabe erfolgt erfindungsgemäß durch die Merkmale der unabhängigen Ansprüche. Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.
  • Erfindungsgemäß ist somit ein Verfahren zum Generieren einer FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung vorgesehen, umfassend die Schritte Synthese einer Netzliste aus dem FPGA-Design, und Erzeugen der FPGA-Implementierung aus der Netzliste, wobei das Verfahren ein Suchen einer ähnlichen FPGA-Implementierung umfasst, der Schritt des Erzeugens der FPGA-Implementierung aus der Netzliste unter Verwendung der ähnlichen FPGA-Implementierung erfolgt, das Verfahren einen Schritt zum Erzeugen einer Graphen-basierten Repräsentation basierend auf dem FPGA-Design umfasst, und der Schritt des Suchens einer ähnlichen FPGA-Implementierung ein Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung umfasst.
  • Erfindungsgemäß ist weiterhin ein Verfahren zum Generieren eines Bitstroms basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung vorgesehen, umfassend die obigen Schritte zum Generieren einer FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung, und ein Erzeugen des Bitstroms aus der generierten FPGA-Implementierung.
  • Grundidee der vorliegenden Erfindung ist es also, Ähnlichkeiten eines aktuellen FPGA-Modells zu anderen, beispielsweise vorherigen FPGA-Modellen aufzufinden und zur Durchführung einer effizienten Erzeugung der FPGA-Implementierung zu verwenden. Darauf basierend wird eine inkrementelle Erzeugung der aktuellen FPGA-Implementierung durchgeführt, die auf wenigstens einer bestehenden, ähnlichen FPGA-Implementierung basiert. Die ähnliche FPGA-Implementierung oder zumindest ähnliche Teile davon werden dann verwendet, um die aktuelle FPGA-Implementierung zu erzeugen. Da das Platzieren und Routen der FPGA Logik zum Erzeugen der FPGA-Implementierung üblicherweise die meiste Zeit des FPGA Builds beansprucht, ist dadurch insgesamt eine Reduktion der Zeitdauer zum Erzeugen des FPGA-Build zu erzielen.
  • Das FPGA-Design wird typischerweise als graphisches FPGA-Modell erzeugt, das in eine Hardwarebeschreibungssprache übersetzt wird. Prinzipiell kann das FPGA-Design auch unmittelbar in der Hardwarebeschreibungssprache erzeugt werden. Als Hardwarebeschreibungssprache ist beispielsweise VHDL bekannt. VHDL ist als Very High Speed Integrated Circuit Hardware Description Language (auch VHSIC Hardware Description Language) bekannt.
  • Das FPGA-Design wird dann in einem Syntheseschritt von einer entsprechenden Software zunächst in eine Netzliste übersetzt, welche vorgibt, wie einzelne logische Elemente im FPGA verschaltet werden sollen. Man spricht daher auch von der Konfiguration eines FPGA. Die Netzliste mit den logischen Elementen und deren Verschaltung wird zur weiteren Verwendung gespeichert.
  • Daran schließt sich ein Schritt zur Erzeugung der FPGA-Implementierung an. Dieser Schritt wird üblicherweise als „Place and Route“ bezeichnet. Dabei werden die in der Netzliste gespeicherten logischen Elemente für das FPGA platziert (Place) und miteinander gemäß der Netzliste verbunden (Route). Das Ergebnis ist die FPGA-Implementierung.
  • Im Anschluss wird aus der FPGA-Implementierung ein Bitstrom erzeugt, der auf das FPGA übertragen wird, um in diesem eine gewünschte Funktion zu implementieren.
  • Die vorgenannten Schritte werden oft als „Build“ zusammengefasst.
  • Vorzugsweise wird eine synthetisierte Netzliste als ein Artefakt des jeweiligen FPGA-Modells in einer Datenbank archiviert, um bei einem folgenden Build die entsprechende FPGA-Implementierung ggf. als Referenz zum Suchen einer ähnlichen FPGA-Implementierung verwenden zu können. Auch kann bereits während der Synthese nach einer möglichst ähnlichen FPGA-Implementierung als Referenz gesucht werden. Dazu wird zunächst die Graphen-basierte Repräsentation basierend auf dem FPGA-Design erstellt und mit Graphen von bereits zuvor implementierten FPGA-Designs verglichen.
  • Die Erstellung des Graphen der zumindest einen ähnlichen FPGA-Implementierung erfolgt dabei typischerweise während eines entsprechenden Builds der ähnlichen FPGA-Implementierung. Dies bedeutet, dass die ähnlichen FPGA-Implementierungen konventionell oder auch nach dem hier angegebenen Verfahren ausgehend von einem entsprechenden FPGA-Design erzeugt werden. Die Graphen dieser FPGA-Implementierungen werden dann ebenfalls basierend auf dem jeweiligen FPGA-Design erzeugt.
  • Insgesamt kann das Verfahren einfach implementiert werden, wobei verschiedene Schritte parallel ausgeführt werden können. So können Ressourcen effizient genutzt werden. Es kann dabei eine ähnlichste FPGA-Implementierung ausgewählt werden, oder es wird eine Mindestähnlichkeit vorausgesetzt, um eine ähnliche FPGA-Implementierung als Basis für das FPGA-Design zu verwenden. Ist eine ausreichende Ähnlichkeit gegeben, kann eine entsprechende FPGA-Implementierung als Referenz verwendet werden. Sind noch weitere FPGA-Designs vorhanden, die noch nicht auf Ähnlichkeit untersucht wurden, kann die Suche der ähnlichen oder ähnlichsten FPGA-Implementierung mit diesen FPGA-Designs fortgesetzt werden.
  • Beim Erstellen des Graphen aus dem FPGA-Design werden Blöcke des FPGA-Models zu Knoten und Signallinien werden zu Kanten transformiert. Das Verfahren ist hierarchisch anwendbar. Graphische Subsysteme können entweder für eine erste schnelle Abschätzung als Block interpretiert, oder beliebig tief bis komplett de-hierarchisiert werden. Eine Transformationsfunktion kann es beispielsweise erlauben, FPGA-Modelle u.a. bis auf ihre Basisblöcke unter Berücksichtigung von virtuellen Verbindungen (Goto/From, DataStoreRead/DataStoreMemory/DataStoreWrite, Triggerports, Actionports, ...) zu de-hierarchisieren, und einen gerichteten Graphen daraus zu erzeugen. Dabei kann das FPGA-Modell nicht nur aus einem zusammenhängenden Graphen bestehen, sondern eine Mehrzahl separater Graphen umfassen. Solche getrennten Graphen ergeben sich beispielsweise, wenn voneinander unabhängige Teilfunktionalitäten in einem FPGA-Design implementiert werden.
  • Das Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung erfolgt basierend auf einem Algorithmus zur Ähnlichkeitsanalyse von Graphen. Auf Basis eines Maßes der Ähnlichkeit zwischen je zwei Knoten zweier Graphen können bekannte Algorithmen angewendet werden. Ein Maß der Ähnlichkeit zweier Knoten wird anhand des Grades der Übereinstimmung von einem Block-/Netzlistenpfad (auch partiell), einem Block-/Netzlistentyp (z.B. add, multiply), und Block-/Netzlistenparameter/- attribute (z.B. Bitbreite, Binärpunktposition) bestimmt.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das FPGA-Design eine Teilimplementierung, das Suchen einer ähnlichen FPGA-Implementierung umfasst ein Suchen einer ähnlichen Teilimplementierung, und der Schritt des Erzeugens der FPGA-Implementierung erfolgt unter Verwendung der ähnlichen Teilimplementierung. Das Problem der Ähnlichkeitssuche kann somit auf verschiedene Teilprobleme heruntergebrochen werden, indem die Ähnlichkeit für diese Teilimplementierungen ermittelt und verglichen wird.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Suchen einer ähnlichen FPGA-Implementierung ein Suchen einer ähnlichen FPGA-Implementierung in einer Datenbank vorheriger FPGA-Implementierungen. In der Datenbank können beispielsweise alle FPGA-Implementierungen gespeichert werden, um diese für eine spätere Verwendung bereitzustellen. Die Datenbank umfasst dabei vorzugsweise FPGA-Implementierungen, die im Rahmen eines Projekts erzeugt wurden, da so von einer erhöhten Wahrscheinlichkeit für eine ähnliche FPGA-Implementierung ausgegangen werden kann. Somit kann eine Suche einer ähnlichen FPGA-Implementierung vom Umfang beschränkt werden.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen Schritt zum Identifizieren von einem geänderten Teilbereich des FPGA-Designs, die Synthese einer Netzliste umfasst die Synthese der Netzliste aus dem geänderten Teilbereich des FPGA-Designs, und das Erzeugen einer FPGA-Implementierung umfasst ein Erzeugen der FPGA-Implementierung für die Netzliste des geänderten Teilbereichs des FPGA-Designs. Das Erstellen einer neuen FPGA-Implementierung kann somit von Beginn an auf geänderte Teilbereiche des FPGA-Designs beschränkt werden. Es werden vorzugsweise Blöcke des FPGA-Designs betrachtet, für welche die FPGA-Implementierung individuell neu durchgeführt werden kann.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen Schritt zum Bestimmen eines Maßes einer Ähnlichkeit zwischen der Graphen-basierten Repräsentation des FPGA-Designs und der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung, und das Verfahren umfasst einen konventionellen Schritt zum Erzeugen der FPGA-Implementierung aus der Netzliste ohne Verwendung einer ähnlichen FPGA-Implementierung, wenn das Maß der Ähnlichkeit unter einem Grenzwert liegt. Wurde also eine geeignete ähnliche FPGA-Implementierung als Referenz gefunden, kann diese während der Erzeugung der aktuellen FPGA-Implementierung herangezogen werden. Andernfalls muss das FPGA-Modell komplett neu implementiert werden. Je eher im Vorfeld erkannt wird, dass es keine sinnvolle FPGA-Implementierung als Referenz gibt, deren Maß der Ähnlichkeit über dem Grenzwert liegt, desto weniger Ressourcen sind für die Suche der ähnlichen FPGA-Implementierung erforderlich. Dadurch kann mit dem normalen Build gegenüber einem inkrementellen Build mit stark unterschiedlichen FPGA-Modellen, wenn also das Maß der Ähnlichkeit unter dem Grenzwert liegt, die Zeit für den Build reduziert werden. Der Grenzwert liegt vorzugsweise bei einer Ähnlichkeit von 75%. Weiter bevorzugt liegt der Grenzwert bei einer Ähnlichkeit von 85%, noch weiter bevorzugt bei 90%.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Vergleichens der Graphen-basierten Repräsentation des FPGA-Designs mit der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung ein Lösen eines linearen Optimierungsproblems, bei dem zu jedem Knoten in einem Graph der ähnlichste Knoten in einem anderen Graph identifiziert wird, ohne dass ein Knoten doppelt zugeordnet wird. Es wird ein als „Ungarische Methode“ nach Kuhn bekanntes Verfahren angewendet. Die Ungarische Methode dient zur Lösung des linearen Optimierungsproblems, zu jedem Knoten eines Graphen den ähnlichsten Knoten in einem anderen Graphen zu finden, ohne einen Knoten doppelt zuzuordnen. Die Methode maximiert die Gesamtähnlichkeit. Nachbarschaftsbeziehungen können allerdings als Maß für die Ähnlichkeit von zwei Blöcken mit einfließen. Das Verfahren wird prinzipiell ohne Berücksichtigung von Nachbarschaftsbeziehungen durchgeführt.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen Schritt zum Bestimmen einer Ähnlichkeit eines Knotens der Graphen-basierten Repräsentation des FPGA-Designs mit einem Knoten der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung mit einem Bestimmen einer Übereinstimmung von Differenzierungspunkten. Die Differenzierungspunkte umfassen beispielsweise einen Block-/Netzlistenpfad (auch partiell), einen Block-/Netzlistentyp, beispielsweise Addieren/Multiplizieren, Block-/Netzlistenparameter, z.B. Bitbreite, Binärpunktposition.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Bestimmens einer Übereinstimmung von Differenzierungspunkten eine Gewichtung der Differenzierungspunkte. Durch die Gewichtung können die Differenzierungspunkte unterschiedlich stark berücksichtigt werden.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen zusätzlichen Schritt zum Durchführen einer Ähnlichkeitsanalyse einer Mehrzahl in der Datenbank enthaltenen Graphen und ein Speichern der errechneten Ähnlichkeiten in einem Ähnlichkeitsdiagramm oder einer Ähnlichkeitsmatrix. Solche Ähnlichkeiten, die bei der Ähnlichkeitsanalyse aufgefunden werden, können somit gespeichert werden, um eine zukünftige Suche einer ähnlichen FPGA-Implementierung durch ein Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung zu erleichtern. Die errechneten Ähnlichkeiten betreffen hier Ähnlichkeiten, die bei der Suche der ähnlichen FPGA-Implementierung ermittelt werden.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen zusätzlichen Schritt zum Errechnen von Ähnlichkeiten von Beziehungen zwischen den in der Datenbank enthaltenen Graphen. Es kann somit beispielsweise eine Art „Hashing“ durchgeführt werden, indem die Graphen oder Teilgraphen vorab analysiert werden, und eine Struktur davon erfasst und gespeichert wird. Die Struktur kann beispielsweise als ein sogenannter Hash-Wert gespeichert werden. Bei einem nachfolgenden Vergleich von Ähnlichkeiten von Graphen kann dieser Vergleich somit basierend auf den errechneten Ähnlichkeiten von Beziehungen durchgeführt werden, wodurch das Suchen einer ähnlichen FPGA-Implementierung durch ein Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung durch die Struktur erleichtert wird. Der Schritt des Errechnens von Ähnlichkeiten von Beziehungen zwischen den in der Datenbank enthaltenen Graphen ist mit einem großen Rechenaufwand verbunden und sollte in Phasen erfolgen, in denen freie Ressourcen genutzt werden können, beispielsweise während einer Modellierungsphase des Entwicklers, in der bei geringer Rechenlast das FPGA-Design erzeugt wird. Es wird vorzugsweise ein Similaritätsgraph aus mehreren FPGA-Modellen erstellt, der Ergebnisse von Ähnlichkeitsanalysen zwischen allen miteinander verglichenen FPGA-Modellen speichert. Untersuchte Ähnlichkeiten zwischen zwei FPGA-Modellen sind als Kante zwischen den entsprechenden zwei Knoten beispielsweise mit einem Gewicht als Maß der Ähnlichkeit angegeben. Bei einem vollvermaschten Similaritätsgraphen ist die Ähnlichkeit eines jeden FPGA-Modells mit jedem anderen FPGA-Modell angegeben. Ein vollständiger Similaritätsgraph ermöglicht es, einen idealen Startpunkt für einen inkrementellen FPGA Build zu finden. Die Vervollständigung kann auf verschiedene Arten erreicht werden. Als erste Variante können nach einer Brute-Force-Methode fehlende Kanten zur Vollvermaschung des Similaritätsgraphen durch weitere Ähnlichkeitsanalysen ergänzt werden. Dies führt, wie bereits ausgeführt wurde, zu einem großen Bedarf an Rechenleistung und kann daher beispielsweise während einer Erstellung des FPGA-Designs bei geringer CPU Last beispielswese im Hintergrund erfolgen. Die zweite Variante basiert auf einer effizienten Berechnungsreihenfolge vorhandener FPGA-Implementierungen. Dabei wird eine Ähnlichkeit zwischen zwei Knoten auf Basis vorhandener Kanten, wo sich potentiell hohe Ähnlichkeiten befinden können, abgeschätzt, um für diese vorrangig eine Ähnlichkeitsanalyse durchzuführen. Dadurch kann die Vermaschung des Similaritätsgraphen weiter vervollständigt werden. Es kann beispielsweise ein Wahrscheinlichkeitsansatz verwendet werden. Dabei multiplizieren sich Ähnlichkeiten analog zu Wahrscheinlichkeiten entlang eines Weges über vorhandene Kanten: Weg 2-1-4 = 45% x 85% = 38%. Gemäß einer dritten Variante wird die Ähnlichkeit zwischen zwei Knoten auf Basis vorhandener Kanten mit den Ansätzen aus Variante 2 abgeschätzt. Eine exakte Ähnlichkeit der FPGA-Designs wird bei diesem Ansatz nicht analysiert.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst das Verfahren einen zusätzlichen Schritt zum vorherigen Ermitteln von zu erwartenden hohen Ähnlichkeiten von noch nicht bestimmten Beziehungen anhand bereits bestimmter Ähnlichkeiten. Je eher im Vorfeld erkannt wird, welche ähnliche FPGA-Implementierung als Referenz verwendet werden kann, oder ob einen ähnliche FPGA-Implementierung als Referenz verwendet werden kann, desto effizienter kann das Verfahren durchgeführt werden.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Vergleichens der Graphen-basierten Repräsentation des FPGA-Designs mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung ein Nachbar-Matching zur Berücksichtigung von Nachbarschaftsbeziehungen. Ein solches Verfahren ist beispielsweise als „Measuring Similarity of Graph Nodes by Neighbor Matching“ nach Nikolic bekannt. Eine Ähnlichkeit wird hier als Similarität zwischen zwei Graphen ermittelt und ergibt sich durch Summation von Knotenähnlichkeiten von optimalen Knotenkorrespondenzen der Optimierung dividiert durch eine Anzahl der Knoten.
  • In vorteilhafter Ausgestaltung der Erfindung umfasst der Schritt des Erzeugens einer Graphen-basierten Repräsentation basierend auf dem FPGA-Design eine De-Hierarchisierung des FPGA-Designs unter Berücksichtigung von virtuellen Verbindungen und ein Anwenden einer Transformationsfunktion basierend auf der De-Hierarchisierung des FPGA-Designs. In hierarchischen Subsystemen können diese entweder für eine erste schnelle Abschätzung als Block interpretiert, oder beliebig tief bis komplett de-hierarchisiert werden. Die Transformation ist erforderlich, um virtuelle Verbindungen und Abhängigkeiten der hierarchischen Blöcke zu erfassen und korrekt anzuwenden bei einer Verwendung solcher Blöcke als Basis zur Erstellung der FPGA-Implementierung.
  • Die virtuellen Verbindungen können beispielsweise Verbindungen wie Goto/From, DataStoreRead/DataStoreMemory/DataStoreWrite, Triggerports, Actionports, oder ähnliche umfassen.
  • Nachfolgend wird die Erfindung unter Bezugnahme auf die anliegende Zeichnung anhand bevorzugter Ausführungsformen näher erläutert.
  • Es zeigen
    • 1 ein Ablaufdiagram zur Durchführung eines Verfahrens zum Generieren einer FPGA-Implementierung und eines Bitstroms aus der FPGA-Implementierung basierend auf einem FPGA-Design gemäß einer ersten, bevorzugten Ausführungsform,
    • 2 eine Detailansicht des Ablaufdiagrams aus 1 zur Erzeugung der FPGA-Implementierung und eines Bitstroms in Übereinstimmung mit der ersten Ausführungsform,
    • 3 eine Detailansicht des Ablaufdiagrams aus 1 zum Befüllen der Datenbank mit Artefakten in Übereinstimmung mit der ersten Ausführungsform,
    • 4 eine Detailansicht des Ablaufdiagrams aus 1 zum Ermitteln eines ähnlichen FPGA-Designs in Übereinstimmung mit der ersten Ausführungsform,
    • 5 eine schematische Darstellung eines Similaritätsgraphen mit einer Mehrzahl Kanten zwischen seinen Knoten 34 als erstes Beispiel in Übereinstimmung mit der ersten Ausführungsform,
    • 6 eine schematische Darstellung eines Similaritätsgraphen, bei dem zwischen allen Knoten eine Kante ausgebildet ist, als zweites Beispiel in Übereinstimmung mit der ersten Ausführungsform,
    • 7 eine schematische Darstellung eines Similaritätsgraphen, bei dem zwischen allen Knoten eine Kante ausgebildet ist, wobei nicht explizit ermittelte Ähnlichkeiten zwischen Knoten basierend auf bestimmten Ähnlichkeiten zwischen Knoten ermittelt werden, als drittes Beispiel in Übereinstimmung mit der ersten Ausführungsform,
    • 8 eine schematische Darstellung eines beispielhaften Modell-Graphen in Übereinstimmung mit der ersten Ausführungsform, und
    • 9 eine schematische Darstellung von zwei Ähnlichkeitsmatrixen zwischen Knoten von zwei Modell-Graphen mit einer linken Abbildung ohne „Neighbor Matching“ und einer rechten Abbildung mit „Neighbor Matching“ in Übereinstimmung mit der ersten Ausführungsform.
  • Die 1 bis 4 illustrieren ein Verfahren zum Generieren einer FPGA-Implementierung und eines Bitstroms aus der FPGA-Implementierung basierend auf einem FPGA-Design als FPGA-Modell und/oder einer Hardwarebeschreibung.
  • Als Ausgangsbasis des Verfahrens wird hier ein FPGA-Design 10 als graphisches FPGA-Modell erzeugt und bereitgestellt. Das FPGA-Modell wird dann in eine Hardwarebeschreibungssprache, die hier beispielsweise VHDL (Very High Speed Integrated Circuit Hardware Description Language) ist, übersetzt.
  • Davon ausgehend kann ein Build gestartet werden, der zunächst die nachfolgend im Detail beschrieben Schritte S100, S110 und S120 umfasst.
  • In Schritt S100 erfolgt eine Synthese einer Netzliste 12 aus dem FPGA-Design 10. Die Netzliste 12 umfasst logische Elemente sowie deren Verschaltung, wie in dem FPGA-Design 10 angegeben.
  • In Schritt S110 wird aus der Netzliste 12 eine FPGA-Implementierung 14 erzeugt. Dieser Schritt wird üblicherweise als „Place and Route“ bezeichnet. Dabei werden die in der Netzliste 12 gespeicherten logischen Elemente für das FPGA platziert (Place) und miteinander gemäß der Netzliste 12 verbunden (Route). Das Ergebnis ist die FPGA-Implementierung 14. Details zu Schritt S110 werden untenstehend erläutert.
  • In Schritt S120 wird aus der generierten FPGA-Implementierung 14 ein Bitstrom 16 zum Übertragen auf einen FPGA und zur Verwendung mit dem FPGA erzeugt.
  • Wie in 4 im Detail dargestellt ist, werden Schritte S140 bis S180 zum Ermitteln eines ähnlichen FPGA-Designs parallel zu den vorherigen Schritten, insbesondere parallel zu Schritt S100 durchgeführt.
  • Somit wird aus dem FPGA-Design 10 in einem Schritt S140 ein Modell-Graph 24 als Graphen-basierte Repräsentation basierend aus dem FPGA-Design 10 erzeugt. Beim Erstellen des Modell-Graphen 24 aus dem FPGA-Design 10 werden Blöcke des FPGA-Models 10 zu Knoten und Signallinien werden zu Kanten transformiert. Ein Modell-Graph 24 ist beispielhaft in 8 dargestellt, wobei dort mehrere unabhängige Modell-Graphen 24 gemeinsam implementiert und dargestellt sind. Dabei können graphische Subsysteme für eine erste schnelle Abschätzung als Block interpretiert werden, oder sie können beliebig tief bis komplett de-hierarchisiert werden. Eine Transformationsfunktion kann es beispielsweise erlauben, FPGA-Modelle u.a. bis auf ihre Basisblöcke unter Berücksichtigung von virtuellen Verbindungen (Goto/From, DataStoreRead/DataStoreMemory/DataStoreWrite, Triggerports, Actionports, ...) zu de-hierarchisieren, und einen gerichteten Graphen daraus zu erzeugen. Im Zuge der De-Hierarchisierung des FPGA-Designs 10 werden virtuelle Verbindungen berücksichtigt, und es wird eine Transformationsfunktion basierend auf der De-Hierarchisierung des FPGA-Designs 10 angewendet.
  • In einem Schritt S150 wird die Ähnlichkeit des Modell-Graphen 24 mit einem Modell-Graphen 24 aus einer Datenbank 22 verglichen. Der Modell-Graph 24 aus der Datenbank 22 ist eine Graphen-basierte Repräsentation einer vorherigen FPGA-Implementierung 14.
  • Dabei wird zunächst ein Vergleich des Modell-Graphen 24 des aktuellen FPGA-Designs 10 mit dem Modell-Graphen 24 der vorherigen FPGA-Implementierung 14 aus der Datenbank 22 basierend auf einem Algorithmus zur Ähnlichkeitsanalyse von Graphen durchgeführt. Auf Basis eines Maßes der Ähnlichkeit zwischen je zwei Knoten 34 zweier Modell-Graphen 24 wird ein Maß der Ähnlichkeit der Knoten 34 anhand des Grades der Übereinstimmung von einem Block-/Netzlistenpfad (auch partiell), einem Block-/Netzlistentyp (z.B. add, multiply), und Block-/Netzlistenparameter/-attribute (z.B. Bitbreite, Binärpunktposition) bestimmt.
  • Das Vergleichen umfasst weiterhin ein Lösen eines linearen Optimierungsproblems, bei dem zu jedem Knoten 34 in einem Modell-Graphen 24 der ähnlichste Knoten 34 in einem anderen Modell-Graphen 24 identifiziert wird, ohne dass ein Knoten 34 doppelt zugeordnet wird. Dies ist als „Ungarische Methode“ nach Kuhn prinzipiell bekannt.
  • Das Vergleichen des Modell-Graphen 24 des aktuellen FPGA-Designs 10 mit dem Modell-Graphen 24 der FPGA-Implementierung 14 aus der Datenbank 22 umfasst weiterhin ein Nachbar-Matching zur Berücksichtigung von Nachbarschaftsbeziehungen. Ein solches Verfahren ist beispielsweise als „Measuring Similarity of Graph Nodes by Neighbor Matching“ nach Nikolic bekannt. In 9 sind diesbezüglich zwei Ähnlichkeitsmatrixen zwischen Knoten 34 von zwei Modell-Graphen 24 dargestellt. In einer linken Abbildung von 9 ist die Ähnlichkeitsmatrix ohne „Neighbor Matching“ und in einer rechten Abbildung mit „Neighbor Matching“ dargestellt.
  • Eine Ähnlichkeit eines Knotens 34 des Modell-Graphen 24 des aktuellen FPGA-Designs 10 eines Knotens 34 des Modell-Graphen 24 der FPGA-Implementierung 14 aus der Datenbank 22 wird dabei basierend auf einer Übereinstimmung von Differenzierungspunkten ermittelt. Die Differenzierungspunkte umfassen beispielsweise einen Block-/Netzlistenpfad, einen Block-/Netzlistentyp, beispielsweise addieren/multiplizieren, Block-/Netzlistenparameter, z.B. Bitbreite, Binärpunktposition. Vorliegend erfolgt eine Gewichtung der Differenzierungspunkte.
  • Ausgehend von dem so bestimmten Maß für die Ähnlichkeit der beiden Modell-Graphen 24 wird nunmehr überprüft, ob die Ähnlichkeit des Modell-Graphen 24 des aktuellen FPGA-Designs 10 mit dem Modell-Graphen 24 der FPGA-Implementierung 14 aus der Datenbank 22 höher ist, als eine Ähnlichkeit des Modell-Graphen 24 des aktuellen FPGA-Designs 10 mit einem besten Modell-Graphen 24 aus der Datenbank 22. Wenn der Modell-Graph 24 aus der Datenbank 22 der erste Modell-Graph 24 ist, für den die Ähnlichkeit mit dem Modell-Graphen 24 des aktuellen FPGA-Designs 10 ermittelt wurde, wird der Modell-Graph 24 aus der Datenbank 22 als bester Modell-Graph 24 oder Referenz 26 übernommen. Andernfalls wird die Referenz 26 nur geändert, wenn der Modell-Graphen 24 aus der Datenbank 22 eine höhere Ähnlichkeit aufweist, als die bisherige Referenz 26. Dies erfolgt - wenn anwendbar - in Schritt S160. Das Verfahren kehrt dann zu Schritt S150 zurück, wenn in der Datenbank 22 noch weitere Modell-Graphen 24 zum Vergleich enthalten sind. Auch wird überprüft, ob die Synthese aus Schritt S100 schon beendet ist. Der Vergleich wird nur in Schritt S150 fortgesetzt, wenn die Synthese aus Schritt S100 noch nicht abgeschlossen ist.
  • Wenn also Synthese aus Schritt S100 abgeschlossen ist, oder in der Datenbank 22 keine weiteren Modell-Graphen 24 zum Vergleich enthalten sind, wird das Maß der Ähnlichkeit der aktuellen Referenz 26 mit einem Grenzwert verglichen. Wenn das Maß der Ähnlichkeit größer als der Grenzwert ist, wird in Schritt S170 der entsprechende Modell-Graph 24 als Referenz 26 zur Erzeugung der FPGA-Implementierung 14 in Schritt S110 bereitgestellt. Andernfalls wird dieser Teil des Verfahrens in Schritt S180 ohne Ergebnis abgebrochen. Der Grenzwert liegt hier beispielhaft bei einer Ähnlichkeit von 90%.
  • Das Erzeugen der FPGA-Implementierung 14 in Schritt S110 wird folgendermaßen durchgeführt. Zunächst wird überprüft, ob durch Schritt S170 eine ähnliche FPGA-Implementierung 14 basierend auf dem Modell-Graphen 24 ermittelt und bereitgestellt wurde. Ist dies nicht der Fall, wird in Schritt S200 ein normales, konventionelles Platzieren und Verbinden durchgeführt, um die FPGA-Implementierung 14 zu erstellen. Andernfalls wird das Verfahren mit Schritt S210 fortgesetzt.
  • In Schritt S210 wird für die Referenz die FPGA-Implementierung 14 aus der Datenbank 22 geladen. In Schritt S220 erfolgt dann eine inkrementelles Platzieren und Verbinden basierend auf der FPGA-Implementierung 14 aus der Datenbank 22.
  • Die Datenbank 22 wird wie in 3 dargestellt befüllt. In Schritt S130 werden jeweils die Netzliste 12 des aktuellen FPGA-Designs 10, der dazugehörige Modell-Graph 24 und die erzeugte FPGA-Implementierung 14 als Artefakt 20 des FPGA-Modells 10 in der Datenbank 22 gespeichert. Jedes FPGA-Design 10 bildet somit automatisch ein Artefakt 20 in der Datenbank 22 für einen späteren Vergleich für ein dann neueres FPGA-Design 10.
  • Als hier nicht dargestellter Hintergrundschritt werden zusätzlich Ähnlichkeiten von Beziehungen zwischen den in der Datenbank 22 enthaltenen Modell-Graphen 24 berechnet. Der Schritt des Errechnens der Ähnlichkeiten von Beziehungen zwischen den Modell-Graphen 24 der in der Datenbank 22 enthaltenen Artefakte 20 erfolgt dabei in Phasen, in denen freie Ressourcen genutzt werden können. Es wird ein Similaritätsgraph 30 aus mehreren FPGA-Modellen 10 erstellt. Verschiedene Similaritätsgraphen 30 sind in den 5 bis 7 dargestellt. Dabei sind untersuchte Ähnlichkeiten zwischen zwei FPGA-Modellen 10 als Kante 32 zwischen den entsprechenden zwei Knoten 34, die FPGA-Modelle 10 repräsentieren, und mit einem Gewicht 36 als Maß der Ähnlichkeit angegeben. Der Similaritätsgraph 30 wird auch als Ähnlichkeitsdiagramm bezeichnet.
  • Dabei zeigt der Similaritätsgraph 30 in 5 lediglich Kanten 32 zwischen wenigen Knoten 34, während die Similaritätsgraphen 30 in den 6 und 7 vollständige Similaritätsgraphen 30 sind. Ausgehend von bereits ermittelten Ähnlichkeiten zwischen Knoten 34, die als Kanten 32 mit durchgezogener Linie dargestellt sind, werden die Gewichte 36 zusätzlicher Kanten 38, die als gestrichelte Linie dargestellt sind, ermittelt. Die Vervollständigung kann auf verschiedene Arten erreicht werden. Dazu werden nach einer Brute-Force-Methode die Gewicht 36 der zusätzlichen Kanten 38 zur Vollvermaschung des Similaritätsgraphen 30 sukzessive durch weitere Ähnlichkeitsanalysen ergänzt.
  • 7 zeigt eine Variante zur Vervollständigung des dortigen Similaritätsgraphen 30 basierend auf einer effizienten Berechnungsreihenfolge vorhandener Kanten 32 von FPGA-Designs 10. Dabei wird eine Ähnlichkeit zwischen zwei Knoten 34 auf Basis der vorhandenen Kanten 32, wo sich potentiell hohe Ähnlichkeiten befinden können, abgeschätzt, um für diese vorrangig eine Ähnlichkeitsanalyse durchzuführen. Somit können die zusätzlichen Kanten 38 durch eine Multiplikation der Gewichte 36 der vorhandenen Kanten 32 abgeschätzt werden. Dies erfolgt in 7 beispielhaft für eine zusätzliche Kante 38 zwischen den mit ,2' und ,4` gekennzeichneten Knoten 34, indem die Ähnlichkeiten entlang der gepunkteten Pfeile 40 multipliziert werden, um die Ähnlichkeit zwischen den beiden Knoten 34 abzuschätzen. Ausgehend davon können Gewichte 36 für Kanten 32 mit einer hohen ermittelten Ähnlichkeit primär bestimmt werden.
  • Basierend auf den Similaritätsgraphen 30 kann der Vergleich in Schritt S150 vereinfacht und beschleunigt werden.
  • Bezugszeichenliste
  • FPGA-Design 10
    Netzliste 12
    FPGA-Implementierung 14
    Bitstrom 16
    Artefakt 20
    Datenbank 22
    Modell-Graph 24
    Referenz 26
    Similaritätsgraph, Ähnlichkeitsdiagramm 30
    Kante 32
    Knoten 34
    Gewicht 36
    zusätzliche Kante 38
    gepunkteter Pfeil 40

Claims (14)

  1. Verfahren zum Generieren einer FPGA-Implementierung (14) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die Schritte Synthese einer Netzliste (12) aus dem FPGA-Design (10), und Erzeugen der FPGA-Implementierung (14) aus der Netzliste (12), wobei das Verfahren ein Suchen einer ähnlichen FPGA-Implementierung (14) umfasst, und der Schritt des Erzeugens der FPGA-Implementierung (14) aus der Netzliste (12) unter Verwendung der ähnlichen FPGA-Implementierung (14) erfolgt, dadurch gekennzeichnet, dass das Verfahren einen Schritt zum Erzeugen einer Graphen-basierten Repräsentation basierend auf dem FPGA-Design (10) umfasst, und der Schritt des Suchens einer ähnlichen FPGA-Implementierung (14) ein Vergleichen der Graphen-basierten Repräsentation des FPGA-Designs (10) mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) umfasst.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das FPGA-Design (10) eine Teilimplementierung umfasst, das Suchen einer ähnlichen FPGA-Implementierung (14) ein Suchen einer ähnlichen Teilimplementierung umfasst, und der Schritt des Erzeugens der FPGA-Implementierung (14) unter Verwendung der ähnlichen Teilimplementierung erfolgt.
  3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, dass das Suchen einer ähnlichen FPGA-Implementierung (14) ein Suchen einer ähnlichen FPGA-Implementierung (14) in einer Datenbank (22) vorheriger FPGA-Implementierungen (14) umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren einen Schritt zum Identifizieren von einem geänderten Teilbereich des FPGA-Designs (10) umfasst, die Synthese einer Netzliste (12) die Synthese der Netzliste (12) für den geänderten Teilbereich des FPGA-Designs (10) umfasst, und das Erzeugen einer FPGA-Implementierung (14) ein Erzeugen der FPGA-Implementierung (14) für die Netzliste (12) des geänderten Teilbereichs des FPGA-Designs (10) umfasst.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren einen Schritt zum Bestimmen eines Maßes einer Ähnlichkeit zwischen der Graphen-basierten Repräsentation des FPGA-Designs (10) und der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) umfasst, und das Verfahren einen konventionellen Schritt zum Erzeugen der FPGA-Implementierung (14) aus der Netzliste (12) ohne Verwendung einer ähnlichen FPGA-Implementierung (14) umfasst, wenn das Maß der Ähnlichkeit unter einem Grenzwert liegt.
  6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Vergleichens der Graphen-basierten Repräsentation des FPGA-Designs (10) mit der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) ein Lösen eines linearen Optimierungsproblems, bei dem zu jedem Knoten in einem Graph der ähnlichste Knoten in einem anderen Graph identifiziert wird, ohne dass ein Knoten doppelt zugeordnet wird, umfasst.
  7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren einen Schritt zum Bestimmen einer Ähnlichkeit eines Knotens der Graphen-basierten Repräsentation des FPGA-Designs (10) mit einem Knoten der Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) mit einem Bestimmen einer Übereinstimmung von Differenzierungspunkten umfasst.
  8. Verfahren nach dem vorhergehenden Anspruch 7, dadurch gekennzeichnet, dass der Schritt des Bestimmens einer Übereinstimmung von Differenzierungspunkten eine Gewichtung der Differenzierungspunkte umfasst.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren einen zusätzlichen Schritt zum Durchführen einer Ähnlichkeitsanalyse einer Mehrzahl in der Datenbank (22) enthaltenen Graphen (24) und ein Speichern der errechneten Ähnlichkeiten in einem Ähnlichkeitsdiagramm (30) oder -matrix umfasst.
  10. Verfahren nach dem vorhergehenden Anspruch 9, dadurch gekennzeichnet, dass das Verfahren einen zusätzlichen Schritt zum Errechnen von Ähnlichkeiten von Beziehungen zwischen den in der Datenbank (22) enthaltenen Graphen (24) umfasst.
  11. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren einen zusätzlichen Schritt zum vorherigen Ermitteln von zu erwartenden hohen Ähnlichkeiten von noch nicht bestimmten Beziehungen anhand bereits bestimmter Ähnlichkeiten umfasst.
  12. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Vergleichens der Graphen-basierten Repräsentation des FPGA-Designs (10) mit einer Graphen-basierten Repräsentation der zumindest einen ähnlichen FPGA-Implementierung (14) ein Nachbar-Matching zur Berücksichtigung von Nachbarschaftsbeziehungen umfasst.
  13. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Erzeugens einer Graphen-basierten Repräsentation basierend auf dem FPGA-Design (10) eine De-Hierarchisierung des FPGA-Designs (10) unter Berücksichtigung von virtuellen Verbindungen und ein Anwenden einer Transformationsfunktion basierend auf der De-Hierarchisierung des FPGA-Designs (10) umfasst.
  14. Verfahren zum Generieren eines Bitstroms (16) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung, umfassend die Schritte Generieren einer FPGA-Implementierung (14) basierend auf einem FPGA-Design (10) als FPGA-Modell und/oder einer Hardwarebeschreibung nach einem der vorhergehende Ansprüche 1 bis 13, und Erzeugen des Bitstroms (16) aus der generierten FPGA-Implementierung (14).
DE102018100423.0A 2018-01-10 2018-01-10 Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche Pending DE102018100423A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102018100423.0A DE102018100423A1 (de) 2018-01-10 2018-01-10 Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche
US16/207,457 US10706196B2 (en) 2018-01-10 2018-12-03 Incremental generation of an FPGA implementation with a graph-based similarity search
CN201811616236.2A CN110020456A (zh) 2018-01-10 2018-12-28 利用基于图的相似性搜索逐步生成fpga实现的方法
JP2019001636A JP7065794B2 (ja) 2018-01-10 2019-01-09 グラフベースの類似度検索を用いたfpga実装のインクリメンタル方式による生成

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018100423.0A DE102018100423A1 (de) 2018-01-10 2018-01-10 Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche

Publications (1)

Publication Number Publication Date
DE102018100423A1 true DE102018100423A1 (de) 2019-07-11

Family

ID=66995361

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018100423.0A Pending DE102018100423A1 (de) 2018-01-10 2018-01-10 Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche

Country Status (4)

Country Link
US (1) US10706196B2 (de)
JP (1) JP7065794B2 (de)
CN (1) CN110020456A (de)
DE (1) DE102018100423A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836863A (zh) * 2021-09-30 2021-12-24 安徽大学 一种Logisim电路图的查重方法及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353182B (zh) * 2020-03-11 2023-05-05 电子科技大学 一种面向fpga芯片的网表环路识别方法
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3196950B2 (ja) * 1993-11-30 2001-08-06 日本電信電話株式会社 回路情報の検証システム
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
JPH11219379A (ja) * 1998-01-30 1999-08-10 Nec Eng Ltd Vhdlモデルの変更方法
US6453454B1 (en) 1999-03-03 2002-09-17 Oridus Inc. Automatic engineering change order methodology
US7017043B1 (en) * 1999-03-19 2006-03-21 The Regents Of The University Of California Methods and systems for the identification of circuits and circuit designs
US7055120B2 (en) * 2000-12-06 2006-05-30 Cadence Design Systems, Inc. Method and apparatus for placing circuit modules
US7237214B1 (en) * 2003-03-04 2007-06-26 Synplicity, Inc. Method and apparatus for circuit partitioning and trace assignment in circuit design
US7394288B1 (en) * 2004-12-13 2008-07-01 Massachusetts Institute Of Technology Transferring data in a parallel processing environment
US7284228B1 (en) * 2005-07-19 2007-10-16 Xilinx, Inc. Methods of using ant colony optimization to pack designs into programmable logic devices
US8136076B2 (en) * 2006-08-31 2012-03-13 Fuji Xerox Co., Ltd. Method and system for mounting circuit design on reconfigurable device
KR100935124B1 (ko) * 2006-12-04 2010-01-06 후지쯔 가부시끼가이샤 회로 설계 지원 장치, 회로 설계 지원 방법, 회로 설계지원 프로그램을 기록한 컴퓨터 판독가능한 기록매체 및프린트 기판의 제조 방법
US20080162777A1 (en) * 2006-12-29 2008-07-03 Sap Ag Graph abstraction pattern for generic graph evaluation
US8060355B2 (en) * 2007-07-27 2011-11-15 Synopsys, Inc. Automatic, hierarchy-independent partitioning method for transistor-level circuit simulation
CN101620643B (zh) * 2009-07-03 2011-03-09 中国人民解放军国防科学技术大学 一种基于fpga的体系结构仿真系统设计方法
US8196081B1 (en) 2010-03-31 2012-06-05 Xilinx, Inc. Incremental placement and routing
US8533643B2 (en) * 2010-12-17 2013-09-10 Advanced Micro Devices, Inc. Method and apparatus for performing template-based classification of a circuit design
WO2012103151A2 (en) * 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
CN102054110A (zh) * 2011-01-27 2011-05-11 复旦大学 Fpga可编程逻辑块通用装箱方法
US8904325B2 (en) * 2012-01-31 2014-12-02 Mentor Graphics Corporation Verification test set and test bench map maintenance
CN103366028B (zh) * 2012-03-31 2016-03-16 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
US8578311B1 (en) * 2012-05-09 2013-11-05 International Business Machines Corporation Method and system for optimal diameter bounding of designs with complex feed-forward components
US10152557B2 (en) * 2014-01-31 2018-12-11 Google Llc Efficient similarity ranking for bipartite graphs
US9449133B2 (en) 2014-05-07 2016-09-20 Lattice Semiconductor Corporation Partition based design implementation for programmable logic devices
US9444702B1 (en) * 2015-02-06 2016-09-13 Netspeed Systems System and method for visualization of NoC performance based on simulation output
US9875333B1 (en) * 2016-01-19 2018-01-23 Cadence Design Systems, Inc. Comprehensive path based analysis process
CN105843982B (zh) * 2016-03-07 2019-04-12 深圳市紫光同创电子有限公司 用于可编程逻辑器件的位流生成方法、装置及设计系统
JP2017191556A (ja) 2016-04-15 2017-10-19 富士通株式会社 類似度検索装置、類似度検索方法および類似度検索プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836863A (zh) * 2021-09-30 2021-12-24 安徽大学 一种Logisim电路图的查重方法及系统
CN113836863B (zh) * 2021-09-30 2024-05-28 安徽大学 一种Logisim电路图的查重方法及系统

Also Published As

Publication number Publication date
US10706196B2 (en) 2020-07-07
JP7065794B2 (ja) 2022-05-12
US20190213294A1 (en) 2019-07-11
JP2019121404A (ja) 2019-07-22
CN110020456A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
DE10143101A1 (de) Verfahren zur Validierung von Simulationsergebnissen eines Systems sowie darauf aufbauender Äquivalenzvergleich digitaler Schaltungen
DE112017007224T5 (de) Momentaufnahmen-Verwaltung in einer Blockchain
DE69532307T2 (de) Ausdrucks-Propagierung für hierarchisches Netzlisten
DE102018100423A1 (de) Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
EP3719811A1 (de) Konsistenz von datenkennzeichnungen bei der medizinischen bildverarbeitung zur zellklassifizierung
EP2945083A1 (de) Verfahren zur automatisierten erstellung einer netzliste eines fpga-programms
DE102007018622A1 (de) Layout-Zellen, Layout-Zellenanordnung, Verfahren zum Erzeugen einer Layout-Zelle, Verfahren zum Erzeugen einer Layout-Zellenanordnung, Computerprogrammprodukte
DE3854755T2 (de) Prozess zur Herstellung von Halbleitern, bei dem die Bildverzeichnung zwischen dem Muster auf der Halbleiteroberfläche und der dieses erzeugenden Maske kompensiert wird.
WO2021008836A1 (de) Vorrichtung und computerimplementiertes verfahren für die verarbeitung digitaler sensordaten und trainingsverfahren dafür
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE102019124928A1 (de) Integriertes schaltungsdesign unter verwendung von fuzzy-maschinenlernen
DE112021005568T5 (de) Datenverarbeitungsvorrichtung und Datenverarbeitungsverfahren
DE102020215589A1 (de) Steuern eines deep-sequence-modells mit prototypen
DE112019000382T5 (de) GANZZAHLIGER MULTIPLIKATOR MIT MEHRFACHER GENAUIGKEIT DURCH MATRIX-MATRIX-MULTIPLIKATIONEN UNTER VERWENDUNG EINES 16-BIT-FLIEßKOMMA-MULTIPLIKATORS
DE102021204550A1 (de) Verfahren zum Erzeugen wenigstens eines Datensatzes zum Trainieren eines Algorithmus maschinellen Lernens
DE102019113874A1 (de) Hochpräzises niedrigbit-convolutional-neural-network
DE10003101A1 (de) Nebenbedingungs-Erzeugungsvorrichtung für Logiksynthese und Nebenbedingungs-Erzeugungsverfahren dafür
DE112017004431T5 (de) Partitionierung unter verwendung einer korrelations-metaheuristik
DE102015205901A1 (de) Verfahren zur Berechnung einer Route für ein Landfahrzeug
DE10222699B4 (de) Computergestütztes Verfahren und Vorrichtung zur Optimierung von Fahrzeugstrukturen und -komponenten
DE10313949A1 (de) Schaltungsentwurfsduplizierungssystem
DE102017104049B4 (de) Verfahren und vorrichtung zum überprüfen der zuverlässigkeit eines chips
DE10222700A1 (de) Optimierungsverfahren mit validierten Approximationsmodellen
EP1396801A1 (de) Verfahren zum Entwickeln eines elektronischen Bausteins

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017500000

Ipc: G06F0030000000

R163 Identified publications notified
R081 Change of applicant/patentee

Owner name: DSPACE GMBH, DE

Free format text: FORMER OWNER: DSPACE DIGITAL SIGNAL PROCESSING AND CONTROL ENGINEERING GMBH, 33102 PADERBORN, DE