(57)【特許請求の範囲】
【請求項１】
Ｃ言語またはハードウエア記述言語で機能記述されたＬＳＩデータの電力見積方法において，
前記ＬＳＩデータは複数のブロックを有する設計済み回路マクロのデータを有し，
コンピュータが，当該ＬＳＩデータの論理シミュレーションを実行し，前記ＬＳＩデータに含まれる複数の命令の実行に対応する前記回路マクロ内のブロックの動作モード履歴を出力するＬＳＩシミュレーション工程と，
コンピュータが，前記回路マクロ内の複数のブロックのうち少なくとも一部のブロックについて動作モード毎の第１の電力変動範囲データと残りのブロックについての第２の電力変動範囲データとを有する電力ライブラリを参照し，前記動作モード履歴に対応する電力変動範囲を抽出し当該抽出した電力変動の範囲を累積して前記ＬＳＩデータの電力変動の範囲を生成する電力見積工程とを有し，
さらに，前記設計済み回路マクロの電力ライブラリの生成を，
コンピュータが，前記回路マクロを，クロックに同期して動作するレジスタと当該レジスタの出力信号に応答して動作する組み合わせ回路とからなるブロックに分割し，各ブロックの制御信号を抽出する回路マクロの構造分析工程と，
コンピュータが，前記ブロックについてランダム入力パターンに対する消費電力の前記第２の電力変動範囲データを求める第１の電力計算工程と，
コンピュータが，前記回路マクロ内の複数のブロックの電力変動範囲データを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否か確認する電力誤差評価工程と，
コンピュータが，前記電力変動範囲が許容誤差範囲外の場合に前記電力変動範囲が大きいブロックの順に評価ブロックを選択し，当該選択された評価ブロックについて入力シナリオを実行するシミュレーションを行い，シミュレーションにより取得される前記評価ブロック内のノードの波形データから，特定の制御信号パターンからなる動作モードデータを抽出するシナリオ解析工程と，
コンピュータが，前記評価ブロックについて前記動作モードに対応する制御信号パターンの制約の下にランダム入力パターンに対する消費電力の前記第１の電力変動範囲データを求める第２の電力計算工程とを有し，
前記電力誤差評価工程で前記動作モード別の前記第１電力変動範囲データと前記第２の電力変動範囲データとを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否かを確認し，前記許容誤差範囲内になるまで次の評価ブロックの前記シナリオ解析工程と前記第２の電力計算工程と電力誤差評価工程とを繰り返すことで行うＬＳＩデータの電力見積方法。
【請求項２】
設計済み回路マクロの電力ライブラリの生成方法において，
コンピュータが，前記回路マクロを，クロックに同期して動作するレジスタと当該レジスタの出力信号に応答して動作する組み合わせ回路とからなるブロックに分割し，各ブロックの制御信号を抽出する回路マクロの構造分析工程と，
コンピュータが，前記ブロックについてランダム入力パターンに対する消費電力の第２の電力変動範囲データを求める第１の電力計算工程と，
コンピュータが，前記回路マクロ内の複数のブロックの前記第２の電力変動範囲データを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否か確認する電力誤差評価工程と，
コンピュータが，前記電力変動範囲が許容誤差範囲外の場合に前記電力変動範囲が大きいブロックの順に評価ブロックを選択し，当該選択された評価ブロックについて入力シナリオを実行するシミュレーションを行い，シミュレーションにより取得される前記評価ブロック内のノードの波形データから，特定の制御信号パターンからなる動作モードデータを抽出するシナリオ解析工程と，
コンピュータが，前記評価ブロックについて前記動作モードに対応する制御信号パターンの制約の下にランダム入力パターンに対する消費電力の第１の電力変動範囲データを求める第２の電力計算工程とを有し，
前記電力誤差評価工程で前記動作モード別の前記第１の電力変動範囲データと前記第２の電力変動範囲データとを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否かを確認し，前記許容誤差範囲内になるまで次の評価ブロックの前記シナリオ解析工程と前記第２の電力計算工程と電力誤差評価工程とを繰り返す電力ライブラリの生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，システムＬＳＩの電力見積方法，及びそれに使用する設計済み回路マクロの電力ライブラリの生成方法に関する。
【背景技術】
【０００２】
システムＬＳＩは，大規模化に伴い電力見積もりを設計段階の早い段階で行うことが要求されている。電力見積もりでは，通常，ランダムな入力パターンに対して回路の各ノードの信号変化とそのノードの配線容量とから各ノードの消費電力を求め，全てのノードの消費電力を合計してＬＳＩの電力見積もりが行われる。
【０００３】
しかしながら，大規模化されたＬＳＩについてゲートレベルの信号波形を求めるためにはゲートレベル回路でのシミュレーションを実行しなければならず，シミュレーションに要する工数が多くなる。したがって，上記の方法による電力見積は，システムＬＳＩの設計の初期段階で利用するものには適していない。そこで，電力見積もりを効率的に行うことが特許文献１，２，３などに提案されている。
【０００４】
特許文献１では，ＬＳＩがハードウエア記述言語で機能記述されているメガセルと，基本セルにより構成される回路データとで構成され，そのＬＳＩを論理シミュレーションし，メガセルの命令実行時における消費電力値を記述したテーブルに基づいてメガセルへの命令に対応する消費電力値を求め，メガセル以外の基本セルからなる回路部分の電力見積値を加算して，ＬＳＩ全体の消費電力を見積もることが記載されている。
【０００５】
特許文献２では，入出力のスイッチング動作率対電力を電力関数として登録しておき，ＬＳＩを論理シミュレーションした時のポート及び推測ノードのスイッチング活動から電力を推定することが記載されている。
【０００６】
特許文献３では，回路のＲＴＬ記述を生成し，回路の電力モデル拡張ＲＴＬ記述を生成し，電力モデル拡張ＲＴＬをシミュレーションして消費電力を推定することが記載されている。
【特許文献１】特開平１０−１１４８２号公報
【特許文献２】特開平１０−２５４９４５号公報
【特許文献３】特開２００４−６２９０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
設計の初期段階では，ＬＳＩは，Ｃ言語やビヘイビアレベルのハードウエア記述言語など抽象レベルが高い言語で機能記述される。この初期段階では，必ずしもゲートレベルの動作波形から算出される電力のような高い精度は求められない。したがって，ＬＳＩをゲートレベルでシミュレーションして消費電力を見積もることは，見積もりの精度は高いが，シミュレーションの工数が多すぎて現実的な選択ではない。
【０００８】
一方で，従来の初期の設計段階での電力見積もりでは，設計済み回路マクロ（ＩＰ）の消費電力として，チップに適用された時に実測した電力値を採用することが行われる。しかしながら，チップレベルでの実測電力値は必ずしも精度が高くなく，そのような電力見積もりでは見積もりの精度が低すぎる。また，種々のシナリオに対応して電力値が実測されておらず精度が高くない。
【０００９】
そこで，本発明の目的は，設計済み回路マクロを有するＬＳＩの効率的な電力見積もり方法及びそれに使用する設計済み回路マクロの電力ライブラリの生成方法を提供することにある。
【課題を解決するための手段】
【００１０】
Ｃ言語またはハードウエア記述言語で機能記述されたＬＳＩデータの電力見積方法は，ＬＳＩデータは複数のブロックを有する設計済み回路マクロのデータを有し，当該ＬＳＩデータの論理シミュレーションを実行し，前記ＬＳＩデータに含まれる複数の命令の実行に対応する前記回路マクロ内のブロックの動作モード履歴を出力するＬＳＩシミュレーション工程と，前記回路マクロ内の複数のブロックのうち少なくとも一部のブロックについて動作モード毎の第１の電力変動範囲データと残りのブロックについての第２の電力変動範囲データとを有する電力ライブラリを参照し，前記動作モード履歴に対応する電力変動範囲を抽出し当該抽出した電力変動の範囲を累積して前記ＬＳＩデータの電力変動の範囲を生成する電力見積工程とを有する。
【００１１】
上記の設計済み回路マクロの電力ライブラリの生成方法は，前記回路マクロを，クロックに同期して動作するレジスタと当該レジスタの出力信号に応答して動作する組み合わせ回路とからなるブロックに分割し，各ブロックの制御信号を抽出する回路マクロの構造分析工程と，前記ブロックについてランダム入力パターンに対する消費電力の第２の電力変動範囲データを求める第１の電力計算工程と，前記回路マクロ内の複数のブロックの前記第２の電力変動範囲データを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否か確認する電力誤差評価工程と，前記電力変動範囲が許容誤差範囲外の場合に前記電力変動範囲が大きいブロックの順に評価ブロックを選択し，当該選択された評価ブロックについて入力シナリオを実行するシミュレーションにより取得される前記評価ブロック内のノードの波形データから特定の制御信号パターンからなる動作モードデータを抽出するシナリオ解析工程と，前記評価ブロックについて前記動作モードに対応する制御信号パターンの制約の下にランダム入力パターンに対する消費電力の第１の電力変動範囲データを求める第２の電力計算工程とを有し，前記電力誤差評価工程で前記動作モード別の前記第１の電力変動範囲データと前記第２の電力変動範囲データとを累積して前記回路マクロの電力変動範囲が許容誤差範囲内か否かを確認し，前記許容誤差範囲内になるまで次の評価ブロックの前記シナリオ解析工程と前記第２の電力計算工程と電力誤差評価工程とを繰り返す。
【発明の効果】
【００１２】
上記のＬＳＩデータの電力見積方法によれば，電力ライブラリとして設計済回路マクロ内のブロックの動作モードに対応して電力変動範囲データをあらかじめ作成しておくので，工数が少ないＬＳＩデータに対するＬＳＩシミュレーションにより動作モード履歴を生成し，その動作モードに対応する電力変動範囲データを参照して，より高精度にＬＳＩの電力を見積もることができる。
【発明を実施するための最良の形態】
【００１３】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１４】
［電力見積の概略］
図１は，本実施の形態におけるＬＳＩの電力見積のフローチャート図である。システムＬＳＩ１０には，１チップ内に複数の回路マクロＣＰＵ，ＢＵＳ，ＩＰ１，ＩＰ２が埋め込まれている。回路マクロＩＰ１，ＩＰ２は，例えばＣＰＵからの命令に応答して対応する機能を実行する周辺マクロである。バスＢＵＳは，ＣＰＵと周辺マクロＩＰ１，ＩＰ２とを接続するコマンドバスとデータバスとを有する。回路マクロＣＰＵ，ＢＵＳ，ＩＰ１，ＩＰ２は，過去に設計済であり，少なくともレジスタトランスファレベル（ＲＴＬ）で記述済のＩＰ資産が形成されている。このようなシステムＬＳＩ１０の設計の初期段階では，Ｃ言語やハードウエア記述言語（例えばビヘイビアレベルのＨＤＬ）などの高級言語による記述で実装する機能を規定する。
【００１５】
高級言語で記述されたシステムＬＳＩ１０をシミュレーションし（Ｓ１），シミュレーション結果として動作データ１２を生成する。動作データ１２については後で詳述するが，例えば，高級言語で記述されたシステムＬＳＩ１０を，要求されるシナリオ入力について実行したときに，回路マクロ内のブロックがどの動作モードで実行されるかを有するデータである。そして，この動作データ１２に基づき，電力ライブラリ１４を参照して，システムＬＳＩ１０の電力見積を行い（Ｓ２），電力データ１６を生成する。
【００１６】
電力見積工程Ｓ２では，動作データ１２に含まれる回路マクロ内のブロックがどの動作モードで実行されるかのデータに基づいて，回路マクロの電力変動範囲データを電力ライブラリ１４から抽出し，その電力変動範囲データを合計してシステムＬＳＩの電力変動範囲を算出する。したがって，電力ライブラリ１４の各回路マクロの電力変動範囲データがある程度高精度であることが要求される。ただし，設計の初期段階でのシステムＬＳＩの電力見積であるので，多大な工数を要するゲートレベルでの電力見積ほど高い精度は求められないが，ある程度の精度で電力を見積もりできることが必要になる。
【００１７】
したがって，図１の高級言語で記述されたＬＳＩの電力見積をある程度高い精度で行うためには，設計済の回路マクロについての電力ライブラリ１４の生成が重要になる。
【００１８】
［電力ライブラリの生成方法］
図２は，本実施の形態における設計済回路マクロの電力ライブラリの生成方法を示すフローチャート図である。設計済の回路マクロは，少なくともレジスタトランスファレベル（ＲＴＬ）で記述済のＩＰ資産が形成されている。このＲＴＬ記述データを論理合成することでゲートレベルのネットリストを生成することができる。そして，ゲートレベルのネットリストであれば各ノードの変化とノードの容量に基づいて精度の高い電力変動データを求めることができる。したがって，設計済回路マクロについては，ある程度高い精度で電力変動データを求めておくことができる。
【００１９】
ＩＰ回路マクロは，仕様上複数のシナリオ（入力パターン群）での動作検証がされてはいるが，システムＬＳＩに埋め込まれた場合に種々の機能を実現するために種々の動作状態を有することになる。そのため，ランダムな入力パターンについて動作シミュレーションを行って電力変動を求めても，その電力変動範囲は許容される誤差範囲を超えることになる。したがって，設計済回路マクロについてある程度高い精度の電力変動データを電力ライブラリとして生成するためには，回路マクロを複数のブロックに分割し，各ブロックの電力変動範囲を求めると共に，ブロックの動作モードに対応する電力変動範囲を求めておくことが必要になる。
【００２０】
図２のフローチャートでは，最初に，ＩＰの回路データ（例えばＲＴＬ記述データ）２０の構造分析を行い，複数のブロックに分解し，各ブロックの制御信号を抽出する（Ｓ１０）。抽出したブロックデータ２２は，分解された複数のブロックデータとその制御信号データとを有する。
【００２１】
図３は，回路マクロのブロック化の例を示す図である。回路マクロは，通常，クロックＣＬＫに同期してデータＤｉｎを入力するレジスタ，例えばフリップフロップＦＦと，そのレジスタの出力信号に基づいて所定の論理演算をクロックに依存せずに行う組み合わせ回路ＣＮＢとが，パイプライン的に接続されている。図３の例では，３つのブロックＢ１，Ｂ２，Ｂ３に分割されている。そして，クロックＣＬＫに応答してデータＤｉｎ１がフリップフロップＦＦ１に入力され，その出力信号が後段の組み合わせ回路ＣＮＢ１により論理演算される。さらに，次のクロックＣＬＫに応答してデータＤｉｎ２がフリップフロップＦＦ２に入力され，その出力信号が後段の組み合わせ回路ＣＮＢ２により論理演算される。そして，３つ目のクロックＣＬＫに応答してデータＤｉｎ３がフリップフロップＦＦ３に入力され，その出力信号が後段の組み合わせ回路ＣＮＢ３により論理演算される。
【００２２】
上記のようにパイプラインに接続されている回路マクロの構造解析をして，クロックに同期して動作するレジスタと当該レジスタの出力信号に応答して動作する組み合わせ回路とからなるブロックに分割することができる。
【００２３】
図４は，回路マクロのブロック化のフローチャート図である。また，図５は，図４のフローチャートを説明するための回路マクロ例を示す図である。図４に示されるとおり，まず回路マクロ内の一つのフリップフロップ（レジスタ）ＦＦを選択する（Ｓ３０）。図５の例では，フリップフロップＦＦ１が選択されたとする。次に，新しいブロックグループを生成し，選択したフリップフロップＦＦ１をそのブロックグループに割り当てる（Ｓ３１）。フリップフロップＦＦ１の出力Ｑに接続されている全てのゲートｇ１．ｇ２．ｇ３を次のフリップフロップＦＦ４に至るまでリストアップする（Ｓ３２）。このファンアウトゲート探索の結果，出力接続ゲートリスト３０が生成される。
【００２４】
次に，全ての出力接続ゲートｇ１，ｇ２，ｇ３に対し，その入力をさかのぼり，入力元のフリップフロップをリストアップする（Ｓ３３）。このファンインＦＦ探索の結果，図５の例では，フリップフロップＦＦ２が入力元フリップフロップＦＦリスト３１としてリストアップされる。そして，入力元フリップフロップＦＦに現在のブロックグループに属していないものがあるかチェックし（Ｓ３４），属していないＦＦがあればそれを現在のブロックグループに割り当て，その割り当てられたフリップフロップＦＦについて，処理工程Ｓ３２，Ｓ３３，Ｓ３４を繰り返す（Ｓ３５）。図５の例では，フリップフロップＦＦ２のファンアウトゲート探索Ｓ３２で，ゲートｇ６，ｇ７，ｇ８が検出され，ゲートｇ８のファンインＦＦ探索Ｓ３３でフリップフロップＦＦ３が検出される。そして，入力元フリップフロップＦＦリスト３１内の入力元フリップフロップＦＦが全て現在のブロックグループに割り当てられると（Ｓ３４のＮＯ），回路マクロ内のフリップフロップＦＦがいずれかのブロックグループに属するまで（Ｓ３６のＮＯ），１つのフリップフロップＦＦを選択し工程Ｓ３１〜Ｓ３５を繰り返す（Ｓ３７）。
【００２５】
図５の例では，３つのフリップフロップＦＦ１，２，３と，ゲートｇ１〜ｇ８からなる組み合わせ回路とからなるブロックＢ１０が抽出される。さらに，フリップフロップＦＦ５とその出力信号の組み合わせ回路（図示せず）からなるブロックＢ１１と，フリップフロップＦＦ４とその出力信号の組み合わせ回路（図示せず）からなるブロックＢ１２とが抽出される。
【００２６】
図６，図７は，回路マクロのＲＴＬ記述例を示す図である。説明のために，各行の左端に行番号０１〜４７を付しているが，実際のVerilogのHDL（RTL）には行番号はない。
【００２７】
さらに，図８は，図６，７のＲＴＬ記述の回路マクロの論理回路図である。ＲＴＬ記述と図８の論理回路との対応関係を説明すると以下のとおりである。行０１，０２は入力端子，出力端子の宣言文，行０３は出力端子Outdataを出力するレジスタ４８の宣言文，行０４，０５は制御信号add_at_0_mult_at_1，クロックCLK，リセット信号rstの宣言文，行０６〜１０は５つのレジスタ４１〜４５の宣言文，行１１，１２は乗算器４６,加算器４７の宣言文である。
【００２８】
行１３〜１７は，レジスタ４１の機能であり，クロックclkがポジティブエッジposedgeの時に，リセット信号rst=1ならレジスタ４１の出力mult_in_aが０になり，制御信号add_at_0_mult_at_1＝１ならレジスタ４１の出力mult_in_aが入力データdata_aになることを示している。行１８〜２２は，同様のレジスタ４２の機能を記述している。行２３〜２７は，レジスタ４３の機能を記述しており，クロックがポジティブエッジの時に，リセット信号rst=1ならレジスタ４３の出力add_in_aが０になり，制御信号add_at_0_mult_at_1＝０ならレジスタ４３の出力add_in_aが入力データdata_aになることを示している。行２８〜３２は同様のレジスタ４４の機能を記述している。行３４〜３７は制御信号add_at_0_mult_at_1を入力するレジスタ４５の機能を記述している。
【００２９】
行３８は乗算器４６を，行３９は加算器４７をそれぞれ記述している。そして，行４０〜４６はセレクタSELとレジスタ４８の機能を記述している。
【００３０】
上記のように，図６，７のＲＴＬ記述は，論理合成ツールによりゲートレベルのネットリスト（図８）に変換することができる。そして，図８の論理回路は，図４のブロック化処理により，ブロックＢ２０が抽出される。また，出力レジスタ４８とその出力Outdataは別のブロックとして抽出される。さらに，ブロックＢ２０から制御信号として，レジスタ４１，４２，４３，４４のイネーブル信号（信号add_at_0_mult_at_1及びその反転信号）と，セレクタSELの制御信号add_at_0_mult_at_1_for_outdataとが抽出される。
【００３１】
図２に戻り，回路マクロを複数のブロックに分割しそれぞれのブロックの制御信号として，レジスタ４１，４２のイネーブル信号add_at_0_mult_at_1と，レジスタ４３，４４のイネーブル信号（信号add_at_0_mult_at_1の反転信号）と，セレクタＳＥＬの選択信号add_at_0_mult_at_1_for_outdataとが抽出される。これらの制御信号は，ＲＴＬ記述のif文やcase文の制御信号となっているので，回路マクロの構造分析工程S10で抽出可能である。図６，７の例では，行１６，２１，２６，３１，４３のif文にこれらの制御信号が記述されている。
【００３２】
再度，図２に戻り，分割された各ブロックの電力計算によりブロックの電力の変動範囲が計算され，ブロック電力変動データ２４が生成される（Ｓ１２）。このブロックの電力計算工程Ｓ１２は，ブロックの動作モードに依存しない電力変動データを生成する１回目の工程と，ブロックの動作モードに対応した電力変動データを生成する２回目以降の工程とがある。
【００３３】
図９は，１回目のブロックの電力計算工程のフローチャート図である。１回目のブロックの電力計算工程では，各ブロックの入力端子にランダムな入力パターンを入力した時の電力計算を行う（Ｓ４０）。図８のブロックＢ２０の例の場合，入力端子Data_a，Data_b，信号add_at_0_mult_at_1とその反転信号，リセット信号rstについてランダムな入力パターンを生成し，そのランダム入力パターンに対応してブロックB20の回路を動作シミュレーションし，ブロックB20内のノードの変化を示す信号波形を抽出する。そして，信号波形からレベルが変動したノードとその配線容量とから入力パターンIN1〜INｎが変化した時のブロックB1,B2の消費電力Pa1〜Pan-1，Pb1〜Pbn-1をそれぞれ計算する。ブロック電力データ４０参照。その結果，ブロック電力データ４０が，図示されるとおり，ブロックB1,B2の電力値Pa1〜Pan-1,Pb1〜Pbn-1が入力パターンIN1〜INｎの変化に対応して得られる。
【００３４】
通常，ＣＭＯＳ回路の場合，入力信号が変化した時にその変化に応答して各ゲートが電力を消費し出力ノードの信号を変化させる。出力ノードの変化が完了した後の定常状態では電力消費はリーク電流レベルであり極めて小さい。よって，ブロック電力データ４０に示されるとおり，入力パターンIN1〜INｎが変化した時のブロックB1,B2の消費電力Pa1〜Pan-1，Pb1〜Pbn-1がそれぞれ計算できる。
【００３５】
図８のブロックＢ２０を例にして説明すると，レジスタ４１〜４５，４８は，それぞれイネーブル信号がＨの場合にクロックclkが立ち上がったとき，入力データＤが変化していれば消費電力は最大になり，入力データＤが変化していなければ消費電力は最小になる。乗算器４６と加算値４７は，クロックclkの立ち上がりエッジの前後で入力データが全て異なれば消費電力は最大値になり入力データが同じであれば消費電力は最小値になる。セレクタSELは，制御信号が変化すれば消費電力が最大になり制御信号が変化しなければ消費電力は最小になる。
【００３６】
次に，ブロックの電力データ４０から，各ブロックの電力変動範囲を抽出する（Ｓ４２）。具体的には，ブロックＢ１の電力Pa1〜Pan-1の最大値と最小値を検出し，ブロックＢ１の電力変動範囲Pamin〜Pamaxが抽出され，ブロックＢ２の電力Pb1〜Pbn-1の最大値と最小値を検出し，ブロックＢ２の電力変動範囲Pbmin〜Pbmaxが抽出される。回路マクロ内の全てのブロックについて電力変動範囲が抽出され，その結果，ブロック電力変動データ２４−１が生成される。
【００３７】
図２に戻り，ブロック電力変動データ２４−１に基づいて，回路マクロの電力誤差評価が行われる（Ｓ１４）。回路マクロの電力誤差評価工程Ｓ１４では，ブロック電力変動データ２４−１から回路マクロ内の全てのブロックの電力変動テーブルを生成し，回路マクロの電力変動範囲が許容誤差範囲内か否かをチェックする。
【００３８】
図１１は，ブロック電力変動テーブルの一例を示す図である。図１１には，１回目のブロック電力変動データ２４−１から生成されたブロック電力変動テーブル２４−１Ｔと，２回目以降のブロック電力変動データ２４−２から生成されたブロック電力変動テーブル２４−２Ｔとが示されている。
【００３９】
ブロック電力変動テーブル２４−１Ｔには，ブロック電力変動データ２４−１に含まれる各ブロックの電力変動範囲（最小値Pmin〜最大値Pmax）が，変動範囲が大きい順に並べられている。この例では，たまたまブロックＢ１乃至Ｂ６の順に変動範囲が大きいものとする。そして，これらのブロックの電力変動範囲の最小値と最大値をそれぞれ累積して回路マクロＩＰの電力変動データPipmin−Pipmaxが求められる。回路マクロＩＰの電力誤差評価工程Ｓ１４では，この電力変動データPipmin−Pipmaxが，許容される誤差範囲以内にはいるか否かが判断される。電力変動範囲Pipmin−Pipmaxが許容範囲を越える場合は（Ｓ１６のＮＯ），この電力変動テーブルを参照してＬＳＩの動作データから消費電力を見積もると，各回路マクロの消費電力誤差が許容値を超えてしまう。この場合は，変動範囲の大きいブロックについて，後述するシナリオ分析を行いブロックの動作モードを抽出し，動作モード別に電力変動範囲を計算する２回目以降のブロックの電力計算工程Ｓ１２を行う。
【００４０】
一方，電力変動範囲Pipmin−Pipmaxが許容範囲以内の場合は（Ｓ１６のＹＥＳ），この電力変動テーブルを参照してＬＳＩの動作データから消費電力を見積もると，各回路マクロの消費電力誤差が許容値以内になる。よって，ブロック電力変動テーブル２４−１Ｔが，電力ライブラリ１４として出力される。つまり，各ＩＰの回路マクロの消費電力誤差が許容値以内であれば，その電力変動データに基づいてＬＳＩの電力を見積もればある程度高い精度の電力値を見積もることができる。
【００４１】
図２に戻り，ブロック電力変動データから得られたＩＰの回路マクロの電力変動が許容誤差範囲内でない場合は（Ｓ１６のＮＯ），ブロック電力変動テーブル２４−１Ｔから電力変動が大きいブロックを評価ブロックとして選択する（Ｓ１８）。そして，選択した評価ブロックについてシナリオ解析を行う（Ｓ２０）。シナリオ解析工程Ｓ２０では，回路マクロに要求されている種々のシナリオ（入力パターン群を有するシミュレーション記述）についてブロックのシミュレーションを実行し，シミュレーション結果からブロックの動作モードデータ２６（具体的には制御信号パターン）を抽出する。
【００４２】
図１２は，シナリオ解析の詳細なフローチャート図である。ＩＰの回路マクロには，設計段階において複数のシナリオについての動作検証が求められている。ここで，シナリオとは，シミュレーション記述の一種であり，入力パターン群を有するシミュレーション入力記述を有し，後述する例に示されるとおり，たとえば一回だけ実行されるinitial文と繰り返し実行されるalways文とを含む。そこで，シナリオ解析では，まず，シナリオ群５０のうち選択ブロック５２が関与するシナリオ群５４を選択する（Ｓ５０）。そして，そのシナリオについてブロックを含むＩＰの回路マクロのシミュレーションを実行する（Ｓ５２）。このシミュレーションの結果，シミュレーション波形５６が生成される。シミュレーション波形５６は，クロックＣＬＫに対応してブロック内のノードＮ１〜Ｎ３の動作波形である。このシミュレーション波形５６を解析して，ブロック内の制御信号パターン（動作モードデータ）２６を抽出する（Ｓ５４）。
【００４３】
抽出されたブロックの動作モードデータ２６は，例えば図１２に記載された通りである。動作モードデータ２６は，２つのデータ２６−１，２６−２を有する。データ２６−１には，選択されたブロックＢ１，Ｂ２，Ｂ３それぞれについて，シナリオＳ１とＳ２を実行した時の制御信号パターン（動作モード）が抽出される。ブロックの制御信号は，図２のＩＰ回路マクロの構造分析工程Ｓ１０でブロック化された時に抽出されている。したがって，シミュレーション波形５６を解析すると，各シナリオＳ１，Ｓ２において，制御信号が特定のパターン（Ｈ，Ｌの組み合わせまたは動作率など）になっていることが検出される。
【００４４】
データ２６−２には，データ２６−１のブロックＢ１の動作モードＭ１，Ｍ２における制御信号パターンが記述されている。動作モードＭ１では，制御信号１が常に「１」に制御信号２が常に「０」にそれぞれ固定されていることが検出されている。また，動作モードＭ２では，制御信号１の動作率が０．１，制御信号２が常に「０」に固定されていることが検出されている。
【００４５】
図１３，図１４は，シミュレーション入力記述であるシナリオの例を示す図である。説明の都合上，左側に行番号を付している。図１３は加算演算のシナリオであり，図１４は乗算演算のシナリオである。
【００４６】
図１３において，行０１〜０３はパラメータ宣言であり，行０１，０２は周期cycle,cycle2のパラメータの宣言，行０３はホールドタイム（stable）のパラメータの宣言である。行０４〜０５はこのシナリオの実行に伴うローカル変数を宣言している。行０８〜１１は，繰り返し実行されるalways文であり，周期cycle2毎にクロックclkがL(1'b0)とH(1'b1)とに変化することを示している。そして，行１２〜１５で初期値が設定され，行１６〜行２２は代入文であり，遅延文＃（）の括弧内の遅延量に対応する時間における変数の入力値を示している。図１３の例は，リセット信号reset=0にしたあと，周期cycle遅延毎にadd_at_0_mult_at_1=0; data_a=2, data_b=3; data_a=3, data_b=5; data_a=7, data_b=8; data_a=9, data_b=10;と変数が変化し，それぞれの変数でＩＰの回路マクロが動作を行い，各クロックに対応してノードの波形がシミュレーション波形５６として出力される。したがって，このシナリオを実行するとブロックＢ２０は，加算演算を実行する。
【００４７】
図１４の乗算演算のシナリオでは，行１８において制御信号add_at_0_mult_at_1=1になっていることのみ図１３と異なる。それ以外の行は図１３と同じである。したがって，図１４のシナリオでは，ブロックＢ２０は乗算演算を実行する。
【００４８】
図１３のシミュレーション記述（加算演算のシナリオ）を実行すると，制御信号add_at_0_mult_at_1=0であるので，図１８の回路ブロックＢ２０では，レジスタ４１，４２のイネーブル信号ＥＮ＝Ｌ，レジスタ４３，４４のイネーブル信号ＥＮ＝Ｈ，セレクタＳＥＬの制御信号add_at_0_mult_at_1_for_outdata＝Ｌに固定される。この制御信号のパターンが，シミュレーション波形５６を解析することで抽出することができる。この制御信号パターンが，ブロックＢ２０の図１３のシナリオにおける動作モードの制約条件になる。
【００４９】
同様に，図１４のシミュレーション記述（乗算演算のシナリオ）を実行すると，制御信号add_at_0_mult_at_1=1であるので，図１８の回路ブロックＢ２０では，レジスタ４１，４２のイネーブル信号ＥＮ＝Ｈ，レジスタ４３，４４のイネーブル信号ＥＮ＝Ｌ，セレクタＳＥＬの制御信号add_at_0_mult_at_1_for_outdata＝Ｈに固定される。この制御信号のパターンが，シミュレーション波形５６を解析することで抽出することができ，この制御信号パターンが，ブロックＢ２０の図１４のシナリオにおける動作モードの制約条件になる。以上が，図１２のブロックの動作モードデータ２６の具体例である。
【００５０】
図２に示されるとおり，評価ブロックの動作モードデータ２６が抽出されると，その動作モードでのブロックの電力計算が行われる（Ｓ１２）。つまり，２回目以降のブロックの電力計算工程である。具体的には，同モードデータ２６の制御信号パターンを制約条件として，評価ブロックの可変入力パターンをランダムに変化させて評価ブロックの電力変化を計算する。つまり，制御信号を動作モードに対応する制御信号パターンにすることで，そのブロックは動作モードでの動作に制約され，その制約の下で入力パターンをランダムに変更することで，動作モードでの電力変動範囲を求めることができる。
【００５１】
図１０は，２回目以降のブロックの電力計算工程のフローチャート図である。評価ブロックのブロックデータ２２について，動作モードデータ２６の制御信号パターンのもとで，可変入力にランダム入力パターンを与えた時のブロックの電力を計算する（Ｓ４４）。この電力計算工程Ｓ４４は，評価ブロックの動作モードの数だけ行われる。その結果，図１０に示されるとおり，ブロック電力４４は，入力パターンＩＮ１〜ＩＮｎに対して，動作モードＭ１，Ｍ２それぞれにおいて電力Ｐ１〜Ｐｎ−１が計算される。この電力計算工程Ｓ４４は，図９の電力計算工程Ｓ４０とは，動作モードデータの制御信号パターンに固定されていることを除いて，ランダム入力パターンに対する電力値を求める点では同じである。
【００５２】
そして，ブロック電力データ４４から，各動作モードでのブロックの電力変動範囲が抽出され，ブロック電力変動データ２４−２が出力される。図１０の例によれば，評価ブロックＢ１について，動作モードＭ１では電力変動範囲がPm1min−Pm1maxに，動作モードＭ２では電力変動範囲がPm2min−Pm2maxになっている。
【００５３】
図２に戻り，ブロックの電力計算Ｓ１２の後に，ＩＰ回路マクロの電力誤差評価工程Ｓ１４で，動作モード毎のブロック電力変動データ２４−２から，ブロック電力変動テーブルが修正される。具体的には，図１１に示されるとおり，１回目に求めたブロック電力変動テーブル２４−１Ｔのうち，電力変動が大きい評価ブロックＢ１，Ｂ２についての電力変動範囲が，それらの動作モードに対応した電力変動範囲にブレークダウンされている。そして，電力誤差評価工程Ｓ１４では，ブロックＢ１，Ｂ２については電力変動範囲が広い動作モードの電力変動範囲データが採用され，全ブロックＢ１〜Ｂ６の最小電力と最大電力とを累積してＩＰの回路マクロの電力変動範囲Pipmax−Pipminが求められる。この電力変動範囲が許容誤差以内か否かが判定される（Ｓ１６）。許容誤差以内であれば，そのブロック電力変動テーブルがＩＰの電力ライブラリ１４として出力される。すなわち，ＩＰの電力ライブラリ１４は，図１１に示されたＩＰの回路マクロ内の複数のブロックの動作モード別のもしくは動作モードの区別がない電力変動範囲データになる。
【００５４】
［ＬＳＩデータの電力見積方法］
図１５は，図１のシステムＬＳＩのシミュレーション工程Ｓ１のフローチャート図である。システムＬＳＩ１０は，例えばＣ言語で機能を記述されている。Ｃ言語のような高級言語は，所定の条件を満たす場合に実行すべき機能を命令文で記述する。図１５の例では，所定の条件としてＣＯＮＤ１，ＣＯＮＤ２が，命令文としてＣＯＭａ，ＣＯＭｂ，ＣＯＭｃ，ＣＯＭｄがそれぞれ記述されている。
【００５５】
設計者には，設計済のＩＰである回路マクロについて，どの命令文を実行するときに動作するか否かに加えて，命令文と，その命令文が実行されるときのシナリオ及びそれに対応するブロックの動作モードとの関係も既知である。そこで，システムＬＳＩ１０から動作モード抽出ツールＳ６０によりブロックの動作モードを出力させるプリント文６０を各命令文の直下に挿入したプログラム記述１０Ａを生成する。そして，このプログラム記述１０Ａについてシミュレーションを実行し（Ｓ６２），時間軸に対する回路マクロ内のブロックＢ１，Ｂ２の動作モードの履歴を動作データ１２として出力する。
【００５６】
図１１で説明したとおり，電力変動範囲が広い一部のブロックＢ１，Ｂ２についてのみ動作モード別の電力範囲を抽出してブロック電力変動テーブル２４−２Ｔを生成した。したがって，それ以外のブロックについては動作モードを区別する必要はない。つまり，図１５の動作モード抽出ツールによるプログラム記述１０Ａの生成工程Ｓ６０では，動作モードを区別すべきブロックの動作モードのみ出力できるようにプリント文６０を挿入すればよい。
【００５７】
図１５に示されるとおり，動作データ１２は，時間軸に対応してブロックＢ１，Ｂ２の動作モードの履歴（非動作状態を含む）データを有する。また，動作データ１２は，時間軸に対応して他のブロックの動作状態と非動作状態の履歴データを有しても良い。
【００５８】
図１６は，図１の電力見積工程Ｓ２を説明する図である。電力見積工程Ｓ２では，回路マクロ内の複数のブロックの電力変動テーブルを有する電力ライブラリ１４を参照して，システムＬＳＩのシミュレーション工程Ｓ１により生成された動作データ履歴１２から，時間軸に対応するシステムＬＳＩの電力の最大値Pmaxと最少値Pminからなる変動範囲を算出する。この計算では，各ブロックの最大電力と最小電力とをそれぞれ累積し，ブロックＢ１，Ｂ２については，動作データに対応する最大電力と最小電力とを採用して累積演算する。この算出結果が見積もられた電力結果データ１６である。
【００５９】
上記のとおり，本実施の形態によれば，設計済の回路マクロを埋め込んだＬＳＩの電力見積を設計の初期段階で行うに際し，単に回路マクロの電力変動データに基づく電力見積ではなく，回路マクロを複数のブロックに分割し，各ブロックの電力変動データを求めるとともに，電力変動範囲が大きいブロックについてのみシナリオに対応する動作モードを解析し，その動作モードでの電力変動データを求めて電力ライブラリとして準備する。そして，Ｃ言語やビヘイビアレベルのＨＤＬなどで記述されたＬＳＩをシミュレーションし，ブロックの動作モード履歴を有する動作データを生成し，電力ライブラリを参照して電力変動を見積もる。
【００６０】
ＬＳＩの設計の初期段階で生成されるＬＳＩの高級言語による記述データをシミュレーションすれば，回路マクロ内の動作モードの履歴を求めることができるので，電力ライブラリを参照して動作モードに対応した電力変動範囲を抽出し，比較的高精度の電力を見積もることができる。高級言語による記述データのシミュレーションは，ＲＴＬ記述データのシミュレーションやゲートレベルのシミュレーションより工数が少ないので，少ない工数で比較的高精度の電力を見積もることができる。
【００６１】
図１及び図２の電力見積方法と電力ライブラリの生成方法は，両方法の各工程を汎用コンピュータに実行させる電力見積ソフトウエアツールと電力ライブラリ生成ツールとにより実現される。
【図面の簡単な説明】
【００６２】
【図１】本実施の形態におけるＬＳＩの電力見積のフローチャート図である。
【図２】本実施の形態における設計済回路マクロの電力ライブラリの生成方法を示すフローチャート図である。
【図３】回路マクロのブロック化の例を示す図である。
【図４】回路マクロのブロック化のフローチャート図である。
【図５】図４のフローチャートを説明するための回路マクロ例を示す図である。
【図６】回路マクロのＲＴＬ記述例を示す図である。
【図７】回路マクロのＲＴＬ記述例を示す図である。
【図８】図６，７のＲＴＬ記述の回路マクロの論理回路図である。
【図９】１回目のブロックの電力計算工程のフローチャート図である。
【図１０】２回目のブロックの電力計算工程のフローチャート図である。
【図１１】ブロック電力変動テーブルの一例を示す図である。
【図１２】シナリオ解析の詳細なフローチャート図である。
【図１３】シミュレーション入力記述であるシナリオの例を示す図である。
【図１４】シミュレーション入力記述であるシナリオの例を示す図である。
【図１５】図１のシステムシミュレーション工程Ｓ１のフローチャート図である。
【図１６】図１の電力見積工程Ｓ２を説明する図である。
【符号の説明】
【００６３】
１０：システムＬＳＩ
Ｓ１：システムＬＳＩのシミュレーション
１２：動作データ
Ｓ２：電力見積工程
１４：電力ライブラリ
１６：電力結果
【図１】
0005077010.tif 000002
【図２】
0005077010.tif 000003
【図３】
0005077010.tif 000004
【図４】
0005077010.tif 000005
【図５】
0005077010.tif 000006
【図６】
0005077010.tif 000007
【図７】
0005077010.tif 000008
【図８】
0005077010.tif 000009
【図９】
0005077010.tif 000010
【図１０】
0005077010.tif 000011
【図１１】
0005077010.tif 000012
【図１２】
0005077010.tif 000013
【図１３】
0005077010.tif 000014
【図１４】
0005077010.tif 000015
【図１５】
0005077010.tif 000016
【図１６】
0005077010.tif 000017