(57)【要約】【課題】微修正したネットリストに対して論理シミュレーションを行うことなく消費電力の算出を可能にする。【解決手段】第１のネットリストに対して論理シミュレーションにより求めた動作率データを，第１，第２のネットリストのゲーティッドクロックバッファの対応関係に基づいて流用し，その動作率データから微修正された第２のネットリストの消費電力を算出する。対応関係は，第１，第２のネットリストを解析し，ゲーティッドクロックバッファとレジスタのクロックツリー構造から探索する。【選択図】図７
2008065382.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩ内の複数セルの接続を定義したネットリストから消費電力を算出するＬＳＩの消費電力算出方法において，
第１のネットリストについて論理シミュレーションを実行して前記セルの動作率を求め，当該動作率と前記セルの消費電力属性パラメータとから前記第１のネットリストの消費電力を算出する工程と，
前記第１のネットリストの少なくとも一部のセルを有する第２のネットリストの消費電力を算出する工程とを有し，
前記第２のネットリストの消費電力算出工程は，
前記第１及び第２のネットリスト内のセルの対応関係を検出する対応関係検出工程と，当該セルの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各セルの動作率を求める動作率生成工程と，当該第２のネットリストの各セルの動作率と当該セルの消費電力属性パラメータとから消費電力を算出する第２の算出工程とを有することを特徴とするＬＳＩの消費電力算出方法。
【請求項２】
請求項１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリスト内で同じ名前のレジスタに接続される下層ゲーティッドクロックバッファを検出し，前記第１，第２のネットリスト内で当該検出された下層ゲーティッドクロックバッファに接続される上層ゲーティッドクロックバッファを検出し，当該上層ゲーティッドクロックバッファの検出を繰り返し行い，各層で検出されたゲーティッドクロックバッファの対応関係を抽出することを特徴とするＬＳＩの消費電力算出方法。
【請求項３】
請求項２において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【請求項４】
請求項１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリストの前記ゲーティッドクロックバッファについて，同じイネーブル信号で制御されるゲーティッドクロックバッファを対応付け，
前記動作率生成工程では，当該ゲーティッドクロックバッファの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各ゲーティッドクロックバッファの動作率を求めることを特徴とするＬＳＩの消費電力算出方法。
【請求項５】
請求項４において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【請求項６】
請求項１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記第１のネットリストの消費電力算出工程は，ハードウエア記述言語で記述された設計データを論理合成して前記第１のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第１の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記第２のネットリストの消費電力算出工程は，さらに，ハードウエア記述言語で記述された設計データを論理合成して前記第２のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第２の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記対応関係検出工程では，前記第１及び第２の生成ゲーティッドクロックバッファ表に含まれるゲーティッドクロックバッファを，前記イネーブル信号に基づいて対応付けることを特徴とするＬＳＩの消費電力算出方法。
【請求項７】
請求項６において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【請求項８】
ＬＳＩ内の複数セルの接続を定義したネットリストから消費電力を算出するＬＳＩの消費電力算出プログラムにおいて，
第１のネットリストについて論理シミュレーションを実行して前記各セルの動作率を求め，当該動作率と前記セルの消費電力属性パラメータとから前記第１のネットリストの消費電力を算出する工程と，
前記第１のネットリストの少なくとも一部のセルを有する第２のネットリストの消費電力を算出する工程とを，コンピュータに実行させ，
前記第２のネットリストの消費電力算出工程は，
前記第１及び第２のネットリスト内のセルの対応関係を検出する対応関係検出工程と，当該セルの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各セルの動作率を求める動作率生成工程と，当該第２のネットリストの各セルの動作率と当該セルの消費電力属性パラメータとから消費電力を算出する第２の算出工程とを有することを特徴とするＬＳＩの消費電力算出プログラム。
【請求項９】
請求項８において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリスト内で同じ名前のレジスタに接続される下層ゲーティッドクロックバッファを検出し，前記第１，第２のネットリスト内で当該検出された下層ゲーティッドクロックバッファに接続される上層ゲーティッドクロックバッファを検出し，当該上層ゲーティッドクロックバッファの検出を繰り返し行い，各層で検出されたゲーティッドクロックバッファの対応関係を抽出することを特徴とするＬＳＩの消費電力算出プログラム。
【請求項１０】
請求項８において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記第１のネットリストの消費電力算出工程は，ハードウエア記述言語で記述された設計データを論理合成して前記第１のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第１の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記第２のネットリストの消費電力算出工程は，さらに，ハードウエア記述言語で記述された設計データを論理合成して前記第２のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第２の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記対応関係検出工程では，前記第１及び第２の生成ゲーティッドクロックバッファ表に含まれるゲーティッドクロックバッファを，前記イネーブル信号に基づいて対応付けることを特徴とするＬＳＩの消費電力算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＬＳＩの消費電力算出方法及びその算出プログラムに関し，特に，ハードウエア記述言語（ＨＤＬ）で記述された設計データを論理合成して生成したネットリストについて消費電力の見積を行った後，微修正した設計データから生成した修正ネットリストについての消費電力の見積を少ない工数で行うことができる方法及びプロセッサエレメントに関する。
【背景技術】
【０００２】
近年のＬＳＩの設計は，ＨＤＬで記述した設計データを論理合成してネットリストを生成し，そのネットリストから論理検証を経てレイアウトツールによりレイアウトデータを生成する。その場合，ネットリストが生成された時点でＬＳＩの消費電力の見積が行われる。消費電力は，回路動作に依存して発生するダイナミックな消費電力と，リーク電流など回路動作に依存しないスタティックな消費電力とを有し，ダイナミック消費電力が大きな部分を占めている。さらに，ダイナミック消費電力では，データパスでの消費電力よりもクロック配線での消費電力が大きく，特にクロックツリー配線やフリップフロップのクロック部の消費電力が大きい。
【０００３】
そして，データ線やクロック線のダイナミック消費電力Ｐｄは，配線容量Ｃ，印加電圧Ｖ，動作周波数（クロック周波数）ｆ，動作率αとすると，
Ｐｄ＝ＣＶ2ｆα
で算出される。ここで，動作率αは，データ線やクロック線がＨレベルとＬレベルに変化する比率であり，ネットリストの論理回路に所定の入力パターンを与えて行われる論理シミュレーションを実行することで得られる動作波形から算出される。
【０００４】
したがって，ダイナミック消費電力を計算する場合は，ＡＳＩＣライブラリのゲートレベルでマッピングしたネットリストを論理シミュレーションして，信号波形を抽出する。この信号波形とネットリストとライブラリの消費電力データとを電力解析ツールにかける。電力解析ツールは，信号波形から信号の動作率を算出し，ライブラリに登録されている消費電力値と動作率とからシミュレーション期間の消費電力を算出する。
【０００５】
以上の通り，あるネットリストから消費電力を算出するためには多くの工数を要する。かかる消費電力の計算方法については，以下の特許文献１〜５に記載されている。
【特許文献１】特開平２−１３６７５５号公報
【特許文献２】特開平２−１７１８６１号公報
【特許文献３】特開２００１−５９８５６号公報
【特許文献４】特開２００２−２８８２５７号公報
【特許文献５】特開２００３−２５６４９５号公報
【特許文献６】特開２００４−６２２３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述のとおり，消費電力の算出において，ネットリストを論理シミュレーションして信号波形データを得るための実行時間が長く，これが設計コストのアップを招いている。さらに，別の問題として，一旦生成された第１のネットリストに対して，クロックツリー合成やタイミング調整のためのバッファの追加により，修正された第２のネットリストが生成される。また，第１のネットリストから消費電力を算出した後に，設計データに微修正を加えて論理合成して第２のネットリストを生成したり，異なる論理合成ツールにより論理合成して第２のネットリストを生成したりなど，何らかの理由で修正をした第２のネットリストが生成される。その場合，第２のネットリストに対して，消費電力算出のために再度論理シミュレーションを実行しなければならず，これが設計のコストアップを招いている。
【０００７】
また，論理合成ツールの進化に伴って，省電力化のためにゲーティッドクロックバッファを自動挿入する機能が開発されている。この場合は，設計者が認識していないゲーティッドクロックバッファが任意の名前で追加されることになり，かかる機能によってもネットリストが頻繁に修正され，それぞれのネットリストについて論理シミュレーションの実行と消費電力算出が必要になる。
【０００８】
そこで，本発明の目的は，修正された第２のネットリストの消費電力の計算を簡便に行うことができるＬＳＩの消費電力算出方法及びその算出プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために，本発明の第１の側面によれば，第１のネットリストに対して論理シミュレーションを実行してゲーティッドクロックバッファの動作率データを求めて，当該動作率データから消費電力を算出し，その後，第１のネットリストの少なくとも一部のセルを有する修正された第２のネットリストについて，第１，第２のネットリストのゲーティッドクロックバッファの対応関係を基にして第１のネットリストの動作率データから第２のネットリストの動作率データを求める。そして，求めた動作率データから消費電力を算出する。之により，第２のネットリストに対して再度論理シミュレーションを行うことなく消費電力を見積もることができる。
【００１０】
上記本発明の第１の側面では，ＬＳＩ内の複数セルの接続を定義したネットリストから消費電力を算出するＬＳＩの消費電力算出方法において，第１のネットリストについて論理シミュレーションを実行して前記セルの動作率を求め，当該動作率と前記セルの消費電力属性パラメータとから前記第１のネットリストの消費電力を算出する工程と，前記第１のネットリストの少なくとも一部のセルを有する第２のネットリストの消費電力を算出する工程とを有し，
前記第２のネットリストの消費電力算出工程は，前記第１及び第２のネットリスト内のセルの対応関係を検出する対応関係検出工程と，当該セルの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各セルの動作率を求める動作率生成工程と，当該第２のネットリストの各セルの動作率と当該セルの消費電力属性パラメータとから消費電力を算出する第２の算出工程とを有することを特徴とする。
【００１１】
上記の第１の側面において，好ましい態様によれば，前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，前記対応関係検出工程では，前記第１，第２のネットリスト内で同じ名前のレジスタに接続される下層ゲーティッドクロックバッファを検出し，前記第１，第２のネットリスト内で当該検出された下層ゲーティッドクロックバッファに接続される上層ゲーティッドクロックバッファを検出し，当該上層ゲーティッドクロックバッファの検出を繰り返し行い，各層で検出されたゲーティッドクロックバッファの対応関係を抽出することを特徴とする。
【００１２】
上記の好ましい態様によれば，第１，第２のネットリストで同じ名前のレジスタを基に，ゲーティッドクロックバッファの対応関係を抽出することができる。その対応関係を利用して第２のネットリストの動作率データを生成する。
【００１３】
上記の第１の側面において，好ましい態様によれば，前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，前記対応関係検出工程では，前記第１，第２のネットリストの前記ゲーティッドクロックバッファについて，同じイネーブル信号で制御されるゲーティッドクロックバッファを対応付け，前記動作率生成工程では，当該ゲーティッドクロックバッファの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各ゲーティッドクロックバッファの動作率を求めることを特徴とする。
【００１４】
すなわち，上記好ましい態様では，第１，第２のネットリストを解析してゲーティッドクロックバッファとそのクロックが供給される別のゲーティッドクロックバッファ及びレジスタとを対応付けたゲーティッドクロックバッファ対応表を作成し，その対応表からネットワーク間のゲーティッドクロックバッファの対応表を生成する。そして，この対応表を基にして，第１のネットリストの動作率を第２のネットリストの動作率として抽出する。
【００１５】
上記の第１の側面において，好ましい態様によれば，前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，前記第１のネットリストの消費電力算出工程は，ハードウエア記述言語で記述された設計データを論理合成して前記第１のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第１の生成ゲーティッドクロックバッファ表を生成する工程を有し，前記第２のネットリストの消費電力算出工程は，さらに，ハードウエア記述言語で記述された設計データを論理合成して前記第２のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第２の生成ゲーティッドクロックバッファ表を生成する工程を有し，前記対応関係検出工程では，前記第１及び第２の生成ゲーティッドクロックバッファ表に含まれるゲーティッドクロックバッファを，前記イネーブル信号に基づいて対応付けることを特徴とする。
【００１６】
上記の好ましい態様によれば，論理合成ツールが自動生成したゲーティッドクロックバッファをイネーブル信号と対応付けて対応表を生成する。その対応表を参照して，第１，第２のネットリスト間のゲーティッドクロックバッファの対応を，イネーブル信号を基に探索する。
【発明の効果】
【００１７】
修正されたネットリストについて，再度論理シミュレーションを繰り返すことなくその動作率を求めることができるので，消費電力の見積工数を大幅に削減することができる。
【発明を実施するための最良の形態】
【００１８】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１９】
図１は，論理合成におけるゲーティッドクロックバッファの自動生成を説明する図である。ＨＤＬで記述された設計データＲＴＬは，レジスタ・トランスファ・レベル（ＲＴＬ）で論理回路が記述されている。図１に示した設計データＲＴＬは，実際の記述例ではないが，イネーブル信号ＥＮが「１」の時に，クロックＣＫに応答して，入力信号ＩＮがレジスタであるフリップフロップＦＦにラッチされ，イネーブル信号ＥＮが「０」の時はラッチされない論理回路を記述しているとする。したがって，フリップフロップＦＦのデータ入力端子ＤにはセレクタＳＬを介して入力信号ＩＮまたはフリップフロップＦＦの出力信号Ｑが入力され，セレクタＳＬの切り替えはイネーブル信号ＥＮに基づいて行われる。
【００２０】
かかる設計データＲＴＬを論理合成ツールにより論理合成すると，一般的には，図１中設計データＲＴＬとして示した論理回路のネットリストが生成される。
【００２１】
ところが，近年において消費電力を削減するために，論理合成ツールは，イネーブル信号ＥＮに応じてクロックＣＫをレジスタに供給するゲーティッドクロックバッファを自動的に挿入する機能を有している。つまり，図１のネットリストＮＬに示されるとおり，フリップフロップＦＦのクロック入力端子の前段にゲーティッドクロックバッファＧＢを挿入し，クロックＣＫがイネーブル信号ＥＮに応じてフリップフロップＦＦに供給され論理回路のネットリストが生成される。
【００２２】
図１の設計データＲＴＬの論理回路によれば，クロックＣＫは常時ＨレベルとＬレベルに変化し，そのたびにフリップフロップＦＦがデータ入力Ｄのラッチ動作を実行する。したがって，イネーブル信号ＥＮが不活性状態（０レベル）であっても，フリップフロップが動作するので，消費電力が大きくなる。それに対して，ゲーティッドクロックバッファＧＢが挿入されたネットリストＮＬの論理回路によれば，クロックＣＫがイネーブル信号ＥＮに応じてフリップフロップＦＦに供給される。よって，イネーブル信号ＥＮが不活性状態（０レベル）の間は，クロックＣＫのフリップフロップＦＦへの供給が停止され，フリップフロップの動作が停止するので，省電力化を図ることができる。このように，論理合成ツールによるゲーティッドクロックバッファの自動挿入は，省電力化に大きく寄与する。
【００２３】
かかるゲーティッドクロックバッファは，イネーブル信号に基づいてフリップフロップの動作を制御するので，セルの一種のレジスタであるフリップフロップの前段に追加されるのが一般的である。
【００２４】
ところが，上記のゲーティッドクロックバッファの自動挿入は，設計者がコントロールできないところで行われるので，どのような名前のゲーティッドクロックバッファがどのような位置に挿入されたかを設計者が逐一認識することはできない。しかも，自動挿入されるゲーティッドクロックバッファの名前は，論理合成ツール毎に異なるし，ＨＤＬ設計データ毎にも異なる場合がある。
【００２５】
よって，設計データをデバックなどの目的で微修正して新たな設計データを生成した場合，それを論理合成したネットリストは，最初の設計データから論理合成したネットリストとは，ゲーティッドクロックバッファの構成が微妙に異なる。また，同じ設計データであっても，バージョンアップされた論理合成ツールや，異なるベンダーの論理合成ツールによってネットリストを生成した場合も同様である。
【００２６】
このように，修正されたネットリストについて消費電力の計算を行うためには，従来は，そのネットリストに対して消費電力計算ツールによって最初から電力計算を行うしか方法がない。そのため，大部分が同じネットリストであっても，その消費電力の見積のためには多くの工数が必要になり，ＬＳＩ開発のコストアップを招くことになる。特に，論理シミュレーションは多大な工数を要する。
【００２７】
本実施の形態のＬＳＩの消費電力の計算方法を説明する前に，ＨＤＬ設計データとネットリストの例を説明する。そのあとで，この具体例を使って本実施の形態の消費電力の計算方法を説明する。
【００２８】
図２は，ＨＤＬ設計データの例を示す図である。この設計データＲＴＬは，イネーブルＡが「１」の時に入力A_INがレジスタＡにラッチされ出力A_OUTとして出力され，イネーブルＢが「１」の時に入力B_INがレジスタＢにラッチされ出力B_OUTとして出力されるモジュールＭＯである。設計データＲＴＬは，モジュール宣言１０と，入出力宣言１２と，配線，レジスタＡ（８ビット），Ｂ（３ビット）及びゲーティッドクロックバッファＧＢＵＦ０の宣言１４と，順序回路の記述１６，１８とを有する。この設計データは，ＨＤＬで記述されており，上記宣言の内容については，記述される通りである。
【００２９】
例えば，順序回路の記述１６によれば，内部クロックInternal_Clockの立ち上がりエッジに応答して，リセット信号Resetが「１」ならばレジスタＡを「０」にし，イネーブル信号Enable_Aが「１」ならばレジスタＡに入力A_INをラッチし，イネーブル信号Enable_Aが「０」ならばレジスタＡはラッチ状態を維持する。順序回路の記述１８もレジスタＢについて同様の構成を記述している。このように，レジスタＡ，Ｂは，イネーブル信号を条件にしてクロック同期で所定の動作を行うように設計されている。
【００３０】
図３は，図２のＨＤＬ設計データＲＴＬを論理合成して得られたネットリストの例を示す図である。論理合成ツールは，セルライブラリを参照して設計データＲＴＬをネットリストＮＬに変換する。図３に示されたネットリストＮＬ１は，モジュール２０，入出力２２，ゲーティッドクロックバッファ群２４，Ｄ−ＦＦ群２６，及び出力端子２８の配線構造を有している。そして，このネットリストＮＬ１には，設計データＲＴＬで宣言したゲーティッドクロックバッファＧＢＵＦ０に加えて，ゲーティッドクロックバッファＧ０，Ｇ１，Ｇ２が自動的に挿入されている。この挿入されたゲーティッドクロックバッファＧ０，Ｇ１は，イネーブル信号Enable_Aに基づいて入力クロックInternal_Clockを出力クロックn_0000,n_0001として出力する。また，ゲーティッドクロックバッファG2は，イネーブル信号Enalbe_Bに基づいて入力クロックInternal_Clockを出力クロックn_0002として出力する。
【００３１】
図４は，図３のネットリストに対する論理回路図である。図４には，データ入出力，データ配線は省略され，ゲーティッドクロックバッファＧＢとレジスタ（フリップフロップ）ＦＦなどのセルと，クロック入力と，イネーブル入力と，クロック配線とが示されている。
【００３２】
ネットリストは，バッファやフリップフロップなどのセル間のデータ線及びクロック線による接続を定義する。図３のネットリストでは，クロック配線については，モジュールＭＯに入力されるグローバルクロックGlobal_Clockが，ゲーティッドクロックバッファGBUF_0に入力され，内部クロックInternal_Clockが出力され，それがゲーティッドクロックバッファG0,G1,G3を介して，レジスタA0〜A3,A4〜A7，B0〜B2に供給される。ゲート配線については，入力A_IN_0〜A_IN_7がレジスタA0〜A7のデータ入力端子に接続され，そのデータ出力端子が出力A_OUT_0〜A_OUT_7に接続され，入力B_IN_0〜B_IN_2がレジスタB0〜B2のデータ入力端子に接続され，そのデータ出力端子が出力B_OUT_0〜B_OUT_2に接続される。
【００３３】
さらに，図３のネットリストでは，イネーブル信号Gated_Module_MOがゲーティッドクロックバッファGBUF_0に供給され，イネーブル信号Enable_AがゲーティッドクロックバッファG0,G1に供給され，イネーブル信号Enable_BがゲーティッドクロックバッファG2に供給され，リセット信号ResetがレジスタA0〜A7,B0〜B2にそれぞれ供給される。
【００３４】
上記説明から，図３のネットリストＮＬ１と図４の論理回路との対応が理解される。そして，図４の論理回路において，セルGBUF_0，A0〜A7，B0〜B2がＨＤＬ設計データＲＴＬで記述されていたが，論理合成により生成されたネットリストＮＬ１には，ゲーティッドクロックバッファG0，G1，G2が生成されたことが理解される。
【００３５】
図５は，別のネットリストに対する論理回路図である。図５は，図示しないネットリストＮＬ２の論理回路を示している。この例では，図２の設計データＲＴＬを，ゲーティッドクロックバッファのファンアウト数を３個に制限するというコマンドを有する設定ファイルと共に，論理合成ツールに与えた結果，得られたネットリストＮＬ２の論理回路である。図４の場合と同様に，論理合成ツールは，省電力化のためにゲーティッドクロックバッファU0〜U3を自動挿入している。ただし，ファンアウト数が３個に制限されたため，イネーブル信号Enable_Aにより制御されるゲーティッドクロックバッファU0,U1,U2が，レジスタA0〜A2，A3〜A4，A5〜A7にそれぞれクロックを供給している。そして，図４のネットリストＮＬ１と同様に，イネーブル信号Enable_Bにより制御されるバッファU3がレジスタB0〜B2にクロックを供給する。そして，それらの自動挿入されたバッファ名U0〜U3は，ネットリストＮＬ１のバッファ名G0〜G2とは異なっている。
【００３６】
このように，同じ設計データであっても設定ファイルを変更して論理合成すると，異なる論理回路のネットリストが生成される。同様に，異なるベンダーの論理合成ツールで論理合成する場合も，同等の論理回路ではあるが異なるバッファ名のゲーティッドクロックバッファが挿入されて，異なる論理回路のネットリストが生成される。ただし，最初のネットリストと修正されたネットリストとは，大部分のセルは同じで概略的な構成は同じであり，最初のネットリストに対して計算した消費電力計算結果を，修正されたネットリストの消費電力計算結果に生かせれば，設計のコストダウンが可能である。
【００３７】
図６は，リタイミング処理を説明する図である。リタイミング処理もネットリストの修正を伴う。したがって，最初のネットリストの消費電力計算結果を利用するためには，リタイミング処理により変更されるデータについても考慮することが求められる。
【００３８】
リタイミング処理とは，レジスタ間の遅延時間制約を満たすように時間制約を満たさないレジスタを移動させる処理であり，ネットリストの段階で行われる。図６に示されるとおり，ネットリストＮＬ１０では，レジスタＲ０，Ｒ１，Ｒ２の間に組合せ回路ＣＢ１，ＣＢ２が存在するとする。そして，レジスタＲ０，Ｒ１間の組合せ回路ＣＢ１での遅延時間が１４ｎｓ，レジスタＲ１，Ｒ２間の組合せ回路ＣＢ２での遅延時間が４ｎｓとする。そして，レジスタ間の遅延時間の制約が１２ｎｓとすると，組合せ回路ＣＢ１の遅延時間はこの時間制約を満たしていない。
【００３９】
そこで，組合せ回路ＣＢ１の一部を右側に移動して，時間制約を満たすようにする処理が行われる。これがリタイミング処理である。この場合，ネットリストＮＬ１０のレジスタＲ１を削除し，組合せ回路ＣＢ１内に新たなレジスタを挿入する処理が行われる。そして，組合せ回路の構成上の理由などから，２つのレジスタR1_0とR1_1が追加される。このように，リタイミング処理により，２つのネットリストＮＬ１０，ＮＬ１２間では，対応するレジスタの名前が変更され，数が増えている。かかる修正が行われたネットリストＮＬ１２についても，消費電力の計算が必要になる。
【００４０】
このように，修正されたネットリストでは，レジスタ名が変更されたり数が変化したりすることがあり，消費電力計算工程では，元のネットリストとの対応を取ることが必要になる。
【００４１】
以上のような論理合成により生成されるネットリストの事情を考慮して，以下に本実施の形態におけるＬＳＩの消費電力の算出方法について説明する。
【００４２】
［消費電力算出方法］
図７は，本実施の形態におけるＬＳＩの消費電力算出方法のフローチャート図である。ＨＤＬで記述された設計データＲＴＬ＃１は，設定ファイル１００で設定された論理合成条件に基づいて論理合成されて，ネットリストＮＬ１に変換される（１２０）。この論理合成は，論理合成ツール（バージョンＶ１）により行われ，図３，４，５で説明したとおり，イネーブル信号を動作条件とするセルに対しては，イネーブル信号によってクロック信号をセルに入力するゲーティッドクロックバッファが自動的に生成される。
【００４３】
さらに，論理合成１２０の後に，クロック合成及びレイアウト工程１２１により，クロック配線の途中にクロックバッファが適宜挿入され，クロック信号の伝搬遅延の改善が行われることもある。このクロックバッファは，単なるバッファでありイネーブル信号により制御されるものではない。よって，かかるクロックバッファは，その上流のゲーティッドクロックバッファの動作率と同じ動作率で動作する。
【００４４】
論理合成により生成された第１のネットリストＮＬ１について，論理シミュレーションが行われる（１２２）。論理シミュレーションでは，所定の入力パターンに対してネットリストＮＬ１で定義されたＬＳＩをクロックに同期して動作させ，所望の期間におけるデータ線やクロック線やセルの入出力の波形データＳＷ１が抽出される。この論理シミュレーション工程は，ネットリストの規模が大きくなるほど工数が多大になる。
【００４５】
波形データＳＷ１から，前記シミュレーション期間における動作率データＯＫが算出される（１２３）。例えば，クロック信号の波形データが常時Ｈ，Ｌレベルへの変化を繰り返していれば動作率は１００％であり，一部の期間のみ変化する場合はそれに対応する割合になる。これにより，ネットリストＮＬ１内の複数のゲーティッドクロックバッファの動作率が求められる。
【００４６】
次に，電力算出工程１２４で，このゲーティッドクロックバッファの動作率データに基づき，ネットリストＮＬ１とセルライブラリ１３０とを参照して，電力見積値ＰＥ１が算出される。前述のとおり，ダイナミック消費電力Ｐｄは，Ｐｄ＝ＣＶ2ｆα，（配線容量Ｃ，印加電圧Ｖ，動作周波数（クロック周波数）ｆ，動作率α）で算出される。この配線容量Ｃはセルライブラリ１３０から抽出され，印加電圧Ｖとクロック周波数ｆは，別途入力される。
【００４７】
図４に示したネットリストＮＬ１によれば，ゲーティッドクロックバッファGBUF_0の動作率に基づいて，クロック線Internal_Clockのダイナミック消費電力が，ゲーティッドクロックバッファ G0, G1, G2の動作率に基づいて，クロック線n_0000〜n_0002と，レジスタA0〜A7，B0〜B2のダイナミック消費電力がそれぞれ算出される。このように，あるゲーティッドクロックバッファに属する信号線やレジスタは，ネットリストＮＬ１をトレースすることで抽出可能である。
【００４８】
以上の処理フローにより，ネットリストＮＬ１の消費電力ＰＥ１が算出される。次に，このネットリストＮＬ１に微修正を加えたネットリストＮＬ２の消費電力の算出方法について説明する。図７には，第２のネットリストＮＬ２が生成されるケースが示されている。例えば，ＨＤＬ設計データＲＴＬ＃１がデバックされて（１１０），微修正されたＨＤＬ設計データＲＴＬ＃２が生成され，それが同じ論理合成ツール（バージョンＶ１）で論理合成されて第２のネットリストＮＬ２が生成される。第２に，ＨＤＬ設計データＲＴＬ＃１またはＲＴＬ＃２が，異なる論理合成ツール（バージョンＶ２）で論理合成されて第２のネットリストＮＬ２が生成される。第３に，ネットリストＮＬ１に対してリタイミング処理を行って（１１２），第２のネットリストＮＬ２が生成される。上記以外にも種々の状況下で，第１のネットリストＮＬ１と入出力端子やセルは共通であるが，クロックツリー構造やそれを構成するクロックバッファの名前が異なるなどの微修正が行われた第２のネットリストが生成される。
【００４９】
本実施の形態では，多大な工数を要する論理シミュレーション工程を繰り返すことなく，微修正されたネットリストＮＬ２の消費電力計算が行われる。そのために，動作率データ生成処理１２７にて，第１，第２のネットリストＮＬ１，ＮＬ２と，第１のネットリストを論理シミュレーションして求めた動作率データＯＲ１とから，第２のネットリストの動作率データＯＲ２が生成される（１２７）。この処理１２７については後で詳述する。つまり，第１のネットリストを論理シミュレーションして求めた動作率データＯＲ１が，第２のネットリストの電力計算でも利用される。そして，求められた第２のネットリストＮＬ２の動作率データＯＲ２に基づいて，前述と同様の電力計算処理が行われて電力見積値ＰＥ２が算出される（１２８）。
【００５０】
図８は，本実施の形態における消費電力算出装置の構成図である。この装置は，中央処理ユニットＣＰＵが，プログラムである消費電力算出ツールを実行することにより消費電力の算出を行う。図７で説明したとおり，消費電力算出ツール１０は，第１のネットリストの動作率データＯＲ１から，第１，第２のネットリストＮＬ１，ＮＬ２と，セルライブラリ１３０を参照して，第２のネットリストの動作率データＯＲ２を生成する。この動作率データＯＲ２を生成するために，第１，第２のネットリストＮＬ１，２のゲーティッドクロックバッファ対応表１２，１４と，ネットリスト間対応表１６とが生成される。さらに，消費電力算出ツール１０は，この動作率データＯＲ２に基づき，第２のネットリストＮＬ２とセルライブラリ１３０を参照して，消費電力ＰＥ２を算出する。
【００５１】
［動作率データ生成処理］
図９〜図１４は，本実施の形態における動作率データ生成処理１２７のフローチャート図である。そして，図２〜５の２つのネットリストＮＬ１，ＮＬ２を具体例として説明するが，これらのフローチャート図の説明に際して，この具体例に適用したときに生成される各種のデータや表を示した図１５〜図２３を参照する。
【００５２】
図９は，ネットリストＮＬ２の動作率データを生成するフローチャート図である。動作率データＯＲ２の生成処理は，第１，第２のネットリストＮＬ１，ＮＬ２からネットリスト間のセルの対応表を作成する処理２００と，第１のネットリストＮＬ１の動作率データＯＲ１と上記対応表とから動作率データＯＲ２を作成する処理２０１とからなる。また，対応表の作成処理２００において，リタイミング処理などでレジスタがリネームされた場合に対応するために，リネームリストＲＮＡ１，ＲＮＡ２が参照される。なお，電力計算に必要な動作率データは，ゲーティッドクロックバッファの動作率であるので，ネットリスト間の対応表もゲーティッドクロックバッファの対応表である。
【００５３】
図１５は，第１のネットリストＮＬ１の動作率データＯＲ１を示す図である。図４に示したとおり第１のネットリストＮＬ１はゲーティッドクロックバッファGBUF_0，G0，G1，G2を有し，第１のネットリストへの論理シミュレーションによりそれらに対する動作率が求められている。
【００５４】
図１６は，セルライブラリ１３０のセルデータを示す図である。図１６のセルデータには，一例として，セルタイプがフリップフロップセルとゲーティッドクロックバッファとについて，セル名と，クロック入力ポート名と，クロック出力ポート名とが含まれている。
【００５５】
図１７は，リネームリストＲＮＡ１，２の例を示す図である。リタイミング処理などにより，ネットリスト内のレジスタ名が異なるレジスタ名にリネームされる。その場合に，リネームリストＲＮＡ１，２が生成される。リネームリストＲＮＡ１は第１のネットリストＮＬ１について，リネームリストＲＮＡ２は第２のネットリストＮＬ２についての例である。ただし，図４，５に示したネットリストでは，かかるリネームは行われていない。
【００５６】
［対応表の作成］
図１０は，図９の対応表作成処理２００のフローチャート図である。まず，ライブラリのセルデータ１３０（図１６）を参照して，ネットリストをパーズ処理してリレーショナルネットリスト２０２を生成する（２１０）。このパーズ処理により生成されたリレーショナルネットリストは，後述する対応表を生成するために生成される中間ファイルである。
【００５７】
図１８は，第１のネットリストＮＬ１に対応するリレーショナルネットリストを示す図である。このリレーショナルネットリストは，ゲーティッドクロックバッファGBUF_0，G0，G1，G2と，レジスタであるフリップフロップA0〜A7，B0〜B2と，それらを結ぶクロック配線とを含む。このバッファとレジスタは，セルの一種である。そして，ゲーティッドリストポインタで，ゲーティッドクロックバッファが関連付けられている。各バッファの「next」フィールドに次のバッファのポインタが格納されている。同様に，FFリストポインタで，フリップフロップが関連付けられている。同様に各フリップフロップの「next」フィールドに次のフリップフロップのポインタが格納されている。また，「drive」フィールドは出力クロックが駆動する後段のバッファとレジスタのポインタが格納されている。複数の後段セルを駆動する場合はリストL1,L2,L3,L4にポインタが格納される。そして，ゲーティッドクロックバッファには，フィールド「Clock_In」と「Clock_Out」に，実際のクロック配線名が格納されている。
【００５８】
図１０に戻り，ポーズ処理により，上記のようなリレーショナルネットリスト２０２が，第１，第２のネットリストＮＬ１，ＮＬ２それぞれについてメモリ空間上に作成される。そして，このリレーショナルネットリストを探索して，ゲーティッドクロックバッファ対応表１２，１４が作成される（２１１）。
【００５９】
図１９は，ゲーティッドクロックバッファ対応表の例を示す図である。第１のネットリストＮＬ１のゲーティッドクロックバッファ対応表１２は，図４のネットリストＮＬ１を参照すれば，容易に理解できる。つまり，ゲーティッドクロックバッファG0,G1,G2は，それぞれレジスタA0〜A3，A4〜A7，B0〜B2にクロックを供給する。また，ゲーティッドクロックバッファGBUF_0は，下層側のゲーティッドクロックバッファG0,G1,G2にクロックを供給する。したがって，対応表１２には，その対応関係が示される。
【００６０】
同様に，第２のネットリストＮＬ２のゲーティッドクロックバッファ対応表１４も，図５のネットリストＮＬ２を参照すれば，容易に理解できる。ゲーティッドクロックバッファU0,U1,U2,U3は，それぞれレジスタA0〜A2，A3〜A4，A5〜A7，B0〜B2にクロックを供給する。また，ゲーティッドクロックバッファGBUF_0は，下層側のゲーティッドクロックバッファU0,U1,U2,U3にクロックを供給する。したがって，対応表１２には，その対応関係が示される。
【００６１】
図１１は，ゲーティッドクロックバッファ対応表作成のフローチャート図である。ここでは，図１８のリレーショナルネットリスト２０２のゲーティッドクロックバッファをトレースしながら，各ゲーティッドクロックバッファがクロックを供給する先のセル名とタイプを参照し，タイプ別にセル名を分類して，図１９のゲーティッドクロックバッファ対応表１２，１４を作成する。
【００６２】
具体的には，セルのポインタにゲーティッドリストポインタの値をセットし（２２０），セルのポインタの参照先が存在しているかをチェックする（２２１）。最初の参照先は，ゲーティッドクロックバッファGBUF_0である。そこで，その参照先のゲーティッドクロックバッファの名前を対応表１２，１４に書く（２２２）。そして，セルへのポインタ２に「drive」フィールドのリストL1の先頭のポインタ値を格納する（２２３）。このポインタ値の参照先が存在しているかをチェックし（２２４），参照先の名前とタイプをチェックし（２２５），タイプがゲーティッド「GATED」の場合は（２２６），その名前を対応表の接続ゲーティッドクロックバッファの欄に書く（２２７）。タイプがフリップフロップ「FF」などのレジスタの場合は，その名前を対応表の接続レジスタの欄に書く（２２８）。上記の処理２２４〜２２８を，セルへのポインタ２に格納したリストL1,L2,L3,L4の全てのポインタについて繰り返す。
【００６３】
この結果，図９の対応表１２に示されるとおり，ゲーティッドクロックバッファGBUF_0に対応して，接続ゲーティッドクロックバッファの名前G0,G1,G2が書き込まれる。
【００６４】
次に，セルへのポインタ２の参照先が存在しないと（２２４のNO），セルへのポインタに「next」フィールドの値をセットする（２３０）。つまり，図１８の例では，ゲーティッドクロックバッファG0のセルが選択される。そして，このセルG0の「drive」フィールドのリストL2の参照先のセルの名前とタイプをチェックし，同様に対応表に書き込む。同様のことが，ゲーティッドクロックバッファG1,G2についても繰り返される。そして，ゲーティッドクロックバッファG2では，次のセルへのポインタの参照先が存在しないので（２２１のNO），処理を終了する。
【００６５】
以上の通り，全てのゲーティッドクロックバッファをトレースしながら，それらがクロックを供給しているセルをゲーティッドクロックバッファかレジスタかに分類して，図１９のゲーティッドクロックバッファ対応表１２を作成する。ネットリストＮＬ２についても同様にして対応表１４を作成する。
【００６６】
図１２は，ゲーティッドクロックバッファ対応表作成の第２のフローチャート図である。このフローチャートは，リタイミング処理などによりレジスタ名が変更されている場合に必要な処理である。つまり，ゲーティッドクロックバッファ対応表１２に書き込まれたレジスタ名が，リネームリストＲＮＡ１に存在する場合は，そのレジスタ名は元のレジスタ名に還元，つまり戻される（２４０）。つまり，図１７のリネームリストＲＮＡ１の場合は，リネームされたレジスタ名R1_0,R1_1が，元のレジスタ名R1に戻される。ゲーティッドクロックバッファ対応表１４についても同様に，リネームリストＲＮＡ２を参照して，変更されたレジスタ名が元のレジスタ名に戻される（２４１）。その結果，それぞれ元のレジスタ名を有する対応表１２Ｒ，１４Ｒが生成される。ネットリスト間でゲーティッドクロックバッファの対応を検出するために，レジスタ名を手がかりに探索するので，対応表１２Ｒ，１４Ｒでは共通の元のレジスタ名にしておく必要があるからである。
【００６７】
以上のように，ネットリストＮＬ１，ＮＬ２をそれぞれ構文解析することで，図１９のゲーティッドクロックバッファ対応表１２，１４を作成することができる。リネームレジスタが存在する場合は対応表１２Ｒ，１４Ｒが作成される。そして，この対応表１２，１４を利用して，ネットリストＮＬ１，ＮＬ２のゲーティッドクロックバッファの対応を示すネットリスト間対応表１６が作成される。この対応の探索は，クロックツリーの下流側から上流側にさかのぼりながら行われる。
【００６８】
図１３は，ネットリスト間対応表作成処理のフローチャート図である。このフローチャートの説明をするまえに，ゲーティッドクロックバッファの対応の探索方法について説明する。
【００６９】
図２０は，ネットリスト間対応表の探索アルゴリズムを説明する図である。この例では，ネットリストＮＬａ，ＮＬｂ間のゲーティッドクロックバッファの対応を探索する。このネットリストは，図４，５と同様にクロックツリーのみを示している。
【００７０】
論理合成ツールは，省電力化のためにレジスタの前段にゲーティッドクロックバッファを自動挿入する。したがって，論理合成毎に自動挿入されるゲーティッドクロックバッファの構成と名前が変更されることが予想される。しかしながら，ＨＤＬ設計データでは，入出力とレジスタは設計者により定義されそれらは論理合成されても変更させることはない。そこで，ゲーティッドクロックバッファの対応の探索は，クロックの最下流のレジスタＦＦ１〜ＦＦ６を起点にして，同じレジスタにクロックを供給するゲーティッドクロックバッファを探索して，それらの対応を検出し，さらに，対応関係が検出されたゲーティッドクロックバッファを起点にして，同じゲーティッドクロックバッファにクロックを供給するバッファを探索する。そして，より上流側のゲーティッドクロックバッファに移動しながら探索を繰り返す。
【００７１】
図２０の例では，対応ＣＲ０は同じレジスタ名であるので容易に検出でき，さらに対応ＣＲ０に基づいて対応ＣＲ１を検出し，その対応ＣＲ１に基づいて対応ＣＲ２，ＣＲ３を検出する。このようにすることで，ゲーティッドクロックバッファの数や名前が異なっても対応関係を見つけることができる。
【００７２】
図２１は，ネットリスト間対応表の探索アルゴリズムを説明する別の図である。この例では，ネットリストＮＬｘ，ＮＬｙ間の対応探索を示している。ネットリストＮＬｘでは，レジスタＦＦの直前にゲーティッドクロックバッファＧＢ２が追加されている。そして，このネットリストＮＬｘのゲーティッドクロックバッファＧＢ１，ＧＢ２間にクロックの遅延改善のためにバッファＢＵＦが追加されて，ネットリストＮＬｙが生成されている。この場合，図１１，図１３で説明したとおり，ネットリストを解析してゲーティッドクロックバッファとそれに接続されるレジスタ及びゲーティッドクロックバッファの対応表１２，１４を生成しているので，挿入されたバッファＢＵＦは，ネットリスト間対応の探索対象からはずれされている。したがって，図２１に示す矢印のように両者の対応関係を検出することができる。
【００７３】
図１３は，ネットリスト間対応表作成処理のフローチャート図である。この作成処理は，上記の探索アルゴリズムに基づいて，図１９のゲーティッドクロックバッファ対応表１２，１４から，ネットリスト間対応表を作成する。まず，第２のネットリストＮＬ２の対応表１４Ｒ内のゲーティッドクロックバッファ名を列挙した対応表１６を作成する（２５０）。この対応表１６の一例が図２２に示されている。つまり対応表１６の左コラムの「名前」には，第２のネットリストＮＬ２のゲーティッドクロックバッファ名が並べられ，右コラムの「対応名」には，第１のネットリストＮＬ１のゲーティッドクロックバッファ名が並べられる。上記工程２５０の段階では，右コラムは全て空欄である。
【００７４】
次に，対応表１４Ｒの先頭のエントリを取り出し，そのエントリのゲーティッドクロックバッファに対応する接続レジスタ名を取り出す（２５１，２５２，２５３）。図１９の対応表１４Ｒを例にすると，最初のエントリのゲーティッドクロックバッファＵ０のエントリが取り出され，それに対応する接続レジスタ名Ａ０が取り出される。ゲーティッドクロックバッファは，必ずしも図１９の例のように並んでいるわけではないので，エントリには接続レジスタ名が存在しないものもある。そして，レジスタ名の要素が見つかった場合は（２５４のＹｅｓ），レジスタにクロックを供給するゲーティッドクロックバッファのエントリであることを意味する。そこで，ネットリストＮＬ１の対応表１２Ｒで，同じレジスタ名を持つエントリを探す（２５６）。図１９に破線矢印で示すとおり，接続レジスタＡ０をもつエントリのゲーティッドクロックバッファＧ０が取り出され（２５７），それが対応表１６の右コラム「対応名」に書き込まれる（２５８）。そして，対応表１４Ｒの次のエントリが取り出されて，上記の処理が繰り返される。
【００７５】
以上のように，工程２５１〜２５９は，接続レジスタを起点にしてそれにクロックを供給するゲーティッドクロックバッファの対応を探索する処理である。
【００７６】
次に，対応表１４Ｒの接続レジスタ名を有するエントリの処理が完了したあと，再度対応表１４Ｒの最初のエントリから探索を行う（２６０）。そして，接続ゲーティッドクロックバッファ名が存在するエントリ（２６１のＹｅｓ），つまりゲーティッドクロックバッファにクロックを供給するゲーティッドクロックバッファついて，接続ゲーティッドクロックバッファ名を取り出す（２６６）。図１９の例では，ゲーティッドクロックバッファGBUF_0のエントリが取り出され，その接続ゲーティッドクロックバッファ名U0が取り出される。そして，対応表１６から，取り出したゲーティッドクロックバッファ名U0を左コラム「名前」の欄にもつエントリを見つける（２６７）。そして，そのエントリの右コラム「対応名」に書き込まれている場合に（２６８のＹｅｓ），対応表１２Ｒにおいて，その対応名Ｇ０を接続ゲーティッドクロックバッファ名に有するエントリを見つけて（２６９），そのエントリのゲーティッドクロックバッファ名GBUF_0を，現在処理中の対応表１６のエントリの右コラム「対応名」に書き込む（２７０）。
【００７７】
さらに，工程２６８で対応表１６の右コラム「対応名」が空欄の場合は，そのエントリをスキップして，対応表１４Ｒの次のエントリを取り出して，工程２６１，２６６〜２７０を繰り返す。つまり，図２０で説明したとおり，対応関係ＣＲ１が検出されて対応表１６に書き込まれたゲーティッドクロックバッファに基づいて，その上流のゲーティッドクロックバッファの対応ＣＲ２を探索する。図２０を例に説明すれば，ゲーティッドクロックバッファGBUF_0の対応を探索しようとしても，対応関係ＣＲ２が検出されていなければ，その探索は不可能である。したがって，対応関係が検出されているバッファより１つ上流のゲーティッドクロックバッファの対応から探索が行われる。ただし，図４，５の例ではバッファの階層が２階層しかないので，処理２６８でＮｏになることはない。
【００７８】
上記の探索が繰り返されることで，図２０の対応関係がＣＲ１，ＣＲ２，ＣＲ３の順に検出される。そして，対応表１６の右コラム「対応名」の空欄がなくなるまで処理が繰り返されると（２６４），図１３の処理が終了する。その結果，図２２に示すネットリスト間対応表１６が生成される。
【００７９】
［動作率データの作成］
図１４は，動作率データ作成処理２０１のフローチャート図である。この第２のネットリストＮＬ２の動作率データＯＲ２（図２３）は，第１のネットリストＮＬ１の動作率データＯＲ１（図１５）と，ネットリスト間対応表１６（図２２）とから生成される。つまり，ネットリスト間対応表１６で対応関係にあるゲーティッドクロックバッファは，名称は異なるが，同じイネーブル信号により制御されるバッファであり，同じ動作率になる。したがって，ネットリスト間対応表１６で対応関係にあるバッファ間で，動作率データを共有すればよいことになる。
【００８０】
図１５，２２，２３から明らかなとおり，バッファGBUF_0は動作率０．９，バッファU0,U1はバッファG0と同じ動作率０．９，バッファU2はバッファG1と同じ動作率０．２８，バッファU3はバッファG2と同じ動作率０．１１になる。このように，ゲーティッドクロックバッファの対応関係を見つければ，第１のネットリストＮＬ１で論理シミュレーションを経て求めた動作率を，第２のネットリストＮＬ２の動作率として利用することができる。
【００８１】
図１４のフローチャートについて説明すると，動作率データＯＲ２の表を生成し，その名前の欄にネットリスト間対応表１６の名前を全て書き込む（２８０）。図２３の例では，左コラム「名前」にバッファ名GBUF_0，U0,U1,U2,U3が書き込まれる。次に，動作率表ＯＲ２の先頭エントリGBUF_0を取り出し（２８１），対応表１６からそれに対する左コラムの「対応名」GBUF_0を取得する（２６３）。そして，その対応名GBUF_0に対する動作率０．９を，動作率データＯＲ１から検出し（２８４），その動作率０．９を動作率表ＯＲ２の動作率の欄に書き込む（２８５）。そして，動作率表ＯＲ２の次のエントリを取り出して，上記の処理２８３〜２８６を繰り返す。そして，全てのエントリが処理されると（２８２のＹｅｓ），処理が完了する。
【００８２】
以上の通り，上記の実施の形態では，第１，第２のネットリストを解析して，ゲーティッドクロックバッファとレジスタの対応関係を検出し，それらからネットリスト間のゲーティッドクロックバッファの対応表１６を取得する。そして，この対応表１６を頼りにして，第１のネットリストＮＬ１の動作率データＯＲ１から第２のネットリストＮＬ２の動作率データＯＲ２を取得する。これにより，第２のネットリストＮＬ２について論理シミュレーションを繰り返す必要はない。
【００８３】
［第２の実施の形態］
第２の実施の形態では，論理合成ツールがイネーブル信号に対応して自動生成したゲーティッドクロックバッファの表を生成することを前提にして，各ネットリストＮＬ１，ＮＬ２を論理合成するときに生成された生成ゲーティッドクロックバッファ表を参照し，同じイネーブル信号名を手がかりにして，ゲーティッドクロックバッファの対応関係を探索する。したがって，論理合成ツールに生成したゲーティッドクロックバッファの表を生成する機能が必要になる。
【００８４】
図２５は，生成ゲーティッドクロックバッファ表を示す図である。この表ＧＧＢ１，ＧＧＢ２では，図４，５のネットリストＮＬ１，ＮＬ２それぞれについて自動生成されたゲーティッドクロックバッファが，イネーブル信号名と対応付けられている。ネットリストＮＬ１の表ＧＧＢ１では，イネーブル信号Enable_Aに対して生成されたゲーティッドクロックバッファ名G0,G1が，イネーブル信号Enable_Bに対して生成されたゲーティッドクロックバッファ名G2がそれぞれ対応付けられている。同様にネットリストＮＬ１の表ＧＧＢ２では，イネーブル信号Enable_Aに対して生成されたゲーティッドクロックバッファ名U0,U1,U2が，イネーブル信号Enable_Bに対して生成されたゲーティッドクロックバッファ名G3がそれぞれ対応付けられている。
【００８５】
図２４は，第２の実施の形態におけるＬＳＩの消費電力算出方法のフローチャート図である。図２４において，ネットリストＮＬ１については，論理シミュレーション１２２と，動作率算出処理１２３と，電力算出処理１２４が先に実行される。そして，ネットリストＮＬ２については，生成ゲーティッドクロックバッファ表ＧＧＢ１，ＧＧＢ２と，動作率データＯＲ１とから，ネットリストＮＬ２のゲーティッドクロックバッファの動作率データＯＲ２が生成され（１２７），その動作率データから電力が算出される（１２８）。
【００８６】
この動作率データ生成処理１２７では，生成ゲーティッドクロックバッファ表ＧＧＢ１，ＧＧＢ２のイネーブル信号を元にして，図２６のネットリスト間対応表１８が生成される。このネットリスト間対応表１８は，図２２の対応表１６と異なり自動生成されなかったゲーティッドクロックバッファGBUF_0は含まれていない。そして，このネットリスト間対応表１８にしたがって，動作率データＯＲ１から対応する動作率が動作率データＯＲ２に取り込まれる。そして，自動生成されなかったゲーティッドクロックバッファGBUF_0については，同じ名前が維持されているので，動作率データＯＲ１からそのバッファの動作率を抽出し，動作率データＯＲ２に取り込まれる。
【００８７】
第２の実施の形態の原理は，同じイネーブル信号で制御されるゲーティッドクロックバッファは同じ動作率になることにある。したがって，論理合成ツールが自動生成したゲーティッドクロックバッファをイネーブル信号に対応付けた表を作成することができれば，それを根拠にして，修正ネットリストの動作率データを修正前ネットリストの動作率データから抽出することができる。
【００８８】
以上の実施の形態をまとめると，次の付記のとおりである。
【００８９】
（付記１）ＬＳＩ内の複数セルの接続を定義したネットリストから消費電力を算出するＬＳＩの消費電力算出方法において，
第１のネットリストについて論理シミュレーションを実行して前記セルの動作率を求め，当該動作率と前記セルの消費電力属性パラメータとから前記第１のネットリストの消費電力を算出する工程と，
前記第１のネットリストの少なくとも一部のセルを有する第２のネットリストの消費電力を算出する工程とを有し，
前記第２のネットリストの消費電力算出工程は，
前記第１及び第２のネットリスト内のセルの対応関係を検出する対応関係検出工程と，当該セルの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各セルの動作率を求める動作率生成工程と，当該第２のネットリストの各セルの動作率と当該セルの消費電力属性パラメータとから消費電力を算出する第２の算出工程とを有することを特徴とするＬＳＩの消費電力算出方法。
【００９０】
（付記２）付記１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリスト内で同じ名前のレジスタに接続される下層ゲーティッドクロックバッファを検出し，前記第１，第２のネットリスト内で当該検出された下層ゲーティッドクロックバッファに接続される上層ゲーティッドクロックバッファを検出し，当該上層ゲーティッドクロックバッファの検出を繰り返し行い，各層で検出されたゲーティッドクロックバッファの対応関係を抽出することを特徴とするＬＳＩの消費電力算出方法。
【００９１】
（付記３）付記２において，
前記対応関係検出工程では，前記第１，第２のネットリストから，前記ゲーティッドクロックバッファとレジスタとの間及びゲーティッドクロックバッファ間を関連付けた第１，第２のリレーショナルネットリストをそれぞれ生成し，当該第１及び第２のリレーショナルネットリストを探索して，前記ゲーティッドクロックバッファの対応関係を抽出することを特徴とするＬＳＩの消費電力算出方法。
【００９２】
（付記４）付記２において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【００９３】
（付記５）付記１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリストの前記ゲーティッドクロックバッファについて，同じイネーブル信号で制御されるゲーティッドクロックバッファを対応付け，
前記動作率生成工程では，当該ゲーティッドクロックバッファの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各ゲーティッドクロックバッファの動作率を求めることを特徴とするＬＳＩの消費電力算出方法。
【００９４】
（付記６）付記５において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【００９５】
（付記７）付記１において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記第１のネットリストの消費電力算出工程は，ハードウエア記述言語で記述された設計データを論理合成して前記第１のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第１の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記第２のネットリストの消費電力算出工程は，さらに，ハードウエア記述言語で記述された設計データを論理合成して前記第２のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第２の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記対応関係検出工程では，前記第１及び第２の生成ゲーティッドクロックバッファ表に含まれるゲーティッドクロックバッファを，前記イネーブル信号に基づいて対応付けることを特徴とするＬＳＩの消費電力算出方法。
【００９６】
（付記８）付記７において，
前記対応関係検出工程では，前記第１，第２のネットリストにおいて，同じイネーブル信号に属する生成ゲーティッドクロックバッファの対応が検出されることを特徴とするＬＳＩの消費電力算出方法。
【００９７】
（付記９）付記７において，
前記第２の算出工程では，前記ゲーティッドクロックバッファの動作率と，当該ゲーティッドクロックバッファの出力クロックが供給されるセルの前記消費電力属性パラメータと，クロック周波数及び電源電圧とにしたがって，前記第２のネットリストの消費電力を求めることを特徴とするＬＳＩの消費電力算出方法。
【００９８】
（付記１０）ＬＳＩ内の複数セルの接続を定義したネットリストから消費電力を算出するＬＳＩの消費電力算出プログラムにおいて，
第１のネットリストについて論理シミュレーションを実行して前記各セルの動作率を求め，当該動作率と前記セルの消費電力属性パラメータとから前記第１のネットリストの消費電力を算出する工程と，
前記第１のネットリストの少なくとも一部のセルを有する第２のネットリストの消費電力を算出する工程とを，コンピュータに実行させ，
前記第２のネットリストの消費電力算出工程は，
前記第１及び第２のネットリスト内のセルの対応関係を検出する対応関係検出工程と，当該セルの対応関係に基づいて前記第１のネットリストの動作率から第２のネットリストの各セルの動作率を求める動作率生成工程と，当該第２のネットリストの各セルの動作率と当該セルの消費電力属性パラメータとから消費電力を算出する第２の算出工程とを有することを特徴とするＬＳＩの消費電力算出プログラム。
【００９９】
（付記１１）付記１０において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記対応関係検出工程では，前記第１，第２のネットリスト内で同じ名前のレジスタに接続される下層ゲーティッドクロックバッファを検出し，前記第１，第２のネットリスト内で当該検出された下層ゲーティッドクロックバッファに接続される上層ゲーティッドクロックバッファを検出し，当該上層ゲーティッドクロックバッファの検出を繰り返し行い，各層で検出されたゲーティッドクロックバッファの対応関係を抽出することを特徴とするＬＳＩの消費電力算出プログラム。
【０１００】
（付記１２）付記１０において，
前記第１，第２のネットリストには，クロックツリーを構成しイネーブル信号に応答してクロック信号を伝搬する複数のゲーティッドクロックバッファと，当該クロックツリーのクロック信号が供給されるレジスタとが，前記セルとして含まれ，
前記第１のネットリストの消費電力算出工程は，ハードウエア記述言語で記述された設計データを論理合成して前記第１のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第１の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記第２のネットリストの消費電力算出工程は，さらに，ハードウエア記述言語で記述された設計データを論理合成して前記第２のネットリストを生成する際に，前記イネーブル信号毎に当該イネーブル信号で制御される生成ゲーティッドクロックバッファを抽出して第２の生成ゲーティッドクロックバッファ表を生成する工程を有し，
前記対応関係検出工程では，前記第１及び第２の生成ゲーティッドクロックバッファ表に含まれるゲーティッドクロックバッファを，前記イネーブル信号に基づいて対応付けることを特徴とするＬＳＩの消費電力算出プログラム。
【図面の簡単な説明】
【０１０１】
【図１】論理合成におけるゲーティッドクロックバッファの自動生成を説明する図である。
【図２】ＨＤＬ設計データの例を示す図である。
【図３】図２のＨＤＬ設計データＲＴＬを論理合成して得られたネットリストの例を示す図である。
【図４】図３のネットリストに対する論理回路図である。
【図５】別のネットリストに対する論理回路図である。
【図６】リタイミング処理を説明する図である。
【図７】本実施の形態におけるＬＳＩの消費電力算出方法のフローチャート図である。
【図８】本実施の形態における消費電力算出装置の構成図である。
【図９】ネットリストＮＬ２の動作率データを生成するフローチャート図である。
【図１０】図９の対応表作成処理２００のフローチャート図である。
【図１１】ゲーティッドクロックバッファ対応表作成のフローチャート図である。
【図１２】ゲーティッドクロックバッファ対応表作成の第２のフローチャート図である。
【図１３】ネットリスト間対応表作成処理のフローチャート図である。
【図１４】動作率データ作成処理のフローチャート図である。
【図１５】第１のネットリストＮＬ１の動作率データＯＲ１を示す図である。
【図１６】セルライブラリ１３０のセルデータを示す図である。
【図１７】リネームリストＲＮＡ１，２の例を示す図である。
【図１８】第１のネットリストＮＬ１に対応するリレーショナルネットリストを示す図である。
【図１９】ゲーティッドクロックバッファ対応表の例を示す図である。
【図２０】ネットリスト間対応表の探索アルゴリズムを説明する図である。
【図２１】ネットリスト間対応表の探索アルゴリズムを説明する別の図である。
【図２２】ネットリスト間対応表を示す図である。
【図２３】ネットリストＮＬ２の動作率データＯＲ２を示す図である。
【図２４】第２の実施の形態におけるＬＳＩの消費電力算出方法のフローチャート図である。
【図２５】生成ゲーティッドクロックバッファ表を示す図である。
【図２６】ネットリスト間対応表を示す図である。
【符号の説明】
【０１０２】
ＲＴＬ＃１，＃２：ＨＤＬ設計データ
ＮＬ１：第１のネットリスト            ＮＬ２：第２のネットリスト
１２２：論理シミュレーション          ＯＲ１，ＯＲ２：動作率データ
１２７：動作率データ生成処理          １２８：電力算出処理
【図１】
2008065382.tif 000003
【図２】
2008065382.tif 000004
【図３】
2008065382.tif 000005
【図４】
2008065382.tif 000006
【図５】
2008065382.tif 000007
【図６】
2008065382.tif 000008
【図７】
2008065382.tif 000009
【図８】
2008065382.tif 000010
【図９】
2008065382.tif 000011
【図１０】
2008065382.tif 000012
【図１１】
2008065382.tif 000013
【図１２】
2008065382.tif 000014
【図１３】
2008065382.tif 000015
【図１４】
2008065382.tif 000016
【図１５】
2008065382.tif 000017
【図１６】
2008065382.tif 000018
【図１７】
2008065382.tif 000019
【図１８】
2008065382.tif 000020
【図１９】
2008065382.tif 000021
【図２０】
2008065382.tif 000022
【図２１】
2008065382.tif 000023
【図２２】
2008065382.tif 000024
【図２３】
2008065382.tif 000025
【図２４】
2008065382.tif 000026
【図２５】
2008065382.tif 000027
【図２６】
2008065382.tif 000028