2012年2月21日火曜日

配線負荷モデル

配線負荷モデルってなんですの?ということで調べてみた.

配線負荷モデル(Wire Loading Model)とは,DesignCompiler等で論理合成する際に,ゲート間の配線に寄生する容量,抵抗等を論理合成ツールに考慮させるためのパラメータである.

実際の回路ではゲート内のRC以外にも,ゲート間の配線に寄生する容量(C)や抵抗(R)が存在する.これらのパラメータは配線長,およびファンアウト(次段につながるゲート数)に依存して変動する.
一方論理合成する際は正確な配線長はわからない.正確な寄生容量/抵抗を知るためにはレイアウトを行う必要がある.そのため過去に設計したレイアウトから回路の面積やファンアウトに対する寄生容量/抵抗の値を統計的に抽出し,この統計情報を利用して論理合成した回路内の配線の寄生容量/抵抗を考慮する.

セルのキャラクタライズを行った後のデータベース(.lib)がファブから提供されている場合,配線負荷モデルの値は.libファイルに書かれている.配線負荷モデルの一例を挙げると以下のようになる.

wire_load hoge_area200 {
resistance : 0 ;
capacitance : 1 ;
area : 0 ;
slope : 10e-10;
fanout_length: 1.0 10e-4 ;
fanout_length: 2.0 20e-4 ;
fanout_length: 4.0 40e-4 ;
}

"hoge_area200"は配線負荷モデルの名前を示す.後述するが配線負荷モデルは回路面積(想定される配線長)に応じて使い分けることができる.
"area"は配線が占める面積,"capacitance"は単位配線長あたりの容量,"resistance"は単位配線長あたりの抵抗,"slope"はファンアウト数あたりの波形の傾きである.fanout_lengthはファンアウト数に対する配線資源を示す.


配線負荷モデルの選択は

wire_load_selection Libname {
wire_load_from_area : 0.00 200 hoge_area200 ;
wire_load_from_area : 200.50 400 hoge_area400 ;
wire_load_from_area : 400.50 800 hoge_area800 ;
}

の様にかける.ここで"wire_load_selection"内の"wire_load_from_area"の値,つまり回路面積に応じて対応する"wire_load"に分岐する事ができる.

今回は回路面積に対する配線負荷モデルを示したが,たとえば消費電力の最悪値を見積もるために,別の配線負荷モデルを使い分ける事もできるようだ.