以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。図1に示す消費電力見積もり装置は、論理回路記憶部1、遷移確率記憶部2、電力影響度算出部3、計測回路追加部4、模擬動作部5、計測結果記憶部6、組合せ回路動作率算出部7、および消費電力算出部8で構成される。
論理回路記憶部1は、LSIの論理回路を記憶する。
遷移確率記憶部2は、論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する。
電力影響度算出部3は、論理回路記憶部1と遷移確率記憶部2を参照し、組合せ回路におけるセル間の確率伝播計算を行う。さらに、電力影響度算出部3は、論理回路に含まれるフリップフロップ(以下、FFという)それぞれの出力信号の動作率が変化することによる論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、FFごとに計算する。
例えば、電力影響度算出部3は、全てのFFに対して同一の動作率を設定して確率伝播計算を行う。次に、電力影響度算出部3は、全てのFFおよび全てのセルの出力信号の動作率の平均を第1の平均動作率とし、論理回路内のFFを1つずつ選択する。電力影響度算出部3は、選択したFFの出力信号の動作率のみを変更して確率伝播計算を行い、全てのFFおよび全てのセルの出力信号の動作率の平均を第2の平均動作率とする。そして、電力影響度算出部3は、第1の平均動作率と第2の平均動作率との差を、選択したFFの電力影響度とする。
計測回路追加部4は、論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路を追加する。また、計測回路追加部4は、論理回路に対して、電力影響度が高い方から所定数のFFの出力信号の変化数をカウントする変化数計測回路を追加する。このように、論理回路に計測回路を追加することで模擬動作用論理回路が生成される。
模擬動作部5は、模擬動作用論理回路を用いてLSIの模擬動作を実行する。模擬動作としては、例えば、FPGAを用いたエミュレーションやソフトウェアによるシミュレーションが行われる。また、模擬動作部5は、模擬動作実行中に、模擬動作用論理回路に追加された複数の時間計測回路および変化数計測回路とから計測値を定期的に取得して計測結果記憶部6に格納する。
組合せ回路動作率算出部7は、計測結果記憶部6を参照し、変化数計測回路が追加されたFFそれぞれの出力信号の動作率を、FF自身に追加された変化数計測回路の出力信号の計測値から計算する。さらに、組合せ回路動作率算出部7は、変化数計測回路が追加されていないFFそれぞれの出力信号の動作率を、他のFFに追加された変化数計測回路の計測値から計算する。そして、組合せ回路動作率算出部7は、遷移確率記憶部2を参照し、全てのFFの出力信号の動作率に基づいて組合せ回路ごとのセル間の確率伝播計算を行い、組合せ回路内のセルの出力信号(組合せ回路内のセルから出力される信号の動作率)の平均動作率を計算する。
消費電力算出部8は、計測結果記憶部6を参照し、機能ブロックそれぞれに追加された時間計測回路の計測値から機能ブロックの動作率を判断する。さらに、消費電力算出部8は、組合せ回路の平均動作率から組合せ回路内のセルの出力信号の動作率および組合せ回路に接続されたFFの出力信号の動作率を判断する。そして、消費電力算出部8は、機能ブロック、組合せ回路、およびFFの出力信号の動作率に基づいて、論理回路を動作させたときの消費電力を算出する。
このような構成の消費電力見積もり装置によれば、論理回路に含まれるFFのうち、電力影響度が高いFFに対してのみ変化数計測回路が追加され、模擬動作の実行によってそのFFの出力信号の変化数がカウントされる。変化数計測回路を追加したFFについては、計測値に基づいて出力信号の動作率が計算される。変化数計測回路を追加していないFFについては、他のFFに追加した変化数計測回路の計測値に基づいて、出力信号の動作率が計算される。これにより、変化数計測回路を追加していないFFも含めて、全てのFFの出力信号の動作率が求まる。そこで、求められた動作率を使用して論理回路の消費電力が算出される。
このように、電力影響度の低いFFに対しては計測回路を追加しないようにしたため、模擬動作実行時に取得すべき測定値のデータ量が少なくなり、処理効率が向上する。しかも、追加する計測回路数が少なくなるため、全てのFFに対して計測回路を追加した場合に比べて、規模の小さなFPGAでエミュレーションを行うことが可能となる。
さらに、電力影響度の低いFFであれば、算出した動作率に誤差があっても、全体の消費電力に与える影響は少なくて済む。従って、一部のFFに対して計測回路を追加しないことによる消費電力の精度低下を最低限に抑制できる。
なお、計測回路追加部4は、FFへの計測回路の追加処理では、電力影響度が低いFFの一部に対して、計測回路を追加することもできる。例えば、電力影響度が高い方から所定数のFFを選択し、選択した各FFの電力影響度のうちの最も低い値を閾値とする。そして、計測回路追加部4は、電力影響度が閾値以上のFFと、電力影響度が閾値未満のFFから無作為抽出した一部のFFとに対して計測回路を追加する。
この場合、組合せ回路動作率算出部7は、電力影響度が閾値未満のFFに追加した変化数計測回路の計測値に基づいて、変化数計測回路が追加されていないFFそれぞれの出力信号の動作率を計算する。これにより、変化数計測回路が追加されていないFFの出力信号の動作率の計算精度が向上する。
ところで、図1に示した消費電力見積もり装置の機能は、コンピュータによって実現することができる。そこで、コンピュータがFPGAを制御してエミュレーションを行うことにより消費電力を見積もる場合の例を用いて、本実施の形態の詳細を説明する。
図2は、本実施の形態のエミュレーションシステム構成例を示す図である。コンピュータ100には、インタフェース変換ユニット20を介してFPGA30が接続されている。インタフェース変換ユニット20は、コンピュータ100の通信インタフェース(例えば、USB)とFPGA30へのデータ入出力用インタフェース(例えば、JTAG(Joint Test Action Group))との通信データを、相互に変換する。コンピュータ100から送信されたデータは、インタフェース変換ユニット20を介してFPGA30に入力される。また、FPGA30から出力されたデータは、インタフェース変換ユニット20を介してコンピュータ100に入力される。
図3は、本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、インタフェース変換ユニット20を介してFPGA30にデータの入出力を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図4は、コンピュータの機能を示すブロック図である。コンピュータ100は、エミュレーションに必要なデータを予め記憶する機能として、全体テストベンチ記憶部111、チップネットリスト記憶部120、遷移確率ライブラリ記憶部131、電力影響度記憶部132、および算出済変数記憶部150を有している。また、コンピュータ100は、エミュレーション結果を記憶する機能として、GCLK計測値記憶部141、メモリアクセス計測値記憶部142、およびFF出力変化計測値記憶部143を有している。さらに、コンピュータ100は、エミュレーション結果から計算によって算出する情報を記憶する組合せ回路動作率記憶部144とモジュール別平均動作率記憶部145とを有している。
全体テストベンチ記憶部111は、テストの実行条件(全体テストベンチ)を記憶する記憶機能である。例えば、HDD103の記憶領域の一部が全体テストベンチ記憶部111として使用される。全体テストベンチには、設計対象のLSIに実行させるべき処理をFPGA30に実行させるために、FPGA30に入力すべきデータや、信号変化数を採取する間隔(例えば、基準クロックで1万クロックごと)などの情報が含まれる。
チップネットリスト記憶部120は、エミュレーション対象のLSI内電子回路におけるセル間の接続関係を示すチップネットリスト121を記憶する記憶機能である。例えば、HDD103の記憶領域の一部がチップネットリスト記憶部120として使用される。チップネットリスト121には、GCLKインスタンス情報121aとRAMインスタンス情報121bとが含まれている。GCLKインスタンス情報121aは、ゲーティドクロック(GCLK)の回路情報である。RAMインスタンス情報121bは、RAMの回路情報である。
遷移確率ライブラリ記憶部131は、入力信号がオン(ハイレベル)からオフ(ローレベル)、またはオフからオンに遷移したときに、出力信号が遷移する確率を論理セルごとに記憶する記憶機能である。例えば、HDD103の記憶領域の一部が遷移確率ライブラリ記憶部131として使用される。
電力影響度記憶部132は、LSIの論理回路に含まれる各FFの動作が、LSI全体の電力に与える影響度を示す数値(電力影響度)を記憶する記憶機能である。例えば、HDD103の記憶領域の一部が電力影響度記憶部132として使用される。
GCLK計測値記憶部141は、LSI内に設けられるGCLKのクロックがゲーティングされた期間を、時間帯別に記憶する記憶機能である。例えば、HDD103の記憶領域の一部がGCLK計測値記憶部141として使用される。
メモリアクセス計測値記憶部142は、LSI内に設けられるRAMのチップイネーブル信号(CE)とライトイネーブル信号(WE)との信号変化数を、時間帯別に記憶する記憶機能である。例えば、HDD103の記憶領域の一部がメモリアクセス計測値記憶部142として使用される。
FF出力変化計測値記憶部143は、LSI内に設けられるFFの出力側の信号変化数を、時間帯別に記憶する記憶機能である。例えば、HDD103の記憶領域の一部がFF出力変化計測値記憶部143として使用される。
組合せ回路動作率記憶部144は、LSI内に設けられる組合せ回路とその組合せ回路前後のFF出力の動作率を、時間帯別に記憶する記憶機能である。例えば、HDD103の記憶領域の一部が組合せ回路動作率記憶部144として使用される。
モジュール別平均動作率記憶部145は、モジュール(クロックバッファ、RAM、組合せ回路)の平均動作率を記憶する記憶機能である。例えば、HDD103の記憶領域の一部がモジュール別平均動作率記憶部145として使用される。
算出済変数記憶部150は、消費電力を算出するために予め算出された変数を記憶する記憶機能である。例えば、HDD103の記憶領域の一部が算出済変数記憶部150として使用される。算出済変数記憶部150にはリーク電力値151、電力ライブラリ152、配線負荷容量153、電源電圧値154が記憶されている。リーク電力値151は、リーク電流(絶縁されているはずの経路に漏れ出す電流)による消費電力である。電力ライブラリ152は、セル(AND回路、NAND回路など)ごとの消費電力を示すパラメータである。配線負荷容量153は、配線の負荷を示す値である。電源電圧値154は、検証対象のLSIに印可される電源の電圧である。
これらのデータを利用して正確な消費電力を算出するために、コンピュータ100は、計測回路の追加機能として、GCLK用計測回路追加部161、メモリ用計測回路追加部162、全ネット平均動作率算出部163、電力影響度算出部164、およびFF用計測回路追加部165を有している。
GCLK用計測回路追加部161は、チップネットリスト記憶部120からGCLKインスタンス情報121aを抽出し、GCLKインスタンス情報121aに計測回路を追加する。そして、GCLK用計測回路追加部161は、計測回路を追加したGCLKインスタンス情報121aを、エミュレーション制御部171に渡す。
メモリ用計測回路追加部162は、チップネットリスト記憶部120からRAMインスタンス情報121bを抽出し、RAMインスタンス情報121bに計測回路を追加する。そして、メモリ用計測回路追加部162は、計測回路を追加したRAMインスタンス情報121bをエミュレーション制御部171に渡す。
全ネット平均動作率算出部163は、組合せ回路に含まれるセルの確率伝播による動作率(全ネット平均動作率)を算出する。具体的には、全ネット平均動作率算出部163は、チップネットリスト121から組合せ回路を抽出する。さらに、全ネット平均動作率算出部163は、取得した組合せ回路に含まれるセルの遷移確率を、遷移確率ライブラリ記憶部131から取得する。次に、全ネット平均動作率算出部163は、FFの出力信号の動作率を初期値に設定し、そのときの確率伝播による各セルの出力信号の動作率を計算する。その際、各セルの入力信号の遷移によって出力信号が遷移する確率が、遷移確率ライブラリ記憶部131から取得した遷移確率で決定される。そして、全ネット平均動作率算出部163は、論理回路内の全ての組合せ回路内のセルに対する出力信号の動作率の平均(全ネット平均動作率)を求める。
その後、全ネット平均動作率算出部163は、チップネットリスト121に含まれるFFを1つずつ順番に選択する。そして、全ネット平均動作率算出部163は、選択したFFの出力信号の動作率を初期値から所定値(初期値以外の値)に変更し、全ネット平均動作率を求める。全ネット平均動作率算出部163は、全てのFFの出力信号の動作率が初期値の場合の全ネット平均動作率と、選択したFFの出力信号の動作率を所定値に変更した場合の全ネット平均動作率とを、電力影響度算出部164に渡す。
電力影響度算出部164は、それぞれのFFについて、全てのFFの出力信号の動作率が初期値の場合の全ネット平均動作率と、FFの出力信号の動作率を所定値に変更した場合の全ネット平均動作率との差を求め、電力影響度とする。そして、電力影響度算出部164は、各FFの影響度を電力影響度記憶部132に格納する。
FF用計測回路追加部165は、電力影響度記憶部132を参照し、電力影響度が予め設定された閾値以上のFFに対して計測回路を追加する。また、FF用計測回路追加部165は、電力影響度記憶部132を参照し、電力影響度が予め設定された閾値未満のFFの中から所定の割合のFFを無作為に選択し、選択したFFに対して計測回路を追加する。そして、FF用計測回路追加部165は、計測回路を追加したFFの回路情報をエミュレーション制御部171に渡す。
エミュレーション制御部171は、FPGA30を利用して、チップネットリスト121で示される論理回路のエミュレーションを行う。具体的には、エミュレーション制御部171は、チップネットリスト記憶部120から検証すべきLSIの論理回路を示すチップネットリスト121を取得する。さらに、エミュレーション制御部171は、計測回路を追加したGCLKインスタンス情報121aをGCLK用計測回路追加部161から受け取ると、チップネットリスト121内の該当するGCLKインスタンス情報121aを、計測回路が追加されたGCLKインスタンス情報121aに置き換える。同様に、エミュレーション制御部171は、計測回路を追加したRAMインスタンス情報121bをメモリ用計測回路追加部162から受け取ると、チップネットリスト121内の該当するRAMインスタンス情報121bを、計測回路が追加されたRAMインスタンス情報121bに置き換える。さらに、エミュレーション制御部171は、計測回路を追加したFFの回路情報をFF用計測回路追加部165から受け取ると、チップネットリスト121内の該当するFFの回路情報を、計測回路が追加された回路情報に置き換える。
次に、エミュレーション制御部171は、計測回路が追加されたチップネットリストに基づいて、FPGA30上で構成すべき論理回路を決定し、その論理回路をFPGA30で実現するためのデータを生成する。エミュレーション制御部171は、生成したデータをインタフェース変換ユニット20を介してFPGA30に転送する。また、エミュレーション制御部171は、全体テストベンチ記憶部111で示されるテスト環境に従って、FPGA30に対してテスト用の信号を出力し、エミュレーションを実行する。そして、エミュレーション制御部171は、エミュレーション実行中の所定の間隔で、計測回路から計測値を取得する。
エミュレーション制御部171は、取得した計測値を、GCLK計測値記憶部141、メモリアクセス計測値記憶部142、FF出力変化計測値記憶部143に格納する。具体的には、エミュレーション制御部171は、GCLKインスタンスに追加した計測回路から取得した計測値をGCLK計測値記憶部141に格納する。また、エミュレーション制御部171は、RAMインスタンスに追加した計測回路から取得した計測値をメモリアクセス計測値記憶部142に格納する。さらに、エミュレーション制御部171は、FFに追加した計測回路から取得した計測値をFF出力変化計測値記憶部143に格納する。
組合せ回路動作率算出部172は、FF出力変化計測値記憶部143から、計測回路によって計測されたFFの出力信号の所定の時間帯内での動作回数(動作率)を取得し、そのFFの動作率とする。次に、組合せ回路動作率算出部172は、電力影響度記憶部132を参照し、計測回路が追加されたFFのうち、電力影響度が閾値未満のFFを判断する。そして、組合せ回路動作率算出部172は、計測回路が追加されていないFFの動作率として、電力影響度が閾値未満のFFの出力信号の動作率の平均値を設定する。さらに、組合せ回路動作率算出部172は、遷移確率ライブラリ記憶部131を参照し、各FFの動作率に基づいて組合せ回路ごとの確率伝播計算を行い、各組合せ回路それぞれの平均動作率を算出する。組合せ回路動作率算出部172は、算出した平均動作率を組合せ回路動作率記憶部144に格納する。
平均動作率算出部173は、各モジュール(GCLK、RAM、組合せ回路)の時間的に平均化した動作率を計算する。具体的には、平均動作率算出部173は、エミュレーションを実行した時間(エミュレーション上の時間)を複数の時間帯に分割し、時間帯ごとの各モジュールの動作率の平均を求める。そして、平均動作率算出部173は、算出した平均動作率をモジュール別平均動作率記憶部145に格納する。
消費電力算出部174は、算出済変数記憶部150とモジュール別平均動作率記憶部145とに登録されたデータを利用して、消費電力値40を算出する。
このような機能を有するコンピュータによって、チップネットリスト121に基づくLSIの消費電力の算出が行われる。
まず、消費電力を見積もるための計算式について説明する。LSIの消費電力は、アクティブ電力とリーク電力とに分けられる。式で表すと以下の式になる。
消費電力 = アクティブ電力 + リーク電力 ・・・(1)
ここで、アクティブ電力は、LSIが動作することで消費される電力である。リーク電力は、絶縁されているはずの経路に漏れ出す電流によって生じる消費電力である。リーク電力はLSIの動作に関係なく発生しており、LSIの模擬動作を実施しなくても計算によって算出できる。
一方、アクティブ電力は、セル内部消費電力とネット消費電力とに分けることができる。式で表すと以下の式になる。
アクティブ電力 = セル内部消費電力 + ネット消費電力 ・・・(2)
ここで、セル内部消費電力は、LSI内部のRAMなどの個別の機能を実現するための回路(セル)の内部での消費電力である。セル内部消費電力は、以下の式で算出できる。
セル内部消費電力 = Σ(E×TRC) ・・・(3)
ここで、Eはセルごとの消費電力パラメータである。この消費電力パラメータは、セルが1回動作するごとに消費する電力を示している。セルの機能ごとにその内部構造は決まっているため、この消費電力パラメータは予め求めておくことができる。各セルの消費電力パラメータを含むデータが、電力ライブラリとして予め用意される。TRCは、セルの単位時間当たりの動作回数(動作率)である。セルごとの消費電力パラメータにそのセルの出力信号の動作率を乗算することで、セルごとの消費電力が求まる。そして、全てのセルの消費電力の総和(Σ)を計算することで、セル内部消費電力となる。
ネット消費電力は、セル間の配線における消費電力である。ネット消費電力は以下の式で表すことができる。
ネット消費電力 = Σ(1/2×C×TRN)×Vd2 ・・・(4)
ここで、Cは配線負荷容量である。TRNは、各配線の単位時間当たりの動作回数(動作率)である。なお、配線の動作回数とは、その配線を流れる信号のオン/オフの切り換え回数(信号の遷移回数)である。Vdは、電源電圧である。動作率を2分の1した値を配線負荷容量に乗算し、さらに電源電圧の2乗を乗算することで、個々の配線の消費電力を出すことができる。そして、各配線の消費電力の総和(Σ)を計算することで、ネット消費電力となる。
このような計算式により、LSIの消費電力を計算することができる。この計算でアクティブ電力の算出に使用する各パラメータ(E、C、TRC、TRN、Vd)のうち、セルの出力信号の動作率(TRC)と配線の動作率(TRN)とについては、LSIの論理回路をエミュレーションやシミュレーションにより模擬動作させてみないと、その値が分からない性質を持つ。他のパラメータは、論理回路の模擬動作をさせなくとも、静的に算出可能である。従って、LSIの消費電力を算出するためには、各ゲートの信号変化回数をいかに精度よく求めるかが重要となる。
図5は、論理回路の一部の構成を簡略的に表した図である。図5に示すようにLSIの論理回路は、主として複数のFF51,52,54、FF間に設けられた組合せ回路53、クロックバッファ部55、およびメモリ56で構成される。組合せ回路53は、複数のセル53a,53b,53cで構成される。セル53a,53b,53cは、論理和(OR)、論理積(AND)などの論理演算回路である。
クロックバッファ部55は、クロックの出力タイミングを調節する回路である。クロックバッファ部55には、クロック信号(CLK)が入力されている。クロックバッファ部55は、ゲーティドクロック回路を内蔵している。クロックバッファ部55の出力信号はFF54に対して出力される。クロックバッファ部55は、ゲーティドクロック回路により、ゲーティドクロックのクロックイネーブル信号(CEN)が入力されている間だけゲーティドクロック信号をFF54に対して出力する。これにより、FF54は、信号の処理を行う必要がないときは動作が停止する。
なお、図5では、FF54以外の回路に入力されるクロック信号やその他の制御信号は省略している。また、図中省略しているが、FF54以外のFF51,52に対してもクロックバッファ部が接続される。
図5の例で示したような論理回路を大量に組合せることで、LSI全体の論理回路が構成される。そこで、LSIの消費電力を算出するには、エミュレーションによって、各回路の所定のゲート信号の変化回数を求める。具体的には、各セル種類により下記の様に動作率を計測する。
クロックバッファ部55は、クロックイネーブル信号(CEN)の入力期間(信号がアサートされている期間)を計測回路により計測する。そして、クロックイネーブル信号(CEN)の入力期間から、クロックバッファ部55の動作率が算出できる。すなわち、クロックバッファ部55の動作率は、ファンイン側のクロックイネーブル信号(CEN)の入力期間に出されるゲーティドクロック信号の動作率である。
なお、図5には、ゲーティドクロック回路を有するクロックバッファ部55のみが示されているが、ゲーティドクロック回路を有していないクロックバッファ部もある。ゲーティドクロック回路がないクロックバッファ部の場合は、入力されるクロック信号(CLK)の動作周波数から動作率を算出する。
メモリ56は、RAMの場合とROM(Read Only Memory)の場合とがある。メモリ56は、チップイネーブル信号(CE)およびライトイネーブル信号(WE)の期間を計測回路により計測する。ROMの場合、ライトイネーブル信号(WE)は入力されていないため、その計測も必要ない。
RAMの場合、チップイネーブル信号(CE)と共にライトイネーブル信号(WE)が入力(アサート)されていれば、データの書き込み処理が行われる。この場合、RAMの書き込み時の消費電力を示す消費電力パラメータが使用される。RAMに対してチップイネーブル信号(CE)が入力されているときに、ライトイネーブル信号(WE)が入力されていなければ、データの読み出し処理が行われる。この場合、RAMの読み出し時の消費電力を示す消費電力パラメータが使用される。
FF51,52,54については、入力クロックの動作率は、接続元のクロックバッファ部の動作率を適用する。FF51,52,54の出力データの動作率は、計測回路による計測値を用いるか、あるいは、他のFFの計測値の平均値を適用する。
組合せ回路53の動作率は、FF51,52の出力データの動作率から動作率伝播機能により算出する。
以上より、論理回路上で計測回路を追加して動作率をする必要があるのは、クロックバッファ部のクロックイネーブル信号(CEN)、RAMのチップイネーブル信号(CE)およびライトイネーブル信号(WE)、ROMのチップイネーブル信号(CE)、一部のFFの出力信号である。
論理回路上でのクロックバッファ部に対する計測回路の追加は、GCLK用計測回路追加部161によって行われる。論理回路上でのRAM/ROMに対する計測回路の追加は、メモリ用計測回路追加部162によって行われる。
図6は、クロックバッファ部とRAMとに対して追加された計測回路の例を示す図である。チップネットリスト121には、電力計測の対象となるLSI論理回路60が定義されている。チップネットリスト121内のGCLKインスタンス情報121aに基づいて、LSI論理回路60内には、GCLKインスタンス61,62が構成される。GCLKインスタンス61,62は、フリップフロップ部のファンイン側に設けられたゲーティドクロック回路を示している。また、チップネットリスト121内のRAMインスタンス情報121bに基づいて、LSI論理回路60内には、RAMインスタンス63,64が構成される。RAMインスタンス63,64は、RAM回路を示している。
このようなLSI論理回路60に対して計測回路群70が追加される。計測回路群70の内部構成は、全体テストベンチ記憶部111に予め記憶されている。GCLK用計測回路追加部161は、チップネットリスト121を参照して、GCLKカウンタ71,72の追加位置をエミュレーション制御部171に指示する。また、メモリ用計測回路追加部162は、チップネットリスト121を参照して、RAMカウンタ73〜76の追加位置をエミュレーション制御部171に指示する。エミュレーション制御部171は、全体テストベンチ記憶部111からGCLKカウンタ71,72やRAMカウンタ73〜76の回路構成を取得し、LSI論理回路60内の指示された位置にGCLKカウンタ71,72やRAMカウンタ73〜76を示す論理回路を接続する。
GCLKインスタンス61,62には、クロックイネーブル信号(CEN)と、クロック信号(CLK)とが入力される。GCLKインスタンス61,62からは、ゲーティドクロック信号(GCLK)が出力される。GCLKインスタンス61,62は、クロックイネーブル信号(CEN)が入力(アサート)されている間だけ、クロック信号(CLK)をゲーティドクロック信号(GCLK)として出力する。
GCLKインスタンス61,62は、例えば、AND回路(論理積回路)で構成できる。すなわち、クロックイネーブル信号(CEN)とクロック信号(CLK)とが入力されるAND回路の出力が、ゲーティドクロック信号(GCLK)となる。
GCLK用計測回路追加部161は、チップネットリスト121内のGCLKインスタンス情報121aを参照し、LSI論理回路60内のGCLKインスタンス61,62の存在を認識する。次に、GCLK用計測回路追加部161は、GCLKインスタンス61,62のクロックイネーブル信号(CEN)が入力される配線に、GCLKカウンタ71,72を接続することを決定する。そして、GCLK用計測回路追加部161は、エミュレーション制御部171に対して、GCLKカウンタ71,72の追加を指示する。
RAMインスタンス63,64には、チップイネーブル信号(CE)、ライトイネーブル信号(WE)などが入力される。メモリ用計測回路追加部162は、チップネットリスト121内のRAMインスタンス情報121bを参照し、LSI論理回路60内のRAMインスタンス63,64の存在を認識する。次に、メモリ用計測回路追加部162は、RAMインスタンス63,64のチップイネーブル信号(CE)が入力される配線に、RAMカウンタ73,75を接続することを決定する。また、メモリ用計測回路追加部162は、RAMインスタンス63,64のライトイネーブル信号(WE)が入力される配線に、RAMカウンタ74,76を接続することを決定する。そして、メモリ用計測回路追加部162は、エミュレーション制御部171に対して、RAMカウンタ73〜76の追加を指示する。
追加されるGCLKカウンタ71,72及びRAMカウンタ73〜76には、基本クロック信号(MCLK)が入力される。基本クロック信号(MCLK)は、LSIの回路内の最も速いクロック信号である。すなわち、GCLKインスタンス61,62などの各種回路に入力されるクロック信号(CLK)は、基本クロック信号(MCLK)以下の周波数の信号である。
このような計測回路群70を追加することで、GCLKカウンタ71,72によって、ゲーティドクロックバッファのイネーブル期間が計測される。具体的には、GCLKカウンタ71,72において、ゲーティドクロックバッファに入力されるクロックイネーブル信号(CEN)がアサートされている期間に発生した基本クロック数がカウントされる。
また、RAMカウンタ73〜76によって、RAMのチップイネーブル信号(CE)とライトイネーブル信号(WE)とがアサートされている期間が計測される。具体的には、RAMカウンタ73〜76において、RAMのチップイネーブル信号(CE)とライトイネーブル信号(WE)とのそれぞれがアサートされている期間に発生した基本クロック数がカウントされる。
次に、FF用の計測回路の追加処理について説明する。FF用の計測回路を追加する際には、遷移確率ライブラリ記憶部131に予め格納された遷移確率ライブラリが参照される。遷移確率ライブラリには、セルの入力が変化した場合に、出力が変化する確率(遷移確率)が設定されている。ここで、遷移確率とは、真理値表から入力信号が1つだけ変化するときの信号の全状態遷移における出力信号の変化を伴う状態遷移の割合である。
図7は、遷移確率の算出方法を示す図である。この図7には、セル80がNAND回路(否定論理積回路)の場合の例を示している。NAND回路の2つの入力端子をそれぞれIN1端子、IN2端子とする。また、NAND回路からの出力端子をOUT端子とする。
そして、NAND回路の真理値表81を用いることで、2つの入力信号の状態(オン「1」、オフ「0」)に応じた出力信号の状態が分かる。真理値表81では、2つの入力信号の状態は4パターン存在する。
そこで、4つの状態において、IN1端子への入力信号を変化させたときのOUT端子の状態遷移と、IN2端子への入力信号を変化させたときのOUT端子の状態遷移とを考える。図7には、IN1端子の変化に応じたOUT端子の状態遷移82とIN2端子の変化に応じたOUT端子の状態遷移83とが示されている。
4つの状態パターンのうち、IN1端子の信号の変化に応じてOUT端子の信号状態が遷移するのは2パターンである。すると、IN1端子の遷移確率は0.5(2/4)となる。
また、4つの状態パターンのうち、IN2端子の信号の変化に応じてOUT端子の信号状態が遷移するのは2パターンである。すると、IN2端子の遷移確率は0.5(2/4)となる。
このように、各セルの真理値表に基づいて、セルごとの遷移確率が算出される。入力端子が複数存在するセルに対しては、入力端子ごとの遷移確率が算出される。このようにして算出された遷移確率が、遷移確率ライブラリとして遷移確率ライブラリ記憶部131に格納される。
図8は、遷移確率ライブラリのデータ構造例を示す図である。遷移確率ライブラリ131aには、セル名と遷移確率の欄が設けられている。セル名の欄には、セルの名称が設定されている。遷移確率の欄には、対応するセルの入力端子ごとの遷移確率が設定されている。
このような遷移確率ライブラリ131aに基づいて、全ネット平均動作率算出部163が、組合せ回路における確率伝播による全ネット平均動作率を算出する。確率伝播による全ネット平均動作率算出処理は、以下のようにして行われる。
図9は、組合せ回路の例を示す図である。図9に示した組合せ回路は、2つのFF91,92と、他の2つのFF93,94との間に、6つのセル211〜216で構成されている。なお、図9に示した回路中、左から右に信号が伝わるものとする。すなわち、各FF91〜94やセル211〜216は、左側に入力端子、右側に出力端子がある。
FF91の出力端子は、セル211の入力端子に配線で接続されている。セル211の出力端子は、セル212の入力端子に配線で接続されている。セル212の出力端子は、セル213の上側の入力端子に配線で接続されている。FF92の出力端子は、セル215の入力端子に配線で接続されている。セル215の出力端子は、セル213の下側の入力端子に配線で接続されている。セル213の出力端子は、セル214の入力端子とセル216の入力端子とに配線で接続されている。セル214の出力端子は、FF93の入力端子に配線で接続されている。セル216の出力端子は、FF94の入力端子に配線で接続されている。
ここで、FF91の名称を「FF1」、FF92の名称を「FF2」、FF93の名称を「FF3」、FF94の名称を「FF4」とする。また、セル211の名称を「セル1」、セル212の名称を「セル2」、セル213の名称を「セル3」、セル214の名称を「セル4」、セル215の名称を「セル5」、セル216の名称を「セル6」とする。
また、FF91の出力信号の動作率を「Din1」、FF92の出力信号の動作率を「Din2」、セル211の遷移確率を「P1」、セル212の遷移確率を「P2」、セル213の上側の入力端子に応じた遷移確率を「P3A」、セル213の下側の入力端子に応じた遷移確率を「P3B」、セル214の遷移確率を「P4」、セル215の遷移確率を「P5」、セル216の遷移確率を「P6」とする。
このような組合せ回路において、入力側のFF91,92の出力信号の動作率と、各セル211〜216の遷移確率とから、各配線上の信号の動作率を算出することができる。ここで、FF91から出力される信号の動作率を「Din1」、FF92から出力される信号の動作率を「Din2」、セル211から出力される信号の動作率を「D1」、セル212から出力される信号の動作率を「D2」、セル213から出力される信号の動作率を「D3」、セル215から出力される信号の動作率を「D5」、セル214から出力される信号の動作率を「Dot1」、セル216から出力される信号の動作率を「Dot2」とする。この場合、各動作率は、以下の式で表される。
D1=Din1×P1 ・・・(5)
D2=Din1×P1×P2 ・・・(6)
D3=Din1×P1×P2×P3A+Din2×P5×P3B ・・・(7)
D5=Din2×P5 ・・・(8)
Dot1=(Din1×P1×P2×P3A+Din2×P5×P3B)×P4
・・・(9)
Dot2=(Din1×P1×P2×P3A+Din2×P5×P3B)×P6
・・・(10)
この式(5)〜式(10)において未定の値は、「Din1」と「Din2」とである。すると、「Din1」と「Din2」とが決定されれば、全ての動作率が決定される。そして、これらの動作率の平均を計算することで、ネット平均動作率を出すことができる。信号の入力側のFFと組合せ回路内のセルとの合計(モジュール数)をN(Nは自然数)とすると、ネット平均動作率は以下の式で表される。
ネット平均動作率=
(Din1+Din2+D1+D2+D3+D5+Dot1+Dot2)/N
・・・(11)
これは、組合せ回路内のセルの出力信号の動作率の平均を示している。すなわち、「Din1」、「Din2」は、組合せ回路内のセルに入力される信号の動作率であり、「D1」、「D2」、「D3」、「D5」、「Dot1」、「Dot2」は、組合せ回路内のセルから出力される信号の動作率である。信号の入力側のFFと組合せ回路内のセルとの合計「N」だけ動作率があるため、動作率の合計値をNで除算することで、ネット平均動作率が求められる。
例えば、名称が「FF1」のFF91の動作率「Din1」が「0.6」であり、名称が「FF2」のFF92の動作率「Din2」も「0.6」であるものと仮定する。なお、動作率が「0.6」であるとは、10周期に6回の割合で信号の遷移が発生することを意味する。また、各セルの動作率「P1,P2,P3A,P3B,P4,P5,P6」は、全て「0.3」であるものと仮定する。
すると、「D1=0.6×0.3=0.18」、「D2=0.6×0.3×0.3=0.054」、「D3=0.6×0.3×0.3×0.3+0.6×0.3×0.3=0.0702」、「D5=0.6×0.3=0.18」、「Dot1=(0.6×0.3×0.3×0.3+0.6×0.3×0.3)×0.3=0.02106」、「Dot2=(0.6×0.3×0.3×0.3+0.6×0.3×0.3)×0.3=0.02106」となる。
その結果、ネット平均動作率は「(0.6+0.6+0.18+0.054+0.0702+0.18+0.02106+0.02106)/8=0.21579」となる。
上記の例は、1つの組合せ回路についてのネット平均動作率を求めている。同様の計算を論理回路中の全ての組合せ回路に対して実行し平均値を計算することで、全ネット平均動作率が算出される。
このようにして、組合せ回路の全ネット平均動作率をFFの動作率から求めることができる。そして、多数のFFのうち、FFの動作率が全ネット平均動作率に与える影響度(電力影響度)を判定し、論理回路中の電力影響度が高いFFに対して計測回路を追加する。
図10は、FF用計測回路追加処理の手順を示すフローチャートである。この処理は、消費電力の算出を指示する操作入力が行われたときに実行される。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS11]全ネット平均動作率算出部163は、全てのFFに対して同一の動作率を設定し、全ネット平均動作率(論理回路内の全てのFFおよびセルの動作率の平均)を算出する。全ネット平均動作率算出部163は、算出された全ネット平均動作率を全ネット平均動作率基準値としてメモリに格納する。
[ステップS12]全ネット平均動作率算出部163は、未選択のFFを1つ選択する。
[ステップS13]全ネット平均動作率算出部163は、選択したFFの動作率を変更し、全ネット平均動作率を算出する。全ネット平均動作率算出部163は、算出した全ネット平均動作率を、選択したFFの識別情報に対応付けてメモリに格納する。
[ステップS14]全ネット平均動作率算出部163は、全てのFFを選択したか否かを判断する。未選択のFFがあれば、処理がステップS12に進められる。全てのFFの選択が終了していれば、処理がステップS15に進められる。
[ステップS15]電力影響度算出部164は、各FFの電力影響度を算出する。具体的には、電力影響度算出部164は、全ネット平均動作率基準値「Pnet1」と各FFの全ネット平均動作率「Pnet2」とをメモリから取得する。次に、電力影響度算出部164は、全ネット平均動作率基準値「Pnet1」と全ネット平均動作率「Pnet2」との差分(|Pnet1−Pnet2|)を計算する。そして、電力影響度算出部164は、算出した差分を電力影響度として、電力影響度記憶部132に格納する。
[ステップS16]電力影響度算出部164は、各FFの電力影響度をレベル分けして、各レベルに属するFFの数(FF出力ネット数)を集計する。
[ステップS17]電力影響度算出部164は、電力影響度の閾値を決定する。具体的には、電力影響度算出部164に、FFに最低限追加する計測回路数(FF用必須計測回路数)が予め設定されている。電力影響度算出部164は、電力影響度が高いレベルから順に選択し、選択したレベルに含まれるFFの数を加算していく。電力影響度算出部164は、加算した数がFF用必須計測回路数を超えた場合、そのとき選択されているレベルより高く、それ以前に選択されたレベルより低い電力影響度を閾値に決定する。決定された閾値は、電力影響度記憶部132に格納される。
[ステップS18]FF用計測回路追加部165は、電力影響度記憶部132を参照し、電力影響度が閾値以上であるFFに対して計測回路を追加する。具体的には、FF用計測回路追加部165は、電力影響度が閾値以上であるFFを指定して、FF用の計測回路の追加指示をエミュレーション制御部171に通知する。FF用の計測回路の構造を示す論理回路は、全体テストベンチ記憶部111に予め記憶されており、FF用の計測回路の追加指示を受け取ったエミュレーション制御部171は、論理回路内の指定されたFFに対して計測回路を追加する。
[ステップS19]FF用計測回路追加部165は、電力影響度記憶部132を参照し、電力影響度が閾値未満であるFFから所定数のFFをランダムサンプリング(無作為抽出)し、サンプリングしたFFに計測回路を追加する。具体的には、FF用計測回路追加部165は、サンプリングしたFFを指定して、FF用の計測回路の追加指示をエミュレーション制御部171に通知する。FF用の計測回路の追加指示を受け取ったエミュレーション制御部171は、論理回路内の指定されたFFに対して計測回路を追加する。
このように、まず全てのFFに対して同一(例えば0.5)の動作率を設定した場合の全ネット平均動作率基準値「Pnet1」と、全てのFFの中から1個のFFを選択して動作率を変更(例えば0.1)した場合の全ネット平均動作率「Pnet2」との差分(|Pnet1−Pnet2|)を電力影響度とする。算出された電力影響度は、電力影響度記憶部132に格納される。
図11は、電力影響度記憶部のデータ構造例を示す図である。電力影響度記憶部132は、電力影響度テーブル132aと閾値132bとを記憶している。電力影響度テーブル132aは、インスタンス名と電力影響度との欄が設けられている。インスタンス名の欄には、論理回路に含まれるFFの識別番号が設定される。電力影響度の欄には、対応するFFの電力影響度が設定される。
図11に示したFFの電力影響度が、閾値を決定するためにレベル分けされる。このようなレベル分けは、ヒストグラムで表すことができる。
図12は、電力影響度によるレベルごとのFF数の例を示すヒストグラムである。図12では、横軸に電力影響度、縦軸にFF数を示している。電力影響度が所定の数値幅で区切られ、各数値幅を個々のレベルとする。図12の例では、レベル1(Lv1)からレベル8(Lv8)までの8つのレベルが設けられている。対応する電力影響度の数値幅が高い値であるほど、レベルも高くなる。電力影響度算出部164は、各レベルの数値幅内の電力影響度であるFFを、レベルごとに計数する。図12では、各レベルに属するFFの数が棒グラフの高さで示されている。
このようにFFを電力影響度で分類した後、電力影響度算出部164はレベル8を選択し、レベル8に属するFF数がFF用必須計測回路数を超えているか否かを判断する。超えていなければ、電力影響度算出部164はレベル7(Lv7)を選択し、レベル7とレベル8のそれぞれに属するFF数を合計し、合計値がFF用必須計測回路数を超えているか否かを判断する。超えていなければ、順次、1段階ずつ低いレベルを選択して、FF数を加算していく。そして、FF数の合計がFF用必須計測回路数を超えた場合、電力影響度算出部164は、現在選択しているレベルとその前に選択したレベルとの境界値を閾値とする。図12の例では、レベル4(Lv4)を選択したときに、合計値がFF用必須計測回路数を超えている。その結果、レベル4とレベル5(Lv5)との境界値である電力影響度が、閾値に決定されている。
閾値が決定されると、閾値より電力影響度が大きいFFに対して計測回路を追加することが決定される。すなわち、予め与えられたFF数(FF用必須計測回路数)に対して電力影響度が大きい順に計測回路を追加するFFが選択される。選択されたFFに対してデータ変化数を計測するための計測回路が追加される。また、電力影響度の低いFFについては、そのFFの中から所定数のFFに対して計測回路が追加される。
図13は、FF用の計測回路の例を示す図である。計測回路の追加対象とされたFF220の出力端子側に、計測回路230が接続される。計測回路230は、FF231、XOR回路(排他的論理和回路)232、およびカウンタ233で構成される。
FF220の出力端子は、FF231の入力端子とXOR回路232の下側の入力端子とに接続されている。FF231は、ディレイフリップフロップであり、信号を遅延させる働きをする。FF231の出力端子は、XOR回路232の上側の入力端子に接続されている。XOR回路232の出力端子は、カウンタ233の入力端子に接続されている。カウンタ233は、入力されたパルス信号の数を計数する。
このような計測回路230により、FF220の出力信号が変化した回数を計数することができる。すなわち、FF220の出力がオフ(ローレベル)からオン(ハイレベル)に変化すると、XOR回路232の下側の入力端子への入力信号がオフからオンに切り替わる。その後、FF231で遅延された信号がXOR回路232の上側の入力端子に入力され、オフからオンに切り替わる。XOR回路232は、下側の入力端子への入力がオンに切り替わり、その後上側の入力端子への入力がオンに切り替わるまでの間、出力信号をオンにする。その出力信号がパルス信号としてカウンタ233でカウントされる。
また、FF220の出力がオンからオフに変化すると、XOR回路232の下側の入力端子への入力信号がオンからオフに切り替わる。その後、FF231で遅延された信号がXOR回路232の上側の入力端子に入力され、オンからオフに切り替わる。XOR回路232は、下側の入力端子への入力がオフに切り替わり、その後上側の入力端子への入力がオフに切り替わるまでの間、出力信号をオンにする。その出力信号がパルス信号としてカウンタ233でカウントされる。
このようにして、計測回路を追加するモジュール(クロックバッファ部、メモリ、FF)が決定されると、エミュレーション制御部171によってFPGA30を用いたエミュレーションが行われる。すなわち、エミュレーション制御部171は、チップネットリスト121で示されるLSIの論理回路に対して、計測回路を追加すべきであると指定されたモジュールに計測回路を追加した電力計測用論理回路を生成する。そして、エミュレーション制御部171は、全体テストベンチ記憶部111に示されている処理のエミュレーションを実行する。エミュレーション制御部171は、エミュレーション実行中に、定期的(例えば、基準クロック信号の1万クロックごと)に計測回路内のデータをダンプする。ダンプしたデータは、GCLK計測値記憶部141、メモリアクセス計測値記憶部142、およびFF出力変化計測値記憶部143に格納される。
図14は、GCLK計測値記憶部のデータ構造例を示す図である。GCLK計測値記憶部141には、GCLK計測値テーブル141aが記憶されている。GCLK計測値テーブル141aには、測定時間帯とインスタンス名との欄が設けられている。
測定時間帯の欄には、エミュレーション上での時間をデータのダンプタイミングで分割することで生成される時間帯(測定時間帯)の識別番号が設定される。測定時間帯には、エミュレーションの時刻の進行順に沿って、0から始まる昇順の番号が付与される。
インスタンス名の欄には、クロックバッファ部の識別番号が示されている。クロックバッファ部の識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値(計測値)が設定される。この計測値は、ゲーティドクロック信号(GCLK)のクロックイネーブル信号(CEN)がアサートされた時間を、基準クロック信号のクロック数で表したものである。従って、この計測値を基準クロック信号のクロック数で除算すれば、クロックバッファ部の動作率となる。
図15は、メモリアクセス計測値記憶部のデータ構造例を示す図である。メモリアクセス計測値記憶部142には、メモリアクセス計測値テーブル142aが記憶されている。メモリアクセス計測値テーブル142aには、測定時間帯とインスタンス名との欄が設けられている。
測定時間帯の欄には、測定時間帯の識別番号が示されている。インスタンス名の欄には、RAMの識別番号が示されている。RAMの識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値(計測値)が、チップネーブル信号(CE)とライトイネーブル信号(WE)とに分けて設定される。この計測値は、チップネーブル信号(CE)とライトイネーブル信号(WE)とのそれぞれがアサートされた時間を、基準クロック信号のクロック数で表したものである。従って、チップネーブル信号(CE)の計測値を基準クロック信号のクロック数で除算すれば、RAMがライトまたはリード動作を行う動作率となる。同様に、ライトネーブル信号(WE)の計測値を基準クロック信号のクロック数で除算すれば、RAMがライト動作を行う動作率となる。なお、RAMがライトまたはリード動作を行う動作率からRAMがライト動作を行う動作率を減算すれば、RAMがリード動作を行う動作率となる。
図16は、FF出力変化計測値記憶部のデータ構造例を示す図である。FF出力変化計測値記憶部143には、FF出力変化計測値テーブル143aが記憶されている。FF出力変化計測値テーブル143aには、測定時間帯とインスタンス名との欄が設けられている。
測定時間帯の欄には、測定時間帯の識別番号が示されている。インスタンス名の欄には、FFの識別番号が示されている。FFの識別番号が示された列には、対応する測定時間帯の間に計測回路でカウントされた数値が設定される。この数値は、FFの出力信号がオンからオフまたはオフからオンに変化した回数を示している。
FF出力変化計測値に基づいて、組合せ回路動作率算出部172によって、組合せ回路動作率が算出される。
図17は、組合せ回路動作率算出処理の手順を示すフローチャートである。この処理は、エミュレーション制御部171によるエミュレーションが終了したときに実行される。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS21]組合せ回路動作率算出部172は、FF出力変化計測値テーブル143aを参照し、測定時間帯を1つ選択する。
[ステップS22]組合せ回路動作率算出部172は、選択中の測定時間帯における処理(ステップS22〜S27の処理)において未選択のFFを1つ選択する。
[ステップS23]組合せ回路動作率算出部172は、選択したFFが計測回路を追加したFFか否かを判断する。具体的には、組合せ回路動作率算出部172は、FF出力変化計測値記憶部143内のFF出力変化計測値テーブル143aを参照し、選択したFFについて出力結果の計測値が登録されていれば、そのFFには計測回路が追加されていることが分かる。計測回路を追加したFFであれば、処理がステップS24に進められる。計測回路を追加していないFFであれば、処理がステップS25に進められる。
[ステップS24]組合せ回路動作率算出部172は、選択した測定時間帯の選択したFFの計測値をFF出力変化計測値テーブル143aから取得する。次に、組合せ回路動作率算出部172は、取得した計測値を、測定時間帯における基準クロック信号のクロック数で除算し、単位時間当たりの信号の変化数(動作率)とする。そして、組合せ回路動作率算出部172は、算出した動作率を、選択したFFの動作率としてメモリに記憶する。その後、処理がステップS26に進められる。
[ステップS25]組合せ回路動作率算出部172は、電力影響度記憶部132を参照し、電力影響度が閾値未満のFFを認識する。なお、閾値は、電力影響度記憶部132から取得される。次に、組合せ回路動作率算出部172は、電力影響度が閾値未満のFFの選択した測定時間帯の計測値を、FF出力変化計測値テーブル143aから取得する。さらに、組合せ回路動作率算出部172は、取得した計測値の平均値を、測定時間帯における基準クロック信号のクロック数で除算し、単位時間当たりの信号の変化数(動作率)とする。そして、組合せ回路動作率算出部172は、算出した動作率を、選択したFFの動作率としてメモリに記憶する。
[ステップS26]組合せ回路動作率算出部172は、全てのFFに動作率を設定したか否かを判断する。全てのFFへの動作率の設定が完了していれば、処理がステップS27に進められる。動作率が未設定のFFがあれば、処理がステップS22に進められる。
[ステップS27]組合せ回路動作率算出部172は、組合せ回路それぞれについて、確率伝播による全ネット平均動作率を算出する。具体的には、組合せ回路動作率算出部172は、組合せ回路を1つずつ選択し、選択した組合せ回路の入力側のFFに設定された動作率に基づいて、その組合せ回路内での確率伝播を計算する。この計算により、組合せ回路内の各セルの出力信号の動作率と、組合せ回路の出力側に設けられたFFへ出力する信号の動作率とが算出される。組合せ回路動作率算出部172は、算出した動作率の平均値を計算し、計算対象となっている組合せ回路の組合せ回路平均動作率とする。組合せ回路動作率算出部172は、算出した組合せ回路の平均動作率を、組合せ回路動作率記憶部144に格納する。
[ステップS28]組合せ回路動作率算出部172は、全ての測定時間帯を選択し、組合せ回路の平均動作率を算出したか否かを判断する。未選択の測定時間帯があれば、処理がステップS21に進められる。全ての測定時間帯が選択され、組合せ回路の平均動作率が算出されていれば、処理が終了する。
図18は、組合せ回路動作率記憶部のデータ構造例を示す図である。組合せ回路動作率記憶部144には、組合せ回路動作率テーブル144aが記憶されている。組合せ回路動作率テーブル144aには、測定時間帯とネット名との欄が設けられている。
測定時間帯の欄には、測定時間帯の識別番号が示されている。ネット名の欄には、組合せ回路の識別番号が示されている。組合せ回路の識別番号が示された列には、対応する測定時間帯における組合せ回路の平均動作率が設定される。組合せ回路の平均動作率は、対応する組合せ回路内の各セルの出力信号の動作率と、その組合せ回路の出力側に接続されたFFの動作率として使用される。
以上のようにして、クロックバッファ部、メモリ、組合せ回路、およびFFの動作率が測定される。その後、平均動作率算出部173によって、各モジュール(クロックバッファ部、メモリ、組合せ回路、およびFF)の電力算出時間帯における平均動作率が算出される。電力算出時間帯は、測定時間帯の整数倍の時間幅である。すなわち、測定時間帯ごとの各モジュールの動作率の平均値が、電力算出時間帯の平均動作率となる。算出された平均動作率は、モジュール別平均動作率記憶部145に格納される。
図19は、モジュール別平均動作率記憶部のデータ構造例を示す図である。モジュール別平均動作率記憶部145には、モジュール別平均動作率テーブル145aが記憶されている。モジュール別平均動作率テーブル145aには、電力算出時間帯とインスタンス名/ネット名との欄が設けられている。
電力算出時間帯の欄には、エミュレーション上での時間を、電力算出対象となる時間幅で分割することにより生成される時間帯(電力算出時間帯)の識別番号が設定される。電力算出時間帯には、エミュレーションの時刻の進行順に沿って、0から始まる昇順の番号が付与される。
インスタンス名/ネット名の欄には、各モジュール(クロックバッファ部、RAM、および組合せ回路)の識別番号が示されている。各モジュールの識別番号が示された列には、対応する電力算出時間帯の平均動作率が設定される。なお、RAMについては、チップイネーブル信号(CE)に基づいて算出された動作率(データのライトまたはリードのいずれかが実行される割合)と、ライトイネーブル信号(WE)に基づいて算出された動作率(データのライトが実行される割合)とに分けて、平均動作率が設定される。
消費電力算出部174は、モジュール別平均動作率テーブル145aと、算出済変数記憶部150内のデータとを参照して、電力算出時間帯ごとの消費電力値を算出する。
以上のように、電力影響度の低いFFのうち一部のFFに対してのみ計測回路を追加してエミュレーションを行うようにしたため、エミュレーション中にダンプすべきデータの量が少なくなる。その結果、エミュレーションを短時間で実施することができる。
また、電力影響度の高いFFと、電力影響度の低いFFのうちの一部のFFとに計測回路を追加できる規模のFPGAがあればエミュレーションが可能となる。すなわち、大規模のFPGAが無くともエミュレーションを実施できる。
なお、全てのFFのうち、計測回路を追加しないのは電力影響度が閾値未満のFFのみである。電力影響度が小さいFFであれば、そのFFの出力信号の動作率に誤差が含まれていたとしても、全体の消費電力に与える影響は少なくて済む。従って、一部のFFに対して計測回路を追加しないことによる消費電力の算出精度の低下を少なく抑えることができる。
また、電力影響度が閾値より低いFFと、電力影響度が閾値より高いFFとでは、そのFFの使われ方が異なっているものと考えられる。例えば、RAMの入力端子近くに配置されたFFは、そのFFの出力信号の遷移の影響がRAMで止まる。そのため、電力影響度が閾値未満になるものと想定できる。また、複雑なデータ処理(多数の論理演算回路の組合せで実行される)の実行命令入力部分に使用されるFFであれば、電力影響度が閾値以上になるものと想定できる。このように、使われ方が異なるFFであれば、出力信号の動作率も異なるものと思われる。例えば、RAMの入力端子近くに配置されたFFであれば、大量のデータ入力を伴う処理(ビデオカメラによる画像撮影など)の最中は、出力信号の動作率が高くなる。一方、大量のデータ入力を伴う処理の開始命令入力部分に配置されたFFであれば、その間の出力信号の状態遷移は少ない。
このように、LSIの機能によっては、FFの電力影響度の大小と、FFの出力信号の動作率との間に相関関係が存在する。このような相関関係があるとき、計測回路を追加していないFF(電力影響度が閾値より低い)の出力信号の動作率を推定する場合、論理回路内での使われ方が近いFF(電力影響度が閾値より低い)の測定結果を用いることで誤差を少なくできる。従って、電力影響度が低いFFの出力信号の動作率(測定によって求められた値)の平均を、電力影響度が低くかつ計測回路を追加していないFFの出力信号の動作率としたことで、計測回路を追加していないFFの出力信号の動作率を少ない誤差で算出できる。計測回路を追加していないFFの出力信号の動作率が正確になれば、最終的に算出される消費電力値についても精度が向上する。換言すれば、全てのFFに対して計測回路を追加した場合と比べたときの消費電力の算出精度の低下を少なく抑えることができる。
ところで、上記実施の形態では、FFの電力影響度の大小と、FFの出力信号の動作率との間の相関関係が存在する場合を想定している。しかし、FFの電力影響度の大小と、FFの出力信号の動作率との間の相関関係が少ないLSIも有り得る。そのようなLSIの消費電力の見積もりにおいては、電力影響度が高いFFの出力信号の動作率(測定によって求められた値)の平均を、電力影響度が低くかつ計測回路を追加していないFFの出力信号の動作率としてもよい。その場合、図10のステップS19の処理は行わなくてよい。また、図17のステップS25の処理では、電力影響度が閾値以上のFFの計測値から動作率を算出することとなる。
このように、電力影響度が閾値未満のFFには計測回路を追加しない場合、その分、閾値を小さな値にすることができる。すなわち、FFに追加可能な最大数の計測回路を、電力影響度の高いFFから順に追加することができる。FFの電力影響度の大小と、FFの出力信号の動作率との間の相関関係が存在しないのであれば、電力影響度の高いFFから順に計測回路を追加し、できるだけ多くのFFに計測回路を追加して測定を行うことで、消費電力の算出精度を向上させることができる。
また、上記実施の形態では、論理回路を用いたエミュレーションによって、LSIの消費電力を見積もっているが、エミュレーションに代えてシミュレーションを行うこともできる。シミュレーションであっても、電力影響度が少ないFFについて計測回路の追加を行わないことで、処理の高速化を図ることができる。なお、シミュレーションを行う場合、図2に示したFPGA30やインタフェース変換ユニット20は不要である。また、図4に示したエミュレーション制御部171に代えて、論理回路のシミュレータが設けられる。その他の構成は同様である。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 電子回路の消費電力を見積もるための消費電力見積もり方法であって、
コンピュータが、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
ことを特徴とする消費電力見積もり方法。
(付記2) 電力影響度を計算する際には、全ての前記フリップフロップに対して同一の動作率を設定して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第1の平均動作率とし、前記論理回路内の前記フリップフロップを1つずつ選択し、選択した前記フリップフロップの出力信号の動作率のみを変更して確率伝播計算を行い、全ての前記フリップフロップおよび全てのセルの出力信号の動作率の平均を第2の平均動作率とし、前記第1の平均動作率と前記第2の平均動作率との差を、選択した前記フリップフロップの電力影響度とする付記1記載の消費電力見積もり方法。
(付記3) 前記模擬動作用論理回路を生成する際には、電力影響度が高い方から所定数の前記フリップフロップを選択し、選択した前記フリップフロップそれぞれの電力影響度のうちの最も低い値を閾値とし、電力影響度が閾値以上の前記フリップフロップと、電力影響度が閾値未満の前記フリップフロップから無作為抽出した一部の前記フリップフロップとに対して前記変化数計測回路を追加し、
前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、電力影響度が閾値未満の前記フリップフロップに追加した前記変化数計測回路の計測値から計算する付記1記載の消費電力見積もり方法。
(付記4) 前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を計算する際には、他の前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップそれぞれに追加された複数の前記変化数計測回路の計測値から計算し、他の前記フリップフロップそれぞれの動作率の平均を前記変化数計測回路が追加されていない前記フリップフロップの出力信号の動作率とする付記1記載の消費電力見積もり方法。
(付記5) 前記電子回路の模擬動作を実行する際には、再構成可能な回路を使用したエミュレーションを行う付記1記載の消費電力見積もり方法。
(付記6) 前記所定の機能ブロックは、ゲーティドクロックバッファ、RAM、およびROMである付記1記載の消費電力見積もり方法。
(付記7) 電子回路の消費電力を見積もる消費電力見積もり装置であって、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算する電力影響度算出部と、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成する計測回路追加部と、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納する模擬動作部と、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算する組合せ回路動作率算出部と、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路動作率算出部で算出された前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する消費電力算出部と、
を有する消費電力見積もり装置。
(付記8) 電子回路の消費電力を見積もるための消費電力見積もりプログラムであって、
コンピュータに、
前記電子回路の論理回路を記憶する論理回路記憶部を参照すると共に、前記論理回路に含まれるセルへの入力信号が変化したときに出力信号が変化する確率を示す遷移確率を記憶する遷移確率記憶部を参照し、組合せ回路におけるセル間の確率伝播計算を行い、前記論理回路に含まれるフリップフロップそれぞれの出力信号の動作率が変化することによる前記論理回路内のセルの出力信号の動作率の変化の度合いを示す電力影響度を、前記フリップフロップごとに計算し、
前記論理回路に対して、所定の機能ブロックに対する動作指示を示す信号の出力時間を計測する時間計測回路と、電力影響度が高い方から所定数の前記フリップフロップの出力信号の変化数をカウントする変化数計測回路とを追加した模擬動作用論理回路を生成し、
前記模擬動作用論理回路を用いて前記電子回路の模擬動作を実行すると共に、前記模擬動作用論理回路に追加された前記時間計測回路と前記変化数計測回路とから計測値を定期的に取得して計測結果記憶部に格納し、
前記計測結果記憶部を参照し、前記変化数計測回路が追加された前記フリップフロップそれぞれの出力信号の動作率を、前記フリップフロップ自身に追加された前記変化数計測回路の出力信号の計測値から計算し、前記変化数計測回路が追加されていない前記フリップフロップそれぞれの出力信号の動作率を、他の前記フリップフロップに追加された前記変化数計測回路の計測値から計算し、
前記遷移確率記憶部を参照し、複数の前記フリップフロップの出力信号の動作率に基づいて前記組合せ回路ごとのセル間の確率伝播計算を行い、前記組合せ回路内のセルの出力信号の平均動作率を計算し、
前記計測結果記憶部を参照し、前記機能ブロックそれぞれに追加された前記時間計測回路の計測値から前記機能ブロックの動作率を判断し、前記組合せ回路の平均動作率から前記組合せ回路内のセルの出力信号の動作率および前記組合せ回路に接続された前記フリップフロップの出力信号の動作率を判断し、前記論理回路を動作させたときの消費電力を算出する、
処理を実行させる消費電力見積もりプログラム。