論理合成とは
論理合成は、VHDLやVerilogなどのハードウェア記述言語(HDL)で記述された抽象的な回路の動作を、具体的な論理回路の設計に落とし込むプロセスです。具体的には、レジスタ転送レベル(RTL)などの高位の記述から、実際のハードウェアで実装可能なゲートレベルの回路図(ネットリスト)を生成します。このプロセスは、電子設計自動化(
EDA)ツールを用いて行われ、デジタル回路設計において非常に重要な役割を果たします。
論理合成の歴史
論理合成の歴史は、19世紀の数学者
ジョージ・ブールにまで遡ります。ブールは
ブール代数を提唱し、その概念が後の論理回路設計の基礎となりました。1938年には、
クロード・シャノンが
ブール代数を用いてスイッチング回路の動作を記述できることを示しました。1950年代にはカルノー図が発明され、論理回路の簡略化に用いられました。その後、コンピュータによる論理最小化手法であるクワイン・マクラスキー法が登場し、自動化への道が開かれました。
初期の論理合成の研究は、
IBMや
ベル研究所が主導しました。その後、
プログラマブルロジックデバイス(PLD)の登場により、論理最小化の重要性が増し、VLSI(超大規模集積回路)設計においては、多段論理回路の最適化が不可欠となりました。1980年代には、
IBMのLSSやヨークタウン・シリコン・コンパイラなどの多段論理回路設計システムが開発され、
カリフォルニア大学バークレー校のMISや
コロラド大学ボルダー校のBOLDなどの研究成果が、商用ツールに導入されました。
動作合成
動作合成は、論理合成よりも一段階抽象度の高いレベルから回路設計を行う手法です。具体的には、C言語などの高水準言語で記述されたアルゴリズム(動作記述)から、RTL記述を生成します。動作記述は、ソフトウェアのプログラムのように順序立てて処理を記述しますが、RTL記述はハードウェアの並列動作を記述します。動作合成ツールは、動作記述からデータフローグラフを作成し、演算子や配列アクセス、入出力などをスケジューリングし、最終的に有限状態機械(FSM)とデータパスの組み合わせを生成します。
近年では、動作合成ツールも市販されており、携帯電話やプリンタなどの製品にも利用されています。動作合成は、設計者の生産性向上に貢献し、より複雑なハードウェア設計を効率的に行うための重要な技術となっています。
多段論理の最小化
実際の論理回路では、複数の論理ゲートが組み合わされた多段ネットワークが用いられます。論理合成ツールは、RTL記述から多段ブーリアンネットワークを構築し、まず実装に依存しない方法で最適化を行います。この段階では、論理関数の総リテラル数などがコスト関数として用いられます。その後、実装に依存した最適化を行い、指定された実装の論理ゲートネットワークに変換します。この段階では、利用可能なゲート数、ゲートのサイズ、遅延、消費電力などが考慮されます。
商用ツール
論理合成には、
ASIC(特定用途向け集積回路)向けと
FPGA(
プログラマブルロジックデバイス)向けの商用ツールが存在します。
Design Compiler (シノプシス)
Encounter RTL Compiler (
ケイデンス・デザイン・システムズ)
BuildGates (ケイデンス・デザイン・システムズ)
BlastCreate (マグマ・デザイン・オートメーション)
Quartus II (アルテラ)
Xilinx Synthesis Technology (XST;
ザイリンクス)
LeonardoSpectrum と Precision (メンター・グラフィックス)
Synplify (Synplicity)
BlastFPGA (マグマ・デザイン・オートメーション)
DC
FPGA (
シノプシス) - 開発中止
これらのツールは、それぞれ独自のアルゴリズムや特徴を持っており、設計対象や目的に応じて使い分けられます。
まとめ
論理合成は、デジタル回路設計において不可欠なプロセスです。抽象的な回路記述から具体的なハードウェア実装を可能にし、設計の効率化と高品質化に貢献します。動作合成や多段論理の最小化などの技術も進化しており、より複雑な回路設計が実現可能になっています。商用ツールも多様化しており、設計者は最適なツールを選択することで、より効率的な設計を進めることができます。
この技術の発展は、現代の電子機器の発展に大きく貢献しており、今後もその重要性は増していくでしょう。