(57)【要約】【課題】  ハードウェアシミュレーションの所要時間を短縮して、被測定回路等の迅速な消費電力の評価を行うことが可能な消費電力評価技術を提供する。【解決手段】  ハードウェアシミュレータ内の被評価回路に設けられた計測回路から収集されるトグル回数等の評価結果を、外部バスのバス幅に詰め込むように転送回路を設計し、データ構造情報２１０に記録するパッキング工程２００と、被評価回路に、計測回路、転送回路、等の回路データ（ネットリスト）を付加する計測回路挿入工程２０１と、ハードウェアシミュレータに回路データを用いて構築された被評価回路等を実際に動作させて評価結果を収集し、計測値ログ２１１に格納するエミュレーション工程２０２と、データ構造情報２１０に基づき、目的に応じて必要なデータを計測値ログ２１１から抽出する抽出工程２０３と、抽出されたデータを用いて被評価回路の消費電力評価を行う電力解析工程とを含む。【選択図】図１
2007102337.tif 000002
【特許請求の範囲】
【請求項１】
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す第１工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する第２工程と、
を含むことを特徴とする消費電力評価方法。
【請求項２】
請求項１記載の消費電力評価方法において、
前記転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を用いて、前記第１工程における前記転送単位に対する前記評価情報の詰め込み、および前記第２工程における前記評価情報の復元を行うことを特徴とする消費電力評価方法。
【請求項３】
請求項１記載の消費電力評価方法において、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
【請求項４】
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
【請求項５】
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、
前記転送手段における転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を備え、
前記シミュレーションでは、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を実行することを特徴とする消費電力評価システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消費電力評価技術に関し、特に、ＬＳＩ（Large Scale Integrated circuit）等の回路設計において、ＬＳＩの消費電力量を見積る技術に関する。
【背景技術】
【０００２】
たとえば、ＬＳＩで実現される様々な用途の回路では、適用製品の小型化、携帯化や低発熱化、等の要求に呼応して、消費電力の低減が求められており、開発過程等で、設計対象の回路の消費電力を見積もる必要がある。
【０００３】
消費電力を見積る方法の１つとして、スイッチングパワーを見積る技術がある。スイッチングパワーは（電力）＝０．５＊Ｖ＊Ｖ＊（Ｃ＊ＴＲ）で求める。ここで、Ｖは電圧、Ｃは総付加容量、ＴＲはネットのトグル回数を表している。ネットのトグルとは、回路の接続状態を表現したデータであるネットリストにて定義された回路の入出力信号（ネット）の信号値が０から１に変化する、または、１から０に変化することである。Ｖが固定、Ｃがライブラリとして提供されている場合、ＴＲの値を計測すれば、前記式を用いて消費電力を算出することができる。
【０００４】
ＴＲは信号値の変化回数なので、ＴＲの値を算出するためには、シミュレーションを行う必要がある。このシミュレーションの実行時間が長く、アプリケーションによっては消費電力を見積るのに十分な期間のデータを収得することができなかった。このため、近年、ソフトウェア・シミュレーションよりも高速にシミュレーションできるエミュレータやＦＰＧＡ（Field Programmable Gate Array）プロトタイピングボードを利用して消費電力を計測する技術が開発されている。
【０００５】
エミュレータとは、ＦＰＧＡやプロセッサなどを使ったシミュレーション専用のハードウェアである。ソフトウェア・シミュレータに近いデバッグ環境とソフトウェア・シミュレータよりも１０，０００倍高速なシミュレーションを提供している。
【０００６】
プロトタイピングボードとは、ＦＰＧＡなどのプログラマブルなＬＳＩを複数個ならべたボード（回路基板）のことで、回路製品の試作に用いられる。通常のプログラマブルなＬＳＩ用の設計フローを利用し、実装、動作させる。エミュレーションシステムよりも高速である反面、通例、デバッグ環境はない。必要に応じてデバッグ用の回路も設計する。以下、エミュレータとプロトタイピングボードをまとめてハードウェアシミュレータと呼ぶ。また、ハードウェアシミュレータでシミュレーションすることをハードウェアシミュレーションと呼ぶ。
【０００７】
ＴＲは、前述のとおり、信号の変化をカウントしたものであるため、信号変化を調べるステップと変化をカウントするステップを用意して、変化回数を求める。ハードウェアシミュレータの場合、前記の手続きを回路で行うため、信号変化検出回路とカウンタ回路からなり信号変化回数を数える計測回路を付加するのが一般的である。正確に求める場合、全ネット（ネットリストの全信号）に計測回路を付加しなければならない。仮にカウンタに含まれるレジスタが１６ビットだったとすると、少なく見積っても、回路量が１７倍になる。ハードウェアシミュレータはＦＰＧＡのように載せられる回路量に制限がある。このため、回路量が大きくなるとシミュレーションできなくなる。従って、面積の増加を低く抑えて、計測結果を収得する技術が重要である。
【０００８】
また、全ネットに計測回路をつけた場合、ネット数個の計測結果が生成されることになる。ハードウェアシミュレータの場合、ＦＰＧＡを並べたものなので、なんらかの方法で計測結果を取り出す手段が必要になる。エミュレータの場合、ＦＰＧＡなどのプログラマブルなＬＳＩを並べた装置と制御用のコンピュータ（以下、制御コンピュータとよぶ）をバス（例えばＰＣＩバス）でつなぐ。制御コンピュータはエミュレータから信号値をＰＣＩバス経由で取り出すことができる。従って、最低でもネット数回のトランザクションが発生することになる。エミュレータの場合、ネットリストを載せる（ＦＰＧＡ上に論理を構築する）ため、エミュレータを含むシステムに特別な機構がない場合、１６ビットのレジスタの集まりという情報がのこっていない。従って、１６ビットを１トランザクションで取り出せる保証がない。最悪の場合、１ビットずつ取り出すため、（ネット数＊１６）回のトランザクションが発生する。
【０００９】
これらのトランザクションは制御コンピュータとエミュレータの間で発生する。このため、データを取り出す時間が膨大となる。シミュレーション時間の大半がデータ抽出に費やされ、高速性が失われる。従って、効率的にトランザクションを生成する方法が必要である。ＦＰＧＡプロトタイプボードの場合、計測データを抽出する仕組みそのものが必要となる。この仕組みについても、ＰＣＩなどのバスで接続する必要があるので、トランザクションの効率化が必要である。しかし、現在まで、計測結果の転送を効率化する系統的な方法がなかった。効率的なトランザクションを発生させることができ、高速にハードウェアシミュレーションによる消費電力計測を実現する方法が望まれる。また、高速化により回路量を低く抑える方法もハードウェアシミュレータの制約上重要な課題である。
【００１０】
作業時間の短縮も望まれる。従って、単に高速なハードウェアシミュレーションにより電力値が得られるだけでは不十分である。系統的に作業することが可能であり、更に一部または全部を自動化により手作業の削減と手作業による誤りの混入を防ぎ、作業者の負担を削減する必要がある。
【００１１】
従来、ソフトウェア・シミュレーションで計測していた。また、高速化を図るため、エミュレータを用いて計測していた。エミュレータでは、ソフトウェア・シミュレータと同様、信号の値の参照、信号の値の書きこみ、ブレークポイントの設定、ステップ実行（１サイクルすすめる実行）が可能である。
【００１２】
図２４はエミュレータで電力を測定する参考技術の測定環境を示したものである。制御用コンピュータ１０１、エミュレータ制御部１０３、回路を実装するプログラマブルな領域をもつプログラマブルデバイス１３０で構成されている。
【００１３】
プログラマブルデバイス１３０には、被評価回路１２７の他に、サンプル期間カウンタ１１０、トリガ発生器１１１、クリアデータレジスタ１１４、計測回路１１５，１１６，１１７が実装されている。
【００１４】
すなわち、サンプル期間カウンタ１１０〜計測回路１１７は電力値計測用の回路を表している。つまり、サンプル期間カウンタ１１０〜計測回路１１７は、被評価回路１２７の消費電力値の測定のために追加した回路である。被評価回路１２７の対象信号１２６がクロックで、計測回路１１５〜１１７において、クロックの立ち上がりエッジ数を計測する場合は、図２５のクロックエッジ計測回路で代用してもよい。また、被評価回路１２７がＲＡＭの場合、消費電力見積もりのために対象信号１２６がインヒビットがアクティブな期間を計測対象に加えても良い。この場合、図２５のアクティブ期間計測回路を使う。
【００１５】
エミュレータではユーザは制御用コンピュータ１０１からバス１０２を介してインタラクティブにシミュレーションを制御できる。初期状態では、エミュレータ制御部１０３はプログラマブルデバイス１３０にクロックを供給しておらず、回路は動作していない。最初に制御用コンピュータ１０１からクリアデータレジスタ１１４に値１を書き込む。次に１サイクルすすめる。クリアデータレジスタ１１４の出力はサンプル期間カウンタ１１０の０クリア端子、計測回路１１５〜１１７の０クリア端子につながっている。１が印加されたことにより、サンプル期間カウンタ１１０内のレジスタ、計測回路１１５〜計測回路１１７内のレジスタ（計測回路１１５の場合、レジスタ１２１）の値が０になる。クリアデータレジスタ１１４に値０を書き込む。次にトリガ発生器１１１に期間を書き込む。トリガ発生器１１１はサンプル期間カウンタ１１０の出力値と期間の値を比較する。もし等しければ、またその時に限って、トリガ１１３が１になる。ユーザは制御用コンピュータ１０１からトリガ１１３が１になるまでシミュレーションをすすめるようエミュレータ制御部１０３に指示する。エミュレータ制御部１０３はトリガ１１３が１になるまでクロックを供給し、シミュレーションする。トリガ１１３が１になったらエミュレータ制御部１０３はクロックの供給をやめる。従って、シミュレーションが停止する。トリガ１１３は制御用コンピュータ１０１にシミュレーションの停止を通知する。
【００１６】
シミュレーションが動作している期間、計測回路１１５〜計測回路１１７は評価対象の信号のトリガ回数を計測する。計測回路１１５〜計測回路１１７は同型なので、計測回路１１５を使って説明する。対象信号１２６が計測対象の信号である。ここでは被評価回路１２７内から信号を引き出した図になっているが、被評価回路１２７の内部の信号を観測する方法をエミュレータが提供している場合には、この機能を使って内部信号を観測しても良い。信号変化検出回路１２２には前回の値を覚えるレジスタがある。この値と計測信号１２４の値を比較して一致していなければ加算器１２３に１を送る。一致していれば０を送る。さらに計測信号１２４の値をレジスタに書き込む。このようにして、計測信号１２４の信号変化があった場合に１を出力、あっていない場合に０を出力する機能が実現できる。あとは信号変化検出回路１２２が出力した１の個数を数えればよい。レジスタ１２１、加算器１２３と信号変化検出回路１２２を図２４のように結線すればレジスタ１２１に１の個数が保持される。
【００１７】
サンプル期間カウンタ１１０は基準クロックのエッジの数を数えている。期間として１０００を与え、基準クロックが１００ＭＨｚの場合、１０００＊１０（ｎｓ）時間のシミュレーションが進んだらトリガ１１３に１がたつ。
【００１８】
トリガ１１３に１がたったら、制御用コンピュータ１０１から計測回路１１５〜計測回路１１７の中のレジスタ（計測回路１１５の場合、レジスタ１２１）の値を読み出し、記憶媒体に記録する。これで一連の計測の手続きである。更に次の期間のトリガ回数を計測する場合、前述の手続きをもう一度実行すれば、次の区間のデータが記憶媒体に記録される。
【００１９】
この参考技術の方法では、トリガ１１３に１が立って、シミュレーションが終わって、計測回路内のカウンタ値（計測回路１１５の場合、レジスタ１２１の値）を制御用コンピュータ１０１に取り出しているため、値を取り出している期間はプログラマブルデバイス１３０の被評価回路１２７は動作していない。前述の通り、電力測定の場合、通常の性能評価に比べて計測回路が多くなる傾向がある。正確に測定する場合にはネット数と同数のカウンタ値を抽出することになる。このため、シミュレーションを停止している期間が長くなり、ハードウェアシミュレーション全体の所要時間が長くなる、という技術的課題がある。
【００２０】
また、以下のような別の技術的課題もある。通例、エミュレータはネットリストを入力とする。ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）の場合であっても通例内部で論理合成してネットリストに展開されている。このため、多ビットのレジスタは、一旦、１ビットのレジスタにマッピングされることになる。このため、多ビットのレジスタの値を１回のトランザクションで転送できず、複数回のトランザクションに分けられることがある。もし、利用するエミュレータがレジスタを複数回にわけてしまうシステムの場合、これもシミュレーション実行時間の長時間化を引き起こす一因になり、技術的課題である。
【００２１】
なお、特許文献１には、テストベクタのビット状態を時系列に保持する複数のレジスタと、このレジスタのビット変化からテストベクタのトグル変化を検出する検出器と、検出回数を加算する加算器およびトグル回数格納用シフトレジスタをＦＰＧＡに構築して、消費電力測定対象回路のトグル回数を計測する技術が開示されている。しかし、この特許文献１では、計測されたトグル回数等の情報の外部への取り出しの効率化に関する上述の技術的課題は認識されていない。
【００２２】
特許文献２には、集積回路中の消費電力を算出すべき対象論理回路に、ゲートの信号変化回数を計測する計測回路を付加してデバイスを構成し、計測された信号変化回数を積算することで、論理回路の消費電力を算出する技術が開示されているが、やはり、計測結果を取り出す場合における上述のような技術的課題は認識されていない。
【特許文献１】特開２００２−２８８２５７号公報
【特許文献２】特開２００４−６２２３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
本発明の目的は、被測定回路等の消費電力を評価するためのハードウェアシミュレーションの所要時間を短縮して、被測定回路等の迅速な消費電力の評価を行うことが可能な消費電力評価技術を提供することにある。
【００２４】
本発明の他の目的は、被測定回路等の消費電力を評価するためのハードウェアシミュレーションにおいて論理物量や回路面積等を増加させることなく、被測定回路等の迅速な消費電力の評価を行うことが可能な消費電力評価技術を提供することにある。
【００２５】
本発明の他の目的は、消費電力評価工程の回路構築における労力の軽減および誤りの低減を実現することが可能な消費電力評価技術を提供することにある。
【課題を解決するための手段】
【００２６】
本発明の第１の観点は、消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す第１工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する第２工程と、
を含む消費電力評価方法を提供する。
【００２７】
本発明の第２の観点は、消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行う消費電力評価方法を提供する。
【００２８】
本発明の第３の観点は、転送データ量を削減するためのパッキングに必要なデータ構造情報を生成するパッキング工程、
被評価回路に計測データを転送する転送手段を生成する転送手段生成工程、
前記転送手段を付加した前記被評価回路をハードウェア方式のシミュレーションシステムでシミュレーションを実行し、前記被評価回路の消費電力の算出の基礎となる評価情報を収集し、前記データ構造情報に基づいてパックしつつ前記転送手段を経由して外部に出力するエミュレーション工程、
前記データ構造情報に基づいて前記評価情報をアンパックして所望のデータを抽出する抽出工程、
前記抽出工程で抽出した前記データを前記電力解析ツールに入力し、前記被評価回路の消費電力を計算する消費電力算出工程、
を含む消費電力評価方法を提供する。
【００２９】
本発明の第４の観点は、消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、
前記転送手段における転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を備え、
前記シミュレーションでは、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を実行する消費電力評価システムを提供する。
【発明の効果】
【００３０】
本発明によれば、被測定回路等の消費電力を評価するためのハードウェアシミュレーションの所要時間を短縮して、被測定回路等の迅速な消費電力の評価を行うことが可能となる。
【００３１】
また、被測定回路等の消費電力を評価するためのハードウェアシミュレーションにおいて論理物量や回路面積等を増加させることなく、被測定回路等の迅速な消費電力の評価を行うことが可能となる。
【００３２】
また、消費電力評価工程の回路構築における労力の軽減および誤りの低減を実現することが可能となる。
【発明を実施するための最良の形態】
【００３３】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図１は、本発明の一実施の形態である消費電力評価方法の作用の一例を示すフローチャートであり、図２は、本実施の形態の消費電力評価方法を実施するハードウェアシミュレーション環境の構成の一例を示す概念図である。
【００３４】
本実施の形態ではステップ・バイ・ステップで効率的なトランザクションを生成し、高速なシミュレーションを実現する消費電力評価方法を開示する。
本実施の形態の消費電力評価方法には、１回のトランザクションにおける有効ビット数を増やすパッキング工程２００、パッキングされたデータの転送順序とパッキングを実現するバスの生成と転送時間に間に合うバスの並列化を行い、生成したバスや計測回路等を被評価回路に埋め込む計測回路挿入工程２０１、転送回路をもった被測定回路をハードウェアシミュレーションして、トグル回数を収集するエミュレーション工程２０２、収集されたデータはパックされているので、パックされているデータをアンパックして所望のデータを抽出する抽出工程２０３、抽出したデータを既存の電力解析ツールで電力解析を行う電力解析工程２０４をもち、シームレスにハードウェアシミュレータ３００を用いて効率的なトグル回数等の情報のサンプリングおよび外部システムへの転送を実現する。
【００３５】
更に、本実施の形態では消費電力評価方法の明示および自動化により、ハードウェアシミュレーションの高速化を図るための作業の増大を低くおさえる。
すなわち、ハードウェアシミュレーションの高速化とハードウェアシミュレーションのセットアップ、電力解析作業の短時間化を両立させる消費電力評価方法を提供する。
【００３６】
また、後述のように、計測回路挿入工程２０１では複数の転送方法を提供する。各々の転送方法は、ハードウェアシミュレーションの制御方法、回路面積の増加量と精度誤差に違いがある。また精度を低下させる誤差要因を縮小させる方法を提供する。これらの方法が開示されることより、ユーザは、面積増加量と精度誤差のトレードオフ、ハードウェアのシミュレーション方法を制御できるようになる。
【００３７】
図２に例示されるように、実施の形態のハードウェアシミュレーション環境は、ハードウェアシミュレータ３００、制御コンピュータ３０１、記憶装置３０２およびＰＣＩバス３０３を含んでいる。
【００３８】
ハードウェアシミュレータ３００が、たとえばエミュレータの場合には、エミュレータ・システムが提供するシミュレーション制御機能を利用してハードウェアシミュレータ３００を制御する。
【００３９】
ハードウェアシミュレータ３００が、たとえば、プロトタイプボードの場合、論理合成等の技術により、後述の、ＰＣＩインタフェース回路等のバスインタフェース３６０と、エミュレーションシステム制御部３７０を作成し、ハードウェアシミュレータ３００に搭載する。
【００４０】
また、ハードウェアシミュレータ３００のバスインタフェース３６０を介してエミュレーションシステム制御部３７０と通信をするドライバプログラムを制御コンピュータ３０１に実装して、制御コンピュータ３０１で実行し、インタラクティブにハードウェアシミュレータ３００を制御する。
【００４１】
最初にパッキング工程２００について説明する。ここでは図３に例示される被評価回路４００が評価対象であったとする。
被評価回路４００には、クロック４２０、クロック４２１、クロック４２２の３本のクロック信号がある。部分回路４１０、部分回路４１１、部分回路４１２はそれぞれクロック４２０（ｃｌｏｃｋ１，５０ＭＨｚ）、クロック４２１（ｃｌｏｃｋ２，７５ＭＨｚ）、クロック４２２（ｃｌｏｃｋ３，１００ＭＨｚ）で駆動されているレジスタおよびＲＡＭを含み、さらに各々に含まれるレジスタで駆動される組み合わせ回路を含む。
【００４２】
また、ここでは、被評価回路４００の全回路要素を計測対象とする場合について説明するが、実用上は計測対象を、被評価回路４００内の一部の回路ブロックに絞ることが考えられる。その場合、計測対象外の処理は省略するものとする。
【００４３】
パッキング工程２００では、最初にクロックツリーを既存の方法で抽出する。クロック４２０〜４２２それぞれについて繋がる全クロックネット（つまりクロックドメイン）を抽出する。
【００４４】
この抽出方法としては、被評価回路４００のネットリストをメモリ空間に展開して、クロック４２０からネットを順番にたどって全ネットのリストを生成する方法がある。または、ネーミングルールで抽出可能な回路であればネーミングルールで抽出するとしてもよい。ここではクロックドメインが明らかなネットのリストをクロックドメイン別クロックネットリストとよぶことにする。もし各々のクロックドメインが抽出できないが、クロック４２０〜４２２のいずれかに繋がる全クロックネットが抽出できる場合には、クロックネットをすべて抽出する。ここでは、共通ドメインクロックネットリストとよぶことにする。また、クロックネットを抽出する手段がない場合には抽出は行わない。
【００４５】
クロックドメイン別クロックネットリストがある場合、さらに入力回路からそれぞれのクロックドメインのクロックでドライブされているレジスタのリストを既存の方法で抽出する。この抽出方法としては、クロックの場合と同様、被評価回路４００のネットリストをメモリ空間に展開して、ネットをたどってレジスタを探す方法がある。これによりレジスタのリストを生成することができる。これをクロックドメイン別レジスタリストと呼ぶことにする。更にクロックドメイン別レジスタリストにあるレジスタで駆動されている組み合わせ回路を既存の方法で抽出することにより、クロックドメイン別の組み合わせ回路リストを生成することができる。見つける方法はレジスタの場合と同様である。
【００４６】
トグル回数としては０→１変化（立ち上がりエッジ）も、１→０変化（立ち下がりエッジ）も検出することが考えられるが、本実施の形態では立ち上がりエッジのみ数える場合を説明する。立ち上がりエッジ数を２倍すればトグル回数を求めることができる。
【００４７】
最初にサンプリング期間Ｔ＿ＳＡＭＰＬＩＮＧを指定する。ここではＴ＿ＳＡＭＰＬＩＮＧ＝４００、０００（ｎｓ）の場合を説明する。クロック４２２（１００ＭＨｚ）は周期が１０（ｎｓ）なので、最大４０，０００（立ち上がりエッジ）が含まれる。従って、ｌｏｇ２（４０，０００）以上の整数ビットあれば計測可能である。従って１６ビットあれば十分である。従って、切り上げ（ｌｏｇ２（Ｔ＿ＳＡＭＰＬＩＮＧ／クロック周期））で最小ビット数を求めることができる。クロックドメイン別クロックネットリストがある場合には、クロック４２０、クロック４２１についても同様にしてそれぞれ１５ビット、１６ビットを算出する。ない場合には、すべて１６ビットにする。
【００４８】
次に、クロックドメイン別レジスタリスト（または組み合わせリスト）がある場合にはクロックのビット幅／２のビット幅を割り当てる。もし、クロックドメイン別レジスタリストがない場合でクロックネットリストがある場合、レジスタまたは組み合わせ回路がどのクロックで駆動されているかわからないので、最速クロックで駆動されているものとする。図３の例の場合、クロック４２２が最も周波数が高いので、レジスタ／組み合わせ回路に対して１５ビットを割り当てる。もし、クロックネットリストもない場合、クロックネットかレジスタか区別がつかないので、クロック４２２と同じ１６ビットを全ネットに割り当てる。このようにして、ネットごとの立ち上がりエッジ回数を計測するのに必要なビット数が求まる。
【００４９】
以下の説明では、簡単のため、クロック４２０〜４２２（ｃｌｏｃｋ１，ｃｌｏｃｋ２，ｃｌｏｃｋ３）の３本のクロックと、部分回路４１０に含まれるレジスタ出力４３０（ｓｉｇ１）と部分回路４１１に含まれるレジスタ出力４３１〜４３２（ｓｉｇ２，ｓｉｇ３）の３本が計測対象の場合を例示する。また、前記方法により、クロックドメイン別クロックネットリスト、クロックドメイン別レジスタリストが求まり、前記方法により、必要ビット数が図４のように算出されたとする。以下この対応テーブル５１０を使って説明する。図４の対応テーブル５１０には、クロックドメイン５１１、信号名５１２、ビット数５１３、クロックドメイン５１４が、個々のクロックドメイン毎に対応付けられて格納されている。
【００５０】
次に計測対象になっている信号をパックする。ＰＣＩバス３０３のバス幅がたとえば、３２ビットの場合、３２ビットに近くなるようにパックすることで転送回数（バストランザクション）を減らす。ここで、サイズにのみ着目してつめてもよいし、電力解析工程２０４の処理の都合にあったつめ方をしても良い。例えば、サイズのみに着目する場合、リストの先頭から順番に３２ビット長のＭＳＢ側から割り当てて行き、３２ビット幅に入りきらなくなったら次の３２ビットのＭＳＢ側から同様に割り当てる処理を行う。これを繰り返すことにより、パックすることができる。例えば、図４の対応テーブル５１０のクロックドメインを上述の方法で割り当てると、図５のようになり、パックしない場合の６ワードから、３ワード長のデータにパックできる。図５で左端の０〜２の数はアドレスを表し、転送順序を表しているものとする。
【００５１】
一方、図６には、電力解析工程２０４の処理にあわせた場合のパック例を示す。電力解析工程２０４で、クロックに関してはクロックネットと信号名とトグル回数の表が必要であるが、レジスタ・組み合わせ回路の場合には、全レジスタ・全組み合わせ回路のトグル回数の平均でよい場合、レジスタ・組み合わせ回路に関しては信号名を保存する必要がない。この場合、クロック（クロック４２０〜クロック４２２）を先につめ、レジスタ・組み合わせ回路の信号（レジスタ出力４３０〜レジスタ出力４３２）を次につめる。後者はクロックドメインでビット数が共通なのでクロックドメインごとにつめる。
【００５２】
例えば、図４の対応テーブル５１０の場合、図６のようにつめる。更に、図４の対応テーブル５１０におけるクロックの信号名５１２のリスト部分（信号名ｃｌｏｃｋ１〜ｃｌｏｃｋ３）のみを記憶する。更に、データ構造情報２１０に、クロック：０アドレス〜１アドレス、ｃｌｏｃｋ１ドメイン：１４ビット：２アドレス〜２アドレス：１個、ｃｌｏｃｋ２ドメイン：１５ビット：３アドレス〜３アドレス：２個という情報が、後段のアンパック処理でわかるように記録する。たとえば、データ構造情報２１０を、図７のように記述する。
【００５３】
これにより、抽出工程２０３において、クロックに関してはクロック名と立ち上がりエッジの回数の対応表をつくることができる。また、レジスタ・組み合わせ回路の信号はパッキングアドレス表（データ構造情報２１０）を使って解析して、立ち上がりエッジ回数を抽出し、抽出したデータを平均して、平均値を出す。これにより電力解析工程２０４で必要なデータをそろえることができる。アクティブ期間計測の場合には基準クロックでビット数を決める。
【００５４】
次に計測回路挿入工程２０１について説明する。ここでは、被評価回路４００（後述の図８の被評価回路３１０）の回路データ（ネットリスト）に後述の計測回路３２０、転送回路３３０を追加する場合を説明する。
【００５５】
この他にもいくつか方法がある。転送回路３３０をプロトタイピングボードやエミュレータ内部のプログラマブルなＬＳＩを搭載したボード上に形成してもよい。さらに、計測回路３２０を専用チップ上に用意して、このチップをボード上に置いても良い。転送回路３３０はボード上に専用のバスとして設計してもよいし、より一般的なバスを利用するとしてもよい。
【００５６】
エミュレータには、プログラマブルなＬＳＩ間のワイヤ接続をより汎用的なバスを使って、ブロードキャスト通信により仮想的に接続するものがある。このようなバスを利用した転送が後者の例になる。いずれの方法も、同等の回路を、ＦＰＧＡ等のプログラマブルなＬＳＩ上で実現するか、専用のチップやボード上の配線で実現するかの違いなので、以下はプログラマブルなＬＳＩ上に計測回路３２０、転送回路３３０も搭載する例にしぼって説明する。
【００５７】
計測回路３２０、転送回路３３０の例を図８、図９、図１０、図１１、図１２に示す。なお、図８、図９、図１０、図１１、図１２で、共通の要素には同一の符号を付して重複した説明は割愛する。
【００５８】
いずれも転送回路３３０をトークンリングによるバスで実現している。これにより、計測結果がバーストでＦＩＦＯに書き込まれる。
図８、図９は被評価回路３１０の測定（評価結果３２７の収集）と記憶装置３０２（ＨＤＤ）に書き込む処理を並列化したものである。
【００５９】
図８に例示されるように、本実施の形態のハードウェアシミュレータ３００は、被評価回路３１０、計測回路３２０、転送回路３３０、制御部３４０、ＦＩＦＯバッファ３５０、バスインタフェース３６０を含んでいる。
【００６０】
被評価回路３１０は、複数の対象信号３１１の各々を計測回路３２０に出力している。
計測回路３２０は、信号変化検出回路３２１、加算器３２２、レジスタ３２３、ラッチ３２４、ゲート端子３２５、０クリア端子３２６を含んでいる。
【００６１】
信号変化検出回路３２１は、被評価回路３１０の対象信号３１１の変化を計測し、変化を検出する毎に加算器３２２をインクリメントする。
レジスタ３２３は、加算器３２２のカウント値を保持し、０クリア端子３２６から入力される０クリア信号３４８にて０に初期化され、この初期化の契機で加算器３２２も初期化する。
【００６２】
ラッチ３２４は、ゲート端子３２５から入力される結果出力タイミング信号３４７を契機としてレジスタ３２３の値を取り込んで保持し、評価結果３２７としてセレクタ３３１に出力する。
【００６３】
転送回路３３０は、セレクタ３３１、イネーブルラッチ３３２を含んでいる。
セレクタ３３１は、イネーブルラッチ３３２からの選択信号３３３に基づいて、複数の計測回路３２０の各々から出力される評価結果３２７の一つを選択してＦＩＦＯバッファ３５０に出力する動作を行う。
【００６４】
すなわち、本実施の形態の場合、イネーブルラッチ３３２は計測回路３２０の数だけ多段に構成され、各段のイネーブルラッチ３３２は、最段のイネーブルラッチ３３２に入力される０クリア信号３４８を契機として順次後段に、選択信号３３３のＯＮ状態を示すビットがシフトされ、この選択信号３３３のシフトによって、セレクタ３３１における、複数の計測回路３２０（計測回路０〜計測回路２）の各々に対応する評価結果３２７の選択操作が順次切り替えられる。
【００６５】
制御部３４０は、サンプル期間カウンタ３４１、期間設定／判定部３４２、測定切り替えタイミング判定部３４３、転送タイミング判定部３４４、０クリアラッチ３４５を含んでいる。
【００６６】
サンプル期間カウンタ３４１は、基準クロック３４６によって駆動されるカウンタである。
期間設定／判定部３４２は、外部から設定され期間値とサンプル期間カウンタ３４１のカウンタ値が等しくなった時に、サンプル期間カウンタ３４１を初期化する。
【００６７】
測定切り替えタイミング判定部３４３は、サンプル期間カウンタ３４１のカウンタ値が０の時に、結果出力タイミング信号３４７を０クリアラッチ３４５および複数の計測回路３２０のゲート端子３２５に同時に入力する。
【００６８】
０クリアラッチ３４５は、結果出力タイミング信号３４７を契機に、０クリア信号３４８を、転送回路３３０のイネーブルラッチ３３２、および複数の計測回路３２０の０クリア端子３２６に同時に入力する。
【００６９】
転送タイミング判定部３４４は、サンプル期間カウンタ３４１のカウンタ値に応じて、書き込み要求信号３４９をＦＩＦＯバッファ３５０に出力する。
ＦＩＦＯバッファ３５０は、転送タイミング判定部３４４からの書き込み要求信号３４９の入力を契機としてセレクタ３３１で選択された評価結果３２７を取り込んで保持する。
【００７０】
バスインタフェース３６０は、ＰＣＩバス３０３とのバスインタフェースを実現し、制御コンピュータ３０１の指示等に基づいて、ＦＩＦＯバッファ３５０から評価結果３２７を記憶装置３０２に読み出す。
【００７１】
制御部３４０の期間設定／判定部３４２がサンプリング期間の終了を検知して、自動で次のサンプリング期間を計測する。ハードウェアシミュレータ全般に適用できる。図８等の例では、記憶装置３０２への書き込み時間がサンプリング期間以内に収まる場合の例を示している。もし、サンプリング期間を超える場合にはなんらかの対策が必要である。例えば、記憶装置３０２への書き込み時間がサンプリング期間を超える時間だけ、被評価回路３１０のクロックを停止する方法がある。
【００７２】
図８はサンプリング期間の最初で、０クリア信号３４８によって、一斉に計測回路３２０のレジスタ３２３を０クリアしている。このため、ＦＩＦＯバッファ３５０に集積される立ち上がりエッジ回数のデータ（評価結果３２７）は正確に同じサンプリング期間で計測した値になる。この図８のハードウェアシミュレータ３００の回路では、計測データ転送バスを構成する転送回路３３０の回路増分に加えて、個々の計測回路３２０内に設けられたラッチ３２４の回路増分が加わる。どちらも、対象信号３１１の本数に比例して増加するため、ハードウェアシミュレータ３００の資源を比較的多く使用する。
【００７３】
そこで、図９のように、個々の計測回路３２０のラッチ３２４の部分を削除して、論理規模を削減し、ハードウェアシミュレータ３００における資源の節約を行うこともできる。
【００７４】
すなわち、図９の例では、結果出力タイミング信号３４７を直接にイネーブルラッチ３３２に入力し、各段のイネーブルラッチ３３２の選択信号３３３を次段の個々の計測回路３２０の０クリア端子３２６に入力することで、個々の計測回路３２０毎に、レジスタ３２３からの評価結果３２７の取り出しと、その後のレジスタ３２３のクリアを段階的に連続して行うようにしている。
【００７５】
すなわち、図９の構成のハードウェアシミュレータ３００では、個々の計測回路３２０において、レジスタ３２３の値をＦＩＦＯバッファ３５０に送る順番がきたら、当該ＦＩＦＯバッファ３５０に転送する。そして、次のサイクルでレジスタ３２３を０クリアし、次のサンプリング期間のシミュレーションが開始される。このため、各々の計測回路３２０で異なるサンプリング期間を利用している。もし、１００ＭＨｚのクロックドメインに属する信号線を１０００本計測した場合、１０μｓだけずれる。もし、サンプリング期間が１ｍｓの場合、ズレは１％にすぎない。このようなケースではズレを無視することができる。
【００７６】
このように、図８および図９の例では、ハードウェアシミュレータ３００における一つの計測回路３２０における評価結果３２７の外部への転送と、他の計測回路３２０における計測処理（シミュレーション）とが並行して実行されるので、ハードウェアシミュレータ３００内の複数の計測回路３２０から計測回路３２０への評価結果３２７等の計測データの収集を短時間に行うことができる。
【００７７】
図１０、図１１はサンプリング期間ごとに制御コンピュータ３０１に制御を戻す方法の一例を示している。
図１０は、上述の図８に対応し、計測回路３２０を一斉に０クリアする場合であり、図１１は、上述の図９に対応し、計測回路３２０を個別に０クリアする場合である。
【００７８】
すなわち、この図１０および図１１の場合には、サンプル期間カウンタ３４１および期間設定／判定部３４２のループに、制御コンピュータ３０１が介入してシミュレーションの開始／停止を制御する。すなわち、期間設定／判定部３４２からの出力は、トリガ信号３４２ａとして制御コンピュータ３０１に入力され、サンプル期間カウンタ３４１に対しては、制御コンピュータ３０１から０クリア信号３０１ａが入力されることで、制御コンピュータ３０１が、シミュレーションの開始／停止を制御する。
【００７９】
この場合、期間設定／判定部３４２からの出力は、トリガ信号３４２ａとして、制御コンピュータ３０１に入力される。また、制御コンピュータ３０１からサンプル期間カウンタ３４１には、０クリア信号３０１ａが入力される。
【００８０】
そして、期間設定／判定部３４２から出力されるトリガ信号３４２ａにて、制御コンピュータ３０１はハードウェアシミュレータ３００のシミュレーションを止める。エミュレーションシステム制御部３７０以外のクロックをマスクする。たとえば、エミュレーションシステム制御部３７０以外のクロックに０をフォースする。
【００８１】
更に、すべてＦＩＦＯバッファ３５０がエンプティになることをトリガ条件してシミュレーションを実行する。トリガ信号３４２ａが真になってシミュレーションが停止したら、サンプル期間カウンタ３４１の０クリアに０クリア信号３０１ａの１を入力、１クロックすすめて、０クリアに０クリア信号３０１ａの０を入力して、トリガが１になるまでシミュレーションを実行する。このようにすると外部バス（ＰＣＩバス３０３）の転送速度が遅い場合にも適用できる。例えば、記憶装置３０２が遅い場合の転送や、制御コンピュータ３０１からＦＩＦＯバッファ３５０のデータを読み出す処理に、ハードウェアシミュレータ３００のシミュレーションを確実に同期させることができる。
【００８２】
図１２は、ハードウェアシミュレータ３００における転送回路３３０の転送経路（バス）を並列化する方法を示したものである。
この場合、転送回路３３０では、複数のセレクタ３３１およびセレクタ３３４が並列に設けられ、各々に対応して、ＦＩＦＯバッファ３５１およびＦＩＦＯバッファ３５０が設けられている。また、個々のＦＩＦＯバッファ３５０およびＦＩＦＯバッファ３５１の転送タイミングを制御するための転送タイミング判定部３４４、転送タイミング判定部３４５が個別に設けられている。
【００８３】
そして、複数の計測回路３２０からの評価結果３２７が並列に、セレクタ３３１およびセレクタ３３４を介して、ＦＩＦＯバッファ３５１およびＦＩＦＯバッファ３５０に出力される。なお、この場合、計測回路３２０のレジスタ３２３は逐次、選択信号３３３によって０クリアされる。
【００８４】
すなわち、この図１２の例では並列度を２にし、複数の計測回路３２０から出力される評価結果３２７を含むリストの前半１／２をセレクタ３３１を介してＦＩＦＯ０（ＦＩＦＯバッファ３５０）にいれ、当該リストの後半１／２をＦＩＦＯ１（ＦＩＦＯバッファ３５１）にいれる回路をハードウェアシミュレータ３００に生成している。バスインタフェース３６０はＦＩＦＯ０のデータをすべて送り出したのち、ＦＩＦＯ１に送りだすようにすればリストと同じ順番で記憶装置３０２に書き込むことができる。
【００８５】
あるいは、制御コンピュータ３０１からＦＩＦＯ０をすべて読み、次に、ＦＩＦＯ１をすべて読む方法を用いてもよい。もちろん、リストの奇数番目をＦＩＦＯ０、リストの偶数番目をＦＩＦＯ１に詰める回路を生成して、ＦＩＦＯ０、ＦＩＦＯ１を交互に読み出して記憶装置３０２に書き込む構成としても良い。また、制御コンピュータ３０１から、ＦＩＦＯ０、ＦＩＦＯ１を交互に読むとしてもよい。バスインタフェース３６０でインターリーブして送り出すようにして、制御コンピュータ３０１がシーケンシャルに読めるようにしてもよい。この方法を使うことで、図１２の半並列化回路の場合、サンプリング期間のズレ幅を縮小する効果がある。
【００８６】
図１３に、データをパッキングする方法を示す。対象信号３１１としてｃｌｏｃｋ０，ｃｌｏｃｋ１を計測する計測回路３２０が、それぞれ計測回路０、計測回路１とする。ｃｌｏｃｋ０，ｃｌｏｃｋ１はともに１６ビットの評価結果３２７（計測結果）がでる。計測結果をそれぞれＤ０［１５：０］、Ｄ１［１５：０］とする。この時、セレクタに｛Ｄ０［１５：０］、Ｄ１［１５：０］｝を送る。この方法により、パッキング工程２００で計画した並び方をした３２ビットデータをＦＩＦＯバッファ３５０に格納できる。
【００８７】
以上の方法により、評価結果３２７を転送する転送回路３３０、計測回路３２０を生成し、この計測回路３２０、転送回路３３０と被評価回路３１０を接続した設計データ（ネットリスト）をハードウェアシミュレータ３００内に出力して、シミュレーション回路を構築する。
【００８８】
次にエミュレーション工程２０２について説明する。エミュレーション工程２０２ではハードウェアシミュレータ３００の場合もプロトタイプボードの場合も、標準の方法でプログラマブルなデバイスに回路データをダウンロードする。これによりハードウェアの動作をプログラマブルなデバイスで実行できる状態になる。ハードウェアシミュレータ３００の場合には通例、対応した制御ソフトウェア３０１−１が制御コンピュータ３０１に搭載されている。この制御コンピュータ３０１に対してコマンドを発行してハードウェアシミュレータ３００の制御を行う。また、通例、コマンドは手動で入力するほかにスクリプト言語で記述してバッチ処理できるようになっている。
【００８９】
コマンドの例を示す。エミュレーションを停止するトリガを検出するコマンドが  ｓｔｏｐ  −ｔｉｍｅ  ＜時間Ｎ＞  −ｉｆ  ｛＜信号名＞  ＝＝  ＜値＞｝  で、シミュレーションを実行開始した時点から＜時間Ｎ＞たったのち、もし、＜信号名＞＝＝＜値＞が真になったらシミュレーションを停止する。ｒｕｎでシミュレーションを実行する。
【００９０】
この場合、ｓｔｏｐコマンドの条件が成立するまで停止しない。ｒｕｎ  ＜サイクル数Ｎ＞で＜サイクル数Ｎ＞実行したのち停止する。
ｍｅｍｏｒｙ  −ｄｕｍｐ  ＜メモリインスタンス名＞  −ｓｔａｒｔ  ＜開始アドレス＞  −ｅｎｄ  ＜終了アドレス＞  −ｆｉｌｅ  ＜出力ファイル名＞は、＜メモリインスタンス名＞  のアドレス＜開始アドレス＞から＜終了アドレス＞のデータをリード、リードしたデータ＜出力ファイル名＞に書き出すコマンドとする。
【００９１】
これは一例であるが、通例、エミュレータ（ハードウェアシミュレータ３００のエミュレーションシステム制御部３７０）にはこのようなコマンドが予め用意されている。これらを使って制御すればよい。
【００９２】
例えば図１４のようなスクリプトを用意する。これはエミュレータの制御スクリプトがＴＣＬ（Ｔｏｏｌ  Ｃｏｍｍａｎｄ  Ｌａｎｇｕａｇｅ）／ＴＫ（Ｔｏｏｌ  Ｋｉｔ）の拡張になっている場合の例で、構文はＴＣＬ／ＴＫと同じである。この図１４のスクリプトの記述はハードウェアシミュレータ３００に８回の計測結果のダンプを指示した例になっている。半並列回路の場合、このような制御でデータの転送が行える。
【００９３】
本実施の形態のような並列回路の場合、ハードウェアシミュレータ３００にＰＣＩバスマスター回路（バスインタフェース３６０）を搭載する。プロトタイプボードでＰＣＩバスインタフェースがある場合やエミュレータにＰＣＩと繋がる外部バスが存在する場合には、バスインタフェース３６０の中にＰＣＩバスマスター回路を入れる。ボードやエミュレータにバスマスター回路が搭載され、これを制御可能なドライバがあればこのドライバを用いる。転送にはよく知られたＰＣＩバスマスターＤＭＡ転送を行う。これにより、記憶装置３０２に、ハードウェアシミュレータ３００で得られた評価結果３２７を書き込む。
【００９４】
以上の方法により、図８〜図１１に例示したように、転送回路３３０が半並列回路の場合、あるいは図１２のように転送回路３３０が並列回路の場合、のいずれであっても、所望のデータ（計測値ログ２１１）を記憶装置３０２に集積することができる。
【００９５】
次に抽出工程２０３を説明する。ここでは、計測値ログ２１１がバイナリーフォーマットで、上述の図６に例示したデータ構造情報２１０で書き込まれている場合を説明する。例えば、３回計測データをとった場合、計測値ログ２１１は、図１５のようになる。ここで、計測値ログ２１１を、図７のデータ構造情報２１０を用いて解析する。
【００９６】
たとえば、図１５の計測値ログ２１１のファイルを図１６に例示されるソースコードのアルゴリズムで解析（パーズ）すると、ｃｌｏｃｋ１〜ｃｌｏｃｋ３のデータを、図７のｄａｔａ［０］〜ｄａｔａ［２］に書き込める。次にドメインごとに図１６と同様のパーズ処理をして、合計値を算出、信号総数を算出、合計値／信号総数で平均値を算出する。以上により、パッキングしたデータ（評価結果３２７）を復元できる。更に復元したデータを電力解析工程２０４で用いる電力解析ツールの入力フォーマットに加工する。これを電力解析工程２０４に渡す。
【００９７】
電力解析工程２０４で抽出工程２０３からもらった入力データを電力解析ツールにかける。これにより消費電力を得る。
以上の方法のうち全部または一部を自動化してもよい。
【００９８】
このように、本実施の形態の消費電力評価方法によれば、ハードウェアシミュレータ３００内に構築された被評価回路３１０に対して、当該ハードウェアシミュレータ３００と外界（制御コンピュータ３０１、記憶装置３０２など）との間における評価結果３２７の出力のための通信トランザクションの回数を削減する方法を実装できる。
【００９９】
これにより、従来課題であった通信トランザクションに起因するハードウェアシミュレーションの所要時間の増大を抑制できる。
また、複数の計測回路３２０におけるレジスタ３２３の０クリアの実行方法や、ラッチ３２４の有無等を組み合わせた複数の転送方法を提供することにより、ハードウェアシミュレーションの制御方法の選択、ハードウェアシミュレータ３００における回路量の増加と精度のトレードオフを選択的に決めることができる。
【０１００】
消費電力評価環境では少ない労力で、被測定回路の消費電力を評価できることが重要であるが、通信トランザクションをコンパクトにする方法を実装するための労力が発生する。
【０１０１】
しかし、本実施の形態の消費電力評価方法では、この通信トランザクションに関係する計測回路３２０、転送回路３３０等を、被評価回路３１０に系統的な方法で実装できるため、消費電力評価工程における労力の増大を軽減できる。
【０１０２】
更に本実施の形態に開示した消費電力評価方法は、パッキング工程２００〜電力解析工程２０４の全部または一部を、自動化または対話的な自動化で実現できるため、人手作業による時間を短縮するとともに誤りの混入を防ぐことができ、労力の増大を軽減できる。
【０１０３】
よって、本実施の形態の消費電力評価方法によれば少ない労力の作業で高速なハードウェアシミュレーションによる効率的な電力計測データの収集を実現でき、従来技術と同等程度の作業量でありながら、ハードウェアシミュレーション時間（電力計測データ収集時間）の高速化を実現することができる。
【０１０４】
更に収集タイミングの誤差を許容することにより、ラッチ３２４等の回路要素を削減するオプションにより、ユーザが、用途や目的等に応じて選択的に回路量を削減することが可能となり、従来技術に対して新たに発生するオーバーヘッドを削減することができる。
【０１０５】
次に、上述のパッキング工程２００および計測回路挿入工程２０１の各工程について、さらに詳細に説明する。
図１７、図１８、図１９は、本実施の形態の消費電力評価方法において用いられる各種情報の構成例を示す概念図である。
【０１０６】
ソースクロックリスト１１は、クロック名１１ａおよび動作周波数１１ｂからなる。
このソースクロックリスト１１は、被評価回路３１０の設計者が作成するリストである。被評価回路３１０に入力されるクロック、または、クロック生成器の出力の一覧である。各クロック名（クロック名１１ａ）と各々の動作周波数１１ｂを与える。例では、ｃｌｏｃｋ１／ｃｌｏｃｋ２／ｃｌｏｃｋ３、がソースクロックである。
【０１０７】
ＲＡＭピンネーム規則１２は、ＲＡＭモジュール１２ａ、モジュール名１２ｂを含んでいる。
ＲＡＭピンネーム規則１２は、インスタンス（回路データの実体）がＲＡＭモジュールか否かを判定する規則と、計測対象のピンを判定する規則が記載されたものである。例では、モジュール名（ＲＡＭモジュール１２ａ）がＲＡＭから始まるものをＲＡＭと判定し、そのモジュールのうち、ＷＥというポートがあったらそのピンを計測対象とすることが定義されている。図２０の例の、ハードウェア記述言語による回路データ６０１では、“ＲＡＭ １ＲＷ”というモジュールがＲＡＭ０という名前でインスタンスされ、“．ＷＥ（）”からＷＥポートを持つことがわかる。
【０１０８】
データバス幅指定１３は、外部バスの幅を指定する。本実施の形態では、外部バスは３２ビット幅のＰＣＩバス３０３を用いているので、３２ビットを指定する。
クロックドメインリスト１４は、クロック名１４ａ、追跡可能全クロック名１４ｂを含んでいる。
【０１０９】
クロックドメインリスト１４（クロックドメイン別クロックネットリスト）は、ソースクロック名（クロック名１４ａ）とこのソースクロック名からクロックバッファ／論理ゲートを介して繋がっている全信号（追跡可能全クロック名１４ｂ）の一覧である。例では、クロックバッファ、論理ゲートがソースクロックの先にないため、各々リストにはソースクロックのみが書き込まれる。
【０１１０】
擬似クロックドメインリスト１５（共通クロックネットリスト）は、クロック名１５ａ、追跡可能全クロック名１５ｂを含んでいる。
ネーミングルールによる場合、必ずしもソースクロック別にソースクロックからたどれるクロックの集合を抽出できないことがある。この場合、クロックドメインリスト１４の代わりに擬似クロックドメインリスト１５を作る。ｃｌｏｃｋ１，ｃｌｏｃｋ２，ｃｌｏｃｋ３が見つかる。ソースクロックリスト１１から最高周波数のクロックを探す。例ではｃｌｏｃｋ１がみつかる。ｃｌｏｃｋ１をクロック名にする。擬似クロックドメインリスト１５のフォーマットはクロックドメインリスト１４と同じである。
【０１１１】
全クロック化クロックドメインリスト１６は、クロック名１６ａ、全クロック名１６ｂを含んでいる。
クロックを見つけることができない場合、全信号をクロックとしてリストアップする。クロック名は擬似クロックドメインリスト１５と同様、最高周波数のクロックを選択する。全クロック化クロックドメインリスト１６のフォーマットはクロックドメインリスト１４と同じである。
【０１１２】
クロックドメイン別レジスタリスト１７は、クロック名１７ａ、レジスタ名１７ｂを含んでいる。
クロックドメイン別レジスタリスト１７は、クロックドメインリスト１４または擬似クロックドメインリスト１５をもとに各クロック名ごとにそのドメインに含まれるクロック信号と繋がるレジスタをメモリ上の回路から検索したものである。検索対象のクロック名１７ａを決める。ＴＯＰノードから全探索して、ノードタイプがレジスタのものを見つける。そのノードのクロック名が探索中のクロック名と一致するか判定する。一致したらレジスタ名１７ｂに記憶する。これによりクロックドメイン別レジスタリスト１７が生成できる。
【０１１３】
クロックドメイン別ワイヤリスト１８は、クロック名１８ａ、ワイヤ名１８ｂを含んでいる。
クロックドメイン別ワイヤリスト１８（クロックドメイン別の組み合わせ回路リスト）は、クロックドメイン別のレジスタリストと回路データからクロックドメインに属するワイヤを探すために用いられる。
【０１１４】
サンプリング期間指定１９は、変数１９ａ、値１９ｂを含んでいる。
サンプリング期間指定１９（サンプリング期間Ｔ＿ＳＡＭＰＬＩＮＧ）は、評価データを計測する期間を指定する情報である。例では４０（μｓ）を設定している。
【０１１５】
計測ＲＡＭピンリスト２０は、インスタンス名２０ａ、ピン名２０ｂを含んでいる。
ＲＡＭのインスタンス名と計測対象のポート名のリスト。メモリ上の回路を全探索し、ノードタイプのうち、計測対象の名前を持つピンを探す。この場合、ＲＡＭ０＿＿ＷＥが見つかる。従って、上記のような計測ＲＡＭピンリスト２０が生成される。
【０１１６】
データ構造情報２１は、上述の図７のデータ構造情報２１０をより詳細に例示したものである。
データ構造情報２１は、リスト名２１ａ、ポインタ２１ｂを含んでいる。ポインタ２１ｂは、後述のクロックリストサブテーブル２２〜ＲＡＭリストサブテーブル２４を指し示す。
【０１１７】
データ構造情報２１は、３種類のサブテーブルで構成される。クロックリストサブテーブル２２は各クロック名（クロック名２２ａ）と各々のクロックのトグル回数を計測するのに必要なビット数（ビット幅２２ｂ）のリストが記載される。信号リストサブテーブル２３には各クロックドメイン（クロック名２３ａ）に含まれるワイヤを計測するのに必要なビット数（ビット幅２３ｃ）およびそのクロックドメインに属するワイヤの本数（所属信号数２３ｂ）が記載される。ＲＡＭリストサブテーブル２４には、ＲＡＭのポートで計測すべきポートの名前（信号名２４ａ）とこれを計測するのに必要なビット数（ビット幅２４ｂ）が記載される。
【０１１８】
ビット表２５は、クロック名２５ａ、必要ビット幅２５ｂを含んでいる。
生成回路指示表２６は、設定項目２６ａ、属性値２６ｂを含んでいる。
生成回路指示表２６には、計測回路挿入工程２０１に与える各種のオプションが設定される。どのような転送回路３３０を生成するかを指定する。この生成回路指示表２６の設定項目２６ａへの各種情報の設定により、多様な仕様の転送回路３３０を自動的に生成させることができる。
【０１１９】
電力ツール用データヘッダ２７は、分類２７ａ、属性値２７ｂを含んでいる。
電力ツール用データ本体２８は、サンプリング回数２８ａ、タイプ２８ｂ、信号名２８ｃ、変化回数２８ｄ、アクティブ期間２８ｅ、変化平均２８ｆを含んでいる。
【０１２０】
以下、図２１は、上述の図１のフローチャートをさらに詳細に例示したフローチャートである。
パッキング工程２００では、ソースクロックリスト１１、ＲＡＭピンネーム規則１２、サンプリング期間指定１９、回路データ６０１を用いて、クロックドメインリスト１４を生成するとともに、計測ＲＡＭピンリスト２０、クロックドメイン別ワイヤリスト１８、データ構造情報２１を出力する。
【０１２１】
なお、このパッキング工程２００では、必要に応じて、ネーミングルール６００を用いることもできる。
このネーミングルール６００は、信号名の命名法をルール化したものである。設計データの可読性を向上させたり、自動化を図るために用いられる。たとえば、「クロック信号は“ｃｌｏｃｋ”から始まる信号名をつける、クロック信号以外は“ｃｌｏｃｋ”からはじめてはいけない」というように規則をつける。これにより、“ｃｌｏｃｋ”からはじめる信号名を見つけると設計者はクロック信号であると認識できる。また、アプリケーションソフトが“ｃｌｏｃｋ”から始まる信号名を探すことにより、クロック信号を抽出することができる。本実施の形態では、クロックに対して先の例の規則が設けられているとする。
【０１２２】
図２２は、パッキング工程２００をより詳細に例示したフローチャートであり、信号分離工程２００ａと、スケジューリング工程２００ｂを含んでいる。
信号分離工程２００ａでは、回路データ６０１、ソースクロックリスト１１、ネーミングルール６００、ＲＡＭピンネーム規則１２、等に情報に基づいて、クロックドメインリスト１４、クロックドメイン別レジスタリスト１７、クロックドメイン別ワイヤリスト１８、計測ＲＡＭピンリスト２０等の情報を出力する。
【０１２３】
スケジューリング工程２００ｂでは、前段の信号分離工程２００ａから出力されたクロックドメインリスト１４、クロックドメイン別レジスタリスト１７、クロックドメイン別ワイヤリスト１８、計測ＲＡＭピンリスト２０等の情報を用いて、データ構造情報２１を出力する。
【０１２４】
図２１のフローチャートに戻って、計測回路挿入工程２０１では、回路データ６０１、データバス幅指定１３、サンプリング期間指定１９、生成回路指示表２６、計測ＲＡＭピンリスト２０、クロックドメイン別ワイヤリスト１８、データ構造情報２１に基づいて、ハードウェアシミュレータ３００（被評価回路３１０、計測回路３２０、転送回路３３０、制御部３４０、ＦＩＦＯバッファ３５０、バスインタフェース３６０）を生成する。
【０１２５】
図２３は、計測回路挿入工程２０１の一例をより詳細に例示したフローチャートである。計測回路挿入工程２０１は、計測部品生成工程２０１ａ、制御部品生成工程２０１ｂ、転送回路生成工程２０１ｃ、マージ工程２０１ｄ、サンプリングサイクル算出工程２０１ｅを含んでいる。
【０１２６】
クロック・ＲＡＭ等の計測部品生成工程２０１ａは、計測回路ライブラリを適宜参照して、以下の生成手続きを実行する。
（ステップ７０１）．  ソースクロックリストから最速のクロックを見つける。ｆａｓｔ＿ｃｌｏｃｋ＝＜クロック名＞とする。
（ステップ７０２）．  ｌｉｂ＿ｔｙｐｅ  にあったクロック用のパラメタライズド・モジュール記述のモジュール名を  ｐｍ＿ｍｏｄｕｌｅ  にセットする。
（ステップ７０３）．  データバス幅指定を参照する。ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ  ＝  ＜データバス幅＞とする。
（ステップ７０４）．  被評価回路のインスタンス名をもらう。ｔａｒｇｅｔ＿ｉｎｓｔａｎｃｅ  ＝  ＜被評価回路のインスタンス名＞とする。
（ステップ７０５）．  ｃｏｕｎｔ＿ｗｉｒｅ  ＝  ０；  ｃｏｕｎｔ＿ｍｏｄｕｌｅ  ＝  ０；  ｒｅｍａｉｎ＿ｂｉｔ  ＝  ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ；  ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｔｒｕｅ；  ｐｈａｓｅ  ＝  ＣＬＯＣＫ；  を設定する。
（ステップ７０６）．  ｐｈａｓｅ＝ＣＬＯＣＫの場合、データ構造情報２１のクロックリストサブテーブル２２を参照する。このステップがコールされるたびに先頭から一行づつ参照、クロック名とビット数を得る。それぞれ、ｓｉｇ＿ｎａｍｅ＝＜クロック名＞；  ｂｉｔｓ  ＝  ＜ビット数＞；  とする。もしすべて参照済みで得られなかった場合、ｐｈａｓｅ  ＝  ＲＡＭ  にし、ｌｉｂ＿ｔｙｐｅ  にあったクロック用のパラメタライズド・モジュール記述のモジュール名を  ｐｍ＿ｍｏｄｕｌｅ  にセットする。
（ステップ７０７）．  ｐｈａｓｅ＝ＲＡＭの場合、データ構造情報のＲＡＭリストサブテーブルを参照、信号名とビット数を得る。それぞれ、ｓｉｇ＿ｎａｍｅ＝＜信号名＞；  ｂｉｔｓ  ＝  ＜ビット数＞；  とする。もしすべて参照済みで得られなかった場合、（ステップ７１３）．に分岐する。
（ステップ７０８）．  ｒｅｍａｉｎ＿ｂｉｔ  ＜  ｗｉｄｔｈ  の場合の処理。ｒｅｍａｉｎ＿ｂｉｔ  ＞  ０の場合、“ａｓｓｉｇｎ  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞[＜ｒｅｍａｉｎ＿ｂｉｔ  値−１＞  ：  ０]  ＝  ０；”  を印字する。そうではない場合何もしない。いずれの場合も、ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｔｒｕｅ  にする。
（ステップ７０９）．  ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝＝  ｔｒｕｅ  の場合、“ｗｉｒｅ  ［＜ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ値  −  １＞  ：  ０］  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞；”  を出力、ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｆａｌｓｅ，  ｃｏｕｎｔ＿ｗｉｒｅ  ＝  ｃｏｕｎｔ＿ｗｉｒｅ  ＋  １  、とする。
（ステップ７１０）．  一斉０クリアの場合、ｃｌｅａｒ＿ｎａｍｅ  ＝  “ｃｌｅａｒ＿ｓｉｇｎａｌ”  をセットする。そうでない場合、ｃｌｅａｒ＿ｎａｍｅ  ＝  “ｃｌｅａｒ＿ｓｉｇｎａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞”をセットする。
（ステップ７１１）．  インスタンスを生成する。インスタンス名を  “＜ｐｍ＿ｍｏｄｕｌｅ値＞  ｉ＿ｅｖａｌｕａｔｏｒ＿＜ｃｏｕｎｔ＿ｍｏｄｕｌｅ値＞”  とする。
【０１２７】
（ア）  ｐｈａｓｅ＝ＣＬＯＣＫの場合：  ｃｌｅａｒ端子にｃｌｅａｒ＿ｎａｍｅの値をつなぐ。ｃｋ端子に“＜ｔａｒｇｅｔ＿ｉｎｓｔａｎｃｅ値＞．＜ｓｉｇ＿ｎａｍｅ値＞”の値をつなぐ。ｒｅｓｕｌｔ端子に“ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ値  −  １＞  ：  ＜ｒｅｍａｉｎ＿ｂｉｔ値  −  ｂｉｔｓ＞］”  をつなぐ。一斉０クリア法の場合、ｇａｔｅ端子に“ｇａｔｅ＿ｓｉｇｎａｌ“をつなぐ。更に  “ｄｅｆｐａｒａｍ  ｉ＿ｅｖａｌｕａｔｏｒ＿＜ｃｏｕｎｔ＿ｍｏｄｕｌｅ値＞．Ｎ  ＝  ＜ｂｉｔｓ値＞”  を印字する。
【０１２８】
（イ）  ｐｈａｓｅ＝ＲＡＭの場合：  ｃｌｅａｒ端子にｃｌｅａｒ＿ｎａｍｅの値をつなぐ。ｃｋ端子に  ｆａｓｔ＿ｃｌｏｃｋの値をつなぐ。ｒｅｓｕｌｔ端子に“ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ値  −  １＞  ：  ＜ｒｅｍａｉｎ＿ｂｉｔ値  −  ｂｉｔｓ＞］”  をつなぐ。一斉０クリア法の場合、ｇａｔｅ端子に“ｇａｔｅ＿ｓｉｇｎａｌ”をつなぐ。更に  “ｄｅｆｐａｒａｍ  ｉ＿ｅｖａｌｕａｔｏｒ＿＜ｃｏｕｎｔ＿ｍｏｄｕｌｅ値＞．Ｎ  ＝  ＜ｂｉｔｓ値＞”  を印字する。
（ステップ７１２）．  ｃｏｕｎｔ＿ｍｏｄｕｌｅ  ＝  ｃｏｕｎｔ＿ｍｏｄｕｌｅ  ＋  １  、ｒｅｍａｉｎ＿ｂｉｔｓ  ＝  ｒｅｍａｉｎ＿ｂｉｔｓ  −  ｂｉｔｓ  とする。（ステップ７０５）．に戻る。
（ステップ７１３）．  “ａｓｓｉｇｎ  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ  値−１＞  ：  ０］  ＝  ０；”  を印字し、終了する。
【０１２９】
ワイヤ計測部品生成の生成手続きは、以下のようになる。
（ステップ７２１）．  ｌｉｂ＿ｔｙｐｅ  にあったワイヤ用のパラメタライズド・モジュール記述のモジュール名を  ｐｍ＿ｍｏｄｕｌｅ  にセットする。
（ステップ７２２）．  データバス幅指定を参照する。ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ  ＝  ＜データバス幅＞とする。
（ステップ７２３）．  被評価回路のインスタンス名をもらう。ｔａｒｇｅｔ＿ｉｎｓｔａｎｃｅ  ＝  ＜被評価回路のインスタンス名＞とする。
（ステップ７２４）．  ｃｏｕｎｔ＿ｗｉｒｅにクロック・ＲＡＭ評価部品生成終了時のｃｏｕｎｔ＿ｗｉｒｅ値をセットする。ｃｏｕｎｔ＿ｍｏｄｕｌｅにクロック・ＲＡＭ評価部品生成終了時のｃｏｕｎｔ＿ｍｏｄｕｌｅ値をセットする。ｒｅｍａｉｎ＿ｂｉｔ  ＝  ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ；  ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｔｒｕｅをセットする。
（ステップ７２５）．  データ構造情報の信号リストサブテーブルの要素ごとにクロックドメイン別生成手続きを行う。この際、ｃｌｏｃｋ＿ｎａｍｅ  ＝  ＜クロック名＞、ｂｉｔｓ  ＝  ＜ビット幅＞とする。すべての要素に対してクロックドメイン別生成手続きを行ったら終了する。
【０１３０】
クロックドメイン別生成手続きは以下のようになる。
（ステップ−ア）  クロックドメイン別ワイヤリストのうちｃｌｏｃｋ＿ｎａｍｅをクロック名にもつフィールドを参照する。このステップがコールされるたびにワイヤ名のリストをひとつづつ参照、ワイヤ名を得る。それぞれ、ｓｉｇ＿ｎａｍｅ＝＜ワイヤ名＞とする。もしすべて参照済みで得られなかった場合、（ステップ−ク）に行く。
（ステップ−イ）  ｒｅｍａｉｎ＿ｂｉｔ  ＜  ｗｉｄｔｈ  の場合の処理。ｒｅｍａｉｎ＿ｂｉｔ  ＞  ０の場合、“ａｓｓｉｇｎ  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ  値−１＞  ：  ０］  ＝  ０；”  を印字する。そうでない場合何もしない。いずれの場合も、ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｔｒｕｅ  にする。
（ステップ−ウ）  ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝＝  ｔｒｕｅ  の場合、“ｗｉｒｅ  ［＜ｄａｔａ＿ｂｕｓ＿ｗｉｄｔｈ値  −  １＞  ：  ０］  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞；”  を出力、ｉｓ＿ｉｎｓｔａｎｃｅ＿ｗｉｄｔｈ  ＝  ｆａｌｓｅ，  ｃｏｕｎｔ＿ｗｉｒｅ  ＝  ｃｏｕｎｔ＿ｗｉｒｅ  ＋  １  する。
（ステップ−エ）  一斉０クリアの場合、ｃｌｅａｒ＿ｎａｍｅ  ＝  “ｃｌｅａｒ＿ｓｉｇｎａｌ”  をセットする。そうでない場合、ｃｌｅａｒ＿ｎａｍｅ  ＝  “ｃｌｅａｒ＿ｓｉｇｎａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞”をセットする。
（ステップ−オ）  インスタンスを生成する。インスタンス名を  “＜ｐｍ＿ｍｏｄｕｌｅ値＞  ｉ＿ｅｖａｌｕａｔｏｒ＿＜ｃｏｕｎｔ＿ｍｏｄｕｌｅ値＞”  とする。
【０１３１】
（ステップ−カ）  ｃｌｅａｒ端子にｃｌｅａｒ＿ｎａｍｅの値をつなぐ。ｃｋ端子に“＜ｔａｒｇｅｔ＿ｉｎｓｔａｎｃｅ値＞．＜ｃｌｏｃｋ＿ｎａｍｅ値＞”をつなぐ。ｒｅｓｕｌｔ端子に“ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ値  −  １＞  ：  ＜ｒｅｍａｉｎ＿ｂｉｔ値  −  ｂｉｔｓ＞］”  をつなぐ。ｔａｒｇｅｔ＿ｓｉｇに“＜ｔａｒｇｅｔ＿ｉｎｓｔａｎｃｅ値＞．＜ｓｉｇ＿ｎａｍｅ値＞”をつなぐ。一斉０クリア法の場合、ｇａｔｅ端子に“ｇａｔｅ＿ｓｉｇｎａｌ”をつなぐ。更に  “ｄｅｆｐａｒａｍ  ｉ＿ｅｖａｌｕａｔｏｒ＿＜ｃｏｕｎｔ＿ｍｏｄｕｌｅ値＞．Ｎ  ＝  ＜ｂｉｔｓ値＞”を印字する。
（ステップ−キ）  ｃｏｕｎｔ＿ｍｏｄｕｌｅ  ＝  ｃｏｕｎｔ＿ｍｏｄｕｌｅ  ＋  １  、ｒｅｍａｉｎ＿ｂｉｔｓ  ＝  ｒｅｍａｉｎ＿ｂｉｔｓ  −  ｂｉｔｓ  とする。（ステップ７０５）．に戻る。
（ステップ−ク）  “ａｓｓｉｇｎ  ｅｖａｌ＿＜ｃｏｕｎｔ＿ｗｉｒｅ値＞［＜ｒｅｍａｉｎ＿ｂｉｔ  値−１＞  ：  ０］  ＝  ０；”を印字し、終了する。
【０１３２】
以上の処理により、生成物として、クロック・ＲＡＭ・ワイヤ計測回路記述が得られる。
サンプリングサイクル算出工程２０１ｅでは、サンプリング期間指定１９の  Ｓａｍｐｌｉｎｇ＿ｐｅｒｉｏｄ  とソースクロックリスト１１の最速クロックから算出する。Ｓａｍｐｌｉｎｇ＿ｐｅｒｉｏｄがＡ（秒）、最速クロックがＢ（Ｈｚ）の時、サンプリングサイクルＡ＊Ｂ（サイクル）を出力する。本実施の形態の例では、４０（μｓ）＊１００（ＭＨｚ）＝４０００（サイクル）が算出される。
【０１３３】
制御部品生成工程２０１ｂの手続きは、以下のようになる。ここでは、必要に応じて、制御部ライブラリが参照される。ライブラリ例として図２６がある。
（ステップ７５１）．  生成回路指示表２６の設定項目２６ａの「バスの本数」を調べる。１本の時、ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  に前工程からもらったｃｏｕｎｔ＿ｗｉｒｅ  値をセットする。Ｌ本の時、ａ  ＝  ｃｏｕｎｔ＿ｗｉｒｅ  ／  Ｌ  ，  ｂ  ＝  ｃｏｕｎｔ＿ｗｉｒｅ  ％  Ｌ  とする時、ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  〜  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｂ  −  １］  に  ａ＋１  をセットする。ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｂ］  〜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［Ｌ−１］  に  ａ  をセットする。また、ｅｎ＿ｌｅｎｇｔｈ  ＝  ａ＋２  とする。
（ステップ７５２）．  ｃ  ＝  ｌｏｇ２（サンプリングサイクル）の切捨てを算出し、ｂｉｔ＿ｌｅｎｇｔｈ  ＝  ｃ  ＋  １  とする。
【０１３４】
（ステップ７５３）．  制御回路モジュール名を  ｐｍ＿ｍｏｄｕｌｅにセット。
（ステップ７５４）．  ソースクロックリストから最速のクロックをみつけ、クロック名を  ｆａｓｔ＿ｃｌｏｃｋにセットする。ｗｉｒｅ  ＜ｆａｓｔ＿ｃｌｏｃｋ値＞  ＝  ＜ターゲットインスタンス名＞．＜ｆａｓｔ＿ｃｌｏｃｋ値＞；  を記述する（信号名が衝突しない場合。簡単のため本例では衝突しないものとする）。
（ステップ７５５）．  “ｃｌｅａｒ”，  “ｅｎ”，“ｅｎ＿ｄ”，  “ｐ＿ｅｎ”，  “ｐ＿ｅｎ＿ｄ”，  “ｐ＿ｐ１＿ｅｎ”，  “ｐ＿ｐ１＿ｅｎ＿ｄ”，  “ｔｒｉｇｇｅｒ”  をワイヤ宣言する。
（ステップ７５６）．  インスタンス名を  “＜ｐｍ＿ｍｏｄｕｌｅ値＞  ｉ＿ｃｏｎｔｒｏｌ”  とする。更にｃｌｏｃｋ端子にｆａｓｔ＿ｃｌｏｃｋ値をつなぐ。ｃｌｅａｒ，  ＥＮ，  ＥＮ＿Ｄ，Ｐ＿ＥＮ，  Ｐ＿ＥＮ＿Ｄ，  Ｐ＿Ｐ１＿ＥＮ，  Ｐ＿Ｐ１＿ＥＮ＿Ｄ，ＴＲＩＧＧＥＲにそれぞれ“ｃｌｅａｒ”，  “ｅｎ”，“ｅｎ＿ｄ”，  “ｐ＿ｅｎ”，  “ｐ＿ｅｎ＿ｄ”，  “ｐ＿ｐ１＿ｅｎ”，  “ｐ＿ｐ１＿ｅｎ＿ｄ”、“ｔｒｉｇｇｅｒ”をつなぐ。
（ステップ７５７）．  “ｄｅｆｐａｒａｍ  ｉ＿ｃｏｎｔｒｏｌ．Ｎ  ＝  ＜ｂｉｔ＿ｌｅｎｇｔｈ値＞；”  ，  “ｄｅｆｐａｒａｍ  ｉ＿ｃｏｎｔｒｏｌ．Ｐ＝＜ａ値＞；”  ，  “ｄｅｆｐａｒａｍ  ｉ＿ｃｏｎｔｒｏｌ．Ｍ  ＝  ＜サンプリングサイクル値＞；”  をセットする。
【０１３５】
これにより、生成物として、計測回路挿入固定の記述の後に、ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ、ｆａｓｔ＿ｃｌｏｃｋ、計測回路・制御回路記述、ｅｎ＿ｌｅｎｇｔｈ（イネーブルラッチ３３２の段数）の情報が追加されたものが生成される。
【０１３６】
転送回路生成工程２０１ｃの手続きは、一例として以下のようになる。ここでは、必要に応じて、ＦＩＦＯライブラリを用いる。
（ステップ７３１）．  データバス幅指定で指定されたバス幅のワイヤを生成回路指示表で指定されたバス本数分宣言する。名前をｔｒａｎｓ＿ｐｏｒｔ＿０  〜  ｔｒａｎｓ＿ｐｏｒｔ＿＜バス本数  −  １＞  とする。
（ステップ７３２）．  ｅｎ＿ｌｅｎｇｔｈ  ＋  １幅のシフトレジスタ  ｅｎ＿ｓｈｉｆｔ  を宣言する。
（ステップ７３３）．  ｅｎ＿ｓｈｉｆｔ［ｉ］  （  ｉ＞０）  には  ｅｎ＿ｓｈｉｆｔ［ｉ−１］  を代入する記述を生成する。ｅｎ＿ｓｈｉｆｔ［０］  に  ｅｎを代入する記述を生成する。ＮＯの時、また、ｃｌｅａｒ  をリセットとして  ｅｎ＿ｓｈｉｆｔ  に０を代入する記述にする。
（ステップ７３４）．  ｅｎ＿ｓｈｉｆｔ  をセレクタ信号とするマルチプレクサ記述を生成する。ｔｒａｎｓ＿ｐｏｒｔ＿０  には、ｅｖａｌ＿０００  〜  ｅｖａｌ＿＜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  −１＞  をマルチプレクスした出力をつなぐ。ｅｎ＿ｓｈｉｆｔ［０］  の時、ｅｖａｌ＿０００，  ｅｎ＿ｓｈｉｆｔ［ｉ］の時、ｅｖａｌ＿＜ｉ＞をｔｒａｎｓ＿ｐｏｒｔ＿０に出力するマルチプレクサを生成する。ｋ＞＝１  の時、ｔｒａｎｓ＿ｐｏｒｔ＿＜ｋ＞  には、ｅｖａｌ＿＜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｋ−１］  ＞  から  ｅｖａｌ＿＜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｋ］  −１＞  をマルチプレクスした出力をつなぐ。ｅｎ＿ｓｈｉｆｔ［０］  の時、ｅｖａｌ＿＜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｋ−１］  ＞，  ｅｎ＿ｓｈｉｆｔ［ｉ］  の時には  ｅｖａｌ＿＜ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［ｋ−１］  ＋  ｉ＞  をｔｒａｎｓ＿ｐｏｒｔ＿＜ｋ＞に出力するマルチプレクサを生成する。
【０１３７】
（ステップ７３５）．  一斉０クリア法か？がＹＥＳの時、すべての  ｃｌｅａｒ＿ｓｉｇｎａｌ＿＜ｉ＞  にｅｎをつなぐ。ＮＯの時、ｉ  ＜  ｃｏｎｔｒｏｌ＿ｄａｔａ＿ｌｅｎｇｔｈ［０］  の時、ｃｌｅａｒ＿ｓｉｇｎａｌ＿＜ｉ＞  に  ｅｎ＿ｓｈｉｆｔ［＜ｉ＞］  をつなぐ。ｃｏｎｔｒｏｌ＿ｄａｔａ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ［ｋ−１］  （ｋ＞０）  ＜＝  ｉ  ＜  ｃｏｎｔｒｏｌ＿ｄａｔａ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ［ｋ］  の時、ｃｌｅａｒ＿ｓｉｇｎａｌ＿＜ｉ＞  に  ｅｎ＿ｓｈｉｆｔ［  ｉ  −  （ｃｏｎｔｒｏｌ＿ｄａｔａ［０］  ＋  ．．．  ＋  ｃｏｎｔｒｏｌ＿ｄａｔａ［ｋ−１］）  ］  をつなぐ。
（ステップ７３６）．  一斉０クリア法か？がＹＥＳの時、ｇａｔｅ  信号にｅｎ信号をつなぐ。
（ステップ７３７）．  ＲＡＭタイプがＦＩＦＯの時、データバス幅指定のバス幅のＦＩＦＯをバス本数分インスタンスする。ＦＩＦＯ＿＜ｉ＞  の深さはｃｏｎｔｒｏｌ＿ｄａｔａ［ｉ］  ＊  ２  以上にする。任意のＦＩＦＯの  ｃｌｅａｒ  端子に  ｒｓｔ  をつなぐ。ＦＩＦＯ＿＜ｉ＞  の  ｄａｔａ  端子に  ｔｒａｎｓ＿ｐｏｒｔ＿＜ｉ＞をつなぐ。ｃｌｏｃｋ端子に  ｆａｓｔ＿ｃｌｏｃｋの値をつなぐ。
【０１３８】
（ステップ７３８）．  ＲＡＭタイプがＦＩＦＯの時、ｋ  ＜  （  ｃｏｕｎｔ＿ｗｉｒｅ  ％  バス本数）  ＦＩＦＯ＿＜ｋ＞  の  ｗｒｅｑ  端子に  ｐ＿ｐ１＿ｅｎをつなぐ。ｋ  ＞＝  （ｃｏｕｎｔ＿ｗｉｒｅ  ％  バス本数）  ＦＩＦＯ＿＜ｋ＞  の  ｗｒ＿ｒｅｑ端子に  ｐ＿ｅｎをつなぐ。
（ステップ７３９）．  ＲＡＭタイプがセーブＲＡＭの時、データバス幅指定のバス幅のセーブＲＡＭをバス本数分インスタンスする。ＳＡＶＥ＿ＲＡＭ＿＜ｉ＞  のＡには、ｌｏｇ２（ｃｏｎｔｒｏｌ＿ｄａｔａ［ｉ］  ＊  生成回路指示表２６のセーブＲＡＭ回数）の切り上げ値を設定する。任意のセーブＲＡＭの  ｃｌｅａｒ  端子に  ｒｓｔ  をつなぐ。ＳＡＶＥ＿ＲＡＭ＿＜ｉ＞  の  ｄａｔａ  端子に  ｔｒａｎｓ＿ｐｏｒｔ＿＜ｉ＞をつなぐ。ｃｋ端子にｆａｓｔ＿ｃｌｏｃｋの値をつなぐ。
（ステップ７４０）．  ＲＡＭタイプがセーブＲＡＭの時、ｋ  ＜  （  ｃｏｕｎｔ＿ｗｉｒｅ  ％  バス本数）  ＳＡＶＥ＿ＲＡＭ＿＜ｋ＞  の  ｗｅ端子に  ｐ＿ｐ１＿ｅｎをつなぐ。ｋ  ＞＝  （ｃｏｕｎｔ＿ｗｉｒｅ  ％  バス本数）  ＦＳＡＶＥ＿ＲＡＭ＿＜ｋ＞  の  ｗｅ端子に  ｐ＿ｅｎ  をつなぐ。
（ステップ７４１）．  バスマスターつきですか？がＹＥＳの時、バスマスターモジュールとＦＩＦＯモジュールを接続する。
【０１３９】
これにより、転送回路３３０に相当する転送回路記述データがクロック・ＲＡＭ・ワイヤ計測回路記述に追加される。
マージ工程２０１ｄでは、回路データ６０１（被評価回路３１０）と、上述のようにした得られた計測・制御・転送回路記述（計測回路３２０、転送回路３３０、制御部３４０、ＦＩＦＯバッファ３５０、バスインタフェース３６０、エミュレーションシステム制御部３７０）を併合して、ハードウェアシミュレータ３００を構築するための回路データが出力される。
【０１４０】
図２１のフローチャートに戻って、エミュレーション工程２０２では、ハードウェアシミュレータ３００を動作させて計測値ログ２１１を収集する。
抽出工程２０３では、計測値ログ２１１、サンプリング回数、ｆａｓｔ＿ｃｌｏｃｋ（１１−１）の情報から、電力ツール用データヘッダ２７、電力ツール用データ本体２８を抽出する。
【０１４１】
この抽出手続きの一例を以下に示す。
（ステップ７５１）．  サンプリング回数を調べて、サンプリング回数−１をサンプリング回数として出力する。
（ステップ７５２）．  サンプリング周期を出力する。
（ステップ７５３）．  計測に使ったクロック名（ｆａｓｔ＿ｃｌｏｃｋ）を出力する。
（ステップ７５４）．  ｆａｓｔ＿ｃｌｏｃｋの周波数を出力する。
（ステップ７５５）．  ｓａｍｐｌｅ＿ｃｏｕｎｔ  ＝  ０  にする。
（ステップ７５６）．  計測値ログ２１１をオープンする。
（ステップ７５７）．  ｓａｍｐｌｅ＿ｃｏｕｎｔ  がサンプリング回数になるまで、繰り返し、分析・出力処理（後述のステップ８０１〜ステップ８１８）を行う。
【０１４２】
分析・出力処理の手続きは、以下の通りである。
（ステップ８０１）．  データ構造情報２１のクロックリストサブテーブル２２を見つける。
（ステップ８０２）．  ｄｗ  ＝  データバス幅とする。また、ｎｏｋｏｒｉ  ＝  ０とする。
（ステップ８０３）．  クロックリストサブテーブル２２の上から順番に評価する。クロック名ｃｋとビット幅ｂｉｔを取り出す。もし、取り出せなかったら（すべてのクロックリストサブテーブル２２中のクロックを評価し終わったら）、（ステップ８０７）へ分岐する。
（ステップ８０４）．  もし  ｎｏｋｏｒｉ  ＝＝  ０  だったら、ファイルから１ワード（ｄｗ幅のデータ）を読み出し、変数ｘに代入する。
（ステップ８０５）．  もし  ｎｏｋｏｒｉ  ＞＝  ｂｉｔ  だったら、変数ｘ  の  ｎｏｋｏｒｉ  −  １  ビット目から  ｎｏｋｏｒｉ  −  ｂｉｔ  目の数値  ｙ  を取り出す。ｓａｍｐｌｅ＿ｃｏｕｎｔ  ＞  ０  だったら、ｃｋ  と  ｙ  を出力する。（ステップ８０３）に行く。
（ステップ８０６）．  もし  ｎｏｋｏｒｉ  ＜  ｂｉｔ  だったら、ｎｏｋｏｒｉ  ＝  ０  にして、（ステップ８０４）に行く。
（ステップ８０７）．  データ構造情報２１のＲＡＭリストサブテーブル２４を見つける。
（ステップ８０８）．  ＲＡＭリストサブテーブル２４の上から順番に評価する。信号名ｓｉｇとビット幅ｂｉｔを取り出す。もし、取り出せなかったら（すべての表中のクロックを評価し終わったら）、（ステップ８１２）へ分岐する。
【０１４３】
（ステップ８０９）．  もし  ｎｏｋｏｒｉ  ＝＝  ０  だったら、計測値ログ２１１のファイルから１ワード（ｄｗ幅のデータ）を読み出し、変数ｘに代入する。
（ステップ８１０）．  もし  ｎｏｋｏｒｉ  ＞＝  ｂｉｔ  だったら、変数ｘ  の  ｎｏｋｏｒｉ  −  １  ビット目から  ｎｏｋｏｒｉ  −  ｂｉｔ  目の数値  ｙ  を取り出す。ｓａｍｐｌｅ＿ｃｏｕｎｔ  ＞  ０  だったら、ｃｋ  と  ｙ  を出力する。（ステップ８０８）に行く。
（ステップ８１１）．  もし  ｎｏｋｏｒｉ  ＜  ｂｉｔ  だったら、ｎｏｋｏｒｉ  ＝  ０  にして、（ステップ８０９）に行く。
（ステップ８１２）．  データ構造情報２１の信号リストサブテーブル２３をみつける。
（ステップ８１３）．  信号リストサブテーブル２３の上から順番に評価する。クロック名  ｃｋ  、ビット幅  ｂｉｔ、信号数  ｎ  を取り出す。カウンタｃ  ＝  ０にする。もし、取り出せなかったら、終了する。
（ステップ８１４）．  累積値  ａ  ＝  ０  、ｎｏｋｏｒｉ  ＝  ０  とする。
（ステップ８１５）．  もし  ｎｏｋｏｒｉ  ＝＝  ０  かつ  ｃ  ＜  ｎ  だったら、計測値ログ２１１のファイルから１ワード（ｄｗ幅のデータ）を読み出し、変数ｘに代入する。
（ステップ８１６）．  もし  ｃ  ＝＝  ｎ  かつ  ｓａｍｐｌｅ＿ｃｏｕｎｔ  ＞  ０  だったら、ｃｋ  と  ａ／ｎ  を出力し、（ステップ８１３）へ分岐する。
（ステップ８１７）．  もし  ｎｏｋｏｒｉ  ＞＝  ｂｉｔ  だったら、変数ｘ  の  ｎｏｋｏｒｉ  −  １  ビット目から  ｎｏｋｏｒｉ  −  ｂｉｔ  目の数値  ｙ  を取り出す。ａ  ＝  ａ＋  ｙする。ｃ  ＝  ｃ＋１  にする。
（ステップ８１８）．  もし  ｎｏｋｏｒｉ  ＜  ｂｉｔ  だったら、ｎｏｋｏｒｉ  ＝  ０  にして、（ステップ８０９）に行く。
【０１４４】
上述の計測値ログ２１１に上記の手続きを適用すると、電力ツール用データヘッダ２７、電力ツール用データ本体２８に示した電力解析ツール用データが生成される。
電力解析工程２０４では、電力ツール用データヘッダ２７、電力ツール用データ本体２８を用いて、消費電力値９００を算出する。
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【０１４５】
（付記１）
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す第１工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する第２工程と、
を含むことを特徴とする消費電力評価方法。
（付記２）
付記１記載の消費電力評価方法において、
前記転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を用いて、前記第１工程における前記転送単位に対する前記評価情報の詰め込み、および前記第２工程における前記評価情報の復元を行うことを特徴とする消費電力評価方法。
（付記３）
付記１記載の消費電力評価方法において、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
（付記４）
付記１記載の消費電力評価方法において、
前記転送手段を多重に設けて、個々の前記転送手段を並列に動作させることを特徴とする消費電力評価方法。
（付記５）
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
（付記６）
付記５記載の消費電力評価方法において、
前記被評価回路における前記評価情報の採取対象の複数の信号の各々に対応して設けられた複数の前記計測手段を同時に初期化し、個々の前記計測手段内における前記評価情報のラッチと、ラッチされた前記評価情報の前記転送手段を経由した取り出し動作とを、異なる前記計測手段について並行して実行することを特徴とする消費電力評価方法。
（付記７）
付記５記載の消費電力評価方法において、
前記被評価回路における前記評価情報の採取対象の複数の信号の各々に対応して設けられた複数の前記計測手段の各々において、当該計測手段の初期化、前記評価情報の採取、採取された前記評価情報の前記転送手段を経由した取り出し動作を、順次実行することで、複数の前記計測手段の各々における前記評価情報の採取と、前記評価情報に転送とを並行して行うことを特徴とする消費電力評価方法。
（付記８）
付記５記載の消費電力評価方法において、
前記転送手段を多重に設けて、個々の前記転送手段を並列に動作させることを特徴とする消費電力評価方法。
（付記９）
付記５記載の消費電力評価方法において、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を含むことを特徴とする消費電力評価方法。
（付記１０）
転送データ量を削減するためのパッキングに必要なデータ構造情報を生成するパッキング工程、
被評価回路に計測データを転送する転送手段を生成する転送手段生成工程、
前記転送手段を付加した前記被評価回路をハードウェア方式のシミュレーションシステムでシミュレーションを実行し、前記被評価回路の消費電力の算出の基礎となる評価情報を収集し、前記データ構造情報に基づいてパックしつつ前記転送手段を経由して外部に出力するエミュレーション工程、
前記データ構造情報に基づいて前記評価情報をアンパックして所望のデータを抽出する抽出工程、
前記抽出工程で抽出した前記データを前記電力解析ツールに入力し、前記被評価回路の消費電力を計算する消費電力算出工程、
を含むことを特徴とする消費電力評価方法。
（付記１１）
付記１０記載の消費電力評価方法において、
前記転送手段生成工程において、前記評価情報を送出した直後に当該評価情報を保持していた記憶手段を初期化するとともに、次の計測を開始するように前記転送手段が構築され、前記記憶手段以外の記憶手段を不要にして、前記転送手段の実装による回路量の増加を抑制することを特徴とする消費電力評価方法。
（付記１２）
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、
前記転送手段における転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を備え、
前記シミュレーションでは、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を実行することを特徴とする消費電力評価システム。
【図面の簡単な説明】
【０１４６】
【図１】本発明の一実施の形態であるの消費電力評価方法の作用の一例を示すフローチャートである。
【図２】本発明の一実施の形態である消費電力評価方法を実施するハードウェアシミュレーション環境の構成の一例を示す概念図である。
【図３】本発明の一実施の形態である消費電力評価方法における被評価回路の構成例を示す概念図である。
【図４】本発明の一実施の形態である消費電力評価方法で処理されるクロック信号の一例を示す概念図である。
【図５】本発明の一実施の形態である消費電力評価方法における測定データのパック方法の一例を示す概念図である。
【図６】本発明の一実施の形態である消費電力評価方法における測定データのパック方法の一例を示す概念図である。
【図７】本発明の一実施の形態である消費電力評価方法における測定データのパック方法に用いられるデータ構造情報の一例を示す概念図である。
【図８】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。
【図９】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。
【図１０】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。
【図１１】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。
【図１２】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。
【図１３】本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの一部を取り出して例示したブロック図である。
【図１４】本発明の一実施の形態である消費電力評価方法にて用いられるハードウェアシミュレータの制御スクリプトの一例を示す概念図である。
【図１５】本発明の一実施の形態である消費電力評価方法に得られた計測値ログの一例を示す概念図である。
【図１６】本発明の一実施の形態である消費電力評価方法に得られた計測値ログの解析に用いられるパーズスクリプトの一例を示す概念図である。
【図１７】本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。
【図１８】本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。
【図１９】本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。
【図２０】本発明の一実施の形態である消費電力評価方法において用いられる回路データの一例を示す概念図である。
【図２１】本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。
【図２２】本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。
【図２３】本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。
【図２４】参考技術のエミュレータで電力を測定する場合の測定環境を示す概念図である。
【図２５】参考技術のエミュレータにおける計測回路を示す概念図である。
【図２６】本発明の一実施の形態である消費電力評価方法において用いられるパラメータ化された制御回路の一例を示す概念図である。
【符号の説明】
【０１４７】
１１  ソースクロックリスト
１１ａ  クロック名
１１ｂ  動作周波数
１２  ＲＡＭピンネーム規則
１２ａ  ＲＡＭモジュール
１２ｂ  モジュール名
１３  データバス幅指定
１４  クロックドメインリスト
１４ａ  クロック名
１４ｂ  追跡可能全クロック名
１５  擬似クロックドメインリスト
１５ａ  クロック名
１５ｂ  追跡可能全クロック名
１６  全クロック化クロックドメインリスト
１６ａ  クロック名
１６ｂ  全クロック名
１７  クロックドメイン別レジスタリスト
１７ａ  クロック名
１７ｂ  レジスタ名
１８  クロックドメイン別ワイヤリスト
１８ａ  クロック名
１８ｂ  ワイヤ名
１９  サンプリング期間指定
１９ａ  変数
１９ｂ  値
２０  計測ＲＡＭピンリスト
２０ａ  インスタンス名
２０ｂ  ピン名
２１  データ構造情報
２１ａ  リスト名
２１ｂ  ポインタ
２２  クロックリストサブテーブル
２２ａ  クロック名
２２ｂ  ビット幅
２３  信号リストサブテーブル
２３ａ  クロック名
２３ｂ  所属信号数
２３ｃ  ビット幅
２４  ＲＡＭリストサブテーブル
２４ａ  信号名
２４ｂ  ビット幅
２５  ビット表
２５ａ  クロック名
２５ｂ  必要ビット幅
２６  生成回路指示表
２６ａ  設定項目
２６ｂ  属性値
２７  電力ツール用データヘッダ
２７ａ  分類
２７ｂ  属性値
２８  電力ツール用データ本体
２８ａ  サンプリング回数
２８ｂ  タイプ
２８ｃ  信号名
２８ｄ  変化回数
２８ｅ  アクティブ期間
２８ｆ  変化平均
２００  パッキング工程
２００ａ  信号分離工程
２００ｂ  スケジューリング工程
２０１  計測回路挿入工程
２０１ａ  計測部品生成工程
２０１ｂ  制御部品生成工程
２０１ｃ  転送回路生成工程
２０１ｄ  マージ工程
２０１ｅ  サンプリングサイクル算出工程
２０２  エミュレーション工程
２０３  抽出工程
２０４  電力解析工程
２１０  データ構造情報
２１１  計測値ログ
３００  ハードウェアシミュレータ
３０１  制御コンピュータ
３０１−１  制御ソフトウェア
３０１ａ  ０クリア信号
３０２  記憶装置
３０３  ＰＣＩバス
３１０  被評価回路
３１１  対象信号
３２０  計測回路
３２１  信号変化検出回路
３２２  加算器
３２３  レジスタ
３２４  ラッチ
３２５  ゲート端子
３２６  ０クリア端子
３２７  評価結果
３３０  転送回路
３３１  セレクタ
３３２  イネーブルラッチ
３３３  選択信号
３３４  セレクタ
３４０  制御部
３４１  サンプル期間カウンタ
３４２  期間設定／判定部
３４２ａ  トリガ信号
３４３  測定切り替えタイミング判定部
３４４  転送タイミング判定部
３４５  転送タイミング判定部
３４５  ０クリアラッチ
３４６  基準クロック
３４７  結果出力タイミング信号
３４８  ０クリア信号
３４９  書き込み要求信号
３５０  ＦＩＦＯバッファ
３５１  ＦＩＦＯバッファ
３６０  バスインタフェース
３７０  エミュレーションシステム制御部
４００  被評価回路
４１０  部分回路
４１１  部分回路
４１２  部分回路
４２０〜４２２  クロック
４３０〜４３２  レジスタ出力
５１０  対応テーブル
５１１  クロックドメイン
５１２  信号名
５１３  ビット数
５１４  クロックドメイン
６００  ネーミングルール
６０１  回路データ
９００  消費電力値
【図１】
2007102337.tif 000003
【図３】
2007102337.tif 000004
【図４】
2007102337.tif 000005
【図７】
2007102337.tif 000006
【図８】
2007102337.tif 000007
【図９】
2007102337.tif 000008
【図１０】
2007102337.tif 000009
【図１１】
2007102337.tif 000010
【図１２】
2007102337.tif 000011
【図１３】
2007102337.tif 000012
【図１４】
2007102337.tif 000013
【図１６】
2007102337.tif 000014
【図１７】
2007102337.tif 000015
【図１８】
2007102337.tif 000016
【図１９】
2007102337.tif 000017
【図２０】
2007102337.tif 000018
【図２１】
2007102337.tif 000019
【図２２】
2007102337.tif 000020
【図２４】
2007102337.tif 000021
【図２５】
2007102337.tif 000022
【図２６】
2007102337.tif 000023
【図２】
2007102337.tif 000024
【図５】
2007102337.tif 000025
【図６】
2007102337.tif 000026
【図１５】
2007102337.tif 000027
【図２３】
2007102337.tif 000028