(57)【特許請求の範囲】
【請求項１】
電子回路の消費電力を見積もるための消費電力見積もり方法であって、
コンピュータが、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
ことを特徴とする消費電力見積もり方法。
【請求項２】
電力影響度を計算する際には、全ての前記フリップフロップに対して同一の動作率を設定して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第１の平均動作率とし、前記論理回路内の前記フリップフロップを１つずつ選択し、選択した前記フリップフロップの出力信号の動作率のみを変更して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第２の平均動作率とし、前記第１の平均動作率と前記第２の平均動作率との差を、選択した前記フリップフロップの電力影響度とする請求項１記載の消費電力見積もり方法。
【請求項３】
前記模擬動作用論理回路を生成する際には、電力影響度が高い方から所定数の前記フリップフロップを選択し、選択した前記フリップフロップそれぞれの電力影響度のうちの最も低い値を閾値とし、電力影響度が閾値以上の前記フリップフロップと、電力影響度が閾値未満の前記フリップフロップから無作為抽出した一部の前記フリップフロップとに対して前記変化数計測回路を追加し、
前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、電力影響度が閾値未満の前記フリップフロップに追加した前記変化数計測回路の計測値から計算する請求項１記載の消費電力見積もり方法。
【請求項４】
前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、他の前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップそれぞれに追加された複数の前記変化数計測回路の計測値から計算し、他の前記フリップフロップそれぞれの動作率の平均を前記変化数計測回路が追加されていない前記フリップフロップの出力信号の動作率とする請求項１記載の消費電力見積もり方法。
【請求項５】
電子回路の消費電力を見積もる消費電力見積もり装置であって、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算する電力影響度算出部と、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成する計測回路追加部と、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納する模擬動作部と、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算する組合せ回路動作率算出部と、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路動作率算出部で算出された前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する消費電力算出部と、
を有する消費電力見積もり装置。
【請求項６】
電子回路の消費電力を見積もるための消費電力見積もりプログラムであって、
コンピュータに、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
処理を実行させる消費電力見積もりプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は消費電力見積もり方法、消費電力見積もり装置、および消費電力見積もりプログラムに関し、特にＬＳＩのエミュレーションやシミュレーションなどによる模擬動作を実行して消費電力を見積もるための消費電力見積もり方法、消費電力見積もり装置、および消費電力見積もりプログラムに関する。
【背景技術】
【０００２】
現在、コンピュータを含む多くの機器にＬＳＩ（Large Scale Integration）などの電子回路が搭載されている。しかも、ＬＳＩが高機能化し消費電力が大きくなってきたため、ＬＳＩの低消費電力化が求められている。そこで、ＬＳＩの設計段階において、消費電力を抑えることができるように工夫した回路が組まれる。例えば、ゲーテッドクロックと呼ばれる方法がある。これは、回路が動作する必要のないときに、その回路へのクロックの供給を停止することで、消費電力を低減するものである。このように、低消費電力設計を行うことで、ＬＳＩの消費電力を低く抑えることが可能である。
【０００３】
ＬＳＩの低消費電力設計を行ったとき、そのＬＳＩの消費電力がどの程度になるかを正確に見積もる必要がある。ＬＳＩの消費電力がどの程度に抑えられるかにより、その他の部分の設計方針も変わってくるためである。例えば、ＬＳＩの消費電力が大きい場合には、それに応じた電源設備が必要であると共に、十分な熱対策を施す必要がある。また、ＬＳＩは、バッテリーで駆動する各種電子機器にも内蔵されている。例えば、携帯電話やビデオカメラ、ノートパソコンなどである。このような電子機器は、通常動作時の消費電力が、バッテリーによる動作可能時間に直結する。そのため、ＬＳＩによる消費電力が正確に分からないと、予め設定したバッテリー駆動時間の仕様を満たすために必要なバッテリー容量が不明となってしまう。
【０００４】
設計段階のＬＳＩの消費電力を計算するには、電源電圧、ゲートの信号変化数などの変数を求める必要がある。それらの変数のうち電源電圧は規格上決めておくことができ、その他の変数の多くも設計時のデータから計算できる。ところが、ゲートの信号変化数は、実際のＬＳＩの模擬動作を実施しないと正確に算出することができない。例えば、ビデオカメラであれば、映像の撮影時と再生時とでは、ＬＳＩで実行される処理が異なる。処理が異なれば、当然各ゲートの信号変化数も異なる。
【０００５】
従って、全ゲートの信号変化数を計測できれば、その信号変化数に基づいて対象論理回路の消費電力を算出することができる。論理回路の全ゲートの信号変化数を測定するには、ＬＳＩの使用状況に合わせて、ソフトウェアで動作をシミュレートするか、あるいはＦＰＧＡ（Field Programmable Gate Array）などの書き換え可能な回路を用いて動作をエミュレートすることとなる。ここで、ソフトウェアでのシミュレートは、時間が膨大にかかる。そのため、完成したＬＳＩの消費電力の検証には使用できるが、設計段階のＬＳＩの消費電力の算出には不向きである。
【０００６】
そこで、短期間でＬＳＩの消費電力を算出するには、ＦＰＧＡなどのような再構成可能なデバイスを用いたエミュレートが行われる。設計したＬＳＩの論理回路をＦＰＧＡでエミュレートすることで、各ゲートの信号変化数を取得することができる。なお、設計した論理回路のままでは信号変化数を取得できない。そのため、論理回路の各ゲートに、信号変化数をカウントするための計測回路を追加する必要がある。計測回路を埋め込んだ論理回路でエミュレーションを行えば、計測回路から信号変化数を取得できる。そして、取得した信号変化数に基づいて論理回路の消費電力が計算できる（例えば、特許文献１参照）。
【特許文献１】特開２００４−６２２３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、ＬＳＩの回路が大規模になると、計測ポイントが膨大となる。そのため、計測値データが膨大となり、計測値データをＦＰＧＡなどの再構成可能なデバイスからコンピュータへダンプするだけでも膨大な時間がかかる。その結果、再構成可能なデバイスを用いたエミュレーションにおいても、正確な消費電力を求めるには非常に時間がかかっていた。
【０００８】
しかも、再構成可能なデバイスの中で大規模な論理回路を構成する場合、追加するべき計測回路の数が非常に多くなる。すると、大規模な再構成可能なデバイスを用意する必要があり、コストアップとなる。大規模な再構成可能なデバイスを用意できなければ、エミュレーションの実行すら困難となる。
【０００９】
なお、ＬＳＩで実行される様々な処理のうちの極一部の処理に限定したエミュレーションを行えば、エミュレーション時間を短縮することは可能である。ただし、そのような簡略化したエミュレーションに基づいて算出される消費電力は誤差が大きくなり、演算結果の精度が保証できない。
【００１０】
本発明はこのような点に鑑みてなされたものであり、精度を低下させることなく、短時間で消費電力を見積もることができる消費電力見積もり方法、消費電力見積もり装置、および消費電力見積もりプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、以下のようなＬＳＩの消費電力を見積もるための消費電力見積もり方法が提供される。この消費電力見積もり方法では、コンピュータが、以下の処理を行う。
【００１２】
コンピュータは、ＬＳＩの論理回路を記憶する論理回路記憶部を参照すると共に、論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、フリップフロップごとに計算する。次に、コンピュータは、論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数のフリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成する。次にコンピュータは、模擬動作用論理回路を用いてＬＳＩの模擬動作を実行すると共に、模擬動作用論理回路に追加された時間計測回路と変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納する。次にコンピュータは、計測結果記憶部を参照し、変化数計測回路が追加されたフリップフロップそれぞれの出力信号の動作率を、フリップフロップ自身に追加された変化数計測回路の出力信号の計測値から計算し、変化数計測回路が追加されていないフリップフロップそれぞれの出力信号の動作率を、他のフリップフロップに追加された変化数計測回路の計測値から計算する。次にコンピュータは、遷移確率記憶部を参照し、複数のフリップフロップの出力信号の動作率に基づいて組合せ回路ごとのセル間の確率伝播計算を行い、組合せ回路内のセルの出力信号の平均動作率を計算する。そして、コンピュータは、計測結果記憶部を参照し、機能ブロックそれぞれに追加された時間計測回路の計測値から機能ブロックの動作率を判断し、組合せ回路の平均動作率から組合せ回路内のセルの出力信号の動作率および組合せ回路に接続されたフリップフロップの出力信号の動作率を判断し、論理回路を動作させたときの消費電力を算出する。
【００１３】
このような消費電力見積もり方法によれば、組合せ回路におけるセル間の確率伝播計算によりフリップフロップそれぞれの電力影響度が計算される。次に、論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数のフリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路が生成される。次に、ＬＳＩの模擬動作が実行され、時間計測回路と変化数計測回路とから計測値が定期的に取得される。次に、変化数計測回路の出力信号の計測値からフリップフロップそれぞれの出力信号の動作率が計算される。次に、組合せ回路内のセルの出力信号の平均動作率が計算される。そして、論理回路を動作させたときの消費電力が算出される。
【００１４】
また、上記消費電力見積もり方法に示す処理を実行する機能を有する消費電力見積もり装置が提供される。さらに、上記消費電力見積もり方法に示す処理をコンピュータに実行させるための消費電力見積もりプログラムが提供される。
【発明の効果】
【００１５】
追加すべき計測回路が少なくなり処理効率が向上すると共に、計測回路を追加しないフリップフロップがあることにより消費電力見積もり精度の低下を最小限に抑制できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。図１に示す消費電力見積もり装置は、論理回路記憶部１、遷移確率記憶部２、電力影響度算出部３、計測回路追加部４、模擬動作部５、計測結果記憶部６、組合せ回路動作率算出部７、および消費電力算出部８で構成される。
【００１７】
論理回路記憶部１は、ＬＳＩの論理回路を記憶する。
遷移確率記憶部２は、論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する。
【００１８】
電力影響度算出部３は、論理回路記憶部１と遷移確率記憶部２を参照し、組合せ回路におけるセル間の確率伝播計算を行う。さらに、電力影響度算出部３は、論理回路に含まれるフリップフロップ（以下、ＦＦという）それぞれの出力信号の動作率が変化することによる論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、ＦＦごとに計算する。
【００１９】
例えば、電力影響度算出部３は、全てのＦＦに対して同一の動作率を設定して確率伝播計算を行う。次に、電力影響度算出部３は、全てのＦＦおよび全てのセルの出力信号の動作率の平均を第１の平均動作率とし、論理回路内のＦＦを１つずつ選択する。電力影響度算出部３は、選択したＦＦの出力信号の動作率のみを変更して確率伝播計算を行い、全てのＦＦおよび全てのセルの出力信号の動作率の平均を第２の平均動作率とする。そして、電力影響度算出部３は、第１の平均動作率と第２の平均動作率との差を、選択したＦＦの電力影響度とする。
【００２０】
計測回路追加部４は、論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路を追加する。また、計測回路追加部４は、論理回路に対して、電力影響度が高い方から所定数のＦＦの出力信号の変化数をカウントする変化数計測回路を追加する。このように、論理回路に計測回路を追加することで模擬動作用論理回路が生成される。
【００２１】
模擬動作部５は、模擬動作用論理回路を用いてＬＳＩの模擬動作を実行する。模擬動作としては、例えば、ＦＰＧＡを用いたエミュレーションやソフトウェアによるシミュレーションが行われる。また、模擬動作部５は、模擬動作実行中に、模擬動作用論理回路に追加された複数の時間計測回路および変化数計測回路とから計測値を定期的に取得して計測結果記憶部６に格納する。
【００２２】
組合せ回路動作率算出部７は、計測結果記憶部６を参照し、変化数計測回路が追加されたＦＦそれぞれの出力信号の動作率を、ＦＦ自身に追加された変化数計測回路の出力信号の計測値から計算する。さらに、組合せ回路動作率算出部７は、変化数計測回路が追加されていないＦＦそれぞれの出力信号の動作率を、他のＦＦに追加された変化数計測回路の計測値から計算する。そして、組合せ回路動作率算出部７は、遷移確率記憶部２を参照し、全てのＦＦの出力信号の動作率に基づいて組合せ回路ごとのセル間の確率伝播計算を行い、組合せ回路内のセルの出力信号（組合せ回路内のセルから出力される信号の動作率）の平均動作率を計算する。
【００２３】
消費電力算出部８は、計測結果記憶部６を参照し、機能ブロックそれぞれに追加された時間計測回路の計測値から機能ブロックの動作率を判断する。さらに、消費電力算出部８は、組合せ回路の平均動作率から組合せ回路内のセルの出力信号の動作率および組合せ回路に接続されたＦＦの出力信号の動作率を判断する。そして、消費電力算出部８は、機能ブロック、組合せ回路、およびＦＦの出力信号の動作率に基づいて、論理回路を動作させたときの消費電力を算出する。
【００２４】
このような構成の消費電力見積もり装置によれば、論理回路に含まれるＦＦのうち、電力影響度が高いＦＦに対してのみ変化数計測回路が追加され、模擬動作の実行によってそのＦＦの出力信号の変化数がカウントされる。変化数計測回路を追加したＦＦについては、計測値に基づいて出力信号の動作率が計算される。変化数計測回路を追加していないＦＦについては、他のＦＦに追加した変化数計測回路の計測値に基づいて、出力信号の動作率が計算される。これにより、変化数計測回路を追加していないＦＦも含めて、全てのＦＦの出力信号の動作率が求まる。そこで、求められた動作率を使用して論理回路の消費電力が算出される。
【００２５】
このように、電力影響度の低いＦＦに対しては計測回路を追加しないようにしたため、模擬動作実行時に取得すべき測定値のデータ量が少なくなり、処理効率が向上する。しかも、追加する計測回路数が少なくなるため、全てのＦＦに対して計測回路を追加した場合に比べて、規模の小さなＦＰＧＡでエミュレーションを行うことが可能となる。
【００２６】
さらに、電力影響度の低いＦＦであれば、算出した動作率に誤差があっても、全体の消費電力に与える影響は少なくて済む。従って、一部のＦＦに対して計測回路を追加しないことによる消費電力の精度低下を最低限に抑制できる。
【００２７】
なお、計測回路追加部４は、ＦＦへの計測回路の追加処理では、電力影響度が低いＦＦの一部に対して、計測回路を追加することもできる。例えば、電力影響度が高い方から所定数のＦＦを選択し、選択した各ＦＦの電力影響度のうちの最も低い値を閾値とする。そして、計測回路追加部４は、電力影響度が閾値以上のＦＦと、電力影響度が閾値未満のＦＦから無作為抽出した一部のＦＦとに対して計測回路を追加する。
【００２８】
この場合、組合せ回路動作率算出部７は、電力影響度が閾値未満のＦＦに追加した変化数計測回路の計測値に基づいて、変化数計測回路が追加されていないＦＦそれぞれの出力信号の動作率を計算する。これにより、変化数計測回路が追加されていないＦＦの出力信号の動作率の計算精度が向上する。
【００２９】
ところで、図１に示した消費電力見積もり装置の機能は、コンピュータによって実現することができる。そこで、コンピュータがＦＰＧＡを制御してエミュレーションを行うことにより消費電力を見積もる場合の例を用いて、本実施の形態の詳細を説明する。
【００３０】
図２は、本実施の形態のエミュレーションシステム構成例を示す図である。コンピュータ１００には、インタフェース変換ユニット２０を介してＦＰＧＡ３０が接続されている。インタフェース変換ユニット２０は、コンピュータ１００の通信インタフェース（例えば、ＵＳＢ）とＦＰＧＡ３０へのデータ入出力用インタフェース（例えば、ＪＴＡＧ（Joint Test Action Group））との通信データを、相互に変換する。コンピュータ１００から送信されたデータは、インタフェース変換ユニット２０を介してＦＰＧＡ３０に入力される。また、ＦＰＧＡ３０から出力されたデータは、インタフェース変換ユニット２０を介してコンピュータ１００に入力される。
【００３１】
図３は、本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３２】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３４】
通信インタフェース１０６は、インタフェース変換ユニット２０を介してＦＰＧＡ３０にデータの入出力を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００３５】
図４は、コンピュータの機能を示すブロック図である。コンピュータ１００は、エミュレーションに必要なデータを予め記憶する機能として、全体テストベンチ記憶部１１１、チップネットリスト記憶部１２０、遷移確率ライブラリ記憶部１３１、電力影響度記憶部１３２、および算出済変数記憶部１５０を有している。また、コンピュータ１００は、エミュレーション結果を記憶する機能として、ＧＣＬＫ計測値記憶部１４１、メモリアクセス計測値記憶部１４２、およびＦＦ出力変化計測値記憶部１４３を有している。さらに、コンピュータ１００は、エミュレーション結果から計算によって算出する情報を記憶する組合せ回路動作率記憶部１４４とモジュール別平均動作率記憶部１４５とを有している。
【００３６】
全体テストベンチ記憶部１１１は、テストの実行条件（全体テストベンチ）を記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が全体テストベンチ記憶部１１１として使用される。全体テストベンチには、設計対象のＬＳＩに実行させるべき処理をＦＰＧＡ３０に実行させるために、ＦＰＧＡ３０に入力すべきデータや、信号変化数を採取する間隔（例えば、基準クロックで１万クロックごと）などの情報が含まれる。
【００３７】
チップネットリスト記憶部１２０は、エミュレーション対象のＬＳＩ内電子回路におけるセル間の接続関係を示すチップネットリスト１２１を記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部がチップネットリスト記憶部１２０として使用される。チップネットリスト１２１には、ＧＣＬＫインスタンス情報１２１ａとＲＡＭインスタンス情報１２１ｂとが含まれている。ＧＣＬＫインスタンス情報１２１ａは、ゲーティドクロック（ＧＣＬＫ）の回路情報である。ＲＡＭインスタンス情報１２１ｂは、ＲＡＭの回路情報である。
【００３８】
遷移確率ライブラリ記憶部１３１は、入力信号がオン（ハイレベル）からオフ（ローレベル）、またはオフからオンに遷移したときに、出力信号が遷移する確率を論理セルごとに記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が遷移確率ライブラリ記憶部１３１として使用される。
【００３９】
電力影響度記憶部１３２は、ＬＳＩの論理回路に含まれる各ＦＦの動作が、ＬＳＩ全体の電力に与える影響度を示す数値（電力影響度）を記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が電力影響度記憶部１３２として使用される。
【００４０】
ＧＣＬＫ計測値記憶部１４１は、ＬＳＩ内に設けられるＧＣＬＫのクロックがゲーティングされた期間を、時間帯別に記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部がＧＣＬＫ計測値記憶部１４１として使用される。
【００４１】
メモリアクセス計測値記憶部１４２は、ＬＳＩ内に設けられるＲＡＭのチップイネーブル信号（ＣＥ）とライトイネーブル信号（ＷＥ）との信号変化数を、時間帯別に記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部がメモリアクセス計測値記憶部１４２として使用される。
【００４２】
ＦＦ出力変化計測値記憶部１４３は、ＬＳＩ内に設けられるＦＦの出力側の信号変化数を、時間帯別に記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部がＦＦ出力変化計測値記憶部１４３として使用される。
【００４３】
組合せ回路動作率記憶部１４４は、ＬＳＩ内に設けられる組合せ回路とその組合せ回路前後のＦＦ出力の動作率を、時間帯別に記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が組合せ回路動作率記憶部１４４として使用される。
【００４４】
モジュール別平均動作率記憶部１４５は、モジュール（クロックバッファ、ＲＡＭ、組合せ回路）の平均動作率を記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部がモジュール別平均動作率記憶部１４５として使用される。
【００４５】
算出済変数記憶部１５０は、消費電力を算出するために予め算出された変数を記憶する記憶機能である。例えば、ＨＤＤ１０３の記憶領域の一部が算出済変数記憶部１５０として使用される。算出済変数記憶部１５０にはリーク電力値１５１、電力ライブラリ１５２、配線負荷容量１５３、電源電圧値１５４が記憶されている。リーク電力値１５１は、リーク電流（絶縁されているはずの経路に漏れ出す電流）による消費電力である。電力ライブラリ１５２は、セル（ＡＮＤ回路、ＮＡＮＤ回路など）ごとの消費電力を示すパラメータである。配線負荷容量１５３は、配線の負荷を示す値である。電源電圧値１５４は、検証対象のＬＳＩに印可される電源の電圧である。
【００４６】
これらのデータを利用して正確な消費電力を算出するために、コンピュータ１００は、計測回路の追加機能として、ＧＣＬＫ用計測回路追加部１６１、メモリ用計測回路追加部１６２、全ネット平均動作率算出部１６３、電力影響度算出部１６４、およびＦＦ用計測回路追加部１６５を有している。
【００４７】
ＧＣＬＫ用計測回路追加部１６１は、チップネットリスト記憶部１２０からＧＣＬＫインスタンス情報１２１ａを抽出し、ＧＣＬＫインスタンス情報１２１ａに計測回路を追加する。そして、ＧＣＬＫ用計測回路追加部１６１は、計測回路を追加したＧＣＬＫインスタンス情報１２１ａを、エミュレーション制御部１７１に渡す。
【００４８】
メモリ用計測回路追加部１６２は、チップネットリスト記憶部１２０からＲＡＭインスタンス情報１２１ｂを抽出し、ＲＡＭインスタンス情報１２１ｂに計測回路を追加する。そして、メモリ用計測回路追加部１６２は、計測回路を追加したＲＡＭインスタンス情報１２１ｂをエミュレーション制御部１７１に渡す。
【００４９】
全ネット平均動作率算出部１６３は、組合せ回路に含まれるセルの確率伝播による動作率（全ネット平均動作率）を算出する。具体的には、全ネット平均動作率算出部１６３は、チップネットリスト１２１から組合せ回路を抽出する。さらに、全ネット平均動作率算出部１６３は、取得した組合せ回路に含まれるセルの遷移確率を、遷移確率ライブラリ記憶部１３１から取得する。次に、全ネット平均動作率算出部１６３は、ＦＦの出力信号の動作率を初期値に設定し、そのときの確率伝播による各セルの出力信号の動作率を計算する。その際、各セルの入力信号の遷移によって出力信号が遷移する確率が、遷移確率ライブラリ記憶部１３１から取得した遷移確率で決定される。そして、全ネット平均動作率算出部１６３は、論理回路内の全ての組合せ回路内のセルに対する出力信号の動作率の平均（全ネット平均動作率）を求める。
【００５０】
その後、全ネット平均動作率算出部１６３は、チップネットリスト１２１に含まれるＦＦを１つずつ順番に選択する。そして、全ネット平均動作率算出部１６３は、選択したＦＦの出力信号の動作率を初期値から所定値（初期値以外の値）に変更し、全ネット平均動作率を求める。全ネット平均動作率算出部１６３は、全てのＦＦの出力信号の動作率が初期値の場合の全ネット平均動作率と、選択したＦＦの出力信号の動作率を所定値に変更した場合の全ネット平均動作率とを、電力影響度算出部１６４に渡す。
【００５１】
電力影響度算出部１６４は、それぞれのＦＦについて、全てのＦＦの出力信号の動作率が初期値の場合の全ネット平均動作率と、ＦＦの出力信号の動作率を所定値に変更した場合の全ネット平均動作率との差を求め、電力影響度とする。そして、電力影響度算出部１６４は、各ＦＦの影響度を電力影響度記憶部１３２に格納する。
【００５２】
ＦＦ用計測回路追加部１６５は、電力影響度記憶部１３２を参照し、電力影響度が予め設定された閾値以上のＦＦに対して計測回路を追加する。また、ＦＦ用計測回路追加部１６５は、電力影響度記憶部１３２を参照し、電力影響度が予め設定された閾値未満のＦＦの中から所定の割合のＦＦを無作為に選択し、選択したＦＦに対して計測回路を追加する。そして、ＦＦ用計測回路追加部１６５は、計測回路を追加したＦＦの回路情報をエミュレーション制御部１７１に渡す。
【００５３】
エミュレーション制御部１７１は、ＦＰＧＡ３０を利用して、チップネットリスト１２１で示される論理回路のエミュレーションを行う。具体的には、エミュレーション制御部１７１は、チップネットリスト記憶部１２０から検証すべきＬＳＩの論理回路を示すチップネットリスト１２１を取得する。さらに、エミュレーション制御部１７１は、計測回路を追加したＧＣＬＫインスタンス情報１２１ａをＧＣＬＫ用計測回路追加部１６１から受け取ると、チップネットリスト１２１内の該当するＧＣＬＫインスタンス情報１２１ａを、計測回路が追加されたＧＣＬＫインスタンス情報１２１ａに置き換える。同様に、エミュレーション制御部１７１は、計測回路を追加したＲＡＭインスタンス情報１２１ｂをメモリ用計測回路追加部１６２から受け取ると、チップネットリスト１２１内の該当するＲＡＭインスタンス情報１２１ｂを、計測回路が追加されたＲＡＭインスタンス情報１２１ｂに置き換える。さらに、エミュレーション制御部１７１は、計測回路を追加したＦＦの回路情報をＦＦ用計測回路追加部１６５から受け取ると、チップネットリスト１２１内の該当するＦＦの回路情報を、計測回路が追加された回路情報に置き換える。
【００５４】
次に、エミュレーション制御部１７１は、計測回路が追加されたチップネットリストに基づいて、ＦＰＧＡ３０上で構成すべき論理回路を決定し、その論理回路をＦＰＧＡ３０で実現するためのデータを生成する。エミュレーション制御部１７１は、生成したデータをインタフェース変換ユニット２０を介してＦＰＧＡ３０に転送する。また、エミュレーション制御部１７１は、全体テストベンチ記憶部１１１で示されるテスト環境に従って、ＦＰＧＡ３０に対してテスト用の信号を出力し、エミュレーションを実行する。そして、エミュレーション制御部１７１は、エミュレーション実行中の所定の間隔で、計測回路から計測値を取得する。
【００５５】
エミュレーション制御部１７１は、取得した計測値を、ＧＣＬＫ計測値記憶部１４１、メモリアクセス計測値記憶部１４２、ＦＦ出力変化計測値記憶部１４３に格納する。具体的には、エミュレーション制御部１７１は、ＧＣＬＫインスタンスに追加した計測回路から取得した計測値をＧＣＬＫ計測値記憶部１４１に格納する。また、エミュレーション制御部１７１は、ＲＡＭインスタンスに追加した計測回路から取得した計測値をメモリアクセス計測値記憶部１４２に格納する。さらに、エミュレーション制御部１７１は、ＦＦに追加した計測回路から取得した計測値をＦＦ出力変化計測値記憶部１４３に格納する。
【００５６】
組合せ回路動作率算出部１７２は、ＦＦ出力変化計測値記憶部１４３から、計測回路によって計測されたＦＦの出力信号の所定の時間帯内での動作回数（動作率）を取得し、そのＦＦの動作率とする。次に、組合せ回路動作率算出部１７２は、電力影響度記憶部１３２を参照し、計測回路が追加されたＦＦのうち、電力影響度が閾値未満のＦＦを判断する。そして、組合せ回路動作率算出部１７２は、計測回路が追加されていないＦＦの動作率として、電力影響度が閾値未満のＦＦの出力信号の動作率の平均値を設定する。さらに、組合せ回路動作率算出部１７２は、遷移確率ライブラリ記憶部１３１を参照し、各ＦＦの動作率に基づいて組合せ回路ごとの確率伝播計算を行い、各組合せ回路それぞれの平均動作率を算出する。組合せ回路動作率算出部１７２は、算出した平均動作率を組合せ回路動作率記憶部１４４に格納する。
【００５７】
平均動作率算出部１７３は、各モジュール（ＧＣＬＫ、ＲＡＭ、組合せ回路）の時間的に平均化した動作率を計算する。具体的には、平均動作率算出部１７３は、エミュレーションを実行した時間（エミュレーション上の時間）を複数の時間帯に分割し、時間帯ごとの各モジュールの動作率の平均を求める。そして、平均動作率算出部１７３は、算出した平均動作率をモジュール別平均動作率記憶部１４５に格納する。
【００５８】
消費電力算出部１７４は、算出済変数記憶部１５０とモジュール別平均動作率記憶部１４５とに登録されたデータを利用して、消費電力値４０を算出する。
このような機能を有するコンピュータによって、チップネットリスト１２１に基づくＬＳＩの消費電力の算出が行われる。
【００５９】
まず、消費電力を見積もるための計算式について説明する。ＬＳＩの消費電力は、アクティブ電力とリーク電力とに分けられる。式で表すと以下の式になる。
消費電力  ＝  アクティブ電力  ＋  リーク電力  ・・・（１）
ここで、アクティブ電力は、ＬＳＩが動作することで消費される電力である。リーク電力は、絶縁されているはずの経路に漏れ出す電流によって生じる消費電力である。リーク電力はＬＳＩの動作に関係なく発生しており、ＬＳＩの模擬動作を実施しなくても計算によって算出できる。
【００６０】
一方、アクティブ電力は、セル内部消費電力とネット消費電力とに分けることができる。式で表すと以下の式になる。
アクティブ電力  ＝  セル内部消費電力  ＋  ネット消費電力  ・・・（２）
ここで、セル内部消費電力は、ＬＳＩ内部のＲＡＭなどの個別の機能を実現するための回路（セル）の内部での消費電力である。セル内部消費電力は、以下の式で算出できる。
セル内部消費電力  ＝  Σ（Ｅ×ＴＲC）  ・・・（３）
ここで、Ｅはセルごとの消費電力パラメータである。この消費電力パラメータは、セルが１回動作するごとに消費する電力を示している。セルの機能ごとにその内部構造は決まっているため、この消費電力パラメータは予め求めておくことができる。各セルの消費電力パラメータを含むデータが、電力ライブラリとして予め用意される。ＴＲCは、セルの単位時間当たりの動作回数（動作率）である。セルごとの消費電力パラメータにそのセルの出力信号の動作率を乗算することで、セルごとの消費電力が求まる。そして、全てのセルの消費電力の総和（Σ）を計算することで、セル内部消費電力となる。
【００６１】
ネット消費電力は、セル間の配線における消費電力である。ネット消費電力は以下の式で表すことができる。
ネット消費電力  ＝  Σ（１／２×Ｃ×ＴＲN）×Ｖｄ2  ・・・（４）
ここで、Ｃは配線負荷容量である。ＴＲNは、各配線の単位時間当たりの動作回数（動作率）である。なお、配線の動作回数とは、その配線を流れる信号のオン／オフの切り換え回数（信号の遷移回数）である。Ｖｄは、電源電圧である。動作率を２分の１した値を配線負荷容量に乗算し、さらに電源電圧の２乗を乗算することで、個々の配線の消費電力を出すことができる。そして、各配線の消費電力の総和（Σ）を計算することで、ネット消費電力となる。
【００６２】
このような計算式により、ＬＳＩの消費電力を計算することができる。この計算でアクティブ電力の算出に使用する各パラメータ（Ｅ、Ｃ、ＴＲC、ＴＲN、Ｖｄ）のうち、セルの出力信号の動作率（ＴＲC）と配線の動作率（ＴＲN）とについては、ＬＳＩの論理回路をエミュレーションやシミュレーションにより模擬動作させてみないと、その値が分からない性質を持つ。他のパラメータは、論理回路の模擬動作をさせなくとも、静的に算出可能である。従って、ＬＳＩの消費電力を算出するためには、各ゲートの信号変化回数をいかに精度よく求めるかが重要となる。
【００６３】
図５は、論理回路の一部の構成を簡略的に表した図である。図５に示すようにＬＳＩの論理回路は、主として複数のＦＦ５１，５２，５４、ＦＦ間に設けられた組合せ回路５３、クロックバッファ部５５、およびメモリ５６で構成される。組合せ回路５３は、複数のセル５３ａ，５３ｂ，５３ｃで構成される。セル５３ａ，５３ｂ，５３ｃは、論理和（ＯＲ）、論理積（ＡＮＤ）などの論理演算回路である。
【００６４】
クロックバッファ部５５は、クロックの出力タイミングを調節する回路である。クロックバッファ部５５には、クロック信号（ＣＬＫ）が入力されている。クロックバッファ部５５は、ゲーティドクロック回路を内蔵している。クロックバッファ部５５の出力信号はＦＦ５４に対して出力される。クロックバッファ部５５は、ゲーティドクロック回路により、ゲーティドクロックのクロックイネーブル信号（ＣＥＮ）が入力されている間だけゲーティドクロック信号をＦＦ５４に対して出力する。これにより、ＦＦ５４は、信号の処理を行う必要がないときは動作が停止する。
【００６５】
なお、図５では、ＦＦ５４以外の回路に入力されるクロック信号やその他の制御信号は省略している。また、図中省略しているが、ＦＦ５４以外のＦＦ５１，５２に対してもクロックバッファ部が接続される。
【００６６】
図５の例で示したような論理回路を大量に組合せることで、ＬＳＩ全体の論理回路が構成される。そこで、ＬＳＩの消費電力を算出するには、エミュレーションによって、各回路の所定のゲート信号の変化回数を求める。具体的には、各セル種類により下記の様に動作率を計測する。
【００６７】
クロックバッファ部５５は、クロックイネーブル信号（ＣＥＮ）の入力期間（信号がアサートされている期間）を計測回路により計測する。そして、クロックイネーブル信号（ＣＥＮ）の入力期間から、クロックバッファ部５５の動作率が算出できる。すなわち、クロックバッファ部５５の動作率は、ファンイン側のクロックイネーブル信号（ＣＥＮ）の入力期間に出されるゲーティドクロック信号の動作率である。
【００６８】
なお、図５には、ゲーティドクロック回路を有するクロックバッファ部５５のみが示されているが、ゲーティドクロック回路を有していないクロックバッファ部もある。ゲーティドクロック回路がないクロックバッファ部の場合は、入力されるクロック信号（ＣＬＫ）の動作周波数から動作率を算出する。
【００６９】
メモリ５６は、ＲＡＭの場合とＲＯＭ（Read Only Memory）の場合とがある。メモリ５６は、チップイネーブル信号（ＣＥ）およびライトイネーブル信号（ＷＥ）の期間を計測回路により計測する。ＲＯＭの場合、ライトイネーブル信号（ＷＥ）は入力されていないため、その計測も必要ない。
【００７０】
ＲＡＭの場合、チップイネーブル信号（ＣＥ）と共にライトイネーブル信号（ＷＥ）が入力（アサート）されていれば、データの書き込み処理が行われる。この場合、ＲＡＭの書き込み時の消費電力を示す消費電力パラメータが使用される。ＲＡＭに対してチップイネーブル信号（ＣＥ）が入力されているときに、ライトイネーブル信号（ＷＥ）が入力されていなければ、データの読み出し処理が行われる。この場合、ＲＡＭの読み出し時の消費電力を示す消費電力パラメータが使用される。
【００７１】
ＦＦ５１，５２，５４については、入力クロックの動作率は、接続元のクロックバッファ部の動作率を適用する。ＦＦ５１，５２，５４の出力データの動作率は、計測回路による計測値を用いるか、あるいは、他のＦＦの計測値の平均値を適用する。
【００７２】
組合せ回路５３の動作率は、ＦＦ５１，５２の出力データの動作率から動作率伝播機能により算出する。
以上より、論理回路上で計測回路を追加して動作率をする必要があるのは、クロックバッファ部のクロックイネーブル信号（ＣＥＮ）、ＲＡＭのチップイネーブル信号（ＣＥ）およびライトイネーブル信号（ＷＥ）、ＲＯＭのチップイネーブル信号（ＣＥ）、一部のＦＦの出力信号である。
【００７３】
論理回路上でのクロックバッファ部に対する計測回路の追加は、ＧＣＬＫ用計測回路追加部１６１によって行われる。論理回路上でのＲＡＭ／ＲＯＭに対する計測回路の追加は、メモリ用計測回路追加部１６２によって行われる。
【００７４】
図６は、クロックバッファ部とＲＡＭとに対して追加された計測回路の例を示す図である。チップネットリスト１２１には、電力計測の対象となるＬＳＩ論理回路６０が定義されている。チップネットリスト１２１内のＧＣＬＫインスタンス情報１２１ａに基づいて、ＬＳＩ論理回路６０内には、ＧＣＬＫインスタンス６１，６２が構成される。ＧＣＬＫインスタンス６１，６２は、フリップフロップ部のファンイン側に設けられたゲーティドクロック回路を示している。また、チップネットリスト１２１内のＲＡＭインスタンス情報１２１ｂに基づいて、ＬＳＩ論理回路６０内には、ＲＡＭインスタンス６３，６４が構成される。ＲＡＭインスタンス６３，６４は、ＲＡＭ回路を示している。
【００７５】
このようなＬＳＩ論理回路６０に対して計測回路群７０が追加される。計測回路群７０の内部構成は、全体テストベンチ記憶部１１１に予め記憶されている。ＧＣＬＫ用計測回路追加部１６１は、チップネットリスト１２１を参照して、ＧＣＬＫカウンタ７１，７２の追加位置をエミュレーション制御部１７１に指示する。また、メモリ用計測回路追加部１６２は、チップネットリスト１２１を参照して、ＲＡＭカウンタ７３〜７６の追加位置をエミュレーション制御部１７１に指示する。エミュレーション制御部１７１は、全体テストベンチ記憶部１１１からＧＣＬＫカウンタ７１，７２やＲＡＭカウンタ７３〜７６の回路構成を取得し、ＬＳＩ論理回路６０内の指示された位置にＧＣＬＫカウンタ７１，７２やＲＡＭカウンタ７３〜７６を示す論理回路を接続する。
【００７６】
ＧＣＬＫインスタンス６１，６２には、クロックイネーブル信号（ＣＥＮ）と、クロック信号（ＣＬＫ）とが入力される。ＧＣＬＫインスタンス６１，６２からは、ゲーティドクロック信号（ＧＣＬＫ）が出力される。ＧＣＬＫインスタンス６１，６２は、クロックイネーブル信号（ＣＥＮ）が入力（アサート）されている間だけ、クロック信号（ＣＬＫ）をゲーティドクロック信号（ＧＣＬＫ）として出力する。
【００７７】
ＧＣＬＫインスタンス６１，６２は、例えば、ＡＮＤ回路（論理積回路）で構成できる。すなわち、クロックイネーブル信号（ＣＥＮ）とクロック信号（ＣＬＫ）とが入力されるＡＮＤ回路の出力が、ゲーティドクロック信号（ＧＣＬＫ）となる。
【００７８】
ＧＣＬＫ用計測回路追加部１６１は、チップネットリスト１２１内のＧＣＬＫインスタンス情報１２１ａを参照し、ＬＳＩ論理回路６０内のＧＣＬＫインスタンス６１，６２の存在を認識する。次に、ＧＣＬＫ用計測回路追加部１６１は、ＧＣＬＫインスタンス６１，６２のクロックイネーブル信号（ＣＥＮ）が入力される配線に、ＧＣＬＫカウンタ７１，７２を接続することを決定する。そして、ＧＣＬＫ用計測回路追加部１６１は、エミュレーション制御部１７１に対して、ＧＣＬＫカウンタ７１，７２の追加を指示する。
【００７９】
ＲＡＭインスタンス６３，６４には、チップイネーブル信号（ＣＥ）、ライトイネーブル信号（ＷＥ）などが入力される。メモリ用計測回路追加部１６２は、チップネットリスト１２１内のＲＡＭインスタンス情報１２１ｂを参照し、ＬＳＩ論理回路６０内のＲＡＭインスタンス６３，６４の存在を認識する。次に、メモリ用計測回路追加部１６２は、ＲＡＭインスタンス６３，６４のチップイネーブル信号（ＣＥ）が入力される配線に、ＲＡＭカウンタ７３，７５を接続することを決定する。また、メモリ用計測回路追加部１６２は、ＲＡＭインスタンス６３，６４のライトイネーブル信号（ＷＥ）が入力される配線に、ＲＡＭカウンタ７４，７６を接続することを決定する。そして、メモリ用計測回路追加部１６２は、エミュレーション制御部１７１に対して、ＲＡＭカウンタ７３〜７６の追加を指示する。
【００８０】
追加されるＧＣＬＫカウンタ７１，７２及びＲＡＭカウンタ７３〜７６には、基本クロック信号（ＭＣＬＫ）が入力される。基本クロック信号（ＭＣＬＫ）は、ＬＳＩの回路内の最も速いクロック信号である。すなわち、ＧＣＬＫインスタンス６１，６２などの各種回路に入力されるクロック信号（ＣＬＫ）は、基本クロック信号（ＭＣＬＫ）以下の周波数の信号である。
【００８１】
このような計測回路群７０を追加することで、ＧＣＬＫカウンタ７１，７２によって、ゲーティドクロックバッファのイネーブル期間が計測される。具体的には、ＧＣＬＫカウンタ７１，７２において、ゲーティドクロックバッファに入力されるクロックイネーブル信号（ＣＥＮ）がアサートされている期間に発生した基本クロック数がカウントされる。
【００８２】
また、ＲＡＭカウンタ７３〜７６によって、ＲＡＭのチップイネーブル信号（ＣＥ）とライトイネーブル信号（ＷＥ）とがアサートされている期間が計測される。具体的には、ＲＡＭカウンタ７３〜７６において、ＲＡＭのチップイネーブル信号（ＣＥ）とライトイネーブル信号（ＷＥ）とのそれぞれがアサートされている期間に発生した基本クロック数がカウントされる。
【００８３】
次に、ＦＦ用の計測回路の追加処理について説明する。ＦＦ用の計測回路を追加する際には、遷移確率ライブラリ記憶部１３１に予め格納された遷移確率ライブラリが参照される。遷移確率ライブラリには、セルの入力が変化した場合に、出力が変化する確率（遷移確率）が設定されている。ここで、遷移確率とは、真理値表から入力信号が１つだけ変化するときの信号の全状態遷移における出力信号の変化を伴う状態遷移の割合である。
【００８４】
図７は、遷移確率の算出方法を示す図である。この図７には、セル８０がＮＡＮＤ回路（否定論理積回路）の場合の例を示している。ＮＡＮＤ回路の２つの入力端子をそれぞれＩＮ１端子、ＩＮ２端子とする。また、ＮＡＮＤ回路からの出力端子をＯＵＴ端子とする。
【００８５】
そして、ＮＡＮＤ回路の真理値表８１を用いることで、２つの入力信号の状態（オン「１」、オフ「０」）に応じた出力信号の状態が分かる。真理値表８１では、２つの入力信号の状態は４パターン存在する。
【００８６】
そこで、４つの状態において、ＩＮ１端子への入力信号を変化させたときのＯＵＴ端子の状態遷移と、ＩＮ２端子への入力信号を変化させたときのＯＵＴ端子の状態遷移とを考える。図７には、ＩＮ１端子の変化に応じたＯＵＴ端子の状態遷移８２とＩＮ２端子の変化に応じたＯＵＴ端子の状態遷移８３とが示されている。
【００８７】
４つの状態パターンのうち、ＩＮ１端子の信号の変化に応じてＯＵＴ端子の信号状態が遷移するのは２パターンである。すると、ＩＮ１端子の遷移確率は０．５（２／４）となる。
【００８８】
また、４つの状態パターンのうち、ＩＮ２端子の信号の変化に応じてＯＵＴ端子の信号状態が遷移するのは２パターンである。すると、ＩＮ２端子の遷移確率は０．５（２／４）となる。
【００８９】
このように、各セルの真理値表に基づいて、セルごとの遷移確率が算出される。入力端子が複数存在するセルに対しては、入力端子ごとの遷移確率が算出される。このようにして算出された遷移確率が、遷移確率ライブラリとして遷移確率ライブラリ記憶部１３１に格納される。
【００９０】
図８は、遷移確率ライブラリのデータ構造例を示す図である。遷移確率ライブラリ１３１ａには、セル名と遷移確率の欄が設けられている。セル名の欄には、セルの名称が設定されている。遷移確率の欄には、対応するセルの入力端子ごとの遷移確率が設定されている。
【００９１】
このような遷移確率ライブラリ１３１ａに基づいて、全ネット平均動作率算出部１６３が、組合せ回路における確率伝播による全ネット平均動作率を算出する。確率伝播による全ネット平均動作率算出処理は、以下のようにして行われる。
【００９２】
図９は、組合せ回路の例を示す図である。図９に示した組合せ回路は、２つのＦＦ９１，９２と、他の２つのＦＦ９３，９４との間に、６つのセル２１１〜２１６で構成されている。なお、図９に示した回路中、左から右に信号が伝わるものとする。すなわち、各ＦＦ９１〜９４やセル２１１〜２１６は、左側に入力端子、右側に出力端子がある。
【００９３】
ＦＦ９１の出力端子は、セル２１１の入力端子に配線で接続されている。セル２１１の出力端子は、セル２１２の入力端子に配線で接続されている。セル２１２の出力端子は、セル２１３の上側の入力端子に配線で接続されている。ＦＦ９２の出力端子は、セル２１５の入力端子に配線で接続されている。セル２１５の出力端子は、セル２１３の下側の入力端子に配線で接続されている。セル２１３の出力端子は、セル２１４の入力端子とセル２１６の入力端子とに配線で接続されている。セル２１４の出力端子は、ＦＦ９３の入力端子に配線で接続されている。セル２１６の出力端子は、ＦＦ９４の入力端子に配線で接続されている。
【００９４】
ここで、ＦＦ９１の名称を「ＦＦ１」、ＦＦ９２の名称を「ＦＦ２」、ＦＦ９３の名称を「ＦＦ３」、ＦＦ９４の名称を「ＦＦ４」とする。また、セル２１１の名称を「セル１」、セル２１２の名称を「セル２」、セル２１３の名称を「セル３」、セル２１４の名称を「セル４」、セル２１５の名称を「セル５」、セル２１６の名称を「セル６」とする。
【００９５】
また、ＦＦ９１の出力信号の動作率を「Ｄｉｎ１」、ＦＦ９２の出力信号の動作率を「Ｄｉｎ２」、セル２１１の遷移確率を「Ｐ１」、セル２１２の遷移確率を「Ｐ２」、セル２１３の上側の入力端子に応じた遷移確率を「Ｐ３Ａ」、セル２１３の下側の入力端子に応じた遷移確率を「Ｐ３Ｂ」、セル２１４の遷移確率を「Ｐ４」、セル２１５の遷移確率を「Ｐ５」、セル２１６の遷移確率を「Ｐ６」とする。
【００９６】
このような組合せ回路において、入力側のＦＦ９１，９２の出力信号の動作率と、各セル２１１〜２１６の遷移確率とから、各配線上の信号の動作率を算出することができる。ここで、ＦＦ９１から出力される信号の動作率を「Ｄｉｎ１」、ＦＦ９２から出力される信号の動作率を「Ｄｉｎ２」、セル２１１から出力される信号の動作率を「Ｄ１」、セル２１２から出力される信号の動作率を「Ｄ２」、セル２１３から出力される信号の動作率を「Ｄ３」、セル２１５から出力される信号の動作率を「Ｄ５」、セル２１４から出力される信号の動作率を「Ｄｏｔ１」、セル２１６から出力される信号の動作率を「Ｄｏｔ２」とする。この場合、各動作率は、以下の式で表される。
Ｄ１＝Ｄｉｎ１×Ｐ１  ・・・（５）
Ｄ２＝Ｄｉｎ１×Ｐ１×Ｐ２  ・・・（６）
Ｄ３＝Ｄｉｎ１×Ｐ１×Ｐ２×Ｐ３Ａ＋Ｄｉｎ２×Ｐ５×Ｐ３Ｂ  ・・・（７）
Ｄ５＝Ｄｉｎ２×Ｐ５  ・・・（８）
Ｄｏｔ１＝（Ｄｉｎ１×Ｐ１×Ｐ２×Ｐ３Ａ＋Ｄｉｎ２×Ｐ５×Ｐ３Ｂ）×Ｐ４
・・・（９）
Ｄｏｔ２＝（Ｄｉｎ１×Ｐ１×Ｐ２×Ｐ３Ａ＋Ｄｉｎ２×Ｐ５×Ｐ３Ｂ）×Ｐ６
・・・（１０）
この式（５）〜式（１０）において未定の値は、「Ｄｉｎ１」と「Ｄｉｎ２」とである。すると、「Ｄｉｎ１」と「Ｄｉｎ２」とが決定されれば、全ての動作率が決定される。そして、これらの動作率の平均を計算することで、ネット平均動作率を出すことができる。信号の入力側のＦＦと組合せ回路内のセルとの合計（モジュール数）をＮ（Ｎは自然数）とすると、ネット平均動作率は以下の式で表される。
ネット平均動作率＝
（Ｄｉｎ１＋Ｄｉｎ２＋Ｄ１＋Ｄ２＋Ｄ３＋Ｄ５＋Ｄｏｔ１＋Ｄｏｔ２）／Ｎ
・・・（１１）
これは、組合せ回路内のセルの出力信号の動作率の平均を示している。すなわち、「Ｄｉｎ１」、「Ｄｉｎ２」は、組合せ回路内のセルに入力される信号の動作率であり、「Ｄ１」、「Ｄ２」、「Ｄ３」、「Ｄ５」、「Ｄｏｔ１」、「Ｄｏｔ２」は、組合せ回路内のセルから出力される信号の動作率である。信号の入力側のＦＦと組合せ回路内のセルとの合計「Ｎ」だけ動作率があるため、動作率の合計値をＮで除算することで、ネット平均動作率が求められる。
【００９７】
例えば、名称が「ＦＦ１」のＦＦ９１の動作率「Ｄｉｎ１」が「０．６」であり、名称が「ＦＦ２」のＦＦ９２の動作率「Ｄｉｎ２」も「０．６」であるものと仮定する。なお、動作率が「０．６」であるとは、１０周期に６回の割合で信号の遷移が発生することを意味する。また、各セルの動作率「Ｐ１，Ｐ２，Ｐ３Ａ，Ｐ３Ｂ，Ｐ４，Ｐ５，Ｐ６」は、全て「０．３」であるものと仮定する。
【００９８】
すると、「Ｄ１＝０．６×０．３＝０．１８」、「Ｄ２＝０．６×０．３×０．３＝０．０５４」、「Ｄ３＝０．６×０．３×０．３×０．３＋０．６×０．３×０．３＝０．０７０２」、「Ｄ５＝０．６×０．３＝０．１８」、「Ｄｏｔ１＝（０．６×０．３×０．３×０．３＋０．６×０．３×０．３）×０．３＝０．０２１０６」、「Ｄｏｔ２＝（０．６×０．３×０．３×０．３＋０．６×０．３×０．３）×０．３＝０．０２１０６」となる。
【００９９】
その結果、ネット平均動作率は「（０．６＋０．６＋０．１８＋０．０５４＋０．０７０２＋０．１８＋０．０２１０６＋０．０２１０６）／８＝０．２１５７９」となる。
上記の例は、１つの組合せ回路についてのネット平均動作率を求めている。同様の計算を論理回路中の全ての組合せ回路に対して実行し平均値を計算することで、全ネット平均動作率が算出される。
【０１００】
このようにして、組合せ回路の全ネット平均動作率をＦＦの動作率から求めることができる。そして、多数のＦＦのうち、ＦＦの動作率が全ネット平均動作率に与える影響度（電力影響度）を判定し、論理回路中の電力影響度が高いＦＦに対して計測回路を追加する。
【０１０１】
図１０は、ＦＦ用計測回路追加処理の手順を示すフローチャートである。この処理は、消費電力の算出を指示する操作入力が行われたときに実行される。以下、図１０に示す処理をステップ番号に沿って説明する。
【０１０２】
［ステップＳ１１］全ネット平均動作率算出部１６３は、全てのＦＦに対して同一の動作率を設定し、全ネット平均動作率（論理回路内の全てのＦＦおよびセルの動作率の平均）を算出する。全ネット平均動作率算出部１６３は、算出された全ネット平均動作率を全ネット平均動作率基準値としてメモリに格納する。
【０１０３】
［ステップＳ１２］全ネット平均動作率算出部１６３は、未選択のＦＦを１つ選択する。
［ステップＳ１３］全ネット平均動作率算出部１６３は、選択したＦＦの動作率を変更し、全ネット平均動作率を算出する。全ネット平均動作率算出部１６３は、算出した全ネット平均動作率を、選択したＦＦの識別情報に対応付けてメモリに格納する。
【０１０４】
［ステップＳ１４］全ネット平均動作率算出部１６３は、全てのＦＦを選択したか否かを判断する。未選択のＦＦがあれば、処理がステップＳ１２に進められる。全てのＦＦの選択が終了していれば、処理がステップＳ１５に進められる。
【０１０５】
［ステップＳ１５］電力影響度算出部１６４は、各ＦＦの電力影響度を算出する。具体的には、電力影響度算出部１６４は、全ネット平均動作率基準値「Pnet1」と各ＦＦの全ネット平均動作率「Pnet2」とをメモリから取得する。次に、電力影響度算出部１６４は、全ネット平均動作率基準値「Pnet1」と全ネット平均動作率「Pnet2」との差分（｜Pnet1−Pnet2｜）を計算する。そして、電力影響度算出部１６４は、算出した差分を電力影響度として、電力影響度記憶部１３２に格納する。
【０１０６】
［ステップＳ１６］電力影響度算出部１６４は、各ＦＦの電力影響度をレベル分けして、各レベルに属するＦＦの数（ＦＦ出力ネット数）を集計する。
［ステップＳ１７］電力影響度算出部１６４は、電力影響度の閾値を決定する。具体的には、電力影響度算出部１６４に、ＦＦに最低限追加する計測回路数（ＦＦ用必須計測回路数）が予め設定されている。電力影響度算出部１６４は、電力影響度が高いレベルから順に選択し、選択したレベルに含まれるＦＦの数を加算していく。電力影響度算出部１６４は、加算した数がＦＦ用必須計測回路数を超えた場合、そのとき選択されているレベルより高く、それ以前に選択されたレベルより低い電力影響度を閾値に決定する。決定された閾値は、電力影響度記憶部１３２に格納される。
【０１０７】
［ステップＳ１８］ＦＦ用計測回路追加部１６５は、電力影響度記憶部１３２を参照し、電力影響度が閾値以上であるＦＦに対して計測回路を追加する。具体的には、ＦＦ用計測回路追加部１６５は、電力影響度が閾値以上であるＦＦを指定して、ＦＦ用の計測回路の追加指示をエミュレーション制御部１７１に通知する。ＦＦ用の計測回路の構造を示す論理回路は、全体テストベンチ記憶部１１１に予め記憶されており、ＦＦ用の計測回路の追加指示を受け取ったエミュレーション制御部１７１は、論理回路内の指定されたＦＦに対して計測回路を追加する。
【０１０８】
［ステップＳ１９］ＦＦ用計測回路追加部１６５は、電力影響度記憶部１３２を参照し、電力影響度が閾値未満であるＦＦから所定数のＦＦをランダムサンプリング（無作為抽出）し、サンプリングしたＦＦに計測回路を追加する。具体的には、ＦＦ用計測回路追加部１６５は、サンプリングしたＦＦを指定して、ＦＦ用の計測回路の追加指示をエミュレーション制御部１７１に通知する。ＦＦ用の計測回路の追加指示を受け取ったエミュレーション制御部１７１は、論理回路内の指定されたＦＦに対して計測回路を追加する。
【０１０９】
このように、まず全てのＦＦに対して同一（例えば０．５）の動作率を設定した場合の全ネット平均動作率基準値「Pnet1」と、全てのＦＦの中から１個のＦＦを選択して動作率を変更（例えば０．１）した場合の全ネット平均動作率「Pnet2」との差分（｜Pnet1−Pnet2｜）を電力影響度とする。算出された電力影響度は、電力影響度記憶部１３２に格納される。
【０１１０】
図１１は、電力影響度記憶部のデータ構造例を示す図である。電力影響度記憶部１３２は、電力影響度テーブル１３２ａと閾値１３２ｂとを記憶している。電力影響度テーブル１３２ａは、インスタンス名と電力影響度との欄が設けられている。インスタンス名の欄には、論理回路に含まれるＦＦの識別番号が設定される。電力影響度の欄には、対応するＦＦの電力影響度が設定される。
【０１１１】
図１１に示したＦＦの電力影響度が、閾値を決定するためにレベル分けされる。このようなレベル分けは、ヒストグラムで表すことができる。
図１２は、電力影響度によるレベルごとのＦＦ数の例を示すヒストグラムである。図１２では、横軸に電力影響度、縦軸にＦＦ数を示している。電力影響度が所定の数値幅で区切られ、各数値幅を個々のレベルとする。図１２の例では、レベル１（Ｌｖ１）からレベル８（Ｌｖ８）までの８つのレベルが設けられている。対応する電力影響度の数値幅が高い値であるほど、レベルも高くなる。電力影響度算出部１６４は、各レベルの数値幅内の電力影響度であるＦＦを、レベルごとに計数する。図１２では、各レベルに属するＦＦの数が棒グラフの高さで示されている。
【０１１２】
このようにＦＦを電力影響度で分類した後、電力影響度算出部１６４はレベル８を選択し、レベル８に属するＦＦ数がＦＦ用必須計測回路数を超えているか否かを判断する。超えていなければ、電力影響度算出部１６４はレベル７（Ｌｖ７）を選択し、レベル７とレベル８のそれぞれに属するＦＦ数を合計し、合計値がＦＦ用必須計測回路数を超えているか否かを判断する。超えていなければ、順次、１段階ずつ低いレベルを選択して、ＦＦ数を加算していく。そして、ＦＦ数の合計がＦＦ用必須計測回路数を超えた場合、電力影響度算出部１６４は、現在選択しているレベルとその前に選択したレベルとの境界値を閾値とする。図１２の例では、レベル４（Ｌｖ４）を選択したときに、合計値がＦＦ用必須計測回路数を超えている。その結果、レベル４とレベル５（Ｌｖ５）との境界値である電力影響度が、閾値に決定されている。
【０１１３】
閾値が決定されると、閾値より電力影響度が大きいＦＦに対して計測回路を追加することが決定される。すなわち、予め与えられたＦＦ数（ＦＦ用必須計測回路数）に対して電力影響度が大きい順に計測回路を追加するＦＦが選択される。選択されたＦＦに対してデータ変化数を計測するための計測回路が追加される。また、電力影響度の低いＦＦについては、そのＦＦの中から所定数のＦＦに対して計測回路が追加される。
【０１１４】
図１３は、ＦＦ用の計測回路の例を示す図である。計測回路の追加対象とされたＦＦ２２０の出力端子側に、計測回路２３０が接続される。計測回路２３０は、ＦＦ２３１、ＸＯＲ回路（排他的論理和回路）２３２、およびカウンタ２３３で構成される。
【０１１５】
ＦＦ２２０の出力端子は、ＦＦ２３１の入力端子とＸＯＲ回路２３２の下側の入力端子とに接続されている。ＦＦ２３１は、ディレイフリップフロップであり、信号を遅延させる働きをする。ＦＦ２３１の出力端子は、ＸＯＲ回路２３２の上側の入力端子に接続されている。ＸＯＲ回路２３２の出力端子は、カウンタ２３３の入力端子に接続されている。カウンタ２３３は、入力されたパルス信号の数を計数する。
【０１１６】
このような計測回路２３０により、ＦＦ２２０の出力信号が変化した回数を計数することができる。すなわち、ＦＦ２２０の出力がオフ（ローレベル）からオン（ハイレベル）に変化すると、ＸＯＲ回路２３２の下側の入力端子への入力信号がオフからオンに切り替わる。その後、ＦＦ２３１で遅延された信号がＸＯＲ回路２３２の上側の入力端子に入力され、オフからオンに切り替わる。ＸＯＲ回路２３２は、下側の入力端子への入力がオンに切り替わり、その後上側の入力端子への入力がオンに切り替わるまでの間、出力信号をオンにする。その出力信号がパルス信号としてカウンタ２３３でカウントされる。
【０１１７】
また、ＦＦ２２０の出力がオンからオフに変化すると、ＸＯＲ回路２３２の下側の入力端子への入力信号がオンからオフに切り替わる。その後、ＦＦ２３１で遅延された信号がＸＯＲ回路２３２の上側の入力端子に入力され、オンからオフに切り替わる。ＸＯＲ回路２３２は、下側の入力端子への入力がオフに切り替わり、その後上側の入力端子への入力がオフに切り替わるまでの間、出力信号をオンにする。その出力信号がパルス信号としてカウンタ２３３でカウントされる。
【０１１８】
このようにして、計測回路を追加するモジュール（クロックバッファ部、メモリ、ＦＦ）が決定されると、エミュレーション制御部１７１によってＦＰＧＡ３０を用いたエミュレーションが行われる。すなわち、エミュレーション制御部１７１は、チップネットリスト１２１で示されるＬＳＩの論理回路に対して、計測回路を追加すべきであると指定されたモジュールに計測回路を追加した電力計測用論理回路を生成する。そして、エミュレーション制御部１７１は、全体テストベンチ記憶部１１１に示されている処理のエミュレーションを実行する。エミュレーション制御部１７１は、エミュレーション実行中に、定期的（例えば、基準クロック信号の１万クロックごと）に計測回路内のデータをダンプする。ダンプしたデータは、ＧＣＬＫ計測値記憶部１４１、メモリアクセス計測値記憶部１４２、およびＦＦ出力変化計測値記憶部１４３に格納される。
【０１１９】
図１４は、ＧＣＬＫ計測値記憶部のデータ構造例を示す図である。ＧＣＬＫ計測値記憶部１４１には、ＧＣＬＫ計測値テーブル１４１ａが記憶されている。ＧＣＬＫ計測値テーブル１４１ａには、測定時間帯とインスタンス名との欄が設けられている。
【０１２０】
測定時間帯の欄には、エミュレーション上での時間をデータのダンプタイミングで分割することで生成される時間帯（測定時間帯）の識別番号が設定される。測定時間帯には、エミュレーションの時刻の進行順に沿って、０から始まる昇順の番号が付与される。
【０１２１】
インスタンス名の欄には、クロックバッファ部の識別番号が示されている。クロックバッファ部の識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値（計測値）が設定される。この計測値は、ゲーティドクロック信号（ＧＣＬＫ）のクロックイネーブル信号（ＣＥＮ）がアサートされた時間を、基準クロック信号のクロック数で表したものである。従って、この計測値を基準クロック信号のクロック数で除算すれば、クロックバッファ部の動作率となる。
【０１２２】
図１５は、メモリアクセス計測値記憶部のデータ構造例を示す図である。メモリアクセス計測値記憶部１４２には、メモリアクセス計測値テーブル１４２ａが記憶されている。メモリアクセス計測値テーブル１４２ａには、測定時間帯とインスタンス名との欄が設けられている。
【０１２３】
測定時間帯の欄には、測定時間帯の識別番号が示されている。インスタンス名の欄には、ＲＡＭの識別番号が示されている。ＲＡＭの識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値（計測値）が、チップネーブル信号（ＣＥ）とライトイネーブル信号（ＷＥ）とに分けて設定される。この計測値は、チップネーブル信号（ＣＥ）とライトイネーブル信号（ＷＥ）とのそれぞれがアサートされた時間を、基準クロック信号のクロック数で表したものである。従って、チップネーブル信号（ＣＥ）の計測値を基準クロック信号のクロック数で除算すれば、ＲＡＭがライトまたはリード動作を行う動作率となる。同様に、ライトネーブル信号（ＷＥ）の計測値を基準クロック信号のクロック数で除算すれば、ＲＡＭがライト動作を行う動作率となる。なお、ＲＡＭがライトまたはリード動作を行う動作率からＲＡＭがライト動作を行う動作率を減算すれば、ＲＡＭがリード動作を行う動作率となる。
【０１２４】
図１６は、ＦＦ出力変化計測値記憶部のデータ構造例を示す図である。ＦＦ出力変化計測値記憶部１４３には、ＦＦ出力変化計測値テーブル１４３ａが記憶されている。ＦＦ出力変化計測値テーブル１４３ａには、測定時間帯とインスタンス名との欄が設けられている。
【０１２５】
測定時間帯の欄には、測定時間帯の識別番号が示されている。インスタンス名の欄には、ＦＦの識別番号が示されている。ＦＦの識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値が設定される。この数値は、ＦＦの出力信号がオンからオフまたはオフからオンに変化した回数を示している。
【０１２６】
ＦＦ出力変化計測値に基づいて、組合せ回路動作率算出部１７２によって、組合せ回路動作率が算出される。
図１７は、組合せ回路動作率算出処理の手順を示すフローチャートである。この処理は、エミュレーション制御部１７１によるエミュレーションが終了したときに実行される。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１２７】
［ステップＳ２１］組合せ回路動作率算出部１７２は、ＦＦ出力変化計測値テーブル１４３ａを参照し、測定時間帯を１つ選択する。
［ステップＳ２２］組合せ回路動作率算出部１７２は、選択中の測定時間帯における処理（ステップＳ２２〜Ｓ２７の処理）において未選択のＦＦを１つ選択する。
【０１２８】
［ステップＳ２３］組合せ回路動作率算出部１７２は、選択したＦＦが計測回路を追加したＦＦか否かを判断する。具体的には、組合せ回路動作率算出部１７２は、ＦＦ出力変化計測値記憶部１４３内のＦＦ出力変化計測値テーブル１４３ａを参照し、選択したＦＦについて出力結果の計測値が登録されていれば、そのＦＦには計測回路が追加されていることが分かる。計測回路を追加したＦＦであれば、処理がステップＳ２４に進められる。計測回路を追加していないＦＦであれば、処理がステップＳ２５に進められる。
【０１２９】
［ステップＳ２４］組合せ回路動作率算出部１７２は、選択した測定時間帯の選択したＦＦの計測値をＦＦ出力変化計測値テーブル１４３ａから取得する。次に、組合せ回路動作率算出部１７２は、取得した計測値を、測定時間帯における基準クロック信号のクロック数で除算し、単位時間当たりの信号の変化数（動作率）とする。そして、組合せ回路動作率算出部１７２は、算出した動作率を、選択したＦＦの動作率としてメモリに記憶する。その後、処理がステップＳ２６に進められる。
【０１３０】
［ステップＳ２５］組合せ回路動作率算出部１７２は、電力影響度記憶部１３２を参照し、電力影響度が閾値未満のＦＦを認識する。なお、閾値は、電力影響度記憶部１３２から取得される。次に、組合せ回路動作率算出部１７２は、電力影響度が閾値未満のＦＦの選択した測定時間帯の計測値を、ＦＦ出力変化計測値テーブル１４３ａから取得する。さらに、組合せ回路動作率算出部１７２は、取得した計測値の平均値を、測定時間帯における基準クロック信号のクロック数で除算し、単位時間当たりの信号の変化数（動作率）とする。そして、組合せ回路動作率算出部１７２は、算出した動作率を、選択したＦＦの動作率としてメモリに記憶する。
【０１３１】
［ステップＳ２６］組合せ回路動作率算出部１７２は、全てのＦＦに動作率を設定したか否かを判断する。全てのＦＦへの動作率の設定が完了していれば、処理がステップＳ２７に進められる。動作率が未設定のＦＦがあれば、処理がステップＳ２２に進められる。
【０１３２】
［ステップＳ２７］組合せ回路動作率算出部１７２は、組合せ回路それぞれについて、確率伝播による全ネット平均動作率を算出する。具体的には、組合せ回路動作率算出部１７２は、組合せ回路を１つずつ選択し、選択した組合せ回路の入力側のＦＦに設定された動作率に基づいて、その組合せ回路内での確率伝播を計算する。この計算により、組合せ回路内の各セルの出力信号の動作率と、組合せ回路の出力側に設けられたＦＦへ出力する信号の動作率とが算出される。組合せ回路動作率算出部１７２は、算出した動作率の平均値を計算し、計算対象となっている組合せ回路の組合せ回路平均動作率とする。組合せ回路動作率算出部１７２は、算出した組合せ回路の平均動作率を、組合せ回路動作率記憶部１４４に格納する。
【０１３３】
［ステップＳ２８］組合せ回路動作率算出部１７２は、全ての測定時間帯を選択し、組合せ回路の平均動作率を算出したか否かを判断する。未選択の測定時間帯があれば、処理がステップＳ２１に進められる。全ての測定時間帯が選択され、組合せ回路の平均動作率が算出されていれば、処理が終了する。
【０１３４】
図１８は、組合せ回路動作率記憶部のデータ構造例を示す図である。組合せ回路動作率記憶部１４４には、組合せ回路動作率テーブル１４４ａが記憶されている。組合せ回路動作率テーブル１４４ａには、測定時間帯とネット名との欄が設けられている。
【０１３５】
測定時間帯の欄には、測定時間帯の識別番号が示されている。ネット名の欄には、組合せ回路の識別番号が示されている。組合せ回路の識別番号が示された列には、対応する測定時間帯における組合せ回路の平均動作率が設定される。組合せ回路の平均動作率は、対応する組合せ回路内の各セルの出力信号の動作率と、その組合せ回路の出力側に接続されたＦＦの動作率として使用される。
【０１３６】
以上のようにして、クロックバッファ部、メモリ、組合せ回路、およびＦＦの動作率が測定される。その後、平均動作率算出部１７３によって、各モジュール（クロックバッファ部、メモリ、組合せ回路、およびＦＦ）の電力算出時間帯における平均動作率が算出される。電力算出時間帯は、測定時間帯の整数倍の時間幅である。すなわち、測定時間帯ごとの各モジュールの動作率の平均値が、電力算出時間帯の平均動作率となる。算出された平均動作率は、モジュール別平均動作率記憶部１４５に格納される。
【０１３７】
図１９は、モジュール別平均動作率記憶部のデータ構造例を示す図である。モジュール別平均動作率記憶部１４５には、モジュール別平均動作率テーブル１４５ａが記憶されている。モジュール別平均動作率テーブル１４５ａには、電力算出時間帯とインスタンス名／ネット名との欄が設けられている。
【０１３８】
電力算出時間帯の欄には、エミュレーション上での時間を、電力算出対象となる時間幅で分割することにより生成される時間帯（電力算出時間帯）の識別番号が設定される。電力算出時間帯には、エミュレーションの時刻の進行順に沿って、０から始まる昇順の番号が付与される。
【０１３９】
インスタンス名／ネット名の欄には、各モジュール（クロックバッファ部、ＲＡＭ、および組合せ回路）の識別番号が示されている。各モジュールの識別番号が示された列には、対応する電力算出時間帯の平均動作率が設定される。なお、ＲＡＭについては、チップイネーブル信号（ＣＥ）に基づいて算出された動作率（データのライトまたはリードのいずれかが実行される割合）と、ライトイネーブル信号（ＷＥ）に基づいて算出された動作率（データのライトが実行される割合）とに分けて、平均動作率が設定される。
【０１４０】
消費電力算出部１７４は、モジュール別平均動作率テーブル１４５ａと、算出済変数記憶部１５０内のデータとを参照して、電力算出時間帯ごとの消費電力値を算出する。
以上のように、電力影響度の低いＦＦのうち一部のＦＦに対してのみ計測回路を追加してエミュレーションを行うようにしたため、エミュレーション中にダンプすべきデータの量が少なくなる。その結果、エミュレーションを短時間で実施することができる。
【０１４１】
また、電力影響度の高いＦＦと、電力影響度の低いＦＦのうちの一部のＦＦとに計測回路を追加できる規模のＦＰＧＡがあればエミュレーションが可能となる。すなわち、大規模のＦＰＧＡが無くともエミュレーションを実施できる。
【０１４２】
なお、全てのＦＦのうち、計測回路を追加しないのは電力影響度が閾値未満のＦＦのみである。電力影響度が小さいＦＦであれば、そのＦＦの出力信号の動作率に誤差が含まれていたとしても、全体の消費電力に与える影響は少なくて済む。従って、一部のＦＦに対して計測回路を追加しないことによる消費電力の算出精度の低下を少なく抑えることができる。
【０１４３】
また、電力影響度が閾値より低いＦＦと、電力影響度が閾値より高いＦＦとでは、そのＦＦの使われ方が異なっているものと考えられる。例えば、ＲＡＭの入力端子近くに配置されたＦＦは、そのＦＦの出力信号の遷移の影響がＲＡＭで止まる。そのため、電力影響度が閾値未満になるものと想定できる。また、複雑なデータ処理（多数の論理演算回路の組合せで実行される）の実行命令入力部分に使用されるＦＦであれば、電力影響度が閾値以上になるものと想定できる。このように、使われ方が異なるＦＦであれば、出力信号の動作率も異なるものと思われる。例えば、ＲＡＭの入力端子近くに配置されたＦＦであれば、大量のデータ入力を伴う処理（ビデオカメラによる画像撮影など）の最中は、出力信号の動作率が高くなる。一方、大量のデータ入力を伴う処理の開始命令入力部分に配置されたＦＦであれば、その間の出力信号の状態遷移は少ない。
【０１４４】
このように、ＬＳＩの機能によっては、ＦＦの電力影響度の大小と、ＦＦの出力信号の動作率との間に相関関係が存在する。このような相関関係があるとき、計測回路を追加していないＦＦ（電力影響度が閾値より低い）の出力信号の動作率を推定する場合、論理回路内での使われ方が近いＦＦ（電力影響度が閾値より低い）の測定結果を用いることで誤差を少なくできる。従って、電力影響度が低いＦＦの出力信号の動作率（測定によって求められた値）の平均を、電力影響度が低くかつ計測回路を追加していないＦＦの出力信号の動作率としたことで、計測回路を追加していないＦＦの出力信号の動作率を少ない誤差で算出できる。計測回路を追加していないＦＦの出力信号の動作率が正確になれば、最終的に算出される消費電力値についても精度が向上する。換言すれば、全てのＦＦに対して計測回路を追加した場合と比べたときの消費電力の算出精度の低下を少なく抑えることができる。
【０１４５】
ところで、上記実施の形態では、ＦＦの電力影響度の大小と、ＦＦの出力信号の動作率との間の相関関係が存在する場合を想定している。しかし、ＦＦの電力影響度の大小と、ＦＦの出力信号の動作率との間の相関関係が少ないＬＳＩも有り得る。そのようなＬＳＩの消費電力の見積もりにおいては、電力影響度が高いＦＦの出力信号の動作率（測定によって求められた値）の平均を、電力影響度が低くかつ計測回路を追加していないＦＦの出力信号の動作率としてもよい。その場合、図１０のステップＳ１９の処理は行わなくてよい。また、図１７のステップＳ２５の処理では、電力影響度が閾値以上のＦＦの計測値から動作率を算出することとなる。
【０１４６】
このように、電力影響度が閾値未満のＦＦには計測回路を追加しない場合、その分、閾値を小さな値にすることができる。すなわち、ＦＦに追加可能な最大数の計測回路を、電力影響度の高いＦＦから順に追加することができる。ＦＦの電力影響度の大小と、ＦＦの出力信号の動作率との間の相関関係が存在しないのであれば、電力影響度の高いＦＦから順に計測回路を追加し、できるだけ多くのＦＦに計測回路を追加して測定を行うことで、消費電力の算出精度を向上させることができる。
【０１４７】
また、上記実施の形態では、論理回路を用いたエミュレーションによって、ＬＳＩの消費電力を見積もっているが、エミュレーションに代えてシミュレーションを行うこともできる。シミュレーションであっても、電力影響度が少ないＦＦについて計測回路の追加を行わないことで、処理の高速化を図ることができる。なお、シミュレーションを行う場合、図２に示したＦＰＧＡ３０やインタフェース変換ユニット２０は不要である。また、図４に示したエミュレーション制御部１７１に代えて、論理回路のシミュレータが設けられる。その他の構成は同様である。
【０１４８】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical）などがある。
【０１４９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１５１】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１５２】
（付記１）  電子回路の消費電力を見積もるための消費電力見積もり方法であって、
コンピュータが、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
ことを特徴とする消費電力見積もり方法。
【０１５３】
（付記２）  電力影響度を計算する際には、全ての前記フリップフロップに対して同一の動作率を設定して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第１の平均動作率とし、前記論理回路内の前記フリップフロップを１つずつ選択し、選択した前記フリップフロップの出力信号の動作率のみを変更して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第２の平均動作率とし、前記第１の平均動作率と前記第２の平均動作率との差を、選択した前記フリップフロップの電力影響度とする付記１記載の消費電力見積もり方法。
【０１５４】
（付記３）  前記模擬動作用論理回路を生成する際には、電力影響度が高い方から所定数の前記フリップフロップを選択し、選択した前記フリップフロップそれぞれの電力影響度のうちの最も低い値を閾値とし、電力影響度が閾値以上の前記フリップフロップと、電力影響度が閾値未満の前記フリップフロップから無作為抽出した一部の前記フリップフロップとに対して前記変化数計測回路を追加し、
前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、電力影響度が閾値未満の前記フリップフロップに追加した前記変化数計測回路の計測値から計算する付記１記載の消費電力見積もり方法。
【０１５５】
（付記４）  前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、他の前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップそれぞれに追加された複数の前記変化数計測回路の計測値から計算し、他の前記フリップフロップそれぞれの動作率の平均を前記変化数計測回路が追加されていない前記フリップフロップの出力信号の動作率とする付記１記載の消費電力見積もり方法。
【０１５６】
（付記５）  前記電子回路の模擬動作を実行する際には、再構成可能な回路を使用したエミュレーションを行う付記１記載の消費電力見積もり方法。
（付記６）  前記所定の機能ブロックは、ゲーティドクロックバッファ、ＲＡＭ、およびＲＯＭである付記１記載の消費電力見積もり方法。
【０１５７】
（付記７）  電子回路の消費電力を見積もる消費電力見積もり装置であって、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算する電力影響度算出部と、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成する計測回路追加部と、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納する模擬動作部と、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算する組合せ回路動作率算出部と、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路動作率算出部で算出された前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する消費電力算出部と、
を有する消費電力見積もり装置。
【０１５８】
（付記８）  電子回路の消費電力を見積もるための消費電力見積もりプログラムであって、
コンピュータに、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
処理を実行させる消費電力見積もりプログラム。
【図面の簡単な説明】
【０１５９】
【図１】実施の形態の概要を示す図である。
【図２】本実施の形態のエミュレーションシステム構成例を示す図である。
【図３】本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【図４】コンピュータの機能を示すブロック図である。
【図５】論理回路の一部の構成を簡略的に表した図である。
【図６】クロックバッファ部とＲＡＭとに対して追加された計測回路の例を示す図である。
【図７】遷移確率の算出方法を示す図である。
【図８】遷移確率ライブラリのデータ構造例を示す図である。
【図９】組合せ回路の例を示す図である。
【図１０】ＦＦ用計測回路追加処理の手順を示すフローチャートである。
【図１１】電力影響度記憶部のデータ構造例を示す図である。
【図１２】電力影響度によるレベルごとのＦＦ数の例を示すヒストグラムである。
【図１３】ＦＦ用の計測回路の例を示す図である。
【図１４】ＧＣＬＫ計測値記憶部のデータ構造例を示す図である。
【図１５】メモリアクセス計測値記憶部のデータ構造例を示す図である。
【図１６】ＦＦ出力変化計測値記憶部のデータ構造例を示す図である。
【図１７】組合せ回路動作率算出処理の手順を示すフローチャートである。
【図１８】組合せ回路動作率記憶部のデータ構造例を示す図である。
【図１９】モジュール別平均動作率記憶部のデータ構造例を示す図である。
【符号の説明】
【０１６０】
１  論理回路記憶部
２  遷移確率記憶部
３  電力影響度算出部
４  計測回路追加部
５  模擬動作部
６  計測結果記憶部
７  組合せ回路動作率算出部
８  消費電力算出部
【図１】
0004985466.tif 000002
【図２】
0004985466.tif 000003
【図３】
0004985466.tif 000004
【図４】
0004985466.tif 000005
【図５】
0004985466.tif 000006
【図６】
0004985466.tif 000007
【図７】
0004985466.tif 000008
【図８】
0004985466.tif 000009
【図９】
0004985466.tif 000010
【図１０】
0004985466.tif 000011
【図１１】
0004985466.tif 000012
【図１２】
0004985466.tif 000013
【図１３】
0004985466.tif 000014
【図１４】
0004985466.tif 000015
【図１５】
0004985466.tif 000016
【図１６】
0004985466.tif 000017
【図１７】
0004985466.tif 000018
【図１８】
0004985466.tif 000019
【図１９】
0004985466.tif 000020