高位合成 (HLS)とは?
高位合成 (High-Level Synthesis, HLS)とは、C/C++/SystemCコード、MATLABコード、Simulinkモデルなどの抽象度の高い表現を用いてASIC/FPGAなどのハードウェア設計を行い、自動的にHDL (Verilog/VHDL)コードを生成する技術です。より抽象度の高い言語を使用することで、従来のRTL (Register Transfer Level)設計と比べ、開発効率が大幅に向上し、再利用性の高い設計が可能になります 。
高位合成の基本概念
下図はCコードとモデルでシンプルな16bitの積和演算を記述し、それを高位合成ツールVitis HLSおよびHDL CoderでVerilogに変換した例です。簡単なビヘイビア記述から、RTLコードが生成されているのがわかります。さらに、生成されたVerilogコードを論理合成した結果、回路図ではFlip FlopやDSPブロックで構成されていることが確認できます。
図1. 高位合成ツールの使用例:Cソースコード (左上)、ソースモデル (左中)、合成されたVerilogコード (右)、論理合成された回路図 (左下)
FPGA/ASIC設計手法の進化と高位合成の台頭
FPGA/ASICの設計手法というと、1980年代後半以降VHDLやVerilog HDLによるRTL設計が主流となりました。しかし、RTL設計では回路の詳細を記述する必要があり、コーディングやデバッグ作業が非常に煩雑で時間のかかる工程でした。
近年ではFPGAやASICに実装される処理の高度化に伴い、回路規模が大幅に拡大し、従来のRTL設計だけでは開発の負担が増大しました。こうした課題に対応するため、2000年代から各社が高位合成(HLS)ツールを開発し、C/C++やMATLAB/Simulinkなどの高レベル言語/モデルからハードウェア記述(VHDL/Verilog)を自動生成する手法が登場しました。
現在もRTL設計は主流であり、高い最適化が求められる場面では不可欠な手法ですが、特に複雑な処理を伴う設計では、開発効率の向上や設計資源の有効活用を目的として、高位合成が積極的に採用されています。これにより、ハードウェア設計の生産性が向上し、FPGA/ASIC設計のハードルが下がって、ソフトウェア開発者やアナログ回路開発者も設計できるようになるなど、設計手法の多様化が進んでいます。
| 機能 | 高位合成 (HLS) | RTL設計 |
|---|---|---|
| 設計言語 |
|
|
| 設計期間 |
|
|
| 再利用性 |
|
|
| 最適化 |
|
|
| デバッグ |
|
|
なぜ高位合成が注目されるのか?
近年、以下のような理由により高位合成が注目されています。
- 設計の効率化:従来のRTL設計では、熟練した設計者が細かい回路構造を手作業でVHDL/Verilogコードで記述する必要がありましたが、高位合成を活用することで高級言語から自動的に最適化されたHDLコードを生成できるため、設計時間を大幅に削減できます。また、高位合成ツールの機能によって最適化できるため、設計資産の再利用性が高まります。
- 技術改革の加速:AI、5G、エッジコンピューティング、自動運転などの分野では、技術の進化が速く、短期間での製品開発が求められています。市場競争が激化する中、企業は迅速に製品開発を行う必要があります。
- 高位合成ツールの普及:ASIC向けのHLSツールは販売価格が高価でしたが、AMD (Xilinx), Intel (Altera)社などが提供しているHLS用ツールは安価に入手可能になりました。また、各社のHLSツールの性能が向上して使いやすくなりました。そのため、多くの企業でHLSを活用するようになっています。
高位合成のメリットとデメリット
メリット:
- 開発スピードの向上:記述量が少ない機能レベルの表現から自動的にHDLコードを生成できるため、従来のRTL設計と比較して開発スピードが大幅に向上します。これにより、手作業による回路設計の負担が軽減され、設計・検証サイクルが短縮されます。さらに、高位合成ツールは最適化機能を備えており、自動で性能調整を行うため、手動での微調整作業が削減され、より短期間で高品質なハードウェア設計が可能になります。
- デバッグ効率の向上:設計の初期段階で機能レベルのシミュレーションが可能になり、従来のRTL設計に比べてデバッグ効率が大幅に向上します。C/C++やMATLABの環境でアルゴリズムを検証できるため、HDLに変換する前に機能的なバグを特定しやすく、修正コストを削減できます。また、HLSツールには自動検証機能や波形解析ツールが統合されているため、デバッグ作業も効率化され、設計の精度が向上します。
- 保守性および再利用性の向上:記述量が多く複雑なRTL設計ではコードの内容を理解することに苦労が伴うため、コードの再利用や保守は非常に困難でした。また、設計者ごとのコーディングスタイルの違いや、設計の属人化も再利用性を妨げる要因となっていました。総じて記述量が少なく、特に可読性の高いモデルベースの高位合成では、ソフトウェアエンジニアとハードウェアエンジニアが共通の言語として設計できるため、保守性が高まります。
- 開発エンジニアの拡大:設計者がソフトウェア開発に近い感覚でハードウェア開発を行えるため、専門知識が少なくても設計可能になり、チームの人員構成の柔軟性が向上します。
デメリット:
- 最適化の自由度が低い:ツールが自動で回路を最適化しますが、手書きRTLと比較すると細かい最適化が難しい場合があります。特に厳密なタイミング制約やリソース使用量の最適化が求められるような設計では、手動での調整が必要になることがあります。
- ツール依存度が高い:ツールごとにコード記述の最適な方法が異なり、ツール間での移植性が低いことがあります。例えばMathWorksのHDL Coder、AMDのVitis HLS、IntelのHLS Compilerなどは、それぞれの入力ソースが異なり、ツールを変更することは容易ではありません。
- RTLでデバッグが必要:ソフトウェアレベルでは動作したコードでも、高位言語からHDLコードに変換後に期待通り動作しないことがあります。その場合はHDLレベルでのデバッグが必要となり、HDLシミュレーションやFPGA実機検証が必要となる場合があります。
- ハードウェア知識が不要になるわけではない:高位言語(C/C++やモデル)でエントリーするため、VHDL/Verilogの知識が無くても設計に関与しやすくなりますが、効率的な回路を生成するためには、依然としてハードウェアの知識は必要です。メモリアクセスや並列/逐次処理の最適化、パイプライン処理の調整など、ハードウェア特有の設計要素は依然として残っています。
高位合成の主な活用分野
高位合成はアルゴルズムが複雑で、かつ設計の効率化と開発スピードの向上が求められる分野で幅広く活用されています。例えば以下の領域で採用されています。
- 自動運転・リアルタイム信号処理や画像認識
- カメラやLiDARなどの高速な画像処理、信号処理において、高速はハードウェアアクセラレーションが求められます。高位合成を活用することで、FPGAやASICに最適化された回路を短期間で開発することができています。
- 5Gなどのワイヤレス通信システム
- 5G基地局やネットワーク装置では、リアルタイムでのデータ処理やフィルタリング、変復調などのベースバンド処理が求められます。複雑なアルゴリズムを実装するために、高位合成が用いられています。
- 医療・産業機器
- 高精細な画像処理が必要な医療機器では、高精度なアルゴリズムの実装が重要です。放送・映像機器では、エンコーディングやHDR処理などの高負荷な処理をFPGAやASICで実装する際に高位合成が役立っています。
- ミックスドシグナル IC
- ミックスドシグナルICでは、アナログ回路とデジタル回路を統合する必要があり、従来 のRTLベースの設計では開発が煩雑でした。また、トランジスタレベルのアナログ回路とデジタル回路を統合したシミュレーションには多大な時間がかかりました。 Simulinkなどのモデルベースのツールを活用することで、機能レベルのアナログ/デジタル混在シミュレーションを高速に実行することが可能になります。ADコンバータ、モータ制御用IC、オーディオ信号処理ICなどでは、高位合成を活用することでデジタル部分のハードウェア最適化を自動化し、システムレベルの最適設計に役立っています。
- AIアクセラレーション:ディープラーニングアクセラレーション
- AI推論処理をエッジデバイスで行う際、CPUやGPUでは消費電力が大きいため、専用ハードウェアを使用することがあります。高位合成を利用して、ニューラルネットワークの積和演算を最適化し、消費電力を抑えつつ高速処理を実現しています。
- プラントモデルのリアルタイム・シミュレーション
- 自動車や産業機械の開発・検証プロセスにおいて、プラント(制御対象)のリアルタイム・シミュレーションモデルを利用して、実際のコントローラーのハードウェアを効率的にテストするHIL(Hardware In the Loop)シミュレーションが用いられます。HILはモデルベースデザインの重要な設計プロセスとして活用されており、自動車の電動化やパワーエレクトロニクスの高速化に伴い、FPGAによるリアルタイム・シミュレーションのアクセラレーションが進んでいます。その開発には高位合成が活用されています。
高位合成ツールを使ったFPGA/ASIC開発フロー
- 仕様設計:システム要件に基づいたC/C++/MATLABコード/Simulinkモデルの記述
- C/C++ to HDL変換/モデル to HDL変換:高位合成ツールを用いてHDLコードを生成
- 回路最適化:パイプラインレベルやリソース共有を行い回路性能の調整
- HDLとの等価性検証:HDLシミュレーションや形式手法を利用したツールで等価性検証
- FPGA/ASICへの実装:HDLを論理合成・配置配線してFPGA/ASICにインプリメント
図2. 高位合成の開発フロー
高位合成ツールの比較
各社から販売されている高位合成ツールのエントリーと生成コード一覧になります。
| ツール名 | メーカー | 特徴 |
|---|---|---|
| HDL Coder | MathWorks |
|
| Vitis HLS | AMD (Xilinx) |
|
| Intel HLS Compiler | Altera (Intel) |
|
| Catapult | Siemens |
|
| Stratus HLS | Cadence |
|
高位合成ツールは複数社がリリースしているCベースと、MathWorks社がリリースしているモデルベースに大別されます。
下図はVitis HLSの開発環境を示しています。図中左側にはFIRフィルターのCソースコード、右側には合成されたVerilogコードの一部を示しています。この例では十数行程度のCソースコードから、複数ファイルで数千行のVerilogコードが生成されています。C++コードで記述した動作記述に対して、#Pragma HLSを使ってハードウェアへの合成を最適化しています。この#Pragma HLSでは、ループのパイプライン化、アンローリング、DSP, BRAMなどのリソース最適化、AXIバスやFIFOなどのインターフェイス指定を行うことができます。
図3. Vitis HLS開発画面: C++コード (左)と合成されたVerilogコード (右)
下図はモデルベースの開発環境を示しています。図中左上のフィルターデザイナーで設計したフィルターをブロック線図モデルに変換し、それにテストベンチ用のブロックを追加して動作レベルのシミュレーションを行っています。アルゴリズムのパラメータは各ブロックのパラメータで、ハードウェアアーキテクチャは右側に表示されているHDLコード専用のプロパティーで行います。
図4. モデルベース開発画面: フィルターデザイナー (左上)とモデルシミュレーションの結果 (中央)
HDLコード生成の結果は下図のレポートに表示され、モデルコード間のトレーサビリティを確保することができます。
図5. HDLコード生成レポートに表示されるVerilogコード (上)と生成元モデル (下)
高位合成の成功事例
高位合成のユーザー事例をいくつかご紹介します。
高位合成のユーザー事例をいくつかご紹介します。ローム社はモデルベースデザインをモータ制御ICやMEMSデバイスの開発に導入し、設計品質の向上と開発期間の短縮を実現しました。具体的には、モデル化とシミュレーションを活用し、RTLコードの自動生成やSystemVerilog DPI-Cモデルの作成を行うことで、従来1か月かかっていた検証時間を数日に短縮し、プロトタイプの回数も削減できました。
防衛用・公共用無線通信機器のFPGA開発にHDL Coderを導入し、設計効率を大幅に向上させました。従来の手書きHDLでは開発負担が増大していたため、高抽象度モデルからの設計フローを採用し、検証やIP再利用の効率化を実現。短納期化やターゲットデバイス依存性の低減にも貢献し、社内外への展開を推進中です。今後は浮動小数点HDLの活用やソフトウェア開発への応用も視野に入れています。
高位合成の今後の展望
高位合成は、設計の抽象度を上げることで、設計生産性を向上させる技術として、FPGA/ASIC設計の分野で重要性を増しており、今後さらなる発展が期待されています。
AI技術の進化に伴い、それと連携することで高位合成自体もさらなる最適化が行われることが期待されています。より高度な抽象化手法や、自動的に最適な設計オプションを選択する技術が進化することで、設計の効率と品質がさらに向上すると予想されます。さらなる最適化の手段として、フロアプラン や論理合成を考慮した手法も検討され、性能や消費電力の改善も期待されています。
今後は高位合成の適用範囲は益々拡大し、多様な産業分野での採用が進む見込みです。高位合成は今後のFPGA/ASIC設計の中心技術となる一方、付加価値を高めるための高位設計・検証技術の発展も重要となります。
著者
MathWorks Japan アプリケーションエンジニアリング部 松本 充史
電子機器メーカーにて信号処理アルゴリズム開発、電子回路設計に従事。その後、修士課程で電源制御のシミュレーションにSimulinkを活用した経験を基に、MATLABの国内代理店にアプリケーションエンジニアとして入社し、信号処理・画像処理、組み込みコード生成などを担当。現在は主にFPGA /ASIC 実装分野を専門とし、ユーザーサポートに加え、機能やユーザビリティ向上に向けた活動を積極的に行っている。
製品使用例および使い方
ニュースおよび記事
参考: HDL Coder, HDL Verifier, Fixed-Point Designer, Deep Learning HDL Toolbox, DSP HDL Toolbox, Vision HDL Toolbox, Wireless HDL Toolbox