高位合成(HLS)は、C合成、電子システムレベル(ESL)合成、アルゴリズム合成、動作合成とも呼ばれ、デジタルシステムの抽象的な動作仕様を受け取り、指定された動作を実現するレジスタ転送レベルの構造を見つける自動設計プロセスです。[1] [2] [3]
合成は問題の高レベルの仕様から始まります。ここでは、動作は通常、クロックレベルのタイミングなどの低レベルの回路機構から切り離されています。初期のHLSではさまざまな入力仕様言語が検討されましたが、[4]最近の研究や商用アプリケーションでは、ANSI C / C++ / SystemC / MATLABの合成可能なサブセットが一般的に受け入れられています。コードは分析され、アーキテクチャ上の制約が課され、トランザクションレベルモデル(TLM)からハードウェア記述言語(HDL)のレジスタ転送レベル(RTL)設計にトランスコンパイルされるようにスケジュールされます。これは通常、論理合成ツールを使用してゲートレベルに合成されます。
HLSの目標は、ハードウェア設計者が設計アーキテクチャの最適化をより適切に制御できるようにし、ツールがRTL実装を行う間に設計者がより高い抽象レベルで設計を記述できるようにするという性質を通じて、ハードウェアを効率的に構築および検証できるようにすることです。RTLの検証はプロセスの重要な部分です。[5]
ハードウェアは、さまざまな抽象化レベルで設計できます。一般的に使用される抽象化レベルは、ゲート レベル、レジスタ転送レベル(RTL)、およびアルゴリズムレベルです。
論理合成では設計のRTL記述を使用するのに対し、高位合成はSystemCやANSI C/C++などの高位言語によるアルゴリズム記述から始めて、より高い抽象レベルで機能します。設計者は通常、モジュール機能と相互接続プロトコルを開発します。高位合成ツールはマイクロアーキテクチャを処理し、タイミングなしまたは部分的にタイミングのある機能コードをフルタイミングのRTL実装に変換し、ハードウェア実装のサイクルごとの詳細を自動的に作成します。[6]その後、(RTL)実装は従来の論理合成フローで直接使用され、ゲートレベルの実装が作成されます。
歴史
初期の学術研究では、高レベル合成の基本ステップとして、スケジューリング、割り当て、およびバインディングが抽出されました。スケジューリングは、有限状態マシンの状態を定義するために使用される制御ステップにアルゴリズムを分割します。各制御ステップには、ハードウェアで 1 クロック サイクルで実行できるアルゴリズムの小さなセクションが 1 つ含まれています。割り当てとバインディングは、命令と変数をハードウェア コンポーネント、マルチプレクサ、レジスタ、およびデータ パスの配線にマップします。
第一世代の動作合成は、1994年にシノプシス社によってビヘイビアコンパイラ[7]として導入され、入力言語としてVerilogまたはVHDLが使用されました。使用された抽象化レベルは、部分的にタイミングされた(クロックされた)プロセスでした。動作VerilogまたはVHDLに基づくツールは、言語も部分的にタイミングされた抽象化も高レベルでの動作のモデリングに適していなかったため、広く採用されませんでした。10年後の2004年初頭、シノプシス社はビヘイビアコンパイラを終了しました。[8]
1998 年、Forte Design Systems は、Verilog や VHDL の代わりに SystemC をエントリ言語として使用する Cynthesizer ツールを発表しました。日本には非常に成熟した SystemC ユーザー コミュニティがあったため、2000 年には多くの日本企業が Cynthesizer を採用しました。最初の高レベル合成テープアウトは、2001 年にソニーがCynthesizer を使用して達成しました。米国での採用は 2008 年に本格的に始まりました。[引用が必要]
2006 年には、制御およびデータフローグラフ上で効率的でスケーラブルな「SDC モジュロ スケジューリング」手法が開発され[9]、後にパイプライン スケジューリングに拡張されました。[10]この手法では、整数線形計画法の定式化が使用されています。ただし、基礎となる制約行列は完全にユニモジュラーであることがわかります(リソース制約を近似した後)。したがって、この問題は、線形計画法ソルバーを多項式時間で使用して、多項式時間で最適に解決できます。この研究は、FPGA および再構成可能コンピューティングの殿堂 2022 に選出されました。[11]
SDCスケジューリングアルゴリズムは、UCLAで開発されたxPilot HLSシステム[12]に実装され、 [13]後にUCLAからスピンオフしたAutoESL Design Technologiesにライセンス供与されました。AutoESLは2011年にXilinx(現在はAMDの一部)に買収され、[11] AutoESLによって開発されたHLSツールは、FPGA設計で広く使用されているXilinx HLSソリューション、Vivado HLSおよびVitis HLSのベースとなりました。
ソース入力
高位合成の最も一般的なソース入力は、ANSI C / C++、SystemC、MATLABなどの標準言語に基づいています。
高レベル合成には通常、ビット精度の実行可能仕様も入力として含まれます。これは、効率的なハードウェア実装を導き出すには、許容可能な平均二乗誤差やビット誤り率などに関する追加情報が必要になるためです。たとえば、設計者が「double」浮動小数点型を使用して記述された FIR フィルタから始める場合、効率的なハードウェア実装を導き出す前に、固定小数点実装に到達するために数値的な改良を実行する必要があります。改良には、許容できる量子化ノイズのレベル、有効な入力範囲などに関する追加情報が必要です。このビット精度の仕様により、高レベル合成ソース仕様が機能的に完成します。[14] 通常、ツールは高レベルコードから、算術演算を実装する有限ステートマシンとデータパスを推測します。
プロセス段階
高位合成プロセスは、いくつかのアクティビティで構成されています。さまざまな高位合成ツールは、さまざまなアルゴリズムを使用して、さまざまな順序でこれらのアクティビティを実行します。一部の高位合成ツールは、これらのアクティビティの一部を組み合わせたり、反復的に実行したりして、目的のソリューションに収束します。[15]
- 語彙処理
- アルゴリズムの最適化
- 制御/データフロー分析
- ライブラリ処理
- リソースの割り当て
- スケジュール
- 機能ユニット結合
- レジスタバインディング
- 出力処理
- 入力の再バンドル
機能性
一般的に、アルゴリズムは、ハードウェア リソースをほとんど使用せずに多数のクロック サイクルで実行することも、多数の ALU、レジスタ、メモリを使用してより少ないクロック サイクルで実行することもできます。同様に、1 つのアルゴリズム記述から、ツールに与えられたディレクティブに従って、HLS コンパイラによってさまざまなハードウェア マイクロアーキテクチャを生成できます。これは、特定のプログラムを、パフォーマンスが異なる従来のプロセッサで実行し、すべてほぼ同じクロック周波数で実行する場合と同じ、実行速度とハードウェアの複雑さのトレードオフです。
アーキテクチャ上の制約
アーキテクチャの合成制約は、設計分析に基づいて自動的に適用できます。[5]これらの制約は、
- 階層
- インタフェース
- メモリ
- ループ
- 低レベルのタイミング制約
- 反復
インターフェース合成
インターフェース合成とは、純粋な C/C++ 記述を入力として受け入れ、自動インターフェース合成技術を使用して設計インターフェースのタイミングと通信プロトコルを制御する機能を指します。これにより、ストリーミング、シングルまたはデュアルポート RAM、さまざまなハンドシェイク メカニズムなど、ハードウェア インターフェースのオプションの完全な範囲のインターフェース分析と調査が可能になります。インターフェース合成では、設計者はソース記述にインターフェース プロトコルを埋め込むことはありません。例としては、直接接続、1 行ハンドシェイク、2 行ハンドシェイク、FIFO などがあります。[16]
ベンダー
最近の調査で報告されたデータ[17]
- EPFL / ETH チューリッヒの Dynamatic
- Mathworks [19]のMATLAB HDL Coder [1]
- CircuitSutra TechnologiesのHLS-QSP [20]
- Cadence Design Systemsの C-to-Silicon
- コンカレントEDAによるコンカレントアクセラレーション
- Synopsysの Symphony C コンパイラ
- PLDAのQuickPlay [21]
- ChipVisionのPowerOpt [22]
- Forte Design Systemsの Cynthesizer (現在はCadence Design Systemsの Stratus HLS )
- Catapult Cは、2015年9月16日現在、メンターグラフィックスの一部門であるカリプトデザインシステムズから提供された。2016年11月、シーメンスはメンターグラフィックス買収計画を発表し、メンターグラフィックスは「メンター、シーメンス事業部」という名称になった。2021年1月、メンターグラフィックスとシーメンスの法的合併が完了し、シーメンスインダストリーソフトウェア株式会社という法人に統合された。メンターグラフィックスの名前は、シーメンスデジタルインダストリーズソフトウェアの一部門であるシーメンスEDAに変更された。[23]
- パイプラインC [2]
- NECのサイバーワークベンチ[24]
- メガハードウェア[25]
- CebaTechのC2R [26]
- Impulse Accelerated Technologies の共同開発者
- HercuLeS by Nikolaos Kavvadias [27]
- SynforaのProgram In/Code Out (PICO)は、2010年6月にSynopsysに買収されました[28]
- カリフォルニア大学ロサンゼルス校のパイロット[29]
- Vsyn(vsyn.ruより)[30]
- SynFlowのngDesign [31]
参照
- CからHDLへ
- 電子設計自動化(EDA)
- 電子システムレベル(ESL)
- 論理合成
- 高レベル検証(HLV)
- システムVerilog
- ハードウェアアクセラレーション
参考文献
- ^ Coussy, Philippe; Morawiec, Adam, 編 (2008).高レベル合成 - Springer . doi :10.1007/978-1-4020-8588-8. ISBN 978-1-4020-8587-1。
- ^ McFarland, MC; Parker, AC; Camposano, R. (1990 年 2 月)。 「デジタル システムの高レベル合成」。IEEE の議事録。78 ( 2 ) : 301–318。doi :10.1109/5.52214。ISSN 1558-2256 。
- ^ 「HLS Book : Home」. www.hlsbook.com . 2023年6月21日閲覧。
- ^ IEEE Xplore 高位合成:過去、現在、そして未来 DOI 10.1109/MDT.2009.83
- ^ ab Bowyer, Bryan (2005-05-02). 「アルゴリズム合成の『なぜ』と『何』」EE Times . 2016-10-03閲覧。
- ^ 「デジタル信号処理のためのCベースのラピッドプロトタイピング」(PDF)。UBS大学、フランス。 2016年10月3日閲覧。
- ^ 「出版物とプレゼンテーション」Bdti.com。2008年4月26日時点のオリジナルよりアーカイブ。2016年10月3日閲覧。
- ^ 「Behavioral synthesis crossroad」. EE Times . 2016年10月3日閲覧。
- ^ Cong, Jason; Fan, Yiping; Han, Guoling; Jiang, Wei; Zhang, Zhiru (2006 年 9 月)。「プラットフォームベースの動作レベルおよびシステムレベルの合成」。2006 IEEE 国際 SOC 会議。IEEE。pp. 199–202。doi : 10.1109 / socc.2006.283880。ISBN 0-7803-9782-7。
- ^ Zhang, Zhiru; Liu, Bin (2013). 2013 IEEE/ACM 国際コンピュータ支援設計会議 (ICCAD) (PDF) . IEEE. pp. 211–218. ISBN 978-1-4799-1071-7。
- ^ ab Cong, Jason; Bin Liu; Neuendorfer, Stephen; Noguera, Juanjo; Vissers, Kees; Zhiru Zhang (2011 年 4 月)。「FPGA の高レベル合成: プロトタイピングからデプロイメントまで」。IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems。30 ( 4): 473–491。doi : 10.1109 /tcad.2011.2110592。ISSN 0278-0070 。
- ^ Cong, J .; Zhiru Zhang (2006)。「SDC 定式化に基づく効率的で汎用性の高いスケジューリング アルゴリズム」。2006第 43 回 ACM/IEEE 設計自動化会議。IEEE。pp. 433–438。doi :10.1109 / dac.2006.229228。ISBN 1-59593-381-6。
- ^ 「xPilot: プラットフォームベースの動作合成システム | VAST lab」。vast.cs.ucla.edu 。 2024年4月18日閲覧。
- ^ 複数ワード長の高位合成 EURASIP 組み込みシステムジャーナル
- ^ 「動作合成の内部を覗いてみよう」。EE Times 。2016年10月3日閲覧。
- ^ 「DesignCon: InfoVault: Paper Library」www.designcon.com。2010年9月25日時点のオリジナルよりアーカイブ。2022年1月13日閲覧。
- ^ Nane, R.; Sima, VM; Pilato, C.; Choi, J.; Fort, B.; Canis, A.; Chen, YT; Hsiao, H.; Brown, S. (2016). 「FPGA 高位合成ツールの調査と評価」(PDF) . IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 35 (10): 1591–1604. doi :10.1109/TCAD.2015.2513673. hdl : 11311/998432 . ISSN 0278-0070. S2CID 8749577.
- ^ 「Xilinx が高レベル合成 EDA ベンダーを買収」。EE Times。2011 年 2 月 5 日。2011 年 10 月 17 日時点のオリジナルよりアーカイブ。2016年 10 月 3 日閲覧。
- ^ 「MathWorks: MATLAB および Simulink のメーカー」。Mathworks.com。2016年10 月 3 日閲覧。
- ^ 「SystemC ベースの ESL 方法 論- SystemC ベースの ESL 方法論」。Circuitsutra.com。2016年 10 月 3 日閲覧。
- ^ 大手 ERP & DBMS 企業の John M. (2016-08-29)。「QuickPlay: FPGA コンピューティングを一般向けに提供」。Quickplay.io。2016年10 月 3 日閲覧。
- ^ 「Chipvision - 低電力への高速トラック」www.chipvision.com。2002年5月30日時点のオリジナルよりアーカイブ。 2022年1月13日閲覧。
- ^ 「Mentor は 2021 年 1 月から Siemens EDA になります」。2020 年 12 月 15 日。
- ^ 「CyberWorkBench: 製品」 NEC . 2016年10月3日閲覧。
- ^ “Accueil mega-hardware”. www.mega-hardware.com . 2004年1月15日時点のオリジナルよりアーカイブ。2022年1月13日閲覧。
- ^ “Cebatech - Home”. www.cebatech.com . 2005年5月7日時点のオリジナルよりアーカイブ。2022年1月13日閲覧。
- ^ 「Nikolaos Kavvadias - HercuLeS 高レベル合成ツール」Nkavvadias.com . 2016 年 10 月 3 日閲覧。
- ^ 「Synopsys が Synfora の資産を買収」。EE Times。2011 年 4 月 7 日時点のオリジナルよりアーカイブ。2016 年 10 月 3 日閲覧。
- ^ 「xPilot システム」。Cadlab.cs.ucla.edu 。2016年 10 月 3 日閲覧。
- ^ “vSyn.ru”. vSyn.ru. 2016年6月16日. 2016年6月30日時点のオリジナルよりアーカイブ。2016年10月3日閲覧。
- ^ 「すべての人のためのハードウェア設計」 Synflow . 2016年10月3日閲覧。
さらに読む
- Jason Cong、Jason Lau、Gai Liu、Stephen Neuendorfer、Peichen Pan、Kees Vissers、Zhiru Zhang。FPGA HLSの現在:成功、課題、機会。ACM Transactions on Reconfigurable Technology and Systems、第15巻、第4号、記事番号5、pp 1~42、2022年12月、https://doi.org/10.1145/3530775。
- Michael Fingeroff (2010)。高レベル合成ブルーブック。Xlibris [自費出版] Corporation。ISBN 978-1-4500-9724-6。
- Coussy, P.; Gajski, DD; Meredith, M.; Takach, A. (2009). 「高レベル合成入門」. IEEE Design & Test of Computers . 26 (4): 8–17. doi :10.1109/MDT.2009.69. S2CID 52870966.
- Ewout SJ Martens、Georges Gielen (2008)。アナログ統合システムの高レベルモデリングと合成。Springer。ISBN 978-1-4020-6801-0。
- Saraju Mohanty 、N . Ranganathan、E. Kougianos、P. Patra (2008)。ナノスケール CMOS 回路の低電力高レベル合成。Springer。ISBN 978-0387764733。
- Alice C. Parker、Yosef Tirat-Gefen、Suhrid A. Wadekar (2007)。「システムレベル設計」。Wai-Kai Chen (編) 。VLSI ハンドブック(第 2 版)。CRC Press。ISBN 978-0-8493-4199-1. 第76章。
- Shahrzad Mirkhani、Zainalabedin Navabi (2007)。「システム レベル設計言語」 。Wai -Kai Chen (編) 。VLSI ハンドブック(第 2 版)。CRC Press。ISBN 978-0-8493-4199-1. 第86章。C/C++、SystemC、TML、さらにはUMLの使用をカバー
- Liming Xiu (2007)。VLSI回路設計方法論の解明: 概念的分類。Wiley- IEEE。ISBN 978-0-470-12742-1。
- John P. Elliott (1999)。『動作合成の理解:高水準設計の実践ガイド』。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). 「FPGA 高レベル合成ツールの調査と評価」。IEEE Transactions 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)。「高レベル合成: 回顧録」。「高レベル合成: 回顧録」。Springer。pp. 13–28。doi :10.1007/ 978-1-4020-8588-8_2。ISBN 978-1-4020-8587-1。
外部リンク
- Youtube の Vivado HLS コース
- Deepchip ディスカッション フォーラム
