高位合成 (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クロックサイクルで実行できるアルゴリズムの小さなセクションが含まれる。割り当てとバインディングは、命令と変数をデータパスのハードウェアコンポーネント、マルチプレクサ、レジスタ、ワイヤにマッピングする。
第一世代のビヘイビア合成は、 1994 年にSynopsys によってBehavioral Compiler [ 7 ] として導入され、入力言語としてVerilog またはVHDL を使用しました。使用された抽象化レベルは、部分的にタイミングが設定された (クロックが設定された) プロセスでした。ビヘイビア Verilog または VHDL に基づくツールは、言語も部分的にタイミングが設定された抽象化も高レベルでのビヘイビアのモデリングに適していなかったため、広く採用されませんでした。10 年後の 2004 年初頭、Synopsys はBehavioral Compiler のサポートを終了しました 。[ 8 ]
Forte Design Systems社は 、VerilogやVHDLではなくSystemCを入力言語として使用するCynthesizerツールを発表しました。日本にはSystemCの成熟したユーザーコミュニティが存在していたため、2000年には多くの日本企業がCynthesizerを採用しました。2001年にはソニー がCynthesizerを用いて初の高レベル合成テープアウトを実現しました。米国での本格的な採用は2008年に始まりました。
2006年に、制御フローグラフとデータフローグラフ上で効率的かつスケーラブルな「SDCモジュロスケジューリング」手法が開発され[ 9 ] 、後にパイプラインスケジューリングに拡張されました[ 10 ] 。この手法は整数線形計画法の定式化を使用します。しかし、基となる制約行列は(リソース制約を近似した後)完全にユニモジュラーで あることを示しています。したがって、この問題は、多項式時間で線形計画ソルバーを使用して最適に多項式時間で解決できます。この研究は、2022年のFPGAおよび再構成可能コンピューティング殿堂入りを果たしました[ 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 ]
参考文献 ↑ Coussy, Philippe; Morawiec, Adam 編 (2008). High-Level Synthesis - Springer . doi : 10.1007/978-1-4020-8588-8 . ISBN 978-1-4020-8587-1 。 ↑ McFarland, MC; Parker, AC; Camposano, R. (1990年2月)「デジタルシステムのハイレベル合成」 Proceedings of the IEEE . 78 (2): 301–318 . Bibcode : 1990IEEEP..78..301M . 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 1 2 Bowyer, Bryan (2005-05-02). "アルゴリズム合成の「なぜ」と「何」" . EE Times . 2016-10-03 に取得. ↑ 「デジタル信号処理のためのC言語ベースのラピッドプロトタイピング」 (PDF) 。UBS大学、フランス。 2016年10月3日 取得 。 ↑ 「出版物とプレゼンテーション」 。Bdti.com 。 2008年4月26日の オリジナル からアーカイブ済み 。 2016年10月3日 に取得。 ↑ 「行動統合の岐路」 EE Times . 2016年10月3日 取得 。 ↑ Cong, Jason; Fan, Yiping; Han, Guoling; Jiang, Wei; Zhang, Zhiru (2006年9月). 「プラットフォームベースの動作レベルおよびシステムレベルの合成」 . 2006 IEEE International SOC Conference . IEEE. pp. 199–202 . doi : 10.1109/socc.2006.283880 . ISBN 0-7803-9782-7 。↑ 張志如; 劉斌 (2013). 2013 IEEE/ACM 国際コンピュータ支援設計会議 (ICCAD) (PDF) . IEEE. pp. 211–218 . ISBN 978-1-4799-1071-7 。1 2 Cong, Jason; Bin Liu; Neuendorffer, 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. Bibcode : 2011ITCAD..30..473C . 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-04-18 に取得. ↑ 複数ワード長高位合成EURASIP Journal on Embedded Systems ↑ 「行動統合の内幕」 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). "A Survey and Evaluation of FPGA High-Level Synthesis Tools" (PDF) . IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 35 (10): 1591– 1604. Bibcode : 2016ITCAD..35.1591N . doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . ISSN 0278-0070 . S2CID 8749577 . ↑ 「ザイリンクスがハイレベル合成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-03 取得 . ↑ 大手ERP & DBMS企業所属のJohn M. (2016-08-29)。 「 QuickPlay : FPGAコンピューティングを一般向けに」 。Quickplay.io。2016-10-03 に 取得 。 ↑ 「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 - ホーム」 。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月5日にオリジナルからアーカイブ済み 。 2016 年 10 月3日 に取得。 ↑ "vSyn.ru" . vSyn.ru . 2016-06-16. 2016-06-30 の オリジナルからアーカイブ済み。2016-10-03 に 取得 。 ↑ 「すべての人のためのハードウェア設計」 . Synflow . 2016年10月3日 取得 。
さらに読む Cong, Jason; Lau, Jason; Liu, Gai; Neuendorffer, Stephen; Pan, Peichen; Vissers, Kees; Zhang, Zhiru (2022年12月31日). "FPGA HLSの現状:成功、課題、機会". ACM Transactions on Reconfigurable Technology and Systems . 15 (4): 1– 42. doi : 10.1145/3530775 . フィンガロフ、マイケル(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 . Bibcode : 2009IDTC...26....8C . 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 。アリス・C・パーカー ;ヨセフ・ティラット=ゲフェン。スフリッド・A・ワデカール (2007)。 「システムレベルの設計」。ワイカイ・チェン編著。VLSI ハンドブック (第 2 版)。 CRCプレス。ISBN 978-0-8493-4199-1 第76章シャールザド・ミルハーニー;ザイナラベディン・ナヴァビ (2007)。 「システムレベル設計言語」。ワイカイ・チェン編著。VLSI ハンドブック (第 2 版)。 CRCプレス。ISBN 978-0-8493-4199-1 第86章 C/C++、SystemC、TML、さらにはUMLの使用法も網羅している。Liming Xiu (2007). VLSI回路設計手法の解明:概念的分類法 . Wiley-IEEE. ISBN 978-0-470-12742-1 。 ジョン・P・エリオット(1999)。行動合成の理解:高レベル設計の実践ガイド 。シュプリンガー。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. Bibcode : 2016ITCAD..35.1591N . 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 ディスカッションフォーラム