(57)【要約】【課題】  予測精度の低下を抑制しつつ、高速に設計対象の半導体装置の消費電力の予測値を計算することができる消費電力計算装置を提供する。【解決手段】  アルゴリズム記述１を動作合成装置１０１で動作合成して、クロックレベル記述３を生成する。クロックレベル記述３を、クロックレベルシミュレーション装置１０２でシミュレーションし、クロックレベル記述３で示される記憶素子及び演算器の稼働率をそれぞれ算出する。記憶素子電力計算部１０３は、電力計算式ファイル６から読み出した電力計算式と、記憶素子の稼働率とに基づいて、記憶素子部分の消費電力の予測値を計算する。組合せ回路電力計算部１０４は、電力計算式ファイル６から読み出した電力計算式と、演算器の稼働率とに基づいて、演算器部分の消費電力の予測値を計算し、電力計算式ファイル６から読み出した電力計算式と、記憶素子及び演算器の稼働率と、入出力ポートの稼働率とに基づいて、演算器以外の組合せ回路の消費電力の予測値を計算する。【選択図】    図１
2005293163.tif 000002
【特許請求の範囲】
【請求項１】
設計対象の半導体装置の消費電力の予測値を計算する消費電力計算方法において、
前記設計対象の半導体装置の動作をクロックレベルの動作として記述したクロックレベル記述をシミュレーションし、該クロックレベル記述で示された記憶素子及び演算器の稼働率をそれぞれ算出するステップと、
前記算出された記憶素子及び演算器の稼働率と、前記記憶素子及び演算器にそれぞれ対応する電力計算式とに基づいて、各記憶素子及び各演算器の消費電力の予測値を計算するステップとを備えることを特徴とする消費電力計算方法。
【請求項２】
前記予測値を計算するステップでは、各記憶素子の消費電力を、当該記憶素子にデータが書き込まれるときにのみクロック信号が入力されるものとして計算する、請求項１に記載の消費電力計算方法。
【請求項３】
前記算出された記憶素子及び演算器の稼働率と、演算器以外の組合せ回路に対応して用意された電力計算式とに基づいて、演算器以外の組合せ回路の消費電力の予測値を計算するステップを更に有する、請求項１又は２に記載の消費電力計算方法。
【請求項４】
前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子及び演算器がそれぞれ１以上存在する場合には、該１以上の記憶素子及び演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項３に記載の消費電力計算方法。
【請求項５】
前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子が１以上存在する場合には、該１以上の記憶素子の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項３に記載の消費電力計算方法。
【請求項６】
前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに演算器が１以上存在する場合には、該１以上の演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項３に記載の消費電力計算方法。
【請求項７】
前記クロックレベル記述に基づいて仮想配線領域を想定し、バッファの駆動能力と仮想配線の配線容量とに基づいて、前記仮想配線中に挿入するバッファの位置を計算しつつ、前記仮想配線領域内にＣＴＳ（クロックツリーシンセシス）配線を配線するステップと、
前記ＣＴＳ配線を配線するステップで仮想配線中に挿入されたバッファ数に基づいて、ＣＴＳによる消費電力の予測値を計算するステップとを更に有する、請求項１〜６の何れか一に記載の消費電力計算方法。
【請求項８】
前記クロックレベル記述に基づいてゲートサイズを想定し、該想定したゲートサイズに基づいてリーク電力の予測値を計算するステップを更に有する、請求項１〜７の何れか一に記載の消費電力計算方法。
【請求項９】
設計対象の半導体装置の動作をクロックレベルの動作として記述したクロックレベル記述をシミュレーションし、前記設計対象の半導体装置の消費電力の予測値を計算する消費電力計算装置であって、
前記クロックレベル記述で示された記憶素子の稼働率を算出し、該算出された記憶素子の稼働率と、記憶素子の消費電力を計算するための電力計算式とに基づいて、各記憶素子の消費電力の予測値を計算する記憶素子電力計算手段と、
前記クロックレベル記述で示された演算器の稼働率を算出し、該算出された演算器の稼働率と、演算器の消費電力を計算するための電力計算式とに基づいて、各演算器の消費電力の予測値を計算する組合せ回路電力計算手段とを有することを特徴とする消費電力計算装置。
【請求項１０】
前記記憶素子電力計算手段は、各記憶素子には、当該記憶素子にデータが書き込まれるときにのみクロック信号が供給されるものとして、各記憶素子の消費電力の予測値を計算する、請求項９に記載の消費電力計算装置。
【請求項１１】
前記組合せ回路電力計算手段は、演算器以外の組合せ回路の消費電力を計算するための電力計算式と、前記算出した演算器の稼働率、及び、前記記憶素子電力計算手段が算出した記憶素子の稼働率とに基づいて、当該演算器以外の組合せ回路の消費電力の予測値を更に計算する、請求項９又は１０に記載の消費電力計算装置。
【請求項１２】
前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子及び演算器がそれぞれ１以上存在する場合には、該１以上の記憶素子及び演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項１１に記載の消費電力計算装置。
【請求項１３】
前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子が１以上存在する場合には、該１以上の記憶素子の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項１１に記載の消費電力計算装置。
【請求項１４】
前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに演算器が１以上存在する場合には、該１以上の演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算する、請求項１１に記載の消費電力計算装置。
【請求項１５】
前記クロックレベル記述に基づいて仮想配線領域を想定し、バッファの駆動能力と、仮想配線の配線容量とに基づいて、前記仮想配線中に挿入するバッファの位置を計算しつつ、前記仮想配線領域内にＣＴＳ配線を配線し、前記仮想配線中に挿入されたバッファ数に基づいて、ＣＴＳによる消費電力の予測値を計算するＣＴＳ電力計算手段を更に有する、請求項９〜１４の何れか一に記載の消費電力計算装置。
【請求項１６】
前記クロックレベル記述に基づいてゲートサイズを想定し、該想定したゲートサイズに基づいて、リーク電力の予測値を計算するリーク電力計算手段を更に有する、請求項９〜１５の何れか一に記載の消費電力計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消費電力計算方法及び装置に関し、更に詳しくは、設計対象の半導体装置の消費電力の予測値を計算する消費電力計算方法及び装置に関する。
【背景技術】
【０００２】
近年、システムＬＳＩ等の半導体装置は、回路規模が増大しており、その設計には、抽象度が高いレベルから、抽象度が低いレベルに具体化していくトップダウン設計手法が採用される。トップダウン設計は、大きく分けて、動作レベル、ＲＴ（レジスタ転送）レベル、及び、ゲートレベルの３つの設計段階を有する。通常、半導体装置の設計では、シミュレーションにより、動作検証や、処理能力の検証、消費電力の検証等が行われる。特に、携帯型装置に搭載される半導体装置には、高い低消費電力性能が要求される傾向にあり、設計段階での消費電力の検証の重要度は高まっている。
【０００３】
図８は、シミュレーションをゲートレベルで行う消費電力見積もりの手順を示している。このようなゲートレベルでの消費電力の見積もりは、例えば特許文献１に記載されている。システムＬＳＩ等の設計では、設計対象の半導体装置（マクロブロック）の機能が記載されたアルゴリズム記述２１が、動作合成装置２２により、ＲＴレベルのハードウェア記述（ＲＴＬ記述）２３に変換される。ＲＴＬ記述２３は、論理合成装置２４により、ゲートレベルのハードウェア記述（ゲートレベルネットリスト）２５に変換される。
【０００４】
ゲート電力ライブラリ２６には、テクノロジごとに、マルチプレクサやレジスタ等のハードウェア（ゲート）の消費電力の予測値が登録されている。電力計算装置２７は、入力されたゲートレベルネットリスト２５を基に、ゲートレベルでシミュレーションを行いつつ、各ゲートの動作状態に合わせた電力値をゲート電力ライブラリ２６から取得し、設計対象の半導体装置全体の消費電力を動的に見積もる。
【０００５】
ゲートレベルでの消費電力見積もりでは、ゲート電力ライブラリ２６に登録された各ゲートの消費電力の予測値の精度を高めることで、設計対象の半導体装置の消費電力見積もりの精度を高めることができる。しかし、ゲートレベルでのシミュレーションには時間がかかり、このようなゲートレベルでの消費電力見積もりを、特に回路規模が大きな半導体装置の設計に用いることは現実的でない。
【０００６】
消費電力の見積もりに要する時間を短縮する手法としては、シミュレーションをＲＴレベルで行う消費電力見積もりがある。図９は、シミュレーションをＲＴレベルで行う消費電力見積もりの手順を示している。このようなＲＴレベルでの電力見積もりでは、動作合成により得られたＲＴＬ記述２３が、ＲＴＬコシミュレーション装置２８によってコシミュレーションされる。このシミュレーションでは、半導体装置を構成すべきゲート回路のうち、ＲＴＬ記述２３によって特定されるレジスタやメモリ等の記憶素子に対応する部分のトグル率又はトグルの遷移確率を示す稼働率が計算される。
【０００７】
稼働率設定装置３０は、ＲＴＬ記述２３を論理合成して得られたゲートレベルネットリスト２５と、ＲＴＬコシミュレーション装置２８によって計算された記憶素子の稼働率２９とを入力し、ゲートレベルネットリスト２５に含まれる各ゲートに、稼働率を設定する。各ゲートのうち、記憶素子に対応するゲートについては、ＲＴＬ記述２３とゲートレベルネットリストとが１対１に対応するため、稼働率設定装置３０は、ＲＴＬコシミュレーション装置２８により入力された記憶素子の稼働率２９をそのまま用いて、記憶素子に対応するゲートの稼働率を設定する。
【０００８】
各ゲートのうち、記憶素子以外のゲートについては、ＲＴＬ記述２３とゲートレベルネットリスト２５とが１対１に対応しないため、記憶素子のゲートの稼働率を、ＲＴＬコシミュレーション装置２８から入力することはできない。しかし、通常、記憶素子以外のゲートは、記憶素子や入力ピンによって前後から挟み込まれるため、その部分の稼働率を、記憶素子の稼働率２９から推定することはできる。そこで、稼働率設定装置３０は、記憶素子の稼働率２９や入力ピンからの稼働率をネットリスト上で伝播させて、記憶素子以外のゲートの稼働率を設定する。電力計算装置３２は、稼働率設定装置３０が出力する、ゲートごとに稼働率が設定された稼働率ファイル３１と、ゲート電力ライブラリ２６とを用い、各ゲートの消費電力を静的に見積もることで、設計対象の半導体装置全体の消費電力を見積もる。
【０００９】
ＲＴレベルでの消費電力見積もりでは、消費電力計算装置３２は、ゲートレベルでシミュレーションを行わずに、消費電力を見積もる。このように、シミュレーションを行うレベルが、ゲートレベルよりも抽象度が高いＲＴレベルであるため、ＲＴレベルでの消費電力の見積もりは、図８に示すゲートレベルでの消費電力見積もりに比して、消費電力見積もりに要する時間を短縮できる。しかし、半導体装置の回路規模が大きい場合には、ＲＴレベルでの消費電力見積もりでも十分に高速であるとはいえず、より高速に消費電力の見積もりを行いたいという要望がある。
【００１０】
より高速に消費電力を見積もることができる技術としては、非特許文献１に記載された技術がある。図１０は、この非特許文献１に記載された消費電力見積もりの様子をフローチャートで示している。この技術では、動作レベルで記述されたアルゴリズム記述Ａ４１に、稼働率を計算するためのルーチンを挿入し（ステップＳ１０１）、アルゴリズム記述Ｂ４２を得て、そのアルゴリズム記述Ｂ４２を、シミュレーションする（ステップＳ１０２）。また、アルゴリズム記述Ｂ４２から、動作合成で生成されるデータ構造であり、アルゴリズムの記述をサイクル動作に変換する処理（スケジューリング）で生成されるＣＤＦＧ（Control Data Flow Graph）を生成する（ステップＳ１０３）。
【００１１】
ステップＳ１０２のシミュレーションで得られる稼働率ファイル４３を、ステップＳ１０３で生成されるＣＤＦＧに割り当て（ステップＳ１０４）、リソース数やタイミングといった制約を設定し、動作合成で行うバインド処理に相当する処理を行う（ステップＳ１０５）。非特許文献１では、このようにして構築された環境に基づいて、ＲＴレベルよりも上位のレベルにおいて、設計対象の消費電力を見積もっている（ステップＳ１０６）。
【特許文献１】特開２００１−２６５８４７号公報
【特許文献２】特開２００１−１０９７８８号公報
【非特許文献１】ＯＲＩＮＯＣＯ  Behavioral Level Low Power Estimation <http://www.chipvision.com/>
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、図１０に示す、シミュレーションをＲＴレベルよりも上位のレベルで行う消費電力の見積もりでは、動作レベルでシミュレーションを行って稼働率を計算し、その稼働率を利用して、ＣＤＦＧ生成及びバインドの処理により構築された環境における消費電力を見積もっている。この場合には、消費電力の見積もりは高速化できるものの、アルゴリズム記述は、時間設定がされていないアンタイムド記述であるため、ハードウェアモデルを動的にシミュレーションする場合に比べて、消費電力見積もりの精度が低いという問題がある。また、ＣＤＦＧ生成及びバインドの処理により構築された環境が、後にアルゴリズム記述を動作合成して得られるＲＴＬ記述に相当するものであるという保証がないため、設計対象の半導体装置の消費電力を正しく見積もれる保証がないという問題もある。
【００１３】
ここで、設計対象の半導体装置のシミュレーションを高速化できる技術として、特許文献２に記載された技術がある。この技術では、動作レベルより抽象度が低く、ＲＴレベルより抽象度が高いレベルとして、クロックレベルなるレベルが提案されている。クロックレベル記述は、サイクルベースの記述である点で、構造記述であるＲＴＬ記述とは異なり、ＲＴＬ記述と同じタイミングで動くハードウェアモデルである。特許文献２では、このようなクロックレベルの記述を使用してシミュレーションを行っている。同じハードウェアモデルについて、クロックレベル記述とＲＴＬ記述とを比較すると、クロックレベル記述は、ＲＴＬ記述に比べて記述量が少なく、シミュレーションを高速にできるメリットがある。しかし、従来、クロックレベルのシミュレーションを使用して、設計対象の半導体装置の消費電力を見積もる技術については、知られていなかった。
【００１４】
本発明は、予測精度の低下を抑制しつつ、高速に設計対象の半導体装置の消費電力の予測値を計算することができる消費電力計算方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明の消費電力計算方法は、設計対象の半導体装置の消費電力の予測値を計算する消費電力計算方法において、前記設計対象の半導体装置の動作をクロックレベルの動作として記述したクロックレベル記述をシミュレーションし、該クロックレベル記述で示された記憶素子及び演算器の稼働率をそれぞれ算出するステップと、前記算出された記憶素子及び演算器の稼働率と、前記記憶素子及び演算器の種類ごとに用意された電力計算式とに基づいて、各記憶素子及び各演算器の消費電力の予測値を計算するステップとを備えることを特徴とする。
【００１６】
また、本発明の消費電力計算装置は、設計対象の半導体装置の動作をクロックレベルの動作として記述したクロックレベル記述をシミュレーションし、前記設計対象の半導体装置の消費電力の予測値を計算する消費電力計算装置であって、前記クロックレベル記述で示された記憶素子の稼働率を算出し、該算出された記憶素子の稼働率と、記憶素子の消費電力を計算するための電力計算式とに基づいて、各記憶素子の消費電力の予測値を計算する記憶素子電力計算手段と、前記クロックレベル記述で示された演算器の稼働率を算出し、該算出された演算器の稼働率と、演算器の消費電力を計算するための電力計算式とに基づいて、各演算器の消費電力の予測値を計算する組合せ回路電力計算手段とを有することを特徴とする。
【００１７】
本発明の消費電力計算方法及び装置は、設計対象の半導体装置の機能がクロックごとの動作として記述されたクロックレベル記述をシミュレーションして、記憶素子及び演算器に相当する部分のトグルをカウントし、それらのトグル率やトグルの遷移確率として示される稼働率を得て、記憶素子の消費電力の予測値と、演算器の消費電力との予測値とを計算する。本発明では、シミュレーションをクロックレベルで行うため、それよりも抽象度が低いレベルでシミュレーションを行う場合に比して、稼働率を高速に求めることができる。また、クロックレベル記述で示される記憶素子及び演算器と、後に論理合成されるＲＴＬ記述で示される記憶素子及び演算器とでは、それぞれ１対１の対応が取れるため、ＲＴレベルでシミュレーションを行ってそれらの稼働率を得る場合と同程度の精度で、設計対象の半導体装置の記憶素子及び演算器の消費電力の予測値を計算することができる。
【００１８】
本発明の消費電力計算方法では、前記算出された記憶素子及び演算器の稼働率と、演算器以外の組合せ回路に対応して用意された電力計算式とに基づいて、演算器以外の組合せ回路の消費電力の予測値を計算するステップを更に有することが好ましく、本発明の消費電力計算装置では、前記組合せ回路電力計算手段は、演算器以外の組合せ回路の消費電力を計算するための電力計算式と、前記算出した演算器の稼働率、及び、前記記憶素子電力計算手段が算出した記憶素子の稼働率とに基づいて、当該演算器以外の組合せ回路の消費電力の予測値を更に計算することが好ましい。
クロックレベル記述のシミュレーションでは、演算器以外の組合せ回路の稼働率を直接に求めることができず、その部分の消費電力の予測値を計算することができない。本発明では、演算器以外の組合せ回路部分の稼働率を、記憶素子及び演算器の稼働率に基づいて推定した値に設定するため、演算器以外の組合せ回路部分の消費電力の予測値を計算することができる。
【００１９】
本発明の消費電力計算方法は、前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子及び演算器がそれぞれ１以上存在する場合には、該１以上の記憶素子及び演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましく、本発明の消費電力計算装置では、前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子及び演算器がそれぞれ１以上存在する場合には、該１以上の記憶素子及び演算器の稼働率を使用して、当該当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましい。
例えば、演算器以外の組合せ回路の前後のデータパスに、複数の記憶素子と、複数の演算器とがあるときには、その演算器以外の組合せ回路の稼働率を、複数の記憶素子の稼働率の平均と、複数の演算器の稼働率の平均とを平均した値に設定して消費電力の予測値を計算する構成を採用することができる。
【００２０】
本発明の消費電力計算方法は、前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子が１以上存在する場合には、該１以上の記憶素子の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましく、本発明の消費電力計算装置では、前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに記憶素子が１以上存在する場合には、該１以上の記憶素子の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましい。
例えば、演算器以外の組合せ回路の前後のデータパスに、複数の記憶素子があるときには、その演算器以外の組合せ回路の稼働率を、複数の記憶素子の稼働率の平均値に設定して、消費電力の予測値を計算する構成を採用することができる。
【００２１】
本発明の消費電力計算方法は、前記演算器以外の組合せ回路の消費電力の予測値を計算するステップでは、計算対象の演算器以外の組合せ回路の前後のデータパスに演算器が１以上存在する場合には、該１以上の演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましく、本発明の消費電力計算装置では、前記組合せ回路電力計算手段は、計算対象の演算器以外の組合せ回路の前後のデータパスに演算器が１以上存在する場合には、該１以上の演算器の稼働率を使用して、当該演算器以外の組合せ回路の消費電力の予測値を計算することが好ましい。
例えば、演算器以外の組合せ回路の前後のデータパスに、複数の演算器があるときには、その演算器以外の組合せ回路の稼働率を、複数の演算器の稼働率の平均値に設定して消費電力の予測値を計算する構成を採用することができる。
【００２２】
本発明の消費電力計算方法は、前記予測値を計算するステップでは、各記憶素子の消費電力を、当該記憶素子にデータが書き込まれるときにのみクロック信号が入力されるものとして計算するものとすることができ、本発明の消費電力計算装置では、前記記憶素子電力計算手段は、各記憶素子には、当該記憶素子にデータが書き込まれるときにのみ、クロック信号が供給されるものとして、各記憶素子の消費電力の予測値を計算することができる。
例えばクロックゲーティングを考慮せずに、各記憶素子のクロック端子には、常時クロック信号が供給されていることを想定して、各記憶素子の消費電力の予測値を計算してもよく、或いは、クロックゲーティングを考慮して、各記憶素子のクロック端子には、データの書き換え時にクロック信号が供給されることを想定して、記憶素子の消費電力を計算してもよい。
【００２３】
本発明の消費電力計算方法は、前記クロックレベル記述に基づいて仮想配線領域を想定し、バッファの駆動能力と仮想配線の配線容量とに基づいて、前記仮想配線中に挿入するバッファの位置を計算しつつ、前記仮想配線領域内にＣＴＳ（クロックツリーシンセシス）配線を配線するステップと、前記ＣＴＳ配線を配線するステップで仮想配線中に挿入されたバッファ数に基づいて、ＣＴＳによる消費電力の予測値を計算するステップとを更に有することが好ましく、本発明の消費電力計算装置は、前記クロックレベル記述に基づいて仮想配線領域を想定し、バッファの駆動能力と、仮想配線の配線容量とに基づいて、前記仮想配線中に挿入するバッファの位置を計算しつつ、該仮想配線領域内にＣＴＳ配線を配線し、前記仮想配線中に挿入されたバッファ数に基づいて、ＣＴＳによる消費電力の予測値を計算するＣＴＳ電力計算手段を更に有することが好ましい。この場合、実際のレイアウト情報が得られる前の段階において、ＣＴＳによる消費電力の予測値を計算することができる。
【００２４】
本発明の消費電力計算方法は、前記クロックレベル記述に基づいてゲートサイズを想定し、該想定したゲートサイズに基づいてリーク電力の予測値を計算するステップを更に有することが好ましく、本発明の消費電力計算装置は、前記クロックレベル記述に基づいてゲートサイズを想定し、該想定したゲートサイズに基づいて、リーク電力の予測値を計算するリーク電力計算手段を更に有することが好ましい。この場合、設計対象の半導体装置のリーク電力の予測値を計算することができる。
【発明の効果】
【００２５】
本発明の消費電力計算方法及び装置では、クロックレベル記述をシミュレーションして記憶素子及び演算器の稼働率を求め、設計対象の半導体装置の消費電力の予測値を計算するため、消費電力予測の精度の低下を抑制しつつ、ＲＴレベルでシミュレーションを行うよりも高速に消費電力の予測値を計算することができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を更に詳細に説明する。図１は、本発明の一実施形態例の消費電力見積もり装置による消費電力の予測値の計算の様子を示している。消費電力見積もり装置１００は、コンピュータシステムを用いて構成される動作合成装置１０１及びクロックレベルシミュレーション装置１０２を有する。クロックレベルシミュレーション装置１０２は、記憶素子電力計算部１０３と、組合せ回路電力計算部１０４と、ＣＴＳ・リーク電力計算部１０５とを有する。消費電力見積もり装置１００は、動作レベルよりも抽象度が低く、かつ、ＲＴレベルよりも抽象度が高いクロックレベルでシミュレーションを行い、消費電力の予測値を見積もる。
【００２７】
アルゴリズム記述１には、設計対象の半導体装置（マクロブロック）の動作が、ＣやＣ＋＋等の高級言語を用いて動作レベルで記述されている。動作合成装置１０１は、アルゴリズム記述１を動作合成してＲＴＬ記述２を生成すると共に、クロックレベルのクロックレベル記述３及び合成情報４を生成する。動作合成により得られるＲＴＬ記述２は、構造記述であり、論理合成されて、設計対象の半導体装置の具体的なゲート回路を決定する記述である。クロックレベル記述３は、アルゴリズム記述１に記述された設計対象の半導体装置のアンタイムドな動作を、所定の制約条件の下で、クロック単位での動作に変換して記述したものである。合成情報４は、動作合成の際の資源制約等の情報を含んでいる。
【００２８】
クロックレベルシミュレーション装置１０２は、動作合成により得られたクロックレベル記述３及び合成情報４と、設計対象のブロックと共に半導体装置に含まれるＣＰＵコア等のＩＰコアの動作やバスモデルが記述されたシミュレーション用記述５とによって構築された環境で、サイクルベースのシミュレーションを実行する。このシミュレーションでは、レジスタやメモリに相当する変数タイプにトグルを計算する機構が組み込まれ、設計対象の半導体装置に含まれるべき記憶素子や演算器に相当する部分のトグルをカウントして、トグル率やトグルの遷移確率を示す稼働率が計算される。
【００２９】
クロックレベル記述中に含まれる記憶素子及び演算器は、それぞれ、後にＲＴＬ記述２を論理合成してハードウェア化される記憶素子及び演算器と１対１に対応する。クロックレベルシミュレーション装置１０２は、シミュレーションにより得られた稼働率を用い、設計対象の半導体装置を構成すべき記憶素子や、演算器、マルチプレクサなどの各部の消費電力を、各部の消費電力を計算するための式が格納された電力計算式ファイル６を参照して計算する。
【００３０】
記憶素子電力計算部１０３は、設計対象の半導体装置を構成すべき記憶素子に相当する回路部分の消費電力を、クロックレベル記述３をシミュレーションして得られた記憶素子の稼働率を用いて計算する。組合せ回路電力計算部１０４は、シミュレーションにより得られた記憶素子や演算器の稼働率に基づいて、設計対象の半導体装置を構成すべき記憶素子以外の、演算器を含む組合せ回路部分の消費電力を計算する。ＣＴＳ・リーク電力計算部１０５は、設計対象の半導体装置のＣＴＳ（クロックツリーシンセシス）の電力を計算し、また、半導体装置全体でのリーク電力を計算する。クロックレベルシミュレーション装置１０２は、これら記憶素子に相当する回路部分の消費電力、組合せ回路に相当する回路部分の消費電力、ＣＴＳに相当する回路部分の消費電力、及び、リーク電力を合計した消費電力を、設計対象の半導体装置の見積もり電力値７として出力する。
【００３１】
図２は、クロックレベルシミュレーション装置１０２によるシミュレーション環境を示している。クロックレベルシミュレーション装置１０２では、クロックレベル記述３で記述されたプロセッサ部分３ａ、ハードウェア部分３ｂ、及び、メモリ部分３ｃと、シミュレーション用記述５で記述されたプロセッサ部分５ａ、メモリ部分５ｂ、及び、バス部分５ｃとによってシミュレーション環境が構築される。このシミュレーション環境では、シミュレーション用記述５で記述されたプロセッサ部分５ａ、メモリ部分５ｂ、及び、バス部分５ｃは、トグルの計算のみが可能なブロックである。消費電力見積もり装置１００は、このようにして構築されたシミュレーション環境を利用して、クロックレベル記述３で記述されたプロセッサ部分３ａ、ハードウェア部分３ｂ、及び、メモリ部分３ｃの消費電力を見積もる。
【００３２】
図３は、消費電力の見積もりの手順を示している。通常、フリップフロップやメモリ等の記憶素子に対しては、ハードウェア化された際の面積や動作周波数から消費電力を求めることができるデータシート（電力計算式）が提供されており、その電力計算式は、電力計算式ファイル６に格納されている。記憶素子電力計算部１０３は、電力計算式ファイル６から、消費電力計算対象の記憶素子の電力計算式を読み込み、シミュレーションにより得られた記憶素子のトグル率から動作周波数を計算して、各記憶素子について、その消費電力の予測値を見積もる（ステップＳ３１）。
【００３３】
例えば、記憶素子電力計算部１０３は、フリップフロップ（ＦＦ）に対しては、下記の式（１）を電力計算式ファイル６から読み出し、動作率をデータピンのトグル数／クロックピンのトグル数、周波数を（クロックピンのトグル数／シミュレーションサイクル数）×システム周波数として、式（１）に基づいてＦＦ部分の消費電力の予測値を計算する。
Power（ＦＦ）＝（パワー係数×動作率＋パワー定数）×グリッド数×周波数  （１）
ここで、データピンのトグル数は、レジスタとして宣言された変数のデータ変化回数である。また、クロックピンのトグル数は、クロックゲーティングを考慮しないときにはシミュレーションサイクル数である。式（１）のパワー係数及びパワー定数は、それぞれ設計対象の半導体装置のテクノロジに応じて設定される値であり、グリッド数は、ハードウェア化された際のＦＦの面積に相当するものである。
【００３４】
記憶素子電力計算部１０３は、メモリに対しては、下記の式（２）を電力計算式ファイル６から読み出し、リード（ライト）周波数をリード（ライト）サイクル数／（リードサイクル数＋ライトサイクル数）、動作率を（リードサイクル数＋ライトサイクル数）／シミュレーションサイクル数として、式（２）に基づいてメモリ部分の消費電力の予測値を計算する。
Power（メモリ）＝（I_read＋I_write）×Ｖｄｄ  （２）
ただし、I_read＝パワー係数0×ワード数+パワー係数1×ビット数＋パワー係数2×ワード数×ビット数＋パワー定数0）×リード周波数×動作率
I_write＝パワー係数3×ワード数+パワー係数4×ビット数＋パワー係数5×ワード数×ビット数＋パワー定数1）×ライト周波数×動作率
である。
式（２）のパワー係数及びパワー定数は、それぞれ設計対象の半導体装置のテクノロジに応じて設定される値である。
【００３５】
図３に戻り、組合せ回路電力計算部１０４は、設計対象の半導体装置を構成すべき組合せ回路部分を、演算器部分と、演算器以外の組合せ回路部分とに分け、まず、演算器部の消費電力の予測値を計算する（ステップＳ３２）。組合せ回路部分のうち、演算器部分については、記憶素子と同様に、クロックレベル記述３のシミュレーションにより、その稼働率が得られている。ステップＳ３２では、組合せ回路電力計算部１０４は、電力計算式ファイル６から、下記式（３）で示される演算器の電力計算式を読み込み、シミュレーションにより得られた演算器のトグル率を用いて、その消費電力の予測値を計算する。
Power（演算器）＝パワー係数×動作率×演算器部分のグリッド数×周波数  （３）
ここで、動作率＝演算器のトグル数／シミュレーションサイクル数、周波数＝システム周波数であり、パワー係数は、それぞれ対象となる設計対象の半導体装置のテクノロジに応じて設定される値である。
【００３６】
ところで、組合せ回路のクロックレベル記述３は、ＲＴＬ記述２とは異なり、例えばマルチプレクサとして構成される演算器以外の組合せ回路部分の構造を保持しておらず、ＲＴＬ記述２におけるマルチプレクサの構造を推測することはできないため、クロックレベル記述３のシミュレーションでは、その部分のトグル率を得ることができない。また、たとえＲＴＬ記述２におけるマルチプレクサの構造を推測できたとしても、ゲートレベルの回路は、ＲＴＬ記述２を論理合成して得られため、クロックレベル記述３から、ゲートレベルのマルチプレクサの構造を予測することは不可能である。
【００３７】
通常、演算器以外の組合せ回路部分は、図４に示すように、記憶素子１１又は演算器１２からデータを入力して、記憶素子１１又は演算器１２にデータを出力する。或いは、設計対象の半導体装置のデータの入力ポートからデータを入力し、出力ポートへデータを出力する。このため、シミュレーションにより、演算器以外の組合せ回路１３の正確なトグル数を得ることはできないものの、その部分のトグルは、記憶素子１１及び演算器１２のトグル、或いは、図示しない入出力ポートのトグルに基づいて推測できる。そこで、組合せ回路電力計算部１０４は、電力計算式ファイル６から読み込んだ電力計算式と、推定により得られた稼働率とを使用して、演算器以外の組合せ回路１３の消費電力の予測値を計算する（図３のステップＳ３３）。
【００３８】
図５は、図３のステップＳ３３の演算器以外の組合せ回路１３の消費電力の計算手順の詳細をフローチャートで示している。組合せ回路電力計算部１０４は、電力計算式ファイル６から、演算器以外の組合せ回路１３の消費電力の計算に使用する下記式（４）を読み出す（ステップＳ５１）。
Power（演算器以外の組合せ回路）
＝パワー係数×動作率×演算器以外の組合せ回路のグリッド数×周波数  （４）
ここで、周波数＝システム周波数であり、パワー係数は、それぞれ対象となる設計対象の半導体装置のテクノロジに応じて設定される値であり、動作率（稼働率）は、以下のようにして設定される。
【００３９】
組合せ回路電力計算部１０４は、演算器以外の組合せ回路１３（図４）の周辺（前後のデータパス）に記憶素子１１、演算器１３、又は、入出力ポートが存在するか否かを調査し、１以上の記憶素子１１、演算器１３、又は、入出力ポートがあるときには、それらのトグル数をそれぞれ求める（ステップＳ５２）。組合せ回路電力計算部１０４は、例えば演算器以外の組合せ回路１３の周辺に記憶素子１１が１以上存在するときには、それらの平均トグル数を求め、周辺に演算器１２が１以上存在するときには、それらの平均トグル数を求める。
【００４０】
組合せ回路電力計算部１０４は、ステップＳ５２で求めたトグル数に基づいて、演算器以外の組合せ回路１３の動作率を推定する（ステップＳ５３）。例えば、組合せ回路電力計算部１０４は、演算器以外の組合せ回路１３の周辺に、１以上の記憶素子１１のみが存在するときには、それら記憶素子１１の平均トグル数と、演算器以外の組合せ回路１３の平均トグル数とが等しいと推定し、動作率＝記憶素子１１の平均トグル数／シミュレーションサイクル数とする。或いは、周辺に１以上の演算器１２のみが存在するときには、動作率＝演算器１２の平均トグル数／シミュレーションサイクル数とし、周辺に１以上の入出力ポートのみが存在するときには、動作率＝入出力ポートの平均トグル数／シミュレーションサイクル数とし、周辺に１以上の記憶素子１１と１以上の演算器１２とが存在するときには、動作率＝（記憶素子１１の平均トグル数と演算器１２の平均トグル数との平均）／シミュレーションサイクル数とする。組合せ回路電力計算部１０４は、ステップＳ５３で推定した動作率を用いて、演算器以外の組合せ回路１３の消費電力を計算する（ステップＳ５４）。
【００４１】
再び図３に戻り、ＣＴＳ・リーク電力計算部１０５は、設計対象の半導体装置に形成されるべきＣＴＳによる電力の予測値を計算し、また、半導体装置のリーク電力を計算する（ステップＳ３４）。ＣＴＳ・リーク電力計算部１０５は、クロックレベル記述３に記述される動作で実現するブロック内にＣＴＳが張られることを想定し、仮想的にＣＴＳ配線を配線して、実際のレイアウト情報が得られる前の段階において、ＣＴＳの消費電力の予測値を計算する。
【００４２】
図６は、ＣＴＳ電力見積もり手順の詳細をフローチャートで示している。ＣＴＳ・リーク電力計算部１０５は、クロックレベル記述３に含まれる記憶素子数に基づいて、ＣＴＳをはるエリアサイズを計算し（ステップＳ６１）、Ｈツリー上に、配線モデルを作成する（ステップＳ６２）。図７は、Ｈツリー配線モデルを示しており、このＨツリーの末端に、記憶素子１１を１つずつ配置する（ステップＳ６３）。Ｈツリーの末端から、１つ上の分岐点へ移動し（ステップＳ６４）、分岐点までの間の配線上にバッファ１４を配置しないと、分岐点よりも上流側のバッファのドライブ能力を超えるか否かを判断する（ステップＳ６５）。バッファ１４を配置しなくても、ドライブ能力を超えないと判断されたときには、ステップＳ６４へ戻り、更に上流側の分岐点へ移動する。
【００４３】
ステップＳ６５で、バッファ１４のドライブ能力を超えると判断されたときには、ＣＴＳ・リーク電力計算部１０５は、Ｈツリーの末端から、ドライブ能力を超えると判断された分岐点までの間にバッファ１４を挿入する位置を計算する（ステップＳ６６）。挿入されたバッファ１４の位置をＨツリーの末端として（ステップＳ６７）、その位置が、Ｈツリーのトップであるか否かを判断する（ステップＳ６８）。ステップＳ６８で、Ｈツリーのトップであると判断されないときには、ステップＳ６４へ戻り、更に１つ上の分岐点に移動する。ＣＴＳ・リーク電力計算部１０５は、ステップＳ６８でＨツリーのトップであると判断するまで、ステップＳ６４からステップＳ６８までを、繰り返し実行し、ＣＴＳツリーの構造を決定していく。
【００４４】
電力計算式ファイル６には、バッファ１４の種類ごとに、バッファ１４がドライブする容量と消費電力との関係がテーブルとして記憶されており、ＣＴＳ・リーク電力計算部１０５は、下記式（５）を電力計算式ファイル６から読み出し、ＣＴＳの消費電力の予測値を計算する（ステップＳ６９）。
Power（ＣＴＳ）＝ΣPower_table（容量，バッファ種類）×システム周波数  （５）
【００４５】
また、ＣＴＳ・リーク電力計算部１０５は、リーク電力を計算するための下記式（６）を電力計算式ファイルから読み出し、テクノロジに応じて設定される電力係数と、クロックレベル記述３から見積もったゲートサイズとから、リーク電力の予測値を計算する。ゲートサイズは、例えばクロックレベル記述３の記述量から見積もる。
power（リーク）＝電力係数×ゲートサイズ  （６）
クロックレベルシミュレーション装置１０２は、以上のようにして計算した記憶素子部分、演算器部分、演算器以外の組合せ回路部分、ＣＴＳ、及び、リーク電力を合計して、半導体装置の消費電力を見積もる。
【００４６】
本実施形態例では、ＲＴレベルよりも上位のクロックレベルでシミュレーションを行い、記憶素子及び演算器部分の稼働率を得て、それらの部分の消費電力の予測値を計算している。クロックレベル記述３を用いたシミュレーションと、ＲＴＬ記述２を用いたシミュレーションとを比較すると、クロックレベル記述３は、ＲＴＬ記述２のように構造を持たないために記述量が少なく、クロックレベル記述３を用いたシミュレーションの方が、シミュレーションを高速に行うことができるため、消費電力の見積もりを、高速に行うことができる。
【００４７】
クロックレベル記述３の記憶素子及び演算器部分については、ＲＴＬ記述２を論理合成することで得られるゲートレベルの回路と１対１の対応が取れるため、ＲＴレベルでシミュレーションを行った場合と同じ程度の精度で、それらの部分の消費電力を見積もることができる。このため、非特許文献１のように動作レベルでシミュレーションを行う場合に比して、消費電力見積もりの精度を向上させることができる。また、クロックレベル記述３は、アルゴリズム記述１と同様に、ＣやＣ＋＋といったプログラミング言語で記述可能であり、ソフトウェア等との親和性が強く、システム検証に好適に用いることができるメリットもある。
【００４８】
本実施形態例では、演算器以外の組合せ回路については、前後のデータパスに存在する記憶素子及び演算器の少なくとも一方の平均の稼働率を使用して、電力を見積もる。クロックレベル記述３を用いたシミュレーションでは、演算器以外の組合せ回路については稼働率を求めることができないが、本実施形態例のように、前後のデータパスに存在する記憶素子等の稼働率を用いることによって、演算器以外の組合せ回路部分の消費電力を見積もることが可能となる。
【００４９】
設計対象の半導体装置において、ＣＴＳは、大きな電力を消費するため、できるだけ、設計の初期の段階で、その消費電力を見積もりたいという要望がある。しかし、従来、レイアウト情報がない初期の段階で、ＣＴＳの消費電力を見積もることは困難であった。本実施形態例では、ＣＴＳ・リーク電力計算部１０５が、仮想的にＣＴＳ配線を配線して、ＣＴＳの消費電力の予測値を計算するため、実際のレイアウト情報が得られる前の段階において、その部分の消費電力を見積もることができる。
【００５０】
なお、動作合成装置１０１による動作合成では、クロックゲーティングを行う場合、例えばＦＦへのデータ書き込みがないときには、ＦＦにクロック信号が入力されないようなゲーティング回路を生成するように、ＲＴＬ記述２が生成される。しかし、クロックレベル記述３は、クロックゲーティングに関する情報を有していないため、クロックゲーティングを考慮する場合には、そのままでは、ＦＦ部分の消費電力を正しく計算することができない。クロックゲーティングを考慮する場合には、記憶素子には、データの書き換え時にのみクロック信号が入力されるものとして、消費電力の計算をするとよい。具体的には、例えば記憶素子がＦＦとして構成されるときには、そのＦＦのクロック端子には、データの書き込み時にのみクロック信号が入力されるものとして、式（１）におけるクロックピンのトグル数を、レジスタとして宣言された変数の書き込み回数に置き換えて、消費電力を計算するとよい。
【００５１】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明の消費電力計算方法及び装置は、上記実施形態例にのみ限定されるものではなく、上記実施形態例の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態例の消費電力見積もり装置による消費電力の見積もりの様子を示すブロック図。
【図２】クロックレベルシミュレーション装置１０２によるシミュレーション環境を示すブロック図。
【図３】設計対象の半導体装置に各部分の消費電力の見積もりの手順を示すフローチャート。
【図４】設計対象の半導体装置に含まれるデータパスを示すブロック図。
【図５】図３のステップＳ３３の演算器以外の組合せ回路１３の消費電力の計算手順の詳細を示すフローチャート。
【図６】ＣＴＳ電力見積もり手順の詳細を示すフローチャート。
【図７】Ｈツリー配線モデルを示すブロック図。
【図８】トップダウン設計におけるゲートレベルでの消費電力見積もりを示すブロック図。
【図９】ＲＴレベルでの消費電力見積もりの様子を示すブロック図。
【図１０】非特許文献１に記載された消費電力見積もりを示すブロック図。
【符号の説明】
【００５３】
１：アルゴリズム記述
２：ＲＴＬ記述
３：クロックレベル記述
４：合成情報
６：電力計算式ファイル
７：見積もり電力値
１１：記憶素子
１２：演算器
１３：演算器以外の組合せ回路
１４：バッファ
１００：消費電力見積もり装置
１０１：動作合成装置
１０２：クロックレベルシミュレーション装置
１０３：記憶素子電力計算部
１０４：組合せ回路電力計算部
１０５：ＣＴＳ・リーク電力計算部
【図１】
2005293163.tif 000003
【図２】
2005293163.tif 000004
【図３】
2005293163.tif 000005
【図４】
2005293163.tif 000006
【図５】
2005293163.tif 000007
【図６】
2005293163.tif 000008
【図７】
2005293163.tif 000009
【図８】
2005293163.tif 000010
【図９】
2005293163.tif 000011
【図１０】
2005293163.tif 000012