(57)【特許請求の範囲】
【請求項１】
コンピュータが回路の消費電力を見積もる消費電力見積方法であって、
前記コンピュータが、前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成ステップと、
前記コンピュータが、前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出ステップと、
前記コンピュータが、前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーションステップと、
前記コンピュータが、前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播ステップと、
前記コンピュータが、前記確率伝播ステップが算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算ステップ
を実行し、
前記再シミュレーションステップは、
前記コンピュータが、前記簡易合成ステップが自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出ステップと、
前記コンピュータが、前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成ステップと、
前記コンピュータが、前記テストベンチに基づくシミュレーションを実行する差分シミュレーションステップを含み、
前記活性化率算出ステップと前記再シミュレーションステップは、前記コンピュータが並行して実行する、消費電力見積方法。
【請求項２】
前記活性化率データは、信号の変化回数が基準周波数の変化回数を１回とした時の割合を示す動作率と、所定測定期間に信号が所定論理値になっている期間の割合を含む、請求項１記載の消費電力見積方法。
【請求項３】
回路の消費電力を見積もる消費電力見積機能を有する回路設計支援装置であって、
前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手段と、
前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手段と、
前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手段と、
前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手段と、
前記確率伝播手段が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手段
を備え、
前記再シミュレーション手段は、
前記簡易合成手段が自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出手段と、
前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成手段と、
前記テストベンチに基づくシミュレーションを実行する差分シミュレーション手段を有し、
前記活性化率算出手段と前記再シミュレーション手段の処理は並行して実行される、回路設計支援装置。
【請求項４】
コンピュータに、回路の消費電力を見積もる消費電力見積を行わせるプログラムであって、
前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手順と、
前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手順と、
前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手順と、
前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手順と、
前記確率伝播手順が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手順
を前記コンピュータに実行させ、
前記再シミュレーション手順は、
前記簡易合成手順が自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出手順と、
前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成手順と、
前記テストベンチに基づくシミュレーションを実行する差分シミュレーション手順を含み、
前記活性化率算出手順と前記再シミュレーション手順は、前記コンピュータが並行して実行する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消費電力見積方法、回路設計支援装置及びプログラムに係り、特に大規模集積回路（ＬＳＩ：Large Scale Integrated circuit）の消費電力の見積を行う消費電力見積方法、回路設計支援装置、及びコンピュータにそのような消費電力の見積を行わせるプログラムに関する。
【背景技術】
【０００２】
ＬＳＩの設計手法として、論理合成ツールを利用する設計手法がある。論理合成ツールを利用する設計手法では、レジスタ転送レベル（ＲＴＬ：Register Transfer Level）の設計データ（以下、ＲＴＬ設計データと言う）を作成し、ＲＴＬ設計データを論理合成ツールに入力する。論理合成ツールは、ゲートレベル（Gate Level）の設計を自動的に行う。このようなＲＴＬ設計データを論理合成可能な記述をＲＴＬ記述と呼ぶ。ＲＴＬ記述は、一部ゲートレベルの記述を含んでいても良い。ＲＴＬ記述は、例えばＡＳＩＣ（Application Specific Integrated Circuit）セルのゲーテッドクロックバッファ（ＧＣＢ：Gated Clock Buffer）を直接記述しても良い。ＧＣＢは、クロックゲートセル（Clock Gate Cell）と呼ばれることもある。
【０００３】
従来、消費電力解析（又は、消費電力見積）では、ゲートレベルの設計データを利用した解析が主流であったが、近年、ＲＴＬ設計データを利用した消費電力解析（以下、ＲＴＬ消費電力解析と言う）が普及してきた。ＲＴＬ消費電力解析は、ゲートレベル設計データを利用した消費電力解析よりも設計の早期の段階で行えると共に、短時間（短ターンアラウンドタイム（ＴＡＴ：Turn Around Time））で消費電力の見積が可能である。ＲＴＬ消費電力解析の一例は、例えば特許文献１にて提案されている。
【０００４】
図１は、例えば特許文献１にて提案されているような従来のＲＴＬ消費電力解析を説明するフローチャートである。図１に示すように、ＲＴＬ消費電力解析では、論理合成ツールの入力となる解析対象となる回路に関するＲＴＬ設計データ1D00と、解析対象となる回路に関するＲＴＬシミュレーション結果（波形データ若しくはＳＡＩＦ（Switching Activity Interchange Format）に代表されるスイッチング情報）1D01と、テクノロジライブラリ（Technology Library）1D02を入力とする。
【０００５】
例えば、ＲＴＬ設計データ1D00として図２に示す記述例Ｅａ、記述例Ｅａと図３及び図４に示すテストベンチ（Test Bench）の記述例Ｅｂをシミュレーションして、図５に示す記述例ＥｃのＲＴＬシミュレーション結果1D01 を作成する。説明の便宜上、ＲＴＬシミュレーション結果1D01は、波形データの代わりに図５に示す記述例Ｅｃを用いて説明する。
【０００６】
テクノロジライブラリデータ（以下、テクノロジライブラリと言う）1D02には基本的なセルの電力データが格納されている。ＲＴＬ消費電力解析では、図１に示すように、最初に簡易合成ステップ（又は、処理）1P00により、ＲＴＬ設計データ1D00及びテクノロジライブラリ1D02に基づいて簡易ネットリスト（Net List）1D03が生成される。上記特許文献１には、論理合成とネットリストを簡易化した消費電力解析が開示されている。特許文献１によれば、テクノロジライブラリ1D02に対応する電力データがあればテクノロジライブラリ1D02で定義されたパワーモデルを用いてネットリストを生成し、テクノロジライブラリ1D02に対応する電力データがなければテクノロジライブラリ1D02に依存しないパワーモジュールで構成されたネットリストを生成する。特許文献１では、上記論理合成がマイクロ合成と呼ばれており、ネットリストがパワーネットリストと呼ばれている。マイクロ合成及びパワーネットリストは、夫々図３及び図４の簡易合成ステップ1P00及び簡易ネットリスト1D03に対応する。 以下の説明では、一例として、簡易合成ステップ1P00で一般的な論理合成と同様にテクノロジライブラリ1D02にマッピングされたネットリストを説明する。
【０００７】
例えば、記述例ＥａのＲＴＬ設計データを入力にして、簡易合成ステップ1P00を実行し、図６に示す簡易ネットリスト1D03を作成する。説明の便宜上、図６では同期リセットの図示は省略する。図６中、ＦＦはフリップフロップ（Flip-Flop）を示し、SCUADDFXCAは加算回路を示す。
【０００８】
次に、ＲＴＬシミュレーション結果1D01に基づいて図１に示す活性化率算出ステップ（又は、処理）1P01を行う。消費電力のうち、動的電力は、一旦活性化率と呼ばれる統計量を算出して、この統計量を用いて算出される。ある信号の動的電力Ｐは、Ｐ＝Ｃ＊Ｖ＊Ｖ＊Ｏｐ＊Ｆで算出され、ここでＣは容量、Ｖは電圧、Ｆは基準とする周波数（以下、基準周波数と言う）、Ｏｐは動作率を示す。 動作率Ｏｐとは、ある信号の変化回数が基準周波数Ｆの変化回数を１回とした時の割合を示す。 例えば、基準周波数１００ＭＨｚで１μｓ期間の測定結果があり、ある信号の変化回数が１０回であったとすると、この信号の動作率Ｏｐは、１０／（１μｓ／（１／１００（ＭＨｚ））＝０．０１となる。
【０００９】
又、後述する確率伝播計算やＲＡＭ（Random Access Memory）の消費電力見積では信号のレベルが必要になる。このため、測定期間を「１」として信号が「１」（又は、「０」）になっている期間の割合を算出する。１μｓ期間中、信号のレベルが「１」になっている期間が１００ｎｓであれば、測定期間を「１」として信号が「１」になっている期間の割合は１００ｎｓ／１μｓ＝０．１から算出する。
【００１０】
本明細書では、上記動作率Ｏｐと信号が「１」になる期間の割合を合わせて活性化率と呼ぶ。
【００１１】
例えば、記述例Ｅｃを図１に示す活性化率算出ステップ1P01に入力すると、図７に示す活性化率データ1D04が生成される。図７に示す活性化率データ1D04は、信号名、活性化率及び動作率を含む。
【００１２】
次に、簡易ネットリスト1D03及び活性化率データ1D04に基づいて図１に示す確率伝播ステップ（又は、処理）1P02を実行する。この確率伝播ステップ1P02の処理は、論理合成で自動生成された信号の活性化率を算出するために行う。例えば、ＲＴＬ記述（記述ａ）やネットリストの場合、n_000〜n_006はネットリストにはあるが、ＲＴＬ記述には無い信号名である。これらのＲＴＬ記述には無い信号名の信号の変化データが波形データ（記述Ｅｃ）に含まれていないため、これらの信号の活性化率は活性化率算出ステップ1P01では算出できない。そこで、確率伝播技術を用いて、これらのＲＴＬ記述には無い信号名の信号の活性化率を算出する。
【００１３】
確率伝播技術とは、活性化率がわかっている信号の活性化率データを使って、活性化率がわかっていない信号の活性化率を算出する技術である。例えば、２入力アンド（ＡＮＤ）ゲートの入力の「１」になる期間の割合が夫々０．３であるとすると、２入力ＡＮＤゲートの出力が「１」になる条件は一方の入力０が「１」、且つ、他方の入力１が「１」である時に限る。そこで、〔出力が「１」になる期間〕を〔入力０が「１」になる期間〕＊〔入力１が「１」になる期間〕から算出する。この計算式に従うと、出力が「１」になる期間は ０．３＊０．３＝０．０９から算出される。これは、確率伝播技術で用いる式の一例にすぎないが、確率伝播技術では入力の活性化率を使って出力の活性化率を推定する。
【００１４】
このようにして、図１に示す確率伝播ステップ1P02によりＲＴＬ記述には無い信号の活性化率が求まる。ＲＴＬ記述には無い信号の活性化率データを、図１に示す差分活性化率データ1D05と呼ぶ。
【００１５】
以上の処理により、活性化率データ1D04及び差分活性化率データ1D05を生成することができる。これら２つのデータ1D04, 1D05をマージすると、簡易ネットリスト1D03中の全信号の活性化率データがわかる。これらのデータ1D04, 1D05とテクノロジライブラリ1D02を使って図１に示す電力計算ステップ（又は、処理）1P03を実行し、電力見積値1D06を算出する。
【００１６】
ネットリストは、一般的な論理合成技術又は上記特許文献１に開示されている方法により、テクノロジライブラリで定義されているセルと関係付けられる。一般的な論理合成技術の場合、通常はテクノロジマッピングによりテクノロジで定義されたセルを用いたネットリストを生成する。特許文献１の方法では、一旦テクノロジに依存しないネットリストを作成しておき、電力計算の際にテクノロジに依存しないセルとテクノロジライブラリにあるセルの関係付けを行う。電力計算ステップ1P03を実行するまでに、或いは、電力計算ステップ1P03を実行中に、ネットリストとテクノロジライブラリにあるセルの関係付けを行う。以下の説明では便宜上、簡易ネットリスト1D03が既にテクノロジライブラリにマッピングされている場合を例に取って説明する。
【００１７】
テクノロジライブラリには、各セルの電力モデルが記載されている。例えば、テクノロジライブラリに信号変化１回当たりの電力量ｐが示されているとすると、基準周波数Ｆ及び動作率Ｏｐを用いて、このセルの電力をｐ＊Ｏｐ＊Ｆから算出できる。テクノロジライブラリの電力モデルに従ってネットリスト1D03中の全要素の電力を求めて合計すれば、ＲＴＬ設計データ1D00をＲＴＬシミュレーション結果1D01のように動作させた場合の電力見積値を算出できる。
【００１８】
上記の方式は、ＲＴＬシミュレーション及び確率伝播技術が高速であることから、効率の良い消費電力見積手段となっている。しかし、確率伝播技術を用いているため、誤差が生じることがある。動作率Ｏｐが高くない箇所については問題がないが、動作率Ｏｐが高い箇所については誤差が消費電力見積全体に与える影響が大きくなる。
【００１９】
例えば、ａ&ｂという式があるとする。この式ａ&ｂの出力値の「１」になる割合を確率伝播技術で算出する場合を説明する。仮に、ａとｂの波形の関係が図８のようになっていた場合、ａ&ｂは図８のａ&ｂの行に示した波形になる。 従って、実際の波形では「１」になる期間の割合は０である。一方、確率伝播技術で求めると、０．３＊０．３＝０．０９となり、実際の波形と確率伝播技術で算出した波形との間に誤差が生じる。
【００２０】
一方、aとbの波形の関係が図９のようになっていた場合、ａ&ｂは図９のａ&ｂの行に示した波形になる。従って、実際の波形では「１」になる期間の割合は０．３である。 しかし、確率伝播技術で求めると、０．３＊０．３＝０．０９となり、実際の波形と確率伝播技術で算出した波形との間に誤差が生じる。
【００２１】
従って、確率伝播技術は高速で良い見積方法ではあるが、誤差が生じる可能性があり、 誤差の影響範囲が解析対象として重要な場合には問題になり、誤差を補正する必要がある。
【００２２】
近年、設計技術における改善として、ＲＴＬ記述を元にゲーテッドクロックバッファ（ＧＣＢ）を自動挿入する技術（以下、ＧＣＢ技術と言う）が普及している。このＧＣＢ技術は、クロックclkが必要な時だけクロックclkを供給することにより、クロックパス系の動作率を低くする技術である。例えば、
always @(posedge clk)   if (a==1'b1) A >= B;
があった時、ＧＣＢ技術を使わなかった場合、レジスタAのクロック端子の信号は〔（clkの周波数）＊２〕回変化することになる。
【００２３】
ゲーテッドクロックバッファ（ＧＣＢ）の自動挿入技術では、前記の記述を機能が等価な下記の記述に変換する。ここで、GCBはゲーテッドクロックバッファであり、イネーブル信号enが「１」の期間だけclkの波形が n_0000に出力される回路を示すものとする。従って、ａが「１」になる割合が０．１であると、n_0000の動作率Ｏｐはクロックclkの動作率の１０分の１になり、回路の消費電力を削減することができる。
【００２４】
GCB i_gcb(.clk(clk), .en(a), .gclk(n_0000)); always @(posedge n_0000) A >= B;
尚、if文が下記のようにネストされている場合、
always @(posedge clk)   if(a==1)      if(b==1)       A >= B;
ゲーテッドクロックバッファ（ＧＣＢ）の自動挿入技術によれば、下記のような回路に変換される。ここで、n_0001はシミュレーション波形には無い信号なので、この信号に関しても確率伝播技術が適用される。
assign n_0001 = (a & b); 
GCB i_gcb(.clk(clk), .en(n_0001), .gclk(n_0000)); 
always @(posedge n_0000)   A >= B;
クロックclkは、通常は高周波信号であるため、回路の消費電力が大きくなる傾向がある。従って、確率伝播技術による誤差が大きく出る場合もあり、そのような場合には誤差を補正することが望ましい。
【特許文献１】米国特許第６１５１５６８号公報
【特許文献２】特許第３５７６９２８号公報
【特許文献３】特開平７−７３２３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
確率伝播技術はＬＳＩの消費電力見積手段として有効な手段ではあるが、全部又は一部分の活性化率の精度を向上させる必要がある場合もある。このような場合の解決策の１つでは、論理合成をしてネットリストで消費電力を見積もる。しかし、この解決策では、論理合成及びネットリストシミュレーションを行う必要があるため、手間と時間がかかり、ＲＴＬ消費電力見積の１つの特徴である簡便さと高速性が損なわれてしまう。このため、ＲＴＬ消費電力見積の簡易さと高速性が損なわれることなく高精度の消費電力見積を行う要望があった。
【００２６】
そこで、本発明は、ＲＴＬ消費電力見積の簡易さと高速性が損なわれることなく高精度の消費電力見積を行うことができる消費電力見積方法、回路設計支援装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の一観点によれば、コンピュータが回路の消費電力を見積もる消費電力見積方法であって、前記コンピュータが、前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成ステップと、前記コンピュータが、前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出ステップと、前記コンピュータが、前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーションステップと、前記コンピュータが、前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播ステップと、前記コンピュータが、前記確率伝播ステップが算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算ステップを実行し、前記再シミュレーションステップは、前記コンピュータが、前記簡易合成ステップが自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出ステップと、前記コンピュータが、前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成ステップと、前記コンピュータが、前記テストベンチに基づくシミュレーションを実行する差分シミュレーションステップを含み、前記活性化率算出ステップと前記再シミュレーションステップは、前記コンピュータが並行して実行する消費電力見積方法が提供される。
【００２８】
本発明の一観点によれば、回路の消費電力を見積もる消費電力見積機能を有する回路設計支援装置であって、前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手段と、前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手段と、前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手段と、前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手段と、前記確率伝播手段が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手段を備え、前記再シミュレーション手段は、前記簡易合成手段が自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出手段と、前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成手段と、前記テストベンチに基づくシミュレーションを実行する差分シミュレーション手段を有し、前記活性化率算出手段と前記再シミュレーション手段の処理は並行して実行される回路設計支援装置が提供される。
【００２９】
本発明の一観点によれば、コンピュータに、回路の消費電力を見積もる消費電力見積を行わせるプログラムであって、前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手順と、前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手順と、前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手順と、前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手順と、前記確率伝播手順が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手順を前記コンピュータに実行させ、前記再シミュレーション手順は、前記簡易合成手順が自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出手順と、前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成手順と、前記テストベンチに基づくシミュレーションを実行する差分シミュレーション手順を含み、前記活性化率算出手順と前記再シミュレーション手順は、前記コンピュータが並行して実行するプログラムが提供される。
【発明の効果】
【００３０】
開示の消費電力見積方法、回路設計支援装置及びプログラムによれば、ＲＴＬ消費電力見積の簡易さと高速性が損なわれることなく高精度の消費電力見積を行うことができる。
【発明を実施するための最良の形態】
【００３１】
開示の消費電力見積方法、回路設計支援装置及びプログラムは、回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成し、前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成し、前記簡易ネットリストから前記回路の組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、前記入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成し、前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出し、前記確率伝播技術により算出した活性化率データに基づいて前記回路の消費電力を見積もる。
【００３２】
以下に、本発明の消費電力見積方法、回路設計支援装置及びプログラムの各実施例を、図１０以降と共に説明する。
【実施例１】
【００３３】
ＲＴＬ消費電力見積の利点の１つは、ＲＴＬ論理シミュレーション環境を使ったデータをそのまま入力にできる点である。これに対し、ゲートレベル設計データを使った消費電力見積をする場合、一旦論理合成をしてゲートレベルの設計データを生成し、更にシミュレーションをしなければならないため、手間と時間がかかる。ＲＴＬ消費電力見積の他の利点は、消費電力見積の高速性である。ゲートレベル設計データのシミュレーションと比較すると、ＲＴＬ設計データのシミュレーションは高速であり、シミュレーションデータがコンパクトであるため、消費電力見積を高速に行える。一方、ＲＴＬ消費電力見積の場合、入力される情報としてはＲＴＬ記述やＲＴＬシミュレーション結果しかなく、ＲＴＬシミュレーション結果に残ることが保証されるような記述がなされることは約束されていない。そこで、この条件を満たしつつ、消費電力見積の精度を向上する必要がある。
【００３４】
図１０は、本発明の各実施例が適用可能なコンピュータシステムを示す斜視図である。図１０に示すコンピュータシステム１００は、中央処理装置（ＣＰＵ：Central Processing Unit）やディスクドライブ等を内蔵した本体部１０１、本体部１０１からの指示により表示画面１０２ａ上に消費電力見積結果（又は、消費電力解析結果）等を表示するディスプレイ１０２、コンピュータシステム１００に種々の情報を入力するためのキーボード１０３、ディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードするモデム１０５を有する。
【００３５】
ディスク１１０等の可搬型記録媒体に格納されるか、モデム１０５等の通信装置を使って他のコンピュータシステムの記録媒体１０６からダウンロードされる、コンピュータシステム１００に少なくとも消費電力見積機能を持たせるプログラム（消費電力見積ソフトウェア又はツール）は、コンピュータシステム１００に入力されてコンパイルされる。プログラムは、コンピュータシステム１００（即ち、後述するＣＰＵ２０１）を消費電力見積機能を有する回路設計支援装置（又は、シミュレーションシステム）として動作させる。プログラムは、例えばディスク１１０等のコンピュータ読み取り可能な記録媒体に格納されていても良い。コンピュータ読み取り可能な記録媒体は、ディスク１１０、ＩＣカードメモリ、フロッピー（登録商標）ディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の可搬型記録媒体に限定されるものではなく、モデム１０５やＬＡＮ（Local Area Network）等の通信装置や通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【００３６】
図１１は、コンピュータシステム１００の本体部１０１内の構成を説明するブロック図である。図１１に示す本体部１０１は、バス２００により接続されたＣＰＵ２０１、ＲＡＭやＲＯＭ（Read Only Memory）等を有するメモリ部２０２、ディスク１１０用のディスクドライブ２０３及びハードディスクドライブ（ＨＤＤ：Hard Disk Drive）２０４を有する。本実施例では、ディスプレイ１０２、キーボード１０３及びマウス１０４も、バス２００を介してＣＰＵ２０１に接続されているが、これらは直接ＣＰＵ２０１に接続されていても良い。又、ディスプレイ１０２は、入出力画像データの処理を行う周知のグラフィックインタフェース（図示せず）を介してＣＰＵ２０１に接続されていても良い。
【００３７】
コンピュータシステム１００において、キーボード１０３やマウス１０４は回路設計支援装置の入力部（又は、入力手段）を構成する。ディスプレイ１０２は、消費電力見積結果等を画面１０２ａ上に表示する表示部（又は、表示手段）を構成する。ＣＰＵ２０１は、半導体集積回路の設計段階で回路の消費電力見積を行う見積部（又は、見積手段）として機能する。メモリ部２０２、ディスクドライブ１０２及びＨＤＤ２０４は、格納部（又は、格納手段）を構成し、レジスタ（図示せず）等を含んでも良い。
【００３８】
尚、コンピュータシステム１００の構成は図１０及び図１１に示す構成に限定されるものではなく、代わりに各種周知の構成を使用しても良い。
【００３９】
図１２は、本発明の第１実施例における消費電力見積方法を説明するフローチャートである。図１２中、図１と同一部分には同一符号を付し、その説明は省略する。図１２に示す処理は、ＬＳＩ等の半導体集積回路の設計段階でＣＰＵ２０１により実行される。
【００４０】
図１２において、1D00〜1D02は入力データであり、1P00〜1P03は基本的には図１と同様のステップである。確率伝播ステップ（又は、処理）1P02は、図１の場合と同様の活性化率データID04と活性化率データ2D04をマージしたものを処理する点が図１の場合と異なる。1D03〜1D06は中間又は最終データであり、基本的には図１と同様のデータである。ただし、図１の差分活性化率データ1D05にはシミュレーションによる差分活性化率データに含まれている信号についても確率伝播技術で求めた値が含まれるが、図１２の差分活性化率データ1D05にはシミュレーションによる差分活性化率データ2D04に示されているデータが記載されている。FORK0は、後続の２つの処理系列の両方が実行されることを示してる。JOIN0は、前段の２つの処理系列の両方が完了すると後続の処理系列を開始することを示している。尚、説明の便宜上、図１２では上記２つの処理系列が並列に実行される場合を示すが、これらの２つの処理系列は逐次的に実行されるものであっても良い。
【００４１】
尚、ＲＴＬ設計データ1D00、ＲＴＬシミュレーション結果1D01、テクノロジライブラリ1D02、簡易ネットリスト1D03、活性化率データ1D04、確率伝播による差分活性化率データ1D05、電力見積値1D06、入力信号リスト2D00、再観測信号リスト2D01、差分モジュール記述2D02、差分テストベンチ記述2D03及びシミュレーションによる差分活性化率データ2D04は、例えば格納部に格納される。
【００４２】
先ず、本実施例で用いる入力データについて説明する。ここでは説明の便宜上、ＲＴＬ設計データの記述例Ｅａが図２に示す如くであり、記述例Ｅａの設計データ用のテストベンチの記述例Ｅｂが図３及び図４に示す如くであるものとする。記述例Ｅａ／Ｅｂをシミュレーションすると、 記述例Ｅｂの９０行目〜９８行目の標準出力文により信号値が出力される。この信号値の出力の記述例Ｅｃは、図５に示す如くであるものとする。
【００４３】
図１３は、この場合の波形データ、即ち、ＲＴＬシミュレーション結果1D01を示す。 図１３中、ａ，ｂ，Ａ，...は、図６の簡易ネットリスト上の線分で示すノードにおける信号を示す。図１３では、データフォーマットの一例としてＶＣＤ（Value Change Dump）フォーマットが用いられている。ＶＣＤフォーマットは、時刻とその時刻に変化した信号のみ、その信号ＩＤ番号と信号値を記録することでデータを圧縮できる。
【００４４】
ここでは説明の便宜上、波形データの代わりに本質的に同等である標準出力結果（記述例Ｅｃ）を使って説明する。又、見積期間が５ｎｓ〜１６５ｎｓの場合を対象として説明する。記述例Ｅｃに１６５ｎｓなる値が書かれているが、通常この値は１６５ｎｓ＋δｎｓ(δは限りなく０に近い正の数値）とし、δが分解能を超えている小さい値であるため数値上は１６５ｎｓであるが１６５ｎｓ丁度よりも後の時刻を指しているものとして理解する。
【００４５】
次に、中間データ1D03について説明する。簡易合成ステップ1P00は、ＲＴＬ設計データ1D00を例えば図６に示す如き簡易ネットリスト1D03に変換する。図６は記述例Ｅａに対してゲーテッドクロックバッファを自動推定しなかった場合に相当する。図１４は、簡易ネットリスト1D03の他の例を示す。図１４中、ＦＦはフリップフロップ（Flip-Flop）を示し、SCUADDFXCAは加算回路を示す。図１４は、ゲーテッドクロックバッファを推定した場合に相当する。つまり、図１４の簡易ネットリスト1D03は、図９に示す場合に対してＧＣＢの自動挿入を行うことで合成されるもので、図６の回路部分B000の代わりに図１４の回路部分B001を用いて消費電力を見積もる。尚、説明の便宜上、図１４では同期リセットの図示は省略する。以下では、図１４の簡易ネットリスト1D03を用いて説明する。尚、一旦図６の簡易ネットリストID03を生成した後のいずれかのステップでゲーテッドクロックバッファを挿入する場合の処理も、基本的には同じである。
【００４６】
図１４は、演算器マクロが残っている場合の簡易ネットリスト1D03を示す。図１４のように最小単位が演算器であっても良いが、３２ビット加算器の内部がゲートレベルになっていても良い。
【００４７】
図１２の差分モジュール抽出ステップ（又は、処理）2P00は、ＲＴＬシミュレーション結果1D01及び簡易ネットリスト1D03に基づいて簡易合成ステップ1P00が自動生成した信号を抽出する。抽出方法としては、簡易ネットリスト1D03から簡易ネットリストの信号の一覧を生成し、ＲＴＬシミュレーション結果1D01又はテクノロジライブラリ1D02からＲＴＬの信号の一覧を生成して、自動生成された信号、即ち、ＲＴＬ設計データ1D00には無い信号の一覧を作成する方法がある。別の方法としては、簡易合成ステップ1P00が自動生成した信号のリストを出力する方法がある。簡易合成ステップ1P00は信号を自ら生成するので、自動生成された信号を知っている。従って、簡易合成ステップ1P00が自動生成した信号を出力することにより、所望の機能を達成できる。更に別の方法として、自動生成される信号にネーミングルールがある場合には、このネーミングルールにより信号を検出しても良い。
【００４８】
上記の処理を図１４の簡易ネットリスト1D03に適用した場合を説明すると、最初に自動生成された信号n_003〜n_008を抽出する。次に、クロックツリーに含まれる自動生成した信号をリストから削除する。尚、クロックツリーに含まれる自動生成した信号はリストから削除しなくても良い。この例では、信号n_007はクロックツリーに含まれるので削除する。信号n_003, n_004, n_005, n_006, n_008はリストから削除しない。信号n_007を削除した場合には、図１４中のGCB(i_007)ではこの出力である信号n_007は削除せずに入力である信号n_008のみを計測する。信号n_007の動作率は、〔信号n_008が「１」になる割合（イネーブルになる割合）〕＊〔clkの動作率〕により算出する。
【００４９】
信号n_003, n_004, n_005, n_006, n_008全てを計測しても良いが、フリップフロップ（ＦＦ：Flip-Flop）のデータ入力端子の入力になっているものを削除するとしても良い。 ＲＴＬにおいて０遅延でシミュレーションしている場合、後続のＦＦの活性化率に近い値になるので計測対象から外す。これにより、信号n_003, n_004, n_008が再観測信号リスト2D01に残る。図１５は、再観測信号リスト2D01を示す図であり、再観測信号リスト2D01はインスタンス名と再観測信号を含む。
【００５０】
次に検出した信号n_003, n_004, n_008から回路の入力方向に回路をたどり、ＲＴＬシミュレーション結果1D01にある信号を見つけるまでさかのぼり、全入力がＲＴＬシミュレーション結果1D01に含まれる図１６の部分回路を抽出する。図１６中、部分回路i_000はＡＮＤ回路、部分回路i_002は加算器、部分回路i_003は加算器である。ＲＴＬシミュレーション結果1D01にある信号の見つけ方としては、ＲＴＬシミュレーション結果1D01にあるか否かを判定する方法、信号n_003, n_004, n_008のリストに無い信号に到達することで判定する方法、ネーミングルールで判定する方法がある。例えば、自動生成された信号のネーミングルールがn_>数値<である場合、これにマッチするか否かで信号を判定できる。
【００５１】
次に、部分回路の包含関係を調べる。重複する部分回路がある場合には、他の部分回路を包含する方の部分回路を残す。例えば、図１７に示すような２つのＡＮＤ回路と２つの排他的論理和（Exclusive-OR）回路を有する回路から複雑な部分回路を抽出する場合、信号n_0010, n_0011, n_0012, n_0013を終点とする４個の部分回路が抽出されるが、信号n_0010, n_0011, n_0012を終点とする部分回路は信号n_0013を終点とする部分回路に含まれるので取り除く。つまり、信号n_0010〜n_0012を出力とする部分回路は、信号n_0013を出力とする部分回路に含まれるので、この場合は信号n_0013を出力とする部分回路のみを残す。
【００５２】
次に、上記の如く包含関係を調べた結果残された部分回路を含むモジュール（以下、差分モジュールと言う）を生成する。差分モジュールの生成を図１４の簡易ネットリスト1D03に適用した場合の差分モジュール記述2D02を図１８に示す。図１８に示す記述例Ｅｅは、部分回路B001を有し、各部分回路に必要な信号が宣言された記述になっており、このような差分モジュール記述2D02が出力される。
【００５３】
次に、これらの部分回路の入力となる信号のリスト（以下、入力信号リストと言う）2D00を抽出する。この例では、信号i_Sample.a, i_Sample.b, i_Sample.A, i_Sample.B, i_Sample.C, i_Sample.Dが入力信号リスト2D00として出力される。図１９は、入力信号リスト2D00を示す図であり、入力信号リスト2D00はインスタンス名と入力信号を含む。
【００５４】
以上が差分モジュール抽出ステップ2P00の処理である。次に、差分テストベンチ生成ステップ2P01（又は、処理）を説明する。
【００５５】
差分テストベンチ生成ステップ2P01は、信号入力リスト2D00及び再観測信号リスト2D01に基づいて、先ずＲＴＬシミュレーション結果1D01から差分モジュール内の部分回路の入力となるデータを抽出する。部分回路の入力データはi_Sample.a, i_Sample.b, i_Sample.A, i_Sample.B, i_Sample.C, i_Sample.Dである。これらの値はシミュレーション結果に書き込まれている。 i_Sample.a, i_Sample.b, i_Sample.A, i_Sample.B, i_Sample.C, i_Sample.Dは夫々のシミュレーション結果を抽出する。シミュレーション結果（図５の記述例Ｅｃ）の場合、４番目、５番目、６番目、７番目、８番目、９番目の列を抽出する。これにより、差分モジュール内の部分回路の入力のデータとして、図２０に示す記述例Ｅｄ（description_d.txt）が得られる。
【００５６】
次に、差分テストベンチ生成ステップ（又は、処理）2P01は、description_d.txtをロードするテストベンチを生成し、差分テストベンチ記述2D03として出力する。図５に対する差分テストベンチ記述2D03の例を図２１乃至図２３に示す。
【００５７】
以下に、図２１乃至図２３に示す記述例Ｅｆの記述内容を説明する。
【００５８】
記述例Ｅｆの１，２行目は、図２１に示すようにＲＴＬシミュレーション結果1D01に残っている信号にデータをロードするための信号を宣言している。これらの信号は、記述例Ｅｆの１５行目〜２０行目で部分回路の入力端子に結線している。従って、この信号にdescription_d.txtをロードすれば部分回路に入力値を与えることができる。
【００５９】
記述例Ｅｆの２６行目〜３６行目でdescription_d.txtのデータをロードしている。記述例Ｅｆの２６行目でdescription_d.txtに含まれているサンプル数を与えている。この例では、クロックclkで１６サイクルのシミュレーションを行った結果なのでサンプル数は１６個ある。記述例Ｅｄのデータはi_Sample.a, i_Sample.b, i_Sample.A, i_Sample.B, i_Sample.C, i_Sample.D の順に入っている。そこで、図２１及び図２２に示す記述例Ｅｆの２９行目〜３４行目で値をfscanfでリードして、各々、\i_Sample_ReSim/a, \i_Sample_ReSim /b, \i_Sample_ReSim /A, \i_Sample_ReSim /B, \i_Sample_ReSim /C, \i_Sample_ReSim /Dに読み込んでいる。このようにして、description_d.txtのデータを部分回路にロードしている。
【００６０】
記述例Ｅｆの３，４行目は、図２１に示すように部分回路に含まれる再計測対象の信号（簡易合成が自動生成した信号）をアサインする信号を宣言している。更に、記述例Ｅｆの２１〜２３行目で階層参照した元の信号をこれらの信号に代入している。記述例Ｅｆの５，６行目は再計測対象の信号の値を保持するレジスタを宣言している。記述例Ｅｆの７９行目〜８１行目では、図２３に示すように現在の再計測対象の信号の値を格納部に記憶している。この値は１サイクル前の結果として次のサイクルで参照される。
【００６１】
記述例Ｅｆの８，９行目は、図２１に示すように信号変化回数をカウントするためのレジスタを宣言している。図２２及び図２３に示す記述例Ｅｆの５９，６１，６３行目で実際に信号変化を検出してカウントしている。記述では０→１、１→０への変化があった時に「１」を加算している。
【００６２】
記述例Ｅｆの１０，１１行目は、図２１に示すように信号値が「１」の時をカウントするためのレジスタを宣言している。図２２及び図２３に示す記述例Ｅｆの６０，６２，６５行目で実際に信号レベルを検出してカウントしている。
【００６３】
入力データがなくなったら、記述例Ｅｆの２８行目〜３６行目のループから抜けて、３７行目〜５５行目を処理する。記述例Ｅｆの３７行目〜４５行目までは、エッジ数のカウント結果を周期数で割って動作率を算出し、これを記載している。記述例Ｅｆの４６行目〜５４行目までは、レベル１の期間のカウント結果を周期数で割って「１」の期間の割合を算出し、これを記載している。
【００６４】
次に、差分テストベンチ生成ステップ2P01の後に実行される差分シミュレーションステップ（又は、処理）2P02を説明する。
【００６５】
差分シミュレーションステップ2P02は、差分モジュール記述2D02と差分テストベンチ記述2D03に基づくシミュレーションを実行する。図２４は、差分シミュレーションステップ2P02の差分シミュレーション結果を示す図である。図２４中、例えば\Sample_ReSim/Aは図１４に示す信号Aの差分シミュレーション結果を示し、他の信号B, C, ..., n_003等も同様の表記で示されている。図２４の差分シミュレーション結果では、信号n_003の各々のビットと信号n_008の信号変化回数と「１」（ハイレベル）の期間が算出されている。信号変化回数は、末尾が_counterで終わっている信号名の変化回数のカウント値であり、「１」（ハイレベル）の期間は、末尾が_counter_levで終わっている信号名が「１」（ハイレベル）の期間のサイクル数である。信号変化を調べるためには、１サイクル前の値が必要であり、_prevで終わっている信号名は、１サイクル前の値を保持しているレジスタの様子を示す。
【００６６】
又、記述例Ｅｆのテストベンチの標準出力により、図２５に示す記述例Ｅｇが得られる。記述例Ｅｇには、i_Sample.n_003, i_Sample.n_004, i_Sample.n_008夫々の活性化率、即ち、動作率と「１」の期間の割合が記載されている。記述例Ｅｇ中、Sample.n_003等は動作率を示し、L)Sample/n_003等は「１」の期間の割合を示す。従って、信号n_003, n_004, n_008の活性化率が算出できる。このように算出した活性化率を表形式にまとめると、図２６のようになり、シミュレーションによる差分活性化率データ2D04として出力される。
【００６７】
以上が、図１２に破線で囲んで示す再シミュレーションステップ2000に含まれるステップ2P00〜2P02の処理の説明である。
【００６８】
次に、図１２に示す活性化率算出ステップ1P01の処理を説明する。活性化率算出ステップ1P01は、ＲＴＬシミュレーション結果1D01に基づいて基準周波数の周期でシミュレーションサイクルを数え、この例ではクロックclkを基準とすると１６サイクルをシミュレーション時間（又は、周期）として数える。又、活性化率算出ステップ1P01は、ＲＴＬシミュレーション結果1D01を用いて立ち上がり変化、立ち下がり変化を数える。この立ち上がり変化、立ち下がり変化のカウント回数を、シミュレーション時間（又は、周期）、即ち、１６で割ったものを動作率とする。i_Sample.aに印加された信号の場合、１５ｎｓで立ち上がり、８５ｎｓで立ち下がっているので、信号変化は２回である。従って、i_Sample.aに印加された信号の場合、２／１６＝０．０１２５００が動作率として算出される。
【００６９】
ここでは便宜上、立ち上がり変化を1'b0→1'b1、立ち下がり変化を1'b1 → 1'b0に限定してカウントし、どちらか一方又は両方が1'bz又は1'bxの時は立ち上がり、立ち下がり変化無しとみなした。更に、活性化率算出ステップ1P01は、記述例Ｅｃから「１」の期間を算出する。例えばi_Sample.aに印加された信号の場合、「１」の期間は１５ｎｓ＋δｎｓ−９５ｎｓであり、８０ｎｓの間「１」だったことがわかる。一方、シミュレーション時間は１６５ｎｓ−５ｎｓ＝１６０ｎｓであり、「１」の期間の割合は８０／１６０より０．５００００になる。
【００７０】
活性化率算出ステップ1P01は、同様にしてＲＴＬシミュレーション結果1D01の中に含まれている信号について動作率と「１」の期間の割合を算出し、これらを例えば図７に示すような活性化率データ1D04に書き出す。説明の便宜上、図７はA[4:0]、rst, a, bについてのみ活性化率と動作率を示す。
【００７１】
以上が活性化率算出ステップ1P01と再シミュレーションステップ2000の処理の説明である。これらの処理を実行すると、活性化率データ1D04及びシミュレーションによる差分活性化率データ2D04が生成される。活性化率算出ステップ1P01と差分シミュレーションステップ2P02が共に終了すると、JOIN0で示すように制御がマージされ、確率伝播ステップ1P02に制御が移る。
【００７２】
次に、確率伝播ステップ1P02の入力を作成する。活性化率データ1D04のフォーマットに合わせて、活性化率データ1D04とシミュレーションによる差分活性化率データ2D04をマージしたデータを作成し、確率伝播ステップ1P02に入力する。これにより、ＲＴＬシミュレーションで観測可能だった信号と、再シミュレーションで観測した信号に対する活性化率データが作成できる。 マージしたデータを図１の場合と同様に確率伝播ステップ1P02に入力する。その結果、ＲＴＬ設計データ1D00になかった信号データの活性化率データを用いた確率伝播ステップ1P02が実行でき、確率伝播技術により確率伝播ステップ1P02が生成する差分活性化率データ1D05の精度を向上することができる。このように、確率伝播ステップ1P02には、再シミュレーションステップ2000の差分シミュレーションステップ2P02で求めたシミュレーションによる差分活性化率データ2D04と活性化率算出ステップ1P01で求めた活性化率データ1D04が、簡易ネットリスト1D03と共に入力される。又、確率伝播ステップ1P02で求めた活性化率データ2D04, 1D04以外の信号については、図１と同様の確率伝播技術を用いて算出される。
【００７３】
更に、図１の場合と同様に電力計算ステップ1P03の処理を実行することにより、最終的な電力値が算出できる。ただしこの場合、電力計算ステップ1P03は、簡易ネットリスト1D03、活性化率データ1D04、シミュレーションによる差分活性化率データ2D04、確率伝播による差分活性化率データ1D05及びテクノロジライブラリ1D02に基づいた電力計算を行って電力見積値1D06を出力する。
【００７４】
図１の場合、差分活性化率データ1D05に含まれる信号は確率伝播技術により算出され誤差を含んでいるが、図１２のシミュレーションによる差分活性化率データ2D04の場合、再シミュレーションにより正確な値が算出されている。例えば、i_Sample.n_008が「１」の期間は１サイクルなので、「１」の期間の割合は１／１６より０．０６２５になる。一方、確率伝播技術でandの場合は出力が「１」になる期間の割合を入力側の「１」になる期間の割合の積で算出すると定義されていたとする。この時、i_0000は入力０(i_Sample.aが接続されている）が「１」になる期間の割合は０．５００００、入力１(i_Sample.bが接続されている）が「１」になる期間の割合は０．４３７５０なので、０．５００００＊０．４３７５０より０．２１８７５になる。従って、図１の場合、（１−（０．０６３５／０．２１８７５））より７１％の誤差が生じることがわかる。これに対し、図１２の場合には再シミュレーションにより誤差無しで正確な値が算出され、動作率に関しても任意の計算式により算出される。
【００７５】
次に、再シミュレーションについて更に説明する。上記の説明では、ＲＴＬシミュレーションソフトウェアを利用する場合を例に取ったが、同等の計算をする専用ソフトウェアを利用するようにしても良い。又、既存のソフトウェアを改良して、同等の計算を行うオブジェクト又は関数を既存のソフトウェアから呼び出すことにより上記の計算を実行するようにしても良い。ソースコードを生成してコンパイルした実行形式を利用することにより、高速実行を可能とする例については後述する。
【００７６】
上記の説明で用いた確率伝播技術の計算方法は一例にすぎず、どのような伝播方式であっても、算出ポイントの周辺の情報から推定する計算方法であるという点では同じであることから本質的に誤差が生じる可能性があると考えられる。
【００７７】
次に、本実施例における消費電力見積の実行時間について説明する。本実施例において、ケース（１）〜（５）について消費電力見積のシミュレーションを実行した結果を図２７に示す。図２７に示す消費電力見積の実行時間のシミュレーション結果は、１６サイクルを１００万サイクル分にしたテストベンチを用いて計測した。ケース（１）は元のＲＴＬシミュレーション、即ち、ＲＴＬ設計データ1D01を生成するシミュレーション時間である。ケース（２）は、記述例Ｅｆと記述例Ｅｅでシミュレーションを実行した結果であり、sample_num＝１００万とした。ケース（３）は記述例Ｅｆから波形データを出力する記述を取り除いた記述と記述例Ｅｅでシミュレーションした実行結果である。ケース（４）は、ケース（２）では記述例Ｅｆのfscanfでデータをリードしているのを記述例Ｅｈに示すメモリリードで実行した際のシミュレーション結果である。ケース（５）は記述例Ｅｆのfscanfでデータをリードしているのを記述例Ｅｈに示すメモリリードに変更した記述から波形データの出力を削除した記述と記述例Ｅｅでシミュレーションした結果である。
【００７８】
このケース（５）では、活性化率の算出を含む処理で、消費電力見積の実行時間がケース（１）の実行時間の約８０％であり、比較的高速に処理できていると言える。尚、データパス系の動作率が高い場合を例に挙げて説明したが、データパス系の動作率が低い場合には高周波のクロックパス系が無い分消費電力見積の高速性が多少損なわれると考えられる。
【００７９】
本実施例では、解析対象となる回路の組み合わせ回路を切り出して再シミュレーションを行う。具体的には、簡易ネットリスト1D03から組み合わせ回路を抽出し、ＲＴＬシミュレーション結果1D01から組み合わせ回路への入力データを抽出し、組み合わせ回路に入力データを適用して再シミュレーションを行い、簡易合成処理が推定した回路部分のシミュレーションデータを生成して活性化率の算出に用いて活性化率を算出する。信号の計測方法としては、再シミュレーション時に再シミュレーションに用いる回路の出力をカウントする回路を入れてシミュレーションしたり、ＲＴＬシミュレーションシステムと活性化率算出用のライブラリを利用してシミュレーションしたりする方法を用いることで、シミュレーション時に活性化率をカウントする。
【００８０】
本実施例によれば、ＲＴＬ設計データ1D00（ＲＴＬ記述）とＲＴＬシミュレーション結果1D01を入力としつつ、消費電力見積の精度を向上することができる。
【実施例２】
【００８１】
上記第１実施例は、ゲートレベル相当になった組み合わせ回路について再シミュレーションを実行する。このため、ゲートレベルシミュレーションを実行する場合程は長くないものの、消費電力見積の実行時間が比較的長く、シミュレーション結果のデータサイズが比較的大きくなる。そこで、消費電力見積の実行時間を更に短縮可能な実施例を以下に説明する。
【００８２】
以下に説明する本発明の第２実施例及び後述する本発明の第３乃至第７実施例では、基本的には図１２に示す上記第１実施例の処理を実行するが、消費電力見積の更なる高速化のための最適化処理を更に実行する。
【００８３】
本実施例では、図１２に示す差分モジュール抽出ステップ2P00において、消費電力見積を高速化するために計測ポイントを削減する。具体的には、ゲーテッドクロックバッファ（ＧＣＢ）、クロックゲート（又は、クロックドゲート）、クロックゲーティングセル等を基準に計測ポイントを絞り込む。以下の説明では、便宜上ＧＣＢを基準に計測ポイントを絞り込むものとする。
【００８４】
ＧＣＢを手動で挿入した場合、通常はイネーブル信号及び出力値の波形データがＲＴＬシミュレーション結果1D01に残っている。一方、ＧＣＢを自動挿入した場合、イネーブル信号がＲＴＬシミュレーション結果1D01内に残らない可能性がある。ネストやifの条件式にif(a & b)やif(a==2'b10)と記載された場合には、信号値がＲＴＬシミュレーション結果1D01に残らない。従って、通常、このようなイネーブル信号は確率伝播技術によって算出される。
【００８５】
クロックパス系以外のデータパス系であれば、少なくともＦＦにおいての活性化率が算出可能である。仮に活性化率の誤差が大きくなっても、ＦＦ等の活性化率データが正確に求められているポイントで活性化率を修正することができる。
【００８６】
一方、ＧＣＢの出力信号データはＲＴＬシミュレーション結果1D01には残らない。従って、確率伝播を是正する方法が無い。一方、１個のＧＣＢで数１００ビットのＦＦを制御していることもあり、ＧＣＢの影響力が大きい場合がある。更に、クロックゲーテッドによる低電力化は一般的な手法であり、この手法の効果を評価する要望がある。特にクロックゲーテッドによる低電力化手法の適用前後において差を見る場合、ゲーテッド適用箇所に着目して評価することになる。従って、活性化率のデータが正確であればある程、回路設計支援装置のオペレータ（又は、ユーザ）が活性化率のデータに基づいて行う各種判断が正しくなって解析対象となる回路の解析に良好に反映させることができる。
【００８７】
既存のＲＴＬ消費電力見積ツールは、ＲＴＬ記述を入力としながら、自動挿入されるＧＣＢで制御されるクロックツリー及びＦＦの電力を見積もる機能を有する。このような機能を有するＲＴＬ消費電力見積ツールは、何らかの方法でＧＣＢを推定することができる。簡易合成ステップ1P00において、図１４のようにＧＣＢが含まれた簡易ネットリストを生成する方法は一例にすぎず、図６のような記述の簡易ネットリストから後段の処理においてＧＣＢ推定しても良い。いずれにせよ、既存のＲＴＬ消費電力見積ツールはＧＣＢの自動挿入を模擬する機能を有するので、ＧＣＢセルの一覧を生成することができる。
【００８８】
ここでは、簡易合成ステップ1P00において図１４のようにＧＣＢが推定される場合を例に取って説明する。この場合、簡易合成ステップ1P00は、論理合成ツールに倣って、マルチブレプレクサＭＵＸをＧＣＢに置き換える処理を行って図１４の回路を生成する。又、簡易合成ステップ1P00の処理を拡張して、ＧＣＢのイネーブル信号につながる信号の一覧を生成する。図１４の場合、図２９に示すＧＣＢイネーブル一覧表を生成し、このＧＣＢイネーブル一覧表を再観測信号リストとして用いて上記第１実施例と同様の処理を行う。これにより、ＧＣＢ部分のみ消費電力見積の精度が向上した見積結果が得られる。
【００８９】
本実施例は、消費電力見積の更なる高速化に有効である。実設計データでは、ＧＣＢの数は通常、全回路要素数の約０．３％程度にしかすぎない。従って、計測ポイントをＧＣＢの部分に絞れば、消費電力見積の高速化が図れる。クロックパス系の活性化率のデータに関しては殆ど、或いは、全てをシミュレーション結果に基づくデータから算出できる。このため、クロックパス系の不確定要素を大幅に減少させることができる。上記第１実施例で用いた例の場合、本実施例では信号n_008を含む部分回路のみが計測ポイントの絞り込みの対象となる。従って、部分回路３個のうち１個のみに対して上記第１実施例と同様の計測をすれば良くなる。
【００９０】
このように、本実施例では、確率伝播技術の性質に着目する。つまり、確率伝播技術を用いる場合、組み合わせ回路に関してはデータパス上の結節点毎に活性化率が求まっている可能性が高く、且つ、求まっている活性化率は一定の許容範囲の精度を有する点に着目する。そこで、データパスに関しては確率伝播技術を用いる。ゲーテッドクロックバッファ（ＧＣＢ）については、ＲＴＬ消費電力見積で推定された入力側の活性化率しか求められていない。更に高周波な信号であり電力への影響が大きい場合がある。そこで、ＧＣＢのイネーブル信号enの入力を生成する回路に着目して、上記消費電力見積の高速化を図る。
【００９１】
本実施例は、差分モジュール抽出ステップ2P00を改良することで、ネットリスト上のＧＣＢ若しくはＧＣＢのイネーブル信号を推定するデータを抽出し、ＧＣＢのイネーブル信号enから入力側にさかのぼっていきＲＴＬシミュレーション結果1D01にある信号データを検出し、全入力がＲＴＬシミュレーション結果1D01にある信号でＧＣＢのイネーブル信号enを駆動する組み合わせ回路を抽出し、抽出した組み合わせ回路の入力をＲＴＬシミュレーション結果1D01から抽出し、シミュレーション結果から抽出された組み合わせ回路の入力をＧＣＢのイネーブル信号enを駆動する組み合わせ回路に適用してシミュレーションを行い、このシミュレーションの結果から活性化率を算出する。その結果、図８の差分活性化率のデータのうちのＧＣＢクロックに関するデータの精度を向上できる。
【００９２】
本実施例では、再シミュレーションする回路の規模を比較的小さくすることができ、再シミュレーションする回路はＲＴＬで良く、出力のイネーブル信号のみを再シミュレーションの対象とするので、波形データのデータサイズを比較的小さくすることができる。又、消費電力見積の速度低下を低く抑えられる。例えば、上記の記述例では、次のように(a & b)を再シミュレーションして信号n_0001の 活性化率を算出すれば良い。
assign n_0001 = (a & b);
解析対象となる回路の一例では、ＧＣＢの数は８５００個以内であり、ＦＦは２０万個以上、ゲートは１５０万個以上あった。この場合、シミュレーション結果を生成するデータ、若しくは、活性化率を算出するべき信号は、全信号数の約０．３％程度しかない。従って、波形データを作るコスト及び活性化率を算出するコストは、消費電力見積全体のコストの約０．３％程度であると推定できる。更に、出力信号のみを評価するので、出力信号を生成する回路部分はゲートレベル記述であっても、ＲＴＬ記述であっても良い。
【実施例３】
【００９３】
本発明の第３実施例では、差分モジュールのデータを制限することで、データパス系のシミュレーション結果を精査する。データパス系のシミュレーション結果を精査するために、図１２の差分モジュール抽出ステップ2P00においてシミュレーション結果の絞り込みを行う。シミュレーション結果の絞り込みの一例として、信号にインスタンス名を与えてそのインスタンスに含まれる信号のシミュレーション結果に限定する方法がある。この場合、例えばインスタンス名の一覧を入力し、上記第１実施例で生成された再観測信号リスト2D01の中から指定インスタンス名に属する信号のみを選択して後段の処理に渡す処理を追加で実行する。
【００９４】
シミュレーション結果の絞り込みの他の例として、演算器の出力信号のシミュレーション結果に限定する方法がある。この場合、例えば簡易合成ステップ1P00が演算器マクロを推定した時に、推定した演算器の出力信号名を記憶しておき、出力信号名の一覧を生成する。更に、この出力信号名の一覧を後段の処理に渡す処理を追加で実行する。
【００９５】
シミュレーション結果の更に他の例として、バス幅でシミュレーション結果を制限する方法がある。この場合、簡易合成ステップ1P00の処理の拡張で、wire [7:0] A,B,C,D,E;があって、簡易合成ステップ1P00の処理の対象がassign E = (A | B) &(C | D);であったとすると、(A | B)、(C | D)の結果は８ビットで推定される。更に、wire [7:0] n_0000, n_0001; が生成される。この時、n_0000, n_0001 を８ビットの信号の部分として記憶する。例えば、wire [7:0] n_0000; wire n_0001_00, ..., n_0001_07;が生成され、(C | D)の出力が{n_0001_00, ..., n_0001_07}につながっている回路が生成された場合には、{n_0001_00, ..., n_0001_07}の各信号が８ビットの信号の部分になっていることを記憶する。このようにして自動生成信号は何ビットのバスの部分になっているかを示す情報を取得することができる。最後に、閾値として入力されたビット数より多いビット数を選択して一覧を生成する処理を追加で実行し、更にこの一覧を後段の処理に渡す処理を追加で実行する。
【００９６】
シミュレーション結果の絞り込みの他の例として、ＲＴＬの指定範囲を入力して、この指定範囲に含まれる演算のみにシミュレーション結果を限定する方法がある。この場合、例えばインスタンス名を指定してこのインスタンス名の要素中に含まれる演算器を選択して一覧を生成する処理を追加で実行し、更にこの一覧を後段の処理に渡す処理を追加で実行する。
【００９７】
ＲＴＬの指定範囲を入力する方法は、手動ではなく自動的に行っても良い。この場合、確率伝播技術による算出結果のうち、動作率が閾値よりも大きいインスタンス名、或いは、動作率が大きい順に並べた時の上位Ｎ個のインスタンス名を自動的に選択する等の処理を追加で実行する。このように、ＲＴＬの指定範囲を自動的な入力することで、確率伝播技術による算出結果を評価したり、消費電力見積に与える影響が大きい箇所を補正することができる。
【００９８】
組み合わせ回路においてＲＴＬシミュレーション結果1D01には無い信号線を計測して、確率伝播技術の誤差を低くすることができる。例えば、
always @(posedge clk)   A <= ((B + C) * (D + E));
なる記述があった場合、信号A, B, C, D, Eのシミュレーション結果はＲＴＬシミュレーション結果1D01内に含まれている。しかし、(B + C), (D + E) の出力値はＲＴＬシミュレーション結果1D01内に残っていない。従って、これらの出力を用いる演算器（又は、乗算器）は、確率伝播された結果を用いて更に確率伝播を行うことになる。その結果、確率伝播技術の誤差が大きくなる可能性がある。
【００９９】
そこで、本実施例では、差分モジュール抽出ステップ2P00を改良することで、簡易合成ステップ1P00で生成した信号を駆動するネットリストを抽出し、抽出したネットリストの回路への入力をシミュレーション結果から抽出して再シミュレーションを実行し、(B+C), (D+E)の活性化率を算出する。これにより、消費電力見積の精度を向上することができる。例えば、加算器もゲートレベルに展開されていれば、加算器内の信号に関しても再シミュレーションにを実行することにより活性化率を得ることができる。
【０１００】
本実施例の方法は、ＧＣＢに着目した方法よりはシミュレーション時間が長くなる可能性があるが、少なくとも波形が残っている変数のみで行われている演算、例えば
assign A = B + C;
のような式は再シミュレーションの対象から外される。又、ＲＴＬ設計データに含まれるゲートレベルの設計データも対象外になる。
【実施例４】
【０１０１】
本発明の第４実施例では、図１２の差分モジュール抽出ステップ2P00において、図１４のように演算器マクロが認識できる簡易ネットリスト1D03があるか、若しくは、演算器マクロを推定した簡易合成ステップ1P00が演算器の生成情報を生成している場合を想定する。この時、演算器がＲＴＬの演算で簡便に表現可能であるか否かを判定し、簡易に表現可能な場合にはＲＴＬの式を推定する。例えば、i_002が加算器であるという生成情報を用いて、assign n_003 = A + B; を推定する。
【０１０２】
このように、本実施例では、差分モジュール抽出ステップ2P00を改良することで、簡易ネットリスト1D03からではなくＲＴＬシミュレーション結果1D01から解析対象の回路を抽出する。つまり、ＲＴＬシミュレーション結果1D01から解析対象の回路を抽出し、抽出した回路の入力となる信号データ（即ち、入力データ）をシミュレーション結果から抽出し、抽出した回路に抽出した入力データを適用して再シミュレーションを行い、ネットリストレベルを用いた消費電力見積よりも高速に消費電力見積を行う。通常、ＲＴＬシミュレーション結果1D01では加算演算、比較演算等が記述されており、これらの演算はＣＰＵの加算命令、比較命令等と関係付けられるため、多ビットの演算であってもＣＰＵでは少ない演算回数で実行することができる。しかし、これらの演算がゲートレベルに展開されている場合、ゲート毎に計算を実行する必要があり演算時間がその分長くなる。
【０１０３】
尚、ＲＴＬシミュレーション結果1D01の代わりに、加算器、比較演算器等がマクロとして認識できる簡易ネットリスト1D03を用いても良いことは言うまでもない。
【実施例５】
【０１０４】
本発明の第５実施例では、図１２の差分モジュール抽出ステップ2P00及び差分テストベンチ生成ステップ2P01において、独立に実行できる組み合わせ回路と、独立に実行できる組み合わせ回路を駆動するテストベンチを個々に作成して差分シミュレーションステップ2P02においてシミュレーションを並列に実行する。例えば、図１６の回路の場合、３個の部分回路が互いに関係しない。このような場合、部分回路を１個づつ記述（即ち、インスタンス化）して３個の回路を生成する。次に、生成した３個の回路に対応するテストベンチを作成し、個々のテストベンチを用いて別々のＣＰＵにおいて消費電力見積の計算を実行する。これにより、ＴＡＴの短縮が図れる。
【０１０５】
簡易合成ステップ1P00が生成した信号を決定できる部分回路を抽出する場合、再シミュレーション時間が比較的長くなる可能性がある。そこで、特定の演算要素、特定のバス幅以上のものを選択し、再シミュレーションの計算量を削減するようにしても良い。
【０１０６】
尚、組み合わせ回路を全て精査するとしたが、変形例として、オペレータが再検査が必要なブロックを指定し、指定されたブロックに対してのみ上記の如き処理を実行することもできる。更に、この変形例の更なる拡張として、指定されたブロックの電力値、指定されたブロックの組み合わせ回路の電力値、指定されたブロック全体の電力の中で組み合わせ回路の電力が占める割合等に閾値を設け、閾値を超えた電力値又は割合等を有するブロックに対してのみ上記の如き処理を実行することで、特に高精度の消費電力見積が要求される部分のみを精査するようにしても良い。
【実施例６】
【０１０７】
次に、本発明の第６実施例を説明する。
【０１０８】
ＧＣＢが多段（又は、マルチステージ）で接続される場合がある。図３０は、ＧＣＢが２段で接続されたマルチステージ回路の一例を示す図であり、図３１は図３０のマルチステージ回路の動作を説明する図である。図３０中、i_000はＧＣＢ、b_000はバッファである。図３０のマルチステージ回路において、信号n_0000, n_0001が図３１に示す波形を有する場合、信号c_0002の動作率は「０」であるが、ＧＣＢの確率伝播式が〔信号n_0000が「１」になる期間の割合〕＊〔（クロックCLKの立ち上がりエッジ数）／基本周波数〕であると、信号c_0002の動作率は０．１４になり、実際の動作率と算出した動作率との間に誤差が生じる。
【０１０９】
本実施例は、図１２の差分モジュール抽出ステップ2P00において、２段目以降のＧＣＢの出力の活性化率を別途算出することにより、イネーブル信号を計測して活性化率を算出する場合であっても誤差を生じさせない。つまり、２段目以降のＧＣＢi_001を検索し、このＧＣＢi_001のイネーブル信号n_0001を検索する。回路のクロックCLKの経路を辿って行き、ＧＣＢi_002を検索し、このＧＣＢi_002のイネーブル信号n_0000を検索する。回路のクロックCLKの経路を更に辿って行き、クロックCLKのソースclkを検索し、一連の検索処理を終える。次に、検索した信号n_0000, n_0001を使って、assign c_0000_en = (n_0000 & n_0001);を生成して再シミュレーションの対象に加える。再シミュレーションの結果、信号c_0000_enの活性化率が求まる。信号c_0002の動作率は、〔信号c_0000_enの「１」になる期間〕＊〔CLKの動作率〕で算出する。信号c_0002の動作率を、このようにして算出した値に置き換えるように電力計算ステップ1P03に指示をする。従って、イネーブル信号部分の再シミュレーションに限定しつつ、マルチステージのＣＧＢの消費電力見積の精度低下を避けることができる。又、本実施例の処理は、ＧＣＢが３段以上で接続されたマルチステージ回路に対しても同様に適用可能である。
【０１１０】
このように、本実施例では、差分モジュール抽出ステップ2P00を改良することで、ＧＣＢのイネーブル信号の精査を行う。つまり、ＧＣＢを入力側に辿って行き、そのＧＣＢ自身よりも入力側にあるＧＣＢを全て検索し、各々のＧＣＢのイネーブル信号enを抽出してandを取る記述を生成し、生成した記述を再シミュレーションの部分回路に加え、計測結果から導かれた該当するＧＣＢに対してイネーブル信号enに再シミュレーションにより算出したイネーブル信号enの活性化率を与え、クロック信号clkにイネーブル信号enの動作率を与え、この動作率が前段のＧＣＢのイネーブル信号の動作率の計算に使われる確率伝播アルゴリズムが回路設計支援装置に実装されている場合にはこの動作率が前段の動作率の算出に利用されないようにする。
【実施例７】
【０１１１】
図３２は、本発明の第７実施例における消費電力見積方法を説明するフローチャートである。図３２中、図１２と同一部分には同一符号を付し、その説明は省略する。図３２に示す処理は、ＬＳＩ等の半導体集積回路の設計段階でＣＰＵ２０１により実行される。又、図３２に示す処理は、図１２において、差分テストベンチ生成ステップ2P01及び差分シミュレーションステップ2P02の代わりに実行される。本実施例では、再シミュレーションを実行する実行形式を生成して実行し、再シミュレーションの結果を算出する。図３２に示すステップ3P00〜3P03は、ＲＴＬシミュレーション結果1D01及び差分モジュールから再シミュレーションを実行する実行形式を生成する実行形式生成ステップを形成する。
【０１１２】
図３２において、結果解析ステップ（又は、処理）3P00は、ＲＴＬシミュレーション結果1D00から信号を抽出しリストにする。ここでは、図５に示す記述例Ｅｃの信号リストの１行目が図３３に示す記述例Ｅｉのように信号幅が明記されたＲＴＬシミュレーション結果1D01が入力される場合を例に取って説明する。ＶＣＤ（Value Change Dump）形式の波形等では、通常はビット幅が明記されているので、一般的な運用においても差しつかえが無い。
【０１１３】
図３４は、結果解析処理3P00が出力する信号マップ3D00の一例を示す。信号データ3D01は、図３５の記述例Ｅｋの２〜１８行目に相当する。記述例Ｅｋは、上記記述例Ｅｃと同等の情報を有し、記述例Ｅｃから時間の列以外をカンマ「，」で区切ったものに相当する。
【０１１４】
カウント用記述生成ステップ（又は、処理）3P01は、信号マップ3D00、入力信号リスト2D00、再観測信号リスト2D01及び差分モジュール記述2D02に基づき、カウントするカウント記述3D02を生成する。カウント記述3D02としては、例えば図３６乃至図３９に示す如き記述例Ｅｊが生成される。記述例Ｅｊは、基本的には図２１乃至図２３に示す記述例Ｅｆと同等の計算を実現するＣ言語ソースである。記述例Ｅｊは、２値論理で動作率に使うための変化回数をカウントする例を示す。
【０１１５】
記述例Ｅｊでは、data_arrayに信号データ3D01を読み込む。記述例Ｅｋの場合では、１回目のサンプルデータをアドレス０番からclk, rst, i_Sample.a, ..., i_Sample.Wの順に書き込み、２回目のサンプルデータをアドレス１８番から、同様に書き込み、１７回目のサンプルデータまでが書き込まれている。 又、記述例Ｅｊのbaseには、計測対象の要素数が書かれている。ここでは、clk,...,i_Sample.Wが１８個なので、base = １８である。offsetとデータの関係は図３４のようになり、これを信号マップ3D00として出力する。
【０１１６】
記述例Ｅｊのbitsには、ビット数が書かれている。例えば、クロックclkは１ビットなので、bits[0]=1、i_Sample.Aは３２ビットなので、bits[4]=３２となる。このようなビット数の各信号のの立ち上がり又は立ち下がりが発生した回数は、計算によりカウントできる。
【０１１７】
拡張部分は、抽出した自動生成された信号に対する再シミュレーション、及び、変化回数の計測部分になる。例えば図４０のような構造体std::vector<std::vector<unsigned>>等を用意して、count_arrayとする。図４０は変化回数の計測を行うカウンタの一例を示す図である。尚、１回前の計算結果は配列prevに含まれている。
【０１１８】
又、記述例Ｅｊには、差分モジュール記述2D02に相当する記述を行う。例えば、assign n_008 = (a & b); に相当する記述は、記述例Ｅｊの図３８中矢印Ｘ１で示す行のようになる。又、i_Sample.aに相当する信号のインデックスを調べて、data_arrayの現在の値を参照するようする。同様にして、i_Sample.bに相当する信号のインデックスを調べて、data_arrayの現在の値を参照する。記述例Ｅｊの図３８中矢印Ｘ２で示す行でエッジを算出し、エッジが算出できたら図３８中矢印Ｘ３で示す行で「１」を加算する。
【０１１９】
コンパイルステップ（又は、処理）3P02は、カウント記述3D02として出力された記述例ＥｊをC++コンパイル等でコンパイルし、記述例Ｅｊの実行形式のカウンタプログラム3D03を生成する。
【０１２０】
カウント実行ステップ（又は、処理）3P03は、記述例Ｅｊの実行形式のカウンタプログラム3D03及び信号データ3D01に基づいてカウントを実行することで、記述例Ｅｊの実行形式に信号データが入力され、ＲＴＬシミュレーション結果1D01にある信号と再観測信号リスト2D01で定義された信号の活性化率を含む活性化率データ3D04が算出される。この活性化率データ3D04は、図２６に示す差分活性化率データと、図７に示す活性化率データをマージしたデータであり、後段の確率伝播ステップ1P02において図１２のシミュレーションによる差分活性化率データ2D04の代わりに用いられる。
【０１２１】
このように、本実施例では、再シミュレーションを活性化率データの生成段階で行う。このため、活性化率の算出ソースを自動生成し、この算出ソースをコンパイルし、コンパイル結果を使ってＲＴＬシミュレーション結果1D01を入力し、ＲＴＬシミュレーション結果1D01にある信号と抽出した自動生成した信号の活性化率を同時に解析する。
【０１２２】
このような選択的な精査をする場合、一旦確率伝播技術で高速に電力値を見積もった後、経験的に回路の構造上誤差が生じやすいことがわかっているブロックや電力的に支配的であるため時間がかかっても精査が必要であるブロック等をオペレータが指定するか、或いは、回路設計支援装置が閾値を用いて自動的に判別しても良い。
【０１２３】
尚、拡張部分を関数化してコールバック関数にし、この関数の中身を自動生成してダイナミックリンクライブラリ化して、通常のカウントプログラムを拡張するようにしても良い。
【０１２４】
本実施例では、ベクタ形式のデータをＲＴＬシミュレーション結果1D01としたが、通常は信号変化のみを記載したＶＣＤ形式等のデータ形式が使われる。そこで、このようなデータ形式の場合、現在の値を保持して計算する。更にVerilog等のSimulation実装に習い、イベントドリブンで計算する拡張をしても良い。このようにすることで、再シミュレーションを活性化率の算出プログラムに組み込み、ＲＴＬシミュレーション結果1D01の読み込みを１回にまとめることができる。
【０１２５】
以上の解決手段ではＲＴＬ電力見積手段が生成するデータから抽出する手段としたが、これに限らない。簡易合成時においては本発明が対照としている差分回路部分を生成するため、上記処理に必要なデータを持っている。合成時に上記相当の処理をあわせて行い、必要な回路を出力する手段を設けるとしても良い。又、簡易合成では一旦ゲーテッドクロックバッファの自動挿入がなされていない回路後推定され、別の手段でゲーテッドクロックバッファを推定する場合は、推定時に回路を出力するものとする。
【０１２６】
上記各実施例によれば、確率伝播技術によって推定された値の代わりに実際に計測した値を使うため、消費電力見積の誤差がなくなり、消費電力見積の精度が向上する。又、再シミュレーションの範囲を限定した場合には、再シミュレーションの実行時間を短縮でき、ＴＡＴを更に低減できる。
【０１２７】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）
回路の消費電力を見積もる消費電力見積方法であって、
前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成ステップと、
前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出ステップと、
前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーションステップと、
前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播ステップと、
前記確率伝播ステップが算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算ステップ
をコンピュータに実行させる消費電力見積方法。
（付記２）
前記活性化率データは、信号の変化回数が基準周波数の変化回数を１回とした時の割合を示す動作率と、所定測定期間に信号が所定論理値になっている期間の割合を含む、付記１記載の消費電力見積方法。
（付記３）
前記再シミュレーションステップは、
前記簡易合成ステップが自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出ステップと、
前記ＲＴＬシミュレーション結果から前記差分モジュール内の部分回路の入力となるデータを抽出して該データをロードするテストベンチを生成する差分テストベンチ生成ステップと、
前記テストベンチに基づくシミュレーションを実行する差分シミュレーションステップを有する、付記１又は２記載の消費電力見積方法。
（付記４）
前記差分モジュール抽出ステップは、ゲーテッドクロックバッファを基準に前記回路の計測ポイントを削減する、付記３記載の消費電力見積方法。
（付記５）
前記差分モジュール抽出ステップは、前記差分モジュールのデータを制限する、付記３記載の消費電力見積方法。
（付記６）
前記差分モジュール抽出ステップは、前記簡易ネットリストに代えて前記ＲＴＬシミュレーション結果から前記回路を抽出する、付記３項記載の消費電力見積方法。
（付記７）
前記差分モジュール抽出ステップ及び前記差分テストベンチ生成ステップにおいて、独立に実行できる組み合わせ回路と、独立に実行できる組み合わせ回路を駆動するテストベンチを個々に作成し、前記差分シミュレーションステップにおいてシミュレーションを並列に実行する、付記３記載の消費電力見積方法。
（付記８）
前記差分モジュール抽出ステップは、解析回路の前記回路の２段目以降のゲーテッドクロックバッファの出力の活性化率を別途算出する、付記３項記載の消費電力見積方法。
（付記９）
前記再シミュレーションステップは、
前記簡易合成ステップが自動生成した信号を抽出し、包含関係を調べた結果残された部分回路を含む差分モジュールを抽出する差分モジュール抽出ステップと、
前記ＲＴＬシミュレーション結果及び前記差分モジュールから再シミュレーションを実行する実行形式を生成する実行形式生成ステップを有する、付記１又は２記載の消費電力見積方法。
（付記１０）
前記活性化率算出ステップと前記再シミュレーションステップは、並行して実行される、付記１乃至９のいずれか１項記載の消費電力見積方法。
（付記１１）
回路の消費電力を見積もる消費電力見積機能を有する回路設計支援装置であって、
前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手段と、
前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手段と、
前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手段と、
前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手段と、
前記確率伝播手段が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手段
を備えた回路設計支援装置。
（付記１２）
コンピュータに、回路の消費電力を見積もる消費電力見積を行わせるプログラムであって、
前記回路に関するＲＴＬ設計データに基づいて簡易ネットリストを生成する簡易合成手順と、
前記回路に関するＲＴＬシミュレーション結果に基づいて活性化率データを生成する活性化率算出手順と、
前記簡易ネットリストから前記回路に含まれる組み合わせ回路を抽出すると共に、前記ＲＴＬシミュレーション結果から前記組み合わせ回路への入力データを抽出し、該入力データを前記組み合わせ回路に適用した再シミュレーションにより差分活性化率データを生成する再シミュレーション手順と、
前記活性化率データと前記差分活性化率データをマージしたデータに基づいて、前記ＲＴＬ設計データに無い信号データの活性化率データを確率伝播技術により算出する確率伝播手順と、
前記確率伝播手順が算出した活性化率データに基づいて前記回路の消費電力を見積もる電力計算手順
を前記コンピュータに実行させるためのプログラム。
【０１２８】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【０１２９】
【図１】従来のＲＴＬ消費電力解析を説明するフローチャートである。
【図２】ＲＴＬ設計データの記述例Ｅａを示す図である。
【図３】テストベンチの記述例Ｅｂを示す図である。
【図４】テストベンチの記述例Ｅｂ（図３からの続き）を示す図である。
【図５】ＲＴＬシミュレーション結果データの記述例Ｅｃを示す図である。
【図６】簡易ネットリストの一例を示す図である。
【図７】活性化率データの一例を示す図である。
【図８】式ａ&ｂの出力値の「１」になる期間の割合が実際の波形では０の場合を説明する図である。
【図９】式ａ&ｂの出力値の「１」になる期間の割合が実際の波形では０．３の場合を説明する図である。
【図１０】本発明の各実施例が適用可能なコンピュータシステムを示す斜視図である。
【図１１】コンピュータシステムの本体部内の構成を説明するブロック図である。
【図１２】本発明の第１実施例における消費電力見積方法を説明するフローチャートである。
【図１３】ＲＴＬシミュレーション結果を示す図である。
【図１４】簡易ネットリストの他の例を示す図である。
【図１５】再観測信号リストを示す図である。
【図１６】差分モジュール抽出ステップで抽出される部分回路の一例を示す図である。
【図１７】抽出される複雑な部分回路の一例を示す図である。
【図１８】差分モジュールの記述例Ｅｅを示す図である。
【図１９】入力信号リストを示す図である。
【図２０】差分モジュール内の部分回路の入力となるデータの記述例Ｅｄを示す図である。
【図２１】差分テストベンチの記述例Ｅｆを示す図である。
【図２２】差分テストベンチの記述例Ｅｆ（図２１からの続き）を示す図である。
【図２３】差分テストベンチの記述例Ｅｆ（図２２からの続き）を示す図である。
【図２４】差分シミュレーションステップのシミュレーション結果を示す図である。
【図２５】記述例Ｅｆのテストベンチの標準出力の記述例Ｅｇを示す図である。
【図２６】差分活性化率データを示す図である。
【図２７】消費電力見積の実行時間のシミュレーション結果を示す図である。
【図２８】記述例Ｅｈを示す図である。
【図２９】ＧＣＢイネーブル一覧表を示す図である。
【図３０】ＧＣＢが２段で接続されたマルチステージ回路の一例を示す図である。
【図３１】図３０のマルチステージ回路の動作を説明する図である。
【図３２】本発明の第７実施例における消費電力見積方法を説明するフローチャートである。
【図３３】記述例Ｅｉを示す図である。
【図３４】信号マップを示す図である。
【図３５】記述例Ｅｋを示す図である。
【図３６】記述例Ｅｊを示す図である。
【図３７】記述例Ｅｊ（図３６からの続き）を示す図である。
【図３８】記述例Ｅｊ（図３７からの続き）を示す図である。
【図３９】記述例Ｅｊ（図３８からの続き）を示す図である。
【図４０】カウンタの一例を示す図である。
【符号の説明】
【０１３０】
１００      コンピュータシステム
１０１      本体部
１０２      ディスプレイ
１０２ａ      表示画面
１０３      キーボード
１０４      マウス
１０５      モデム
１０６      記録媒体
１１０      ディスク
２００      バス
２０１      ＣＰＵ
２０２      メモリ部
２０３      ディスクドライブ
２０４      ハードディスクドライブ
【図１】
0005146087.tif 000002
【図２】
0005146087.tif 000003
【図３】
0005146087.tif 000004
【図４】
0005146087.tif 000005
【図５】
0005146087.tif 000006
【図６】
0005146087.tif 000007
【図７】
0005146087.tif 000008
【図８】
0005146087.tif 000009
【図９】
0005146087.tif 000010
【図１０】
0005146087.tif 000011
【図１１】
0005146087.tif 000012
【図１２】
0005146087.tif 000013
【図１３】
0005146087.tif 000014
【図１４】
0005146087.tif 000015
【図１５】
0005146087.tif 000016
【図１６】
0005146087.tif 000017
【図１７】
0005146087.tif 000018
【図１８】
0005146087.tif 000019
【図１９】
0005146087.tif 000020
【図２０】
0005146087.tif 000021
【図２１】
0005146087.tif 000022
【図２２】
0005146087.tif 000023
【図２３】
0005146087.tif 000024
【図２４】
0005146087.tif 000025
【図２５】
0005146087.tif 000026
【図２６】
0005146087.tif 000027
【図２７】
0005146087.tif 000028
【図２８】
0005146087.tif 000029
【図２９】
0005146087.tif 000030
【図３０】
0005146087.tif 000031
【図３１】
0005146087.tif 000032
【図３２】
0005146087.tif 000033
【図３３】
0005146087.tif 000034
【図３４】
0005146087.tif 000035
【図３５】
0005146087.tif 000036
【図３６】
0005146087.tif 000037
【図３７】
0005146087.tif 000038
【図３８】
0005146087.tif 000039
【図３９】
0005146087.tif 000040
【図４０】
0005146087.tif 000041