以下に添付図面を参照して、この設計支援プログラム、設計支援装置、および設計支援方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
まず、実施の形態1の概要について説明する。実施の形態1では、消費電力の削減対象候補となる検討箇所をルールベースとして与え、その検討箇所での特定の信号を測定する測定回路を設計対象回路に挿入することで、その測定結果から得られる電力指標を用いて消費電力の改善可能性が高い検討箇所を絞り込む手法を提案する。
図1は、実施の形態1の概要を示す説明図である。図1において、設計支援装置101は、まず、設計対象回路の回路情報D1に基づいて、設計対象回路の中から消費電力の削減対象候補となる検討箇所(図1中★印)を検索し(S1)、その検討箇所での特定の信号を測定する測定回路(図1中○印)を設計対象回路に挿入する(S2)。
そして、測定回路が挿入された挿入後の設計対象回路の回路情報D2をエミュレーション装置102に与えることでシミュレーションを実行し、設計対象回路に挿入された測定回路の測定結果を取得する(S3)。このあと、測定回路ごとの測定結果を用いて、検討箇所の消費電力の改善可能性をあらわす電力指標を算出し(S4)、最後に、検討箇所ごとの電力指標を出力する(S5)。
ここで得られる電力指標は、各検討箇所での電力的な無駄を判断するための指標である。検討箇所ごとに求めた電力指標を比較することで、複数の検討箇所の中から消費電力の改善可能性が高い検討箇所を絞り込むことができる。この結果、従来のように、検討箇所を網羅的に検討し、消費電力の改善具合を一つ一つ確認するなどの面倒な作業が不要となるため、電力改善作業にかかる作業負担および作業時間を削減することができる。
(設計支援装置のハードウェア構成)
つぎに、設計支援装置101のハードウェア構成について説明する。図2は、設計支援装置のハードウェア構成を示すブロック図である。図2において、設計支援装置101は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、設計支援装置101の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、設計支援装置101内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(設計支援装置の機能的構成)
つぎに、設計支援装置101の機能的構成について説明する。図3は、設計支援装置の機能的構成を示すブロック図である。図3において、設計支援装置101は、入力部301と、検索部302と、挿入部303と、取得部304と、算出部305と、出力部306と、解析/作成部307と、を含む構成である。
この制御部となる機能(入力部301〜解析/作成部307)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
まず、入力部301は、設計対象回路に関する回路情報の入力を受け付ける機能を有する。回路情報は、設計対象回路のRTL(Resister Transfer Level)、HDL(Hardware Description Language)記述、ネットリスト、回路図、仕様記述などを含む情報である。
この回路情報は、図2に示したキーボード210やマウス211をユーザが操作することで入力することとしてもよく、また、データベースやライブラリからの抽出により取得することとしてもよい。なお、入力された情報は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
検索部302は、設計対象回路の中から消費電力の削減対象候補となる検討箇所を検索する機能を有する。消費電力の削減対象候補となる検討箇所とは、電力的な削減の可能性を検討すべき回路部分であり、たとえば、クロックゲーティング回路やメモリである。
具体的には、たとえば、検索部302は、入力部301によって入力された設計対象回路に関する回路情報に基づいて、設計対象回路の中から検討箇所を検索することができる。なお、検索された検索結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
挿入部303は、検索部302によって検索された検討箇所の特定の信号を測定する測定回路を設計対象回路に挿入する機能を有する。特定の信号は、検討箇所の特定の端子から入出力される信号である。また、検討箇所と特定の信号と測定回路とを関連付ける情報は、予め規定されてRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
挿入処理の具体例としては、たとえば、検討箇所の特定の信号を測定する測定回路を実現するHDL記述を設計対象回路のHDL記述に挿入することとしてもよく、また、測定回路を実現する回路図を設計対象回路の回路図に挿入することとしてもよい。なお、測定回路を実現するHDL記述や回路図は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。また、挿入された挿入結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
取得部304は、挿入部303によって測定回路が挿入された挿入後の設計対象回路のシミュレーションを実行することにより、シミュレーション期間中に測定された測定回路の測定結果を取得する機能を有する。測定結果としては、たとえば、シミュレーション期間中に特定の信号の値が変化した変化回数や、特定の信号の値とその値が変化した時刻とを関連付けてあらわす情報などがある。なお、時刻とは、設計対象回路のシミュレーションにおける時刻である。
また、測定回路が挿入された挿入後の設計対象回路のシミュレーションは、設計支援装置101において実行することとしてもよく、また、外部のコンピュータ装置(たとえば、図1に示したエミュレーション装置102)において実行することとしてもよい。後者の場合、外部のコンピュータ装置から測定回路の測定結果を取得することとなる。なお、取得された測定結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
算出部305は、取得部304によって取得された測定回路の測定結果に基づいて、検討箇所の消費電力の改善可能性をあらわす電力指標を算出する機能を有する。ここで、電力指標とは、検討箇所における消費電力の改善可能性をあらわす指標である。電力指標を算出する具体的な処理内容については後述する。なお、算出された算出結果は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
出力部306は、算出部305によって算出された検討箇所ごとの電力指標を出力する機能を有する。具体的には、たとえば、検討箇所を特定する情報と電力指標とを関連付けて出力することとしてもよい。このとき、消費電力の改善可能性が高い検討箇所をソートして出力することとしてもよい。
なお、出力部306による出力形式としては、たとえば、ディスプレイ208への表示、プリンタ213への印刷出力、I/F209による外部装置への送信がある。また、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶することとしてもよい。
ユーザ(設計者)は、出力される出力結果を参照することにより、設計対象回路内の複数の検討箇所の中から、消費電力の改善可能性が高い、すなわち、回路構成を修正することで消費電力の高い改善効果が期待される検討箇所を絞り込むことができる。
また、出力部306は、取得部304によって取得された測定回路ごとの測定結果を出力することとしてもよい。具体的には、たとえば、各測定回路が挿入された検討箇所と、その測定回路によって測定された測定結果とを関連付けて出力することとしてもよい。
解析/作成部307は、取得部304によって取得された測定結果または/および算出部305によって算出された算出結果に基づいて、設計対象回路内の複数の検討箇所の中から、消費電力の改善可能性が高い検討箇所を絞り込むための情報を作成する機能を有する。解析/作成部307による解析/作成処理の具体的な処理内容は後述する。
以上説明した実施の形態1によれば、消費電力の削減対象候補となる検討箇所における特定の信号を測定し、その測定結果から各検討箇所での電力的な無駄を判断するための電力指標を算出することができる。これら検討箇所ごとの電力指標をユーザに提示することで、複数の検討箇所の中から消費電力の改善可能性が高い検討箇所を絞り込むことが可能となり、電力改善作業の効率化を図ることができる。
また、消費電力の改善具合を確認する際に、従来のようにチップ全体での消費電力の測定は不要となり、絞り込んだ検討箇所での測定だけで十分となる。この結果、扱うデータ量が少なくなるとともに処理が高速化される。このため、従来では困難であったチップ全体について、実アプリケーションのような長時間の動作での電力評価と改善指摘をおこなうことができる。以下、実施の形態2〜6では、設計支援処理の具体的な処理内容について説明する。
(実施の形態2)
つぎに、設計支援装置の実施の形態2について説明する。実施の形態2では、電力的な削減の可能性を検討すべき検討箇所として、設計対象回路内のクロックゲーティング回路を例に挙げて説明する。なお、実施の形態1において説明した箇所と同一箇所については、同一符号を付して図示および説明を省略する。
まず、検索部302は、設計対象回路の中からクロックゲーティング回路を検索する。具体的には、たとえば、クロックゲーティング用セルがテクノロジ用のセルで実装されている場合には、セル種名で回路を検索することにより、設計対象回路の中からクロックゲーティング回路を検索することができる。
このとき、クロックゲーティング回路の制御信号が入出力される制御入力端子IDまたは出力端子IDを検索することとしてもよい。また、検索結果は、クロックゲーティング回路ごとにリスト化されてRAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。このリスト化された検索結果が測定回路の挿入位置となる。
ここで、リスト化された検索結果について説明する。図4は、検索結果リストの具体例を示す説明図(その1)である。図4において、検索結果リスト400には、クロックゲーティング回路CG1〜CGnごとの検索結果400−1〜400−nがリスト化されて記憶されている。具体的には、各検索結果400−1〜400−nは、クロックゲーティング回路IDおよび制御入力端子IDを有している。
クロックゲーティング回路IDは、クロックゲーティング回路を識別する識別子(たとえば、セル種名)である。制御入力端子IDは、各クロックゲーティング回路の制御入力端子を識別する識別子(たとえば、端子名)である。これによれば、クロックゲーティング回路CGi(i=1,2,…,n)の制御信号を測定する測定回路の挿入位置(接続ポイント)となる制御入力端子Tiを認識することができる。
そして、挿入部303は、検索結果リスト400から特定される挿入位置に、クロックゲーティング回路CG1〜CGnの制御信号の値が変化した時刻を測定する測定回路を挿入する。ここで、クロックゲーティング回路用の測定回路について説明する。図5は、クロックゲーティング回路用の測定回路の一例を示す回路図である。
図5において、測定回路500は、クロックゲーティング回路CGiの制御信号の値が変化した時刻を測定する回路である。ここで、レジスタ501は、一クロック時刻前の制御信号の値を保持する記憶素子である。また、論理ゲート502では、制御信号の値と、レジスタ501に保持されている一クロック時刻前の制御信号の値とを比較して、その値が同一の場合に「1」となる。
このため、測定回路500では、クロックゲーティング回路CGiの制御信号の値に変化があった場合に、シミュレーション時刻を計るシステムタイムカウンタ503のシミュレーション時刻がメモリ504に書き込まれる。このとき、カウンタ505により、メモリ504のアドレスが「+1」される。これにより、メモリ504には、制御信号の値が変化した時刻が順に書き込まれることとなる。
つぎに、この測定回路500の測定結果について説明する。図6は、測定結果の具体例を示す説明図(その1)である。図6において、測定結果600には、クロックゲーティング回路CGiの制御信号の値が変化した変化時刻ti1,ti2,ti3,…が記憶されている。これら変化時刻ti1,ti2,ti3,…は、クロックゲーティングの開始/終了を示す時刻である。
これにより、クロックゲーティング回路CGiによるクロックゲーティングの適用期間を特定することができる。たとえば、最初に制御信号の値が変化した変化時刻ti1と、つぎに制御信号の値が変化した変化時刻ti2とから、クロックゲーティングの適用期間ti1〜ti2を特定することができる。
また、算出部305は、シミュレーション期間と、測定結果600から特定されるクロックゲーティングの適用期間との比率を求めることにより、クロックゲーティング回路CGiの電力指標を算出する。すなわち、クロックゲーティング回路CGiでの電力的な無駄を、シミュレーション期間全体に対するクロックゲーティング適用期間の比率によって表現する。
より具体的には、たとえば、下記式(1)を用いて、クロックゲーティング回路CGiの電力指標Piを求めることができる。ただし、シミュレーション期間全体の期間長をTとし、シミュレーション期間中でのクロックゲーティング回路CGiによるクロックゲーティングの適用期間の総和をTiとする。
Pi=Ti/T ・・・(1)
なお、上記式(1)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。また、シミュレーション期間Tは、シミュレーションが実行された全期間であってもよく、任意に設定された特定の期間であってもよい。この特定の期間は、たとえば、キーボード210やマウス211をユーザが操作することで設定され、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。
また、上記式(1)を用いて求めたクロックゲーティング回路CGiの電力指標Piは、任意の出力形式により出力される。ここで、出力結果の具体例について説明する。図7は、出力結果の具体例を示す説明図(その1)である。図7において、出力結果テーブル700には、クロックゲーティング回路CG1〜CGnごとの電力指標P1〜Pnが示されている。
これによれば、設計者は、各クロックゲーティング回路CG1〜CGnでの消費電力の改善可能性を検討することができる。具体的には、電力指標P1〜Pnと、クロックゲーティング回路CG1〜CGnの制御信号の論理の複雑さと、を照らし合わせて、実際にクロックゲーティングを適用するか否かを検討することができる。このとき、制御信号の論理が非常に複雑にもかかわらず電力指標(クロックゲーティング適用期間が短い)が低い場合には、クロックゲーティングを適用しないほうが消費電力を削減することができると判断することができる。
ところで、設計対象回路内のクロックゲーティング回路は、階層構造を持つ場合がある。たとえば、機能ブロック全体を停止させる上流のクロックゲーティング回路(グローバルクロックゲーティング)と、各レジスタ単位でデータの入力を制御する下流のクロックゲーティング回路(ローカルクロックゲーティング)とがある。
そこで、設計対象回路におけるクロックゲーティング回路の階層構造を解析し、階層構造ごとに各クロックゲーティング回路によるクロックゲーティングの適用期間を提示することとしてもよい。このとき、同一階層下の各ローカル間のレジスタのデータの入出力関係を解析し、その入出力関係に従ってクロックゲーティングの適用期間を提示することとしてもよい。
これは、クロックゲーティング回路の階層構造ごとに、データの入出力関係と、各クロックゲーティング回路によるクロックゲーティングの適用期間と、を照らし合わせることで、無駄にクロックゲーティングが適用されている期間(特に下流側のクロックゲーティング回路)を特定することを目的とする。
具体的には、たとえば、解析/作成部307は、設計対象回路のクロックツリー解析を実行することにより、クロックゲーティング回路の階層構造を解析する。さらに、階層構造内の同一階層下でのレジスタのデータの入出力関係を解析する。ここで、解析/作成部307による解析結果の具体例について説明する。
図8は、解析結果の具体例を示す説明図である。図8において、回路図800は、設計対象回路内でのクロックゲーティングの階層構造をあらわしている。具体的には、クロックゲーティング回路CG1は、レジスタ801〜804を含む機能ブロック全体に対するクロックの供給を停止させるグローバルクロックゲーティング(図8中、「GCG」と表記)である。
また、クロックゲーティング回路CG2〜CG4は、各レジスタ801〜803単位でデータの入力を制御するローカルクロックゲーティング(図8中、「LCG」と表記)である。ここで、GCG下の各LCG間(クロックゲーティング回路CG2〜CG4)の各レジスタ801〜803のデータの入出力関係は、レジスタ801→レジスタ802→レジスタ803である。
また、解析/作成部307は、上述した解析結果(回路図800)と測定回路500の測定結果とに基づいて、各クロックゲーティング回路CG1〜CGnによるクロックゲーティングの適用期間をあらわすグラフを作成する。ここで、解析/作成部307によって作成されるグラフの具体例について説明する。
図9は、グラフの具体例を示す説明図である。図9において、グラフ900には、クロックゲーティング回路CG2〜CG4ごとのクロックゲーティング適用期間(図9中矢印)が示されている。これらクロックゲーティング回路CG2〜CG4は、同一階層の回路である。また、データの入出力関係は、CG2→CG3→CG4(図8に示したレジスタ801→レジスタ802→レジスタ803)である。
このグラフ900によれば、最上流のクロックゲーティング回路CG2のクロックゲーティング適用期間を基準として、下流側のクロックゲーティング回路CG3,CG4のクロックゲーティング適用期間の可否を判断することができる。たとえば、最下流のクロックゲーティング回路CG4のクロックゲーティング適用期間のうち、期間X1,X2,X3(強調表示)におけるクロックゲーティングは停止可能であることがわかる。
また、算出部305は、シミュレーション期間と、クロックゲーティングを停止可能な期間の総和との比率を求めることにより、クロックゲーティング回路の電力指標を算出することとしてもよい。上述したクロックゲーティング回路CG4の例では、シミュレーション期間全体の期間長Tと、クロックゲーティングを停止可能な期間の総和(X1+X2+X3)との比率を求めることとなる。
具体的には、たとえば、下記式(2)を用いて、クロックゲーティング回路CGiの電力指標Piを求めることができる。ただし、クロックゲーティング回路CGiのクロックゲーティングを停止可能な期間の総和をXiとする。
Pi=Xi/T ・・・(2)
なお、上記式(2)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。また、詳細な説明は省略するが、クロックゲーティングを停止可能な期間Xiは、クロックゲーティング回路CGiを含む同一階層の各クロックゲーティング回路のクロックゲーティング適用期間(測定結果)から特定することができる。また、クロックゲーティング回路CG2〜CG4の電力指標P2〜P4を、各クロックゲーティング適用期間と関連付けてグラフ900内に示すこととしてもよい。
また、算出部305は、各検討箇所(ここでは、クロックゲーティング回路CG1〜CGn)の電力指標と、該検討箇所の見積もり消費電力とを掛け合わせることにより、検討箇所の回路構成を修正することで削減が見込まれる消費電力の概算値を算出することとしてもよい。
具体的には、たとえば、下記式(3)を用いて、クロックゲーティング回路CGiの概算値Eiを求めることができる。ただし、クロックゲーティング回路CGiの見積もり消費電力をWiとする。
Ei=Pi×Wi ・・・(3)
なお、各検証箇所の見積もり消費電力は、キーボード210やマウス211をユーザが操作することで入力することとしてもよく、また、外部のコンピュータ装置から取得することとしてもよい。さらに、設計支援装置において設計対象回路の消費電力を見積もるシミュレーションを実行することとしてもよい。また、上記式(3)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
また、出力部306は、算出部305によって算出されたクロックゲーティング回路CG1〜CGnごとの概算値E1〜Enを出力することとしてもよい。このとき、概算値E1〜Enが降順となるように、クロックゲーティング回路CG1〜CGnと概算値E1〜Enとを関連付けて出力することとしてもよい。
これにより、設計者は、回路構成を修正して動作を改善することで、削減が見込まれる消費電力の概算値を把握することができる。さらに、設計対象回路に要求される消費電力と、クロックゲーティング回路CG1〜CGnの概算値E1〜Enとを照らし合わせることで、どの箇所の回路構成を修正すれば、要求される消費電力を満たすことができるかを適切に判断することができる。
(設計支援装置の設計支援処理手順)
つぎに、実施の形態2にかかる設計支援処理手順について説明する。図10は、実施の形態2にかかる設計支援処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、入力部301により、設計対象回路に関する回路情報の入力を受け付けたか否かを判断する(ステップS1001)。
ここで、回路情報の入力を待って(ステップS1001:No)、入力された場合(ステップS1001:Yes)、検索部302により、入力された設計対象回路に関する回路情報に基づいて、設計対象回路の中からクロックゲーティング回路CG1〜CGnを検索する(ステップS1002)。
そして、挿入部303により、検索されたクロックゲーティング回路CG1〜CGnの制御信号の値が変化した時刻を測定する測定回路500を設計対象回路に挿入する(ステップS1003)。このあと、取得部304により、測定回路500が挿入された挿入後の設計対象回路のシミュレーションを実行することでシミュレーション期間中に測定された測定回路500の測定結果を取得する(ステップS1004)。
つぎに、算出部305により、取得された測定回路500の測定結果を用いて、クロックゲーティング回路CG1〜CGnによるクロックゲーティングの適用期間T1〜Tnを特定し(ステップS1005)、特定された適用期間T1〜Tnを上記式(1)に代入することで、クロックゲーティング回路CG1〜CGnごとの電力指標P1〜Pnを算出する(ステップS1006)。
最後に、出力部306により、クロックゲーティング回路CG1〜CGnごとの電力指標P1〜Pnを出力して(ステップS1007)、本フローチャートによる一連の処理を終了する。
つぎに、各クロックゲーティング回路CG1〜CGnのクロックゲーティングの適用期間をあらわすグラフを作成する解析/作成処理手順について説明する。図11は、実施の形態2にかかる解析/作成処理手順の一例を示すフローチャートである。
図11のフローチャートにおいて、まず、解析/作成部307により、設計対象回路のクロックツリー解析を実行して(ステップS1101)、クロックゲーティング回路CG1〜CGnの階層構造を解析するとともに、階層構造内の同一階層下でのレジスタのデータの入出力関係を解析する(ステップS1102)。なお、設計対象回路のクロックツリー解析は、図10に示したステップS1001において入力された回路情報を用いて実行される。
このあと、設計対象回路に挿入された測定回路500ごとの測定結果を用いて、各クロックゲーティング回路CG1〜CGnによるクロックゲーティングの適用期間を特定する(ステップS1103)。なお、測定回路500の測定結果は、図10に示したステップS1004において取得されたものを用いる。
そして、特定されたクロックゲーティングの適用期間と、ステップS1102において解析された解析結果とを用いて、クロックゲーティング回路CG1〜CGnごとのクロックゲーティングの適用期間をあらわすグラフを作成し(ステップS1104)、出力部306により、作成されたグラフを出力して(ステップS1105)、本フローチャートによる一連の処理を終了する。
以上説明した実施の形態2によれば、各クロックゲーティング回路CG1〜CGnの制御信号の値が変化した時刻を測定し、その測定結果から各クロックゲーティング回路CG1〜CGnでの電力的な無駄を判断するための電力指標を算出することができる。これにより、設計者は、クロックゲーティング回路CG1〜CGnの中から消費電力の改善可能性が高いクロックゲーティング回路CGiを特定することができる。
また、グラフ900のように、階層構造化されたクロックゲーティング回路CG1〜CGnの同一階層でのクロックゲーティング適用期間を、わかりやすい形でグラフィカルに表示することができる。これにより、設計者は、適切にクロックゲーティングがおこなわれているかを直感的に判断することができ、たとえば、無駄にクロックゲーティングが適用されている期間を容易に特定することができる。
(実施の形態3)
つぎに、設計支援装置の実施の形態3について説明する。実施の形態3では、クロックゲーティング回路CGiの制御信号の値が変化した時刻を測定する測定回路(以下、「第1の測定回路」という)とともに、クロックゲーティング適用対象となるレジスタに入出力されるデータ信号の値が変化していない期間中に、レジスタに入力されたクロック数を測定する第2の測定回路を設計対象回路に挿入する。なお、実施の形態1,2において説明した箇所と同一箇所については、同一符号を付して図示および説明を省略する。
ここで、第2の測定回路について説明する。図12は、レジスタ用の測定回路の一例を示す説明図(その1)である。図12において、測定回路1200は、レジスタRに入出力されるデータ信号の値が変化していない期間に、レジスタRに入力されたクロック数をカウンタAにより測定する第2の測定回路である。
ここで、レジスタRは、クロックゲーティング適用対象となる記憶素子である。また、論理ゲート1201では、レジスタRに入力されるデータ信号の値と、レジスタRに保持されている一クロック時刻前のデータ信号の値とを比較して、データ信号の値に変化がなかった場合に「1」となる。
このため、測定回路1200では、レジスタRに入力されるデータ信号の値に変化がなかった場合に、カウンタAにより、クロック数が「+1」カウントされる。これにより、レジスタRに入出力されるデータ信号の値が変化していない期間に、レジスタRに入力されたクロック数を測定することができる。
この測定回路1200は、シミュレーション期間中にレジスタRに入力されるクロック数のうち、有効に使われていないクロック数を特定することを目的として設計対象回路に挿入される。つまり、レジスタRへのクロック入力時に、入出力されるデータ信号の値が同じ場合には、そのクロックは無駄となるため、それを評価するために測定回路1200を挿入する。
また、図示は省略するが、測定回路1200では、レジスタRに入出力されるデータ信号の値に変化がなかった場合のシミュレーション時刻がメモリに書き込まれる。これにより、レジスタRに入出力されるデータ信号の値が同じ値となる期間を特定することができる。
算出部305は、シミュレーション期間と、第2の測定回路(たとえば、測定回路1200)の測定結果との比率を求めることにより、クロックゲーティング回路CG1〜CGnごとの電力指標P1〜Pnを算出することとしてもよい。
より具体的には、たとえば、下記式(4)を用いて、クロックゲーティング回路CGiの電力指標Piを求めることができる。ただし、シミュレーション期間の期間長をT、シミュレーション期間中に測定された第2の測定回路の測定結果をCiとする。
Pi=Ci/T ・・・(4)
上記式(4)を用いて求めた電力指標Piは、クロックゲーティング回路CGiによるクロックゲーティング適用対象となるレジスタRでのクロックの冗長動作率をあらわす指標である。この電力指標Piが高いほど電力的な無駄が多く、消費電力の改善可能性が高いことを意味している。一方、電力指標Piが低いほど電力的な無駄が少なく、消費電力の改善可能性が低いことを意味している。なお、上記式(4)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
また、出力部306は、クロックゲーティング回路CG1〜CGnの電力指標P1〜Pnと、クロックゲーティング適用対象となるレジスタとを関連付けて出力することとしてもよい。このとき、消費電力の改善可能性が高いレジスタを特定し易くするため、電力指標P1〜Pnを高い順にソートして出力することとしてもよい。
ここで、出力結果の具体例について説明する。なお、クロックゲーティング回路CGiによるクロックゲーティング適用対象となるレジスタを「レジスタRi」と表記する。図13は、出力結果の具体例を示す説明図(その2)である。図13において、出力結果1300には、レジスタR1〜Rnごとの電力指標P1〜Pnが示されている。
これによれば、設計者は、各レジスタR1〜Rnにおける消費電力の改善可能性を検討することができる。検討例としては、まず、レジスタR1〜Rnの電力指標P1〜Pnから消費電力の改善可能性が高いレジスタRiを特定する。このあと、クロックゲーティング回路CGiのクロックゲーティング適用期間と、レジスタRiに入出力されるデータ信号の値が変化していない期間とを照らし合わせて、さらにクロックゲーティングを適用すべきか否かを判断する。
また、算出部305は、クロックゲーティング回路CG1〜CGnの電力指標を用いて、設計対象回路内の機能ブロックごとの電力指標の平均値を算出することとしてもよい。具体的には、たとえば、設計対象回路に関する回路情報から各機能ブロックに属するクロックゲーティング回路を特定し、機能ブロックごとの電力指標の平均値を算出することができる。
この場合、出力部306は、たとえば、消費電力の改善可能性が高い機能ブロックを特定し易くするため、機能ブロックの電力指標の平均値(平均電力指標)を高い順にソートして出力することとしてもよい。ここで、出力結果の具体例について説明する。図14は、出力結果の具体例を示す説明図(その3)である。
図14において、出力結果1400には、設計対象回路内の機能ブロックB1〜B5ごとの平均電力指標AP1〜AP5が示されている。具体的には、各機能ブロックB1〜B5の平均電力指標AP1〜AP5が降順となるようにソートされて示されている。
ここで、平均電力指標が高い機能ブロックは消費電力の改善可能性が高い機能ブロックとなる。このため、設計者は、出力結果1400を参照して、平均電力指標が高い機能ブロックについて消費電力の削減検討を優先的におこなうことで、効率的な電力改善をおこなうことができる。
以上説明した実施の形態3によれば、クロックゲーティング適用対象となるレジスタR1〜Rnに入出力されるデータ信号の値が変化していない期間に、レジスタR1〜Rnに入力されたクロック数を測定し、その測定結果から各クロックゲーティング回路CG1〜CGnでの電力的な無駄を判断するための電力指標を算出することができる。
これにより、設計者は、複数のレジスタR1〜Rnの中から消費電力の改善可能性が高いレジスタRi(クロックの冗長動作率が高い)を特定することができる。そして、レジスタRiに対するより効果的なクロックゲーティングの適用期間を再検討することで、設計対象回路の低電力化を図ることができる。
(実施の形態4)
つぎに、設計支援装置の実施の形態4について説明する。実施の形態4では、第1の測定回路(たとえば、測定回路500)とともに、クロックゲーティング適用対象となるレジスタに対するクロックの供給が停止されている期間中に、レジスタに入力されるデータ信号の値が変化した変化回数を測定する第3の測定回路を設計対象回路に挿入する。なお、実施の形態1〜3において説明した箇所と同一箇所については、同一符号を付して図示および説明を省略する。
ここで、第3の測定回路について説明する。図15は、レジスタ用の測定回路の一例を示す説明図(その2)である。図15において、測定回路1500は、レジスタRに対するクロックの供給が停止されている期間に、レジスタRに入力されるデータ信号の値が変化した変化回数を測定する第3の測定回路である。
測定回路1500において、カウンタAは、レジスタRに入出力されるデータ信号の値が変化していない期間にレジスタRに入力されるクロック数を計数する。また、カウンタBは、レジスタRに入力されるデータ信号の変化回数(の1/2)を計数する。また、カウンタCは、レジスタRに入力されるクロックの変化回数(の1/2)を計数する。
これらカウンタA〜Cにより計数された計数結果を下記式(5)に代入することで、クロックゲーティング回路CGiによるクロックゲーティング適用対象となるレジスタRに対するクロックの供給が停止されている期間に、レジスタRに入力されるデータ信号の値が変化した変化回数Niを求めることができる。ただし、RA,RB,RCは、各カウンタA,B,Cの計数結果である。
Ni=(RB×2)−(RC×2)−RA ・・・(5)
また、算出部305は、シミュレーション期間の期間長Tと、上記変化回数Niとの比率を求めることにより、クロックゲーティング回路CGiの電力指標Piを算出することとしてもよい。より具体的には、たとえば、下記式(6)を用いて、クロックゲーティング回路CGiの電力指標Piを求めることができる。
Pi=Ni/T ・・・(6)
上記式(6)を用いて求めた電力指標Piは、検討箇所におけるクロックの冗長動作率をあらわす指標である。この電力指標Piが高いほど、クロック停止時にレジスタRに入力されるデータ信号の値が頻繁に変化したこととなる。つまり、レジスタRへのデータ入力の冗長性による電力的な無駄が多く、消費電力の改善可能性が高いことを意味している。なお、上記式(5)および(6)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
以上説明した実施の形態4によれば、クロックゲーティング適用対象となるレジスタR1〜Rnに対するクロックの供給が停止されている期間に、レジスタR1〜Rnに入力されるデータ信号の値が変化した変化回数を測定し、その測定結果から各クロックゲーティング回路CG1〜CGnでの電力的な無駄を判断するための電力指標を算出することができる。
これにより、設計者は、複数のレジスタR1〜Rnの中から消費電力の改善可能性が高いレジスタRiを特定することができる。そして、レジスタRiの前段のモジュールの動作を再検討(レジスタRiへのデータ入力の冗長性を排除)することにより、設計対象回路の低電力化を図ることができる。
(実施の形態5)
つぎに、設計支援装置の実施の形態5について説明する。実施の形態5では、第1の測定回路とともに、機能ブロック間のデータ転送がおこなわれた時刻および転送回数を測定する第4の測定回路を設計対象回路に挿入する。なお、実施の形態1〜4において説明した箇所と同一箇所については、同一符号を付して図示および説明を省略する。
第4の測定回路は、たとえば、機能ブロック間のデータ転送が検出された場合に、シミュレーション時刻をメモリに書き込むとともに、転送回数を「+1」カウントする回路である。ここでは、第4の測定回路の測定結果に基づいて、各機能ブロックが仕事をしている期間を特定する。以下、任意の機能ブロックを「機能ブロックBj」と表記し、機能ブロックBjの電力指標を「電力指標Pj」と表記する(ただし、j=1,2,…m)。
以下、算出部305によって機能ブロックBjの電力指標Pjを算出する具体的な処理内容について説明する。まず、設計対象回路に関する回路情報に定義されている機能ブロック間で受け渡されるデータ信号の入出力関係から、設計対象回路内の各機能ブロック間の依存関係を特定する。
このあと、第4の測定回路の測定結果と機能ブロック間の依存関係とを用いて、機能ブロックBjが仕事をしている期間を特定する。なお、機能ブロックが仕事をしている期間とは、データ信号が入力されてから対応するデータ信号が出力されるまでの期間である。さらに、第1の測定回路の測定結果から機能ブロックBjに対してクロックが供給されている期間を特定する。
そして、機能ブロックBjに対してクロックが供給されている期間と、機能ブロックBjが仕事をしている期間との比率を求めることにより、機能ブロックBjの電力指標Pjを算出する。具体的には、たとえば、下記式(7)を用いて、機能ブロックBjの電力指標Pjを求めることができる。ただし、機能ブロックBjに対してクロックが供給されている期間をTCjとし、機能ブロックBjが仕事をしている期間をTWjとする。
Pj=TCj/TWj ・・・(7)
この電力指標Pjが高いほど、機能ブロックBjが仕事をしている期間TWj以上にクロックが動作していることになり、電力的な無駄が多い、すなわち、消費電力の改善可能性が高いことを意味している。一方、電力指標Pjが低いほど電力的な無駄が少なく、消費電力の改善可能性が低いことを意味している。なお、上記式(7)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
また、機能ブロック間の依存関係と、各機能ブロックB1〜Bmが仕事をしている期間TW1〜TWmとから、機能ブロック間の動作・停止関係の整合性をチェックすることができる。このチェックは、設計支援装置において自動実行されてもよく、また、設計者がチェックすることとしてもよい。
具体的には、たとえば、依存関係の上流側の機能ブロックが停止しているにもかかわらず、下流側の機能ブロックが動作している場合は不整合となる。この場合、上流側の機能ブロックの動作が停止している間、下流側の機能ブロックの動作を停止させることができるため、下流側の機能ブロックが消費電力の削減を検討すべき箇所となる。
以上説明した実施の形態5によれば、機能ブロック間のデータ転送がおこなわれた時刻および転送回数を測定する測定回路を設計対象回路に挿入し、その測定結果から各機能ブロックB1〜Bmでの電力的な無駄を判断するための電力指標P1〜Pmを算出することができる。
これにより、設計者は、複数の機能ブロックB1〜Bmの中から消費電力の改善可能性が高い機能ブロックjを特定することができる。また、機能ブロック間の依存関係と、各機能ブロックB1〜Bmが仕事をしている期間TW1〜TWmとから、機能ブロック間の動作・停止関係の整合性をチェックすることができる。
(実施の形態6)
つぎに、設計支援装置の実施の形態6について説明する。実施の形態6では、電力的な削減の可能性を検討すべき検討箇所として、設計対象回路内のメモリを例に挙げて説明する。なお、実施の形態1〜5において説明した箇所と同一箇所については、同一符号を付して図示および説明を省略する。
ここでは、メモリのアクセスに無駄がないか否かを検討する。アクセスが無駄となる具体例としては、たとえば、同じアドレスに連続して同じデータを書き込むことがある。これは、最後に書き込まれたデータ以外は使われないため無駄なアクセスとなる。また、同じアドレスを連続して読み出すことがある。これは、1度読み出したアドレスを使い回せばよいため、最初の読み出し以外は無駄となる。
また、アドレスの使用範囲に局所性がある場合にもアクセスの無駄が発生する。そこで、このようなアクセスの無駄を検討するための測定回路を設計対象回路に挿入することで、設計対象回路の中から消費電力の改善可能性が高い箇所を絞り込む。
まず、検索部302は、設計対象回路の中からメモリを検索する。具体的には、たとえば、論理設計において規定されたメモリの固有名を用いて、設計対象回路の中からメモリを検索することができる。このとき、メモリの入出力端子IDを検索することとしてもよい。ここで、リスト化された検索結果について説明する。
図16は、検索結果リストの具体例を示す説明図(その2)である。図16において、検索結果リスト1600には、メモリM1〜Mpごとの検索結果1600−1〜1600−pがリスト化されて記憶されている。具体的には、各検索結果1600−1〜1600−pは、メモリIDおよび端子IDを有している。
メモリIDは、メモリを識別する識別子(たとえば、メモリの固有名)である。端子IDは、各メモリの入出力端子を識別する識別子(たとえば、端子名)である。これによれば、メモリMk(k=1,2,…,p)の特定の信号を測定する測定回路の挿入位置となる端子TMkを認識することができる。メモリMkの特定の信号には、たとえば、クロック信号、イネーブル信号、アドレス信号、データ信号、リード/ライト信号などがある。
また、挿入部303は、検索結果リスト1600から特定される挿入位置に、メモリMkの特定の信号を測定する測定回路を挿入する。ここで、メモリ用の測定回路について説明する。まず、同じアドレスに同じデータを連続書き込みした回数を測定する測定回路について説明する。
(メモリ用の測定回路1)
図17は、メモリ用の測定回路の一例を示す回路図(その1)である。図17において、測定回路1700は、メモリMkのアドレス信号、データ信号、リード/ライト信号およびイネーブル信号を測定する回路である。なお、ここでは簡単のため、アドレス信号、データ信号、リード/ライト信号およびイネーブル信号のビット数を1ビットとして説明する。
ここで、レジスタ1701は、一クロック時刻前のアドレス信号の値を保持する記憶素子である。また、論理ゲート1710では、アドレス信号の値と、レジスタ1701に保持されている一クロック時刻前のアドレス信号の値とを比較して、その値が同一の場合に「1」となる。
また、レジスタ1702は、一クロック時刻前のデータ信号の値を保持する記憶素子である。また、論理ゲート1720では、データ信号の値と、レジスタ1702に保持されている一クロック時刻前のデータ信号の値とを比較して、その値が同一の場合に「1」となる。
また、レジスタ1703は、一クロック時刻前のリード/ライト信号の値を保持する記憶素子である。また、論理ゲート1730では、リード/ライト信号の値と、レジスタ1703に保持されている一クロック時刻前のリード/ライト信号の値とを比較して、その値が同一の場合に「1」となる。
また、レジスタ1704は、一クロック時刻前のイネーブル信号の値を保持する記憶素子である。また、論理ゲート1740では、イネーブル信号の値と、レジスタ1704に保持されている一クロック時刻前のイネーブル信号の値とを比較して、その値がともに「1」の場合に「1」となる。
また、論理ゲート1750では、論理ゲート1710,1720,1730,1740から出力された値がすべて「1」の場合に「1」となる。また、レジスタ1705は、同じアドレスに同じデータを連続書き込みした回数Fを保持する記憶素子である。また、セレクタ1760では、レジスタ1705からの2つの入力「F,F+1」から、1つの入力「F」or「F+1」を選択して出力する。
具体的には、セレクタ1760では、論理ゲート1750から出力された値が「1」であった場合に、「F+1」を選択して、レジスタ1705に出力する。以上のことから、測定回路1700では、同じアドレスに同じデータを連続書き込みした場合に、その回数Fがレジスタ1705に書き込まれることとなる。なお、図示は省略するが、メモリMkに対する総アクセス回数を測定するための測定回路が設計対象回路に挿入されていることとする。
ここで、測定回路1700の測定結果について説明する。図18は、測定結果の具体例を示す説明図(その2)である。図18において、測定結果テーブル1800には、メモリM1〜Mpごとの測定結果1800−1〜1800−pが記憶されている。具体的には、測定結果1800−1〜1800−pは、メモリM1〜Mpごとに、測定回路1700の測定結果および総アクセス回数を有している。
測定結果F1〜Fpは、各メモリM1〜Mpの同じアドレスに同じデータを連続書き込みした回数である。総アクセス回数AF1〜AFpは、各メモリM1〜Mpにアクセスした総回数である。これにより、メモリMkの同じアドレスに同じデータを連続書き込みした回数Fkを特定することができる。この回数Fkは、メモリMkに対しておこなわれた無駄なアクセスの回数である。
また、算出部305は、メモリM1〜Mpに対する総アクセス回数と、挿入部303によって挿入された測定回路ごとの測定結果との比率を求めることにより、メモリM1〜Mpごとの電力指標を算出する。具体的には、たとえば、下記式(8)を用いて、メモリMkの電力指標Pkを算出することができる。
Pk=Fk/AFk ・・・(8)
ここでは、この電力指標Pkが高いほど、メモリMkに対する無駄なアクセスが多いことになり、電力的な無駄が多い、すなわち、消費電力の改善可能性が高いことを意味している。一方、電力指標Pkが低いほど電力的な無駄が少なく、消費電力の改善可能性が低いことを意味している。なお、上記式(8)は、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されている。
(メモリ用の測定回路2)
つぎに、同じアドレスを連続読み出しした回数を測定する測定回路について説明する。図19は、メモリ用の測定回路の一例を示す回路図(その2)である。図19において、測定回路1900は、メモリMkのアドレス信号、リード/ライト信号およびイネーブル信号を測定する回路である。
ここで、レジスタ1901は、一クロック時刻前のアドレス信号の値を保持する記憶素子である。また、論理ゲート1910では、アドレス信号の値と、レジスタ1901に保持されている一クロック時刻前のアドレス信号の値とを比較して、その値が同一の場合に「1」となる。
また、レジスタ1902は、一クロック時刻前のリード/ライト信号の値を保持する記憶素子である。また、論理ゲート1920では、リード/ライト信号の値と、レジスタ1902に保持されている一クロック時刻前のリード/ライト信号の値とを比較して、その値がともに「1」の場合に「1」となる。
また、レジスタ1903は、一クロック時刻前のイネーブル信号の値を保持する記憶素子である。また、論理ゲート1930では、イネーブル信号の値と、レジスタ1903に保持されている一クロック時刻前のイネーブル信号の値とを比較して、その値がともに「1」の場合に「1」となる。
また、論理ゲート1940では、論理ゲート1910,1920,1930から出力された値がすべて「1」であった場合に「1」となる。また、レジスタ1904は、同じアドレスを連続読み出しした回数Fを保持する記憶素子である。また、セレクタ1950では、レジスタ1904からの2つの入力「F,F+1」から、1つの入力「F」or「F+1」を選択して出力する。
具体的には、セレクタ1950では、論理ゲート1940から出力された値が「1」であった場合に、「F+1」を選択して、レジスタ1904に出力する。以上のことから、測定回路1900では、同じアドレスを連続読み出しした場合に、その回数Fがレジスタ1904に書き込まれることとなる。なお、この測定回路1900の測定結果からメモリMkの電力指標Pkを算出する場合も、上記同様に上記式(8)を用いて求めることができる。
(メモリ用の測定回路3)
つぎに、メモリMkのアドレスごとのリード/ライト回数を測定する測定回路について説明する。図20は、メモリ用の測定回路の一例を示す回路図(その3)である。図20において、測定回路2000は、メモリMkのイネーブル信号を測定する回路である。なお、この測定回路2000は、メモリMkのアドレスごとに用意される。
ここで、レジスタ2001は、一クロック時刻前のイネーブル信号の値を保持する記憶素子である。また、論理ゲート2010では、イネーブル信号の値と、レジスタ2001に保持されている一クロック時刻前のイネーブル信号の値とを比較して、その値がともに「1」の場合に「1」となる。
また、メモリ2002は、あるアドレスのリード/ライト回数Fを保持する記憶素子である。また、セレクタ2020では、メモリ2002からの2つの入力「F,F+1」から、1つの入力「F」or「F+1」を選択して出力する。
具体的には、セレクタ2020では、論理ゲート2010から出力された値が「1」であった場合に、「F+1」を選択して、メモリ2002に出力する。以上のことから、測定回路2000では、あるアドレスへのリード/ライトがあった場合に、その回数Fがメモリ2002に書き込まれることとなる。
ここで、この測定回路2000の測定結果について説明する。図21は、測定結果の具体例を示す説明図(その3)である。図21において、測定結果テーブル2100には、メモリM1のアドレスA11〜A14ごとの測定結果2100−1〜2100−4が記憶されている。
具体的には、測定結果2100−1〜2100−4は、アドレスA11〜A14ごとのリード/ライト回数を有している。これによれば、アドレスA11,A12はアドレスA13,A14に比べて、頻繁に使われており、アドレスA14は全く使われていないことを把握することができる。
このことから、たとえば、アドレスA14は不要のため削除し、アドレスA13はリード/ライト回数が少ないためレジスタ利用に変更するなどの対策をおこなうことにより、低電力化を図ることができる。なお、上述した測定回路1700,1900,2000のうち、どの測定回路を設計対象回路に挿入するのかは、予め任意に設定されていることとする。
(設計支援装置の設計支援処理手順)
つぎに、実施の形態6にかかる設計支援処理手順について説明する。ここでは、測定回路として同じアドレスに同じデータを連続書き込みした回数を測定する測定回路1700を挿入する場合を例に挙げて説明する。
図22は、実施の形態6にかかる設計支援処理手順の一例を示すフローチャートである。図22のフローチャートにおいて、まず、入力部301により、設計対象回路に関する回路情報の入力を受け付けたか否かを判断する(ステップS2201)。
ここで、回路情報の入力を待って(ステップS2201:No)、入力された場合(ステップS2201:Yes)、検索部302により、入力された設計対象回路に関する回路情報に基づいて、設計対象回路の中からメモリM1〜Mpを検索する(ステップS2202)。
そして、挿入部303により、検索されたメモリM1〜Mpのアドレス信号、データ信号、リード/ライト信号およびイネーブル信号を測定する測定回路1700を設計対象回路に挿入する(ステップS2203)。このあと、取得部304により、測定回路1700が挿入された挿入後の設計対象回路のシミュレーションを実行することにより、シミュレーション期間中に測定された測定回路1700の測定結果を取得する(ステップS2204)。
つぎに、算出部305により、取得された測定回路1700ごとの測定結果を上記式(8)に代入することで、メモリM1〜Mpごとの電力指標P1〜Ppを算出し(ステップS2205)、最後に、出力部306により、メモリM1〜Mpごとの電力指標P1〜Ppを出力して(ステップS2206)、本フローチャートによる一連の処理を終了する。
以上説明した実施の形態6によれば、メモリM1〜Mpでの特定の信号の変化を測定し、その測定結果から各メモリM1〜Mpでの電力的な無駄を判断するための電力指標P1〜Ppを算出することができる。これにより、複数のメモリM1〜Mpの中から消費電力の改善可能性が高いメモリMkを特定することができる。
具体的には、同じアドレスに連続して同じデータを書き込む無駄なアクセスが多いメモリMkや、同じアドレスを連続して読み出す無駄なアクセスが多いメモリMkを特定することができる。また、アドレスの使用範囲に局所性があるメモリMkも特定することができる。そして、このようなメモリMkについて消費電力の削減検討を優先的におこなうことで、効率的な電力改善をおこなうことができる。
以上のことから、本実施の形態にかかる設計支援プログラム、設計支援装置、および設計支援方法によれば、設計対象回路の中から消費電力の改善可能性が高い箇所を絞り込むことを可能にすることにより、電力改善作業にかかる作業負担の軽減化および作業時間の短縮化を図ることができる。
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
また、本実施の形態で説明した設計支援装置101は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した設計支援装置101の機能(入力部301〜解析/作成部307)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、設計支援装置101を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータを、
設計対象回路の中から消費電力の削減対象候補となる検討箇所を検索する検索手段、
前記検索手段によって検索された前記検討箇所の特定の信号を測定する測定回路を前記設計対象回路に挿入する挿入手段、
前記挿入手段によって前記測定回路が挿入された挿入後の前記設計対象回路のシミュレーションを実行することにより、シミュレーション期間中に測定された前記測定回路の測定結果を取得する取得手段、
前記取得手段によって取得された前記測定回路の測定結果に基づいて、前記検討箇所の消費電力の改善可能性をあらわす電力指標を算出する算出手段、
前記算出手段によって算出された前記検討箇所の電力指標を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
(付記2)前記算出手段は、
前記検討箇所の消費電力の改善可能性をあらわす電力指標と、前記検討箇所の見積もり消費電力とを用いて、前記検討箇所の回路構成を修正することで削減が見込まれる消費電力の概算値を算出することを特徴とする付記1に記載の設計支援プログラム。
(付記3)前記検索手段は、
前記設計対象回路の中からクロックゲーティング回路を検索し、
前記挿入手段は、
前記検索手段によって検索された前記クロックゲーティング回路の制御信号の値が変化した時刻を測定する測定回路を前記設計対象回路に挿入し、
前記算出手段は、
前記シミュレーション期間と、前記測定回路の測定結果から特定されるクロックゲーティングの適用期間との比率を求めることにより、前記クロックゲーティング回路の電力指標を算出することを特徴とする付記1〜3のいずれか一つに記載の設計支援プログラム。
(付記4)前記検索手段は、
前記設計対象回路の中からクロックゲーティング回路を検索し、
前記挿入手段は、
前記検索手段によって検索された前記クロックゲーティング回路によるクロックゲーティングの適用対象となるレジスタに入出力されるデータ信号の値が変化していない期間に、前記レジスタに入力されたクロック数を測定する測定回路を前記設計対象回路に挿入し、
前記算出手段は、
前記シミュレーション期間と、前記測定回路の測定結果との比率を求めることにより、前記クロックゲーティング回路の電力指標を算出することを特徴とする付記1〜3のいずれか一つに記載の設計支援プログラム。
(付記5)前記検索手段は、
前記設計対象回路の中からクロックゲーティング回路を検索し、
前記挿入手段は、
前記検索手段によって検索された前記クロックゲーティング回路によるクロックゲーティングの適用対象となるレジスタに対するクロックの供給が停止されている期間に、前記レジスタに入力されるデータ信号の値が変化した変化回数を測定するための測定回路を前記設計対象回路に挿入し、
前記算出手段は、
前記シミュレーション期間と、前記測定回路の測定結果から特定される前記変化回数との比率を求めることにより、前記クロックゲーティング回路の電力指標を算出することを特徴とする付記1または2に記載の設計支援プログラム。
(付記6)前記検索手段は、
前記設計対象回路の中からメモリを検索し、
前記挿入手段は、
前記検索手段によって検索された前記メモリに入力される特定の信号を測定する測定回路を前記設計対象回路に挿入し、
前記算出手段は、
前記測定回路の測定結果に基づいて、前記メモリの電力指標を算出することを特徴とする付記1〜5のいずれか一つに記載の設計支援プログラム。
(付記7)前記挿入手段は、
前記検索手段によって検索された前記メモリ内の同一アドレスに同一データを連続書き込みした回数を測定する測定回路を挿入し、
前記算出手段は、
前記シミュレーション期間中の前記メモリに対する総アクセス数と、前記測定回路の測定結果との比率を求めることにより、前記メモリの電力指標を算出することを特徴とする付記6に記載の設計支援プログラム。
(付記8)前記挿入手段は、
前記検索手段によって検索された前記メモリ内の同一アドレスを連続読み出しした回数を測定する測定回路を挿入し、
前記算出手段は、
前記シミュレーション期間中の前記メモリに対する総アクセス数と、前記測定回路の測定結果との比率を求めることにより、前記メモリの電力指標を算出することを特徴とする付記6または7に記載の設計支援プログラム。
(付記9)設計対象回路の中から消費電力の削減対象候補となる検討箇所を検索する検索手段と、
前記検索手段によって検索された前記検討箇所の特定の信号の値を測定する測定回路を前記設計対象回路に挿入する挿入手段と、
前記挿入手段によって前記測定回路が挿入された挿入後の前記設計対象回路のシミュレーションを実行することにより、シミュレーション期間中に測定された前記測定回路の測定結果を取得する取得手段と、
前記取得手段によって取得された前記測定回路の測定結果に基づいて、前記検討箇所の消費電力の改善可能性をあらわす電力指標を算出する算出手段と、
前記算出手段によって算出された前記検討箇所の電力指標を出力する出力手段と、
を備えることを特徴とする設計支援装置。
(付記10)制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、設計対象回路の中から消費電力の削減対象候補となる検討箇所を検索する検索工程と、
前記制御手段により、前記検索工程によって検索された前記検討箇所の特定の信号の値を測定する測定回路を前記設計対象回路に挿入する挿入工程と、
前記制御手段により、前記挿入工程によって前記測定回路が挿入された挿入後の前記設計対象回路のシミュレーションを実行することにより、シミュレーション期間中に測定された前記測定回路の測定結果を取得する取得工程と、
前記制御手段により、前記取得工程によって取得された前記測定回路の測定結果に基づいて、前記検討箇所の消費電力の改善可能性をあらわす電力指標を算出する算出工程と、
前記制御手段により、前記算出工程によって算出された前記検討箇所の電力指標を出力する出力工程と、
を実行することを特徴とする設計支援方法。