(57)【特許請求の範囲】
【請求項１】
第１の回路範囲から分割されたクロックツリーを含まない複数の回路範囲のそれぞれにおいて、前記複数の回路範囲のそれぞれに含まれる信号線における単位時間当たりの第１の信号の第１の変化回数の第１の平均値が一定値である場合の、前記複数の回路範囲のそれぞれの第１の電力値を示す電力係数を算出する電力係数算出部と、
前記電力係数と、前記複数の回路範囲のそれぞれに含まれる前記信号線のうちからランダムに選択された観測ポイントにおける、第２の信号の前記単位時間当たりの第２の変化回数の第２の平均値と、に基づき前記複数の回路範囲のそれぞれの第２の電力値を算出する電力値算出部と、
を有することを特徴とする電力見積装置。
【請求項２】
所定時間ごとの、前記複数の回路範囲のそれぞれにおける前記第２の平均値を算出する算出部を有し、
前記電力値算出部は、前記所定時間ごとの、前記複数の回路範囲のそれぞれにおける前記第２の平均値をもとに、前記第２の電力値の履歴を示す、前記所定時間ごとの前記第２の電力値を算出することを特徴とする請求項１記載の電力見積装置。
【請求項３】
前記第２の平均値に対する、前記信号線における第３の信号の前記単位時間当たりの第３の変化回数の第３の平均値の比を補正係数として算出する補正係数算出部を更に有し、
前記電力値算出部は、更に前記補正係数に基づき、前記第２の電力値を算出する、ことを特徴とする請求項１または２に記載の電力見積装置。
【請求項４】
前記補正係数算出部は、電力見積期間より短いシミュレーションにより取得する波形データから、前記補正係数を算出することを特徴とする請求項３に記載の電力見積装置。
【請求項５】
前記電力係数算出部は、レイアウト設計途中のデータを用いて、前記電力係数を算出することを特徴とする請求項１乃至４の何れか一項に記載の電力見積装置。
【請求項６】
前記算出部は、シミュレーションの動作状況に応じて、前記単位時間の長さを変化させることを特徴とする請求項２乃至５の何れか一項に記載の電力見積装置。
【請求項７】
前記電力値算出部は、記憶装置に記憶された過去に算出された前記補正係数をもとに、前記第２の電力値を算出することを特徴とする請求項３に記載の電力見積装置。
【請求項８】
コンピュータが実行する電力見積方法であって、
第１の回路範囲から分割されたクロックツリーを含まない複数の回路範囲のそれぞれにおいて、前記複数の回路範囲のそれぞれに含まれる信号線における単位時間当たりの第１の信号の第１の変化回数の第１の平均値が一定値である場合の、前記複数の回路範囲のそれぞれの第１の電力値を示す電力係数を算出し、
前記電力係数と、前記複数の回路範囲のそれぞれに含まれる前記信号線のうちからランダムに選択された観測ポイントにおける、第２の信号の前記単位時間当たりの第２の変化回数の第２の平均値と、に基づき前記複数の回路範囲のそれぞれの第２の電力値を算出することを特徴とする電力見積方法。
【請求項９】
コンピュータに、
第１の回路範囲から分割されたクロックツリーを含まない複数の回路範囲のそれぞれにおいて、前記複数の回路範囲のそれぞれに含まれる信号線における単位時間当たりの第１の信号の第１の変化回数の第１の平均値が一定値である場合の、前記複数の回路範囲のそれぞれの第１の電力値を示す電力係数を算出し、
前記電力係数と、前記複数の回路範囲のそれぞれに含まれる前記信号線のうちからランダムに選択された観測ポイントにおける、第２の信号の前記単位時間当たりの第２の変化回数の第２の平均値と、に基づき前記複数の回路範囲のそれぞれの第２の電力値を算出する処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力見積装置、電力見積方法及びプログラムに関する。
【背景技術】
【０００２】
電子システムでは、消費電力の評価が重要である。消費電力は、製品単価と製品の品質の両面に深い影響を及ぼす。
従来、評価対象の回路における各信号線の電力と、各セル（例えば、ＡＮＤ回路、ＯＲ回路などの論理合成における最小単位）内部の電力を算出して、これらを合算することで全体の動的な電力を算出する手法があった。
【０００３】
各信号線の電力は、例えば、論理シミュレーションで各信号線における信号の変化密度Ｄ（変化回数／秒）を求め、１／２×Ｃ（信号の負荷容量）×Ｖ（電圧）2×Ｄを算出することで求められる。
【０００４】
従来、上記の信号の変化回数を、計測回路（例えば、エミュレータなど）を用いて計測する手法が知られている。また、計測回路量を削減するために、複数の信号線の信号変化回数を１つのカウンタでカウントする手法などが知られている。
【０００５】
ところで、今日ではスクラッチ開発が減少している。システム・アーキテクトはブラックボックスな部品を適切に組み合わせてシステムを構成し、構成したシステムが、クライアントが要求する性能・電力・品質を達成していることを評価する。このため、システムの電力を直観的に把握することが重要であり、システムレベルで長時間にわたる電力見積が求められている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２８８２５７号公報
【特許文献２】特開２００９−５３７４７号公報
【特許文献３】特開２００７−１０２３３７号公報
【特許文献４】特開平０８−２４９３７２号公報
【特許文献５】特開平２−１７１８６１号公報
【特許文献６】特開平８−６９８０号公報
【特許文献７】特開２００６−２８５８３５号公報
【特許文献８】米国特許第６１５１５６８号明細書
【特許文献９】国際公開第２００８／０３８６１７号
【特許文献１０】国際公開第２００８／０８１６６９号
【特許文献１１】特開２００８−２３４２４０号公報
【特許文献１２】特開２００８−２０４３５０号公報
【特許文献１３】特開２００１−３１８９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の電力見積手法では、大規模な回路に対して長時間（例えば、秒オーダ以上）にわたって精度よく電力の消費傾向を解析することが困難であった。
その理由として、例えば、計測回路量や計測データの増大、電力見積時間の長大化が挙げられる。また、安易に観測する信号線を適当に間引くなどの処置をとってしまうと、電力の見積精度が低下してしまう。
【課題を解決するための手段】
【０００８】
発明の一観点によれば、各回路範囲における単位時間当たりの信号の変化回数の平均値を取得して、前記回路範囲ごとの電力係数を算出する、または、単位時間当たりの信号の変化回数の平均値が１の場合の前記回路範囲ごとの電力係数を算出する電力係数算出部と、前記回路範囲において指定された観測ポイントの信号の単位時間当たりの変化回数の平均値に対する、前記回路範囲に含まれる各信号線の信号の単位時間当たりの変化回数の平均値の比を補正係数として算出する補正係数算出部と、前記回路範囲ごとの前記補正係数と前記電力係数をもとに、前記回路範囲ごとの電力値を算出する電力値算出部と、を備えた電力見積装置が提供される。
【発明の効果】
【０００９】
開示の電力見積装置、電力見積方法及びプログラムによれば、大規模な回路に対して長時間にわたって精度よく電力解析が可能になる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の電力見積装置の一例を示す図である。
【図２】電力見積装置の動作の一例を示すフローチャートである。
【図３】第２の実施の形態の電力見積装置の一例を示す図である。
【図４】電力算出処理部の機能ブロックの一例を示す図である。
【図５】電力見積装置で扱うデータの一例である。
【図６】観測ポイントの一例を示す図である。
【図７】電力見積装置の処理の流れの一例を示すフローチャートである。
【図８】ユーザによる回路範囲の指定例を示す図である。
【図９】ユーザによる回路範囲の他の指定例を示す図である。
【図１０】設計データの一例を示す図である。
【図１１】サンプリング時間の一例を示す図である。
【図１２】生成された平均変化密度データの一例を示す図である。
【図１３】階層を有する設計データの一例を示す図である。
【図１４】電力係数データの一例を示す図である。
【図１５】補正係数を算出するためのシミュレーション期間の一例を示す図である。
【図１６】補正係数データの一例を示す図である。
【図１７】電力見積結果の一例を示す図である。
【図１８】電力見積結果を電力波形にした例を示す図である。
【図１９】平均変化密度の算出処理の一例を示すフローチャートである。
【図２０】電力係数の算出処理の一例を示す図である。
【図２１】電力見積部の動作の一例を示すフローチャートである。
【図２２】補正係数の算出処理の一例の流れを示すフローチャートである。
【図２３】回路範囲ごとの観測ポイントの信号の平均変化密度リストの一例を示す図である。
【図２４】回路範囲ごとの計算対象要因に該当する信号線の信号の平均変化密度リストの一例を示す図である。
【図２５】生成される計測回路数と、計測回路による被評価回路に対しての面積の増加率を示す図である。
【図２６】本実施の形態の電力見積装置により算出された電力値と、比較例の電力値との相関関係を示す図である。
【図２７】設計データＡ中の各ブロックでの決定係数の結果を示す図である。
【図２８】本実施の形態の電力見積装置により算出された電力値と比較例の電力値との誤差を示す図である。
【図２９】シミュレーション時間における、本実施の形態の電力見積装置により算出された電力値と、比較例の電力値との誤差を示す図である。
【図３０】決定係数が小さかったブロックの回路構造の一例を示す図である。
【図３１】観測ポイントの他の例を示す図である。
【図３２】ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度の計算例を示す図である。
【図３３】ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
【図３４】ＲＡＭを有するブロックの例を示す図である。
【図３５】ＲＡＭが支配的な影響を及ぼす範囲の例を示す図である。
【図３６】ＲＡＭが支配的な影響を及ぼす範囲の電力の期待値と、そのＲＡＭのアドレス端子、入力データ端子及び出力データ端子の信号の平均変化密度の相関関係の例を示す図である。
【図３７】ＲＡＭを複数のフリップフロップを含むモジュールでモデル化した例である。
【図３８】ブロック８０に含まれるフリップフロップの入力データ端子とブロック８０に含まれるＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度の計算例を示す図である。
【図３９】フリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
【図４０】ブロック８０に含まれるフリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子及び出力データ端子の信号の平均変化密度の計算例を示す図である。
【図４１】フリップフロップの入力データ端子と各ＲＡＭのアドレス端子と入力データ端子と出力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
【図４２】電力見積装置のハードウェアの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の電力見積装置の一例を示す図である。
【００１２】
電力見積装置１は、電力係数算出部２、補正係数算出部３、電力値算出部４を有している。
電力係数算出部２は、各回路範囲における単位時間当たりの信号の変化回数の平均値を取得して、回路範囲ごとの電力係数を算出する。
【００１３】
ここで、回路範囲は、例えば、電力見積対象となる回路において、複数のセルと信号線を含む回路ブロックである。例えば、この回路範囲は、組み合わせ回路を含む。
以下では、信号の単位時間当たりの変化回数を変化密度と呼び、その平均値を平均変化密度と呼ぶ。
【００１４】
電力係数算出部２は、各回路範囲における信号線の信号の平均変化密度が、ある値である場合の電力値（信号線とセルの電力値の合計）を、電力係数として回路範囲ごとに算出する。電力係数算出部２は、例えば、ユーザから回路範囲ごとの適当な平均変化密度を取得する。
【００１５】
詳細は後述するが、電力係数算出部２は、取得した平均変化密度と、評価対象回路の設計データなどを含む評価用データをもとに、各回路範囲のセルと信号線の電力値を求めて電力係数の算出を行う。
【００１６】
これにより、本質的には、各回路範囲の１平均変化密度当たりの電力が求まる。本実施の形態では既存電力見積技術を利用する例を示している。セルごとに算出されているセル内部の信号の１変化当たりの電力量（＝１変化密度当たりの電力）と、配線の信号の１変化当たりの電力量１／２×Ｃ（信号の負荷容量）×Ｖ（電圧）2より、各回路範囲の信号の１変化当たりの電力量を算出してもよい。
【００１７】
補正係数算出部３は、回路範囲において指定された観測ポイントの信号の平均変化密度に対する、回路範囲に含まれる各信号線の信号の平均変化密度の比を補正係数として算出する。
【００１８】
観測ポイントには、例えば、フリップフロップの入力データ端子、出力データ端子、回路内でランダムに選択された信号、ネットリストにおけるバス表記の信号などがある。
例えば、補正係数算出部３は、電力見積期間よりも短い期間の論理シミュレーションにより、補正係数を算出するのに望ましい期間（例えば、補正係数算出対象の回路範囲がよく動作している期間）の波形データを取得する。そして補正係数算出部３は、取得した波形データから、回路範囲において、例えば、ユーザに指定された観測ポイントにおける平均変化密度と、例えば、回路範囲に含まれる各信号線の平均変化密度を求める。さらに、補正係数算出部３は、上記の２種の平均変化密度の比（各信号線の平均変化密度／観測ポイントにおける平均変化密度）による補正係数を算出する。
【００１９】
なお、補正係数算出部３は、エミュレータを用いて、波形データを取得するようにしてもよいし、ソフトウェアの論理シミュレータを用いて波形データを取得するようにしてもよい。
【００２０】
電力値算出部４は、回路範囲ごとの補正係数と電力係数をもとに、回路範囲ごとの電力値を算出する。詳細は後述するが、電力値算出部４は、例えば、論理シミュレーションのあるサンプリング区間の波形データから求められた回路範囲ごとの観測ポイントにおける平均変化密度と、ユーザから入力された平均変化密度の比に、電力係数と補正係数を掛ける。言いかえると、回路範囲ごとの観測ポイントにおける平均変化密度と、この回路範囲の信号の１平均変化密度当たりの電力と補正係数を掛けていることになる。これにより、電力値算出部４は、そのサンプリング区間の電力値を回路範囲ごとに算出する。
【００２１】
以下、電力見積装置１の動作をまとめる。
図２は、電力見積装置の動作の一例を示すフローチャートである。
ステップＳ１：電力係数算出部２が、各回路範囲における平均変化密度を取得して、回路範囲ごとの電力係数を算出する。
【００２２】
ステップＳ２：補正係数算出部３が、回路範囲において指定された観測ポイントの信号の平均変化密度に対する、回路範囲に含まれる各信号線の信号の平均変化密度の比を補正係数として算出する。
【００２３】
ステップＳ３：電力値算出部４が、回路範囲ごとの補正係数と電力係数をもとに、回路範囲ごとの電力値を算出する。
以上のような電力見積装置１によれば、例えば、セルよりも大きい回路範囲ごとに、指定された観測ポイントにおける信号の平均変化密度をもとに電力値を求めることができる。これにより、計測するデータ量、計測時間が削減され、大規模な回路で長時間にわたって電力の消費傾向を解析することが可能になる。また、回路範囲において指定された観測ポイントの信号の平均変化密度に対する、回路範囲に含まれる各信号線の信号の平均変化密度の比である補正係数を用いることで、少ない観測ポイントを採用しても精度よく電力の見積を行うことができる。
【００２４】
（第２の実施の形態）
図３は、第２の実施の形態の電力見積装置の一例を示す図である。
電力見積装置１０は、例えば、コンピュータであり、電力算出処理部１１、電力見積部１２、エミュレータ制御部１３を有している。各部はそれぞれソフトウェアにて実現可能である。
【００２５】
電力算出処理部１１は、電力見積部１２とエミュレータ１４を用いて、評価対象の回路で消費される電力を見積もる。電力算出処理部１１が出力する電力見積結果には、長時間にわたって多サンプリングな波形データを生成可能な情報が含まれる。電力算出処理部１１は、以下のような２つの機能ブロックを有している。
【００２６】
図４は、電力算出処理部の機能ブロックの一例を示す図である。
電力算出処理部１１は、変化密度算出部１１ａと、電力算出部１１ｂを有している。
変化密度算出部１１ａは、回路範囲ごとに、各観測ポイントの信号の単位時間当たりの変化回数の平均値である、平均変化密度を算出する。
【００２７】
電力算出部１１ｂは、第１の実施の形態の電力見積装置１の電力係数算出部２、補正係数算出部３、電力値算出部４の機能を有しており、回路範囲ごとの電力を算出する。
図３の説明に戻り、電力見積部１２は、セルまたは信号線単位で電力の見積を行う。
【００２８】
エミュレータ制御部１３は、電力見積装置１０と接続されたエミュレータ１４を制御する。
エミュレータ１４は、設計データをもとにしたエミュレーション（以下、シミュレーションという場合もある）を行う。エミュレータ１４は、例えば、コンピュータの拡張バス（例えば、ＰＣＩ（Peripheral Component Interconnect）Ｅｘｐｒｅｓｓ）の拡張デバイスとして電力見積装置１０に接続される。
【００２９】
エミュレータ１４は、エミュレータ制御部１３で指示された動作を完了すると、割り込み信号をエミュレータ制御部１３に送出する。エミュレータ制御部１３から次の命令が送られてくると、エミュレータ１４は、再び、その命令に従った動作を行う。このようなシーケンスを繰り返してシミュレーションが実行される。エミュレータ１４に送られる命令は、例えば、ユーザによりエミュレータ制御部１３用のスクリプト言語で記述される。
【００３０】
電力見積装置１０には記憶装置１５が接続されている。記憶装置１５は、例えば、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）、またはＲＡＭ（Random Access Memory）などである。記憶装置１５は、エミュレーション用データ、評価用データ、電力見積結果、電力算出処理部１１で加工されたエミュレーション用データ、エミュレータ１４での計測結果データなど、各種データを記憶する。また、記憶装置１５は、過去の計測結果を蓄積するようにしてもよい。過去の計測結果を利用することで、設計の早い段階で電力見積をすることができる。記憶装置１５は、電力見積装置１０内にあってもよい。
【００３１】
なお、エミュレータ１４の代わりに、ＦＰＧＡ（Field-Programmable Gate Array）を用いたボードを適用してもよい。ＦＰＧＡを用いたボードも、拡張バスに接続される拡張デバイスとして電力見積装置１０に接続される。ＦＰＧＡを用いたボードを利用する場合、例えば、ユーザが通信部分を設計する。その場合、エミュレータ制御部１３は、例えば、ユーザが設計したデバイスドライバとなる。そして、ＦＰＧＡを用いたボードに載せるテストベンチに、デバイスドライバと通信できるターゲット回路が組み込まれる。さらに、例えば、デバイスドライバとテストベンチ間のプロトコル（例えば、ユーザによって設計される）を処理する機能が、デバイスドライバとテストベンチに実装される。
【００３２】
エミュレータ１４には設計データにおける各信号線の波形データを取得する機能がある。一方、ＦＰＧＡを用いたボードでは、前述のようにデバイスドライバとテストベンチはユーザ責任で開発するものなので、このような機能は入れないのが一般的である。そのため、波形データを使う処理については、エミュレータや、ＲＴＬ（Register Transfer Level）またはゲートレベルのソフトウェアの論理シミュレーションなどの代替え手段により実行されるものとする。
【００３３】
図５は、電力見積装置で扱うデータの一例である。
エミュレーション用データ２０には、例えば、評価対象回路の設計データ２１、テストベンチ２２、テストデータ２３、制御スクリプト２４が含まれる。
【００３４】
設計データ２１は、例えば、ネットリストやＲＴＬなどで記述されたデータである。テストベンチ２２は、設計データ２１に対するテストベンチであり、エミュレータ１４に搭載される。テストデータ２３は、例えば、ＲＡＭの初期化データや、外部からの入力データなどであり、制御スクリプト２４にしたがって、設計データ２１やテストベンチ２２上のＲＡＭにロードされる。制御スクリプト２４は、エミュレータ１４の制御の流れが記述されたスクリプトである。
【００３５】
電力算出処理部１１で加工された加工済エミュレーション用データ２５には、例えば、前述の設計データ２１、テストデータ２３の他に、加工済テストベンチ２６、加工済制御スクリプト２７が含まれる。これらについては後述する。
【００３６】
電力算出処理部１１に入力される評価用データ２８には、評価用設計データ２９、テクノロジライブラリ３０、配線容量計算用データ３１が含まれる。
評価用設計データ２９は、ネットリストまたはＲＴＬなどで記述された評価用の設計データである。評価用設計データ２９は、エミュレーション用データ２０に含まれる設計データ２１と同じであってもよいし、異なっていてもよい。テクノロジライブラリ３０は、セルに関する特性をまとめたものであり、セルの電力特性などの情報が含まれ、電力値を算出する際に参照される。
【００３７】
配線容量計算用データ３１は、配線容量を求めるためのデータである。どのようなデータかは、電力見積部１２による電力の見積方法に依存する。配線容量計算用データ３１の例としては、実配線容量データ３２、仮配線負荷データ３３、物理ライブラリ３４などがある。
【００３８】
実配線容量データ３２は、レイアウト結果から抽出される配線容量から得られる。実配線容量データ３２は、例えばＳＰＥＦ（Standard Parasitic Exchange Format）データである。仮配線負荷データ３３は、回路の面積とファンアウト数から容量を決定するものであり、例えば、テクノロジライブラリ３０に含まれている。物理ライブラリ３４は、論理合成ツールのＰＬＥ（Physical Layout Estimation）で配線容量計算に用いられるものであり、例えばＬＥＦ（Library Exchange Format）データである。
【００３９】
このような配線容量計算用データ３１は、信号線における電力値を算出する際に参照される。
なお、評価用データ２８は、レイアウト設計途中（レイアウト完成前）のプロトタイプのデータを用いたものであってもよい（詳細は後述する）。
【００４０】
図６は、観測ポイントの一例を示す図である。
回路範囲４０は、組み合わせ回路４１、フリップフロップ４２，４３，４４を有している。なお、フリップフロップ４２〜４４において、クロックの配線については図示を省略している。
【００４１】
観測ポイントは、例えば、フリップフロップ４２〜４４の入力データ端子４２ａ，４３ａ，４４ａまたは、出力データ端子４２ｂ，４３ｂ，４４ｂなどである。
以下、電力見積装置１０の動作を説明する。
【００４２】
なお、電力消費の発生要因としては、クロックツリーでの電力消費、ＲＡＭまたはＲＯＭでの電力消費、レジスタでの電力消費、組み合わせ回路（クロックツリーを除く）での電力消費などがある。以下では、組み合わせ回路を、計算対象とする電力消費の発生要因（以下計算対象要因と呼ぶ）として説明する。また、観測ポイントとして、フリップフロップの入力データ端子を採用する。
【００４３】
図７は、電力見積装置の処理の流れの一例を示すフローチャートである。
変化密度算出部１１ａは、例えば、ユーザにより指定される回路範囲をもとに、回路範囲指定ファイルを生成する（ステップＳ１０）。
【００４４】
図８は、ユーザによる回路範囲の指定例を示す図である。
ユーザは、例えば、ブロックへのパス名で回路範囲を指定する。例えば、“Ａ０．Ｂ１”は、ブロックＡ０に含まれるブロックＢ１へのパスを示している。この場合、ブロックＢ１が回路範囲として設定される。パス名としてＡ０が指定されると、例えば、ブロックＡ０内のブロックＢ０，Ｂ１，Ｂ２以外の部分が１つの回路範囲として設定される。
【００４５】
さらに特定の条件を付加してもよい。例えば、組み合わせ回路の電力見積であれば、「指定されたブロック中の組み合わせ回路（クロックツリーを除く）に含まれるセルと信号線を回路範囲とする」といった条件をつけるようにしてもよい。
【００４６】
図９は、ユーザによる回路範囲の他の指定例を示す図である。
ユーザは、グループを構成する、図９に示すようなセルのパス名（属性がセルインスタンスのもの）や信号のパス名（属性がネットインスタンスのもの）を指定することで、回路範囲を指定してもよい。この指定方法では、ブロックの界面にとらわれない回路範囲の指定が可能になる。例えば、データパスや制御系に分割して信号の変化回数の合計値を求めることができる。
【００４７】
なお、以下の説明では、前者の、ブロックへのパス名で回路範囲を指定する場合を例にして説明する。なお、パス名で指定されないブロックは、その他のブロックとして回路範囲が設定される。
【００４８】
図１０は、設計データの一例を示す図である。チップ５０は、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを有している。
ここで、ユーザによってブロックＡ、ブロックＢ、ブロックＣが指定された場合、これらのブロックがそれぞれ回路範囲として設定され、例えば、指定されなかった破線で示されるブロックＤ、ブロックＥ、ブロックＦ、ブロックＡ〜ブロックＦ以外のチップ部分は１つの回路範囲として設定される。
【００４９】
以上のようにして回路範囲が指定され、回路範囲指定ファイルが生成されると、変化密度算出部１１ａは、ユーザから、電力見積の開始時間、サンプリング時間、サンプリング数の入力を受け付ける（ステップＳ１１）。
【００５０】
以下の説明では、開始時間を０ｍｓ、サンプリング時間を１ｍｓ、サンプリング数を４とするが、これに限定されるわけではない。例えば、変化密度算出部１１ａは、時間ごとにサンプリング時間などを変えてもよい。
【００５１】
図１１は、サンプリング時間の一例を示す図である。
指定時間区間０ｍｓ〜１０ｍｓ、１０ｍｓ〜１００ｍｓ、１００ｍｓ〜１１０ｍｓごとに、サンプリング時間が１ｍｓ、１０ｍｓ、０．５ｍｓと変化している。
【００５２】
ステップＳ１１の処理が終わると、変化密度算出部１１ａは、平均変化密度を算出する（ステップＳ１２）。変化密度算出部１１ａは、図５に示したようなエミュレーション用データ２０を参照して、観測ポイントを指定する観測ポイントリストを生成する。そして、変化密度算出部１１ａは、後述するシミュレーションによる観測ポイントでの信号の変化回数の計測結果をもとに、回路範囲ごと、サンプリング区間ごとに平均変化密度を算出する。この処理によって、例えば、以下のような平均変化密度データが生成される。
【００５３】
図１２は、生成された平均変化密度データの一例を示す図である。
回路範囲ごと、サンプリング区間ごとの平均変化密度（変化回数（単位はメガ）／秒）が示されている。なお、図１２では、図１０に示したようにブロックＡ、ブロックＢ、ブロックＣが回路範囲として設定されている場合について示されている。例えば、ブロックＡのサンプリング区間０ｍｓ〜１ｍｓでは、観測ポイントの信号の平均変化密度は１０Ｍ（変化回数／秒）であることが示されている。
【００５４】
“＜Ｏｔｈｅｒ＞”は、例えば、図１０において、回路範囲として指定されなかったブロックＤ、ブロックＥ、ブロックＦ、ブロックＡ〜ブロックＦ以外のチップ部分を示している。平均変化密度の算出方法の詳細については後述する。
【００５５】
図１３は、階層を有する設計データの一例を示す図である。
図１３では、ブロックＫにブロックＪ、ブロックＬが含まれ、ブロックＪに、さらに、ブロックＨ、ブロックＩが含まれる場合が示されている。
【００５６】
ブロックＨ、ブロックＩ、ブロックＪ、ブロックＫ、ブロックＬがいずれも回路範囲として指定されている場合、変化密度算出部１１ａは、ブロックＨ、ブロックＩ、ブロックＬについては観測ポイントの平均変化密度を求める。ブロックＪについては、変化密度算出部１１ａは、ブロックＨ、ブロックＩ以外の部分にある各観測ポイントの平均変化密度を求める。ブロックＫについては、変化密度算出部１１ａは、ブロックＪ、ブロックＬ以外の部分にある観測ポイントの平均変化密度を求める。
【００５７】
指定範囲の平均変化密度を単純に算出するという方法もあり得る。例えば、ブロックＪ、ブロックＫの平均変化密度はこれらのブロックに含まれる観測ポイントの信号線の平均変化密度を求めるとしてもよい。このようにすると、子供のブロックには観測ポイントが多くあるが直下の階層には観測ポイントが少ない場合であっても、子供のブロックの観測ポイントの平均変化密度で代用した効果が得られる。後述の（実験例１）ではこのような計算方法で計算した結果を示す。
【００５８】
ステップＳ１２の処理が終わると、電力算出部１１ｂは、電力見積部１２を用いて、電力係数の算出を行う（ステップＳ１３）。また、このとき電力算出部１１ｂは、評価用データ２８を参照して、計算対象要因に属する信号線のリストを生成する。
【００５９】
電力算出部１１ｂは、電力係数の算出の際、回路範囲指定ファイル、観測ポイントリスト及び、図５に示したような評価用データ２８を参照する。電力算出部１１ｂは、さらに、例えば、ユーザから、各回路範囲における信号の平均変化密度を取得し、電力見積部１２を用いて、取得した平均変化密度の各回路範囲の電力値である電力係数を算出し、電力係数データとして出力する。電力係数／ユーザが指定した平均変化密度は、１平均変化密度当たりの電力量となるので、評価用データ２８の中の評価用設計データ２９の回路と、使用されるテクノロジに関する係数となっており、テクノロジの変化などの際に参考データとして用いることができる。
【００６０】
図１４は、電力係数データの一例を示す図である。
図１４では、回路範囲ごと、指定された変化密度で算出される電力係数の一例が示されている。回路範囲Ａ（例えば、図１０に示したブロックＡに対応している）の電力係数は１，０００［ｍＷ］、平均変化密度は１［変化回数（単位はギガ）／秒］であることが示されている。
【００６１】
このように平均変化密度値とこの平均変化密度値を使った場合の電力値が明記されているので、１平均変化密度当たりの電力係数（１平均変化密度当たりの電力量）が求まるデータが含まれている。
【００６２】
なお、図１３に示したような階層を有する設計データの場合、電力算出部１１ｂは、以下のように電力係数を算出する。ブロックＨ、ブロックＩ、ブロックＪ、ブロックＫ、ブロックＬがいずれも回路範囲として指定されている場合、電力算出部１１ｂは、ブロックＨ、ブロックＩ、ブロックＬについては電力係数を求める。ブロックＪの電力係数については、電力算出部１１ｂは、ブロックＨ、ブロックＩ以外の部分の電力係数を用いて求める。ブロックＫの電力係数については、電力算出部１１ｂは、ブロックＪ、ブロックＬ以外の部分の電力係数を用いて求める。
【００６３】
ステップＳ１３の処理が終わると、電力算出部１１ｂは、回路範囲指定ファイル、評価用データ２８を参照して、回路範囲ごとの補正係数を算出して補正係数データとして出力する（ステップＳ１４）。なお、電力算出部１１ｂは、過去に算出され記憶装置１５に格納されている補正係数がある場合には、その補正係数を読み出してもよい。
【００６４】
電力算出部１１ｂは、例えば、電力見積期間よりも短い期間のシミュレーションにより取得した波形データをもとに、回路範囲の観測ポイントによる平均変化密度と、回路範囲の計算対象要因に属する各信号線の平均変化密度の比を補正係数として算出する。
【００６５】
図１５は、補正係数を算出するためのシミュレーション期間の一例を示す図である。
例えば、電力算出部１１ｂは、シミュレーションにより、補正係数を算出するのに望ましい期間ｔ（例えば、補正係数算出対象の回路範囲がよく動作している期間）の波形データを取得する。この期間ｔは、電力見積期間Ｔよりも十分短いため、取得する波形データのデータ量は少なくて済む。
【００６６】
電力算出部１１ｂは、取得した波形データから、回路範囲において、例えば、ユーザに指定された観測ポイントにおける平均変化密度と、例えば、回路範囲に含まれる全ての信号線の平均変化密度を求める。さらに、補正係数算出部３は、上記の２種の平均変化密度の比（全信号線の平均変化密度／指定された観測ポイントにおける平均変化密度）による補正係数を算出する。
【００６７】
なお、電力算出部１１ｂは、ユーザの経験により指定された補正係数を入力して利用するようにしてもよい。
図１６は、補正係数データの一例を示す図である。
【００６８】
例えば、回路範囲Ａの場合、補正係数が１．０６となっている。これは、観測ポイントにおける信号よりも計算対象要因に属する各信号線の信号のほうが、平均で６％ほどよく変化する傾向を持っていることを示している。
【００６９】
ステップＳ１４の処理が終わると、電力算出部１１ｂは、回路範囲別にサンプリング区間ごとの電力値を算出し、電力見積結果として出力する（ステップＳ１５）。電力算出部１１ｂは、回路範囲ごと、サンプリング区間ごとに求められた平均変化密度（図１２参照）と、指定された平均変化密度における電力係数（図１４参照）と、回路範囲ごとに求められた補正係数（図１６参照）をもとに、以下の式で電力値を計算する。
【００７０】
回路範囲Ｘサンプリング区間Ｙの電力値＝（（回路範囲Ｘサンプリング区間Ｙの平均変化密度）／（回路範囲Ｘの平均変化密度））×（回路範囲Ｘで指定された平均変化密度における電力係数）×（回路範囲Ｘにおける補正係数）…（式１）
以下に、回路範囲Ａでサンプリング区間が０ｍｓ〜１ｍｓでの電力値の計算例を示す。
【００７１】
図１２より、回路範囲Ａでサンプリング区間が０ｍｓ〜１ｍｓの平均変化密度は、１０［Ｍ変化回数／秒］である。図１４より、回路範囲Ａで指定された平均変化密度は１［Ｇ変化回数／秒］で、その時の電力係数は１［Ｗ］である。また、図１６より、回路範囲Ａの補正係数は１．０６である。これらの値を（式１）に当てはめると、１０［Ｍ変化回数／秒］／１［Ｇ変化回数／秒］×１［Ｗ］×１．０６＝１０．６［ｍＷ］となる。
【００７２】
以上のように、回路範囲Ａのサンプリング区間が０ｍｓ〜１ｍｓの電力値、１０．６［ｍＷ］が算出される。
図１７は、電力見積結果の一例を示す図である。
【００７３】
電力算出部１１ｂは、（式１）を用いて、全回路範囲において全サンプリング区間での電力値を算出し、図１７に示すような電力見積結果を出力する。電力算出部１１ｂは、図１７に示したような電力見積結果を、以下に示すような電力波形のデータとして出力するようにしてもよい。
【００７４】
図１８は、電力見積結果を電力波形にした例を示す図である。横軸がシミュレーション時間［ｍｓ］、縦軸が電力値［ｍＷ］を示している。
各回路範囲Ａ，Ｂ，Ｃ，＜Ｏｔｈｅｒ＞の電力値が、グラフで示されている。電力算出部１１ｂが、図１８に示すようなグラフを生成して出力することで、ユーザは、時間ごとの電力の推移を容易に把握できるようになる。
【００７５】
なお、図１３に示したような階層を有する設計データの場合、電力算出部１１ｂは、以下のように電力値を算出する。ブロックＨ、ブロックＩ、ブロックＪ、ブロックＫ、ブロックＬがいずれも回路範囲として指定されている場合、電力算出部１１ｂは、ブロックＨ、ブロックＩ、ブロックＬについては、上記の方法で電力値を求める。ブロックＪの電力値については、電力算出部１１ｂは、ブロックＨ、ブロックＩ以外の部分の電力値を算出して、ブロックＨ及びブロックＩの電力値と加算して求める。ブロックＫの電力値については、電力算出部１１ｂは、ブロックＪ、ブロックＬ以外の部分の電力値を算出して、ブロックＪ及びブロックＬの電力値と加算して求める。
【００７６】
（平均変化密度算出処理の詳細）
以下、図７に示したステップＳ１２の平均変化密度の算出処理の詳細を説明する。
図１９は、平均変化密度の算出処理の一例を示すフローチャートである。
【００７７】
変化密度算出部１１ａは、まず、観測ポイントリストを生成する（ステップＳ２０）。本実施の形態では、フリップフロップの入力データ端子を観測ポイントとした例を取り上げているので、変化密度算出部１１ａは、フリップフロップの入力データ端子のリストを生成し、出力する。
【００７８】
図５に示したようなエミュレーション用データ２０の設計データ２１が、ネットリストの場合、変化密度算出部１１ａは、最初に、テクノロジライブラリ３０からフリップフロップのセル名を抽出する。次に、変化密度算出部１１ａは、ネットリストを電力見積装置１０内の図示しないメモリに展開して、抽出したセル名に対応するセルのインスタンスへのパスを全て抽出する。さらに、変化密度算出部１１ａは、各々のインスタンスの入力データ端子へのパスを抽出して、観測ポイントリストを生成する。
【００７９】
設計データ２１が、ＲＴＬの場合、変化密度算出部１１ａは、最初にエミュレーション用のコンパイルを実行して、次に、エミュレーション用のテクノロジライブラリ３０にマッピングされたネットリストを生成する。以下、変化密度算出部１１ａは、設計データ２１が、ネットリストだった場合と同じ処理を行い、観測ポイントリストを生成する。
【００８０】
次に、変化密度算出部１１ａは、計測回路データを生成する（ステップＳ２１）。変化密度算出部１１ａは、回路範囲指定ファイルを参照して、観測ポイントリストの信号線（本例ではフリップフロップの入力データ端子）をグルーピングする。そして、変化密度算出部１１ａは、グルーピングした結果をもとに、各グループの入力データ端子の信号を計測するための計測回路データを生成する。なお、グルーピングを考慮した計測回路に関しては特許文献２、計測回路を生成する方法については、特許文献３に示されており、ここでは詳細な説明を省略する。
【００８１】
なお、変化密度算出部１１ａは、グルーピングの際、回路範囲内の全ての信号線をグループ化する。または、変化密度算出部１１ａは、回路範囲内の信号線を複数のグループに分けてグループ化する。このようにすることで、回路範囲の平均変化密度を算出するために十分なデータが計測でき、且、回路量が小さい計測回路が生成される。
【００８２】
次に、変化密度算出部１１ａは、エミュレーション用データ２０のテストベンチ２２（図５参照）に、生成した計測回路データを埋め込んで、加工済テストベンチ２６を生成する（ステップＳ２２）。また、変化密度算出部１１ａは、制御スクリプト２４に計測結果を抽出するための記述を追加して、加工済制御スクリプト２７を生成する。
【００８３】
その後、変化密度算出部１１ａは、加工済エミュレーション用データ２５をエミュレータ制御部１３に送る。これにより、エミュレータ制御部１３の制御のもと、エミュレータ１４によるエミュレーションが実行される（ステップＳ２３）。エミュレーションの結果、計測結果データが生成される。
【００８４】
変化密度算出部１１ａは、生成された計測結果データを加工して、図１２に示したような回路範囲ごと、サンプリング区間ごとの平均変化密度データを生成する（ステップＳ２４）。計測結果データには、回路範囲ごとの観測ポイントの信号の変化回数の合計値が、サンプリングポイントごとに記載されている。そのため、回路範囲に含まれている観測ポイント数を使って、観測ポイント１つ当たりの信号の変化密度、つまり、平均変化密度を求める。
【００８５】
以上のような処理によって、回路範囲ごと、サンプリング区間ごとの平均変化密度が算出される。
（電力係数算出処理の詳細）
次に、図７に示したステップＳ１３の電力係数の算出処理の詳細を説明する。
【００８６】
図２０は、電力係数の算出処理の一例を示す図である。
電力係数算出部６０は、図４に示した電力算出部１１ｂに含まれる一機能を示している。なお、図２０では、電力見積部１２及び電力係数算出部６０を、電力見積ツール、電力係数算出ツールといったソフトウェアで実現する場合を想定している。
【００８７】
電力見積部１２は、評価用データ２８と、電力見積用制御スクリプト７０を参照して、電力計算用ライブラリ７１とリンクして電力見積を行い、全信号線／全セルの電力値／変化密度データ７２を生成する。
【００８８】
電力見積部１２は、例えば、信号線及びセルを検索する機能、検索した信号線やセルに対して、変化密度の設定及び変化密度の参照を行う機能と、電力値を参照する機能と、信号線やセルがクロックツリーに所属するか否かを判定できる機能を有する。
【００８９】
電力見積用制御スクリプト７０は、電力見積部１２を制御する手続きが書かれたものである。この指示にそって、電力見積部１２では計算が行われる。
電力計算用ライブラリ７１は、電力の算出処理に使用する関数を集めたライブラリである。ＣＡＤ（Computer Aided Design system）ツールの制御インタフェースは、ＣＡＤツール用の制御インタフェースの共通化のために開発されたＴＣＬ（Tool Command Language）と呼ばれる言語に準拠していることが多い。ＣＡＤ開発者はＴＣＬインタプリタをＣＡＤツールに組み込み、ＣＡＤツールの制御コマンドをＴＣＬインタプリタに組み込む。ＴＣＬ言語は通常のプログラミング言語並みの記述力を持っており、Ｃ／Ｃ＋＋言語ともリンクできるので、ユーザ定義コマンドを作成するのが容易である。電力計算用ライブラリ７１では、例えば、以上のようなＴＣＬを用いて作られた関数がまとめられている。
【００９０】
全信号線／全セルの電力値／変化密度データ７２は、全信号線に対する電力値と変化密度及び、全セルに対する電力値のデータである。また、全信号線／全セルの電力値／変化密度データ７２は、付加的なデータをもっていてもよい。例えば、付加的データとして、その信号線及びセルがクロックツリーに所属しているか否かを示すフラグ（組み合わせ回路（クロックツリーを除く）に含まれるセルまたは信号線かどうかを判別できる情報）などがある。ここでは、セルがクロックツリーに含まれるとは、セルのいずれかの端子がクロックツリーと繋がっている場合であることとする。
【００９１】
図２１は、電力見積部の動作の一例を示すフローチャートである。
電力見積部１２は、電力見積用制御スクリプト７０の記述にしたがって、例えば、以下の動作を行う。
【００９２】
電力見積部１２は、評価用データ２８を参照し（ステップＳ３０）、例えば、ユーザによる平均変化密度の設定を受け付ける（ステップＳ３１）。例えば、電力計算用ライブラリ７１に、各信号線に対する引数として与えられる平均変化密度を指定するコマンドが登録されていれば、電力見積部１２は、ユーザの指示のもとステップＳ３１の処理で、そのコマンドをコールして、ユーザに所望の設定を行わせる。
【００９３】
次に、電力見積部１２は、設定された平均変化密度と、参照された評価用データ２８をもとに電力見積を実行する（ステップＳ３２）。
各信号線の電力値は、例えば、設定された平均変化密度Ｄ１から、１／２×Ｃ（信号の負荷容量）×Ｖ（電圧）2×Ｄ１を算出することで求められる。信号の負荷容量などは、評価用データ２８から取得される。
【００９４】
また、各セルの電力値は、例えば、テクノロジライブラリ３０に記載されている各セルの電力特性から取得可能である。テクノロジライブラリ３０には、例えば、ある入力信号の変化によりセルの出力の変化が１回起きた場合の電力量Ｅが、テーブルとして記載されている。このテーブルは１種類とは限らない。例えば、テクノロジライブラリ３０は、２入力１出力のセルであれば、第１の入力の変化により出力が変化した場合の電力量と、第２の入力の変化により出力が変化した場合の電力量が記載されたテーブルを含んでいる。
【００９５】
電力見積部１２は、上記テーブルと、設定された平均変化密度を用いて各セルの電力値を算出する。そして、全信号線と全セルの電力値を合算することで、全体の電力値を見積もる。
【００９６】
そして、電力見積部１２は、電力見積結果から、全信号線及びセルの電力値及び変化密度値と、信号線及びセルがクロックツリーに含まれるか含まれないかのフラグを抽出して、全信号線／全セルの電力値／変化密度データ７２を出力する（ステップＳ３３）。
【００９７】
例えば、電力計算用ライブラリ７１に、電力見積結果から上記の各情報を抽出してファイルにセーブするコマンドが登録されていれば、電力見積部１２は、ユーザの指示のもと、そのコマンドをコールして所望の情報を抽出する。これにより、所望の全信号線／全セルの電力値／変化密度データ７２が生成される。
【００９８】
以上のような処理で、全信号線／全セルの電力値／変化密度データ７２が生成されると、電力係数算出部６０は、全信号線／全セルの電力値／変化密度データ７２から、電力係数データ７４を生成し、出力する。
【００９９】
具体的には、電力係数算出部６０は、回路範囲指定ファイル７３を参照して、回路範囲ごとに、全信号線／全セルの電力値／変化密度データ７２を分類する。さらに、電力係数算出部６０は、クロックツリーに所属していない信号線及びセルについて、各々の回路範囲ごとに平均の電力値を算出する。そして、電力係数算出部６０は、回路範囲名、算出した電力値、平均変化密度を電力係数データ７４として出力する。また、電力係数算出部６０は、観測する対象の信号線（クロックツリーに所属しない信号線）のリストである信号線リスト７５を生成し、出力する。
【０１００】
（補正係数算出処理の詳細）
次に、図７に示したステップＳ１４の補正係数の算出処理の詳細を説明する。
図２２は、補正係数の算出処理の一例の流れを示すフローチャートである。
【０１０１】
最初に、エミュレータ制御部１３は、エミュレーション用データ２０を用いて、エミュレータ１４を制御して、論理シミュレーションを行う（ステップＳ４０）。このとき電力算出部１１ｂは、エミュレータ制御部１３を介してエミュレータ１４から波形データを取得する。
【０１０２】
例えば、電力算出部１１ｂは、補正係数を算出するのに望ましい期間（例えば、補正係数算出対象の回路範囲がよく動作している期間）の波形データを取得する。例えば、電力算出部１１ｂが、シミュレーション結果からフリップフロップの入力データ端子の動作率を検出して、動作率が高い期間などを、波形データを取得する期間としてもよい。また、ユーザが経験により波形を取得する期間を決めてもよい。
【０１０３】
次に、電力算出部１１ｂは、回路範囲ごとに、回路範囲に含まれる観測ポイントの信号の平均変化密度を算出する（ステップＳ４１）。ステップＳ４１の処理では、電力算出部１１ｂは、まず、前述した信号線リスト７５に含まれている各々の信号線に対して、取得した波形データを使って、変化密度を算出する。具体的には、電力算出部１１ｂは、波形データから、各信号の変化回数を求め、変化回数／シミュレーション時間を計算することにより変化密度を算出する。次に、電力算出部１１ｂは、前述した回路範囲指定ファイル７３と、変化密度算出部１１ａが生成した観測ポイントリストを使って、回路範囲ごとの観測ポイントリストを作成する。そして、電力算出部１１ｂは、回路範囲ごとに、観測ポイントリストにある信号線における信号の変化密度を平均して、回路範囲ごとの観測ポイントの信号の平均変化密度リストを生成し、出力する。
【０１０４】
図２３は、回路範囲ごとの観測ポイントの信号の平均変化密度リストの一例を示す図である。
図２３に示す平均変化密度リストの例では、回路範囲Ａ、回路範囲Ｂ、回路範囲Ｃごとの観測ポイントの信号の平均変化密度の一例が示されている。
【０１０５】
次に、電力算出部１１ｂは、回路範囲ごとの計算対象要因（ここでは組み合わせ回路）に属する信号線の信号の平均変化密度を算出する（ステップＳ４２）。ステップＳ４２の処理では、電力算出部１１ｂは、まず、前述の回路範囲指定ファイル７３と、信号線リスト７５を参照して、回路範囲ごとの計算対象要因に該当する信号線のリストを作る。そして、電力算出部１１ｂは、回路範囲ごとの計算対象要因に該当する信号線の信号の変化密度の平均値を算出し、回路範囲ごとの計算対象要因に該当する信号線の信号の平均変化密度リストを生成し、出力する。
【０１０６】
図２４は、回路範囲ごとの計算対象要因に該当する信号線の信号の平均変化密度リストの一例を示す図である。
図２４に示す平均変化密度リストの例では、回路範囲Ａ、回路範囲Ｂ、回路範囲Ｃごとの計算対象要因に該当する信号線の信号の平均変化密度の一例が示されている。図２３に示した観測ポイントの信号の平均変化密度リストとは、回路範囲Ａ、回路範囲Ｃにおいて、平均変化密度の値が異なっている。
【０１０７】
次に、電力算出部１１ｂは、補正係数を算出する（ステップＳ４３）。電力算出部１１ｂは、回路範囲ごとに、観測ポイントの信号の平均変化密度と、計算対象要因に該当する信号線の信号の平均変化密度の比を求める。
【０１０８】
図２３、図２４に示した例の場合、回路範囲Ａでは、観測ポイントの信号の平均変化密度は７．５［Ｍ変化回数／秒］、計算対象要因に該当する信号線の信号の平均変化密度は８［Ｍ変化回数／秒］なので、８／７．５≒１．０６という補正係数が得られる。同様にして、回路範囲Ｂについては７／７＝１、回路範囲Ｃについては４／３．５≒１．１４という補正係数が得られる。
【０１０９】
電力算出部１１ｂは、以上のような回路範囲ごとの補正係数を用いることで、図１７や図１８に示したように、回路範囲別にサンプリング区間ごとの電力値を算出することができる。
【０１１０】
なお、電力算出部１１ｂは、記憶装置１５に格納されている、過去に上記の方法で算出された補正係数を再利用してもよいし、ユーザの経験により指定された補正係数を入力して利用するようにしてもよい。
【０１１１】
また、電力算出部１１ｂは、実際に電力見積を行った結果から、電力係数データを求めるようにしてもよい。
なお、上記では、エミュレータ１４を用いて波形データを取得する例を示しているが、ソフトウェア論理シミュレーションや、ブロックレベルの論理シミュレーションによって波形データを取得するようにしてもよい。例えば、電力算出部１１ｂは、ソフトウェア論理シミュレータの出力波形データより、指定された回路範囲の信号線の平均変化密度を算出してもよい。また、回路範囲ごとに、波形データを取得するのに望ましい期間が異なる場合には、電力算出部１１ｂは、複数の期間の波形データを取得するようにしてもよい。
【０１１２】
また、上記の第２の実施の形態の説明では、説明の都合上、重複する処理を複数のステップで書いているが、まとめて処理してもよい。
なお、図５で示したような評価用データ２８は、レイアウト初期段階に作成されるプロトタイプのデータをもとにしたものであってもよい。レイアウト設計では、最初に回路量の把握やレイアウト設計の計画を立てるために、動作検証が十分に行えていない、正常動作しないデータを使ってレイアウト設計を行うことがある。レイアウト設計途中で得られたデータ（プロトタイプのデータ）でも、配線容量や回路構成がレイアウト完成後のものと似ているので、電力算出部１１ｂが電力係数を算出する際の評価用データ２８として用いることができる。
【０１１３】
プロトタイプは設計の比較的早い時期に設計されるため、設計の早い時期に、レイアウトツールが実際にレイアウトした結果による配線容量データを使った電力の見積が、上記と同様に可能になる。
【０１１４】
また、上記の説明では、電力見積のサンプリング時間をユーザが指定する場合について説明したが、変化密度算出部１１ａが、動的にサンプリング時間を変更するようにしてもよい。変化密度算出部１１ａは、例えば、スクリプトなどでシミュレーションの動作状況（例えば、計測回路のカウンタの特定ビットに１が立つかどうか、など）を観測する。そして、変化密度算出部１１ａは、例えば、よく動いている時間帯では、サンプリング時間を短くするなどの変更を行う（図１１参照）。これにより、電力消費が大きい時間帯では、短いサンプリング時間での詳細な電力見積が行え、逆に電力消費が小さい時間帯では、広いサンプリング時間で電力見積を行うなど、長時間の電力見積に適したサンプリング時間の制御が可能になる。
【０１１５】
また、上記の説明では、各サンプリング時間で電力値を算出する際に用いる補正係数を同じものとしたが、例えば、サンプリング時間または所望の時間ごとに、図２２で示したような処理を行って補正係数を更新するようにしてもよい。
【０１１６】
（実験例１）
以下、数メガゲートサイズの被評価回路の実設計データ（以下設計データＡと呼ぶ）に対して、本実施の形態の電力見積方法を適用した結果を示す。
【０１１７】
同期設計であることを考えると、フリップフロップは組み合わせ回路内のどのパスにおいても比較的に等間隔に出現する可能性が高い。そのため、フリップフロップのデータ端子に対して入出力される信号は、組み合わせ回路の代表的な信号であると考えられる。また、入力データ端子のほうが出力データ端子よりも変化回数が大きくなる。そのため、上記実施の形態で述べたように、以下の実験でも、観測ポイントは、フリップフロップの入力データ端子とする。
【０１１８】
図２５は、生成される計測回路数と、計測回路による被評価回路に対しての面積の増加率を示す図である。
図２５では、サンプリング期間＝１０ｕｓ、サンプリング数＝３０，０００で信号の変化回数をカウンタで計測する場合で、３つのケースの場合について生成される計測回路数と、計測回路による被評価回路に対しての面積の増加率が示されている。
【０１１９】
ケース１は、例えば、階層構造となっている設計データＡの最上層のモジュール（トップモジュール）からの深さが３までのブロックを回路範囲とし、信号線を最大１０２４本ずつグループ化してカウンタで計測を行う計測回路を適用した場合を示している。ケース１では、各グループを計測する部分を１つの計測回路とすると、計測回路数は、例えば、１，０９７個程度となり、その場合の増加率は５６％であった。
【０１２０】
ケース２は、電力見積したいブロックに絞ってパス指定を行って回路範囲を設定し、信号線を最大１０２４本ずつグループ化してカウンタで計測を行う場合を示している。ケース２では、例えば、計測回路数は３５０個程度に減少し、その場合の増加率は５２％であった。
【０１２１】
ケース３は、電力見積したいブロックに絞ってパス指定を行って回路範囲を設定し、信号線を最大８０９６本ずつグループ化してカウンタで計測を行う場合を示している。ケース３では、例えば、計測回路数は８５個程度に減少し、その場合の増加率は５１％であった。
【０１２２】
なお、サンプリング期間＝１０ｕｓ、サンプリング数＝３０，０００とした場合、シミュレーション時間は３００ｍｓ程度となり、短い。
シミュレーション時間を３０秒とすると、上記の３つのケースと比べ、シミュレーション時間が１００倍となるので、この間の信号の変化回数をカウントするためのカウンタのビット数は７ビット増える。ケース３の場合、シミュレーション時間が３００ｍｓではカウンタのビット数は２８ビットなので、シミュレーション時間が３０秒になると、カウンタのビット数は３５ビットになり、回路量が２５％程度増加する。
【０１２３】
しかし、ケース３では、回路の約９９％が１サイクル当たりの変化回数を算出する回路部分である。したがって、カウンタ部分の増分は無視できる。また、この数値は、観測用のフリップフロップ（約１４％）を含んだ値なので観測用のフリップフロップを無視すると、非カウンタ回路部は観測ポイント数に比例するので、増加率は４４％〜４８％程度になる。
【０１２４】
このように、本実施の形態の電力見積方法によれば、従来では被評価回路に対して、数倍から十数倍の面積となっていた計測回路の面積を大幅に削減することができる。
また、以下の理由によって、電力見積用のデータ量を小さくすることができる。
【０１２５】
上記のケース３の場合、カウンタのビット数の最大値が２８ビットであるので、１ワード＝４バイトである。計測回路数が８５個の場合、１サンプリングの格納領域は１２８ワードである。サンプリングポイントは３０，０００なので、計測結果のデータ量は、４×１２８×３０，０００＝１５．４［ＭＢ］になる。ケース１の場合、計測結果のデータ量は４×２，０４８×３０，０００＝２６４［ＭＢ］になる。
【０１２６】
サンプリング時間が１ｍｓの場合、ケース３では１ワード＝５バイトになり、計測結果のデータ量は２５％増になる。ケース１は１ワード＝３２ビットなので変わらない。したがって、どのケースでも、計測結果のデータ量は、３００［ＭＢ］以下になる。
【０１２７】
また、取得する波形データについてもデータ量を小さくできる。シミュレーション時間が３００ｍｓの場合、設計データＡに対するシミュレーションで得られる波形データのデータ量は２［ＧＢ］程度である。３００ｍｓは、補正係数を作成する処理には十分な時間である。
【０１２８】
以上のように、従来では（例えば、特許文献１，５）、電力見積用のデータ量は［ＴＢ］オーダだったのが、本実施の形態では、数［ＧＢ］オーダに削減することができる。
また、本実施の形態によれば、以下のように、電力見積時間を短時間で行うことができる。
【０１２９】
図２２に示した、ステップＳ４１、ステップＳ４２の処理では、波形データを解析して信号ごとの変化密度を算出する処理が行われる。この処理を行う電力算出部１１ｂを、スクリプト言語であるＲｕｂｙ１．９を用いて実現した場合、処理に係る時間は、４，９３０サンプリングポイントで２分程度、３０，０００サンプリングでは１２分程度であった。
【０１３０】
また、電力見積部１２による、信号線ごとの変化密度データから電力を算出する処理は、４，９３０サンプリングポイントで５分程度を要し、３０，０００サンプリングでは２８分程度かかった。
【０１３１】
したがって、３０，０００サンプリングポイントでは、電力見積処理は、４０分程度で終了する。以上のように、従来では現実的な時間で終わらなかった処理が、１時間以内で終わるようになった。大幅な改善である。
【０１３２】
電力見積部１２による計算では、信号線ごとの変化密度データから電力を算出する処理を１回やればよいので、短時間で計算を終わらせることができる。
また、図２２に示したステップＳ４１、ステップＳ４２の処理では、例えば、観測ポイントをフリップフロップの入力データ端子などとして、あまり多くの観測ポイントを観測する必要がないので、現実的な時間で計算することができる。
【０１３３】
次に、本実施の形態における電力見積精度を検討した結果を示す。電力見積精度を検討するにあたり、以下の実験を行った。
（１）電力算出部１１ｂが、設計データＡに対する過去の電力見積結果より、主要ブロックの電力に変動が生じる箇所を選び、１０ｕｓ×３０ポイントの波形データを取得する。
【０１３４】
（２）電力算出部１１ｂが、指定された回路範囲の電力係数と平均変化密度を算出する。なお、精度を比較するため、設計データＡの各ブロックが、Ａ．Ｂ０（ブロックＡ内にブロックＢ０がある）のように包含関係があっても、電力算出部１１ｂは、ブロックＡ全体の観測ポイントの電力係数と平均変化密度を算出するものとした。
【０１３５】
（３）電力算出部１１ｂが、（２）の結果に対して、補正係数を１とした場合の電力値の計算結果を算出する。
なお、サンプリングポイント数を３０ポイントとした論理シミュレーションで取得される波形データから各信号線における電力値を算出し、また、各セルにおける電力値を算出し、これらを合算することにより算出した電力値を、比較例として用いる。
【０１３６】
また、この実験では、０．０５［ｍＷ］以上の電力値があるポイントを有効サンプルとした。
図２６は、本実施の形態の電力見積装置により算出された電力値と、比較例の電力値との相関関係を示す図である。
【０１３７】
図２６では、チップ全体についての相関図が示されている。横軸が本実施の形態の電力見積装置１０により算出された電力値［ｍＷ］であり、縦軸が比較例の電力値［ｍＷ］である。図２６中のドットは、各々のサンプリングポイントを表している。実線と点線の直線は線形近似を表している。
【０１３８】
実線の直線は、ｙ＝０．８８２２ｘ＋３．４３５３で示される。点線の直線は、ｙ＝０．９２２３ｘで示される。Ｒ2は決定係数である。一般に、｜Ｒ｜≧０．７以上で強い相関があると言われている。ここでは｜Ｒ｜≧０．９程度以上であればよいと仮定して、決定係数Ｒ2≧０．８を基準にした。
【０１３９】
決定係数はＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（登録商標）２００７のＬｉｎＥｓｔ関数を使って算出した。ＬｉｎＥｓｔ関数の仕様上、切片が０に固定できないため、切片が小さいことを目の子で確認した実線の直線を用いて計算を行った。実線の直線では、Ｒ2＝０．９５８２であり、切片が０の点線の直線の決定係数Ｒ2＝０．９５６２と同程度の値が得られた。
【０１４０】
図２７は、設計データＡ中の各ブロックでの決定係数の結果を示す図である。
円グラフ内の数字はブロック数を示している。図２７に示すように、９４％程度のブロックがＲ2≧０．８であり、基準値を満たしている。決定係数０．４のブロックは、ユーザ設計部分よりも、テストなど後の設計工程で挿入された回路が多く、例外として扱うべき回路だった。決定係数０．７台の２ブロックのうち、電力が大きいブロック（以下ブロックＰと略す）は、２つのサブブロックで構成されており、各サブブロックはともに決定係数が０．９以上だった。これらの補正係数がサブブロック間で異なるため０．７台になっている。したがって、適切な回路範囲を指定すれば精度のよい電力見積が可能といえる。もう１つのブロックは電力がごく小さいため検討していない。
【０１４１】
前述のように、ブロックＰのサブブロックは０．９台であるが、上位ブロックの電力はサブブロックの電力を使って算出されるので、補正係数を使えば、ブロックＰの適切な電力値が求まる。
【０１４２】
また、波形データを使って補正係数を算出する際、対象の回路範囲の観測ポイントの信号がある程度動いていれば、質のよい補正係数が求められ、高い精度の電力見積が保証できる。
【０１４３】
図２８は、本実施の形態の電力見積装置により算出された電力値と比較例の電力値との誤差を示す図である。円グラフ内の数字はブロック数を示している。
なお、このデータは補正係数を１（つまり、観測ポイントの信号の平均変化密度＝計算対象要因の全信号線の信号の平均変化密度と仮定）とした場合について示してある。図２８に示すように、８０％程度のブロックが、絶対値誤差４０％以内、全てが１００％以内である。
【０１４４】
決定係数がよいことは、波形データをとるポイントの自由度が高いことを示している。波形データを使って電力を見積もるポイントを減らしても精度劣化が起きにくい。したがって、波形データを用いた電力見積の長時間化による精度劣化のリスクが低い。
【０１４５】
図２９は、シミュレーション時間における、本実施の形態の電力見積装置により算出された電力値と、比較例の電力値との誤差を示す図である。
横軸が、時間［ｎｓ］、縦軸は電力値［ｍＷ］と、誤差［％］である。図２９に示すように、時間が経過しても、低い誤差に維持されていることがわかる。
【０１４６】
以上のように、本実施の形態の電力見積装置１０で算出された電力値は、比較例として示した電力値と相関が強いことがわかった。したがって、観測ポイントとしてフリップフロップの入力データ端子を適用した本実施の形態の電力見積装置１０による電力見積方法によれば、十分な電力見積精度が期待できることがわかった。よって、従来では、観測信号数を大きく削減した場合、電力見積精度が低下する可能性があったが、本実施の形態の電力見積装置１０による電力見積方法では、上記のように、精度の良さについても定量的に実証できた。
【０１４７】
また、本実験例では補正係数を１としたが、図２２に示したような処理で補正係数を適切に設定することできるようになれば、更に有効性が高まる。
なお、上記の実験例では、フリップフロップの入力データ端子を観測ポイントとしたが、フリップフロップの出力データ端子も、入力データ端子と同様、比較例との電圧値との一致性が高い。出力データ端子のデータ変化はＲＴＬ設計データでも容易に観測しやすい。したがって、フリップフロップの出力データ端子も観測ポイントの有力な候補である。
【０１４８】
以上のように、本実施の形態の電力見積装置１０及び電力見積方法により、大規模回路に対して、長時間にわたって、組み合わせ回路のように多くの信号線を含む計算対象要因であっても、精度よく高速に電力見積が可能となる。
【０１４９】
（実験例２）
上記の実験例１において、決定係数が０．４となったブロックについて調べたところ以下のような回路構造となっていたことがわかった。
【０１５０】
図３０は、決定係数が小さかったブロックの回路構造の一例を示す図である。
ブロック８０は、サブブロックとしてブロック８１，８２と、ＲＡＭ８３−１，８３−２，…，８３−ｎを有している。ブロック８１は、ブロック８０の中の代表的なブロックであり、この部分の決定係数は０．９１であった。ブロック８０中のブロック８１以外の回路部分（以下回路部８４という）を調べると、リピータバッファ、テスト回路、複数のＲＡＭのデータ出力線を選択するための回路などが多量に含まれていた。回路部８４内の論理回路の数は、ブロック８１と同程度であった。ただ、回路部８４に含まれるフリップフロップは、テスト回路内部のフリップフロップや設定レジスタなどであり、ブロック８１とＲＡＭ８３−１〜８３−ｎ間の信号線（図示せず）の変化密度と相関があるようなものがなかった。
【０１５１】
したがって、回路部８４のフリップフロップの入力データ端子に対して入力される信号は、回路部８４の電力傾向を示す代表的な信号であるとはいえず、電力を見積もる上で、観測ポイントとして採用するには適切ではなかった。
【０１５２】
そこで、回路部８４の観測ポイントとして以下のものを採用した。
図３１は、観測ポイントの他の例を示す図である。
ＲＡＭ８３−１は、ｎビットのアドレス線８３ａに接続されるアドレス端子ａｄｄｒ、ｍビットのデータ入力線８３ｂに接続される入力データ端子ｄａｔａ＿ｉｎ、ｍビットのデータ出力線８３ｃに接続される出力データ端子ｄａｔａ＿ｏｕｔを有している。
【０１５３】
これらの端子を観測ポイントとして採用した。ＲＡＭ８３−１には、他にチップイネーブル信号、ライトイネーブル信号、クロック信号などが入力される端子があるが、それらについては観測ポイントとはしなかった。その他のＲＡＭ８３−２〜８３−ｎについてもアドレス端子、入力データ端子、出力データ端子を観測ポイントとした。
【０１５４】
図３２は、ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度の計算例を示す図である。
図３２では、図３０に示したＲＡＭ８３−１〜８３−ｎのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度の計算例が示されている。また、図３０の回路部８４における電力の期待値（回路部８４の全信号線を用いた電力見積結果）が示されている。
【０１５５】
横軸は時間［ｎｓ］を示し、左の縦軸は電力値［ｍＷ］、右の縦軸は平均変化密度［変化回数／秒］を示している。
ＲＡＭ８３−１〜８３−ｎのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度は、図３２に示すように、回路部８４における電力の期待値に対して、よい相関を示している。
【０１５６】
図３３は、ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
横軸は回路部８４における電力の期待値［ｍＷ］を示し、縦軸はＲＡＭ８３−１〜８３−ｎのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度を示している。図３３中のドットは、各々のサンプリングポイントを表している。実線の直線は線形近似を表している。
【０１５７】
この直線は、横軸をｘ、縦軸をｙとしたとき、ｙ＝１．４６１４×１０6ｘで示される。Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（登録商標）２００７のグラフツールの線形近似曲線描画機能を使って算出された決定係数Ｒ2は約０．９９であった。すなわち、ＲＡＭ８３−１〜８３−ｎのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度は、回路部８４の電力傾向をよく表すデータになっていることがわかる。
【０１５８】
そこで、変化密度算出部１１ａは、図１９のステップＳ２０の処理において、ＲＡＭが多量に含まれるブロック（例えば、図３０の回路部８４）に対しては、観測ポイントとして、ＲＡＭのアドレス端子、入力データ端子、出力データ端子を選択する。
【０１５９】
例えば、変化密度算出部１１ａは、ある回路範囲であるブロックにおけるＲＡＭとフリップフロップ数の比率やＲＡＭの容量などに応じて、観測ポイントを選択する。例えば、あるブロックにおけるＲＡＭの数がフリップフロップ数に対して所定の比率を超えて存在する場合には、変化密度算出部１１ａは、そのブロックの観測ポイントとして、ＲＡＭのアドレス端子、入力データ端子、出力データ端子を選択する。そうでない場合には、変化密度算出部１１ａは、そのブロックの観測ポイントとして、フリップフロップの入力データ端子を選択する。
【０１６０】
以上のように観測ポイントを選択して、電力見積を行うことにより、図３０に示したようなブロック８０がある場合でも、精度よく電力を見積もることができる。
ところで、ＲＡＭは、必ずしも図３０のように、あるブロックに集めて配置されるように設計されるとは限らない。例えば、以下のように配置される場合もある。
【０１６１】
図３４は、ＲＡＭを有するブロックの例を示す図である。
ブロック８５は、ＲＡＭ８６−１，８６−２と、論理回路８７−１，８７−２，８７−３を有している。ＲＡＭ８６−１は論理回路８７−２に接続され、ＲＡＭ８６−２は論理回路８７−１に接続され、論理回路８７−１は論理回路８７−２，８７−３に接続されている。
【０１６２】
このようなブロック８５の場合、図３０に示したブロック８０のように、単純に、代表的なブロック８１とその他の回路部８４に分けることはできない。そこで、このようなブロック８５に対しても精度のよい電力見積を行うため、以下のような検討を行った。
【０１６３】
図３４のようなＲＡＭ８６−１，８６−２への入出力は、実際にはレイアウト設計などを考慮して、論理回路８７−１，８７−２中のフリップフロップで区切られていることが多い。
【０１６４】
図３５は、ＲＡＭが支配的な影響を及ぼす範囲の例を示す図である。
例えば、ＲＡＭ８６−１が支配的な影響を及ぼす範囲として以下のような範囲がある。まず、ＲＡＭ８６−１のアドレス端子ａｄｄｒと、図３４に示した論理回路８７−２中の最寄りのフリップフロップ群８８−１の間の論理領域（以下ロジックコーンという）８９−１である。
【０１６５】
２つ目は、入力データ端子ｄａｔａ＿ｉｎと論理回路８７−２中の最寄りのフリップフロップ群８８−２の間のロジックコーン８９−２である。
そして、３つ目は、出力データ端子ｄａｔａ＿ｏｕｔと論理回路８７−２中の最寄りのフリップフロップ群８８−３間のロジックコーン８９−３である。
【０１６６】
論理回路８７−２において、ロジックコーン８９−１〜８９−３の外には、ＲＡＭ８６−１を制御するセルが含まれ、ロジックコーン８９−１〜８９−３内には、リピータバッファなど、ＲＡＭ８６−１に入力されるアドレスや入出力データの変化に影響を受けるセルが多い。
【０１６７】
図３６は、ＲＡＭが支配的な影響を及ぼす範囲の電力の期待値と、そのＲＡＭのアドレス端子、入力データ端子及び出力データ端子の信号の平均変化密度の相関関係の例を示す図である。
【０１６８】
横軸はＲＡＭによる影響を受ける範囲（例えば、図３５のロジックコーン８９−１〜８９−３）の電力の期待値［ｍＷ］を示している。縦軸は、そのＲＡＭのアドレス端子、入力データ端子及び出力データ端子の信号の平均変化密度［変化回数／秒］を示している。
【０１６９】
図３６中のドットは、各々のサンプリングポイントを表している。直線は線形近似を表している。この直線は、横軸をｘ、縦軸をｙとしたとき、ｙ＝２．０７０２×１０6ｘで示される。前述の線形近似曲線描画機能を使って算出された決定係数Ｒ2は約０．９８であった。
【０１７０】
すなわち、前述の図３０で示した回路部８４における電力の期待値と、ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号の平均変化密度との相関を調べた結果（決定係数Ｒ2が約０．９９）に対して、遜色のない結果が得られた。
【０１７１】
そこで、変化密度算出部１１ａは、図７のステップＳ１０の処理において、指定された回路範囲から、上記のようなロジックコーンで示されるＲＡＭによる影響が支配的な範囲と、その他の範囲を切り分け、異なる回路範囲指定ファイルを生成する。
【０１７２】
そして、変化密度算出部１１ａは、図１９のステップＳ２０の処理において、ＲＡＭによる影響を受ける範囲を切り出した回路範囲に対しては、観測ポイントとして、ＲＡＭのアドレス端子、入力データ端子、出力データ端子を選択する。その他の回路範囲に対しては、変化密度算出部１１ａは、前述のように、例えば、フリップフロップの入力データ端子または出力データ端子を観測ポイントとして選択する。
【０１７３】
これにより、ＲＡＭによる影響を受ける範囲が多く存在する場合でも、精度よく電力を見積もることができる。
また、図３０に示したようなＲＡＭが集約されているような設計になっていない場合でも、ＲＡＭによる影響を考慮した精度のよい電力見積を行うことができる。
【０１７４】
ところで、ＲＡＭもフリップフロップと同様に、クロック信号に同期して動作するものであることを考慮して、以下のようにＲＡＭを複数のフリップフロップを含むモジュールとして扱うようにしてもよい。
【０１７５】
図３７は、ＲＡＭを複数のフリップフロップを含むモジュールでモデル化した例である。このモデル化では、ＲＡＭを、入力データはレジスタで受けとって、出力データはレジスタの出力を用いる回路でモデル化している。フリップフロップとＲＡＭ間にも同期設計の制約がかかっているはずなので、ＲＡＭを図３７のようにみなせると考えたためである。この仮定が正しいとすると、アドレス端子、入力データ端子、出力データ端子などをＦＦの入力データ端子や出力データ端子としてみなしてよいことになる。つまり、ＲＡＭの端子とフリップフロップを同列に扱ってよいことになる。そこで、この仮定が妥当かを実験的に調べた。以下、実験結果を記載する。
【０１７６】
モジュール９０は、ｎビットのアドレス線ＡＤＤＲに接続されたフリップフロップ群９１、ｍビットのデータ入力線ＤＩＮに接続されたフリップフロップ群９２、ｍビットのデータ出力線ＤＯＵＴに接続されたフリップフロップ群９３を有している。
【０１７７】
このモジュール９０では、ＲＡＭのアドレス端子がフリップフロップ群９１のフリップフロップ（図３７では“ＦＦ”と表記している）の入力データ端子として扱われる。また、ＲＡＭの入力データ端子が、フリップフロップ群９２のフリップフロップの入力データ端子として扱われる。また、ＲＡＭの出力データ端子が、フリップフロップ群９３のフリップフロップの出力データ端子として扱われる。
【０１７８】
図３０で示したブロック８０に含まれる図示しないフリップフロップの入力データ端子とＲＡＭのアドレス端子ａｄｄｒと入力データ端子ｄａｔａ＿ｉｎの信号の平均変化密度を算出した結果、以下のようになった。
【０１７９】
図３８は、ブロック８０に含まれるフリップフロップの入力データ端子とブロック８０に含まれるＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度の計算例を示す図である。
【０１８０】
ブロック８０の各ＲＡＭを前述のようなモジュールとみなして、フリップフロップの入力データ端子とＲＡＭのアドレス端子ａｄｄｒと入力データ端子ｄａｔａ＿ｉｎの信号の平均変化密度の計算例が示されている。ＲＡＭのアドレス端子ａｄｄｒは、図３７のフリップフロップ群９１の入力データ端子に相当し、ＲＡＭの入力データ端子ｄａｔａ＿ｉｎは、図３７のフリップフロップ群９２の入力データ端子に相当している。また、そのブロックにおける電力の期待値（ブロックの全信号線を用いた電力見積結果）が示されている。
【０１８１】
横軸は時間［ｎｓ］を示し、左の縦軸は平均変化密度［変化回数／秒］、右の縦軸は電力値［ｍＷ］を示している。
この結果をもとに、電力の期待値と平均変化密度の相関を計算すると以下のようになった。
【０１８２】
図３９は、フリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
横軸はブロック８０の電力の期待値［ｍＷ］を示し、縦軸はフリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度［変化回数／秒］を示している。図３９中のドットは、各々のサンプリングポイントを表している。実線の直線は線形近似を表している。
【０１８３】
この直線は、横軸をｘ、縦軸をｙとしたとき、ｙ＝２５０３５７ｘで示される。前述の線形近似曲線描画機能を使って算出された決定係数Ｒ2は約０．８９であった。この値は、基準とした０．８を超えており、フリップフロップの入力データ端子とＲＡＭの入力データ端子とアドレス端子の信号の平均変化密度は、電力の期待値に対してよい相関を示している。この結果より、ＲＡＭを図３７のようにモデル化することは妥当であると考えられる。
【０１８４】
そこで、変化密度算出部１１ａは、図１９のステップＳ２０の処理において、たとえば、以下の処理を行う。すなわち、変化密度算出部１１ａは、ＲＡＭとフリップフロップ数の比率などをもとに、ＲＡＭが多量に含まれると判定したブロックに対して、フリップフロップの入力データ端子に加えて、ＲＡＭの入力データ端子とアドレス端子を、観測ポイントとして追加する。また、変化密度算出部１１ａは、任意のＲＡＭを含むブロックに対して、フリップフロップの入力データ端子に加えて、ＲＡＭの入力データ端子とアドレス端子を、観測ポイントとして追加するようにしてもよい。
【０１８５】
これにより、ＲＡＭが含まれるブロックがある場合でも、特に多量に含まれるブロックであっても、精度よく電力を見積もることができる。
また、ＲＡＭが含まれるブロックについても、観測ポイントとしてＲＡＭの入力データ端子やアドレス端子をフリップフロップの入力データ端子と同列に扱えるので、ＲＡＭの各端子の信号を計測する計測回路を、フリップフロップの端子の信号計測用のものと別に設けなくてもよい。そのため、計測回路の増大を抑制できる。
【０１８６】
なお、フリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子の信号の平均変化密度と電力の期待値との相関は、フリップフロップの入力データ端子とＲＡＭのアドレス端子、入力データ端子及び出力データ端子の信号の平均変化密度と、電力の期待値との相関よりもやや低い。
【０１８７】
これは、図３７に示したモジュール９０のデータ出力線ＤＯＵＴに接続されるフリップフロップ（フリップフロップ群９３）の出力データ端子における信号の変化を考慮していなかったからと考えられる。フリップフロップで入力データ端子を観測することは、入力データ端子の信号変化傾向を観測するのみならず、出力データ端子の変化傾向をも観測している効果があると考えた。さらに、図３７中のフリップフロップ群９３の入力データ端子は観測することができないので、フリップフロップ群９３の出力データ端子に相当する、ＲＡＭの出力データ端子ｄａｔａ＿ｏｕｔで代用しても精度があげられるのではないかと考えた。そこで、ｄａｔａ＿ｏｕｔ端子を観測対象に加える実験を行った。以下、実験結果を記載する。
【０１８８】
図４０は、ブロック８０に含まれるフリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子及び出力データ端子の信号の平均変化密度の計算例を示す図である。
【０１８９】
フリップフロップの入力データ端子と、各ＲＡＭのアドレス端子ａｄｄｒの信号と入力データ端子ｄａｔａ＿ｉｎの信号と、出力データ端子ｄａｔａ＿ｏｕｔの信号の平均変化密度の計算例が示されている。また、ブロック８０の電力の期待値が示されている。
【０１９０】
横軸は時間［ｎｓ］を示し、左の縦軸は平均変化密度［変化回数／秒］、右の縦軸は電力値［ｍＷ］を示している。
この計算例をもとに、電力の期待値と平均変化密度の相関を計算すると以下のようになった。
【０１９１】
図４１は、フリップフロップの入力データ端子と各ＲＡＭのアドレス端子と入力データ端子と出力データ端子の信号の平均変化密度と、電力の期待値との相関関係の例を示す図である。
【０１９２】
横軸はブロック８０の電力の期待値［ｍＷ］を示している。縦軸はフリップフロップの入力データ端子とＲＡＭのアドレス端子と入力データ端子と出力データ端子の信号の平均変化密度［変化回数／秒］を示している。図４１中のドットは、各々のサンプリングポイントを表している。実線の直線は線形近似を表している。
【０１９３】
この直線は、横軸をｘ、縦軸をｙとしたとき、ｙ＝２７０５６０ｘで示される。前述の線形近似曲線描画機能を使って算出された決定係数Ｒ2は約０．９２であった。すなわち、データ出力線に接続されるフリップフロップの出力データ端子の信号を考慮にいれると、平均変化密度は電力の期待値に対して、さらによい相関を示すことがわかった。この結果より、図３７中のフリップフロップ群９３の入力データ端子の代用として、フリップフロップ群９３の出力データ端子に相当する、ＲＡＭの出力データ端子ｄａｔａ＿ｏｕｔを観測ポイントに加えるアイディアは有効であると考えられる。
【０１９４】
そこで、変化密度算出部１１ａは、フリップフロップの入力データ端子に加えて、ＲＡＭのアドレス端子と入力データ端子と、出力データ端子を観測ポイントとして追加する。
これにより、ＲＡＭが含まれるブロックがある場合でも、特に多量に含まれるブロックであっても、精度よく電力を見積もることができる。
【０１９５】
また、図３７に示したモデル、及びＲＡＭの出力データ端子を入力データ端子の代用とみなすアイディアにより、観測ポイントとしてＲＡＭのアドレス端子や入力データ端子や出力データ端子をフリップフロップの入力データ端子と同列に扱える。そのため、ＲＡＭの各端子の信号を計測する計測回路を、フリップフロップの端子の信号の計測用のものと別に設けなくてもよくなり、計測回路の増大を抑制できる。
【０１９６】
以上のように、図３７に示したモデル化の妥当性、図３７のフリップフロップ群の入力データ端子の観測を出力データ端子で代用することの妥当性が実験的に実証された。したがって、ＲＡＭの端子をフリップフロップの入力データ端子と同列に扱ってよい。
【０１９７】
ＲＡＭのアドレス端子、入力データ端子、出力データ端子の信号は、よく変わる部分なので、この部分を上記のように考慮して観測ポイントを設定することで、より精度のよい、電力見積が可能となる。
【０１９８】
なお、上記の説明では、ＲＡＭのアドレス端子と入力データ端子及び出力データ端子を観測する例を示したが、データマスク端子についても同様に扱えることは容易に想像しうる。
【０１９９】
（電力見積装置のハードウェア例）
図４２は、電力見積装置のハードウェアの一例を示す図である。
図１または図３で示した電力見積装置１，１０は、例えば、図４２に示すようなコンピュータ１００で実現される。コンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。ＣＰＵ１０１は、バス１０７に接続された各部と連携して、図３に示した電力算出処理部１１、電力見積部１２、エミュレータ制御部１３などの機能を実現する。
【０２００】
ＲＡＭ１０２は、コンピュータ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に用いる各種データが格納される。
【０２０１】
バス１０７に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５及び光学ドライブ装置１０６などがある。
【０２０２】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、及び各種データが格納される。ＨＤＤ１０３は、例えば、図３に示した記憶装置１５の機能を有する。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【０２０３】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令にしたがって、例えば、図１７や、図１８に示したような電力見積結果をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【０２０４】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【０２０５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【０２０６】
上記のように本実施の形態の処理機能は、コンピュータによって実現することができる。その場合、電力見積装置１，１０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２０７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２０８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２０９】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２１０】
以上、実施の形態に基づき、本発明の電力見積装置、電力見積方法及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０２１１】
１  電力見積装置
２  電力係数算出部
３  補正係数算出部
４  電力値算出部
【図１】
0005785725.tif 000002
【図２】
0005785725.tif 000003
【図３】
0005785725.tif 000004
【図４】
0005785725.tif 000005
【図５】
0005785725.tif 000006
【図６】
0005785725.tif 000007
【図７】
0005785725.tif 000008
【図８】
0005785725.tif 000009
【図９】
0005785725.tif 000010
【図１０】
0005785725.tif 000011
【図１１】
0005785725.tif 000012
【図１２】
0005785725.tif 000013
【図１３】
0005785725.tif 000014
【図１４】
0005785725.tif 000015
【図１５】
0005785725.tif 000016
【図１６】
0005785725.tif 000017
【図１７】
0005785725.tif 000018
【図１８】
0005785725.tif 000019
【図１９】
0005785725.tif 000020
【図２０】
0005785725.tif 000021
【図２１】
0005785725.tif 000022
【図２２】
0005785725.tif 000023
【図２３】
0005785725.tif 000024
【図２４】
0005785725.tif 000025
【図２５】
0005785725.tif 000026
【図２６】
0005785725.tif 000027
【図２７】
0005785725.tif 000028
【図２８】
0005785725.tif 000029
【図２９】
0005785725.tif 000030
【図３０】
0005785725.tif 000031
【図３１】
0005785725.tif 000032
【図３２】
0005785725.tif 000033
【図３３】
0005785725.tif 000034
【図３４】
0005785725.tif 000035
【図３５】
0005785725.tif 000036
【図３６】
0005785725.tif 000037
【図３７】
0005785725.tif 000038
【図３８】
0005785725.tif 000039
【図３９】
0005785725.tif 000040
【図４０】
0005785725.tif 000041
【図４１】
0005785725.tif 000042
【図４２】
0005785725.tif 000043