現代の半導体設計、特にASIC(特定用途向け集積回路)設計フローにおいて、ロジック合成は抽象的な人間の論理(RTLまたはHDL)を物理的なシリコンの現実(ゲートレベルネットリスト)へと具体化する最も決定的な変換プロセスです。
要約すると、
ロジック合成とは、RTLを入力として受け取り、ゲートレベルネットリストを出力するものです。
- RTLは物理的要素を考慮せず、論理構造のみを含む設計図です。

- Netlistはファウンドリから提供されたCellライブラリを基に、物理情報と論理情報を含む設計図です。 (座標値などは含まれていません。
- その後、P&R、ECOなどの段階では、ロジック合成で作成された回路に座標を入力して配置し、接続し、セルタイプを少し変更する程度の修正を行います。
- 合成で得られたPPAについて、これよりも高いPPAを達成したい場合でも、P&Rでさらに高めることは容易ではありません。

RTLからGDSIIに至る全フローにおいて、合成が占める比重は絶対的である。
この段階で決定されるPPA(電力、性能、面積)の初期指標は、その後の配置配線段階の収束を左右する。もし合成段階で誤った制約が設定されたり、物理的現実を反映できない構造が生成されたりすれば、バックエンド設計プロセスにおいて膨大な残業を要求することになる。
1. 変換の数学:抽象化レベルの下降と最適化の序幕
ロジック合成は本質的に、機能的同等性を維持しながら実装コストを最小化する多次元最適化問題を解く過程である。 RTLコードは、人間が理解しやすい上位レベルの抽象化である。
ロジック合成は3段階で構成される。
- 翻訳(または精緻化)
- 最適化
- マッピング

1.1 パーシングと精緻化 (Parsing & Elaboration): GTECHの世界
合成の最初の段階は、HDL(Verilog/VHDL)テキストをツールが理解できる内部データベース構造に変換することである。このプロセスをElaborationと呼び、ここで生成される初期ネットリストは特定のプロセス技術に依存しないGTECH(Generic Technology)ライブラリを使用する。
- Parsing & Inference:
- ツールはコードの文法エラーを検査し、
alwaysブロックやassign文を解釈する。この段階で最も重要なのはHardware Inferenceである。 - 例えば、
if-else構文はマルチプレクサ(MUX)で、posedge clk構文はフリップフロップ(Flip-flop)に変換される。
- ツールはコードの文法エラーを検査し、
- アーキテクチャ選択:
- RTLにおける
+、*などの算術演算子は抽象的な概念である。Elaboration段階では、ツールがこれらの演算子を実装するための初期アーキテクチャを決定する。
- RTLにおける
- 例えば、加算器を実装する際、面積は小さいが速度が遅いリップルキャリー方式を採用するか、あるいは面積を犠牲にしても高速動作が可能なキャリールックアヘッド方式を採用するかを検討する。
