テクノロジマッピング - 九州大学(kyushu … › ~matsunaga › lecture › lsicad ›...
TRANSCRIPT
2008/12/11 1
テクノロジマッピング
九州大学大学院システム情報科学研究院情報工学部門
松永 裕介
2008/12/11 2
論理合成の流れ
2008/12/11 3
セルベース設計手法
• あらかじめ設計されたセルを利用して回路を作る(組み立てる)。
• トランジスタレベルの設計は必要ない。
• 自動合成向き⇒テクノロジマッピング
2008/12/11 4
「テクノロジ」とは
• 使用可能なセルの種類および特性
• 遅延時間の計算モデル
• 大駆動能力のような設計規則
• …• 半導体ベンダ、用途などに応じて千差万別
2008/12/11 5
テクノロジ非依存/依存処理
• テクノロジごとに論理合成システム全体を作り直していたら、プロセス技術の進歩に追いつかない
• テクノロジに依存しない部分(多段論理合成、 適化)とテクノロジに依存する部分(テクノロジマッピング)に分離する。
• テクノロジマッピングにおいても基本アルゴリズムは共通化して、さまざまなセルライブラリ、設計規則に対応できるようにする。←コンパイラ技術とのアナロジー
2008/12/11 6
テクノロジマッピングの歴史
• ルールベースに基づく手法– LSS(IBM, ’84)– Socrates(GE, ’86) ⇒ 現Synopsys– LORES/EX(三菱,‘88)
• Tree covering– DAGON(AT&T Bell Labs., ’87)
• タイミング 適化– (UCB,’90, ’91)
2008/12/11 7
ルールベースを用いた手法
• テクノロジ毎にルールを用意することでシステムそのものは汎用化できる
• ルールを作り、その一貫性を保ち、かつチューニングすることは容易ではない
• 局所変換の繰り返しでは大局的な 適化は行えない
• ⇒今ではアルゴリズム的に処理することが難しい特定の回路以外は用いられていない
2008/12/11 8
Tree covering• 歴史的にみて 初のテクノロジマッピングのアルゴ
リズム
• 基本アイデアはコンパイラのコード生成アルゴリズム(Bell Labs.のAho)
• ブーリアンネットワークを細かな単位ノードに分解して、セルによるカバーを求める
• 面積、遅延時間、消費電力などを目的関数、制約条件にして(ある尺度での) 適解を求めることができる
• 今日の実用的なシステムで広く用いられる
2008/12/11 9
タイミング 適化問題
• Tree coveringアルゴリズムの拡張
• ファンアウト 適化問題
• 上記2つを統合した大局的な処理
2008/12/11 10
サブジェクトグラフ
2008/12/11 11
多入力ノードの分解
• 任意の論理関数はAND/OR/NOTで表現可能
• 任意のAND/ORは2入力NANDの木に分解可能
• しかし、解は唯一ではない
2008/12/11 12
セルの情報
• 機能を表す論理式⇒2入力NANDに分解
• 面積– 配線領域の面積の考慮
• 入力端子から出力端子までの遅延時間の計算モデル– 配線遅延の考慮
• 入力端子の負荷容量
• 消費電力の計算モデル
2008/12/11 13
パタングラフ
2008/12/11 14
パタングラフ
2008/12/11 15
ナイーブなマッピング結果
2008/12/11 16
複合セルを用いたマッピング結果(1)
2008/12/11 17
複合セルを用いたマッピング結果(2)
2008/12/11 18
被覆問題としての定式化(1)
• パタングラフと一致するサブジェクトグラフの部分グラフをマッチと呼ぶ
• テクノロジマッピングとは、サブジェクトグラフ上の全ての節点を被覆するマッチの集合を求めること
• ただし、単純な被覆ではない⇒feasibility constraint
• マッチの入力は他のマッチの出力でなければならない
2008/12/11 19
被覆問題としての定式化(2)
2008/12/11 20
被覆問題としての定式化(3)
2008/12/11 21
被覆問題としての定式化(4)
2008/12/11 22
被覆問題としての定式化(5)
2008/12/11 23
被覆問題としての定式化(6)
2008/12/11 24
被覆問題としての定式化(7)
• このように条件式に否定のリテラルが含まれる被覆問題を binate covering 問題と呼ぶ←条件式が binate function
• binate covering問題はNP問題であることが
知られており、実用的には変数の数が数十程度までしか解けない
2008/12/11 25
テクノロジマッピングの近似算法
• binate covering問題を厳密に解くことは難しい←テクノロジマッピングの場合、変数の数は数千~数万
• ではbinate covering問題を解く近似アルゴリズムは?⇒あまり研究されていない
• 問題自体をより簡単な問題に近似してしまう⇒サブジェクトグラフをtree(木)の形に制限する
2008/12/11 26
木状回路への分割
• 複数のファンアウトを持つ部分で回路を分割
• テクノロジマッピングの問題はDAG coveringからtree coveringとなる
• tree coveringには効率の良い厳密解法が存在する
2008/12/11 27
分割の弊害
• ファンアウトをまたいだセルの割り当てが行えない
• 分割の境界部分での位相合わせが行えない
2008/12/11 28
パタンマッチングアルゴリズム
• 基本的にはサブジェクトグラフ上の節点をたどって、パタングラフの節点と一致するか確かめる
• パタングラフの節点をたどる順を決めるため edge-list という枝のリストを用いる
• NANDの入力は2つあるのでサブジェクトグラフとパタングラフのマッチの仕方が2通り考えられる。そのため、各節点につき 悪2通りずつのマッチを試す必要がある
• 実際には対称な入力が多いので試すべきマッチの数はそれほど多くない
2008/12/11 29
パタンマッチングの例
2008/12/11 30
tree coveringアルゴリズム
2008/12/11 31
tree coveringの例
2008/12/11 32
inverter-chainヒューリスティック
2008/12/11 33
遅延 小解を求めるtree covering(1)
• 目的関数を遅延時間とする
• 遅延時間がセルの種類のみに依存するモデルなら 小面積の場合と同様にtree coveringで 適解を求めることができる
• 遅延時間が駆動先の負荷容量に依存するモデルの場合、単純なtree coveringでは解は
求められない
2008/12/11 34
遅延モデル
• 固定遅延
– セルの種類のみに依存。昔はトランジスタの寄生容量が比較的大きかったので駆動先の負荷容量は無視できた
• 負荷依存
– 駆動先の負荷容量の線形関数/非線形関数
– T = T0 + K * l– も一般的(少なくとも’90年代は)
2008/12/11 35
遅延 小解を求める tree covering(2)
• とにかく駆動先の負荷が決まらないと遅延時間は計算できない
• 仮に決めておいてそのときの 適解を持つ
• そのような仮の値をN種類、試しておき、後で実際の値に近いものを選ぶ
• tree coveringの処理を1つの節点についてN回繰り返すようなもの
• Nを大きくすれば解の精度は良くなるが、計算時間と使用メモリ量も比例して大きくなる
2008/12/11 36
遅延 小解を求めるtree covering(3)
• 遅延 小解は駆動先の負荷の関数
• しかも負荷の区間の関数なので解が切り替わる点のみを覚えておけばよい
• 負荷の値の区間[si, ei]とそのときの 適解miの組をリストの形で保持しておく
• 後で実際の負荷が確定したときに該当する区間を探してその区間の 適解miを返す
• 処理は複雑だが厳密解を求めることができる。区間の数Nをあらかじめ与えなくて良い
2008/12/11 37
遅延制約下での面積 小解(1)
• 出力までのマッピングが確定しないと部分解が制約を満たしているかどうかが分からない←部分的な制約(required time)が与えられないから
2008/12/11 38
遅延制約下での面積 小解(2)
• required time(以降RT)を仮の値でN個、計
算しておいてあとでもっとも実際の値に近いものを選ぶ
• RTの下限は遅延 小解の遅延時間←これ
より速い遅延時間は実現できない
• RTの上限は面積 小解の遅延時間←これ
より遅い遅延時間は役に立たない
2008/12/11 39
遅延制約下での面積 小解(3)
• (面積, 遅延) = (a1, d1) の解と (a2, d2) の解に対して、次式が成り立つ時(a2, d2) の解
は 適解として用いられない。– a1 <= a2, d1 <= d2
• 適解の可能性がある解のみをリストで保持
39
面積
遅延
2008/12/11 40
低消費電力向けのマッピング
• 直感的には面積を 小化すればよいように思えるが、、、、
• ゲートで消費される電力とは– P = CV2f– C:このゲートの駆動する容量
– V:電源電圧
– f:スイッチング周波数
• Cは概ね面積に比例するが、fは回路の構造できまる
2008/12/11 41
低消費電力向けのマッピング例(1)
•2NANDの出力の1の出現確率は Po = 1 – (Pa × Pb)
•出現確率Pより遷移確率Qは Q = P × (1 – P)
2008/12/11 42
低消費電力向けのマッピング例(2)
• 使用するセルが同じでも信号遷移確率が異なれば消費電力が異なる。
• 大まかに言って遷移確率の高い信号と0とのANDをとれば(1とのORでも可)、その遷移を
マスクすることができるので消費電力を下げることができる。
2008/12/11 43
FPGA用EDA技術
• やはり少量生産にとってマスクコストの高騰は致命的
• 仕様変更やバグ修正のためのリメイクなどもってのほか
• ⇒チップ製造後にプログラムできるFPGAの優位性
• 微細化の恩恵で大容量化・高速化(低消費電力化は未だ)
• FPGA用のEDA技術はますます重要
2008/12/11 44
LUT(look-up table)
2008/12/11 45
クラスタ
• 入力が共通ないくつかのLUTをひとまとめに
する。
2008/12/11 46
Island Style Architecture
• クラスタの外側に配線・接続用のスイッチが並ぶ。
2008/12/11 47
FPGAの設計フロー
• 論理設計(ASICと同様、、、でいいのか?)
• LUTへのマッピング
• クラスタへのパッキング
• 配置・配線
• 遅延時間・消費電力ともにグローバル配線(スイッチ)の削減が鍵→EDA技術&FAPGAアーキテクチャ
2008/12/11 48
遅延 小を目的としたLUT型FPGAのテクノロジ・マッピング
• 入力:Kバウンデッド・ネットワーク
– ノードがK入力以下の論理関数を持つような
ループを持たない有向グラフ
• 出力:LUTからなる等価なネットワーク
• LUTからなるネットワークの遅延見積もり: LUTの
段数– LUT内部の遅延: ほぼ均一
– LUT間の配線遅延: 一定の固有遅延を仮定
• LUTの個数も少ない方が望ましい
– 配線の自由度を高めるため
LUTの段数 小で個数が少ないネットワークを
生成するテクノロジ・マッピング
2008/12/11 49
Kバウンデッド・ネットワーク• ループを持たない有向グラフ
– ノード
• 入力数がK以下
• K入力以下の論理関数を持つ
– 辺
• ノード i の出力がノード j の入力であるとき有向辺 (i, j) が存在
– プライマリインプット
• 入力辺を持たないノード
– プライマリアウトプット
• 出力辺を持たないノード
2008/12/11 50
Kフィージブル・カットとマッチ
• Kフィージブル・カット
– t から入力側へ辿って
得られるネットワークにおけるノードの分割
– カットの境界における入力側のノード数がK以下
• マッチ
– Kフィージブル・カットのの誘導グラフ
– K入力LUTで被覆できる t
k-feasible cut
マッチ
LUTに対応
),( XXX
X
X
K=3
2008/12/11 51
ネットワークの段数
POからPIまでの
経路のうちノード数が 大である経路上のノード数
段数 : 3
2008/12/11 52
段数 小テクノロジ・マッピングアルゴリズム:FlowMap
• FlowMap:段数 小ネットワークを生成するアルゴリズム
1. ネットワークの各部が段数 小な解を生成
• LUTの個数が少なくなるようなヒューリスティック
2. 出力における段数を保つ範囲でLUTの個数を改善するための後処理
• 近傍に存在するLUTを出来る限りまとめる
• 手順
– ラベルづけ
– マッピング
– 個数改善の後処理
2008/12/11 53
FlowMap : ラベルづけ
• ラベル : ノードをPOとみなしたときのLUTからなる段数 小ネットワークの段数
:ノード t におけるKフィージブル・カット
• プライマリ・インプットからプライマリ・アウトプットへ順にノードごとにラベルの計算を行う
)(tC ),( XXm
1),(min)()(),(
+=∈
XXmtltCXX
)(max xlXx∈
=
2008/12/11 54
FlowMap : ラベルづけの例
t
00 000 0
1
1
1 1
2
2
2
t
00 000 0
1
1
1 1
2
2
2
2
k-フィージブル・カット
k-フィージブル・カット
k-フィージブル・カット
2008/12/11 55
FlowMap : マッピング• PO側からPI側へ
ラベルに対応するマッチを選択
– 全てのノードにおいて段数が 小
• 出力における段数 小が保証される
– ラベルに対応するマッチが複数存在した場合
• マッチに被覆されるノード数が大のマッチを選択
0000 0
1
1
1 1
2
2
2
2
2008/12/11 56
FlowMap : LUTの個数を改善するための後処理
• LUTの個数を減らすためのヒューリスティック
– LUTとその近傍に存在する他のLUTを可能であれば1つのLUTにまとめる
• LUTネットワークの出力における段数が増えない範囲
で行う
• LUTの段数が 小かつ個数が 小である
厳密解が得られる保証はない
2008/12/11 57
その他のトピックス
• ファンアウト 適化
• タイミング 適化
• 配線遅延の考慮⇒レイアウトとの融合