(57)【特許請求の範囲】
【請求項１】
設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のクロックサイクルごとのデータ量と、前記モジュールのクロックサイクルごとの消費電力および前記データ量に基づく前記モジュールの消費電力の改善可能性をあらわす電力指標と、を記憶するテーブルにアクセス可能なコンピュータを、
前記設計対象回路の中から任意のモジュールを選択する選択手段、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出手段、
前記抽出手段によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出手段、
前記検出手段によって検出された期間を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項２】
前記コンピュータを、
前記設計対象回路と、前記検出手段によって検出された期間継続して前記選択手段によって選択されたモジュールへのクロックの供給を停止する制御回路が挿入された前記設計対象回路と、に同一のデータ信号を与えた場合のシミュレーション結果を比較する比較手段として機能させ、
前記出力手段は、
前記比較手段によって比較された比較結果を出力することを特徴とする請求項１に記載の設計支援プログラム。
【請求項３】
前記コンピュータを、
前記比較手段によって比較された比較結果に基づいて、前記設計対象回路に前記制御回路を挿入する挿入手段として機能させ、
前記出力手段は、
前記挿入手段によって前記制御回路が挿入された挿入後の設計対象回路を出力することを特徴とする請求項２に記載の設計支援プログラム。
【請求項４】
前記コンピュータを、
前記比較手段によって比較された比較結果に基づいて、前記制御回路の挿入前後において検査対象に指定されたデータ信号の値が一致するか否かを判定する判定手段として機能させ、
前記出力手段は、
前記判定手段によって判定された判定結果を出力することを特徴とする請求項３に記載の設計支援プログラム。
【請求項５】
前記挿入手段は、
前記判定手段によって前記検査対象に指定されたデータ信号の値が一致すると判定された場合、前記設計対象回路に前記制御回路を挿入することを特徴とする請求項４に記載の設計支援プログラム。
【請求項６】
前記テーブルは、
さらに、前記モジュールごとに見積もられた当該モジュールの時系列の消費電力値を記憶しており、
前記コンピュータを、
前記設計対象回路に前記制御回路を挿入することで改善される消費電力値を算出する算出手段として機能させ、
前記抽出手段は、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関する消費電力値を抽出し、
前記算出手段は、
前記抽出手段によって抽出された消費電力値に基づいて、前記検出手段によって検出された期間中に消費された前記モジュールの消費電力値を累積することにより、前記制御回路を挿入することで改善される消費電力値を算出し、
前記出力手段は、
前記算出手段によって算出された消費電力値を出力することを特徴とする請求項１〜５のいずれか一つに記載の設計支援プログラム。
【請求項７】
設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のクロックサイクルごとのデータ量と、前記モジュールのクロックサイクルごとの消費電力および前記データ量に基づく前記モジュールの消費電力の改善可能性をあらわす電力指標と、を記憶するテーブルにアクセス可能な設計支援装置であって、
前記設計対象回路の中から任意のモジュールを選択する選択手段と、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出手段と、
前記抽出手段によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出手段と、
前記検出手段によって検出された期間を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項８】
制御手段および記憶手段を備え、設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のクロックサイクルごとのデータ量と、前記モジュールのクロックサイクルごとの消費電力および前記データ量に基づく前記モジュールの消費電力の改善可能性をあらわす電力指標と、を記憶するテーブルにアクセス可能なコンピュータが、
前記制御手段により、前記設計対象回路の中から任意のモジュールを選択する選択工程と、
前記制御手段により、前記テーブルにアクセスして、前記選択工程によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出工程と、
前記制御手段により、前記抽出工程によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出工程と、
前記制御手段により、前記検出工程によって検出された期間を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の低電力化を支援する設計支援プログラム、設計支援装置、および設計支援方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩの高集積化、大規模化、および駆動の高速化により消費電力が増大している。この結果、ＬＳＩが発生する熱が原因となる性能劣化や短寿命化が問題になっている。これらの問題を解決するためには、ＬＳＩの設計段階において消費電力を正確に見積もり、回路変更などの対策をおこなうことで消費電力を削減する必要がある。
【０００３】
ＬＳＩの低電力化を図る技術として、クロック・ゲーティングにより消費電力を削減する技術が実用化されている。クロック・ゲーティングとは、回路全体の動作に影響を与えないモジュールへのクロックの供給を停止することにより、回路全体の消費電力を削減する技術である。
【０００４】
従来において、ＬＳＩの動作を解析することで、クロック・ゲーティングを自動適用する設計ツールが提供されている。また、ハードウェア記述からステートマシンを構成するレジスタおよびステートマシンがアイドル状態以外のときのみ動作するレジスタを検出し、そのレジスタにゲーテッドクロックを供給するゲーテッドクロック供給回路を自動生成する従来技術がある。
【０００５】
【特許文献１】特開２００３−３３０９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した設計ツールを用いてクロック・ゲーティングを適用する従来技術によれば、ＬＳＩの動作を詳細に解析してクロック・ゲーティングの適用の可否を検証するため、回路規模が大きくなると、それに応じて処理時間および処理負荷が膨大なものとなってしまい、設計期間の長期化を招くという問題があった。
【０００７】
また、ステートマシンがアイドル状態以外のときのみ動作するレジスタにゲーテッドクロックを供給する回路を自動生成する従来技術によれば、設計者がＬＳＩの仕様書などを確認して、アイドル状態を定義する面倒な作業が必要となるという問題があった。さらに、電力改善をおこなう作業者が設計者と異なる場合には、仕様書からアイドル状態を定義するのは非常に困難な作業となるため、電力改善にかかる作業負担および作業時間が増大するという問題があった。
【０００８】
この発明は、上述した従来技術による問題点を解消するため、モジュールの消費電力の改善可能性をあらわす電力指標を用いて、クロック・ゲーティングの適用期間を絞り込むことにより、効率的かつ効果的な電力改善を可能とし、設計期間の短縮化を図ることを目的とする。
【課題を解決するための手段】
【０００９】
開示する技術は、設計対象回路の中から任意のモジュールを選択し、前記設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のデータ量と、前記モジュールの消費電力の改善可能性をあらわす前記データ量に応じた電力指標と、を記憶するテーブルにアクセスして、選択されたモジュールに関するデータ量と電力指標とを抽出し、抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出し、検出された期間を出力する。
【発明の効果】
【００１０】
この開示技術によれば、モジュールの消費電力の改善可能性をあらわす電力指標を用いて、クロック・ゲーティングの適用期間を絞り込むことにより、効率的かつ効果的な電力改善を可能とし、設計期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、この設計支援プログラム、設計支援装置、および設計支援方法の好適な実施の形態を詳細に説明する。この設計支援プログラム、設計支援装置、および設計支援方法では、消費電力の改善可能性をあらわす電力指標を用いて、設計対象回路内のモジュールにクロック・ゲーティングを適用する期間を自動検出することにより、電力改善作業にかかる作業負担および作業時間を軽減させる。
【００１２】
（本実施の形態の概要）
まず、本実施の形態の概要について説明する。図１は、本実施の形態の概要を示す説明図である。図１において、まず、設計対象回路の回路情報を用いて、設計対象回路の動作を検証するシミュレーションを実行する。そして、設計対象回路のシミュレーション結果（以下、「第１のシミュレーション結果」という）から、設計対象回路内の各モジュールの消費電力をクロックサイクルごとに見積もる。
【００１３】
さらに、第１のシミュレーション結果と、モジュール間の通信に関するインターフェース情報とから、モジュールごとに、モジュールから送信され送信先のモジュールによって取り込まれたデータ信号のデータ量（以下、「有効データ量」という）をクロックサイクルごとに算出する。このあと、モジュールの消費電力の見積もり結果と有効データ量とから、各モジュールのクロックサイクルごとの電力指標を算出する。
【００１４】
ここで、電力指標とは、消費電力の改善可能性をあらわす指標である。ここでは、電力指標が大きいほど電力的な無駄が多く、消費電力の改善可能性が高いことを意味する。一方、電力指標が小さいほど電力的な無駄が少なく、消費電力の改善可能性が低いことを意味する。各モジュールのクロックサイクルごとの有効データ量および電力指標は、時系列テーブルＤＢ（データベース）に記憶される。
【００１５】
つぎに、設計対象回路の中から任意のモジュールを選択する。そして、時系列テーブルＤＢにアクセスして、選択されたモジュール（以下、「対象モジュール」という）のクロックサイクルごとの有効データ量と電力指標とを抽出し、有効データ量が「０」の期間でかつ消費電力の改善可能性が高い期間を特定する。任意のモジュールの選択は、たとえば、未選択のモジュールがなくなるまで繰り返しおこなわれる。
【００１６】
このあと、特定された期間継続して対象モジュールへのクロックの供給を停止する制御回路が挿入された設計対象回路の回路情報を生成する。そして、生成された回路情報を用いて、制御回路が挿入された挿入後の設計対象回路の動作を検証するシミュレーションを実行する。
【００１７】
つぎに、制御回路が挿入された挿入後の設計対象回路のシミュレーション結果（以下、「第２のシミュレーション結果」という）と、第１のシミュレーション結果との一致判定をおこなう。ここで、第１および第２のシミュレーション結果が一致する場合、対象モジュールをクロック・ゲーティングの適用対象に決定する。
【００１８】
このとき、対象モジュールにクロック・ゲーティングを適用する期間は、有効データ量が「０」の期間でかつ消費電力の改善可能性が高い期間となる。一方、第１および第２のシミュレーション結果が一致しない場合には、対象モジュールをクロック・ゲーティングの適用対象から除外する。
【００１９】
これにより、クロック・ゲーティングを適用可能なモジュールおよび該モジュールへのクロックの供給を停止する期間を特定することができる。また、クロック・ゲーティングの適用期間が消費電力の改善可能性が高い期間となるため、回路全体の消費電力を効果的に削減することができる。
【００２０】
（有効データ量および電力指標）
ここで、有効データ量および電力指標について説明する。一般に、設計対象回路内のモジュールで消費される電力には、他のモジュールとの通信に費やされる消費電力と、クロック・ゲーティング漏れや不必要な内部通信（ローカルメモリ、下位モジュール間通信など）に費やされる消費電力と、がある。
【００２１】
これら各モジュールの消費電力のうち、クロック・ゲーティング漏れや不必要な内部通信に費やされる消費電力を削減することで、回路全体の低電力化を図ることができる。また、モジュールの全消費電力に対する、クロック・ゲーティング漏れや不必要な内部通信に費やされる無駄な消費電力が占める割合が大きいほど、電力的に効率の悪いモジュールとなる。
【００２２】
換言すれば、全消費電力に対する、他のモジュールとの通信に費やされる消費電力が占める割合が大きいほど、電力的に効率のよいモジュールとなる。ここで、他のモジュールとの通信に費やされる消費電力は、受け渡されるデータ信号の有効データ量に比例して大きくなる。
【００２３】
したがって、送信元のモジュールの消費電力に見合った有効データ量のデータ信号がモジュール間で受け渡されているかどうかで、送信元のモジュールが、電力的に効率のよいモジュールなのか、あるいは、悪いモジュールなのかを判断することができる。また、電力改善をおこなう場合、電力的に効率の悪いモジュールを改善対象とすることで、高い改善効果が期待できる。
【００２４】
有効データ量は、上述したように設計対象回路のシミュレーション結果（上記第１のシミュレーション結果）と、設計対象回路内のモジュールインターフェースごとに、モジュール間のデータ信号の受け渡しを定義するインターフェース情報と、から求めることができる。なお、有効データ量の算出手法の具体的な説明は後述する。
【００２５】
また、電力指標は、各モジュールのクロックサイクルごとの消費電力と、クロックサイクルごとの有効データ量と、から求めることができる。具体的には、たとえば、各モジュールのクロックサイクルごとの消費電力をクロックサイクルごとの有効データ量で除算することで、各モジュールのクロックサイクルごとの電力指標を求めることができる。
【００２６】
この場合、電力指標が大きいほど消費電力の改善可能性が高く、電力指標が小さいほど消費電力の改善可能性が低いこととなる。すなわち、電力指標が大きいモジュールを低電力化の改善対象とすることで、高い改善効果が期待できる。
【００２７】
そこで、本実施の形態では、まず、消費電力の改善可能性をあらわす電力指標を用いて高い改善効果が期待されるクロック・ゲーティングの適用期間を絞り込む。そして、絞り込まれた期間継続して対象モジュールへのクロックの供給を停止した場合の設計対象回路の動作を確認することで、クロック・ゲーティングの適用の可否を判断する。
【００２８】
なお、電力指標の算出手法は上述したものに限らない。たとえば、クロックサイクルごとに有効データ量を消費電力で除算することで、クロックサイクルごとの電力指標を算出することとしてもよい。この場合、電力指標が大きいほど電力的な無駄が少ないことを意味し、電力指標が小さいほど電力的な無駄が多いことを意味する。
【００２９】
（時系列テーブルの記憶内容）
つぎに、図１に示した時系列テーブルＤＢの記憶内容について説明する。図２は、時系列テーブルＤＢの記憶内容を示す説明図である。図２において、時系列テーブルＤＢ２００には、設計対象回路内のモジュールＭ１〜Ｍｎごとに、モジュールＭ１〜Ｍｎの有効データ量と電力指標との時間変化をあらわす時系列テーブルＴ１〜Ｔｎが記憶されている。
【００３０】
具体的には、時系列テーブルＴ１〜Ｔｎには、設計対象回路内のモジュールＭ１〜Ｍｎごとに、シミュレーションの各時刻における有効データ量と、消費電力と、電力指標と、が記憶されている。なお、時刻は、シミュレーションにおける時刻（たとえば、クロックサイクル）をあらわす変数であり、現実の時刻とは異なる。
【００３１】
ここで、モジュールＭｉを例に挙げて、時系列テーブルＴｉの具体的な記憶内容について説明する。図３は、時系列テーブルの一例を示す説明図である。図３において、時系列テーブルＴｉには、各時刻ｔ1〜ｔ12におけるモジュールＭｉの有効データ量と、消費電力と、電力指標と、が記憶されている。
【００３２】
なお、時刻ｔj（ｊ＝１，２，…１２）は、「ｔj以上でかつｔj+1未満」の時刻をあらわしている。ここで、ｔ2を例に挙げると、モジュールＭｉの有効データ量は１００［ｂｉｔ］、消費電力は１０１０［μＷ］、電力指標は１０［μＷ／ｂｉｔ］である。
【００３３】
（設計支援装置のハードウェア構成）
つぎに、本実施の形態にかかる設計支援装置のハードウェア構成について説明する。図４は、設計支援装置のハードウェア構成を示すブロック図である。図４において、設計支援装置４００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５と、光ディスクドライブ４０６と、光ディスク４０７と、ディスプレイ４０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０９と、キーボード４１０と、マウス４１１と、スキャナ４１２と、プリンタ４１３と、を備えている。また、各構成部はバス４２０によってそれぞれ接続されている。
【００３４】
ここで、ＣＰＵ４０１は、設計支援装置４００の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータのリード／ライトを制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。
【００３５】
光ディスクドライブ４０６は、ＣＰＵ４０１の制御にしたがって光ディスク４０７に対するデータのリード／ライトを制御する。光ディスク４０７は、光ディスクドライブ４０６の制御で書き込まれたデータを記憶したり、光ディスク４０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３６】
ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３７】
インターフェース（以下、「Ｉ／Ｆ」と略する。）４０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１４に接続され、このネットワーク４１４を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク４１４と内部のインターフェースを司り、外部の装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３８】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３９】
スキャナ４１２は、画像を光学的に読み取り、設計支援装置４００内に画像データを取り込む。なお、スキャナ４１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ４１３は、画像データや文書データを印刷する。プリンタ４１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４０】
（設計支援装置の機能的構成）
つぎに、設計支援装置４００の機能的構成について説明する。図５は、設計支援装置の機能的構成を示すブロック図である。図５において、設計支援装置４００は、取得部５０１と、選択部５０２と、抽出部５０３と、検出部５０４と、出力部５０５と、比較部５０６と、判定部５０７と、挿入部５０８と、算出部５０９と、判断部５１０と、を含む構成である。
【００４１】
この制御部となる機能（取得部５０１〜判断部５１０）は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。また、各機能（取得部５０１〜判断部５１０）からの出力データは上記記憶領域に保持される。また、図５中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵ４０１に実行させるものとする。
【００４２】
まず、取得部５０１は、設計対象回路の回路情報を取得する機能を有する。ここで、回路情報とは、たとえば、論理合成後における設計対象回路のネットリストである。ネットリストには、設計対象回路内のモジュールやその内部のセル（ＦＦやＲＡＭなど）の接続関係が、ＶｅｒｉｌｏｇやＶＨＤＬ（Ｖｅｒｙ  Ｈｉｇｈ  ｓｐｅｅｄ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）などのハードウェア記述言語を用いて記述されている。回路情報は、たとえば、設計支援装置４００に直接入力することとしてもよく、また、外部のコンピュータ装置から取得することとしてもよい。
【００４３】
また、取得部５０１は、設計対象回路内のモジュールＭ１〜Ｍｎごとに、モジュールＭ１〜Ｍｎから送信され送信先のモジュールＭ１〜Ｍｎによって受信されたデータ信号の時系列の有効データ量と、モジュールＭ１〜Ｍｎの消費電力の改善可能性をあらわす有効データ量に応じた電力指標と、を取得する機能を有する。
【００４４】
具体的には、たとえば、図２に示した時系列テーブルＤＢ２００にアクセスして、モジュールＭ１〜Ｍｎごとの時系列テーブルＴ１〜Ｔｎを取得する。なお、時系列テーブルＤＢ２００は、設計支援装置４００に備えられていてもよく、また、外部のコンピュータ装置に備えられていてもよい。設計支援装置４００に備える場合、時系列テーブルＤＢ２００は、たとえば、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶領域によりその機能を実現する。
【００４５】
選択部５０２は、設計対象回路の中から任意のモジュールを選択する機能を有する。具体的には、たとえば、取得部５０１によって取得されたネットリストに記述されているモジュールの名称を手掛かりとして、設計対象回路の中から任意のモジュールを選択する。名称とは、モジュールを一意に特定する名称である。
【００４６】
抽出部５０３は、時系列テーブルＤＢ２００にアクセスして、選択部５０２によって選択されたモジュール（以下、「対象モジュール」という）に関する有効データ量と電力指標とを抽出する機能を有する。たとえば、設計対象回路の中からモジュールＭｉが選択された場合、図３に示した時系列テーブルＴｉを時系列テーブルＤＢ２００から抽出する。
【００４７】
検出部５０４は、抽出部５０３によって抽出されたデータ量と電力指標とに基づいて、送信先のモジュールがデータ信号を受信していない期間のうち電力指標が消費電力の改善基準を満たす期間を検出する機能を有する。ここで、消費電力の改善基準とは、要求される消費電力の改善可能性の基準である。
【００４８】
具体的には、たとえば、電力指標によって消費電力の改善基準を指定することとしてもよい。ここでは、電力指標が大きいほど消費電力の改善可能性が高いことをあらわしている。このため、検出部５０４は、送信先のモジュールがデータ信号を受信していない期間のうち、電力指標が所定の閾値以上となる期間を検出することとしてもよい。
【００４９】
上記閾値は、図４に示したキーボード４１０やマウス４１１などをユーザが操作することで任意に設定可能である。具体的には、閾値を低く設定するほど、消費電力の大幅な改善が期待される一方で処理時間が増加するトレードオフの関係にある。このため、要求される製品品質や市場投入までの猶予期間などを考慮して、適切な閾値をユーザが設定することとなる。
【００５０】
なお、電力指標が小さいほど消費電力の改善可能性が高いことをあらわしている場合には、検出部５０４は、送信先のモジュールがデータ信号を受信していない期間のうち、電力指標が所定の閾値以下となる期間を検出することとなる。
【００５１】
また、電力指標を相対評価することで消費電力の改善基準を指定することとしてもよい。具体的には、検出部５０４は、送信先のモジュールがデータ信号を受信していない期間のうち、電力指標が相対的に高い上位Ｘ個（あるいは、上位Ｙ割）の期間を検出することとしてもよい。なお、上記Ｘ，Ｙは任意に設定可能である。
【００５２】
ここで、検出部５０４による検出処理の概要について説明する。ここでは、送信先のモジュールがデータ信号を受信していない期間のうち、電力指標が所定の閾値以上となる期間を検出する場合を例に挙げて説明する。図６は、検出処理の概要を示す説明図である。
【００５３】
図６において、グラフ６１０は、モジュールＭｉの有効データ量の時間変化をあらわすグラフである。また、グラフ６２０は、モジュールＭｉの電力指標の時間変化をあらわすグラフである。ここでは、消費電力の改善基準として、電力指標の閾値『２００［μＷ／ｂｉｔ］』が設定されている（グラフ６２０中点線で示す）。
【００５４】
この場合、検出部５０４は、送信先のモジュールがデータ信号を受信していない期間「ｔ1〜ｔ2，ｔ3〜ｔ6，ｔ7〜ｔ10，ｔ11〜ｔ12」のうち、電力指標が２００以上となる期間「ｔ3〜ｔ4，ｔ7〜ｔ8，ｔ11〜ｔ12」を検出することとなる（図６中グラフ６３０）。
【００５５】
この期間「ｔ3〜ｔ4，ｔ7〜ｔ8，ｔ11〜ｔ12」は、送信先のモジュールがデータ信号を取り込んでいない期間でかつ消費電力の改善可能性が高い期間である。送信先のモジュールがデータ信号を取り込んでいない期間とは、換言すれば、この期間継続して対象モジュールへのクロックの供給を停止したとしても、検証対象回路の動作が変化しない可能性が高い期間である。つまり、消費電力の改善可能性をあらわす電力指標を用いて、消費電力の高い削減効果が期待されるクロック・ゲーティングの期間候補を検出する。
【００５６】
出力部５０５は、検出部５０４によって検出された期間を出力する機能を有する。具体的には、たとえば、対象モジュールの名称と検出部５０４によって検出された期間とを関連付けて、クロック・ゲーティングの適用期間として出力することとしてもよい。これにより、ユーザは、対象モジュールのクロック・ゲーティング漏れが発生している可能性が高い期間を認識することができる。
【００５７】
なお、出力部５０５による出力形式としては、たとえば、ディスプレイ４０８への表示、プリンタ４１３への印刷出力、Ｉ／Ｆ４０９による外部装置への送信がある。また、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶領域に記憶することとしてもよい。
【００５８】
比較部５０６は、設計対象回路（以下、「第１の設計対象回路」という）と、検出部５０４によって検出された期間継続して対象モジュールへのクロックの供給を停止する制御回路が挿入された設計対象回路（以下、「第２の設計対象回路」という）と、に同一のデータ信号を与えた場合のシミュレーション結果を比較する機能を有する。
【００５９】
シミュレーション結果は、たとえば、各クロックサイクルにおいて値が変化した信号（制御信号、データ信号）をクロックサイクルごとにあらわすＶＣＤ（Ｖａｌｕｅ  Ｃｈａｎｇｅ  Ｄｕｍｐ）ファイルである。なお、対象モジュールへのクロックの供給を停止する制御回路については図９〜図１１を用いて後述する。
【００６０】
第１および第２の設計対象回路の動作を検証するシミュレーションは、設計支援装置４００において実行することとしてもよく、また、外部のコンピュータ装置（シミュレータ）において実行することとしてもよい。後者の場合、取得部５０１により、外部のコンピュータ装置からシミュレーション結果を取得することとなる。
【００６１】
ここで、第１および第２の設計対象回路のシミュレーション結果の具体例について説明する。図７は、第１の設計対象回路のシミュレーション結果の具体例を示す説明図である。また、図８は、第２の設計対象回路のシミュレーション結果の具体例を示す説明図である。
【００６２】
図７において、シミュレーション結果７００には、第１の設計対象回路のシミュレーション中に値が変化した信号が時系列に示されている。ここで、時刻ｔb［μｓｅｃ］を例に挙げると、データ信号「ＰＯ」の値が「２３４」に、データ信号「ＰＳ」の値が「３４５」に変化している。
【００６３】
また、図８において、シミュレーション結果８００には、第２の設計対象回路のシミュレーション中に値が変化した信号が時系列に示されている。ここで、時刻ｔa［μｓｅｃ］を例に挙げると、制御信号「ｃｋ＿ｅｎａｂ」の値が「０」に、データ信号「Ｏｕｔ」の値が「１２３」に変化している。
【００６４】
なお、シミュレーション結果７００，８００では、各時刻において値が変化した信号のみを保持することとしたが、それ以外の信号については、前の時刻の値をそのまま保持することとしてもよい。この場合、シミュレーション結果７００，８００は、各時刻におけるすべての信号の値を保持することとなる。
【００６５】
また、出力部５０５は、比較部５０６によって比較された比較結果を出力する機能を有する。具体的には、たとえば、シミュレーション結果７００，８００の各時刻において値が変化した信号の信号名と値とをそれぞれ対応付けて出力することとしてもよい。これにより、ユーザは、クロック・ゲーティングの適用前後の各時刻におけるシミュレーション結果を確認することができる。
【００６６】
挿入部５０８は、比較部５０６によって比較された比較結果に基づいて、検出部５０４によって検出された期間継続して対象モジュールへのクロックの供給を停止する制御回路を設計対象回路に挿入する機能を有する。ここで、対象モジュールへのクロックの供給を停止する制御回路の具体例について説明する。
【００６７】
図９は、制御回路の具体例を示す説明図である。ここでは、設計対象回路内のモジュールＭへのクロックの供給を停止する制御回路について説明する。図９において、モジュールＭにクロックを供給するパス上にＡＮＤゲートが挿入されている。さらに、検出部５０４によって検出された期間継続して『ｃｋ＿ｅｎａｂ＝０』を出力する制御回路を挿入する。なお、上記期間以外は『ｃｋ＿ｅｎａｂ＝１』となる。
【００６８】
これにより、モジュールＭへ供給されるクロックが検出部５０４によって検出された期間継続して変化しないこととなり、対象モジュールへのクロックの供給が停止された状態を作り出すことができる。以下、モジュールＭへのクロックの供給を停止する制御回路の具体的な実現手法について説明する。
【００６９】
まず、制御回路を設計対象回路の一部として実現する手法について説明する。図１０は、制御回路の回路情報を示す説明図である。図１０において、回路情報１０００には、検出部５０４によって検出された期間「ｔ3〜ｔ4，ｔ7〜ｔ8，ｔ11〜ｔ12」継続してモジュールＭｉへのクロックの供給を停止する制御回路の機能がＶｅｒｉｌｏｇを用いて記述されている。なお、シミュレーション時刻をＴとする。
【００７０】
この回路情報１０００に示す記述内容を設計対象回路の回路情報（Ｖｅｒｉｌｏｇを用いて記述された回路情報）に追加することにより、上記期間継続してモジュールＭｉへのクロックの供給を停止する制御回路を実現することができる。
【００７１】
つぎに、第２の設計対象回路のシミュレーションを実行する実行ツールのスクリプトによって制御回路を実現する手法について説明する。図１１は、スクリプトの具体例を示す説明図である。図１１において、スクリプト１１００には、検出部５０４によって検出された期間「ｔ3〜ｔ4，ｔ7〜ｔ8，ｔ11〜ｔ12」継続してモジュールＭｉへのクロックの供給を停止する命令が記述されている。
【００７２】
具体的には、初期値として「ｃｋ＿ｅｎａｂ」に「１」を与える。そして、時刻「ｔ3，ｔ7，ｔ11」でシミュレーションを一時中断して、「ｃｋ＿ｅｎａｂ」を「０」にし、そのあと、シミュレーションを再開する。また、時刻「ｔ4，ｔ8，ｔ12」でシミュレーションを一時中断して、「ｃｋ＿ｅｎａｂ」を「１」にし、そのあと、シミュレーションを再開する。
【００７３】
これにより、上記期間継続してモジュールＭｉへのクロックの供給を停止する制御回路を、シミュレーションの動作を制御するスクリプトとして実現することができる。
【００７４】
図５の説明に戻り、判定部５０７は、比較部５０６によって比較された比較結果に基づいて、対象モジュールへのクロックの供給を停止する制御回路の挿入前後において検査対象に指定されたデータ信号の値が一致するか否かを判定する機能を有する。検査対象となるデータ信号は、たとえば、キーボード４１０やマウス４１１などをユーザが操作することで任意に指定可能である。
【００７５】
具体的には、たとえば、対象モジュールから送信されるデータ信号を検査対象として指定することとしてもよい。なぜなら、制御回路の挿入前後において、対象モジュールの出力信号の値が一致すれば、設計対象回路全体の動作も一致することが保証されるからである。ここで、対象モジュールの出力信号を『Ｏｕｔ』とする。
【００７６】
この場合、判定部５０７は、図７および図８に示したシミュレーション結果７００，８００の比較結果を参照して、検査対象に指定された『Ｏｕｔ』の値が一致するか否かを判定する。ここでは、時刻ｔcにおける『Ｏｕｔ』の値が異なるため、検査対象に指定されたデータ信号の値が不一致と判定することとなる。
【００７７】
また、対象モジュールの出力信号は先のゲートで使用されていない場合も考えられるため、設計対象回路から出力されるデータ信号を検査対象として指定することとしてもよい。これは、回路全体の動作の一致判定は、外部出力信号の値が一致しているか否かを判定することで十分判定可能であるという考えに基づく手法である。ここで、設計対象回路の出力信号を『ＰＯ』とする。
【００７８】
この場合、判定部５０７は、シミュレーション結果７００，８００の比較結果を参照して、検査対象に指定された『ＰＯ』の値が一致するか否かを判定する。ここでは、時刻ｔbおよびｔdにおける『ＰＯ』の値が同じため、検査対象に指定されたデータ信号の値が一致すると判定することとなる。
【００７９】
また、設計対象回路の外部出力信号を検査対象に指定すると、複数時刻（上記例では、時刻ｔbおよびｔd）における一致判定が必要となるため、設計対象回路の外部出力信号および回路全体の状態をあらわす内部信号（設計対象回路内の回路素子から出力されるデータ信号）の組み合わせを検査対象として指定することとしてもよい。ここで、内部信号を『ＰＳ』とする。
【００８０】
この場合、判定部５０７は、シミュレーション結果７００，８００の比較結果を参照して、検査対象に指定された『ＰＯ』および『ＰＳ』の値が一致するか否かを判定する。ここでは、時刻ｔbにおける『ＰＯ』および『ＰＳ』の値が同じため、検査対象に指定されたデータ信号の値が一致すると判定することとなる。
【００８１】
これにより、設計対象回路の外部出力信号を検査対象に指定する場合に比べて、一致判定をおこなう時刻が少なくなり、判定処理にかかる処理時間を短縮することができる。なお、一致判定をおこなう時刻は、内部信号の選び方に依存する。
【００８２】
また、出力部５０５は、判定部５０７によって判定された判定結果を出力することとしてもよい。これにより、ユーザは、対象モジュールに対するクロック・ゲーティングの適用の可否を判断することができる。
【００８３】
また、挿入部５０８は、判定部５０７によって検査対象に指定されたデータ信号の値が一致すると判定された場合、設計対象回路に制御回路を挿入することとしてもよい。つまり、対象モジュールへのクロックの供給を停止しても設計対象回路の動作が変化しない場合には、制御回路を設計対象回路に自動挿入する。
【００８４】
また、出力部５０５は、挿入部５０８によって対象モジュールへのクロックの供給を停止する制御回路が挿入された挿入後の設計対象回路を出力することとしてもよい。具体的には、たとえば、設計対象回路の回路情報に、モジュールＭｉへのクロックの供給を停止する制御回路の機能が記述された回路情報１０００が追加された回路情報を出力する。これにより、対象モジュールにクロック・ゲーティングが適用された設計対象回路を提供することができる。
【００８５】
また、抽出部５０３は、時系列テーブルＤＢ２００にアクセスして、対象モジュールに関する消費電力値を抽出することとしてもよい。具体的には、たとえば、設計対象回路の中からモジュールＭｉが選択された場合、時系列テーブルＤＢ２００から時系列テーブルＴｉを抽出することとなる。
【００８６】
算出部５０９は、抽出部５０３によって抽出された消費電力値に基づいて、検出部５０４によって検出された期間中に消費された対象モジュールの消費電力値を累積することにより、制御回路を挿入することで改善される消費電力値を算出する機能を有する。具体的には、まず、抽出部５０３によって抽出された消費電力値から、検出部５０４によって検出された期間における対象モジュールの消費電力値を特定する。
【００８７】
上述したモジュールＭｉの例では、時系列テーブルＴｉから、期間「ｔ3〜ｔ4，ｔ7〜ｔ8，ｔ11〜ｔ12」における消費電力値「３００，３００，３００」をそれぞれ特定する。そして、特定された消費電力値「３００，３００，３００」を累積することにより、制御回路を挿入することで改善される消費電力値「９００」を算出する。
【００８８】
また、出力部５０５は、算出部５０９によって算出された消費電力値を出力することとしてもよい。具体的には、たとえば、対象モジュールの名称と関連付けて、制御回路を挿入することで改善される消費電力値（たとえば、９００［μＷ］）を出力する。これにより、ユーザは、クロック・ゲーティングを適用することで改善される消費電力値を把握することができる。
【００８９】
判断部５１０は、算出部５０９によって算出された消費電力値が予め設定された閾値以上か否かを判断する機能を有する。このとき、複数の対象モジュールについて、制御回路を挿入することで改善される消費電力値が算出済みの場合には、複数の消費電力値を累積した消費電力値が、予め設定された閾値以上か否かを判断することとなる。
【００９０】
また、選択部５０２は、判断部５１０によって閾値以上と判断されなかった場合、設計対象回路の中から選択されていない未選択のモジュールを選択することとしてもよい。これにより、算出部５０９によって算出された消費電力値が閾値以上となる、あるいは、未選択のモジュールがなくなるまで、クロック・ゲーティング漏れを探索することができる。
【００９１】
上記閾値は、キーボード４１０やマウス４１１などをユーザが操作することで任意に設定可能である。具体的には、閾値を高く設定するほど、消費電力が大幅に改善される一方で処理時間が増加するトレードオフの関係にある。このため、要求される製品品質や市場投入までの猶予期間などを考慮して、適切な値をユーザが設定することとなる。
【００９２】
また、出力部５０５は、判断部５１０によって閾値以上と判断された場合、制御回路が挿入された挿入後の設計対象回路を出力することとしてもよい。これにより、予め設定された消費電力の改善目標を満たす設計対象回路を提供することができる。
【００９３】
また、選択部５０２は、設計対象回路の中から特定の消費電力値以上のモジュールを選択することとしてもよい。具体的には、たとえば、時系列テーブルＤＢ２００にアクセスして、モジュールごとに、各時刻における消費電力値を累積することで、各モジュール全体で消費される消費電力値を算出し、特定の消費電力値以上のモジュールを選択する。
【００９４】
より具体的には、任意に設定された特定の消費電力値以上のモジュールを選択することとしてもよく、また、消費電力が最大のモジュールを選択することとしてもよい。これにより、クロック・ゲーティングを適用した場合に大幅な電力改善が期待されるモジュールを選択することができる。
【００９５】
なお、上記抽出部５０３による消費電力値の抽出処理は、判定部５０７によって検査対象に指定されたデータ信号の値が一致すると判定された場合にのみ実行することとしてもよい。これにより、クロック・ゲーティングが適用不能にもかかわらず、消費電力値を算出する無駄な処理を削減することができる。
【００９６】
（有効データ量の算出手法）
つぎに、有効データ量の算出手法を具体的に説明する。有効データ量は、設計対象回路のシミュレーション結果（上述した第１のシミュレーション結果に相当）とインターフェース情報（後述するインターフェーステーブル）とから算出する。ここで、設計対象回路のシミュレーション結果およびインターフェーステーブルの具体例について説明する。
【００９７】
図１２は、シミュレーション結果の具体例を示す説明図である。図１２において、シミュレーション結果１２００には、クロックサイクルごとに、値が変化した信号をあらわす信号情報１２００−１〜１２００−ｑが示されている。ここで、信号情報１２００−ｐを例に挙げると、クロックサイクルｐにおいてデータ信号「ＷＤＡＴＡ」の値が「３」に、制御信号「ＲＥＣＶ」の値が「０」に変化している。
【００９８】
図１３は、インターフェーステーブルの具体例を示す説明図である。図１３において、インターフェーステーブル１３００には、モジュールインターフェースＣ１〜Ｃｓごとに、モジュール間のデータ信号の受け渡しを定義するインターフェース情報１３００−１〜１３００−ｓが示されている。
【００９９】
具体的には、インターフェース情報１３００−１〜１３００−ｓは、モジュールインターフェースＣ１〜Ｃｓごとに、インターフェース名、送信モジュール名、受信モジュール名、制御条件、データ信号、ビット数、重要度に関する情報を有している。インターフェース名は、モジュール間を接続するモジュールインターフェースＣ１〜Ｃｓの名称である。
【０１００】
送信モジュール名は、送信モジュールの名称である。受信モジュール名は、受信モジュールの名称である。制御条件は、モジュール間のデータ通信が成立する条件である。データ信号は、受け渡し対象となるデータ信号である。ビット数は、データ信号のデータ量である。重要度は、データ信号の重要度をあらわす指標である。
【０１０１】
ここで、インターフェース情報１３００−１を例に挙げて、モジュール間のデータ通信について説明する。図１４は、モジュール間の通信の概要を示す説明図である。図１４において、モジュールインターフェースＣ１を介してモジュールＭ１とモジュールＭ２とが通信可能に接続されている。
【０１０２】
インターフェース情報１３００−１は、モジュールインターフェースＣ１を介して接続されているモジュールＭ１とモジュールＭ２との通信が成立する制御条件「ＳＥＮＤ＆ＲＥＣＶ」を有している。この制御条件は、制御信号「ＳＥＮＤ」および「ＲＥＣＶ」がともに変化したときに、モジュールＭ１とモジュールＭ２との通信が成立することをあらわしている。
【０１０３】
具体的には、モジュールＭ１は、制御信号「ＳＥＮＤ」の値が０から１に変化するとデータ信号「ＤＡＴＡ［６３：０］」を送信する。さらに、モジュールＭ２は、制御信号「ＲＥＣＶ」が０から１に変化するとデータ信号「ＤＡＴＡ［６３：０］」を受信する。なお、［６３：０］は、ビット数を定義したものである。
【０１０４】
また、モジュールＭ１は、制御信号「ＳＥＮＤ」の値が１から０に変化するとデータ信号「ＤＡＴＡ［６３：０］」の送信を止める。さらに、モジュールＭ２は、制御信号「ＲＥＣＶ」が１から０に変化するとデータ信号「ＤＡＴＡ［６３：０］」の受信を止めることとなる。
【０１０５】
また、データ信号「ＤＡＴＡ［６３：０］」の重要度は１である。これは、重要度をあらわす数値の最低値である。たとえば、インターフェース情報１３００−ｒに示す重要度が１０００のデータ信号「ＥＲＲＯＲ」は、データ信号「ＤＡＴＡ［６３：０］」に比べて１０００倍重要であることを意味している。
【０１０６】
以下、シミュレーション結果１２００とインターフェーステーブル１３００とを用いて有効データ量の算出手法について説明する。有効データ量を算出する場合、まず、信号情報１２００−１〜１２００−ｑおよびインターフェース情報１３００−１〜１３００−ｓを用いて、モジュールインターフェースＣ１〜Ｃｓごとに制御信号が一致するか否かを判定する。
【０１０７】
ここで、モジュールインターフェースＣ１を例に挙げると、信号情報１２００−１〜１２００−ｑから特定される制御信号と、制御条件「ＳＥＮＤ＆ＲＥＣＶ」に定義されている制御信号「ＳＥＮＤ」および「ＲＥＣＶ」とが一致するか否かを判定する。より詳細に説明すると、クロックサイクル１〜ｑごとに、制御信号が一致するか否かを順次判定する。
【０１０８】
まず、信号情報１２００−１によれば、クロックサイクル１において、制御信号「ＳＥＮＤ」が０から１に変化している。このため、制御条件「ＳＥＮＤ＆ＲＥＣＶ」に定義されている制御信号「ＳＥＮＤ」および「ＲＥＣＶ」のうち、制御信号「ＳＥＮＤ」のみが一致したと判定する。
【０１０９】
つぎに、信号情報１２００−２によれば、クロックサイクル２において、制御信号「ＲＥＣＶ」が０から１に変化している。このため、クロックサイクル１，２において値が変化した制御信号「ＳＥＮＤ」および「ＲＥＣＶ」と、制御条件「ＳＥＮＤ＆ＲＥＣＶ」に定義されている制御信号「ＳＥＮＤ」および「ＲＥＣＶ」とが一致したと判定する。
【０１１０】
そして、制御信号が一致すると判定された場合、制御条件の成立回数を計数する。上述した例では、制御信号「ＳＥＮＤ」および「ＲＥＣＶ」が一致したと判定された場合に、モジュールインターフェースＣ１の制御条件「ＳＥＮＤ＆ＲＥＣＶ」の成立回数をインクリメントすることとなる。
【０１１１】
このようにして、インターフェース情報１３００−１〜１３００−ｓに示すモジュールインターフェースＣ１〜Ｃｓごとに、信号情報１２００−１〜１２００−ｑに示す全クロックサイクル１〜ｑにおける制御信号の一致判定をおこなう。そして、制御信号が一致すると判定されると、その都度、その制御条件の成立回数を計数する。
【０１１２】
このあと、計数された計数結果と、制御条件の成立時にモジュール間で送受信される有効データ信号のビット数とを用いて、送信モジュールから送信されるデータ信号の有効データ量を算出する。具体的には、たとえば、下記式（１）を用いて、送信モジュールごとの有効データ量を算出することができる。ただし、制御条件の成立回数をＦ、制御条件の成立時にモジュール間で送受信されるデータ信号のビット数をＢとする。
【０１１３】
Ｄｉ＝Ｆ×Ｂ                  …（１）
【０１１４】
たとえば、モジュールインターフェースＣ１の制御条件「ＳＥＮＤ＆ＲＥＣＶ」の成立回数が１０回（計数結果が１０）であった場合、上記式（１）に制御条件の成立回数「１０」およびデータ信号のビット数「６４」を代入することにより、モジュールＭ１の有効データ量（６４０［ｂｉｔ］）を求めることができる。
【０１１５】
また、有効データ量を、データ信号のビット数だけでなく、そのデータ信号の重要度を考慮して算出することとしてもよい。具体的には、たとえば、下記式（２）を用いて、モジュールごとの有効データ量を算出することができる。ただし、制御条件の成立時にモジュール間で送受信される有効データ信号の重要度をＩとする。
【０１１６】
Ｄｉ＝Ｆ×Ｂ×Ｉ              …（２）
【０１１７】
たとえば、モジュールインターフェースＣｒの制御条件「ＥＲＲＯＲ．ｒｉｓｅ」の成立回数が１回であった場合、上記式（２）に制御条件の成立回数「１」とデータ信号のビット数「１」と重要度「１０００」を代入することにより、モジュールＭ１の有効データ量（１０００［ｂｉｔ］）を求めることができる。
【０１１８】
（設計支援装置の設計支援処理手順）
つぎに、本実施の形態にかかる設計支援装置４００の設計支援処理手順について説明する。図１５は、設計支援装置の設計支援処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、取得部５０１により、設計対象回路の回路情報を取得したか否かを判断する（ステップＳ１５０１）。
【０１１９】
ここで、設計対象回路の回路情報を取得するのを待って（ステップＳ１５０１：Ｎｏ）、取得した場合（ステップＳ１５０１：Ｙｅｓ）、選択部５０２により、取得された回路情報に基づいて、設計対象回路の中から任意のモジュールを選択する（ステップＳ１５０２）。
【０１２０】
このあと、抽出部５０３により、時系列テーブルＤＢ２００にアクセスして、選択されたモジュール（以下、「対象モジュール」という）に関する有効データ量と電力指標とを抽出する（ステップＳ１５０３）。そして、検出部５０４により、抽出された有効データ量と電力指標とに基づいて、送信先のモジュールがデータ信号を受信していない期間のうち電力指標が予め設定された閾値以上となる期間を検出する（ステップＳ１５０４）。
【０１２１】
つぎに、取得部５０１により、設計対象回路（以下、「第１の設計対象回路」という）と、検出された期間継続して対象モジュールへのクロックの供給を停止する制御回路が挿入された設計対象回路（以下、「第２の設計対象回路」という）と、に同一のデータ信号を与えた場合のシミュレーション結果をそれぞれ取得する（ステップＳ１５０５）。
【０１２２】
そして、比較部５０６により、第１および第２の設計対象回路のシミュレーション結果を比較して（ステップＳ１５０６）、判定部５０７により、制御回路の挿入前後において検査対象に指定されたデータ信号の値が一致するか否かを判定する（ステップＳ１５０７）。
【０１２３】
ここで、検査対象に指定されたデータ信号の値が一致しない場合には（ステップＳ１５０７：Ｎｏ）、ステップＳ１５０２に戻って、選択部５０２により、設計対象回路の中から未選択のモジュールを選択する。
【０１２４】
一方、検査対象に指定されたデータ信号の値が一致する場合には（ステップＳ１５０７：Ｙｅｓ）、挿入部５０８により、設計対象回路に検出された期間継続して対象モジュールへのクロックの供給を停止する制御回路を挿入する（ステップＳ１５０８）。
【０１２５】
このあと、抽出部５０３により、時系列テーブルＤＢにアクセスして、対象モジュールに関する消費電力値を抽出し（ステップＳ１５０９）、算出部５０９により、抽出された消費電力値に基づいて、検出された期間中に消費された対象モジュールの消費電力値を累積することにより、制御回路を挿入することで改善される消費電力値を算出する（ステップＳ１５１０）。
【０１２６】
そして、判断部５１０により、算出された消費電力値が目標値に達したか否かを判断し（ステップＳ１５１１）、目標値に達していない場合には（ステップＳ１５１１：Ｎｏ）、ステップＳ１５０２に戻って、選択部５０２により、設計対象回路の中から未選択のモジュールを選択する。
【０１２７】
一方、目標値に達した場合には（ステップＳ１５１１：Ｙｅｓ）、最後に、出力部５０５により、制御回路が挿入された挿入後の設計対象回路を出力して（ステップＳ１５１２）、本フローチャートによる一連の処理を終了する。
【０１２８】
以上説明したように、本実施の形態によれば、消費電力の改善可能性をあらわす電力指標を用いて、クロック・ゲーティングを適用可能な期間をモジュールごとに自動検出することができる。さらに、検出される期間は消費電力の改善可能性が高い期間となるため、効率的かつ効果的な電力改善をおこなうことができる。
【０１２９】
また、従来の設計ツールのように、設計対象回路の動作を詳細に解析してクロック・ゲーティングの適用の可否をモジュールごとに検証する必要がないため、回路規模の大きな回路にも適用することができる。さらに、電力改善の作業者が設計対象回路の動作を詳細に理解しておく必要がないため、作業者と設計者とが異なる場合であっても、作業効率を低下させることなく、電力改善をおこなうことができる。
【０１３０】
このようなことから、本実施の形態によれば、設計対象回路の電力改善にかかる作業負担および作業時間を軽減させ、設計期間の短縮化を図ることができる。
【０１３１】
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【０１３２】
また、本実施の形態で説明した設計支援装置４００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した設計支援装置４００の機能（取得部５０１〜判断部５１０）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、設計支援装置４００を製造することができる。
【０１３３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３４】
（付記１）設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のデータ量と、前記モジュールの消費電力の改善可能性をあらわす前記データ量に応じた電力指標と、を記憶するテーブルにアクセス可能なコンピュータを、
前記設計対象回路の中から任意のモジュールを選択する選択手段、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出手段、
前記抽出手段によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出手段、
前記検出手段によって検出された期間を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【０１３５】
（付記２）前記コンピュータを、
前記設計対象回路と、前記検出手段によって検出された期間継続して前記選択手段によって選択されたモジュールへのクロックの供給を停止する制御回路が挿入された前記設計対象回路と、に同一のデータ信号を与えた場合のシミュレーション結果を比較する比較手段として機能させ、
前記出力手段は、
前記比較手段によって比較された比較結果を出力することを特徴とする付記１に記載の設計支援プログラム。
【０１３６】
（付記３）前記コンピュータを、
前記比較手段によって比較された比較結果に基づいて、前記設計対象回路に前記制御回路を挿入する挿入手段として機能させ、
前記出力手段は、
前記挿入手段によって前記制御回路が挿入された挿入後の設計対象回路を出力することを特徴とする付記２に記載の設計支援プログラム。
【０１３７】
（付記４）前記コンピュータを、
前記比較手段によって比較された比較結果に基づいて、前記制御回路の挿入前後において検査対象に指定されたデータ信号の値が一致するか否かを判定する判定手段として機能させ、
前記出力手段は、
前記判定手段によって判定された判定結果を出力することを特徴とする付記３に記載の設計支援プログラム。
【０１３８】
（付記５）前記挿入手段は、
前記判定手段によって前記検査対象に指定されたデータ信号の値が一致すると判定された場合、前記設計対象回路に前記制御回路を挿入することを特徴とする付記４に記載の設計支援プログラム。
【０１３９】
（付記６）前記判定手段は、
前記制御回路の挿入前後において、前記選択手段によって選択されたモジュールから送信されるデータ信号の値が一致するか否かを判定することを特徴とする付記４または５に記載の設計支援プログラム。
【０１４０】
（付記７）前記判定手段は、
前記制御回路の挿入前後において、前記設計対象回路から出力されるデータ信号の値が一致するか否かを判定することを特徴とする付記４または５に記載の設計支援プログラム。
【０１４１】
（付記８）前記判定手段は、
前記制御回路の挿入前後において、前記設計対象回路から出力されるデータ信号の値および前記設計対象回路内の任意の回路素子から出力されるデータ信号の値がそれぞれ一致するか否かを判定することを特徴とする付記４または５に記載の設計支援プログラム。
【０１４２】
（付記９）前記テーブルは、
さらに、前記モジュールごとに見積もられた当該モジュールの時系列の消費電力値を記憶しており、
前記コンピュータを、
前記設計対象回路に前記制御回路を挿入することで改善される消費電力値を算出する算出手段として機能させ、
前記抽出手段は、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関する消費電力値を抽出し、
前記算出手段は、
前記抽出手段によって抽出された消費電力値に基づいて、前記検出手段によって検出された期間中に消費された前記モジュールの消費電力値を累積することにより、前記制御回路を挿入することで改善される消費電力値を算出し、
前記出力手段は、
前記算出手段によって算出された消費電力値を出力することを特徴とする付記１〜８のいずれか一つに記載の設計支援プログラム。
【０１４３】
（付記１０）前記コンピュータを、
前記算出手段によって算出された消費電力値が予め設定された閾値以上か否かを判断する判断手段として機能させ、
前記選択手段は、
前記判断手段によって閾値以上と判断されなかった場合、前記設計対象回路の中から選択されていない未選択のモジュールを選択することを特徴とする付記９に記載の設計支援プログラム。
【０１４４】
（付記１１）前記選択手段は、
前記テーブルにアクセスして、前記設計対象回路の中から特定の消費電力値以上のモジュールを選択することを特徴とする付記１０に記載の設計支援プログラム。
【０１４５】
（付記１２）前記選択手段は、
前記設計対象回路の中から消費電力が最大のモジュールを選択することを特徴とする付記１１に記載の設計支援プログラム。
【０１４６】
（付記１３）前記検出手段は、
前記送信先のモジュールが前記データ信号を受信していない期間のうち、前記電力指標が所定の閾値以上となる期間を検出することを特徴とする付記１〜１２のいずれか一つに記載の設計支援プログラム。
【０１４７】
（付記１４）付記１〜１３のいずれか一つに記載の設計支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１４８】
（付記１５）設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のデータ量と、前記モジュールの消費電力の改善可能性をあらわす前記データ量に応じた電力指標と、を記憶するテーブルにアクセス可能な設計支援装置であって、
前記設計対象回路の中から任意のモジュールを選択する選択手段と、
前記テーブルにアクセスして、前記選択手段によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出手段と、
前記抽出手段によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出手段と、
前記検出手段によって検出された期間を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【０１４９】
（付記１６）制御手段および記憶手段を備え、設計対象回路内のモジュールごとに、当該モジュールから送信され送信先のモジュールによって受信されたデータ信号の時系列のデータ量と、前記モジュールの消費電力の改善可能性をあらわす前記データ量に応じた電力指標と、を記憶するテーブルにアクセス可能なコンピュータが、
前記制御手段により、前記設計対象回路の中から任意のモジュールを選択する選択工程と、
前記制御手段により、前記テーブルにアクセスして、前記選択工程によって選択されたモジュールに関するデータ量と電力指標とを抽出する抽出工程と、
前記制御手段により、前記抽出工程によって抽出されたデータ量と電力指標とに基づいて、前記送信先のモジュールが前記データ信号を受信していない期間のうち前記電力指標が消費電力の改善基準を満たす期間を検出する検出工程と、
前記制御手段により、前記検出工程によって検出された期間を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【図面の簡単な説明】
【０１５０】
【図１】本実施の形態の概要を示す説明図である。
【図２】時系列テーブルＤＢの記憶内容を示す説明図である。
【図３】時系列テーブルの一例を示す説明図である。
【図４】設計支援装置のハードウェア構成を示すブロック図である。
【図５】設計支援装置の機能的構成を示すブロック図である。
【図６】検出処理の概要を示す説明図である。
【図７】第１の設計対象回路のシミュレーション結果の具体例を示す説明図である。
【図８】第２の設計対象回路のシミュレーション結果の具体例を示す説明図である。
【図９】制御回路の具体例を示す説明図である。
【図１０】制御回路の回路情報を示す説明図である。
【図１１】スクリプトの具体例を示す説明図である。
【図１２】シミュレーション結果の具体例を示す説明図である。
【図１３】インターフェーステーブルの具体例を示す説明図である。
【図１４】モジュール間の通信の概要を示す説明図である。
【図１５】設計支援装置の設計支援処理手順の一例を示すフローチャートである。
【符号の説明】
【０１５１】
２００  時系列テーブルＤＢ
５０１  取得部
５０２  選択部
５０３  抽出部
５０４  検出部
５０５  出力部
５０６  比較部
５０７  判定部
５０８  挿入部
５０９  算出部
５１０  判断部
【図１】
0005056573.tif 000002
【図２】
0005056573.tif 000003
【図３】
0005056573.tif 000004
【図４】
0005056573.tif 000005
【図５】
0005056573.tif 000006
【図６】
0005056573.tif 000007
【図７】
0005056573.tif 000008
【図８】
0005056573.tif 000009
【図９】
0005056573.tif 000010
【図１０】
0005056573.tif 000011
【図１１】
0005056573.tif 000012
【図１２】
0005056573.tif 000013
【図１３】
0005056573.tif 000014
【図１４】
0005056573.tif 000015
【図１５】
0005056573.tif 000016