コンテンツにスキップ

論理合成とは

論理合成とは、RTLで書かれた記述を、実在する部品の結線表へ自動変換する工程です。 RTLを論理合成ツールでゲートレベルのネットリストへ変換し、このとき性能、面積、消費電力のトレードオフを行います。

同じRTLからでも、何を優先するかで出てくる回路が変わります。RTLまではどの工場でも通る記述ですが、論理合成を通った後のネットリストは特定のプロセスの部品で組まれ、タイミングの決着もこの段で付けます。

RTLの記述を、NANDやNORの基本ゲートに置き換える

Section titled “RTLの記述を、NANDやNORの基本ゲートに置き換える”

RTLの段階にあるのは、動きを文章として書いた記述だけで、回路の形になるのはこの先です。機能の正しさを検証した合成可能RTL記述が、論理合成ツールによってゲートレベルの記述(ネットリスト)に変換されます1。論理回路設計では、機能設計された各ブロックを論理合成技術などを利用して、NAND、NORなどの基本ゲート回路に変換します2。

IC設計工程の流れを論理設計、論理合成、回路設計、レイアウト設計、配置・配線、機能動作シミュレーション、マスクデータ変換出力の順に並べると3、論理合成は7工程のうち2番目で、設計の入口近くに来ます。

出力は最適解ではなく、探索の結果

Section titled “出力は最適解ではなく、探索の結果”

「変換」という言葉は一対一で決まるように聞こえますが、実際は訳し分けです。性能、面積、消費電力のどれを優先するかで、同じRTLから別の回路が出てきます。

しかも出てくるのは探索の結果です。多段論理回路は構成の自由度が大きいため、厳密最適解を求めることはほとんど不可能で、主にヒューリスティックアルゴリズムが用いられています4。論理合成の出力は厳密最適解の手前で止まる探索の結果で、同じ設計でもツールや設定が違えば別の答えが出ます。

目標そのものも動いてきました。当初は最小の素子数で論理機能を実現することが目標でしたが、いまは配線遅延や消費電力も同時に最小化し、さらに製造性まで考慮することが必要になっています。小さく作ればよい時代から、素子数・配線遅延・消費電力・製造性の4つを同時に満たす時代へ移りました。

同じ記述から、別の回路が出てきます
入力は1つRTL記述動きだけが書いてあります速度優先面積優先面積が膨らみますそのぶん速く動きます小さく収まりますそのぶん遅くなります3つのうち、どれを立てるかを選びます性能・面積・消費電力を、天秤にかけますどれを優先するかは、設計者が指定します同じ入力から、複数の答えが出てきますしかも出てくるのは「最良」の一歩手前自由度が大きすぎて、厳密最適解を求めるのはほとんど不可能です実際に使われているのは、探索の手法出てくるのは、探した結果そのもの
同じRTLでも、何を優先するかで出てくる回路が変わります。構成の自由度が大きすぎて厳密な最適解は求められないため、探索の手法が使われます。

テクノロジマッピングで、回路は特定の工場の部品に結び付く

Section titled “テクノロジマッピングで、回路は特定の工場の部品に結び付く”

論理合成には性質の異なる二段があり、この二段が設計と製造の境目にあたります。ゲートアレイやスタンダードセルを用いた実現の場合、まず使用するセルライブラリのテクノロジに独立な多段論理回路を合成し、その後でテクノロジライブラリに依存した回路を生成します。この後半の段がテクノロジマッピングです。

前半は、どの工場のどの世代で作るかに関係なく成り立つ論理の組み立てで、後半で初めて特定のプロセスの実在する部品へ割り当てられます。RTLの段階では、実現する半導体のデザインルール(DR)とは独立しています。合成の結果、ネットリストを構成するゲートは、ターゲットとなるプロセステクノロジー、デザインルールでのライブラリのセルにテクノロジーマッピングされます。

論理合成は、どの工場でも通る記述を特定の工場の部品へ割り当てる段です。ここを通る前のRTLはどのファウンドリでも使えますが、通った後のネットリストは、そのプロセスのものになります。

どこで、工場が決まるのでしょうか
論理合成は、二段でできていますRTL記述どの工場でも通りますテクノロジに独立な多段論理回路を合成ここが境目テクノロジマッピングセルライブラリへ割り当てますネットリストこの工場のものになります境目より前実現する半導体のデザインルールとは独立しています境目より後そのプロセスの、実在するセルへ結びつきますこの二段があるから、設計と製造を分けられますファブレスがRTLまで作り、どのファウンドリへ委託するかを後から選べるのは、境目がここにあるためです
前半はどの工場でも成り立つ論理の組み立てで、後半で特定プロセスの実在する部品へ割り当てます。設計と製造を分けられる境目が、ここにあります。

セルライブラリが探索空間を狭め、自動化を実用にした

Section titled “セルライブラリが探索空間を狭め、自動化を実用にした”

自動でできるのは、選ぶ先があらかじめ決まっているからです。セルベース設計は、あらかじめNANDゲートやINVERTERなどの基本セルのセット(セルライブラリ)を用意しておき、それらのセルを組み合わせて回路をつくります。セルベース設計は論理設計で考慮すべき探索空間を大幅に狭め、自動で回路生成を行うテクノロジマッピングを実用可能にしたと言ってよいとされています。

探す先は、あらかじめ用意された基本セルの一覧に限られます。「この百種類ほどの部品の組み合わせで作れ」という制限があるからこそ、機械が探せます。RTLのハードウェア記述から論理回路ネットリストを自動合成するツールは、1990年代から、特にASICの設計で実用的に使用されるようになりました。

レイアウトで収束するのは、ここで収束させた回路だけ

Section titled “レイアウトで収束するのは、ここで収束させた回路だけ”

ルネサス エレクトロニクスのユーザーズマニュアルは、レイアウト時にタイミングが収束するのは、論理合成の段階ですでに収束していた回路だけ5だとしています。間に合う構造へ組み直せるのはこの段までなので、設計側はレイアウトへ進む前にここで決着させ、タイミングが収束済みの回路だけを送ります。

同マニュアルによると、書き方も生成される回路の形をそのまま左右します。RTL記述でif文の条件でデータを保持する記述をした場合、論理合成ではF/Fの出力がループして、F/Fの前段にセレクタ回路が生成されるとしています。書いた一文が特定の部品の並びに化けるので、RTLを書く人はこの対応を知っている必要があります。

高位合成はRTLの上の段、論理合成はRTLの下の段

Section titled “高位合成はRTLの上の段、論理合成はRTLの下の段”

名前が似ているため混同されますが、高位合成は別の工程です。C言語などの抽象度の高い記述をRTLへ変換する段を、高位合成(High Level Synthesis)あるいは動作合成(Behavioral Synthesis)と呼びます。抽象度の階段でいえば、高位合成は上の段からRTLへ下ろす変換、論理合成はRTLから下の段へ下ろす変換です。

ただし、言葉の使い方には幅があります。広義の論理合成はハードウェア記述言語から回路のネットリストを自動的に生成する変換全般を指し、高位レベル合成を含むこともあります。狭義と広義が併存しているため、資料によって指す範囲が変わります。

レイアウトとの境目も動きます。タイミング収束を容易化するために、レイアウト設計と論理合成の融合化技術(物理合成)があり、工程の線引きそのものが必要に応じて引き直されています。

論理合成とは何ですか?

RTLを論理合成ツールでゲートレベルのネットリストへ変換することです。このとき性能・面積・消費電力のトレードオフを行います。

どんな段階を踏むのですか?

まず使用するセルライブラリのテクノロジに独立な多段論理回路を合成し、その後でテクノロジライブラリに依存した回路を生成するテクノロジマッピングを行います。

最適な回路が出てくるのですか?

出てくるのは探索の結果です。構成の自由度が大きいため厳密最適解を求めることはほとんど不可能で、主にヒューリスティックアルゴリズムが用いられています。

目標は回路を小さくすることですか?

以前はそうでした。当初は最小の素子数で論理機能を実現することが目標でしたが、いまは配線遅延や消費電力も同時に最小化し、さらに製造性まで考慮することが必要になっています。

いつから実用になったのですか?

RTLのハードウェア記述から論理回路ネットリストを自動合成するツールは、1990年代から、特にASICの設計で実用的に使用されるようになりました。

ここでタイミングが厳しくても、後の工程で直せますか?

論理合成の段階で決着させます。ルネサス エレクトロニクスのユーザーズマニュアルによると、レイアウト時にタイミングが収束するのは、論理合成の段階ですでに収束していた回路だけです。

高位合成とは別の工程ですか?

別の工程です。C言語などの抽象度の高い記述をRTLへ変換する段を高位合成あるいは動作合成と呼びます。ただし広義の論理合成はハードウェア記述言語からネットリストを自動生成する変換全般を指し、高位レベル合成を含むこともあり、広義と狭義が併存します。

  • RTLとは── 論理合成の入力になる記述
  • EDAとは── この変換を担う道具の総称
5件を表示
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5