(57)【特許請求の範囲】
【請求項１】
第１のレジスタ転送レベル設計データに対して論理合成処理を行うことによりネットリスト設計データを生成するネットリスト生成手段と、
前記ネットリスト設計データ内のセル種別毎の代表セルを決定する代表セル決定手段と、
第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路の電力を演算する電力演算手段と
を有することを特徴とする電力演算装置。
【請求項２】
さらに、前記ネットリスト設計データの回路の電力に対する、前記ネットリスト設計データ内のセルを前記代表セルに置き換えた回路の電力の第１の補正係数を演算する第１の補正係数演算手段を有し、
前記電力演算手段は、前記第１の補正係数を用いて前記演算した電力を補正することを特徴とする請求項１記載の電力演算装置。
【請求項３】
前記第１の補正係数演算手段は、前記ネットリスト設計データの回路で使用するセルの個数及び前記セル毎の容量を基に前記第１の補正係数を演算することを特徴とする請求項２記載の電力演算装置。
【請求項４】
さらに、前記ネットリスト設計データの回路内のセル数に対する、前記第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路内のセル数の第２の補正係数を演算する第２の補正係数演算手段を有し、
前記電力演算手段は、前記第２の補正係数を用いて前記演算した電力を補正することを特徴とする請求項１〜３のいずれか１項に記載の電力演算装置。
【請求項５】
前記代表セル決定手段は、前記ネットリスト設計データ内のセル種別毎に使用数が最も多いセルを代表セルとして決定することを特徴とする請求項１〜４のいずれか１項に記載の電力演算装置。
【請求項６】
記憶部内の第１のレジスタ転送レベル設計データに対して論理合成処理を行うことによりネットリスト設計データを生成して記憶部に記録するネットリスト生成ステップと、
前記記憶部に記録された前記ネットリスト設計データ内のセル種別毎の代表セルを決定する代表セル決定ステップと、
記憶部内の第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路の電力を演算して記憶部に記録する電力演算ステップと
を有することを特徴とする電力演算方法。
【請求項７】
記憶部内の第１のレジスタ転送レベル設計データに対して論理合成処理を行うことによりネットリスト設計データを生成して記憶部に記録するネットリスト生成ステップと、
前記記憶部に記録された前記ネットリスト設計データ内のセル種別毎の代表セルを決定する代表セル決定ステップと、
記憶部内の第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路の電力を演算して記憶部に記録する電力演算ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力演算装置、方法及びプログラムに関する。
【背景技術】
【０００２】
電力を見積もる方法として、レイアウト設計後のネットリストで電力を見積もる方法とＲＴＬ（レジスタ転送レベル）設計データで電力を見積もる方法がある。レイアウト設計後のネットリストの代わりに、レイアウト設計前のネットリストを利用することもある。
【０００３】
レイアウト設計後のネットリストを使った電力見積もりは、データ量が多いために処理が重い。この方法は長い時間がかかり、短ＴＡＴ（Turn-Around Time）で工程をこなすためには不向きである。このためＲＴＬ設計データを利用した電力見積もりの要求が高い。
【０００４】
一方、ＲＴＬ設計データの電力見積もりには精度の問題がある。また、クロックツリーの電力値が一致しないという問題がある。すなわち、ＲＴＬ設計データには使用セルの情報がない。特に、クロックツリーは消費電力が大きいので精査したい要素であるが、クロックツリーが生成されていないため、電力見積もりの精度が低い。
【０００５】
下記の特許文献１には、動作レベルやＲＴレベルという上位のレベルにおいても、設計に使用する各モジュールの設計品質指標をデータベースを用いて算出し、これを用いてフロアプランを実行し、その実行結果に基づき設計対象の回路規模や遅延時間、消費電力等の設計品質指標を算出し、それに基づき設計の変更が必要か否か（設計仕様を満たすか否か）を判定する集積回路設計方法が記載されている。
【０００６】
また、下記の特許文献２には、レジスタ転送レベル論理記述を入力してLSIハードウェア性能を予測評価する装置において、前記論理記述に基づき、各ブロックの大きさとブロック間の相対位置関係を決定するブロック面積推定手段と、前記ブロック間の相対位置関係情報に基づき、３次元的な容量を考慮したネットディレイを求めるパスディレイ計算手段と、消費電力を計算する消費電力計算手段と、複数のレジスタ転送レベル論理記述に対する上記各手段による評価値のトレードオフを表示する方式間評価手段とを備えたことを特徴とするレジスタ転送レベル論理記述ハードウェア性能評価装置が記載されている。
【０００７】
また、下記の特許文献３には、素子間接続情報を収納するネットリスト・ファイルよりネットリストを読み出し、当該ネットリストに含まれる素子の動作機能を定義する所定の素子動作情報を用いて、レジスタトランスファ情報を生成して出力するレジスタトランスファ情報生成手段と、前記レジスタトランスファ情報を入力して、所定の記述出力テンプレートを用いてハードウェア記述言語ソースを生成して出力し、所定のソースファイルに収納するハードウェア記述出力手段と、を少なくとも備えることを特徴とするネットリスト・ハードウェア記述変換装置が記載されている。
【０００８】
また、下記の特許文献４には、集積回路のレジスタ転送レベル論理記述から集積回路の性能を見積もるレジスタ転送レベル設計支援装置であって、集積回路を構成するための素子モデルを格納したライブラリと、前記論理記述を入力し記述中の各信号に対して代入箇所の対応付けを作成するＲＴＬ記述入力手段と、前記論理記述から構文解析木を作成する構文解析手段と、前記構文解析木中の前記ＲＴＬ記述入力手段で対応付けを作成した信号に対して不変属性を設定する不変属性設定手段と、前記構文解析木から前記不変属性を持つ信号を除いた部分回路を論理最適化し前記ライブラリ内の素子モデルを割り付ける部分回路合成手段と、前記不変属性を持つ信号に対して設計規則を満足するためにバッファを挿入する不変部最適化手段と、前記集積回路の性能を計算する性能計算手段と、前記性能計算の結果と前記論理記述とを表示する表示手段とを備えたことを特徴とするレジスタ転送レベル設計支援装置が記載されている。
【０００９】
【特許文献１】特開平１０−１７１８５７号公報
【特許文献２】特開平１１−２１３０２９号公報
【特許文献３】特開平７−３０６８７９号公報
【特許文献４】特開２００４−１０２７０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上のように、レイアウト設計後のネットリストで電力を見積もると、高精度ではあるが、長時間を要する。また、ＲＴＬ設計データで電力を見積もると、短時間ではあるが、精度が低くなる。
【００１１】
本発明の目的は、短時間かつ高精度で電力を見積もることができる電力演算装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明の電力演算装置は、第１のレジスタ転送レベル設計データに対して論理合成処理を行うことによりネットリスト設計データを生成するネットリスト生成手段と、前記ネットリスト設計データ内のセル種別毎の代表セルを決定する代表セル決定手段と、第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路の電力を演算する電力演算手段とを有することを特徴とする。
【発明の効果】
【００１３】
第２のレジスタ転送レベル設計データを基に電力を演算するので、短時間で電力を見積もることができる。また、代表セルを用いた回路の電力を演算することにより、高精度で電力を見積もることができる。
【発明を実施するための最良の形態】
【００１４】
図１６は、本発明の実施形態による電力演算装置を構成するコンピュータのハードウェア構成例を示すブロック図である。このコンピュータは、ＣＡＤ（computer-aided design）により、レジスタ転送レベル（ＲＴＬ）設計データ及びネットリスト設計データ（以下、ネットリストという）を生成し、電力を見積もることができる。
【００１５】
バス１６０１には、中央処理装置（ＣＰＵ）１６０２、ＲＯＭ１６０３、ＲＡＭ１６０４、ネットワークインタフェース１６０５、入力装置１６０６、出力装置１６０７及び外部記憶装置１６０８が接続されている。
【００１６】
ＣＰＵ１６０２は、データの処理及び演算を行うと共に、バス１６０１を介して接続された上記の構成ユニットを制御するものである。ＲＯＭ１６０３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ１６０２が実行することにより、コンピュータが起動する。外部記憶装置１６０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ１６０４にコピーされ、ＣＰＵ１６０２により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述するＲＴＬ設計データ及びネットリストを生成し、電力の見積もり処理を行うことができる。
【００１７】
外部記憶装置１６０８は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置１６０８は、コンピュータプログラム、ＲＴＬ設計データ及びネットリスト等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【００１８】
ネットワークインタフェース１６０５は、ネットワークに対してコンピュータプログラム及びＲＴＬ設計データ等を入出力することができる。入力装置１６０６は、例えばキーボード及びポインティングデバイス（マウス）等であり、各種指定又は入力等を行うことができる。出力装置１６０７は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【００１９】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００２０】
図１は、電力演算装置の構成例を示す概念図である。記憶部は図１６の外部記憶装置１６０８に対応し、処理部はＣＰＵ１６０２の処理に対応する。ＲＴＬコーディング部１１００は、設計者の入力指示に応じて、ＲＴＬ設計データを生成し、記憶部１００１に記録する。
【００２１】
図６は、記憶部１００１内のＲＴＬ設計データの例を示す図である。ここでは、簡単のため８ビットレジスタ１個で構成され、入力８ビットデータをクロック信号に同期させて１サイクル遅らせて出力する回路を例に示す。
【００２２】
図１において、論理合成部１１１０は、記憶部１０００内のクロックソースデータ、記憶部１００２内のテクノロジライブラリ、及び記憶部１０２０内のカスタムワイヤロードモデルを用いて、記憶部１００１内のＲＴＬ設計データに対して論理合成処理することによりネットリストを生成し、ネットリストを記憶部１０１０に記録する。記憶部１００２内のテクノロジライブラリは、セルの特性を示すデータである。
【００２３】
図７は、記憶部１０１０内のネットリストの回路例を示す図である。例えば、８個のＤ型フリップフロップ（ＤＦＦ）により１個のレジスタが構成される。８個のＤ型フリップフロップには、クロックｃｌｋが入力される。
【００２４】
クロックツリー合成部１１２０は、記憶部１０１０内のネットリストに対してクロックツリー合成処理を行い、クロック信号のツリー構成を生成し、そのクロックツリーにバッファを配置する。レイアウト設計部１１２１は、設計者の入力指示に応じて、クロックツリー合成されたネットリストに対してレイアウト設計処理を行い、カスタムワイヤロードを生成して記憶部１０２０に記録し、ネット別キャパシタンスリストを生成して記憶部１０２１に記録し、ネットリストを生成して記憶部１０２２に記録する。記憶部１０２２にはレイアウト設計後のネットリストが記録され、記憶部１０１０にはレイアウト設計前のネットリストが記録される。
【００２５】
図８は、記憶部１０２２内のネットリストの回路例を示す図である。図７の記憶部１０１０内のネットリストでは、クロックｃｌｋのピンから高ファンアウトのツリーにＤ型フリップフロップ（ＤＦＦ）がつながっていた。これに対して、図８の記憶部１０２２内のネットリストでは、クロックｃｌｋのピンからＤ型フリップフロップ（ＤＦＦ）に到達するまでの制約、例えば時間等を満たすように、クロックツリー合成部１１２０及び／又はレイアウト設計部１１２１によりバッファＬ０〜Ｌ７が自動挿入される。例えば、クロックツリー合成部１１２０では２分木のクロックツリーになるように設定したとすると、バッファＬ０〜Ｌ６が挿入される。さらに、クロックツリー合成部１１２０又はレイアウト設計部１１２１で制約を充足するために更なるバッファＬ７が追加されることがある。図では、バッファＬ２及びＬ６間にバッファＬ７が追加された例を示している。
【００２６】
レイアウト設計部（レイアウトツールやレイアウト見積ツール）１１２１は、制約の充足に関する検査精度を上げるため、配線（ワイヤ）の抵抗値、キャパシタンスを算出し、ファイルとして書き出す。このうちキャパシタンスのみ書き出したものが、ネット別キャパシタンスリストとして記憶部１０２１に記録される。記憶部１０２０内のカスタムワイヤロードモデルは、ワイヤ部分のキャパシタンスを示す。
【００２７】
図１０は、記憶部１０２１内のネット別キャパシタンスリストの例を示す図である。信号名毎にファンアウト数及び容量が記憶される。
【００２８】
図１において、動作率入力部１１３１は、設計者の入力指示により、動作率を入力して記憶部１０３１に記録する。電力見積もり部１１３０は、記憶部１０２１内のキャパシタンスリスト及び記憶部１０３１内の動作率を用いて、記憶部１０２２内のネットリストの回路の電力の見積もり演算を行い、電力見積もり結果を記憶部１０３０に記録する。電力は、Ｃ×Ｖ2×Ｆで演算される。Ｃは容量値、Ｖは電圧、Ｆは動作率（信号変化回数／秒）である。
【００２９】
次に、ＲＴＬ設計データを基に電力見積もり演算を行う処理を説明する。論理シミュレーション部１１４０は、記憶部１００１内のＲＴＬ設計データを基に論理シミュレーションを行い、シミュレーション結果である波形データを記憶部１０４０に記録する。
【００３０】
電力見積もり部１１５０は、記憶部１０４０内の波形データ、記憶部１００２内のテクノロジライブラリ、記憶部１００３内のワイヤロードモデル及び記憶部１０００内のクロックソースデータを用いて、記憶部１００１内のＲＴＬ設計データを基に回路の電力見積もり演算を行い、電力見積もり結果を記憶部１０５０に記録する。
【００３１】
記憶部１０２２内のネットリストを基に電力を見積もる場合には、論理合成部１１１０、クロックツリー合成部１１２０及びレイアウト設計部１１２１の処理が重い。また、より精度よく見積もる時には、記憶部１０２２内のネットリストを使ったゲートレベルのシミュレーションの波形を利用し、電力を見積もってもよい。この方法は時間がかかるため、動作率入力部１１３１により、動作率を人が入力してもよい。
【００３２】
電力見積もり部１１５０が、あるブロックのＲＴＬ設計データを論理変換するのにかかる時間が７分であるのに対して、同じブロックを論理合成部１１１０が論理合成して、記憶部１０１０内のネットリストを生成するだけでも２時間かかる。短ＴＡＴで工程をこなすためには不向きである。このためＲＴＬ設計データを利用した電力見積もりの要求が高い。
【００３３】
一方、ＲＴＬ設計データに基づく電力見積もりの問題は精度である。クロックツリーの電力値が一致しないという問題がある。また、ＲＴＬ設計データには、記憶部１０１０又は１０２２内のネットリストでは確定している使用セルの情報がない。特に、クロックツリーは消費電力が大きいので精査したい要素であるが、ＲＴＬ設計データの段階ではクロックツリーが生成されていないため、電力見積もりの精度が低くなる。
【００３４】
以下、短時間かつ高精度で電力見積もり演算を行う電力演算方法を説明する。実際の半導体集積回路の設計においては、設計の早い時期に実験的に仮のレイアウト設計をする場合がある。このような場合では比較的早い時期に物理設計の概要が見えることになる。つまり、レイアウトの概要を把握するために作成される記憶部１０２２内のレイアウト設計後（post-layout）のネットリストが存在し、データ抽出ができる。また、エンハンスメント設計であればレイアウト設計後のネットリストがある。あるいは同じテクノロジの先行した設計例を類例として採用することも可能である。また、近年では、論理合成のタイミングクロージャや精度向上のため、仮物理設計を並行して実施するツール・設計環境もあり、この場合も現状のＲＴＬ設計データに基づく見積もりよりは精度のよいデータがとれる。
【００３５】
最後の方法では、図１に示したように、記憶部１０２０内のカスタムのワイヤロードモデル（ファンアウトとキャパシタンスのテーブル）を出力することができる。従って、全体のワイヤロードモデルについて、物理設計の情報をアノテーション（注釈付け）することは可能になっている。このため若干の改善ができる。しかし、問題なのは、組み合わせ回路ではなくクロックツリー等下位でしかやらないものである。また、上位ではクロックツリー合成自体も見積もりであり、概算である。従って、クロックツリーの構成も異なっている。従って、図１のワイヤロードモデルだけでは解決できない。
【００３６】
本発明の実施形態は、平均電力が加算して求める性質に着目して回路のモデル化を行う。回路を平均化した特徴量をアノテーションしてＲＴＬ設計データに基づく電力見積もりにフィードバックする手段をもつ。クロックツリーの抽象化手段とセルの抽象化手段がある。
【００３７】
クロックツリーの抽象化手段はクロックツリー合成・レイアウト（あるいはレイアウト見積もり）の結果決まるクロックツリーのデータを抽象化するものである。ネットリストの中のセルは、論理合成部１１１０で一旦決まり、レイアウト設計部１１２１等でセルの置き換えが行われ、最終的には記憶部１０２２内のネットリストで確定する。
【００３８】
ＲＴＬ設計データは、論理合成部１１１０の処理前なので使用するセルの情報や構成が決まっていない。セルの抽象化手段は、このパラメータを上位に渡す手段で、記憶部１０１０内のネットリスト又は論理合成部１１１０を解析して使用セルの統計情報を算出する手段と、代表するセルを決める手段と、すべてのセルが代表したセルであるとして計算した場合と記憶部１０１０内のネットリスト又は論理合成部１１１０で使用されているセルを使って計算した場合の誤差を見積もって補正係数を計算する手段があり、代表セル名と補正係数を出力する。
【００３９】
図２は、本実施形態によるクロックツリー代表セルの決定及びその補正係数の演算方法を示すフローチャートである。まず、図１の処理を行うことにより仮のレイアウト設計処理を行い、記憶部１００１内のＲＴＬ設計データを基に記憶部１０２０内のカスタムワイヤロードモデル、記憶部１０２１内のネット別キャパシタンスリスト及び記憶部１０２２内のネットリストを生成する。その後、電力演算装置が図２の処理を行う。図２の処理は、電力見積もり処理の前処理である。
【００４０】
記憶部１００２内のテクノロジライブラリ及び記憶部１０００内のクロックソースデータは、図１に示すものと同じである。記憶部１０２１内のネット別キャパシタンスリスト（図１０）及び記憶部１０２２内のネットリスト（図８）は、図１の処理により生成されたものである。
【００４１】
図５は、記憶部１０２２内のネットリストのワイヤの名前を説明するための図である。出力ピンＡ０１０に接続されるワイヤＡ０１１は、出力ピンＡ０１０と同じ名前とする。入力ピンＡ０２０に接続されるワイヤＡ０２１は、入力ピンＡ０２０と同じ名前とする。これら以外で、ワイヤＡ０００のようにセルＡ００１がドライブするワイヤはＡ００１の名前＋「＿ｗｉｒｅ」とする。例えば、図７のワイヤＢ０００の信号名は「ｃｌｋ」、図９のワイヤＢ００１の信号名は「Ｂ０＿ｗｉｒｅ」である。
【００４２】
図１２は、ネットリストのセル表を示す図である。ネットリストには、LVth＿Buffer＿01 B0(clk, B0＿wire)のように、セル名のあとにインスタンス名を書くシンタックスでセルのインスタンスを表現する。したがって、記憶部１０２２内のネットリストには図１２に示すデータに対応するものが含まれている。以下の説明では、記憶部１０２２内のネットリストとして、図１２を使って説明する。
【００４３】
図１１は、記憶部１０００内のクロックソースデータの例を示す図である。クロックソースデータは、例えば、クロックソース名が「ｃｌｋ」である。
【００４４】
ステップ２１００では、記憶部１０２２内のネットリストからクロックソースデータに指定されたクロックを見つける。すなわち、記憶部１０００内のクロックソースデータに記載されたクロックソース名を持つワイヤを記憶部１０２２内のネットリストから探す。図１１の記憶部１０００内のクロックソースデータによれば、クロックソース名は「ｃｌｋ」であるので、記憶部１０２２内のネットリスト（図８）からクロックｃｌｋを見つける。
【００４５】
次に、ステップ２１０１では、記憶部１０２２内のネットリストを基に、見つけたクロックソース毎に、クロックツリーをたどりセル種別毎にセルの個数を数える。クロックｃｌｋから、ネットリストの結線関係をたどり、Ｄ型フリップフロップ（ＤＦＦ）のクロック端子に到達するまでの回路を調べる。図８では、バッファＬ０〜Ｌ７のインスタンスが見つかる。記憶部１０２２内のネットリストよりインスタンスの対応するセル名は図１２に示すものなので、セル種別毎のセルの個数をクロックツリーセル分布表として記憶部２００１に記録する。
【００４６】
図１３は、記憶部２００１内のクロックツリーセル分布表を示す図である。セルMVth＿Buffer＿01が６個、セルMVth＿Buffer＿02が１個、セルMVth＿Buffer＿03が１個である。この例ではクロックが１個であるが、複数ある場合にはクロックソース毎に検索する。このような同一のクロックソースからたどれるクロック用の回路をクロックドメインという。
【００４７】
次に、ステップ２１０２では、記憶部１０２２内のネットリストを基に、見つけたクロックソース毎に、クロックツリーをたどり、ワイヤの名前をすべて見つける。ワイヤの名前はｃｌｋ，Ｌ０＿ｗｉｒｅ〜Ｌ７＿ｗｉｒｅが見つかり、図１０より、ワイヤｃｌｋ，Ｌ７＿ｗｉｒｅはファンアウトが１、これら以外はファンアウトが２であることがわかる。
【００４８】
次に、ステップ２１０３では、記憶部１０２１内のキャパシタンスリストを基に、見つけたワイヤの容量（キャパシタンス）を探して、ファンアウト毎に平均値を求める。ワイヤロードモデルとは、ワイヤの分岐数とその分岐数を持ったワイヤに割り当てる容量（キャパシタンス）の対応関係である。ステップ２１０３よりファンアウト毎に容量を求める。図１０の記憶部１０２１内のキャパシタンスリストより、１のファンアウトは、ｃｌｋ，Ｌ７＿ｗｉｒｅであり、各々、容量が８[ｆＦ]，９[ｆＦ]であることがわかる。ステップ２１０３では、（８＋９）／２をして、１のファンアウトの容量平均値を８．５とする。同様に、２のファンアウトは、Ｌ０＿ｗｉｒｅ 〜 Ｌ６＿ｗｉｒｅなので、（１５＋２１＋１０＋２４＋２２＋１８＋１８）／７ を計算して１８．３を容量平均値とする。これらのファンアウト毎の容量平均値を記憶部２０００にカスタムクロックツリーロードモデルとして記録する。図１４に、記憶部２０００にカスタムクロックツリーロードモデルの例を示す。
【００４９】
次に、ステップ２１１０では、図１３の記憶部２００１内のクロックツリーセル分布表を基に、最も多いセル（以下、代表セルという）を見つける。クロックツリーは、図１のクロックツリー合成部１１２０及びレイアウト設計部１１２１のような物理設計と呼ばれる工程で決まるものであり、ＲＴＬ設計では詳細がわからない。このため、主要なセルで代表させておいたほうが単純化できてよい。そこで、記憶部２００１内のクロックツリーセル分布表より最も多いセルを選ぶ。本実施形態ではモジュールは１個しかない。また、クロックドメインも１個しかない。もしモジュール別やクロックドメイン別に見たとき、代表セルが一致しない場合にはモジュール別やクロック別に生成するとしても良い。また、これを考慮してクロックツリーを分けるとしても良い。しかし、基本的な手続きは１個の場合と同じなので１個の場合を説明する。
【００５０】
図１３の記憶部２００１内のクロックツリーセル分布表の場合、最も多いセルはMVth＿Buffer＿01である。従ってこれを代表セルとする。これをＲｕｂｙ言語のリスト形式でかくと、list = [["MVth＿Buffer＿01", 5], ["MVth＿Buffer＿02",1],["MVth＿Buffer＿03",1]]のように書ける。これを使って説明する。
【００５１】
記憶部１００２内のテクノロジライブラリは、一般に半導体ベンダが提供するものであり、セルの特性が書かれたものである。例えば、スタティック電力やセル内部で消費するダイナミック電力の基礎値（１回当たりの立ち上がり電力量・立ち下がり電力量）等が書いてある。スタティック電力、ダイナミック電力は通例、電力見積もりでは別々に出せるようになっている。従って、それぞれ補正値を算出して後段に渡すとしてもよい。簡単のため、記憶部１００２内のテクノロジライブラリに１回のトグルにかかる電力量（立ち上がり１回分の電力と立り下がり１回分の電力の和）をベースにした容量が書かれていたとする。図１５に、記憶部１００２内のテクノロジライブラリの例を示し、その場合を例に説明する。
【００５２】
次に、ステップ２１１１では、補正係数を演算する。まず、図１３の記憶部２００１内のクロックツリーセル分布表及び図１５の記憶部１００２内のテクノロジライブラリのデータをリストにマージして、list = [["MVth＿Buffer＿01", 6, 4], ["MVth＿Buffer＿02" , 1, 6] , ["MVth＿Buffer＿03" , 1, 8] ] とする。リストの第１項はセル名を示し、第２項が使用個数を示し、第３項が容量を示す。また、Dihyo＿Cell= list[0] とし、代表セルをMVth＿Buffer＿01とする。定数をそれぞれインデックスNUMBER = 1（使用個数）、インデックスCAP=2（容量）として、ステップ２１１１を処理すると、合計使用個数numは１＋１＋６で８となり、合計容量sumは６×４＋１×６＋１×８で３８となる。よって補正係数hoseiKeisuは、３８／（４×８）より１.１９となる。ここで、Daihyo＿cell[CAP]は、代表セルの容量（４ｆＦ）を示す。後段で代表セルを選択したことによる過少（過大）見積もりの軽減のための補正にこの値を使う。すなわち、すべてのバッファを代表セルに置き換えて、電力を見積もったときの補正係数である。記憶部２０１０には、クロックツリー代表セル（MVth＿Buffer＿01）及びその補正係数hoseiKeisuを記録する。同様に、入力端子容量に関しても同様に求めておく。
【００５３】
以上のように、記憶部１００２内のテクノロジライブラリ、記憶部１０００内のクロックソースデータ、記憶部１０２１内のキャパシタンスリスト及び記憶部１０２２内のネットリストのクロックに関する情報を抽象化して、記憶部２０００内のカスタムクロックツリーワイヤロードモデル、記憶部２００１内のクロックツリーセル分布表、並びに記憶部２０１０内のクロックツリー代表セル及びその補正係数が生成される。
【００５４】
図３は、本実施形態によるデータ系代表セルの決定及びその補正係数の演算方法を示すフローチャートである。図２の処理の後、図３のデータ系セル（ＡＮＤセル等）の処理を行う。この処理工程は、図２の処理工程と同様である。ただし、フリップフロップについては、データのトグルによる電力の基礎となるトグル用容量とクロック端子で消費する電力の指標となるトグル用容量の２種類を求める。これらについては、図１の論理合成部１１１０の設定や目的によっては、記憶部１０１０内のネットリストが記憶部１０２２内のネットリストと同等の信頼性を有する、もしくは、ＲＴＬの改版で直近の物理設計との乖離が大きい場合には、記憶部１０１０内のネットリストの方がより正確なデータとなる。このような場合には、記憶部１０２２内のネットリストの代わりに記憶部１０１０内のネットリストを利用するとしても良い。以下、図３の処理が図２の処理と異なる点を説明する。
【００５５】
まず、ステップ３１００では、記憶部１０２２内のネットリストを基に、見つけたセル種別毎にセルの個数を数え、記憶部３０００にデータ系セル分布表を記録する。次に、ステップ３１０１では、記憶部３０００内のデータ系セル分布表を基に、セルのカテゴリ（Ｄ型フリップフロップ、インバータ、ＡＮＤセル、ＯＲセル等）毎に最も多いセル（データ系代表セル）を見つける。次に、ステップ３１０２では、図２のステップ２１１１と同様に、図３の演算式により補正係数hoseiKeisuを演算し、記憶部３００１にセル種別毎のデータ系代表セル及びその補正係数を記録する。
【００５６】
図４は、電力演算装置による電力見積もり演算処理を示すフローチャートである。図２及び図３の処理の後、図４の処理を行う。上記の処理で、図２の記憶部２０００内のカスタムクロックツリーワイヤロードモデル、記憶部２００１内のクロックツリーセル分布表、記憶部２０１０内のクロックツリーセル代表セル及びその補正係数、図３の記憶部３００１内のデータ系代表セル及びその補正係数が出力されている。図１では仮のＲＴＬ設計を行ったが、図４では図１の設計結果を参照して実のＲＴＬ設計を行う。以下、図４の処理が図１の処理と異なる点を説明する。
【００５７】
ＲＴＬコーディング部１１００は、設計者の入力指示に応じて、ＲＴＬ設計データを生成し、記憶部１００１に記録する。論理シミュレーション部１１４０は、記憶部１００１内のＲＴＬ設計データを基に論理シミュレーションを行い、シミュレーション結果である波形データを記憶部１０４０に記録する。
【００５８】
ステップ４１００では、記憶部３００１内のデータ系代表セル及び記憶部２０１０内のクロックツリー代表セルを基に、計算に使うセルを電力見積もり部１１５０に設定する設定ファイルを生成し、記憶部４０００に記録する。すなわち、カテゴリ（クロックツリーのバッファ、Ｄ型フリップフロップ、インバータ、ＡＮＤセル等）毎の代表セルを設定ファイルに設定する。
【００５９】
電力見積もり部１１５０は、記憶部１０００内のクロックソースデータ、記憶部１００２内のテクノロジライブラリ、記憶部１０２０内のカスタムワイヤロードモデル、記憶部２０００内のカスタムワイヤロードモデル、記憶部４０００内の設定ファイルを参照し、記憶部１００１内のＲＴＬ設計データの回路の電力を演算する。
【００６０】
例えば、記憶部４０００内の設定ファイルで設定された代表セルをそれぞれＮＡＮＤセル、ＯＲセル、ＸＯＲセル等に割り当てる記述を生成し、クロックバッファに使うセルにMVth＿Buffer＿01を使うように設定し、クロックツリーの２分木を推定する設定をする。
【００６１】
図９は、図４の電力見積もり部１１５０の内部で生成されるクロックツリーの構成例を示す回路図である。図１の記憶部１０２２内のネットリストは図８に示すように８個のバッファＬ０〜Ｌ７を有するが、図９のクロックツリーは２分木を推定しているために７個のバッファＢ０〜Ｂ６を有する。また、図９のバッファＢ０〜Ｂ６は、記憶部２０１０内のクロックツリー代表セルMVth＿Buffer＿01が割り当てられ、Ｄ型フリップフロップ（ＤＦF）にも記憶部３００１内のデータ系代表セルが割り当てられる。ワイヤロードモデルは、記憶部１００３又は１０２０内のワイヤロードモデルを使う。
【００６２】
このように設定した後、電力見積もり部（電力見積もりツール）１１５０は、図１の処理と同様に電力見積もり演算を行い、電力見積もり結果を記憶部１０５０に記録する。
【００６３】
図１の記憶部１０２２内のネットリストの説明の通り、クロックツリー合成部１１２０やレイアウト設計部１１２１でバッファＬ７のように単純なツリー構造以外のバッファが挿入される。これらは多くの場合、クロックツリー合成部１１２０又はレイアウト設計部１１２１の設計方針や実装方法等に依存し、ＲＴＬ設計データの段階ではよくわからない要因である。このため、ＲＴＬ設計データを基に電力を見積もる場合には、クロックツリー構造等のクロックツリー合成部１１２０の基本処理を模擬して見積もる。例えば、クロックツリー構造で２分木で見積もらせたとしたら、電力見積もり部１１５０は図７に対して図９のような回路を内部的に構成して計算する。また、クロック系のワイヤロード（ワイヤ部分のキャパシタンス）もはっきりしないので、記憶部１００３から適当なワイヤロードモデルを選択してこれを使う。
【００６４】
次に、ステップ４１１０では、記憶部３００１内のＤ型フリップフロップ（ＤＦＦ）のクロック端子のトグル用容量から求めた補正係数を見つけて、記憶部１０５０内のＤ型フリップフロップ（ＤＦＦ）の電力値に掛ける。もし、Ｄ型フリップフロップ（ＤＦＦ）の電力がＤ型フリップフロップ（ＤＦF）のクロック部分の電力のみが入手できる場合にはこの部分にクロック端子のトグル用容量から求めた補正係数で補正をかけて、データ系については、データ端子のトグル用容量からもとめた補正値をかけて最終結果を出す。ＡＮＤセル等のセルについても、個別に同様の補正を行う。また、記憶部２０１０内のクロックツリー代表セルの補正係数を、記憶部１０５０内のクロックツリーのバッファの電力値に掛ける。なお、電力への影響が多いＤ型フリップフロップ（ＤＦＦ）のみを補正してもよい。
【００６５】
次に、ステップ４１１１では、設計者の入力指示等に応じて、クロックツリーの重みを算出するか否かを選択する。算出する場合にはステップ４１１２に進み、算出しない場合にはステップ４１１３に進む。
【００６６】
ステップ４１１２では、記憶部２００１のクロックツリーセル分布表に記載された総セル数（図８のバッファＬ０〜Ｌ７の数）を、電力見積もり部１１５０が見積もったクロックツリーのセル数（図９のバッファＢ０〜Ｂ６の数）で割り、クロックツリーセル係数を演算し、記憶部４０１０に記録する。例えば、図９の回路が電力見積もり部１１５０では推定されているのでバッファ数は７個である。一方、記憶部１０２２内のネットリストである図８ではバッファ数が８個である。よって、ステップ４１１２では、８／７より、１．１４をクロックツリーセル係数として、記憶部４０１０に記録する。このクロックツリーセル係数は永続性をもち、次にＲＴＬ設計データを基に図１の記憶部１０２１及び１０２２のデータを作成する処理が行われるまで使いまわす。つまり、次のクロックツリー合成部１１２０及びレイアウト設計部１１２１等の処理がアプライされるまでは、ステップ４１１１は「ＮＯ」が選択される。
【００６７】
次に、ステップ４１１３では、記憶部１０５０内のクロックツリー部の電力値に、記憶部４０１０内のクロックツリーセル係数を掛けて補正する。例えば、クロックツリー部の電力が５０μＷ だったとすると、クロックツリーセル係数が１．１４なので、５０×１．１４ より５７μＷを最終電力見積もり結果として記憶部４０２０に記録する。
【００６８】
以上のように、物理設計後の記憶部１０２１及び１０２２のデータや論理合成後の記憶部１０１０のデータを抽象化して、電力見積もり部１１５０に入力することにより、精度を上げたデータを入手可能とし、更に、ステップ４１１０〜４１１３に示した補正処理によって更なる精度向上が図れる。ここでは、補正処理を電力見積もり部１１５０の外部の機能とするようなフローを示したが、電力見積もり部１１５０の一機能として含まれていて、記憶部４０２０内の電力見積結果を、記憶部１０５０内の電力見積結果とするような装置としてもよい。
【００６９】
本実施形態によれば、ＲＴＬ設計データにはない要因が不明瞭であったが、物理設計データをアノテーションすることにより、バッファの入り具合や、スキュー調整等によるバッファ追加量が物理設計のプロトタイピングデータから持ってくることができるようになり、精度の向上及び根拠の明示化が可能になる。
【００７０】
ネットリスト生成手段は、図１の論理合成部１１１０（及びクロックツリー合成部１１２０及びレイアウト設計部１１２１）に対応し、第１のレジスタ転送レベル（ＲＴＬ）設計データに対して論理合成処理（及びレイアウト設計処理）を行うことによりネットリスト設計データを生成する。代表セル決定手段は、図２のステップ２１１０又は図３のステップ３１０１に対応し、前記ネットリスト設計データ内のセル種別毎の代表セルを決定する。電力演算手段は、図４の電力見積もり部１１５０及びステップ４１１０，４１１３に対応し、第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路の電力を演算する。
【００７１】
前記代表セル決定手段は、前記ネットリスト設計データ内のセル種別毎に使用数が最も多いセルを代表セルとして決定する。
【００７２】
また、第１の補正係数演算手段は、図２のステップ２１１１又は図３のステップ３１０２に対応し、前記ネットリスト設計データの回路の電力に対する、前記ネットリスト設計データ内のセルを前記代表セルに置き換えた回路の電力の第１の補正係数を演算する。前記電力演算手段は、図４のステップ４１１０に対応し、前記第１の補正係数を用いて前記演算した電力を補正する。
【００７３】
前記第１の補正係数演算手段は、前記ネットリスト設計データの回路で使用するセルの個数及び前記セル毎の容量を基に前記第１の補正係数を演算する。
【００７４】
また、第２の補正係数演算手段は、図４のステップ４１１２に対応し、前記ネットリスト設計データの回路内のセル数に対する、前記第２のレジスタ転送レベル設計データに対して前記代表セルを用いた回路内のセル数の第２の補正係数を演算する。前記電力演算手段は、図４のステップ４１１３に対応し、前記第２の補正係数を用いて前記演算した電力を補正する。
【００７５】
本実施形態によれば、第２のレジスタ転送レベル設計データを基に電力を演算するので、短時間で電力を見積もることができる。また、代表セルを用いた回路の電力を演算することにより、高精度で電力を見積もることができる。
【００７６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００７７】
【図１】電力演算装置の構成例を示す概念図である。
【図２】クロックツリー代表セルの決定及びその補正係数の演算方法を示すフローチャートである。
【図３】データ系代表セルの決定及びその補正係数の演算方法を示すフローチャートである。
【図４】電力演算装置による電力見積もり演算処理を示すフローチャートである。
【図５】記憶部１０２２内のネットリストのワイヤの名前を説明するための図である。
【図６】記憶部１００１内のＲＴＬ設計データの例を示す図である。
【図７】記憶部１０１０内のネットリストの回路例を示す図である。
【図８】記憶部１０２２内のネットリストの回路例を示す図である。
【図９】図４の電力見積もり部の内部で生成されるクロックツリーの構成例を示す回路図である。
【図１０】記憶部１０２１内のネット別キャパシタンスリストの例を示す図である。
【図１１】記憶部１０００内のクロックソースデータの例を示す図である。
【図１２】ネットリストのセル表を示す図である。
【図１３】記憶部２００１内のクロックツリーセル分布表を示す図である。
【図１４】記憶部２０００にカスタムクロックツリーロードモデルの例を示す図である。
【図１５】記憶部１００２内のテクノロジライブラリの例を示す図である。
【図１６】電力演算装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【符号の説明】
【００７８】
１１００  ＲＴＬコーディング部
１１４０  論理シミュレーション部
１１５０  電力見積もり部
１６０１  バス
１６０２  ＣＰＵ
１６０３  ＲＯＭ
１６０４  ＲＡＭ
１６０５  ネットワークインタフェース
１６０６  入力装置
１６０７  出力装置
１６０８  外部記憶装置
【図１】
0005029247.tif 000002
【図２】
0005029247.tif 000003
【図３】
0005029247.tif 000004
【図４】
0005029247.tif 000005
【図５】
0005029247.tif 000006
【図６】
0005029247.tif 000007
【図７】
0005029247.tif 000008
【図８】
0005029247.tif 000009
【図９】
0005029247.tif 000010
【図１０】
0005029247.tif 000011
【図１１】
0005029247.tif 000012
【図１２】
0005029247.tif 000013
【図１３】
0005029247.tif 000014
【図１４】
0005029247.tif 000015
【図１５】
0005029247.tif 000016
【図１６】
0005029247.tif 000017