Synteza wysokiego poziomu - High-level synthesis

Synteza na wysokim poziomie ( HLS ), czasami nazywane syntezy C , elektroniczny układ poziomu (ESL) syntezy , synteza algorytmicznego lub synteza behawioralna jest zautomatyzowany proces projektowania, które bierze streszczenie zachowania specyfikacji systemu cyfrowego i znaleźć rejestr -struktura poziomu transferu realizująca dane zachowanie.

Synteza zaczyna się od wysokopoziomowej specyfikacji problemu, gdzie zachowanie jest generalnie oddzielone od mechaniki obwodów niskiego poziomu, takich jak taktowanie na poziomie zegara . Wczesny HLS badał różne języki specyfikacji danych wejściowych, chociaż ostatnie badania i aplikacje komercyjne ogólnie akceptują możliwe do syntezy podzbiory ANSI C / C++ / SystemC / MATLAB . Kod jest analizowany, ograniczony architektonicznie i planowany do transkompilacji do projektu poziomu transferu rejestru (RTL) w języku opisu sprzętu (HDL), który z kolei jest powszechnie syntetyzowany do poziomu bramki za pomocąnarzędzie do syntezy logiki .

Celem HLS jest umożliwienie projektantom sprzętu wydajnego budowania i weryfikowania sprzętu, dając im lepszą kontrolę nad optymalizacją ich architektury projektowej oraz poprzez naturę pozwalającą projektantowi na opisanie projektu na wyższym poziomie abstrakcji, podczas gdy narzędzie wykonuje Implementacja RTL. Ważną częścią procesu jest weryfikacja RTL.

Sprzęt można zaprojektować na różnych poziomach abstrakcji. Powszechnie stosowane poziomy abstrakcji są poziom bramy , poziom zarejestrować przenoszenia (RTL) oraz algorytmicznych poziom.

Podczas gdy synteza logiczna wykorzystuje opis projektu RTL, synteza wysokiego poziomu działa na wyższym poziomie abstrakcji, zaczynając od opisu algorytmicznego w języku wysokiego poziomu, takim jak SystemC i ANSI C/C++. Projektant zazwyczaj rozwija funkcjonalność modułu i protokół połączenia. Narzędzia do syntezy wysokiego poziomu obsługują mikroarchitekturę i przekształcają nieograniczony czasowo lub częściowo określony w czasie kod funkcjonalny w w pełni czasowe implementacje RTL, automatycznie tworząc szczegóły cyklu po cyklu dla implementacji sprzętowej. Implementacje (RTL) są następnie wykorzystywane bezpośrednio w konwencjonalnym przepływie syntezy logicznej w celu utworzenia implementacji na poziomie bramy.

Historia

Wczesne prace akademickie wyodrębniły planowanie, alokację i wiązanie jako podstawowe etapy syntezy wysokiego poziomu. Planowanie dzieli algorytm na kroki kontrolne, które są używane do definiowania stanów w maszynie skończonej . Każdy krok kontrolny zawiera jedną małą sekcję algorytmu, którą można wykonać w jednym cyklu zegarowym w sprzęcie. Alokacja i wiązanie mapuje instrukcje i zmienne do komponentów sprzętowych, multiplekserów, rejestrów i przewodów ścieżki danych.

Synopsys pierwszej generacji został wprowadzony przez firmę Synopsys w 1994 roku jako kompilator behawioralny i używał Verilog lub VHDL jako języków wprowadzania. Użyty poziom abstrakcji to procesy częściowo taktowane (taktowane). Narzędzia oparte na behawioralnym Verilogu lub VHDL nie były powszechnie stosowane po części, ponieważ ani języki, ani częściowo czasowa abstrakcja nie były dobrze przystosowane do modelowania zachowań na wysokim poziomie. 10 lat później, na początku 2004 r., wycofał się z eksploatacji kompilator behawioralny Synopsys .

W 1998 roku Forte Design Systems wprowadziło swoje narzędzie Cynthesizer, które używało SystemC jako języka wprowadzania zamiast Verilog lub VHDL. Cynthesizer został przyjęty przez wiele japońskich firm w 2000 roku, ponieważ Japonia miała bardzo dojrzałą społeczność użytkowników SystemC. Pierwsza synteza wysokiego poziomu została osiągnięta w 2001 roku przez Sony przy użyciu Cynthesizera. Adopcja w Stanach Zjednoczonych rozpoczęła się na dobre w 2008 roku.

Wejście źródłowe

Najpopularniejsze wejścia źródłowe do syntezy wysokiego poziomu są oparte na standardowych językach, takich jak ANSI C / C++ , SystemC i MATLAB .

Synteza wysokiego poziomu zazwyczaj zawiera również specyfikację wykonywalną z dokładnością do bitów jako dane wejściowe, ponieważ w celu uzyskania wydajnej implementacji sprzętowej potrzebne są dodatkowe informacje na temat dopuszczalnego błędu średniokwadratowego lub wskaźnika błędów bitowych itp. Na przykład, jeśli projektant zaczyna się od filtru FIR zapisanego przy użyciu typu zmiennoprzecinkowego „podwójnego”, zanim będzie mógł uzyskać wydajną implementację sprzętową, musi przeprowadzić udoskonalenie numeryczne, aby uzyskać implementację stałoprzecinkową. Udoskonalenie wymaga dodatkowych informacji o poziomie szumu kwantyzacji, który może być tolerowany, prawidłowych zakresach wejściowych itp. Ta specyfikacja z dokładnością do bitów sprawia, że ​​specyfikacja źródła syntezy wysokiego poziomu jest funkcjonalnie kompletna. Zwykle narzędzia wnioskują z kodu wysokiego poziomu o maszynie skończonej i ścieżce danych, które implementują operacje arytmetyczne.

Etapy procesu

Proces syntezy wysokiego poziomu składa się z szeregu czynności. Różne narzędzia syntezy wysokiego poziomu wykonują te czynności w różnej kolejności przy użyciu różnych algorytmów. Niektóre narzędzia do syntezy wysokiego poziomu łączą niektóre z tych czynności lub wykonują je iteracyjnie, aby uzyskać pożądane rozwiązanie.

  • Przetwarzanie leksykalne
  • Optymalizacja algorytmu
  • Kontrola/Analiza przepływu danych
  • Przetwarzanie biblioteki
  • Alokacja zasobów
  • Planowanie
  • Wiązanie jednostki funkcjonalnej
  • Rejestracja powiązania
  • Przetwarzanie wyjściowe
  • Rebundling danych wejściowych

Funkcjonalność

Ogólnie algorytm może być wykonywany w wielu cyklach zegarowych przy niewielkiej liczbie zasobów sprzętowych lub w mniejszej liczbie cykli zegarowych przy użyciu większej liczby jednostek ALU, rejestrów i pamięci. Odpowiednio, z jednego opisu algorytmicznego, różne mikroarchitektury sprzętowe mogą być generowane przez kompilator HLS zgodnie z dyrektywami podanymi narzędziu. Jest to taki sam kompromis między szybkością wykonywania a złożonością sprzętu, jaki widać, gdy dany program jest uruchamiany na konwencjonalnych procesorach o różnej wydajności, ale wszystkie działają z mniej więcej taką samą częstotliwością zegara.

Ograniczenia architektoniczne

Ograniczenia syntezy dla architektury mogą być automatycznie stosowane na podstawie analizy projektu. Te ograniczenia można podzielić na

  • Hierarchia
  • Berło
  • Pamięć
  • Pętla
  • Ograniczenia czasowe niskiego poziomu
  • Iteracja

Synteza interfejsu

Synteza interfejsu odnosi się do zdolności do przyjęcia czystego opisu C/C++ jako danych wejściowych, a następnie użycia technologii automatycznej syntezy interfejsu do sterowania taktowaniem i protokołem komunikacyjnym na interfejsie projektowym. Umożliwia to analizę interfejsu i eksplorację pełnego zakresu opcji interfejsów sprzętowych, takich jak przesyłanie strumieniowe, jedno- lub dwuportowa pamięć RAM oraz różne mechanizmy uzgadniania. Dzięki syntezie interfejsów projektant nie osadza protokołów interfejsu w opisie źródłowym. Przykładami mogą być: połączenie bezpośrednie, jedna linia, uzgadnianie dwóch linii, FIFO.

Sprzedawcy

Dane zgłoszone w ostatniej ankiecie

Status Kompilator Właściciel Licencja Wejście Wyjście Rok Domena
Stanowisko testowe
FP FixP
W użyciu Stratus HLS Systemy projektowania kadencji Handlowy C/C++ SystemC RTL 2015 Wszystko tak tak tak
SIERPIEŃ Laboratorium TIMA. Akademicki podzbiór C VHDL 2012 Wszystko tak Nie Nie
podniecać Y Eksploracje Handlowy C VHDL/Verilog 2001 Wszystko tak Nie tak
Bambu PoliMi Akademicki C VHDL/Verilog 2012 Wszystko tak tak Nie
Bluespec BlueSpec Inc. Handlowy BSV SystemVerilog 2007 Wszystko Nie Nie Nie
QCC CacheQ Systems, Inc. Handlowy C/C++/Fortan Host Executable + plik bitowy FPGA (SystemVerilog jest pośrednim) 2018 Wszystko — obliczenia wielordzeniowe i heterogeniczne Tak (C++) tak tak
CHC Altium Handlowy podzbiór C VHDL/Verilog 2008 Wszystko Nie tak tak
Współtwórca Przyspieszony impulsem Handlowy Impuls-C VHDL 2003
Strumieniowe przesyłanie obrazu
tak tak Nie
Koder HDL MathWorks Handlowy MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 Systemy sterowania, przetwarzanie sygnału, łączność bezprzewodowa, radar, komunikacja, obraz i widzenie komputerowe tak tak tak
CyberWorkbench NEC Handlowy BDL, System C VHDL/Verilog 2011 Wszystko Cykl /
Formalne
tak tak
Katapultować Mentor
(firma Siemens)
Handlowy C, C++, SystemC VHDL/Verilog 2004 Wszystko tak tak tak
Krasnolud PT. Fajans Akademicki podzbiór C VHDL 2012 Wszystko tak tak tak
GAUT U. Bretania Akademicki C/C++ VHDL 2010 DSP tak Nie tak
Hastlayer Technologie Lombiq Handlowy C#/C++/F#...
( .NET )
VHDL 2015 .INTERNET tak tak tak
Natychmiastowy SoC Rdzenie FPGA Handlowy C/C++ VHDL/Verilog 2019 Wszystko tak Nie Nie
Kompilator syntezy wysokiego poziomu firmy Intel Intel FPGA (dawniej Altera) Handlowy C/C++ Verilog 2017 Wszystko tak tak tak
LegUp HLS Obliczanie LegUp Handlowy C/C++ Verilog 2015 Wszystko tak tak tak
LegUp U. Toronto Akademicki C Verilog 2010 Wszystko tak tak Nie
MaxCompiler Maxeler Handlowy MaxJ RTL 2010 Przepływ danych Nie tak Nie
ROCCC Żakard Comp. Handlowy podzbiór C VHDL 2010 Streaming Nie tak Nie
Symfonia C Synopsys Handlowy C/C++ VHDL/Verilog/
SystemC
2010 Wszystko tak Nie tak
VivadoHLS
(dawniej AutoPilot
od AutoESL)
Xilinx Handlowy C/C++/SystemC VHDL/Verilog/
SystemC
2013 Wszystko tak tak tak
kiwi U. Cambridge Akademicki C# Verilog 2008 .INTERNET Nie tak tak
szympansy U. Waszyngton Akademicki C VHDL 2008 Wszystko Nie Nie Nie
gcc2verilog Korea Południowa Akademicki C Verilog 2011 Wszystko Nie Nie Nie
Herkules Kompilatory Ajax Handlowy C/NAC VHDL 2012 Wszystko tak tak tak
Shang U. Illinois Akademicki C Verilog 2013 Wszystko tak ? ?
Trójząb Los Alamos Holandia Akademicki podzbiór C VHDL 2007 Naukowy Nie tak Nie
Aban-
doned
AccelDSP Xilinx Handlowy MATLAB VHDL/Verilog 2006 DSP tak tak tak
C2H Alternatywa Handlowy C VHDL/Verilog 2006 Wszystko Nie Nie Nie
CtoVerilog U. Hajfa Akademicki C Verilog 2008 Wszystko Nie Nie Nie
DEFACTO U. Południowa Cailf. Akademicki C RTL 1999 DSE Nie Nie Nie
Garp U. Berkeley Akademicki podzbiór C strumień bitów 2000 Pętla Nie Nie Nie
MECZ U. Północny Zachód Akademicki MATLAB VHDL 2000 Obraz Nie Nie Nie
Napa-C Sarnoff Corp. Akademicki podzbiór C VHDL/Verilog 1998 Pętla Nie Nie Nie
PipeRench U.Carnegie M. Akademicki DIL bistream 2000 Strumień Nie Nie Nie
WOREK U. Kolorado Akademicki WOREK VHDL 2003 Obraz Nie Nie Nie
MorzeOgórek U. Brigham Y. Akademicki Jawa EDIF 2002 Wszystko Nie tak tak
ISKRA U. Cal. Irvine Akademicki C VHDL 2003 Kontrola Nie Nie Nie

Zobacz też

Bibliografia

Dalsza lektura

  • Michael Fingeroff (2010). Synteza wysokiego poziomu Blue Book . Xlibris Corporation. Numer ISBN 978-1-4500-9724-6.
  • Coussy, P.; Gajski, DD; Meredith, M.; Takach, A. (2009). „Wprowadzenie do syntezy wysokiego poziomu”. Projektowanie i testowanie komputerów IEEE . 26 (4): 8–17. doi : 10.1109/MDT.2009.69 . S2CID  52870966 .
  • Ewout SJ Martens; Georges Gielen (2008). Wysokopoziomowe modelowanie i synteza analogowych układów scalonych . Skoczek. Numer ISBN 978-1-4020-6801-0.
  • Saraju Mohanty ; N. Ranganathana; E. Kougianos i P. Patra (2008). Niskoenergetyczna synteza wysokiego poziomu dla nanoskalowych obwodów CMOS . Skoczek. Numer ISBN 978-0387764733.
  • Alicja C. Parker ; Josef Tirat-Gefen; Suhrid A. Wadekar (2007). „Projektowanie na poziomie systemu”. W Wai-Kai Chen (red.). Podręcznik VLSI (wyd. 2). CRC Prasa. Numer ISBN 978-0-8493-4199-1. rozdział 76.
  • Shahrzad Mirkhani; Zainalabedin Navabi (2007). „Języki projektowania na poziomie systemu”. W Wai-Kai Chen (red.). Podręcznik VLSI (wyd. 2). CRC Prasa. Numer ISBN 978-0-8493-4199-1. rozdział 86. obejmuje użycie C/C++, SystemC, TML, a nawet UML
  • Wapnowanie Xiu (2007). Demistyfikowana metodologia projektowania obwodów VLSI: taksonomia pojęciowa . Wiley-IEEE. Numer ISBN 978-0-470-12742-1.
  • Johna P. Elliotta (1999). Zrozumienie syntezy behawioralnej: praktyczny przewodnik po projektowaniu wysokiego poziomu . Skoczek. Numer ISBN 978-0-7923-8542-4.
  • Nane, Razvan; Sima, Vlad-Mihai; Pilato, chrześcijanin; Choi, Dzongsok; Fort, Blair; Canis, Andrzej; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandiego, Fabrycego; Andersona, Jasona; Bertels, Koen (2016). „Ankieta i ocena narzędzi syntezy wysokiego poziomu FPGA”. Transakcje IEEE dotyczące komputerowego wspomagania projektowania układów i systemów scalonych . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . S2CID  8749577 .
  • Gupta, Rajesh; Piwowar, Forrest (2008). „Synteza wysokiego poziomu: retrospektywa”. „Synteza wysokiego poziomu: retrospektywa” . Skoczek. s. 13–28. doi : 10.1007/978-1-4020-8588-8_2 . Numer ISBN 978-1-4020-8587-1.

Zewnętrzne linki