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

Siehe auch

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.

Externe Links