Synthese auf hohem Niveau - High-level synthesis
High-Level-Synthese ( HLS ), manchmal auch als C-Synthese , Electronic System-Level (ESL)-Synthese , algorithmische Synthese oder Verhaltenssynthese bezeichnet , ist ein automatisierter Entwurfsprozess, der eine abstrakte Verhaltensspezifikation eines digitalen Systems verwendet und ein Register findet -Übertragungsebenenstruktur, die das gegebene Verhalten realisiert.
Die Synthese beginnt mit einer High-Level - Spezifikation des Problems, in dem Verhalten im Allgemeinen von Low-Level - Schaltungsmechanik wie entkoppelt Takt -Niveau Timing. Frühes HLS erforschte eine Vielzahl von Eingabespezifikationssprachen, obwohl neuere Forschungen und kommerzielle Anwendungen im Allgemeinen synthetisierbare Teilmengen von ANSI C / C++ / SystemC / MATLAB akzeptieren . Der Code analysiert wird, architektonisch eingeschränkt und planmäßige transcompile in eine Register-Transfer - Ebene (RTL) Design in einer Hardware - Beschreibungssprache (HDL), die wiederum gemeinsam mit der synthetisierten Gatterebene durch die Verwendung von aLogiksynthese- Tool.
Das Ziel von HLS besteht darin, Hardwaredesignern die effiziente Erstellung und Verifizierung von Hardware zu ermöglichen, indem ihnen eine bessere Kontrolle über die Optimierung ihrer Designarchitektur gegeben wird und dem Designer ermöglicht wird, das Design auf einer höheren Abstraktionsebene zu beschreiben, während das Tool dies tut RTL-Implementierung. Die Verifizierung der RTL ist ein wichtiger Teil des Prozesses.
Hardware kann auf unterschiedlichen Abstraktionsebenen entworfen werden. Die allgemein verwendeten Abstraktionsebenen sind Gate-Ebene , Register-Transfer-Ebene (RTL) und algorithmische Ebene.
Während die logische Synthese eine RTL-Beschreibung des Designs verwendet, arbeitet die High-Level-Synthese auf einer höheren Abstraktionsebene, beginnend mit einer algorithmischen Beschreibung in einer High-Level-Sprache wie SystemC und ANSI C/C++. Der Designer entwickelt typischerweise die Modulfunktionalität und das Verbindungsprotokoll. Die High-Level-Synthese-Tools handhaben die Mikroarchitektur und wandeln nicht getakteten oder teilweise getakteten Funktionscode in voll getaktete RTL-Implementierungen um, wodurch automatisch zyklusweise Details für die Hardwareimplementierung erstellt werden. Die (RTL)-Implementierungen werden dann direkt in einem herkömmlichen Logiksynthesefluss verwendet, um eine Implementierung auf Gate-Ebene zu erzeugen.
Geschichte
Frühe wissenschaftliche Arbeiten extrahierten Scheduling, Allocation und Binding als grundlegende Schritte für die High-Level-Synthese. Das Scheduling unterteilt den Algorithmus in Steuerschritte, die verwendet werden, um die Zustände im endlichen Automaten zu definieren . Jeder Steuerschritt enthält einen kleinen Abschnitt des Algorithmus, der in einem einzigen Taktzyklus in der Hardware ausgeführt werden kann. Allokation und Binding ordnet die Anweisungen und Variablen den Hardwarekomponenten, Multiplexern, Registern und Drähten des Datenpfads zu.
Die Verhaltenssynthese der ersten Generation wurde 1994 von Synopsys als Behavioral Compiler eingeführt und verwendete Verilog oder VHDL als Eingabesprachen. Als Abstraktionsebene wurden teilweise getaktete (getaktete) Prozesse verwendet. Tools, die auf Behavioral Verilog oder VHDL basieren, wurden teilweise nicht weit verbreitet, da weder Sprachen noch die teilweise zeitgesteuerte Abstraktion gut geeignet waren, um Verhalten auf hohem Niveau zu modellieren. 10 Jahre später, Anfang 2004, wurde der Behavioral Compiler von Synopsys zum Ende seiner Lebensdauer .
1998 führte Forte Design Systems sein Cynthesizer-Tool ein, das SystemC als Einstiegssprache anstelle von Verilog oder VHDL verwendet. Cynthesizer wurde im Jahr 2000 von vielen japanischen Unternehmen übernommen, da Japan eine sehr ausgereifte SystemC-Benutzergemeinschaft hatte. Das erste High-Level-Synthese-Tapeout wurde 2001 von Sony mit Cynthesizer realisiert. Die Adoption in den Vereinigten Staaten begann 2008 ernsthaft.
Quelleingang
Die gängigsten Quelleingaben für die High-Level-Synthese basieren auf Standardsprachen wie ANSI C / C++ , SystemC und MATLAB .
High-Level-Synthese umfasst typischerweise auch eine bitgenaue ausführbare Spezifikation als Eingabe, da zur Ableitung einer effizienten Hardwareimplementierung zusätzliche Informationen über einen akzeptablen mittleren quadratischen Fehler oder eine akzeptable Bitfehlerrate usw. benötigt werden beginnt mit einem FIR-Filter, das mit dem Gleitkommatyp "double" geschrieben wurde, bevor er oder sie eine effiziente Hardwareimplementierung ableiten kann, müssen sie eine numerische Verfeinerung durchführen, um zu einer Festkommaimplementierung zu gelangen. Die Verfeinerung erfordert zusätzliche Informationen über den tolerierbaren Pegel des Quantisierungsrauschens, die gültigen Eingangsbereiche usw. Diese bitgenaue Spezifikation macht die High-Level-Synthesequellenspezifikation funktionell vollständig. Normalerweise leiten die Tools aus dem High-Level-Code eine Finite State Machine und einen Datapath ab, die arithmetische Operationen implementieren.
Prozessstufen
Der Syntheseprozess auf hoher Ebene besteht aus einer Reihe von Aktivitäten. Verschiedene High-Level-Synthesetools führen diese Aktivitäten in unterschiedlichen Reihenfolgen unter Verwendung unterschiedlicher Algorithmen aus. Einige High-Level-Synthesetools kombinieren einige dieser Aktivitäten oder führen sie iterativ aus, um zur gewünschten Lösung zu gelangen.
- Lexikalische Verarbeitung
- Algorithmusoptimierung
- Steuerung/Datenflussanalyse
- Bibliotheksbearbeitung
- Ressourcenzuweisung
- Terminplanung
- Bindung der Funktionseinheiten
- Anmeldung verbindlich
- Ausgabeverarbeitung
- Neubündelung des Eingangs
Funktionalität
Im Allgemeinen kann ein Algorithmus über viele Taktzyklen mit wenigen Hardwareressourcen oder über weniger Taktzyklen unter Verwendung einer größeren Anzahl von ALUs, Registern und Speichern ausgeführt werden. Dementsprechend kann aus einer algorithmischen Beschreibung eine Vielzahl von Hardware-Mikroarchitekturen von einem HLS-Compiler gemäß den dem Werkzeug gegebenen Anweisungen erzeugt werden. Dies ist der gleiche Kompromiss zwischen Ausführungsgeschwindigkeit und Hardwarekomplexität, wie man sieht, wenn ein gegebenes Programm auf herkömmlichen Prozessoren unterschiedlicher Leistung ausgeführt wird, die jedoch alle mit ungefähr der gleichen Taktfrequenz laufen.
Architektonische Einschränkungen
Synthesebeschränkungen für die Architektur können basierend auf der Entwurfsanalyse automatisch angewendet werden. Diese Einschränkungen können unterteilt werden
- Hierarchie
- Schnittstelle
- Speicher
- Schleife
- Zeitliche Einschränkungen auf niedriger Ebene
- Wiederholung
Schnittstellensynthese
Schnittstellensynthese bezieht sich auf die Fähigkeit, eine reine C/C++-Beschreibung als Eingabe zu akzeptieren und dann eine automatisierte Schnittstellensynthesetechnologie zu verwenden, um das Timing und das Kommunikationsprotokoll auf der Designschnittstelle zu steuern. Dies ermöglicht die Schnittstellenanalyse und die Erkundung einer vollständigen Palette von Hardware-Schnittstellenoptionen wie Streaming, Single- oder Dual-Port-RAM sowie verschiedene Handshake-Mechanismen. Bei der Schnittstellensynthese bettet der Designer keine Schnittstellenprotokolle in die Quellbeschreibung ein. Beispiele könnten sein: Direktverbindung, eine Leitung, 2-Leitungs-Handshake, FIFO.
Anbieter
Daten aus der letzten Umfrage
Status | Compiler | Eigentümer | Lizenz | Eingang | Ausgabe | Jahr | Domain | Test Bench |
FP | FixP |
---|---|---|---|---|---|---|---|---|---|---|
In Benutzung | Stratus HLS | Trittfrequenz-Design-Systeme | Werbung | C/C++-SystemC | RTL | 2015 | Alle | Jawohl | Jawohl | Jawohl |
AUGH | TIMA-Labor. | Akademiker | C-Teilmenge | VHDL | 2012 | Alle | Jawohl | Nein | Nein | |
erregen | Y Erkundungen | Werbung | C | VHDL/Verilog | 2001 | Alle | Jawohl | Nein | Jawohl | |
Bambus | PoliMi | Akademiker | C | VHDL/Verilog | 2012 | Alle | Jawohl | Jawohl | Nein | |
Bluespec | BlueSpec Inc. | Werbung | BSV | SystemVerilog | 2007 | Alle | Nein | Nein | Nein | |
QCC | CacheQ-Systeme, Inc. | Werbung | C/C++/Fortan | Ausführbare Host-Datei + FPGA-Bit-Datei (SystemVerilog ist ein Zwischenprodukt) | 2018 | Alle - Multi-Core und heterogene Rechenleistung | Ja (C++) | Jawohl | Jawohl | |
CHC | Altium | Werbung | C-Teilmenge | VHDL/Verilog | 2008 | Alle | Nein | Jawohl | Jawohl | |
CoDeveloper | Impulsbeschleunigt | Werbung | Impuls-C | VHDL | 2003 | Bild- Streaming |
Jawohl | Jawohl | Nein | |
HDL-Kodierer | MathWorks | Werbung | MATLAB, Simulink, Stateflow, Simscape | VHDL / Verilog | 2003 | Steuerungssysteme, Signalverarbeitung, Drahtlos, Radar, Kommunikation, Bild und Computer Vision | Jawohl | Jawohl | Jawohl | |
CyberWorkbench | NEC | Werbung | BDL, SystemC | VHDL/Verilog | 2011 | Alle | Zyklus/ Formal |
Jawohl | Jawohl | |
Katapult | Mentor (Siemens-Geschäft) |
Werbung | C, C++, SystemC | VHDL/Verilog | 2004 | Alle | Jawohl | Jawohl | Jawohl | |
ZWERGE | TU. Delft | Akademiker | C-Teilmenge | VHDL | 2012 | Alle | Jawohl | Jawohl | Jawohl | |
GAUT | U. Bretagne | Akademiker | C/C++ | VHDL | 2010 | DSP | Jawohl | Nein | Jawohl | |
Hastlayer | Lombiq-Technologien | Werbung | C#/C++/F#... ( .NET ) |
VHDL | 2015 | .NETZ | Jawohl | Jawohl | Jawohl | |
Instant-SoC | FPGA-Kerne | Werbung | C/C++ | VHDL/Verilog | 2019 | Alle | Jawohl | Nein | Nein | |
Intel High-Level-Synthese-Compiler | Intel-FPGA (ehemals Altera) | Werbung | C/C++ | Verilog | 2017 | Alle | Jawohl | Jawohl | Jawohl | |
LegUp HLS | LegUp-Computing | Werbung | C/C++ | Verilog | 2015 | Alle | Jawohl | Jawohl | Jawohl | |
Bein hoch | U. Toronto | Akademiker | C | Verilog | 2010 | Alle | Jawohl | Jawohl | Nein | |
MaxCompiler | Maxeler | Werbung | MaxJ | RTL | 2010 | Datenfluss | Nein | Jawohl | Nein | |
ROCCC | Jacquard-Komp. | Werbung | C-Teilmenge | VHDL | 2010 | Streaming | Nein | Jawohl | Nein | |
Symphonie C | Inhaltsangabe | Werbung | C/C++ | VHDL/Verilog/ SystemC |
2010 | Alle | Jawohl | Nein | Jawohl | |
VivadoHLS (ehemals AutoPilot von AutoESL) |
Xilinx | Werbung | C/C++/SystemC | VHDL/Verilog/ SystemC |
2013 | Alle | Jawohl | Jawohl | Jawohl | |
Kiwi | U. Cambridge | Akademiker | C# | Verilog | 2008 | .NETZ | Nein | Jawohl | Jawohl | |
Schimpansen | U. Washington | Akademiker | C | VHDL | 2008 | Alle | Nein | Nein | Nein | |
gcc2verilog | Vereinigte Korea | Akademiker | C | Verilog | 2011 | Alle | Nein | Nein | Nein | |
Herkules | Ajax-Compiler | Werbung | C/NAC | VHDL | 2012 | Alle | Jawohl | Jawohl | Jawohl | |
Shang | USA, Illinois | Akademiker | C | Verilog | 2013 | Alle | Jawohl | ? | ? | |
Dreizack | Los Alamos NL | Akademiker | C-Teilmenge | VHDL | 2007 | Wissenschaftlich | Nein | Jawohl | Nein | |
Aban- doned |
AccelDSP | Xilinx | Werbung | MATLAB | VHDL/Verilog | 2006 | DSP | Jawohl | Jawohl | Jawohl |
C2H | Altera | Werbung | C | VHDL/Verilog | 2006 | Alle | Nein | Nein | Nein | |
CtoVerilog | U. Haifa | Akademiker | C | Verilog | 2008 | Alle | Nein | Nein | Nein | |
DE FACTO | U. South Cailf. | Akademiker | C | RTL | 1999 | DSE | Nein | Nein | Nein | |
Garp | U. Berkeley | Akademiker | C-Teilmenge | Bitstrom | 2000 | Schleife | Nein | Nein | Nein | |
SPIEL | U. Nordwest | Akademiker | MATLAB | VHDL | 2000 | Bild | Nein | Nein | Nein | |
Napa-C | Sarnoff Corp. | Akademiker | C-Teilmenge | VHDL/Verilog | 1998 | Schleife | Nein | Nein | Nein | |
PipeRench | U. Carnegie M. | Akademiker | DIL | bistream | 2000 | Strom | Nein | Nein | Nein | |
SACK | Vereinigte Staaten von Amerika | Akademiker | SACK | VHDL | 2003 | Bild | Nein | Nein | Nein | |
Seegurke | U. Brigham Y. | Akademiker | Java | EDIF | 2002 | Alle | Nein | Jawohl | Jawohl | |
FUNKE | U. Kal. Irvine | Akademiker | C | VHDL | 2003 | Steuerung | Nein | Nein | Nein |
- MATLAB HDL-Coder [6] von Mathworks
- HLS-QSP von CircuitSutra Technologies
- C-zu-Silizium von Cadence Design Systems
- Gleichzeitige Beschleunigung durch gleichzeitige EDA
- Symphony C Compiler von Synopsys
- QuickPlay von PLDA
- PowerOpt von ChipVision
- Cynthesizer von Forte Design Systems (jetzt Stratus HLS von Cadence Design Systems )
- Catapult C von Calypto Design Systems , Teil von Mentor Graphics ab dem 16. September 2015
- PipelineC [7]
- CyberWorkBench von NEC
- Mega-Hardware
- C2R von CebaTech
- CoDeveloper von Impulse Accelerated Technologies
- Hercules von Nikolaos Kavvadias
- PICO von Synfora, im Juni 2010 von Synopsys übernommen (PICO = Program In/Code Out)
- xPilot von der University of California, Los Angeles
- Vsyn von vsyn.ru
- ngDesign von SynFlow
Siehe auch
- C zu HDL
- Elektronische Konstruktionsautomatisierung (EDA)
- Elektronische Systemebene (ESL)
- Logiksynthese
- High-Level-Verifizierung (HLV)
- SystemVerilog
- Hardware-Beschleunigung
Verweise
Weiterlesen
- Michael Fingeroff (2010). High-Level-Synthese Blue Book . Xlibris Corporation. ISBN 978-1-4500-9724-6.
- Coussy, P.; Gajski, DD; Meredith, M.; Takach, A. (2009). „Eine Einführung in die High-Level-Synthese“. IEEE Design & Test von Computern . 26 (4): 8–17. doi : 10.1109/MDT.2009.69 . S2CID 52870966 .
- Ewout SJ Martens; Georges Gielen (2008). High-Level-Modellierung und Synthese analoger integrierter Systeme . Springer. ISBN 978-1-4020-6801-0.
- Saraju Mohanty ; N. Ranganathan; E. Kougianos & P. Patra (2008). Low-Power High-Level-Synthese für nanoskalige CMOS-Schaltungen . Springer. ISBN 978-0387764733.
- Alice C. Parker ; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "Design auf Systemebene". In Wai-Kai Chen (Hrsg.). Das VLSI-Handbuch (2. Aufl.). CRC-Presse. ISBN 978-0-8493-4199-1. Kapitel 76.
- Shahrzad Mirkhani; Zainalabedin Navabi (2007). "Designsprachen auf Systemebene". In Wai-Kai Chen (Hrsg.). Das VLSI-Handbuch (2. Aufl.). CRC-Presse. ISBN 978-0-8493-4199-1. Kapitel 86. deckt die Verwendung von C/C++, SystemC, TML und sogar UML ab
- Liming Xiu (2007). VLSI-Schaltungsdesign-Methodik entmystifiziert: eine konzeptionelle Taxonomie . Wiley-IEEE. ISBN 978-0-470-12742-1.
- John P. Elliott (1999). Verhaltenssynthese verstehen: ein praktischer Leitfaden für High-Level-Design . Springer. ISBN 978-0-7923-8542-4.
- Nane, Razvan; Sima, Vlad-Mihai; Pilato, Christian; Choi, Jongsok; Fort, Blair; Canis, Andreas; Chen, Yu Ting; Hsiao, Hsuan; Braun, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). „Eine Umfrage und Bewertung von FPGA High-Level-Synthese-Tools“. IEEE-Transaktionen zum computergestützten Design von integrierten Schaltungen und Systemen . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . S2CID 8749577 .
- Gupta, Rajesh; Brauer, Wald (2008). „High-Level-Synthese: Eine Retrospektive“. "High-Level-Synthese: Eine Retrospektive" . Springer. S. 13–28. doi : 10.1007/978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.