(57)【要約】【課題】半導体装置の消費電力の予測にかかる時間を短縮する。【解決手段】（ａ）動作レベルで記述された集積回路（１５）を、動作レベルより抽象度の低い低レベルで記述して低レベル回路モデル（１７）を構成し、低レベル回路モデル（１７）に基づいて機能ブロックの動作を示す動作情報（２１）を生成するステップと、  （ｂ）動作情報（２１）と機能ブロックを構成する素子が消費する素子消費電力（１９）とに基づいて、機能ブロックで消費される機能ブロック消費電力（２２）を求めるステップと、  （ｃ）機能ブロック消費電力（２２）と集積回路（１５）の動作時に機能ブロックが実行される回数とに基づいて、集積回路が消費する全体消費電力（２４）を求めるステップとを具備する消費電力計算方法によって計算する。【選択図】図４
2008299464.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つの機能ブロックを有する集積回路の消費電力を計算する消費電力計算方法であって、
（ａ）動作レベルで記述された集積回路を、前記動作レベルより抽象度の低い低レベルで記述して低レベル回路モデルを構成し、前記低レベル回路モデルに基づいて前記機能ブロックの動作を示す動作情報を生成するステップと、
（ｂ）前記動作情報と前記機能ブロックを構成する素子が消費する素子消費電力とに基づいて、前記機能ブロックで消費される機能ブロック消費電力を求めるステップと、
（ｃ）前記機能ブロック消費電力と前記集積回路の動作時に前記機能ブロックが実行される回数とに基づいて、前記集積回路が消費する全体消費電力を求めるステップと
を具備する
消費電力計算方法。
【請求項２】
請求項１に記載の消費電力計算方法において、
前記（ａ）ステップは、
前記集積回路を動作合成し、前記機能ブロックの動作に要する時間を示す時間情報を含む前記低レベル回路モデルを生成するステップと、
前記低レベル回路モデルに対するシミュレーションを実行し、単位時間ごとの前記低レベル回路モデルの動作に基づいて前記動作情報を生成するステップ
を含む
消費電力計算方法。
【請求項３】
請求項２に記載の消費電力計算方法において、
前記時間情報は、前記機能ブロックの動作に要する総所要時間を示し、
前記低レベル回路モデルは、前記総所要時間における前記機能ブロックの動作を、単位時間ごとに示す
消費電力計算方法。
【請求項４】
請求項１から３の何れか一項に記載の消費電力計算方法において、
前記（ａ）ステップは、
前記集積回路と前記低レベル回路モデルとの対応を示す制御情報を出力するステップと、
前記制御情報に基づいて前記動作情報を生成するステップと
を含む
消費電力計算方法。
【請求項５】
請求項１から４の何れか一項に記載の消費電力計算方法において、
前記（ｂ）ステップは、
前記機能ブロックの動作時に前記素子が動作する動作回数を、前記動作情報から抽出するステップと、
前記動作回数と前記素子の一回の動作で消費される消費電力とに基づいて前記機能ブロック消費電力を算出するステップとを
含む
消費電力計算方法。
【請求項６】
請求項５に記載の消費電力計算方法において、
前記素子は、複数のレジスタを含み、
前記機能ブロック消費電力は、
前記複数のレジスタのそれぞれが消費する複数のレジスタ消費電力の和を示し、
前記複数の前記レジスタ消費電力のそれぞれは、
前記複数のレジスタのそれぞれの動作回数と前記複数のレジスタのそれぞれが一回の動作で消費する消費電力との積を示す
消費電力計算方法。
【請求項７】
請求項１から６の何れか一項に記載の消費電力計算方法において、
前記（ｃ）ステップは、
前記動作レベルで記述された前記集積回路のシミュレーションを実行するステップと、
前記シミュレーションの実行中に、前記機能ブロックが実行される回数をカウントするステップと、
前記回数と前記機能ブロック消費電力との積に基づいて前記全体消費電力を求めるステップと
を含む
消費電力計算方法。
【請求項８】
コンピュータを、設計対象の半導体装置の消費電力を計算する消費電力計算装置として機能させるための消費電力計算プログラムであって、
（ａ）動作レベルで記述された前記集積回路を、前記動作レベルより抽象度の低い低レベルで記述して低レベル回路モデルを構成し、前記低レベル回路モデルに基づいて前記機能ブロックの動作を示す動作情報を生成するステップと、
（ｂ）前記動作情報と前記機能ブロックを構成する素子が消費する素子消費電力とに基づいて、前記機能ブロックで消費される機能ブロック消費電力を求めるステップと、
（ｃ）前記機能ブロック消費電力と前記集積回路の動作時に前記機能ブロックが実行される回数とに基づいて、前記集積回路が消費する全体消費電力を求めるステップと
を具備する方法によってコンピュータを消費電力計算装置として機能させるための
消費電力計算プログラム。
【請求項９】
請求項８に記載の消費電力計算プログラムにおいて、
前記（ａ）ステップは、
前記集積回路を動作合成し、前記機能ブロックの動作に要する時間を示す時間情報を含む前記低レベル回路モデルを生成するステップと、
前記低レベル回路モデルに対するシミュレーションを実行し、単位時間ごとの前記低レベル回路モデルの動作に基づいて前記動作情報を生成するステップ
を含む
消費電力計算プログラム。
【請求項１０】
請求項９に記載の消費電力計算プログラムにおいて、
前記時間情報は、前記機能ブロックの動作に要する総所要時間を示し、
前記低レベル回路モデルは、前記総所要時間における前記機能ブロックの動作を、単位時間ごとに示す
消費電力計算プログラム。
【請求項１１】
請求項８から１０の何れか一項に記載の消費電力計算プログラムにおいて、
前記（ａ）ステップは、
前記集積回路と前記低レベル回路モデルとの対応を示す制御情報を出力するステップと、
前記制御情報に基づいて前記動作情報を生成するステップと
を含む
消費電力計算プログラム。
【請求項１２】
請求項８から１１何れか一項に記載の消費電力計算プログラムにおいて、
前記（ｂ）ステップは、
前記機能ブロックの動作時に前記素子が動作する動作回数を、前記動作情報から抽出するステップと、
前記動作回数と前記素子の一回の動作で消費される消費電力とに基づいて前記機能ブロック消費電力を算出するステップとを
含む
消費電力計算プログラム。
【請求項１３】
請求項１２に記載の消費電力計算プログラムにおいて、
前記素子は、複数のレジスタを含み、
前記機能ブロック消費電力は、
前記複数のレジスタのそれぞれが消費する複数のレジスタ消費電力の和を示し、
前記複数の前記レジスタ消費電力のそれぞれは、
前記複数のレジスタのそれぞれの動作回数と前記複数のレジスタのそれぞれが一回の動作で消費する消費電力との積を示す
消費電力計算プログラム。
【請求項１４】
請求項８から１３の何れか一項に記載の消費電力計算プログラムにおいて、
前記（ｃ）ステップは、
前記動作レベルで記述された前記集積回路のシミュレーションを実行するステップと、
前記シミュレーションの実行中に、前記機能ブロックが実行される回数をカウントするステップと、
前記回数と前記機能ブロック消費電力との積に基づいて前記全体消費電力を求めるステップと
を含む
消費電力計算プログラム。
【請求項１５】
少なくとも一つの機能ブロックを有する集積回路の消費電力を計算する消費電力計算装置であって、
動作レベルで記述された集積回路モデルを、前記動作レベルより抽象度の低い低レベルで記述して低レベル回路モデルを構成する動作合成装置と、
前記低レベル回路モデルに基づいて前記機能ブロックの動作を示す動作情報を生成する低レベル電力情報抽出装置と、
前記動作情報と前記機能ブロックを構成する素子が消費する素子消費電力とに基づいて、前記機能ブロックで消費される機能ブロック消費電力を求める機能ブロック電力情報抽出装置と、
前記機能ブロック消費電力と前記集積回路モデルの動作時に前記機能ブロックが実行される回数とに基づいて、前記集積回路モデルが消費する全体消費電力を求める動作レベル電力情報抽出装置と
を具備する
消費電力計算装置。
【請求項１６】
請求項１５に記載の消費電力計算装置において、
前記動作合成装置は、
前記集積回路モデルを動作合成し、前記機能ブロックの動作に要する時間を示す時間情報を含む前記低レベル回路モデルを生成し、
前記低レベル電力情報抽出装置は、
前記低レベル回路モデルに対するシミュレーションを実行し、単位時間ごとの前記低レベル回路モデルの動作に基づいて前記動作情報を生成する
消費電力計算装置。
【請求項１７】
請求項１６に記載の消費電力計算装置において、
前記時間情報は、前記機能ブロックの動作に要する総所要時間を示し、
前記低レベル回路モデルは、前記総所要時間における前記機能ブロックの動作を、単位時間ごとに示す
消費電力計算装置。
【請求項１８】
請求項１５から１７の何れか一項に記載の消費電力計算装置において、
前記動作合成装置は、
前記集積回路モデルと前記低レベル回路モデルとの対応を示す制御情報を出力し、
前記低レベル電力情報抽出装置は、
前記制御情報に基づいて前記動作情報を生成する
消費電力計算装置。
【請求項１９】
請求項１５から１８の何れか一項に記載の消費電力計算装置において、さらに、
前記素子が一回の動作で消費する消費電力を示す電力計算式を保持するライブラリ
を備え、
前記機能ブロック電力情報抽出装置は、
前記機能ブロックの動作時に前記素子が動作する動作回数を前記動作情報から抽出し、前記ライブラリから読み出した前記電力計算式と前記動作回数とに基づいて前記機能ブロック消費電力を算出する
消費電力計算装置。
【請求項２０】
請求項１９に記載の消費電力計算装置において、
前記素子は、複数のレジスタを含み、
前記機能ブロック消費電力は、
前記複数のレジスタのそれぞれが消費する複数のレジスタ消費電力の和を示し、
前記複数の前記レジスタ消費電力のそれぞれは、
前記複数のレジスタのそれぞれの動作回数と前記複数のレジスタのそれぞれが一回の動作で消費する消費電力との積を示す
消費電力計算装置。
【請求項２１】
請求項１５から２０の何れか一項に記載の消費電力計算装置において、
前記動作レベル電力情報抽出装置は、
前記動作レベルで記述された前記集積回路のシミュレーションの実行中に、前記機能ブロックが実行される回数をカウントし、前記回数と前記機能ブロック消費電力との積に基づいて前記全体消費電力を求める
消費電力計算装置。
【請求項２２】
動作レベルで記述され、複数の機能ブロックを有する集積回路モデルの消費電力を計算するためのライブラリを作成するライブラリ作成方法であって、
（ａ）前記複数の機能ブロックから、ライブラリ作成対象の機能ブロックを特定するステップと、
（ｂ）特定した前記機能ブロックを含むＩＰモデルを動作合成し、前記機能ブロックの動作に要する時間を示す時間情報を含む低レベルＩＰモデルを前記動作レベルより抽象度の低い低レベルで記述し、前記低レベルＩＰモデルに基づいて前記機能ブロックの動作を示す動作情報を生成するステップと、
（ｃ）前記動作情報と前記機能ブロックを構成する素子が消費する電力を示す電力計算式とに基づいて、前記機能ブロックで消費される電力を示す機能ブロック電力計算式を生成するステップと、
（ｄ）前記複数の機能ブロックのそれぞれに対して機能ブロック電力計算式を生成して前記ライブラリを構成するステップ
ライブラリ作成方法。
【請求項２３】
請求項２２に記載のライブラリ作成方法において、
前記時間情報は、前記機能ブロックの動作に要する総所要時間を示し、
前記低レベルＩＰモデルは、前記総所要時間における前記機能ブロックの動作を、単位時間ごとに示し、
前記（ｂ）ステップは、
前記集積回路モデルと前記低レベルＩＰモデルとの対応を示す制御情報を出力するステップと、
前記低レベルＩＰモデルに対するシミュレーションを実行して得られた単位時間ごとの前記低レベルＩＰモデルの動作と前記制御情報とに基づいて前記動作情報を生成するステップと
を含む
ライブラリ作成方法。
【請求項２４】
請求項２２または２３に記載のライブラリ作成方法において、
前記（ｃ）ステップは、
前記機能ブロックの動作時に前記素子が動作する動作回数を、前記動作情報から抽出する動作回数抽出ステップと、
前記動作回数と前記素子の一回の動作で消費される消費電力とに基づいて前記機能ブロック電力計算式を生成する計算式生成ステップと
を含む
ライブラリ作成方法。
【請求項２５】
請求項２４に記載のライブラリ作成方法において、
前記素子は、複数のレジスタを含み、
前記機能ブロック電力計算式は、
前記複数のレジスタのそれぞれが消費する複数のレジスタ消費電力の和を示し、
前記複数の前記レジスタ消費電力のそれぞれは、
前記複数のレジスタのそれぞれの動作回数と前記複数のレジスタのそれぞれが一回の動作で消費する消費電力との積を示す
ライブラリ作成方法。
【請求項２６】
請求項２２から２５の何れか一項に記載のライブラリ作成方法で作成された
ライブラリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置に関し、特に動作レベルで記述された集積回路の消費電力計算方法、消費電力計算プログラム、消費電力計算装置、その消費電力計算装置に使用可能なライブラリ、および、そのライブラリの作成方法に関する。
【背景技術】
【０００２】
半導体技術の進歩に伴って、システムＬＳＩ等の半導体装置では回路規模が増大してきている。回路規模が大きい半導体装置の設計として、抽象度が高いレベルから、抽象度が低いレベルに具体化していくトップダウン設計という設計手法が知られている。トップダウン設計では、大きく分けて、動作レベル、ＲＴ（レジスタ転送）レベル、及び、ゲートレベルの３つの設計段階に対応して半導体装置の設計を行っている。半導体装置の設計では、シミュレーションにより、設計対象の半導体装置の動作検証や、処理能力の検証、消費電力の検証等が行われる。
【０００３】
電子機器に搭載される半導体装置は、低い消費電力であることが要求されている。そのため、設計段階で半導体装置の消費電力を検証する技術が知られている（例えば、非特許文献１、特許文献１参照）。
【０００４】
図１は、非特許文献１に記載された消費電力見積もりの様子を示すフローチャートである。非特許文献１に記載の技術では、動作レベルで記述された第１アルゴリズム記述１４１に、稼働率を計算するためのルーチンを挿入し（ステップＳ１）、第２アルゴリズム記述１４２を得て、その第２アルゴリズム記述１４２を、シミュレーションする（ステップＳ２）。また、第２アルゴリズム記述１４２から、動作合成で生成されるデータ構造であり、アルゴリズムの記述をサイクル動作に変換する処理（スケジューリング）で生成されるＣＤＦＧ（Control Data Flow Graph）を生成する（ステップＳ３）。
【０００５】
ステップＳ２のシミュレーションで得られる稼働率ファイル１４３を、ステップＳ３で生成されるＣＤＦＧに割り当て（ステップＳ４）、リソース数やタイミングといった制約を設定し、動作合成で行うバインド処理に相当する処理を行う（ステップＳ５）。非特許文献１では、このようにして構築された環境に基づいて、ＲＴレベルよりも上位のレベルにおいて、設計対象の消費電力を見積もっている（ステップＳ６）。
【０００６】
また、高速に設計対象の半導体装置の消費電力の予測値を計算する技術として、例えば、特許文献１（特開２００５−２９３１６３号公報）に記載の技術が知られている。図２は、特許文献１に記載の消費電力見積もり装置１００による消費電力の予測値の計算の様子を示す図である。図２を参照すると、従来の消費電力見積もり装置１００では、アルゴリズム記述１１１を動作合成装置１０１で動作合成して、クロックレベル記述１１３を生成している。そして、そのクロックレベル記述１１３を、シミュレーション用記述１１５に基づいてクロックレベルシミュレーション装置１０２でシミュレーションし、クロックレベル記述１１３で示される記憶素子及び演算器の稼働率をそれぞれ算出している。
【０００７】
記憶素子電力計算部１０３は、電力計算式ファイル１１６から読み出した電力計算式と、記憶素子の稼働率とに基づいて、記憶素子部分の消費電力の予測値を計算している。また、組合せ回路電力計算部１０４は、電力計算式ファイル１１６から読み出した電力計算式と、演算器の稼働率とに基づいて、演算器部分の消費電力の予測値を計算し、電力計算式ファイル１１６から読み出した電力計算式と、記憶素子及び演算器の稼働率と、入出力ポートの稼働率とに基づいて、演算器以外の組合せ回路の消費電力の予測値を計算している。
また、アルゴリズムレベル記述とＲＴレベル記述との中間のレベルのシミュレーションを可能にする技術が知られている（例えば、特許文献２参照）。
【０００８】
【非特許文献１】ORINOCO  Behavioral  Level  Low  Power  Estimation  <http://www.chipvision.com/>
【特許文献１】特開２００５−２９３１６３号公報
【特許文献２】特開２００１−１０９７８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
非特許文献１に記載の技術では、シミュレーションをＲＴレベルよりも上位のレベルで行って消費電力を見積もっている。具体的には、動作レベルでシミュレーションを行って稼働率を計算し、その稼働率を利用して、ＣＤＦＧ生成及びバインドの処理により構築された環境における消費電力を見積もっている。
【００１０】
非特許文献１に記載の技術におけるアルゴリズム記述は、時間設定がされていないアンタイムド記述である。そのため、ハードウェアモデルを動的にシミュレーションする場合に比べて、消費電力見積もりの精度が低くなってしまう場合がある。また、非特許文献１に記載の技術では、ＣＤＦＧ生成及びバインドの処理により構築された環境が、後にアルゴリズム記述を動作合成して得られるＲＴＬ記述に相当するものであるという保証がない。そのため、設計対象の半導体装置の消費電力を正確に見積もることが困難な場合がある。
【００１１】
特許文献１に記載の技術では、非特許文献１に記載の技術に比較して、高速に設計対象の半導体装置の消費電力の予測値を計算することが可能となっている。システムＬＳＩ等の半導体装置の回路規模は増大してきている。半導体装置の回路規模が大きくなると、設計段階でのシミュレーションによる検証に多くの時間が費やされてしまう。短期間で半導体装置の設計を行うために、設計対象の半導体装置の消費電力を、より高速に予測する技術が望まれる。
【課題を解決するための手段】
【００１２】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
少なくとも一つの機能ブロックを有する集積回路の消費電力を、
（ａ）動作レベルで記述された集積回路（１５）を、前記動作レベルより抽象度の低い低レベルで記述して低レベル回路モデル（１７）を構成し、前記低レベル回路モデル（１７）に基づいて前記機能ブロックの動作を示す動作情報（２１）を生成するステップと、
（ｂ）前記動作情報（２１）と前記機能ブロックを構成する素子が消費する素子消費電力（１９）とに基づいて、前記機能ブロックで消費される機能ブロック消費電力（２２）を求めるステップと、
（ｃ）前記機能ブロック消費電力（２２）と前記集積回路（１５）の動作時に前記機能ブロックが実行される回数とに基づいて、前記集積回路が消費する全体消費電力（２４）を求めるステップとを具備する消費電力計算方法によって計算する。
【００１４】
この計算方法では、動作レベルで記述された集積回路の消費電力を求めるときに、その動作レベルより一段抽象度が低いレベルで、かつ、機能ブロックごとに消費電力を求めている。その消費電力を示す情報をライブラリとして保持しておく。動作レベル記述を用いたシミュレーションを実行するときに、シミュレータが機能ブロックに対応する記述を読み出したら、そのライブラリを参照して、その読み出された機能ブロックに対応する消費電力を得る。機能ブロックの読み出し回数と、予めライブラリ化された消費電力とに基づいて、集積回路全体の消費電力を見積もる。
【発明の効果】
【００１５】
本発明によると、短時間で半導体装置の消費電力の予測することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下に、図面を参照して本発明を実施するための形態について説明を行う。図３は、本実施形態の消費電力計算装置１０の構成を例示するブロック図である。図３を参照すると、本実施形態の消費電力計算装置１０は、情報処理装置１と、入力装置２と、出力装置３とを含んで構成されている。
【００１７】
情報処理装置１は、プログラムに示される手順に従って情報処理を高速に行うコンピュータである。情報処理装置１は、入力、記憶、演算、制御および出力の５つの機能を備えている。入力装置２は、情報処理装置１にデータを入力するマンマシンインターフェースである。入力装置２の代表としては、キーボードやマウスなどが例示される。出力装置３は、情報処理装置１の処理結果を外部に出力するマンマシンインターフェースである。出力装置３の代表としては、ディスプレイやプリンタなどが例示される。
【００１８】
情報処理装置１は、ＣＰＵ４と、ＲＡＭ５と、大容量記憶装置６とを含んで構成され、それらはバス７を介して接続されている。ＣＰＵ４は、情報処理装置１に備えられた各種装置の制御やデータの処理を行う演算処理装置である。ＣＰＵ４は、入力装置２から入力されるデータを、バス７を介して受け取り、受け取ったそのデータを解釈して演算し、結果を出力装置３などに出力する。ＲＡＭ５は、ＣＰＵ４がソフトウェアを実行する場合に使用される記憶媒体である。大容量記憶装置６は、ハードディスクや不揮発性半導体メモリなどに例示される情報記憶装置である。大容量記憶装置６は、ユーザによるデータ削除が実行されるまで、記憶しているデータを保持し続ける機能を備えている。
【００１９】
ＣＰＵ４は、プログラム格納領域８とデータ格納領域９とを含んで構成されている。プログラム格納領域８には、動作合成ツール１１と、クロックレベル電力情報抽出ツール１２と、機能ブロック電力情報１３と、動作レベル電力情報１４とが格納されている。データ格納領域９には、動作レベルＣ記述１５と、ＲＴＬ記述１６と、クロックレベル記述１７と、制御情報１８と、電力計算式ファイル１９と、機能ブロックレジスタ情報２１と、機能ブロック電力計算式ファイル２２、シミュレーション用記述２３と、システム見積もり電力２４と、が格納されている。
【００２０】
動作レベルＣ記述１５は、設計対象の集積回路（モジュール）の動作を、動作レベル（ＢＬ：Behavior Level）を用いて記述している。本実施形態の動作レベルＣ記述１５は、設計対象の集積回路（モジュール）の動作を記述したシミュレーションモデルであり、特定の処理のまとまり（以下、機能ブロックと呼ぶ）に対して、その機能ブロックが実行されるときに要する時間が定義されている。動作レベルＣ記述１５が示す集積回路は、少なくとも一つのＩＰ（Intellectual Propertyと呼ばれる半導体回路設計ブロック）を含んで構成されている。そのＩＰは、更に少なくとも一つの機能ブロックを備えている。なお、以下の実施形態においては、動作レベルＣ記述１５がＣ言語やＣ＋＋等の高級プログラミング言語で記述されている場合を例示しているが、これは、動作レベルＣ記述１５の構成を制限するものではない。
【００２１】
ＲＴＬ記述１６は、動作合成により得られる。ＲＴＬ記述１６は、ハードウェア記述言語で記述される構造記述であり、論理合成されて、設計対象の集積回路（モジュール）の具体的なゲート回路を決定している。本実施形態のＲＴＬ記述１６は、モジュールの動作を記述したシミュレーションモデルであり、サイクル単位に動作が定義されている。ＲＴＬ記述１６は、論理合成によりゲートレベル記述に変換できる。
【００２２】
クロックレベル記述１７は、動作レベルよりも抽象度が低く、かつ、ＲＴレベルよりも抽象度が高いクロックレベルでシミュレーションを行うための記述である。クロックレベル記述１７の中に含まれるレジスタ（記憶素子）及び演算器はそれぞれ、後にＲＴＬ記述１６を論理合成してハードウェア化されるレジスタ（記憶素子）及び演算器と１対１に対応する。クロックレベル記述１７には、動作レベルＣ記述１５に記述された設計対象の半導体装置のアンタイムドな動作が、所定の制約条件の下で、クロック単位での動作に変換されて記述されている。クロックレベル記述１７は、モジュール（設計対象の半導体装置）の動作を記述したシミュレーションモデルであり、サイクル単位に動作が定義されている。本実施形態のクロックレベル記述１７には、機能ブロックを示す記述が本実施形態においては、クロックレベル記述１７が、Ｃ言語またはＣ＋＋言語で記述されている場合を例示して説明を行う。
【００２３】
制御情報１８は、動作合成ツール１１が出力する情報であり、動作合成の際の資源制約等の情報を含んでいる。具体的には、制御情報１８は、動作レベルＣ記述１５内の変数に関する情報や、ＲＴＬ記述１６のレジスタ変数の対応情報等を含んでいる。例えば、あるレジスタが、ＦＳＭにおけるどの状態の、どの条件が成立した場合に、当該レジスタ変数が変化するかという情報を含んでいる。
【００２４】
電力計算式ファイル１９は、フリップフロップやメモリ等のレジスタ（記憶素子）に対する消費電力を求めるためのデータシート（電力計算式）を有するファイルである。その電力計算式は、レジスタ（記憶素子）がハードウェア化された際の面積や動作周波数に関するデータを含んでいる。本実施形態において、電力計算式ファイル１９は、各部の消費電力を計算するための式が格納されたライブラリとして予め構成されている。
【００２５】
機能ブロックレジスタ情報２１は、機能ブロックと、その機能ブロックを構成するレジスタと、その機能ブロックの状態におけるそのレジスタのトグル回数との対応を示している。上述の動作レベルＣ記述１５に示される集積回路が、複数のＩＰ（Intellectual Property）を備えている場合、機能ブロックレジスタ情報２１は、それぞれのＩＰに対応して構成されている。それらのＩＰには、少なくとも一つの機能ブロックが備えられている。機能ブロックレジスタ情報２１には、その機能ブロックごとに消費電力を求めるための情報が含まれている。ここにおいて、機能ブロックとは、ある処理のまとまりを表している。本実施形態において、このまとまりの粒度は、動作モード(待機モード/動作モード)、Ｃレベルの構文単位(関数、ｉｆ文やswitch分の分岐の単位)などに応じて可変的に構成することが可能である。
【００２６】
機能ブロック電力計算式ファイル２２は、消費電力を計算するための計算式を有するファイルである。機能ブロック電力計算式ファイル２２は、機能ブロックレジスタ情報２１と電力計算式ファイル１９とに基づいて生成され、特定の機能ブロックに対する消費電力を求めるためのデータシート（電力計算式）として構成されている。
【００２７】
シミュレーション用記述２３は、システムを構成するモジュールのシミュレーション用モデルであり、設計対象の集積回路（モジュール）に含まれるＣＰＵコア等のＩＰコアの動作や、バスモデルが記述されている。本実施形態におけるシミュレーション用記述２３は、動作レベルＣ記述１５と合わせてシステムを構成することが可能である。
【００２８】
システム見積もり電力２４は、動作レベルＣ記述１５を用いたシステムレベルシミュレーションによって得られた設計対象の集積回路（モジュール）の見積もり消費電力情報である。
【００２９】
動作合成ツール１１は、動作レベルＣ記述１５を動作合成してＲＴＬ記述１６を生成する。また、動作合成ツール１１は、動作レベルＣ記述１５を動作合成してクロックレベル記述１７を生成する。さらに、動作合成ツール１１は、制御情報１８を生成する。本実施形態において、動作合成ツール１１は、制御情報１８に示される情報に基づいて、機能ブロックの動作に要する時間を示す時間情報を含むようにクロックレベル記述１７を構成する。この時間情報は、ある機能ブロックの動作に要する総所要時間を示している。クロックレベル記述１７は、その総所要時間における機能ブロックの動作を単位時間ごとにどのように実行されるかを示している。
【００３０】
クロックレベル電力情報抽出ツール１２は、クロックレベルの電力情報を得るための装置である。ダイナミックシミュレータ、シミュレーション結果より消費電力を計算するための装置、および、静的消費電力計算装置などを含んで構成されている。クロックレベル電力情報抽出ツール１２は、シミュレーションにより得られた稼働率を用い、設計対象の半導体装置を構成すべきレジスタ（記憶素子）や、演算器、マルチプレクサなどの各部の消費電力を、電力計算式ファイル１９を参照して計算する。本実施形態のクロックレベル電力情報抽出ツール１２は、クロックレベルでの電力情報である機能ブロックレジスタ情報２１を算出する。なお、本実施形態において、クロックレベル電力情報抽出ツール１２への入力がＲＴＬ記述１６である場合を例示しているが、クロックレベル電力情報抽出ツール１２への入力はゲートレベル記述でも構わない。
【００３１】
機能ブロック電力情報１３は、機能ブロックレジスタ情報２１に示される情報に基づいて機能ブロック単位に電力をマッピングして機能ブロック電力計算式ファイル２２を生成する。動作レベル電力情報１４は、動作レベルモデルを入力とするシミュレーションを行い、システムの消費電力を計算する。
【００３２】
以下に、本実施形態の動作について説明を行う。本実施形態の動作は、情報処理装置１が、所定のコンピュータプログラムに示される手順に対応して動作することによって実現する。図４は、情報処理装置１の動作を例示するフローチャートである。このフローチャートのステップＳ１０１からステップＳ１０４は、本実施形態の情報処理装置１が実行可能な行為の連鎖を例示している。
【００３３】
ステップＳ１０１において、情報処理装置１は、動作合成ツール１１を起動する。動作合成ツール１１は、データ格納領域９に保持されている動作レベルＣ記述１５を読み出し、ＲＴＬ記述１６と、クロックレベル記述１７と、制御情報１８とを生成する。以下に、動作合成ツール１１の出力について説明を行う。
【００３４】
図５は、動作レベルＣ記述１５の構成を例示する図である。図５の動作レベルＣ記述リスト３１は、動作レベルＣ記述１５の一部を抜き出して例示したリストである。動作レベルＣ記述１５は、時間の概念を含む動作レベル記述である。本実施形態における動作レベルＣ記述１５の時間の概念（時間情報）は、サイクルレベルで定義されておらず、機能ブロックの単位で累積時間が定義されている。図５を参照すると、動作レベルＣ記述１５の５８行目（動作レベルＣ記述リスト３１の上から７行目）には、この機能ブロックの処理の累積時間が３クロックであることが示されている。本実施形態では、その動作レベルＣ記述１５のＷａｉｔで指定された時間情報を考慮してＩＰが消費する電力の見積もりを行う。
【００３５】
図５の動作レベルＣ記述リスト３１は、動作レベルＣ記述１５に含まれる一つの関数を一つの機能ブロックとした場合を例示している。本実施形態では、機能ブロック単位で消費電力情報を抽出するため、以下では、
機能ブロック＝関数
として説明を行うものとする。なお、動作レベルＣ記述リスト３１において、If文の分岐単位で消費電力情報を抽出した場合は、
機能ブロック＝if文の分岐
となる。
【００３６】
図６は、動作合成ツール１１が出力する制御情報１８の構成を例示する図である。本実施形態において、動作合成ツール１１は、動作合成前の動作レベルＣ記述１５の記述と、動作合成後に生成されるクロックレベル記述１７内の、レジスタとの対応情報を示す制御情報１８を生成する。また、その制御情報１８は、動作合成前の動作レベルＣ記述１５の記述と、生成されたHWの状態遷移とを対応付けている。図６は、制御情報１８の構成を視覚的に示す動作合成ツール出力情報テーブル３２である。図６に示されているように、制御情報１８は、レジスタ情報３３と関数情報３４とを含んで構成されている。
【００３７】
レジスタ情報３３は、動作レベル記述変数名３３−１と、ｂｉｔ数３３−２と、レジスタＩＤ３３−３と、状態ＩＤ３３−４と、動作レベル記述行番号３３−５と、レジスタ変化条件３３−６と、条件ＩＤ３３−７とを対応付けている。関数情報３４は、関数名３４−１と、関数番号３４−２と、動作レベル記述行番号３４−３と、条件ＩＤ３４−５とを対応付けている。
【００３８】
レジスタ情報３３の動作レベル記述変数名３３−１は、動作合成結果としてレジスタに変換された変数名である。図６に示されているように、制御情報１８を参照することによって、その動作レベル記述変数名３３−１を特定したときに、ＦＳＭの状態に対応する状態ＩＤ３３−４と、動作レベルモデルの行番号である動作レベル記述行番号３３−５と、レジスタの値が変化する条件であるレジスタ変化条件３３−６とを抽出することができる。また、図６に示されているように、制御情報１８を参照することによって、動作レベルモデル内に含まれる関数を示す関数名３４−１と、その関数が呼び出される条件（呼び出し条件３４−４、条件ＩＤ３４−５）についても抽出することができる。
【００３９】
後述するクロックレベル電力情報抽出ツール１２は、機能ブロックの単位のレジスタ（記憶素子）の動作率を求めるために、動作合成ツール１１が出力する制御情報１８を読み出して利用する。
【００４０】
図７は、動作合成ツール１１が出力するクロックレベル記述１７の構成を例示する図である。図７は、クロックレベル記述１７の一部を抜き出したリスト（クロックレベル記述リスト３５）の構成を例示している。本実施形態のクロックレベル記述１７には、状態ＩＤ３３−４と条件ＩＤ３３−７とを示す記述が含まれている。図７のクロックレベル記述リスト３５を参照すると、クロックレベル記述１７の２１行目から２６行目（クロックレベル記述リスト３５の上から１行目から６行目まで）は、動作レベルＣ記述１５の５３行目の記述に対応している。クロックレベル記述１７の２２行目から２３行目（クロックレベル記述リスト３５の上から２行目から３行目まで）の記述は、動作レベルＣ記述１５の５３行目の記述が、動作合成後、
状態ＩＤ  ＳＴ＿０２
条件ＩＤ  ＣＮＤ＿０１
に相当することを示している。また、クロックレベル記述１７の２７行目から３１行目には、動作レベル記述の５４行目が、動作合成後、
状態ＩＤ  ＳＴ＿０３
に相当することが示されている。
【００４１】
また、クロックレベル記述１７の３２行目から３５行目は、何も行わないサイクルが動作合成ツールにより挿入されたことを示している。さらに、クロックレベル記述１７の３６行目から４１行目には、動作レベルＣ記述１５の５５行目が、動作合成後、
状態ＩＤ  ＳＴ＿０２
条件ＩＤ  ＣＮＤ＿０２
に相当することが示され、クロックレベル記述１７の４２行目から４７行目には、動作レベル記述の５６行目が、動作合成後、
状態ＩＤ  ＳＴ＿０３
に相当することが示されている。
【００４２】
図４に戻り、ステップＳ１０２において、情報処理装置１はクロックレベル電力情報抽出ツール１２を起動し、クロックレベルでの消費電力を見積もる。クロックレベル電力情報抽出ツール１２は、機能ブロック情報を含む制御情報１８と、図７のクロックレベル記述リスト３５のような記述を含むクロックレベル記述１７と、電力計算式ファイル１９とを入力としてシミュレーションを実行する。このとき、クロックレベル電力情報抽出ツール１２は、
ＳＥＴ＿ＳＴＡＴＥ
ＳＥＴ＿ＣＯＮＤＩＴＩＯＮ
が呼ばれるたびに、その情報を記録する。なお、クロックレベル記述リスト３５に示される条件設定や状態設定において、挿入された全ての行がレジスタ変化を示すものではない。例えば、時間経過に対応して継続的に同じ状態（同じ値）が続く場合には、クロックレベル電力情報抽出ツール１２は、レジスタが変化していないことを示す情報を記録する。クロックレベル電力情報抽出ツール１２は、この記録と、動作合成が出力した制御情報１８とを合わせて、シミュレーションの実行中に各レジスタが何回変化したかを得る。
【００４３】
クロックレベル電力情報抽出ツール１２は、機能ブロックの単位でレジスタ（記憶素子）のトグル回数（動作率）を示すデータを生成する。クロックレベル電力情報抽出ツール１２は、ＩＰが備える複数の機能ブロックのそれぞれに対応して上述のようなデータを生成する。クロックレベル電力情報抽出ツール１２はそれらのデータに基づいて、ＩＰのクロックレベル消費電力見積もりを示す機能ブロックレジスタ情報２１を生成する。また、クロックレベル電力情報抽出ツール１２は、設計対象の集積回路が複数のＩＰを含んでいる場合、その複数のＩＰのそれぞれに対応する機能ブロックレジスタ情報２１を生成する。
【００４４】
図８は、機能ブロックが消費する電力を示す見積もり消費電力データの構成を例示するテーブル（以下、見積もり消費電力データテーブル３６と呼ぶ）である。機能ブロックレジスタ情報２１は、ＩＰが備える複数の機能ブロックのそれぞれに対応して、見積もり消費電力データテーブル３６を備えている。図８を参照すると、見積もり消費電力データテーブル３６は、ある機能ブロックを構成するレジスタ（記憶素子）とその機能ブロックの状態とを特定したときに、それらのレジスタ（記憶素子）のトグル回数が得られるように構成されている。ここにおいて、機能ブロックは、特定の動作モード、状態遷移、動作レベルモデル内の関数、あるいは内部の分岐単位等の粒度を選択できるものとする。また、クロックレベル電力情報抽出ツール１２は、関数の呼び出し回数等を取得することも可能であり、条件を考慮した変化回数を得ることができる。なお、クロックレベル電力情報抽出ツール１２が実行するシミュレーションには、ＲＴＬやＣ言語のクロックレベルモデルを用いた、ダイナミックシミュレーションによる見積もり手法や、ＲＴＬを用いて静的に見積もる手法などが例示される。本実施形態では、設計対象の半導体装置に含まれるレジスタ（記憶素子）の動作率を基に計算する手法であれば、どのような手法を採用しても良い。
【００４５】
図４に戻り、ステップＳ１０３において、機能ブロック電力情報１３は、機能ブロックレジスタ情報２１に示されるＩＰのクロックレベル消費電力見積もりを、動作レベルＣ記述１５の機能ブロックへマッピングする。機能ブロック電力情報１３は、機能ブロックとその中に含まれるレジスタ（記憶素子）との対応を、機能ブロックレジスタ情報２１を参照して取得し、その対応を利用して機能ブロック単位での消費電力計算式を求める。この計算式には、クロック周波数を考慮した、機能ブロック単位での総消費電力量と、機能ブロックに定義された時間情報を基に得られる平均消費電力値の計算式がある。
【００４６】
機能ブロック電力情報１３は、消費電力計算を行う際に、レジスタ（記憶素子）の種類に応じて用意された電力計算式を電力計算式ファイル１９から読み出す。上述したように、電力計算式ファイル１９には、レジスタ（記憶素子）がハードウェア化された際の面積や動作周波数に関するデータが含まれている。電力計算式ファイル１９は、そのデータに基づいて、レジスタ（記憶素子）の一回の動作で消費される電力の計算が可能なように構成されている。機能ブロック電力情報１３は、電力計算式ファイル１９を参照して得られた電力計算式と、機能ブロックレジスタ情報２１に基づいて、機能ブロックに含まれるフリップフロップ、演算器、リーク電流による電力を見積もる。１回の機能ブロックの実行で消費される電力を“機能ブロック消費電力”とすると、機能ブロック電力情報１３は、下記の（１）式からその機能ブロック消費電力を算出する。
機能ブロック消費電力
＝Σ（機能ブロック内のレジスタの平均消費電力）  ＋  Σ（機能ブロック内のレジスタ以外の演算器の平均消費電力）・・・（１）
上述のように、機能ブロック電力情報１３は、（１）式に基づいて、機能ブロック電力計算式ファイル２２を生成する。生成された機能ブロック電力計算式ファイル２２は、ライブラリとして情報処理装置１のデータ格納領域９に保持される。
【００４７】
ステップＳ１０４において、動作レベル電力情報１４は、時間情報を含む動作レベルＣ記述１５を用いてシミュレーションを実行し、システム見積もり電力２４を生成する。この時、動作レベル電力情報１４は、動作レベルＣ記述１５の機能ブロックの稼働率（機能ブロックが呼ばれた回数）をシミュレーション実行中に計算する。設計対象の集積回路全体で消費される電力を“総消費電量”とすると、動作レベル電力情報１４は、この稼働率と、機能ブロック単位の消費電力計算式とを基にして、下記（２）式に基づいてその総消費電量を見積もる。
総消費電量
＝Σ（機能ブロックの動作率  ×  機能ブロックの消費電力値）  ＋  モジュールのリーク電流・・・（２）
上述のようにして、動作レベル電力情報１４は総消費電量を算出する。動作レベル電力情報１４は、その総消費電量をシステム見積もり電力２４としてデータ格納領域９に格納する。
【００４８】
換言すると、本実施形態では、設計対象の半導体装置の動作を、時間情報を含む動作レベルモデルをシミュレーションすることによって、その設計対象の半導体装置の消費電力の予測値を計算している。この予測値は、まず動作記述で示された機能ブロックの稼働率を算出し、その算出された機能ブロックの稼働率と、クロック周波数にそれぞれ対応する電力計算式とに基づいて算出されている。この予測値の計算手段は、ＩＰを構成する各機能ブロックが呼び出された時に、その機能モデルが動作するものとして各機能ブロックの消費電力の予測値を計算する。また、この予測値の計算手段は、シミュレーションを行った際に、算出された機能ブロックの動作率に基づき、消費電力の予測値を計算する。このとき、動作が一切呼び出されない場合には、その場合に対応する電力計算式と、その動作が呼び出されない時間に基づいて、消費電力の予測値を計算する。
【００４９】
上述してきた消費電力計算方法によると、動作レベル記述の機能ブロックでは、動作レベルモデル中で時間情報を設定する単位を１機能ブロックとしている。そして、その機能ブロックの単位で、クロックレベル記述のシミュレーション結果から得られた見積もり電力値を積算した電力値を消費するものとして計算している。
また、動作レベルモデル中で時間情報を追加する単位を１機能ブロックとしたとき、機能ブロック毎に、クロックレベル記述のシミュレーション結果から得られた消費電力計算式を求めることができる。ここにおいて、予測値を計算する工程では、各機能ブロックが呼び出された時にのみ、その機能ブロックが動作するものとして計算することが好ましい。さらに、予測値を計算する工程では、動作が一切呼び出されない場合の電力計算式と、その動作が呼び出されない時間に基づいて、消費電力の予測値を計算しても良い。
【００５０】
本実施形態の情報処理装置１は、クロックレベルシミュレーションで求めた消費電力量を利用して、総消費電量の計算を行っている。そのため、全消費電力量を高い精度で求めることができる。本実施形態の情報処理装置１は、初期のアーキテクチャ検討段階での十分な精度で、消費電力を見積もることができる。
【００５１】
また、本実施形態の情報処理装置１では、動作レベルモデルを利用してシミュレーションを実施している。したがって、システムの規模が増加するにつれて、クロックレベルシミュレーションに要する時間が大きくなる場合であっても、高速にシステムの消費電力を求めることができる。
【００５２】
なお、上述の実施形態において、動作合成ツール１１が、状態ＩＤ３３−４と条件ＩＤ３３−７とを示す記述を含むクロックレベル記述１７を出力する場合を例示した。本発明では、上記の構成に制限されることは無く、例えば、ＲＴＬ記述１６に状態ＩＤ３３−４と条件ＩＤ３３−７とを示す記述を含ませても良い。この場合には、ＲＴＬレベルで消費電力を求めることのできるツールと、論理合成用のライブラリとを用いて、ＲＴＬ上のレジスタ（記憶素子）を、実際のハードウェアにマッピングした上で電力計算を行うことが好ましい。
【００５３】
また、上述の実施形態における機能ブロックは、特定の動作モード、状態遷移、動作レベルモデル内の関数、あるいは内部の分岐単位等、粒度の選択が可能である。この場合において、動作レベルＣ記述１５におけるレジスタの変化回数が大きく変わる記述箇所を区切りとして機能ブロックを構成することが好ましい。
【００５４】
また上述したように、動作レベルＣ記述１５には、集積回路を構成する機能ブロックが実行されるときに要する時間が定義されている。上述の実施形態では、動作合成ツール１１は、機能ブロックの動作に要する時間を示す時間情報を含むクロックレベル記述１７を構成している。本実施形態の消費電力計算装置１０において、動作合成ツール１１は、時間情報に依存せずにクロックレベル記述１７（またはＲＴＬ記述１６）を出力することが可能である。このとき、動作合成ツール１１は、時間情報を含むことなくＲＴＬ記述１６やクロックレベル記述１７を生成する。そして、クロックレベル電力情報抽出ツール１２は、そのＲＴＬ記述１６またはクロックレベル記述１７を使用して機能ブロックレジスタ情報２１を生成する。その場合には、機能ブロック電力情報１３は、動作レベルＣ記述１５に定義された時間情報と、機能ブロックレジスタ情報２１とに基づいて、機能ブロック電力計算式ファイル２２を生成する構成を備えていることが好ましい。これによって、本実施形態の消費電力計算装置１０は、動作合成ツール１１が動作レベルＣ記述１５に定義されている時間の制約なしに動作合成を行う場合であっても、適切にシステム見積もり電力２４を生成することが可能となる。
【図面の簡単な説明】
【００５５】
【図１】図１は、従来の消費電力見積もりの様子を示すフローチャートである。
【図２】図２は、従来の消費電力見積もり装置１００による消費電力の予測値の計算の様子を示す図である。
【図３】図３は、本実施形態の消費電力計算装置の構成を例示するブロック図である。
【図４】図４は、本実施形態の動作を例示するフローチャートである。
【図５】図５は、動作レベルＣ記述１５を抜粋した動作レベルＣ記述リスト３１の構成を例示する図である。
【図６】図６は、動作合成ツール１１から出力される制御情報１８の構成を例示するテーブルである。
【図７】図７は、クロックレベル記述１７の構成を例示するリストである。
【図８】図８は、見積もり消費電力データテーブル３６の構成を例示する図である。
【符号の説明】
【００５６】
１…情報処理装置
２…入力装置
３…出力装置
４…ＣＰＵ
５…ＲＡＭ
６…大容量記憶装置
７…バス
８…プログラム格納領域
９…データ格納領域
１０…消費電力計算装置
１１…動作合成ツール
１２…クロックレベル電力情報抽出ツール
１３…機能ブロック電力情報
１４…動作レベル電力情報
１５…動作レベルＣ記述
１６…ＲＴＬ記述
１７…クロックレベル記述
１８…制御情報
１９…電力計算式ファイル
２１…機能ブロックレジスタ情報
２２…機能ブロック電力計算式ファイル
２３…シミュレーション用記述
２４…システム見積もり電力
３１…動作レベルＣ記述リスト
３２…動作合成ツール出力情報テーブル
３３…レジスタ情報
３３−１…動作レベル記述変数名
３３−２…ｂｉｔ数
３３−３…レジスタＩＤ
３３−４…状態ＩＤ
３３−５…動作レベル記述行番号
３３−６…レジスタ変化条件
３３−７…条件ＩＤ
３４…関数情報
３４−１…関数名
３４−２…関数番号
３４−３…動作レベル記述行番号
３４−４…呼び出し条件
３４−５…条件ＩＤ
３５…クロックレベル記述リスト
３６…見積もり消費電力データテーブル
１００…消費電力見積もり装置
１０１…動作合成装置
１０２…クロックレベルシミュレーション装置
１０３…レジスタ（記憶素子）電力計算部
１０４…組合せ回路電力計算部
１１１…アルゴリズム記述
１１３…クロックレベル記述
１１５…シミュレーション用記述
１１６…電力計算式ファイル
１４１…第１アルゴリズム記述
１４２…第２アルゴリズム記述
１４３…稼働率ファイル
【図１】
2008299464.tif 000003
【図２】
2008299464.tif 000004
【図３】
2008299464.tif 000005
【図４】
2008299464.tif 000006
【図５】
2008299464.tif 000007
【図６】
2008299464.tif 000008
【図７】
2008299464.tif 000009
【図８】
2008299464.tif 000010