読み方 : こういごうせい
高位合成【HLS】High-Level Synthesis
高位合成とは?
C言語やC++言語、SystemCといった高水準プログラミング言語で記述された動作仕様から、FPGAやASICといったハードウェア回路の構造を自動的に生成する技術。従来のハードウェア設計ではVHDLやVerilogなどのハードウェア記述言語を用いて回路素子の接続を細かく記述する必要があったが、この方式ではアルゴリズムの動作記述から回路構成を得られる。

設計者がC/C++などで処理内容を記述すると、高位合成ツールがその仕様を解析し、スケジューリング(各演算をどのクロックサイクルで実行するかの決定)、バインディング(演算に使用するハードウェアリソースの割り当て)、アーキテクチャ生成(レジスタ転送レベルの回路構造の出力)を自動的に処理する。結果はVHDLやVerilogのコードとして生成され、論理合成や配置配線工程へと引き渡される。
同一の動作記述から、処理速度優先、回路面積優先、消費電力優先といった異なる特性の回路を生成できる。また、CPU上で動作確認済みのコードをもとに回路化できるため、アルゴリズム開発とハードウェア化を並行しやすい。画像処理や信号処理、暗号処理、近年では機械学習など演算量の多い分野での利用が多い。
一方、通常のプログラム記述をそのまま変換しても、期待した性能や回路規模にならない場合がある。処理の並列化方法やメモリアクセスの構造、データ転送量を考慮した記述が求められるため、ソフトウェア開発とハードウェア設計の双方に関する知識が必要になる。
この技術が普及した背景には、半導体設計の大規模化および複雑化がある。回路規模が増大するほどレジスタ転送レベル(RTL)での手設計の工数は膨大になり、市場の要求速度に対応するのが困難となる。設計の抽象度を引き上げて自動化の範囲を広げる手段として高位合成が浸透し、現在ではFPGA開発環境が高位合成機能を標準で備える製品も多い。AI推論処理やデータセンター向けアクセラレータの開発にも広く利用されている。