(57)【要約】【課題】設計対象回路のメモリに対するアクセス回数を正確に見積もる。【解決手段】設計対象回路のメモリに対するアクセス回数を推定する際、設計対象回路に係る回路データに基づき、クロックのゲーティングセルとこのゲーティングセルを制御する第１制御セルとクロックのクロック源の動作情報とを抽出し、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、前記回路データに基づき、前記メモリの動作／停止を指示する第１制御信号ＣＥを出力する第２制御セルを抽出し、前記第１制御セル，前記第２制御セル，動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する。【選択図】図３
2014010751.tif 000002
【特許請求の範囲】
【請求項１】
設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を推定するコンピュータに、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、
処理を実行させる、回路設計支援プログラム。
【請求項２】
前記第１制御セルと前記第２制御セルとが異なる場合、前記動作確率情報に含まれる前記第１制御信号の状態確率に基づいて得られる前記メモリの動作状態確率と前記クロックゲーティング動作率とのうちの小さい方を前記メモリの動作率として選択し、選択された前記動作率と前記総動作回数とに基づき前記推定値を算出する、
処理を前記コンピュータに実行させる、請求項１に記載の回路設計支援プログラム。
【請求項３】
前記第１制御セルと前記第２制御セルとが同じ場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数に基づき、前記推定値を算出する、
処理を前記コンピュータに実行させる、請求項１または請求項２に記載の回路設計支援プログラム。
【請求項４】
前記ゲーティングセルが抽出されなかった場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数と前記第１制御信号の状態確率とに基づき、前記推定値を算出する、
処理を前記コンピュータに実行させる、請求項１〜請求項３のいずれか一項に記載の回路設計支援プログラム。
【請求項５】
前記回路データに基づき前記メモリにおける前記クロックの入力端子からバックトレースを行なうことにより、前記ゲーティングセル，前記第１制御セルおよび前記クロック源の動作情報を抽出する、
処理を前記コンピュータに実行させる、請求項１〜請求項４のいずれか一項に記載の回路設計支援プログラム。
【請求項６】
前記回路データに基づき前記メモリにおける前記第１制御信号の入力端子からバックトレースを行なうことにより、前記第２制御セルを抽出する、
処理を前記コンピュータに実行させる、請求項１〜請求項５のいずれか一項に記載の回路設計支援プログラム。
【請求項７】
前記動作確率情報は、前記メモリの書込／読出動作を指示する第２制御信号の状態確率を含み、
前記動作確率情報に含まれる、前記第１制御信号の状態確率と前記第２制御信号の状態確率とに基づき、前記メモリが停止状態である際の前記第２制御信号の状態を推定し、推定結果に基づき前記メモリに対する読出状態と書込状態との比率を補正し、
補正された前記比率と、前記第２算出部によって算出された前記推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する、
処理を前記コンピュータに実行させる、請求項１〜請求項６のいずれか一項に記載の回路設計支援プログラム。
【請求項８】
前記第２制御信号が読出動作を指示する状態である確率（以下、読出状態確率という）が、前記第１制御信号が停止を指示する状態である確率（以下、停止状態確率という）以上であり、且つ、前記読出状態確率が、前記第１制御信号が動作を指示する状態である確率（＝１−前記停止状態確率；以下、動作状態確率という）以上である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率よりも大きく、且つ、前記読出状態確率が前記動作状態確率未満である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率以下であり、且つ、前記読出状態確率が前記動作状態確率以下である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、書込状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率未満であり、且つ、前記読出状態確率が前記動作状態確率よりも大きい場合、前記メモリが停止状態である際の前記第２制御信号の状態は、前記第２制御信号の状態確率に対応する比率で、読出状態および書込状態になると推定する、
処理を前記コンピュータに実行させる、請求項７に記載の回路設計支援プログラム。
【請求項９】
設計対象回路のメモリに対するアクセス回数を推定する回路設計支援装置であって、
前記設計対象回路に係る回路データと、前記メモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とを記憶する記憶部と、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出する第１抽出部と、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出する第１算出部と、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出する第２抽出部と、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する第２算出部と、を有する、回路設計支援装置。
【請求項１０】
設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を、コンピュータにより推定する方法であって、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、回路設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計支援プログラム、回路設計支援装置、及び回路設計支援方法に関する。
【背景技術】
【０００２】
システムＬＳＩ（Large Scale Integration）等の大規模集積回路の設計に際し、設計対象回路の消費電力（電流）は、重要な設計制約のひとつであり、また、設計対象回路の低消費電力が実現されれば強い商品力となる。
低電力設計を正しく行なうためには、消費電力の正確な見積もりが不可欠である。設計対象回路の論理回路の設計段階で消費電力を正確に見積もることにより、電力浪費の原因が的確に把握され、論理回路設計にフィードバックをかけることができる。
【０００３】
最近のシステムＬＳＩのような超大規模集積回路では、様々な大きさのメモリが数多く組み込まれることが一般的になっている。そのため、メモリによる消費電力が全消費電力に占める割合も高くなっている。
メモリは、半導体製造ベンダから、マクロブロックＩＰ（Intellectual Property）として提供される。マクロブロックＩＰの電力情報は、ＩＰの機能動作に対応した、動作１回当たりの電力として、ライブラリに記述される。例えばメモリの場合、書込動作１回当たりの電力２ｍＪと読出動作１回当たりの電力３ｍＪとが、ライブラリに記述される。
【０００４】
それぞれの動作回数つまり書込回数および読出回数は、システムレベルの論理シミュレーションの結果波形を参照して計数することにより取得される。取得された書込回数と書込動作１回当たりの電力２ｍＪとを乗算した値が、メモリの書込動作で消費される電力として見積もられ、取得された読出回数と読出動作１回当たりの電力２ｍＪとを乗算した値が、メモリの書込動作で消費される電力として見積もられる。
【０００５】
しかし、システムレベルの論理シミュレーションの結果波形を全波形ダンプしようとすると、波形のファイルサイズが数ＴＢ（テラバイト）にもなり、全波形のダンプファイルを用意することができない。あるいは、顧客のＲＴＬ（Register Transfer Level）記述から半導体製造ベンダが電力を見積もる場合、設計対象回路に係る詳細な技術内容の漏洩等を防ぐべく、動作内容を示す波形ダンプファイルは、顧客から半導体製造ベンダへ提供されないといったことがある。
【０００６】
このため、波形のダンプファイルに代え、時間的な順序関係を無くした、確率的動作情報（動作確率情報ともいう）が提供され、確率的動作情報を用いて消費電力の見積もりが行なわれるようになっている。確率的動作情報とは、時間平均化された動作情報であり、回路の各ネットについて次の２つの情報を含む。一つは、クロック（ＣＬＫ），チップイネーブル信号（ＣＥ），ライトイネーブル信号（ＷＥ）などの信号（ネット，ノード）の単位時間当たりの動作回数（トグル回数；信号の立ち上がり回数と立ち下がり回数との合計）である。もう一つは、当該信号（ネット，ノード）が状態値“１”である確率、つまり“１”状態確率である。具体的な動作確率情報については、図１４を参照しながら後述する。このような動作確率情報は、設計対象回路の論理シミュレーションから取得される。
【０００７】
ここで、図１２を参照しながら、メモリの入力信号および出力信号について説明する。図１２に示すように、メモリは、アドレス，データ入力，ライトイネーブル信号（ＷＥ），チップイネーブル信号（ＣＥ），クロック（ＣＬＫ）を入力とし、データ出力を出力としている。
ＷＥは、メモリの書込／読出動作を指示する制御入力で、ＷＥが“１”の時、メモリは読出動作を行ない、ＷＥが“０”の時、メモリは書込動作を行なう。
【０００８】
ＣＥは、メモリの動作／停止を指示する制御入力で、ＣＥが“１”の時、メモリは、他の入力信号の値（変化）にかかわらず停止し動作を行なわない一方、ＣＥが“０”の時、メモリは動作する。
ＣＬＫは、クロック入力で、ＣＬＫが立ち上がった時、即ちＣＬＫが“０”から“１”に変化した時、メモリは、アドレス，データ入力，ＷＥ，ＣＥの値を取り込み、指定された動作を行なう。
【０００９】
したがって、ＣＥ＝０且つＷＥ＝０の場合、メモリは、ＣＬＫが立ち上がる都度、書込動作を行なう。つまり、メモリ内部の保存領域における、アドレスで指定された番地に、データ入力で指定された値が書き込まれる。
また、ＣＥ＝０且つＷＥ＝１の場合、メモリは、ＣＬＫが立ち上がる都度、読出動作を行なう。つまり、メモリ内部の保存領域における、アドレスで指定された番地の値を、データ出力に出力する。
【００１０】
ところで、最近の設計では、クロックゲーティングと呼ばれる低電力化設計を利用することにより、回路ブロックが利用されない期間に、クロック信号ＣＬＫを停止することも多い。図１３に、クロックゲーティングによるＣＬＫの停止期間を含む、図１２に示すメモリの入力波形の一例を示す。また、図１４に、図１３に示す入力波形について取得される動作確率情報の一例を示す。
【００１１】
以下では、図１４に示す動作確率情報に基づく、メモリの動作回数、つまり書込アクセス回数および読出アクセス回数の見積もり手法（推定手法）について説明する。
なお、図１３では、上述した信号ＣＬＫ，ＣＥ，ＷＥの入力波形が示されるとともに、当該入力波形における書込動作ポイントおよび読出動作ポイントが矢印で示されている。書込動作ポイントは、ＣＥ＝０且つＷＥ＝０の時のＣＬＫの立ち上がりポイントであり、読出動作ポイントは、ＣＥ＝０且つＷＥ＝１の時のＣＬＫの立ち上がりポイントである。
【００１２】
また、図１３において、ＣＬＫが“０”に固定されている区間は、上述したクロックゲーティングによるＣＬＫの停止期間を示す。図１３では、ＣＬＫの停止期間とＣＥ＝１の期間（メモリ停止期間，非アクティブ期間）とが同期しておらず、且つ、ＣＬＫの停止期間がＣＥ＝１の期間よりも短い〔つまり、ＣＥ＝０の期間（メモリ動作期間，アクティブ期間）がＣＬＫの動作期間よりも短い〕例が示されている。
【００１３】
図１３に示す入力波形での、正しい書込アクセス回数および読出アクセス回数は、それぞれ、書込動作ポイントおよび読出動作ポイントの数である。つまり、正しい書込アクセス回数は、ＣＥ＝０且つＷＥ＝０の時のＣＬＫの立ち上がり動作回数の６回であり、正しい読出アクセス回数は、ＣＥ＝０且つＷＥ＝１の時のＣＬＫの立ち上がり動作回数の６回である。ここで、ＣＬＫの立ち上がり動作回数は、ＣＬＫの動作回数（トグル回数）／２である。
【００１４】
図１３に示す入力波形について取得される動作確率情報は、図１４に示す通りである。つまり、クロックＣＬＫについて、“１”状態確率として３５．０％が取得され、動作回数として２８回が取得されている。また、チップイネーブル信号ＣＥについて、“１”状態確率として４０．０％が取得され、動作回数として４回が取得され、ライトイネーブル信号ＷＥについて、“１”状態確率として７０．０％が取得され、動作回数として１１回が取得されている。
【００１５】
そして、既存の見積もり手法では、図１４に示すような動作確率情報を用いて、以下のように、書込アクセス回数および読出アクセス回数が見積もられる。
[書込アクセス回数]＝[ＣＬＫの立ち上がり動作回数]×[メモリが書込状態になる確率]
＝[ＣＬＫの動作回数／２]×[ＣＥ＝０且つＷＥ＝０の確率]
＝[２８／２]×[(１−０．４０)×(１−０．７０)]
＝２．５２
[読出アクセス回数]＝[ＣＬＫの立ち上がり動作回数]×[メモリが読出状態になる確率]
＝[ＣＬＫの動作回数／２]×[ＣＥ＝０且つＷＥ＝１の確率]
＝[２８／２]×[(１−０．４０)×(０．７０)]
＝５．８８
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００３−２５６４９５号公報
【特許文献２】特開２００８−２３４１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
ところで、図１３に示す入力波形の例では、ＣＥによるメモリの動作／停止制御とクロックゲーティング制御とが重複して行なわれている。しかし、図１４に示す動作確率情報には、ＣＥによるメモリの動作／停止制御とクロックゲーティング制御との重複関係に係る情報が含まれていない。クロックゲーティング制御後のクロック動作回数がＣＬＫの動作回数として含まれており、ＣＥによるメモリの動作／停止制御情報が、ＣＥの状態確率として含まれている。このため、上述した既存の手法では、ＣＥによるメモリの動作／停止制御とクロックゲーティング制御を独立した事象として確率計算しており、クロックゲーティング制御後のＣＬＫ動作回数にＣＥの状態確率を乗算してアクセス回数が算出される。したがって、書込アクセス回数や読出アクセス回数の見積もり結果（推定値）の誤差が極めて大きくなる。
【００１８】
また、メモリの読出動作と書込動作との比率（READ/WRITE比率）としては、メモリが動作している時つまりＣＥ＝０の時だけの比率を用いることが望ましい。しかし、図１３の入力波形にも示すように、メモリが停止している時つまりＣＥ＝１の時、ＷＥは“１”に固定的に設定され、メモリは読出動作を行なっているとみなされる。これは、メモリに対する書込動作はメモリ内部のデータを壊す（書き換える）が、メモリに対する読出動作はメモリ内部のデータを保持し壊すことがないためであると考えられる。したがって、図１４に示す動作確率情報のＷＥの“１”状態確率には、メモリが停止している時つまりＣＥ＝１の時の読出動作の状態確率が含まれることになり、書込動作よりも読出動作の割合が多くなる傾向がある。このような傾向のために、書込アクセス回数や読出アクセス回数の見積もり結果（推定値）の誤差がさらに大きくなる。
【００１９】
このように、図１４に示すような動作確率情報に基づき、既存の手法で書込アクセス回数や読出アクセス回数を見積もる際、見積もり結果（推定値）の誤差が大きく、メモリの消費電力を正確に見積もることができない。
一つの側面で、本発明は、設計対象回路のメモリに対するアクセス回数を正確に見積もることを目的とする。
【課題を解決するための手段】
【００２０】
一つの案において、回路設計支援プログラムは、設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を推定するコンピュータに、前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、処理を実行させる。
【発明の効果】
【００２１】
一実施形態によれば、設計対象回路のメモリに対するアクセス回数を正確に見積もることができる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態の回路設計支援装置のハードウエア構成および機能構成を示すブロック図である。
【図２】図１に示す回路設計支援装置の動作を説明するフローチャートである。
【図３】図１に示す回路設計支援装置によるクロックゲーティング解析処理を説明するフローチャートである。
【図４】バックトレースにより抽出される大元クロック（クロック源）を説明する図である。
【図５】バックトレースにより抽出される制御セルを説明する図である。
【図６】READ/WRITE解析処理を説明する図である。
【図７】（Ａ），（Ｂ）はREAD/WRITE解析処理を説明する図である。
【図８】（Ａ）〜（Ｃ）はREAD/WRITE解析処理を説明する図である。
【図９】メモリ入力クロックおよび大元クロック（クロック源）の“１”状態確率および動作回数の具体例を示す図である。
【図１０】図９に示す具体例に対応する、大元クロック（クロック源）およびメモリ入力クロックの動作波形を示す図である。
【図１１】電力動作情報として最終的に算出される書込アクセス回数および読出アクセス回数を示す図である。
【図１２】メモリの入力信号および出力信号を説明する図である。
【図１３】図１２に示すメモリの入力波形の一例を示す波形図である。
【図１４】図１３に示す入力波形について取得される動作確率情報の一例を示す図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照して実施の形態を説明する。
〔１〕回路設計支援装置の構成および機能
図１は、本実施形態の回路設計支援装置１のハードウエア構成および機能構成を示すブロック図である。
【００２４】
図１に示す回路設計支援装置１は、システムＬＳＩ等の設計対象回路におけるメモリに対するアクセス回数を推定するもので、当該設計対象回路についての論理回路の設計時に当該設計対象回路の消費電力を見積もるために用いられる。
回路設計支援装置１は、記憶部１０および処理部（プロセッサ）２０を有している。
【００２５】
記憶部１０は、ＲＡＭ（Random Access Memory），ＲＯＭ（Read Only Memory），ＨＤＤ（Hard Disk Drive），ＳＳＤ（Solid State Drive）等の内部記憶装置であってもよいし、外部記憶装置であってもよい。記憶部１０は、少なくとも、設計対象回路に係る回路データと、図１４を参照しながら上述したような動作確率情報と、コンピュータ（処理部１０）を回路設計支援装置１として動作させる回路設計支援プログラムとを記憶する。動作確率情報は、設計対象回路上のメモリ毎に、設計対象回路の論理シミュレーションの結果波形から取得され、図１４に示すように、以下の情報(a1)〜(a6)を含む。
【００２６】
(a1)設計対象回路上のメモリへのＣＬＫの単位時間当たりの動作回数（トグル回数）
(a2)上記ＣＬＫが状態値“１”である確率（“１”状態確率）
(a3)上記メモリの動作／停止を指示する第１制御信号ＣＥの単位時間当たりの動作回数
(a4)上記ＣＥの“１”状態確率
(a5)上記メモリの書込／読出動作を指示する第２制御信号ＷＥの単位時間当たりの動作回数
(a6)上記ＷＥの“１”状態確率
【００２７】
処理部２０は、回路設計支援プログラムを実行することで、後述する第１抽出部２１，第１算出部２２，第２抽出部２３，第２算出部２４，補正部２５および第３算出部２６としての機能を果たす。
【００２８】
第１抽出部２１は、回路データに基づき、ＣＬＫのゲーティングを行なうゲーティングセル（ＣＧＣ：Clock Gating Cell）と、ＣＧＣを制御する第１制御セル（制御論理セル；例えばフリップフロップ（ＦＦ））と、ＣＬＫのクロック源（大元クロック）の動作情報とを抽出する（図４，図５参照）。このとき、第１抽出部２１は、回路データに基づき前記メモリにおけるＣＬＫの入力端子からバックトレースを行なうことにより、ＣＧＣ，第１制御セルおよび大元クロックの動作情報を抽出する。ＣＧＣは、例えば、第１制御セルからの制御信号とＣＬＫとの論理積を出力するＡＮＤゲートである（図５参照）。
【００２９】
第１算出部２２は、ＣＧＣが抽出された場合つまりＣＧが有る場合、クロックゲーティング動作率（ＣＧ動作率）を算出する。ＣＧ動作率は、大元クロックの動作情報に含まれる、[当該大元クロックから出力される単位時間当たりの総動作回数（動作周波数）]に対する、[メモリへ入力されるＣＬＫの単位時間当たりの動作回数]の割合を示す。
【００３０】
第２抽出部２３は、ＣＧＣが抽出された場合つまりＣＧが有る場合、回路データに基づき、ＣＥを出力する第２制御セル（制御論理セル；例えばＦＦ）を抽出する（図５参照）。このとき、第２抽出部２３は、回路データに基づきメモリにおけるＣＥの入力端子からバックトレースを行なうことにより、第２制御セルを抽出する。
【００３１】
第２算出部２４は、第１制御セル，第２制御セル，動作確率情報，ＣＧ動作率および総動作回数に基づき、以下の項目(b1)〜(b5)のように、前記メモリに対するアクセス回数の推定値を算出する。
(b1)ＣＥの状態値が常に“１”（ＣＥ＝１）である場合、メモリは常に停止している。したがって、メモリに対するアクセスは行なわれず、第２算出部２４は、アクセス回数の推定値として０回を出力する（図３のステップＳ１２参照）。
【００３２】
(b2)ＣＥの状態値が常に“０”（ＣＥ＝０）である場合、メモリは常に動作している。したがって、全てのＣＬＫの立ち上がりタイミングでメモリに対するアクセスが行なわれるので、第２算出部２４は、[動作確率情報に含まれるＣＬＫの動作回数]／２回を算出する（図３のステップＳ１４参照）。
【００３３】
(b3)ＣＧＣが抽出されなかった場合つまりＣＧが無い場合、メモリに対するアクセス回数は、ＣＧによっては制御されず、ＣＥによるメモリの動作／停止切換によって制御される。したがって、第２算出部２４は、アクセス回数の推定値として、([動作確率情報に含まれる、前記メモリへのＣＬＫの単位時間当たりの動作回数]／２)×[前記メモリの動作状態確率]回を算出する（図３のステップＳ２１参照）。ここで、前記メモリの動作状態確率は、ＣＥの状態値が“０”である確率（＝１−[動作確率情報に含まれる、ＣＥの“１”状態確率]）である。
【００３４】
(b4)第１制御セルと第２制御セルとが同じ場合つまりＣＧとＣＥとが同期している場合、第２算出部２４は、アクセス回数の推定値として、[動作確率情報に含まれる、前記メモリへのＣＬＫの単位時間当たりの動作回数]／２回を算出する（図３のステップＳ２４参照）。
【００３５】
(b5)第１制御セルと第２制御セルとが異なる場合つまりＣＧとＣＥとが同期していない場合、第２算出部２４は、アクセス回数の推定値を、以下のように算出する。つまり、第２算出部２４は、動作確率情報に含まれるＣＥの状態確率に基づいて得られる前記メモリの動作状態確率と、第１算出部２２で算出されたＣＧ動作率とのうちの小さい方を前記メモリの動作率として選択する（図３のステップＳ２６参照）。ここで、前記メモリの動作状態確率は、ＣＥの状態値が“０”（ＣＥ＝０）である確率で、ＣＥがイネーブルな期間に対応する。また、ＣＧ動作率は、ＣＧによるＣＬＫの動作期間に対応する。そして、第２算出部２４は、アクセス回数の推定値として、([前記大元クロックの動作情報に含まれる総動作回数]／２)×[選択された動作率]回を算出する（図３のステップＳ２７参照）。
【００３６】
補正部２５は、動作確率情報に含まれるＣＥの状態確率とＷＥの状態確率とに基づき、前記メモリが停止状態である際のＷＥの状態を推定し、推定結果に基づき前記メモリに対する読出状態と書込状態との比率（READ/WRITE比率）を補正する。このとき、補正部２５は、以下の項目(c1)〜(c4)のように、前記メモリが停止状態である際のＷＥの状態を推定する。なお、下記項目(c1)〜(c4)の状態推定条件の詳細や、当該状態推定条件に基づくＷＥの状態確率の補正の具体例については、図６〜図８を参照しながら後述する。
【００３７】
(c1)ＷＥが読出動作を指示する状態（ＷＥ＝１）である確率（以下、読出状態確率という）が、ＣＥが停止を指示する状態（ＣＥ＝１）である確率（以下、停止状態確率という）以上であり、且つ、読出状態確率が、ＣＥが動作を指示する状態（ＣＥ＝０）である確率（＝１−前記停止状態確率；以下、動作状態確率という）以上である場合、前記メモリが停止状態である際のＷＥの状態は、読出状態に固定されていると推定する。
【００３８】
(c2)読出状態確率が停止状態確率よりも大きく、且つ、読出状態確率が動作状態確率未満である場合、前記メモリが停止状態である際のＷＥの状態は、読出状態に固定されていると推定する。
(c3)読出状態確率が停止状態確率以下であり、且つ、読出状態確率が動作状態確率以下である場合、前記メモリが停止状態である際のＷＥの状態は、書込状態に固定されていると推定する。
(c4)読出状態確率が停止状態確率未満であり、且つ、読出状態確率が動作状態確率よりも大きい場合、前記メモリが停止状態である際のＷＥの状態は、ＷＥの“１”状態確率に対応する比率で、読出状態および書込状態になると推定する。
【００３９】
第３算出部２６は、補正部２５によって補正された比率と、第２算出部２４によって算出されたアクセス回数の推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する。第３算出部２６によって算出される書込アクセス回数および読出アクセス回数の具体例については、図９〜図１１を参照しながら後述する。
【００４０】
〔２〕回路設計支援装置の動作
次に、図２〜図１４を参照しながら、上述のごとく構成された回路設計支援装置１の動作について説明する。
図２は、図１に示す回路設計支援装置１の動作を説明するフローチャートである。図２に示すように、回路設計支援装置１は、大きく分けてクロックゲーティング解析処理（ステップＳ１）とREAD/WRITE解析処理（ステップＳ２）との２つのフェイズで動作する。
【００４１】
クロックゲーティング解析処理（ステップＳ１）では、回路データおよび動作確率情報に基づき、対象メモリに入力されるＣＬＫに対するクロックゲーティング（ＣＧ）の有無と、ＣＧとＣＥとが同期しているか否かとがチェックされ、チェック結果に基づき、対象メモリに対するアクセス回数が推定される。このクロックゲーティング解析処理は、上述した第１抽出部２１，第１算出部２２，第２抽出部２３および第２算出部２４によって実行され、図３〜図５を参照しながら後述される。
【００４２】
READ/WRITE解析処理（ステップＳ２）では、ＣＥの状態確率とＷＥの状態確率とに基づき、対象メモリが停止状態である際のＷＥの状態が推定され、推定結果に基づき対象メモリに対する読出状態と書込状態との比率（READ/WRITE比率）が補正される。そして、補正された比率と、クロックゲーティング解析処理（ステップＳ１）で推定された対象メモリに対するアクセス回数とに基づき、対象メモリに対する書込アクセス回数および読出アクセス回数が算出され、対象メモリの電力動作情報として出力される。このREAD/WRITE解析処理は、補正部２５および第３算出部２６によって実行され、図６〜図８を参照しながら後述される。
【００４３】
〔２−１〕クロックゲーティング解析処理
図３に示すフローチャート（ステップＳ１１〜Ｓ２７）に従って、図４および図５を参照しながら回路設計支援装置１によるクロックゲーティング解析処理（図２のステップＳ１）について説明する。なお、図４は、バックトレースにより抽出される大元クロック（クロック源）を説明する図であり、図５は、バックトレースにより抽出される制御セル（第１制御セルおよび第２制御セル）を説明する図である。
【００４４】
まず、提供された動作確率情報が参照され、ＣＥの状態値が常に“１”（ＣＥ＝１）であるか否か、つまりＣＥの“１”状態確率が１００％であるか否かが判定される（ステップＳ１１）。常にＣＥ＝１である場合（ステップＳ１１のＹＥＳルート）、メモリは常に停止している。したがって、対象メモリに対するアクセスは行なわれず、第２算出部２４は、アクセス回数の推定値として０回を出力する（ステップＳ１２）。
【００４５】
常にＣＥ＝１ではない場合（ステップＳ１１のＮＯルート）、ＣＥの状態値が常に“０”（ＣＥ＝０）であるか否か、つまりＣＥの“１”状態確率が０％であるか否かが判定される（ステップＳ１３）。常にＣＥ＝０である場合（ステップＳ１３のＹＥＳルート）、メモリは常に動作している。したがって、全てのＣＬＫの立ち上がりタイミングで対象メモリに対するアクセスが行なわれるので、第２算出部２４は、[動作確率情報に含まれるＣＬＫの動作回数]／２回を算出する（ステップＳ１４）。
【００４６】
常にＣＥ＝０ではない場合（ステップＳ１３のＮＯルート）、つまり０＜[ＣＥの“１”状態確率]＜１である場合、第１抽出部２１は、回路データに基づき対象メモリのＣＬＫ入力端子からバックトレースを行なう（ステップＳ１５）。これにより、ＣＧＣ（例えばＡＮＤゲート；図５参照）と、当該ＣＧＣを制御する第１制御セル（制御論理セル；例えばＦＦ；図５参照）と、ＣＬＫの大元クロックの動作情報（図４参照）とが抽出される（図４，図５参照；ステップＳ１６〜Ｓ１８）。なお、図４に示す例では、対象メモリへ入力されるＣＬＫ（メモリＣＬＫ入力）の動作回数（動作周波数）が５６ＭＨｚであり、ＣＬＫの大元クロックの動作回数（動作周波数）が８０ＭＨｚである。
【００４７】
ＣＧＣが抽出された場合、第１算出部２２によりＣＧ動作率が算出される（ステップＳ１９）。上述した通り、ＣＧ動作率は、大元クロックの動作情報に含まれる、[当該大元クロックから出力される単位時間当たりの総動作回数（動作周波数）]に対する、[メモリへ入力されるＣＬＫの単位時間当たりの動作回数]の割合として算出される。
【００４８】
ステップＳ１５〜Ｓ１９の処理を行なった後、ＣＧＣが抽出されたか否か、つまりＣＧが有るか否かが判定される（ステップＳ２０）。
ＣＧが無い場合（ステップＳ２０のＮＯルート）、第２算出部２４により、アクセス回数の推定値として、([動作確率情報に含まれる、対象メモリへのＣＬＫの単位時間当たりの動作回数]／２)×[対象メモリの動作状態確率(ＣＥ＝０である確率)]回が算出される（ステップＳ２１）。なお、[動作確率情報に含まれる、対象メモリへのＣＬＫの単位時間当たりの動作回数]／２は、対象メモリへのＣＬＫの単位時間当たりの立ち上がり回数（立ち上がり動作回数という場合もある）である。
【００４９】
ＣＧが有る場合（ステップＳ２０のＹＥＳルート）、第２抽出部２３は、回路データに基づき対象メモリのＣＥ入力端子からバックトレースを行なう（ステップＳ２２）。これにより、ＣＥを出力する第２制御セル（制御論理セル；例えばＦＦ；図５参照）が抽出される。なお、図５に示す例では、第１抽出部２１によって抽出された第１制御セル（ＣＧＣを制御するＦＦ）と第２抽出部２３によって抽出された第２制御セル（ＣＥを出力するＦＦ）とが同じで、ＣＧとＣＥとが同期する場合が示されている。
【００５０】
この後、第１制御セル（ＣＧＣを制御するＦＦ）と第２制御セル（ＣＥを出力するＦＦ）とが同じであるか否か、つまりＣＧとＣＥとが同期しているか否かが判定される（ステップＳ２３）。
第１制御セルと第２制御セルとが同じ場合（ステップＳ２３のＹＥＳルート）、第２算出部２４により、アクセス回数の推定値として、[動作確率情報に含まれる、対象メモリへのＣＬＫの単位時間当たりの動作回数]／２回が算出される（ステップＳ２４）。
【００５１】
一方、第１制御セルと第２制御セルとが異なる場合（ステップＳ２３のＮＯルート）、第２算出部２４により、アクセス回数の推定値が、以下のように算出される。
まず、ＣＧによるＣＬＫ動作期間とＣＥがイネーブルな期間との重なりが推定される（ステップＳ２６）。このとき、ＣＥがイネーブルな期間に対応する対象メモリの動作状態確率（ＣＥ＝０である確率）と、ステップＳ１９で算出されたＣＧ動作率とのうちの小さい方が対象メモリの動作率（動作状態期間）として選択される（ステップＳ２６）。
【００５２】
本実施形態では、ＣＥによる制御とＣＧによる制御との包含関係（重なり具合）は、期間の長い方が期間の短い方を含む傾向にあると仮定している。したがって、本実施形態では、ＣＬＫ動作期間とＣＥがイネーブルな期間とが異なる場合、期間の短い方が、実際のＣＬＫの動作期間として推定される。
そして、第２算出部２４により、アクセス回数の推定値として、([大元クロックの動作情報に含まれる総動作回数]／２)×[選択された動作率]回が算出される（ステップＳ２７）。なお、[大元クロックの動作情報に含まれる総動作回数]／２は、大元クロックの単位時間当たりの立ち上がり動作回数である。
【００５３】
〔２−２〕READ/WRITE解析処理
次に、図６，図７（Ａ），図７（Ｂ）および図８（Ａ）〜図８（Ｃ）を参照しながら、READ/WRITE解析処理（図１のステップＳ２）について説明する。
まず、補正部２５により、ＣＥの状態確率とＷＥの状態確率とに基づき、対象メモリが停止状態（ＣＥ＝１）である際のＷＥの状態が推定される。
ここで、前述したように、ＷＥは、対象メモリの読出動作と書込動作との切換を行なう制御入力である。例えば図１４に示す動作確率情報におけるＷＥの“１”状態確率や動作回数は、対象メモリの動作を測定した期間全体に基づく値であり、対象メモリが使用されている期間（ＣＥ＝０）と対象メモリが使用されていない期間（ＣＥ＝１）とを区別して算出されていない。
【００５４】
また、前述した通り、メモリの読出動作と書込動作との比率（READ/WRITE比率）としては、メモリが動作している時つまりＣＥ＝０の時だけの比率を用いることが望ましい。しかし、従来、図１３の入力波形に示すように、メモリが停止している時つまりＣＥ＝１の時、ＷＥは“１”に固定的に設定され、メモリは読出動作を行なっているとみなされる。このため、書込動作よりも読出動作の割合が多くなり、書込アクセス回数や読出アクセス回数の見積もり結果（推定値）の誤差が大きくなっていた。
【００５５】
そこで、本実施形態では、まず、補正部２５により、対象メモリが使用されていない時（ＣＥ＝１の時）のＷＥの状態値が、図６に示すように推定される。図６に示す例では、ＷＥが“１”である確率（ＷＥの“１”状態確率）と停止状態確率（ＣＥの“１”状態確率）との２つの値により規定される平面が、４つの領域(1)〜(4)に分類され、領域(1)〜(4)のそれぞれについて補正処理が規定されている。つまり、補正部２５は、動作確率情報によって与えられるＷＥの“１”状態確率とＣＥの“１”状態確率とが図６において属する領域を判定することで、対象メモリが使用されていない時（ＣＥ＝１の時）のＷＥの状態値を推定し、推定した状態値に応じた補正処理を行なう。
【００５６】
ここで、図６に示す領域(1)〜(4)について説明する。図６に示す領域(1)〜(4)は、それぞれ、上述した項目(c1)〜(c4)に対応している。
領域(1)は、上記項目(c1)に対応し、[読出状態確率(ＷＥの“１”状態確率)]≧[停止状態確率(ＣＥの“１”状態確率)]且つ[読出し状態確率]≧[動作状態確率(＝１−停止状態確率)]の領域である。動作確率情報によって与えられるＷＥの“１”状態確率とＣＥの“１”状態確率とが領域(1)に属する場合、対象メモリが停止状態である際のＷＥの状態は読出状態（ＷＥ＝１）に固定されていると推定され、READ/WRITE比率が補正される。
【００５７】
領域(2)は、上記項目(c2)に対応し、[読出状態確率]＞[停止状態確率]且つ[読出状態確率]＜[動作状態確率]の領域である。動作確率情報によって与えられるＷＥの“１”状態確率とＣＥの“１”状態確率とが領域(2)に属する場合、対象メモリが停止状態である際のＷＥの状態は読出状態（ＷＥ＝１）に固定されていると推定され、READ/WRITE比率が補正される。なお、領域(2)は、メモリ未使用時（ＣＥ＝１の時）にＷＥが“１”に固定されているときでも、メモリ未使用時（ＣＥ＝１の時）にＷＥが“０”に固定されているときでも、採りえる値の領域である。ＷＥ＝１とＷＥ＝０とのどちらの値も採りえる場合、メモリに対する書込動作はメモリ内部のデータを壊す（書き換える）が、メモリに対する読出動作はメモリ内部のデータを保持し壊すことがないことから、読出動作（ＷＥ＝１）を選択する設計が多く見受けられる。このため、領域(2)では、対象メモリが停止状態である際のＷＥの状態は読出状態（ＷＥ＝１）に固定されていると推定している。
【００５８】
領域(3)は、上記項目(c3)に対応し、[読出状態確率]≦[停止状態確率]且つ[読出状態確率]≦[動作状態確率]の領域である。動作確率情報によって与えられるＷＥの“１”状態確率とＣＥの“１”状態確率とが領域(3)に属する場合、対象メモリが停止状態である際のＷＥの状態は書込状態（ＷＥ＝０）に固定されていると推定され、READ/WRITE比率が補正される。
【００５９】
領域(4)は、上記項目(c4)に対応し、[読出状態確率]＜[停止状態確率]且つ[読出状態確率]＞[動作状態確率]の領域である。動作確率情報によって与えられるＷＥの“１”状態確率とＣＥの“１”状態確率とが領域(4)に属する場合、対象メモリが停止状態である際のＷＥの状態は、ＷＥの“１”状態確率に対応するREAD/WRITE比率で、読出状態および書込状態になると推定される。
【００６０】
なお、図７（Ａ）に示すように、メモリ未使用時（ＣＥ＝１の時）にＷＥが“１”に固定されている場合、ＷＥの“１”状態確率とＣＥの“１”状態確率とは、必ず領域Ａに属する値になる。また、図７（Ｂ）に示すように、メモリ未使用時（ＣＥ＝１の時）にＷＥが“０”に固定されている場合、ＷＥの“１”状態確率とＣＥの“１”状態確率とは、必ず領域Ｂに属する値になる。以上のことから、上記項目(c1)〜(c4)（上記領域(1)〜(4)）に従った判定が行なわれている。
【００６１】
この後、補正部２５により、図８（Ａ）〜図８（Ｃ）に示すように、推定結果に基づいて、対象メモリの動作時（ＣＥ＝０）における対象メモリに対する読出状態と書込状態との比率（READ/WRITE比率）が算出・補正される。
なお、図８（Ａ）〜図８（Ｃ）において、ｒ％は、動作確率情報によって与えられるＷＥの“１”状態確率（読出状態確率）であり、ｗ（＝１００−ｒ）％は、書込状態確率である。また、ｔ％は、動作確率情報によって与えられるＣＥの“１”状態確率（停止状態確率）であり、ｄ（＝１００−ｔ）％は、動作状態確率である。さらに、図８（Ｃ）において、ｒ１％は、対象メモリの停止中の読出状態確率であり、ｗ１％は、対象メモリの停止中の書込状態確率であり、ｒ２％は、対象メモリの動作中の読出状態確率であり、ｗ１％は、対象メモリの動作中の書込状態確率である。ｒ１：ｗ１＝ｒ２：ｗ２＝ｒ：ｗであり、ｒ＝ｒ１＋ｒ２，ｗ＝ｗ１＋ｗ２である。
【００６２】
図８（Ａ）は、上記項目(c1)または(c2)（領域(1),(2)）に従って、対象メモリの停止中、ＷＥの状態は読出状態（ＷＥ＝１）に固定されていると推定した場合のREAD/WRITE比率の補正例を示す。図８（Ａ）において、対象メモリの停止中、ＷＥの状態は読出状態（ＷＥ＝１）に固定されるため、対象メモリの動作中の読出状態確率はｒ−ｔ％に補正され、対象メモリの動作中の書込状態確率はｗ％となる。
【００６３】
図８（Ｂ）は、上記項目(c3)（領域(3)）に従って、対象メモリの停止中、ＷＥの状態は書込状態（ＷＥ＝０）に固定されていると推定した場合のREAD/WRITE比率の補正例を示す。図８（Ｂ）において、対象メモリの停止中、ＷＥの状態は書込状態（ＷＥ＝０）に固定されるため、対象メモリの動作中の書込状態確率はｗ−ｔ％に補正され、対象メモリの動作中の読出状態確率はｒ％となる。
【００６４】
図８（Ｃ）は、上記項目(c4)（領域(4)）に従って、対象メモリの停止中も動作中も読出状態と書込状態との比率が同じであると推定した場合のREAD/WRITE比率の補正例を示す。このとき、対象メモリの動作中の読出状態確率はｄ×ｒ％に補正され、対象メモリの動作中の書込状態確率はｄ×ｗ％に補正される。
【００６５】
そして、第３算出部２６により、上述のごとく補正された比率（つまり書込状態確率および読出状態確率）と、クロックゲーティング解析処理（ステップＳ１）で得られた対象メモリに対するアクセス回数の推定値とに基づき、対象メモリに対する書込アクセス回数および読出アクセス回数が、以下の通り算出される。
【００６６】
[書込アクセス回数]
＝[アクセス回数の推定値]×[書込状態確率]／([書込状態確率]＋[読出状態確率])
[読出アクセス回数]
＝[アクセス回数の推定値]×[読出状態確率]／([書込状態確率]＋[読出状態確率])
【００６７】
〔２−３〕具体例
次に、図９〜図１４を参照しながら、本実施形態によって算出・推定される書込アクセス回数および読出アクセス回数の具体例について説明する。ここでも、図１３に示す入力波形について取得された、図１４に示す動作確率情報に基づき、本実施形態の回路設計支援装置１によって、書込アクセス回数および読出アクセス回数を見積もる手順について、具体的に説明する。
【００６８】
まず、ＣＥの“１”状態確率がチェックされる。図１４に示す例では、ＣＥの“１”状態確率は４０．０％であるので（図３のステップＳ１１のＮＯルート且つステップＳ１３のＮＯルート）、対象メモリのＣＬＫ入力端子からバックトレースが行なわれる（ステップＳ１５）。バックトレースに伴い、ＣＧＣ（例えばＡＮＤゲート）が抽出される（ステップＳ１６）。
【００６９】
ＣＧＣの制御入力端子とＣＬＫ入力端子とは、入力端子の属性として区別されていることが多いが、ＡＮＤゲートのような、ピンにタイプが定義されていないゲートをＣＧＣとして用いた場合、動作回数が多い方がＣＬＫ入力端子であり、少ない方が制御入力端子であると認識される。ＣＧＣの制御入力端子を遡ることにより、ＣＧＣの制御信号の元となるレジスタ（第１制御セル，制御論理セル）が抽出される（ステップＳ１７）。
【００７０】
一方、ＣＧＣのＣＬＫ入力端子から、論理を遡り、ＣＬＫの元となるクロック源（大元クロック）およびその動作情報が抽出される（ステップＳ１８）。そして、第１算出部２２により、ＣＧ動作率が、[大元クロックから出力される単位時間当たりの総動作回数]に対する、[メモリへ入力されるＣＬＫの単位時間当たりの動作回数]の割合として算出される（ステップＳ１９）。
【００７１】
ここで、図９に、メモリ入力クロックおよび大元クロック（クロック源）の“１”状態確率および動作回数の具体例が示され、図１０に、図９に示す具体例に対応する、大元クロックおよびメモリ入力クロックの動作波形が示される。図９，図１０や図１３に示す例では、メモリ入力クロック（ＣＬＫ）の“１”状態確率および動作回数はそれぞれ３５％および２８回であり、大元クロックの“１”状態確率および動作回数はそれぞれ５０％および４０回である。そして、ＣＧ動作率として２８／７０＝７０％が算出される。
【００７２】
この後、メモリＣＥ入力のファンインとクロックゲーティングの制御入力のファンインとが同じセル（レジスタ，ＦＦ）から生成されている場合、つまり第１抽出部２１によって抽出された第１制御セルと第２抽出部２３によって抽出された第２制御セルとが同じ場合（ステップＳ２３のＹＥＳルート)、クロックゲーティングとメモリＣＥ制御とが同期していると判断する。そうでない場合（ステップＳ２３のＮＯルート)は、ＣＧによるＣＬＫ動作期間とＣＥがイネーブルな期間との重なりが推定される(ステップＳ２５）。
【００７３】
本具体例では、メモリＣＥ入力の制御論理（第２制御セル）とＣＧの制御論理（第１制御セル）とが、異なり、回路を遡っても、共通の信号に由来していない場合について説明する。このとき、ＣＥがイネーブルな期間に対応する対象メモリの動作状態確率（ＣＥ＝０である確率）と、第１算出部２２により算出されたＣＧ動作率とのうちの小さい方が対象記メモリの動作率（動作状態期間）として選択される（ステップＳ２６）。
【００７４】
ここで、図１４に示す動作確率情報では、対象メモリの動作状態確率（ＣＥ＝０である確率）は、１００−４０＝６０％であり、第１算出部２２により算出されたＣＧ動作率は７０％であるため、対象メモリ動作率として６０％が選択される。
そして、第２算出部２４により、[アクセス回数の推定値]として、([大元クロックの動作情報に含まれる総動作回数]／２)×[選択された動作率]回＝(４０回／２)×６０％＝１２回が算出される（ステップＳ２７）。
【００７５】
次に、補正部２５により、対象メモリの読出状態と書込状態との比率の補正が、以下のように行なわれる。図１４に示す動作確率情報では、停止状態確率（ＣＥの“１”状態確率）が４０％、ＷＥの“１”状態確率が７０％で、これらの値は図６に示す領域(1)に属するため、対象メモリが停止状態である際のＷＥの状態は読出状態（ＷＥ＝１）に固定されていると推定される。したがって、図８（Ａ）に示す補正例と同様、対象メモリ動作中の書込状態確率は３０％に補正され、対象メモリ動作中の読出状態確率は３０％となり、対象メモリの停止状態確率は４０％となる。
【００７６】
そして、第３算出部２６により、上述のごとく補正された書込状態確率３０％および読出状態確率３０％と、アクセス回数の推定値１２回とに基づき、対象メモリに対する書込アクセス回数および読出アクセス回数が、以下の通り、最終的に算出される。
[書込アクセス回数]
＝[アクセス回数の推定値]×[書込状態確率]／([書込状態確率]＋[読出状態確率])
＝１２×３０／(３０＋３０)
＝６回
[読出アクセス回数]
＝[アクセス回数の推定値]×[読出状態確率]／([書込状態確率]＋[読出状態確率])
＝１２×３０／(３０＋３０)
＝６回
【００７７】
このように、書込アクセス回数６回および読出アクセス回数６回が、最終的に算出されて、図１１に示すような電力動作情報として出力される。
既存の見積もり手法では、図１４に示す動作確率情報を用いて書込アクセス回数および読出アクセス回数を見積もった場合、書込アクセス回数として２．５２回が得られ、読出アクセス回数として５．８８回が得られていた。
これに対し、本実施形態の回路設計支援装置１によれば、対象メモリに対する書込アクセス回数および読出アクセス回数として、既存の手法に比べ、より実際のアクセス回数に近い値（今回は実際のアクセス回数と同じ値）が見積もられる。
【００７８】
〔３〕回路設計支援装置の作用効果
本実施形態の回路設計支援装置１によれば、ＣＧの有無が判断され、ＣＧが有る場合、ＣＧとＣＥとが同期しているか否かが判定される。そしてＣＧとＣＥとが同期していない場合、ＣＧによるＣＬＫ動作期間とＣＥがイネーブルな期間との重なりが推定される。このとき、ＣＥがイネーブルな期間に対応する対象メモリの動作状態確率（ＣＥ＝０である確率）と、第１算出部２２で算出されたＣＧ動作率とのうちの小さい方が対象メモリの動作率（動作状態期間）として選択され、選択された動作率に基づきアクセス回数が算出される。このように、ＣＧによるＣＬＫ動作期間とＣＥのイネーブルな期間との包含関係を推定することで、その推定結果に基づき対象メモリに対するアクセス回数を正確に見積もることができる。
【００７９】
また、本実施形態の回路設計支援装置１によれば、補正部２５により、対象メモリが使用されていない時（ＣＥ＝１の時）のＷＥの状態値が推定され、推定結果に応じて、対象メモリに対する読出状態確率および書込状態確率が補正される。そして、第２算出部２４により算出されたアクセス回数の推定値と、補正部２５により補正された読出状態確率および書込状態確率とに基づいて、第３算出部２６により、対象メモリに対する書込アクセス回数および読出アクセス回数が、既存の手法に比べ、より正確に算出推定される。
【００８０】
このように、本実施形態の回路設計支援装置１によれば、図１４に示すような動作確率情報に基づき、既存の手法に比べ、書込アクセス回数や読出アクセス回数を正確に見積もることが可能になり、ひいては、メモリの消費電力を正確に見積もることができる。
【００８１】
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
上述した実施形態では、図１３に示す入力波形について取得される、図１４に示すような動作確率情報に基づき、アクセス回数を推定する場合について説明したが、本発明は、図１４に示すような動作確率情報に限定されるものではない。
【００８２】
上述した第１抽出部２１，第１算出部２２，第２抽出部２３，第２算出部２４，補正部２５および第３算出部２６としての機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（回路設計支援プログラム）を実行することによって実現される。
【００８３】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【００８４】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記回路設計支援プログラムは、上述のようなコンピュータに、第１抽出部２１，第１算出部２２，第２抽出部２３，第２算出部２４，補正部２５および第３算出部２６としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００８５】
〔５〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を推定するコンピュータに、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、
処理を実行させる、回路設計支援プログラム。
【００８６】
（付記２）プログラムクレーム
前記第１制御セルと前記第２制御セルとが異なる場合、前記動作確率情報に含まれる前記第１制御信号の状態確率に基づいて得られる前記メモリの動作状態確率と前記クロックゲーティング動作率とのうちの小さい方を前記メモリの動作率として選択し、選択された前記動作率と前記総動作回数とに基づき前記推定値を算出する、
処理を前記コンピュータに実行させる、付記１に記載の回路設計支援プログラム。
【００８７】
（付記３）
前記第１制御セルと前記第２制御セルとが同じ場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数に基づき、前記推定値を算出する、
処理を前記コンピュータに実行させる、付記１または付記２に記載の回路設計支援プログラム。
【００８８】
（付記４）
前記ゲーティングセルが抽出されなかった場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数と前記第１制御信号の状態確率とに基づき、前記推定値を算出する、
処理を前記コンピュータに実行させる、付記１〜付記３のいずれか一項に記載の回路設計支援プログラム。
【００８９】
（付記５）
前記回路データに基づき前記メモリにおける前記クロックの入力端子からバックトレースを行なうことにより、前記ゲーティングセル，前記第１制御セルおよび前記クロック源の動作情報を抽出する、
処理を前記コンピュータに実行させる、付記１〜付記４のいずれか一項に記載の回路設計支援プログラム。
【００９０】
（付記６）
前記回路データに基づき前記メモリにおける前記第１制御信号の入力端子からバックトレースを行なうことにより、前記第２制御セルを抽出する、
処理を前記コンピュータに実行させる、付記１〜付記５のいずれか一項に記載の回路設計支援プログラム。
【００９１】
（付記７）
前記動作確率情報は、前記メモリの書込／読出動作を指示する第２制御信号の状態確率を含み、
前記動作確率情報に含まれる、前記第１制御信号の状態確率と前記第２制御信号の状態確率とに基づき、前記メモリが停止状態である際の前記第２制御信号の状態を推定し、推定結果に基づき前記メモリに対する読出状態と書込状態との比率を補正し、
補正された前記比率と、前記第２算出部によって算出された前記推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する、
処理を前記コンピュータに実行させる、付記１〜付記６のいずれか一項に記載の回路設計支援プログラム。
【００９２】
（付記８）
前記第２制御信号が読出動作を指示する状態である確率（以下、読出状態確率という）が、前記第１制御信号が停止を指示する状態である確率（以下、停止状態確率という）以上であり、且つ、前記読出状態確率が、前記第１制御信号が動作を指示する状態である確率（＝１−前記停止状態確率；以下、動作状態確率という）以上である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率よりも大きく、且つ、前記読出状態確率が前記動作状態確率未満である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率以下であり、且つ、前記読出状態確率が前記動作状態確率以下である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、書込状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率未満であり、且つ、前記読出状態確率が前記動作状態確率よりも大きい場合、前記メモリが停止状態である際の前記第２制御信号の状態は、前記第２制御信号の状態確率に対応する比率で、読出状態および書込状態になると推定する、
処理を前記コンピュータに実行させる、付記７に記載の回路設計支援プログラム。
【００９３】
（付記９）
設計対象回路のメモリに対するアクセス回数を推定する回路設計支援装置であって、
前記設計対象回路に係る回路データと、前記メモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とを記憶する記憶部と、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出する第１抽出部と、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出する第１算出部と、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出する第２抽出部と、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する第２算出部と、を有する、回路設計支援装置。
【００９４】
（付記１０）
前記第２算出部は、前記第１制御セルと前記第２制御セルとが異なる場合、前記動作確率情報に含まれる前記第１制御信号の状態確率に基づいて得られる前記メモリの動作状態確率と前記クロックゲーティング動作率とのうちの小さい方を前記メモリの動作率として選択し、選択された前記動作率と前記総動作回数とに基づき前記推定値を算出する、付記９に記載の回路設計支援装置。
【００９５】
（付記１１）
前記第２算出部は、前記第１制御セルと前記第２制御セルとが同じ場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数に基づき、前記推定値を算出する、付記９または付記１０に記載の回路設計支援装置。
【００９６】
（付記１２）
前記第２算出部は、前記ゲーティングセルが抽出されなかった場合、前記動作確率情報に含まれる、前記メモリへのクロックの単位時間当たりの動作回数と前記第１制御信号の状態確率とに基づき、前記推定値を算出する、付記９〜付記１１のいずれか一項に記載の回路設計支援装置。
【００９７】
（付記１３）
前記第１抽出部は、前記回路データに基づき前記メモリにおける前記クロックの入力端子からバックトレースを行なうことにより、前記ゲーティングセル，前記第１制御セルおよび前記クロック源の動作情報を抽出する、付記９〜付記１２のいずれか一項に記載の回路設計支援装置。
【００９８】
（付記１４）
前記第２抽出部は、前記回路データに基づき前記メモリにおける前記第１制御信号の入力端子からバックトレースを行なうことにより、前記第２制御セルを抽出する、付記９〜付記１３のいずれか一項に記載の回路設計支援装置。
【００９９】
（付記１５）
前記動作確率情報は、前記メモリの書込／読出動作を指示する第２制御信号の状態確率を含み、
前記動作確率情報に含まれる、前記第１制御信号の状態確率と前記第２制御信号の状態確率とに基づき、前記メモリが停止状態である際の前記第２制御信号の状態を推定し、推定結果に基づき前記メモリに対する読出状態と書込状態との比率を補正する補正部と、
前記補正部によって補正された前記比率と、前記第２算出部によって算出された前記推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する第３算出部と、をさらに有する、付記９〜付記１４のいずれか一項に記載の回路設計支援装置。
【０１００】
（付記１６）
前記補正部は、
前記第２制御信号が読出動作を指示する状態である確率（以下、読出状態確率という）が、前記第１制御信号が停止を指示する状態である確率（以下、停止状態確率という）以上であり、且つ、前記読出状態確率が、前記第１制御信号が動作を指示する状態である確率（＝１−前記停止状態確率；以下、動作状態確率という）以上である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率よりも大きく、且つ、前記読出状態確率が前記動作状態確率未満である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、読出状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率以下であり、且つ、前記読出状態確率が前記動作状態確率以下である場合、前記メモリが停止状態である際の前記第２制御信号の状態は、書込状態に固定されていると推定し、
前記読出状態確率が前記停止状態確率未満であり、且つ、前記読出状態確率が前記動作状態確率よりも大きい場合、前記メモリが停止状態である際の前記第２制御信号の状態は、前記第２制御信号の状態確率に対応する比率で、読出状態および書込状態になると推定する、付記１５に記載の回路設計支援装置。
【０１０１】
（付記１７）
設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を、コンピュータにより推定する方法であって、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、回路設計支援方法。
【０１０２】
（付記１８）
前記第１制御セルと前記第２制御セルとが異なる場合、前記動作確率情報に含まれる前記第１制御信号の状態確率に基づいて得られる前記メモリの動作状態確率と前記クロックゲーティング動作率とのうちの小さい方を前記メモリの動作率として選択し、選択された前記動作率と前記総動作回数とに基づき前記推定値を算出する、付記１７に記載の回路設計支援方法。
【０１０３】
（付記１９）
前記動作確率情報は、前記メモリの書込／読出動作を指示する第２制御信号の状態確率を含み、
前記動作確率情報に含まれる、前記第１制御信号の状態確率と前記第２制御信号の状態確率とに基づき、前記メモリが停止状態である際の前記第２制御信号の状態を推定し、推定結果に基づき前記メモリに対する読出状態と書込状態との比率をを補正し、
補正された前記比率と、前記第２算出部によって算出された前記推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する、付記１７または付記１８に記載の回路設計支援方法。
【０１０４】
（付記２０）
設計対象回路のメモリに対するアクセス回数を推定する回路設計支援装置であって、
前記設計対象回路に係る回路データと、前記メモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とを記憶する記憶部と、
プロセッサと、を有し、
前記プロセッサは、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、回路設計支援装置。
【０１０５】
（付記２１）
前記プロセッサは、
前記第１制御セルと前記第２制御セルとが異なる場合、前記動作確率情報に含まれる前記第１制御信号の状態確率に基づいて得られる前記メモリの動作状態確率と前記クロックゲーティング動作率とのうちの小さい方を前記メモリの動作率として選択し、選択された前記動作率と前記総動作回数とに基づき前記推定値を算出する、付記２０に記載の回路設計支援装置。
【０１０６】
（付記２２）
前記動作確率情報は、前記メモリの書込／読出動作を指示する第２制御信号の状態確率を含み、
前記プロセッサは、
前記動作確率情報に含まれる、前記第１制御信号の状態確率と前記第２制御信号の状態確率とに基づき、前記メモリが停止状態である際の前記第２制御信号の状態を推定し、推定結果に基づき前記メモリに対する読出動作と書込動作との比率を補正し、
補正された前記比率と、前記第２算出部によって算出された前記推定値とに基づき、前記メモリに対する書込アクセス回数および読出アクセス回数を算出する、付記２０または付記２１に記載の回路設計支援装置。
【０１０７】
（付記２３）
設計対象回路に係る回路データと、前記設計対象回路のメモリへのクロックの単位時間当たりの動作回数、および、前記メモリの動作／停止を指示する第１制御信号の状態確率を含む動作確率情報とに基づき、前記メモリに対するアクセス回数を推定するコンピュータに、
前記回路データに基づき、前記クロックのゲーティングを行なうゲーティングセルと、前記ゲーティングセルを制御する第１制御セルと、前記クロックのクロック源の動作情報とを抽出し、
前記ゲーティングセルが抽出された場合、前記クロック源の動作情報に含まれる、前記クロック源から出力される単位時間当たりの総動作回数に対する、前記クロックの単位時間当たりの動作回数の割合を示すクロックゲーティング動作率を算出し、
前記ゲーティングセルが抽出された場合、前記回路データに基づき、前記第１制御信号を出力する第２制御セルを抽出し、
前記第１制御セル，前記第２制御セル，前記動作確率情報，前記クロックゲーティング動作率および前記総動作回数に基づき、前記メモリに対するアクセス回数の推定値を算出する、
処理を実行させる、回路設計支援プログラムを記録したコンピュータ読取可能な記録媒体。
【符号の説明】
【０１０８】
１    回路設計支援装置
１０    記憶部
２０    処理部（プロセッサ，ＣＰＵ）
２１    第１抽出部
２２    第１算出部
２３    第２抽出部
２４    第２算出部
２５    補正部
２６    第３算出部
【図１】
2014010751.tif 000003
【図２】
2014010751.tif 000004
【図３】
2014010751.tif 000005
【図４】
2014010751.tif 000006
【図５】
2014010751.tif 000007
【図６】
2014010751.tif 000008
【図７】
2014010751.tif 000009
【図８】
2014010751.tif 000010
【図９】
2014010751.tif 000011
【図１０】
2014010751.tif 000012
【図１１】
2014010751.tif 000013
【図１２】
2014010751.tif 000014
【図１３】
2014010751.tif 000015
【図１４】
2014010751.tif 000016