Syntéza na vysoké úrovni - High-level synthesis
Syntéza na vysoké úrovni ( HLS ), někdy označovaný jako syntéza C , elektronický systém na úrovni (ESL) syntéza , algoritmické syntézy nebo syntézy chování , je automatizovaný proces návrhu, který bere abstraktní chování specifikaci digitálního systému a najít registr -struktura úrovně přenosu, která realizuje dané chování.
Syntéza začíná specifikací problému na vysoké úrovni, kde je chování obecně odděleno od nízkoúrovňových obvodových mechanik, jako je časování na úrovni hodin . Early HLS prozkoumal řadu jazyků vstupní specifikace, ačkoli nedávný výzkum a komerční aplikace obecně akceptují syntetizovatelné podmnožiny ANSI C / C ++ / SystemC / MATLAB . Kód je analyzován, architektonicky omezen a naplánován k překompilování do návrhu úrovně přenosu registru (RTL) v jazyce popisu hardwaru (HDL), který je zase běžně syntetizován na úroveň brány pomocínástroj pro syntézu logiky .
Cílem HLS je nechat hardwarové designéry efektivně vytvářet a ověřovat hardware tím, že jim poskytnou lepší kontrolu nad optimalizací jejich návrhové architektury a díky povaze návrháře popsat návrh na vyšší úrovni abstrakce, zatímco nástroj provádí Implementace RTL. Ověření RTL je důležitou součástí procesu.
Hardware lze navrhnout na různých úrovních abstrakce. Běžně používané úrovně abstrakce jsou na úrovni brány , úroveň zaregistrovat přenosu (RTL), a algoritmické úrovni.
Zatímco logická syntéza používá RTL popis návrhu, syntéza na vysoké úrovni funguje na vyšší úrovni abstrakce, počínaje algoritmickým popisem v jazyce na vysoké úrovni, jako je SystemC a ANSI C/C ++. Návrhář obvykle vyvíjí funkce modulu a propojovací protokol. Nástroje syntézy na vysoké úrovni zpracovávají mikroarchitekturu a transformují nestimulovaný nebo částečně časovaný funkční kód do plně načasovaných implementací RTL a automaticky vytvářejí detaily cyklu za cyklem pro implementaci hardwaru. Implementace (RTL) se pak používají přímo v toku konvenční logické syntézy k vytvoření implementace na úrovni brány.
Dějiny
Raná akademická práce extrahovala plánování, alokaci a vazbu jako základní kroky pro syntézu na vysoké úrovni. Plánování oddílů algoritmu v řídicích krocích, které se používají k definování stavů v počítači s konečným stavem . Každý řídicí krok obsahuje jednu malou část algoritmu, kterou lze v hardwaru provést v jediném hodinovém cyklu. Přidělení a vazba mapuje pokyny a proměnné na hardwarové komponenty, multiplexory, registry a vodiče datové cesty.
Syntéza chování první generace byla představena společností Synopsys v roce 1994 jako Behavioral Compiler a jako vstupní jazyky používala Verilog nebo VHDL . Použitou úrovní abstrakce byly částečně časované (taktované) procesy. Nástroje založené na behaviorálním Verilogu nebo VHDL nebyly částečně široce přijaty, protože ani jazyky, ani částečně časovaná abstrakce nebyly vhodné pro modelování chování na vysoké úrovni. O 10 let později, na začátku roku 2004, Synopsys kompilátor chování na konci života .
V roce 1998 společnost Forte Design Systems představila svůj nástroj Cynthesizer, který používal SystemC jako vstupní jazyk namísto Verilog nebo VHDL. Cynthesizer byl přijat mnoha japonskými společnostmi v roce 2000, protože Japonsko mělo velmi vyspělou komunitu uživatelů SystemC. Prvního syntetizačního pásku na vysoké úrovni dosáhla v roce 2001 společnost Sony pomocí nástroje Cynthesizer. Adopce ve Spojených státech začala vážně v roce 2008.
Vstup zdroje
Nejběžnější zdrojové vstupy pro syntézu na vysoké úrovni jsou založeny na standardních jazycích, jako jsou ANSI C / C ++ , SystemC a MATLAB .
Syntéza na vysoké úrovni obvykle také obsahuje jako vstup bitově přesnou specifikaci spustitelného souboru, protože k odvození efektivní hardwarové implementace jsou zapotřebí dodatečné informace o přijatelné průměrné čtvercové chybě nebo rychlosti chybových bitů atd. Například pokud návrhář začíná filtrem FIR napsaným pomocí „dvojitého“ plovoucího typu, než může odvodit efektivní hardwarovou implementaci, musí provést numerické upřesnění, aby dospěl k implementaci s pevným bodem. Upřesnění vyžaduje další informace o tolerovatelné úrovni kvantizačního šumu, platných vstupních rozsazích atd. Tato bitově přesná specifikace činí specifikaci zdroje syntézy na vysoké úrovni funkčně úplnou. Normálně nástroje odvozují z kódu vysoké úrovně konečný stavový stroj a datovou cestu, které implementují aritmetické operace.
Fáze procesu
Proces syntézy na vysoké úrovni se skládá z řady činností. Různé nástroje syntézy na vysoké úrovni provádějí tyto činnosti v různých řádech pomocí různých algoritmů. Některé nástroje pro syntézu na vysoké úrovni kombinují některé z těchto činností nebo je provádějí iterativně, aby konvergovaly k požadovanému řešení.
- Lexikální zpracování
- Optimalizace algoritmu
- Analýza řízení toku dat
- Zpracování knihovny
- Přidělení zdrojů
- Plánování
- Vazba funkční jednotky
- Zaregistrujte vazbu
- Zpracování výstupu
- Rebundling vstupu
Funkčnost
Algoritmus lze obecně provádět v mnoha hodinových cyklech s malým počtem hardwarových prostředků nebo s více hodinovými cykly pomocí většího počtu ALU, registrů a pamětí. Odpovídajícím způsobem z jednoho algoritmického popisu lze pomocí kompilátoru HLS generovat různé hardwarové mikroarchitektury podle směrnic daných nástroji. Jedná se o stejný kompromis rychlosti spouštění pro složitost hardwaru, jaký je patrný, když je daný program spuštěn na konvenčních procesorech různého výkonu, přesto všechny běží zhruba na stejné hodinové frekvenci.
Architektonická omezení
Syntézní omezení pro architekturu lze automaticky použít na základě analýzy návrhu. Tato omezení lze prolomit
- Hierarchie
- Rozhraní
- Paměť
- Smyčka
- Omezení časování na nízké úrovni
- Opakování
Syntéza rozhraní
Interface Synthesis odkazuje na schopnost přijmout jako vstup čistý popis C/C ++ a poté použít technologii automatické syntézy rozhraní k ovládání časovacího a komunikačního protokolu v návrhovém rozhraní. To umožňuje analýzu rozhraní a zkoumání celé řady možností hardwarového rozhraní, jako je streamování, RAM s jedním nebo dvěma porty a různé mechanismy handshaking. Při syntéze rozhraní návrhář nevkládá protokoly rozhraní do popisu zdroje. Příkladem může být: přímé připojení, jednořádkové, dvouřádkové handshake, FIFO.
Prodejci
Údaje o nedávném průzkumu
Postavení | Překladač | Majitel | Licence | Vstup | Výstup | Rok | Doména | Testovací lavice |
FP | Oprava P. |
---|---|---|---|---|---|---|---|---|---|---|
Při použití | Stratus HLS | Cadence Design Systems | Komerční | Systém C/C ++ | RTL | 2015 | Všechno | Ano | Ano | Ano |
AUGH | Laboratoř TIMA. | Akademický | Podmnožina C. | VHDL | 2012 | Všechno | Ano | Ne | Ne | |
rozrušit | Y Průzkumy | Komerční | C | VHDL/Verilog | 2001 | Všechno | Ano | Ne | Ano | |
Bambu | PoliMi | Akademický | C | VHDL/Verilog | 2012 | Všechno | Ano | Ano | Ne | |
Bluespec | BlueSpec Inc. | Komerční | BSV | SystemVerilog | 2007 | Všechno | Ne | Ne | Ne | |
QCC | CacheQ Systems, Inc. | Komerční | C/C ++/Fortan | Hostitelný spustitelný soubor + bitový soubor FPGA (SystemVerilog je přechodný) | 2018 | Vše - vícejádrový a heterogenní výpočet | Ano (C ++) | Ano | Ano | |
CHC | Altium | Komerční | Podmnožina C. | VHDL/Verilog | 2008 | Všechno | Ne | Ano | Ano | |
CoDeveloper | Impuls zrychlen | Komerční | Impuls-C | VHDL | 2003 | Streamování obrazu |
Ano | Ano | Ne | |
HDL kodér | MathWorks | Komerční | MATLAB, Simulink, Stateflow, Simscape | VHDL / Verilog | 2003 | Řídicí systémy, zpracování signálu, bezdrátové, radarové, komunikační, obrazové a počítačové vidění | Ano | Ano | Ano | |
CyberWorkbench | NEC | Komerční | BDL, SystemC | VHDL/Verilog | 2011 | Všechno | Cyklus/ formální |
Ano | Ano | |
Katapult | Mentor (divize Siemens) |
Komerční | C, C ++, SystemC | VHDL/Verilog | 2004 | Všechno | Ano | Ano | Ano | |
DWARV | TU. Delft | Akademický | Podmnožina C. | VHDL | 2012 | Všechno | Ano | Ano | Ano | |
GAUT | U. Bretagne | Akademický | C/C ++ | VHDL | 2010 | DSP | Ano | Ne | Ano | |
Hastlayer | Lombiq Technologies | Komerční | C#/C ++/F#... ( .NET ) |
VHDL | 2015 | .SÍŤ | Ano | Ano | Ano | |
Okamžité SoC | Jádra FPGA | Komerční | C/C ++ | VHDL/Verilog | 2019 | Všechno | Ano | Ne | Ne | |
Kompilátor syntézy Intel na vysoké úrovni | Intel FPGA (dříve Altera) | Komerční | C/C ++ | Verilog | 2017 | Všechno | Ano | Ano | Ano | |
LegUp HLS | LegUp Computing | Komerční | C/C ++ | Verilog | 2015 | Všechno | Ano | Ano | Ano | |
Nohu nahoru | U. Toronto | Akademický | C | Verilog | 2010 | Všechno | Ano | Ano | Ne | |
MaxCompiler | Maxeler | Komerční | MaxJ | RTL | 2010 | Datový tok | Ne | Ano | Ne | |
ROCCC | Jacquard Comp. | Komerční | Podmnožina C. | VHDL | 2010 | Streamování | Ne | Ano | Ne | |
Symfonie C. | Synopsys | Komerční | C/C ++ | VHDL/ Verilog/ SystemC |
2010 | Všechno | Ano | Ne | Ano | |
VivadoHLS (dříve AutoPilot od AutoESL) |
Xilinx | Komerční | C/C ++/SystemC | VHDL/ Verilog/ SystemC |
2013 | Všechno | Ano | Ano | Ano | |
Kiwi | U. Cambridge | Akademický | C# | Verilog | 2008 | .SÍŤ | Ne | Ano | Ano | |
CHIMPS | U. Washington | Akademický | C | VHDL | 2008 | Všechno | Ne | Ne | Ne | |
gcc2verilog | U. Korea | Akademický | C | Verilog | 2011 | Všechno | Ne | Ne | Ne | |
Herkules | Kompilátory Ajax | Komerční | C/NAC | VHDL | 2012 | Všechno | Ano | Ano | Ano | |
Shang | U. Illinois | Akademický | C | Verilog | 2013 | Všechno | Ano | ? | ? | |
Trojzubec | Los Alamos NL | Akademický | Podmnožina C. | VHDL | 2007 | Vědecký | Ne | Ano | Ne | |
Aban- doned |
AccelDSP | Xilinx | Komerční | MATLAB | VHDL/Verilog | 2006 | DSP | Ano | Ano | Ano |
C2H | Altera | Komerční | C | VHDL/Verilog | 2006 | Všechno | Ne | Ne | Ne | |
CtoVerilog | U. Haifa | Akademický | C | Verilog | 2008 | Všechno | Ne | Ne | Ne | |
DEFACTO | U. South Cailf. | Akademický | C | RTL | 1999 | DSE | Ne | Ne | Ne | |
Garp | U. Berkeley | Akademický | Podmnožina C. | bitstream | 2000 | Smyčka | Ne | Ne | Ne | |
ZÁPAS | U. Severozápad | Akademický | MATLAB | VHDL | 2000 | obraz | Ne | Ne | Ne | |
Napa-C | Sarnoff Corp. | Akademický | Podmnožina C. | VHDL/Verilog | 1998 | Smyčka | Ne | Ne | Ne | |
PipeRench | U. Carnegie M. | Akademický | DIL | bistream | 2000 | Proud | Ne | Ne | Ne | |
VAK | U. Colorado | Akademický | VAK | VHDL | 2003 | obraz | Ne | Ne | Ne | |
Mořská okurka | U. Brigham Y. | Akademický | Jáva | EDIF | 2002 | Všechno | Ne | Ano | Ano | |
JISKRA | U. Cal. Irvine | Akademický | C | VHDL | 2003 | Řízení | Ne | Ne | Ne |
- MATLAB HDL Coder [6] od Mathworks
- HLS-QSP od CircuitSutra Technologies
- C-to-Silicon od Cadence Design Systems
- Souběžné zrychlení ze souběžného EDA
- Kompilátor Symphony C od společnosti Synopsys
- QuickPlay od PLDA
- PowerOpt od ChipVision
- Cynthesizer od Forte Design Systems (nyní Stratus HLS od Cadence Design Systems )
- Catapult C od Calypto Design Systems , součást Mentor Graphics od roku 2015, 16. září
- PipelineC [7]
- CyberWorkBench od NEC
- Mega hardware
- C2R od CebaTech
- CoDeveloper od Impulse Accelerated Technologies
- HercuLeS od Nikolaose Kavvadiase
- PICO od Synfora, získané Synopsys v červnu 2010 (PICO = Program In/Code Out)
- xPilot z University of California, Los Angeles
- Vsyn z vsyn.ru
- ngDesign od společnosti SynFlow
Viz také
- C na HDL
- Elektronická automatizace návrhu (EDA)
- Elektronická úroveň systému (ESL)
- Logická syntéza
- Ověření na vysoké úrovni (HLV)
- SystemVerilog
- Hardwarová akcelerace
Reference
Další čtení
- Michael Fingeroff (2010). Modrá kniha syntézy na vysoké úrovni . Xlibris Corporation. ISBN 978-1-4500-9724-6.
- Coussy, P .; Gajski, DD; Meredith, M .; Takach, A. (2009). „Úvod do syntézy na vysoké úrovni“. IEEE Design & Test of Computers . 26 (4): 8–17. doi : 10.1109/MDT.2009.69 . S2CID 52870966 .
- Ewout SJ Martens; Georges Gielen (2008). Modelování na vysoké úrovni a syntéza analogových integrovaných systémů . Springer. ISBN 978-1-4020-6801-0.
- Saraju Mohanty ; N. Ranganathan; E. Kougianos a P. Patra (2008). Nízkoenergetická syntéza na vysoké úrovni pro obvody CMOS v nanoměřítku . Springer. ISBN 978-0387764733.
- Alice C. Parker ; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). „Návrh na úrovni systému“. Ve Wai-Kai Chen (ed.). Příručka VLSI (2. vyd.). Stiskněte CRC. ISBN 978-0-8493-4199-1. kapitola 76.
- Shahrzad Mirkhani; Zainalabedin Navabi (2007). „Jazyky návrhu na úrovni systému“. Ve Wai-Kai Chen (ed.). Příručka VLSI (2. vyd.). Stiskněte CRC. ISBN 978-0-8493-4199-1. Kapitola 86. pokrývá použití C/C ++, SystemC, TML a dokonce i UML
- Liming Xiu (2007). Demystifikovaná metodika návrhu obvodu VLSI: koncepční taxonomie . Wiley-IEEE. ISBN 978-0-470-12742-1.
- John P. Elliott (1999). Pochopení syntézy chování: praktický průvodce návrhem na vysoké úrovni . Springer. ISBN 978-0-7923-8542-4.
- Nane, Razvan; Sima, Vlad-Mihai; Pilato, Christian; Choi, Jongsok; Fort, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). „Průzkum a hodnocení nástrojů syntézy na vysoké úrovni FPGA“. IEEE Transaction on Computer-Aided Design of Integrated Circuits and Systems . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . S2CID 8749577 .
- Gupta, Rajesh; Brewer, Forrest (2008). „Syntéza na vysoké úrovni: retrospektiva“. „Syntéza na vysoké úrovni: retrospektiva“ . Springer. s. 13–28. doi : 10,1007/978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.