(57)【要約】【課題】低消費電力を実現する回路を自動的に設計する回路設計支援システムを提供する。【解決手段】本発明の回路設計支援システムは、プログラム言語で回路動作が記述されている動作レベル記述ファイルに基づいて、フローグラフ情報を作成するフロー解析部と、前記フローグラフ情報と演算器重み係数定義ファイルに基づいて、処理量情報を作成する処理量解析部と、前記フローグラフ情報と前記処理量情報に基づいて、回路分割するかどうかを判定し、分割する回路を示す回路分割情報を作成する回路分割部と、前記フローグラフ情報と前記回路分割情報に基づいて、省電力対応のＲＴＬ記述ファイルと電源情報ファイルを作成する合成部とを備える。【選択図】図５
2012243211.tif 000002
【特許請求の範囲】
【請求項１】
プログラム言語で回路動作が記述されている動作レベル記述ファイルに基づいて、フローグラフ情報を作成するフロー解析部と、ここで、前記フローグラフ情報は、前記回路動作の処理の分岐、繰り返しを含む制御構造を示す情報であり、
前記フローグラフ情報と演算器重み係数定義ファイルに基づいて、処理量情報を作成する処理量解析部と、ここで、前記演算器重み係数定義ファイルは、演算器毎に、消費電力の大きさに基づいて決定される値を演算器重み係数として定義したファイルであり、前記処理量情報は、所定のプログラムブロックの処理毎に、前記処理を行うために必要な前記演算器と、前記演算器重み係数に基づいて決定される値であり、
前記フローグラフ情報と前記処理量情報に基づいて、回路分割するかどうかを判定し、分割する回路を示す回路分割情報を作成する回路分割部と、
前記フローグラフ情報と前記回路分割情報に基づいて、ＲＴＬ記述ファイルと電源情報ファイルを作成する合成部とを備え、ここで、前記ＲＴＬ記述ファイルは、前記分割する回路の情報と、前記分割する回路に対してクロックゲーティングを行う制御回路の情報を有し、前記電源情報ファイルは、前記分割する回路に対して、電源遮断を行うためのドメイン情報を有する
回路設計支援システム。
【請求項２】
前記フローグラフ情報と前記処理量情報に基づいて節電効果情報を作成する節電効果解析部を更に備え、ここで、前記節電効果情報は、回路ブロックの前記処理量情報と、前記回路ブロックが動作する確率に基づいて決定される値であり、
前記回路分割部は、前記フローグラフ情報と前記節電効果情報に基づいて、回路分割するかどうかを決定し、分割する回路を示す回路分割情報を作成する
請求項１に記載の回路設計支援システム。
【請求項３】
前記回路分割部は、前記プログラムブロックの前記処理量情報が所定の閾値を超えた場合に回路分割する
請求項１に記載の回路設計支援システム。
【請求項４】
前記回路分割部は、前記プログラムブロックの前記節電効果情報が所定の閾値を超えた場合に回路分割する
請求項２に記載の回路設計支援システム。
【請求項５】
前記回路分割部は、前記処理量情報が大きい前記プログラムブロックから順に、所定の分割個数まで、回路分割する
請求項１に記載の回路設計支援システム。
【請求項６】
前記回路分割部は、前記節電効果情報が大きい前記プログラムブロックから順に、所定の分割個数まで、回路分割する
請求項２に記載の回路設計支援システム。
【請求項７】
前記回路分割部は、回路分割するプログラムブロックの前記処理量情報が、前記動作レベル記述ファイルに含まれる全てのプログラムブロックの前記処理量情報に対して、所定の割合に到達するまで、前記処理量情報が大きいプログラムブロックから順に回路分割する
請求項１に記載の回路設計支援システム。
【請求項８】
前記回路分割部は、回路分割するプログラムブロックの前記節電効果情報が、前記動作レベル記述ファイルに含まれる全てのプログラムブロックの前記処理量情報に対して、所定の割合に到達するまで、前記節電効果情報が大きいプログラムブロックから順に回路分割する
請求項２に記載の回路設計支援システム。
【請求項９】
ユーザの入力に基づいて、前記プログラムブロック毎に、前記処理量情報の算出に使用する値、前記処理量情報、回路分割の有無を調整する設定調整部
を更に備える請求項１乃至８のいずれか１項に含まれる回路設計支援システム。
【請求項１０】
フロー解析部が、プログラム言語で回路動作が記述されている動作レベル記述ファイルに基づいて、フローグラフ情報を作成するステップと、ここで、前記フローグラフ情報は、前記回路動作の処理の分岐、繰り返しを含む制御構造を示す情報であり、
処理量解析部が、前記フローグラフ情報と演算器重み係数定義ファイルに基づいて、処理量情報を作成するステップと、ここで、前記演算器重み係数定義ファイルは、演算器毎に、消費電力の大きさに基づいて決定される値を演算器重み係数として定義したファイルであり、前記処理量情報は、所定のプログラムブロックの処理毎に、前記処理を行うために必要な前記演算器と、前記演算器重み係数に基づいて決定される値であり、
回路分割部が、前記フローグラフ情報と前記処理量情報に基づいて、回路分割するかどうかを判定するステップと、
回路分割部が、分割する回路を示す回路分割情報を作成するステップと、
合成部が、前記フローグラフ情報と前記回路分割情報に基づいて、ＲＴＬ記述ファイルと電源情報ファイルを作成するステップとを含み、ここで、前記ＲＴＬ記述ファイルは、前記分割する回路の情報と、前記分割する回路に対してクロックゲーティングを行う制御回路の情報を有し、前記電源情報ファイルは、前記分割する回路に対して、電源遮断を行うためのドメイン情報を有する
回路設計支援方法。
【請求項１１】
節電効果解析部が、前記フローグラフ情報と前記処理量情報に基づいて節電効果情報を作成するステップを更に備え、ここで、前記節電効果情報は、回路ブロックの前記処理量情報と、前記回路ブロックが動作する確率に基づいて決定される値であり、
前記回路分割するかどうかを判定するステップは、前記フローグラフ情報と前記節電効果情報に基づいて、回路分割するかどうかを判定する
請求項１０に記載の回路設計支援方法。
【請求項１２】
前記回路分割するかどうかを判定するステップは、
プログラムブロックの前記処理量情報が所定の閾値を超えた場合に回路分割する
請求項１０に記載の回路設計支援方法。
【請求項１３】
前記回路分割するかどうかを判定するステップは、
プログラムブロックの前記節電効果情報が所定の閾値を超えた場合に回路分割する
請求項１１に記載の回路設計支援方法。
【請求項１４】
前記回路分割するかどうかを判定するステップは、
前記処理量情報が大きいプログラムブロックから順に、所定の分割個数まで、回路分割する
請求項１０に記載の回路設計支援方法。
【請求項１５】
前記回路分割するかどうかを判定するステップは、
前記節電効果情報が大きいプログラムブロックから順に、所定の分割個数まで、回路分割する
請求項１１に記載の回路設計支援方法。
【請求項１６】
前記回路分割するかどうかを判定するステップは、
回路分割するプログラムブロックの前記処理量情報が、前記動作レベル記述ファイルに含まれる全てのプログラムブロックの前記処理量情報に対して、所定の割合に到達するまで、前記処理量情報が大きいプログラムブロックから順に回路分割する
請求項１０に記載の回路設計支援方法。
【請求項１７】
前記回路分割するかどうかを判定するステップは、
回路分割するプログラムブロックの前記節電効果情報が、前記動作レベル記述ファイルに含まれる全てのプログラムブロックの前記処理量情報に対して、所定の割合に到達するまで、前記節電効果情報が大きいプログラムブロックから順に回路分割する
請求項１１に記載の回路設計支援方法。
【請求項１８】
設定調整部が、ユーザの入力に基づいて、前記プログラムブロック毎に、前記処理量情報の算出に使用する値、前記処理量情報、回路分割の有無を調整するステップ
を更に備える請求項１０乃至１７のいずれか１項に含まれる回路設計支援方法。
【請求項１９】
請求項１０乃至１８のいずれか１項に記載の回路設計支援方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計支援システムに関し、特に、低消費電力を実現する回路を自動的に設計するシステムに関する。
【背景技術】
【０００２】
回路設計において、実現したい回路の処理アルゴリズムから、論理合成ツールにより論理合成可能なＲＴＬ記述を生成する動作合成ツールが利用されている。動作合成ツールの入力となる動作記述では、実現したい回路の動作、処理手順やアルゴリズムを記述することがメインとなるため、回路実装の詳細を考えなくてもよい。そのため、動作記述の抽象度を上げることができ、多くの利点を生み出している。例えば、ソフトウェアにより実装した機能ブロックのソースコード（Ｃ言語等のプログラミング言語で記述したソースコード）を流用して、回路の動作記述を作成することが可能になっている。
【０００３】
近年、実現する回路の機能仕様の複雑化に伴い、最初に、回路機能をソフトウェアで実装し、機能や処理アルゴリズムの検証を行うことや、既存のソフトウェアによる処理を、専用のハードウェアに置き換えて、処理を高速化することが増えている。これらは、ソフトウェアのプログラム言語記述を流用して、合成可能な記述を作成し、ハードウェア化を行うという設計スタイルである。このような場面では、動作合成ツールを利用することに大きな利点があり、今後は、このような動作合成ツールの利用方法が、動作合成ツールの主要な使い方になると考えられる。
【０００４】
一方、携帯電話やデジタルカメラ等の携帯機器では、低消費電力化への要求も大きくなってきており、低消費電力の実現を考慮した動作合成を行える開発支援ツールが必要とされている。
【０００５】
本発明の分野における文献公知発明としては、特開２００８−１０２６１９号公報（特許文献１）がある。この発明は、まず、Ｃ言語等で記述された動作レベル記述情報を基に、ＲＴレベル回路情報、及び合成付帯情報（制御情報、制御フロー情報及び遅延情報を含む）を作成する。次に、合成付帯情報に基づいて、電力制御回路情報を作成し、ＲＴレベル回路情報と電力制御回路情報を合わせて、低消費電力の回路を設計する発明である。
【０００６】
この発明の実施形態において、ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）単位ではなく、関数単位に分割した回路に対して、電力制御を行う技術が開示されている（図１、図２）。図１は、従来技術の回路設計支援システムを説明するために使用する動作レベル記述情報である。図２は、従来技術の回路設計システムにより設計された回路である。図２の回路例では、電力制御回路（ｐ．ｍ．ｃ）が、図１の動作レベル記述情報における関数ｆｕｎｃ１〜ｆｕｎｃ３単位にブロック分割された回路に対して、クロック停止や電源遮断を行う。
【０００７】
この発明の実施形態では、動作合成ツールへの入力である動作記述をコーディングする際に、関数が消費電力を制御可能な最小単位になるということを意識して、関数分割をしなければならないという制約がある。例えば、規模の小さい関数を多く作り、各々に電力制御回路を付加すると、付加する電力制御回路の規模と、節電対象の回路規模とのバランスが悪くなり、得られる節電効果が悪くなる。したがって、動作記述をソフトウェア実装のソースコードから流用する場合、大幅な修正が必要になる場合がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１０２６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
低消費電力の回路を、自動的に設計することができる回路設計支援システムが求められている。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００１１】
本発明の回路設計支援システムは、プログラム言語で回路動作が記述されている動作レベル記述ファイルに基づいて、フローグラフ情報を作成するフロー解析部（８）と、前記フローグラフ情報と演算器重み係数定義ファイルに基づいて、処理量情報を作成する処理量解析部（９）と、前記フローグラフ情報と前記処理量情報に基づいて、回路分割するかどうかを判定し、分割する回路を示す回路分割情報を作成する回路分割部（１０）と、前記フローグラフ情報と前記回路分割情報に基づいて、省電力を実現するための制御回路の情報を含むＲＴＬ記述ファイルと電源情報ファイルを作成する合成部（１１）とを備える。
【００１２】
本発明の回路設計支援方法は、回路設計支援システムにより実施される回路設計支援方法である。フロー解析部（８）が、プログラム言語で回路動作が記述されている動作レベル記述ファイルに基づいて、フローグラフ情報を作成するステップと、処理量解析部（９）が、前記フローグラフ情報と演算器重み係数定義ファイルに基づいて、処理量情報を作成するステップと、回路分割部（１０）が、前記フローグラフ情報と前記処理量情報に基づいて、回路分割するかどうかを判定するステップと、回路分割部（１０）が、分割する回路を示す回路分割情報を作成するステップと、合成部（１１）が、前記フローグラフ情報と前記回路分割情報に基づいて、省電力を実現するための制御回路の情報を含むＲＴＬ記述ファイルと電源情報ファイルを作成するステップとを含む。
【発明の効果】
【００１３】
本発明によれば、低消費電力の回路を、自動的に設計することができる回路設計支援システムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、従来技術の回路設計支援システムを説明するために使用する動作レベル記述情報である。
【図２】図２は、従来技術の回路設計システムにより設計された回路である。
【図３】図３は、本発明の第１実施形態における回路設計支援システム２０のハードウェア構成図である。
【図４】図４は、本発明の第１実施形態におけるフローグラフ情報を説明するための図である。
【図５】図５は、本発明の第１実施形態における回路設計支援方法の全体フローチャートである。
【図６】図６は、本発明の第１実施形態における回路設計支援方法において、プログラムブロックの処理量を求める方法を説明するための図である。
【図７】図７は、制御処理が、ｆｏｒ文の場合に、ｆｏｒ文構造全体の処理量Ｖを計算する例である。
【図８】図８は、本発明の第１実施形態における回路設計支援方法において、回路を分割する方法、低消費電力を実現するための制御回路を挿入する方法のフローチャートである。
【図９】図９は、本発明の第２実施形態における回路設計支援システム２０のハードウェア構成図である。
【図１０】図１０は、本発明の第２実施形態における回路設計支援方法の全体フローチャートである。
【図１１】図１１は、本発明の第２実施形態の回路設計支援方法において、節電効果を解析する方法のフローチャートである。
【図１２】図１２は、本発明の第２実施形態における回路設計支援方法において、ｉｆ文を例にした分岐条件の確率を求める方法を説明するための動作レベル記述ファイルの例である。
【図１３】図１３は、本発明の第２実施形態における回路設計支援方法において、回路分割判定対象のプログラムブロックが、入れ子構造となっている場合についての節電効果の算出方法を説明するための図である。
【図１４】図１４は、本発明の実施形態における回路設計支援システム２０によって設計された回路例である。
【図１５】図１５は、本発明の実施形態における回路設計支援システム２０によって、入れ子構造を含む動作レベル記述ファイルから設計された回路の例である。
【図１６】図１６は、本発明の第２実施形態における回路設計支援方法において、回路分割判定対象のプログラムブロックが、入れ子構造となっている場合の動作レベル記述ファイルの例である。
【図１７】図１７は、制御処理が、ｉｆ−ｔｈｅｎ−ｅｌｓｅ−ｉｆ  ．．．．構造の場合に、ｉｆ文構造全体の処理量Ｖを計算する例である。
【図１８】図１８は、制御処理が、ｓｗｉｔｃｈ−ｃａｓｅ文の場合に、ｓｗｉｔｃｈ−ｃａｓｅ文構造全体の処理量Ｖを計算する例である。
【図１９】図１９は、本発明の第２実施形態における回路設計支援方法において、回路を分割する方法、低消費電力を実現するための制御回路を挿入する方法のフローチャートである。
【発明を実施するための形態】
【００１５】
添付図面を参照して、本発明の実施形態による回路設計支援システム２０を以下に説明する。
【００１６】
（第１実施形態）
［構成の説明］
はじめに、本実施形態における回路設計支援システム２０のハードウェア構成についての説明を行う。図３は、本発明の第１実施形態における回路設計支援システム２０のハードウェア構成図である。
【００１７】
回路設計支援システム２０は、表示部１、入力部２、ＣＰＵ３（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、補助記憶装置４、メモリ５及びシステムバス６を備える。
【００１８】
メモリ５は、回路設計支援システム２０の主記憶装置である。回路設計支援システム２０を利用する際には、本実施形態における回路設計支援システム２０を実現するための回路設計支援プログラム７が、メモリ５上に展開される。表示部１は、回路設計支援システム２０の実行結果が表示される。入力部２は、利用者が回路設計支援システム２０を操作するためのインタフェースである。ＣＰＵ３は、メモリ５上に展開されたコンピュータプログラムを実行する制御装置である。補助記憶装置４は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）及びアプリケーションプログラムが記憶されている装置である。補助記憶装置４には、本実施形態における回路設計支援システム２０を実現するための回路設計支援システムプログラム７が記憶されている。システムバス６は、表示部１、入力部２、ＣＰＵ３、補助記憶装置４及びメモリ５とデータの送受信を行う通信路である。
【００１９】
フロー解析部８は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ等のプログラム言語で記述された回路の動作記述ファイルを読み込み、動作記述ファイルに基づいてフローグラフ情報を作成する。フローグラフ情報は、ｉｆ文などの実行制御構造や、関数コールを把握することができるデータ構造を持ち、処理の分岐を辿ることができるようになっている。図４は、本発明の第１実施形態におけるフローグラフ情報を説明するための図である。図４では、Ｃ言語で記述された回路の動作記述２１から、フローグラフ情報２２が作成されている。
【００２０】
処理量解析部９は、演算器の重み係数定義ファイルとフローグラフ情報を参照して、所定のプログラムブロックの処理毎に処理量を解析し、処理量情報を作成する。演算器の重み係数定義ファイルは、演算器の消費電力の程度（指標）を表した値である。その値は、実測やシミュレーションによる消費電力値に基づいて決定してもよいし、消費電力と相関のある別の指標（回路面積等）に基づいて決定してもよい。
【００２１】
回路分割部１０は、フローグラフ情報と処理量情報から、対象のプログラムブロックの処理に対応する回路を分割して別モジュールにするかどうかを判定し、分割する回路を示す回路分割情報を作成する。
【００２２】
合成部１１は、動作合成ツールと呼ばれる一般的なＥＤＡ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ）の機能に、回路分割の機能と、クロックゲーティングや、電源遮断のための制御回路の設計機能を追加したものである。
【００２３】
合成部１１は、回路分割情報に基づいて、回路を分割した形式でＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）を作成する。回路を分割した形式とは、例えば、Ｖｅｒｉｌｏｇにおけるｍｏｄｕｌｅや、ＶＨＤＬにおけるｅｎｔｉｔｙ等、別々のモジュールになる記述形式である。
【００２４】
分割された回路モジュールは、低消費電力化のための制御を受ける対象回路である。これらに対して、回路の動作中に、クロックゲーティング、または、電源遮断のどちらかを行うことで、低消費電力を実現する。よって、合成部１１は、クロックゲーティング、または、電源遮断のための制御（条件）信号や、制御回路に関するＲＴＬを作成することが可能になっている。
【００２５】
また、合成部１１は、電源遮断を行う場合は、制御回路に関する電源情報も出力する。電源情報は、業界標準フォーマットとして、ＣＰＦ（Ｃｏｍｍｏｎ  Ｐｏｗｅｒ  Ｆｏｒｍａｔ）や、ＵＰＦ（Ｕｎｉｆｉｅｄ  Ｐｏｗｅｒ  Ｆｏｒｍａｔ）等がある。電源情報には、電源ドメインの定義や、電源ドメイン間の接続に付加するアイソレータの情報や、電源遮断時に値を保持する必要があるレジスタ変数に、リテンションＦＦを設定する等の情報が含まれる。
【００２６】
設定調整部１２は、ユーザが、入力部２により入力した情報に基づいて、省電力化対応の回路設計の設定を調整する。設定調整部１２が、ユーザが、回路の機能仕様や、事前にソフトウェアとして実装して検証した際のプロファイル情報等から分っている情報、例えば、変数が取り得る値の偏り、静的には判定できないループ回数等を、本回路設計支援システム２０のデフォルト値や、ループ回数等に反映することにより、より精度の高い処理量情報に基づいて回路ブロックを分割することができる。
【００２７】
［動作方法の説明］
次に、本実施形態における回路設計支援システム２０において、回路設計支援方法の説明を行う。図５は、本発明の第１実施形態における回路設計支援方法の全体フローチャートである。
【００２８】
（ステップＳ１）
フロー解析部８は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ等のプログラム言語で記述された回路の動作記述ファイルを読み込み、フローグラフ情報を作成する。フローグラフ情報の作成方法の詳細についての説明は、従来の動作合成ツールと同様であるため省略する。
【００２９】
（ステップＳ２）
処理量解析部９は、演算器の重み係数定義ファイルとフローグラフ情報を参照して、ｉｆ文等の分岐先毎の処理や、ｆｏｒ文等の繰り返し制御文に含まれる処理（以下、「プログラムブロック」という。）等の処理量を算出し、処理量情報を作成する。
【００３０】
処理量解析部９は、プログラムブロックの処理量を算出する。図６は、本発明の第１実施形態における回路設計支援方法において、プログラムブロックの処理量を求める方法を説明するための図である。図６（ａ）は、Ｃ言語で記載された分岐処理を含む動作レベル記述ファイルの例である。図６（ａ）の例では、処理量解析部９は、ｔｈｅｎ節とｅｌｓｅ節の２つのプログラムブロックを認識する。図６（ｂ）は、使用する演算器の決定と、その演算器の重み係数の例である。処理量解析部９は、動作レベル記述ファイルより、各プログラムブロックに含まれる変数のサイズ（ビット幅）を特定し、使用する演算器を決定する。処理量解析部９は、使用する演算器の重み係数を、演算器重み係数定義ファイルを参照して特定する。演算器の重み係数の決定方法については、テクノロジライブラリを使った論理合成結果による電力見積りに基づいて算出する方法等が考えられる。図６（ｃ）は、プログラムブロックの処理量の計算例である。処理量解析部９は、使用する演算器の種類と個数と、使用する演算器の重み係数に基づいて、各プログラムブロックの処理量を計算する。図６（ｃ）におけるｔｈｅｎ節では、８ビット乗算が２回、１６ビット加減算が２回含まれているので、８ビット乗算器が２つ、１６ビット加減算器が２つ必要である。よって、それぞれの演算器の重み係数と個数をかけて、それらを加算して処理量を求めている。つまり、処理量Ｖ＝Σ｛（演算器の重み係数）×（演算器の個数）｝である。
【００３１】
なお、図６では、ｉｆ文を例にして、分岐処理におけるプログラムブロックの処理量を計算する方法について説明したが、ｓｗｉｔｃｈ−ｃａｓｅ文におけるプログラムブロックの処理量の計算方法も同様である。
【００３２】
制御処理が、Ｃ言語のｆｏｒ文等の繰り返し処理の場合には、制御構造を考慮した処理量ＶをＶ＝（プログラムブロックの処理量）×（ループ回数）で算出する。図７（ａ）は、制御処理がｆｏｒ文の場合の例である。ｆｏｒ文のループ回数が５回となるため、ｆｏｒ文全体の処理量Ｖは、図７（ｂ）のようになる。
【００３３】
（ステップＳ３）
回路分割部１０は、処理量情報とフローグラフ情報を参照して、回路分割が必要であるかどうかを判定し、回路分割情報を作成する。回路分割部１０による回路分割情報の算出方法についての詳細については後述する。
【００３４】
（ステップＳ４）
合成部１１は、回路分割情報、フローグラフ情報に基づいて、回路を分割し、かつ、動作合成した回路の情報、及び分割した回路にクロックゲーティングを行うための制御回路の情報を含むＲＴＬ記述ファイルと、電源遮断（パワーゲーティング）を行うためのＣＰＦやＵＰＦ等の電源情報ファイルを作成する。合成部１１による動作合成方法についての詳細については後述する。
【００３５】
次に、回路分割部１０による図５のステップＳ３の処理（回路分割）、合成部１１によるステップＳ４の処理（動作合成）の詳細について説明する。図８は、本発明の第１実施形態における回路設計支援方法において、回路を分割する方法、低消費電力を実現するための制御回路を挿入する方法のフローチャートである。
【００３６】
（ステップＳ１１）
回路分割部１０は、処理量情報を参照して、回路分割判定を行う制御ブロック（分岐処理、繰り返し処理等）の処理量を参照する。
【００３７】
（ステップＳ１２）
回路分割部１０は、条件分岐構造に従って回路分割を行うかどうかを、予め設定しておいた条件を満たすかどうかで判定する。回路分割条件を満たす場合には、ステップＳ１３の処理に進み、回路分割条件を満たさない場合には、ステップＳ１５に進む。
【００３８】
回路分割条件は、回路分割を行い、その分割した回路にクロックゲーティングまたは電源遮断を行うかどうかを決定するための条件である。一般に、ｉｆ文等の制御文は、プログラムの基本構造であるため、回路動作記述中に多数存在する。そのため、ゲーティングや電源遮断を、すべての制御文に施すのではなく、省電力化に効果が高いものに施す必要性がある。
【００３９】
回路分割条件としては、例えば、処理量の値が大きいプログラムブロックから順番に、予め設定しておいた個数まで回路分割する方法や、回路分割するかどうか判定するための処理量の閾値を定めておき、処理量が閾値を超えた場合に回路分割する方法や、回路分割判定対象のプログラムブロックの処理量と、回路全体の処理量との割合に基づいて、処理量の大きいプログラムブロックから順に回路分割する方法（ユーザ指定によって、全処理量の５０％まで、回路分割する等）が考えられる。
【００４０】
（ステップＳ１３）
回路分割部１０は、回路分割判定対象のプログラムブロックに対して、回路分割を行うことを決定する。回路分割部１０は、対象のプログラムブロックが、省電力化対象である独立モジュールの回路であることを回路分割情報に記録する。
【００４１】
（ステップＳ１４）
合成部１１は、回路分割と制御回路生成や電源情報生成を含めた動作合成処理を行う。合成部１１は、回路分割情報を参照し、回路分割対象となっているプログラムブロックを、独立の回路モジュールに分割する。合成部１１は、分割された回路モジュールに対するクロックゲーティング、又は電源遮断のための回路を付加する。
【００４２】
（ステップＳ１５）
合成部１１は、通常の動作合成処理を行う。
【００４３】
本発明の第１実施形態によれば、ソフトウェアとして実装した機能ブロックのソースコード等、抽象度の高い回路動作レベル記述ファイルから、クロックゲーティングを行うための制御回路を含むＲＴＬ記述ファイル、または電源遮断（パワーゲーティング）を行うための情報を含む電源情報ファイル（ＣＰＦやＵＰＦ等）を、自動的に得ることができる。
【００４４】
本発明の第１実施形態によれば、低消費電力化するプログラムブロックを、関数毎とせずに、分岐処理、繰り返し処理等の制御構造毎にしているため、関数の分割の仕方に依存せずに、低消費電力化された回路を設計することができる。そのため、動作記述をソフトウェア実装のソースコードから流用しても、大幅な修正をすることなく、低消費電力の回路を設計することができる。
【００４５】
（第２実施形態）
［構成の説明］
はじめに、本実施形態における回路設計支援システム２０のハードウェア構成についての説明を行う。図９は、本発明の実施形態における回路設計支援システム２０のハードウェア構成図である。本実施形態における回路設計支援システム２０のハードウェア構成には、第１実施形態の回路設計支援システム２０に節電効果解析部１３が追加されている。本発明の第２実施形態は、回路ブロックの処理量だけではなく、回路ブロックが動作する確率に基づいて、回路ブロックを分割する点が、第１実施形態とは異なる。
【００４６】
節電効果解析部１３は、処理量情報、及びフローグラフ情報を参照して、回路ブロックの処理量と、回路ブロックが動作する確率を考慮して節電効果を解析し、節電効果情報を作成する。
【００４７】
回路分割部１０は、フローグラフ情報と節電効果情報から、対象のプログラムブロックの処理に対応する回路を分割して別モジュールにするかどうかを判定し、分割する回路を示す回路分割情報を作成する。
【００４８】
その他の機能ブロックの動作については、第１実施形態と同様であるため、説明を省略する。
【００４９】
［動作方法の説明］
次に、本実施形態における回路設計支援システム２０において、回路設計支援方法の説明を行う。図１０は、本発明の第２実施形態における回路設計支援方法の全体フローチャートである。
【００５０】
（ステップＳ２１）
本発明の第１実施形態の図５、ステップＳ１と同様であるため省略する。
【００５１】
（ステップＳ２２）
本発明の第１実施形態の図５、ステップＳ２と同様であるため省略する。
【００５２】
（ステップＳ２３）
節電効果解析部１３は、処理量情報とフローグラフ情報を参照して、プログラムブロックの処理量と、所定のプログラムブロックを処理する回路ブロックが動作する確率に基づいて節電効果を解析し、節電効果情報を作成する。
【００５３】
（ステップＳ２４）
回路分割部１０は、節電効果情報とフローグラフ情報を参照して、回路分割が必要であるかどうかを判定し、回路分割情報を作成する。
【００５４】
（ステップＳ２５）
本発明の第１実施形態の図５、ステップＳ４と同様であるため省略する。
【００５５】
次に、図１０のステップＳ２３の節電効果情報の算出方法の詳細について説明する。図１１は、本発明の第２実施形態の回路設計支援方法において、節電効果を解析する方法のフローチャートである。
【００５６】
（ステップＳ３１）
節電効果解析部１３は、処理量解析部９が算出したプログラムブロックの処理量を参照する。
【００５７】
（ステップＳ３２）
節電効果解析部１３は、フローグラフ情報を参照して、節電効果解析対象のプログラムブロックが、分岐処理であるかどうかを確認する。分岐処理である場合には、ステップＳ３４の処理に進み、分岐処理ではない場合には、ステップＳ３３の処理に進む。
【００５８】
（ステップＳ３３）
節電効果解析部１３は、フローグラフ情報を参照して、処理量算出対象のプログラムブロックが、ループ回数が固定の繰り返し処理であるかどうかを確認する。ループ回数が固定の繰り返し処理である場合には、ステップＳ３５に進み、ループ回数が固定の繰り返し処理ではない場合には、ステップＳ３６の処理に進む。
【００５９】
（ステップＳ３４）
節電効果解析部１３は、分岐処理における分岐条件毎の確率を計算する。図１２は、本発明の第２実施形態における回路設計支援方法において、ｉｆ文を例にした分岐条件の確率を求める方法を説明するための動作レベル記述ファイルの例である。節電効果解析部１３は、ｃ１〜ｃ３が、０又は１をとる確率は、それぞれ０．５で等しいとして、分岐条件の確率を算出する。図１２のｉｆ文において、節電効果解析部１３は、ｔｈｅｎ節の処理が行われる確率Ｐｔとして、３／８を算出し、ｅｌｓｅ節の処理が行われる確率Ｐｆとして、５／８を算出し、ステップＳ３７の処理に進む。
【００６０】
（ステップＳ３５）
節電効果解析部１３は、フローグラフ情報を参照して、ループ回数を算出し、ステップＳ３７の処理に進む。
【００６１】
（ステップＳ３６）
節電効果解析部１３は、ｆｏｒ文の中に、ｂｒｅａｋ文やｃｏｎｔｉｎｕｅ文を含んでいる場合や、ｗｈｉｌｅ文や、ｄｏ−ｗｈｉｌｅ文のように、ループ回数を静的に判定することが難しい場合には、予め設定したデフォルト値や、ユーザが指定した値を、制御文全体の処理量の算出に使用するための値として算出する。本実施形態の回路設計支援システム２０では、設定調整部１２を備えることで、処理量の自動算出が困難な場合に対応している。
【００６２】
（ステップＳ３７）
節電効果解析部１３は、プログラムブロックの処理量情報と、プログラムブロックの処理を行う回路ブロックが動作する確率から、節電効果の解析を行う。
【００６３】
節電効果の解析の対象となるプログラムブロックが、繰り返し処理に属する場合の節電効果情報は、本発明の第１実施形態における処理量情報と同一である。すなわち、節電効果を（プログラムブロックの処理量）×（ループ回数）で算出する。
【００６４】
節電効果の解析の対象となるプログラムブロックが、分岐処理に属する場合には、節電効果は、処理量情報とｉｆ文の分岐確率を使って、分岐先のプログラムブロック毎に計算する。ｔｈｅｎ節のプログラムブロックに対して、クロックゲーティング（または、電源遮断）を行う場合は、ｉｆ条件式が偽の場合にｔｈｅｎ節の回路へのクロック（または電源供給）を止めて消費電力を下げることができるので、節電効果を、ｔｈｅｎ節の節電効果Ｅｔ＝（条件式が偽になる確率）＊（ｔｈｅｎ節の処理量）で計算する。同様にｅｌｓｅ節は、ｅｌｓｅ節の節電効果Ｅｆ＝（条件式が真になる確率）＊（ｅｌｓｅ節の処理量）で計算する。
【００６５】
例えば、図１２のｉｆ文において、ｔｈｅｎ節の処理量が３０であり、ｅｌｓｅ節の処理量が１５であり、ｔｈｅｎ節の分岐条件が成立する場合の確率が３／８、ｅｌｓｅ節の分岐条件が成立する場合の確率が５／８であるとする。この場合、ｔｈｅｎ節ブロックの回路にクロックゲーティングまたは電源遮断を行うと、５／８×３０＝１８．７５である。同様に、ｅｌｓｅ節ブロックの回路に対して、クロックゲーティング又は電源遮断を行うと、３／８×１５＝５．６２５である。この例では、いずれか一方のプログラムブロックに対して、省電力化を行う場合は、ｔｈｅｎ節ブロックの回路に対して省電力化を行うと節電効果が大きい。
【００６６】
分岐処理が、入れ子構造になっている場合には、上位プログラムブロックの分岐条件確率を、下位プログラムブロックの節電効果の計算に利用する。図１３は、本発明の第２実施形態における回路設計支援方法において、回路分割判定対象のプログラムブロックが、入れ子構造となっている場合についての節電効果の算出方法を説明するための図である。図１３のプログラムブロック３２は、プログラムブロック３１の入れ子構造になっている。この場合は、プログラムブロック３２の制御構造を考慮した節電効果を算出する際に、処理Ｂに遷移する確率だけではなく、処理Ａに遷移する確率も考慮する。
【００６７】
制御文に対する回路分割は、制御文全体となる場合や、制御文の一部となる場合がある。例えば、ｉｆ文においては、ｔｈｅｎ節のみ、又はｅｌｓｅ節のみになる場合と、ｔｈｅｎ節及びｅｌｓｅ節の両方になる場合がある。
【００６８】
図１４は、本発明の実施形態における回路設計支援システム２０によって設計された回路例である。図１４の例では、ｔｈｅｎ節ブロック回路４３、ｅｌｓｅ節を含む残りのブロック回路４４に回路が分割されている。ｔｈｅｎ節ブロック回路４３は、低消費電力化が行われているが、ｅｌｓｅ節を含む残りのブロック回路４４では、低消費電力化が行われていない。ｔｈｅｎ節ブロック回路４３へのクロック信号は、制御回路４１からクロックゲーティング信号が出力された場合は停止するが、ｅｌｓｅ節を含む残りのブロック回路４４へは、常にクロック信号が入力される。
【００６９】
図１５は、本発明の実施形態における回路設計支援システム２０によって、入れ子構造を含む動作レベル記述ファイルから設計された回路の例である。この例では、上位のｔｈｅｎ節に含まれるｉｆ文のｅｌｓｅ節も、クロックゲーティングの対象になっている。入れ子のｅｌｓｅ節ブロック回路５６に対しては、上位のｔｈｅｎ節ブロック回路５５へのクロックが停止する際も、クロックが停止する。
【００７０】
また、分岐処理が、入れ子構造になっている場合に、上位の分岐処理のプログラムブロック毎に節電効果を計算する場合には、下位の分岐処理全体の処理量を計算することにより、上位プログラムブロックの分岐処理の各節の節電効果を求めてもよい。図１６は、本発明の第２実施形態における回路設計支援方法において、回路分割判定対象のプログラムブロックが、入れ子構造となっている場合の動作レベル記述ファイルの例である。図１６の例では、上位の分岐処理のｔｈｅｎ節の節電効果の計算に使用する処理量を、上位の分岐処理のｔｈｅｎ節に含まれる分岐処理全体の処理量を計算することにより求めてもよい。
【００７１】
以下、分岐処理全体の処理量を計算する方法について説明する。
【００７２】
ｉｆ文構造が、ｉｆ−ｔｈｅｎ構造の場合は、Ｖ＝（条件式が真になる確率）×（ｔｈｅｎ節の処理量）で計算する。
【００７３】
ｉｆ文構造が、ｉｆ−ｔｈｅｎ−ｅｌｓｅ構造の場合は、Ｖ＝（条件式が真になる確率）×（ｔｈｅｎ節の処理量）＋（条件式が偽になる確率）×（ｅｌｓｅ節の処理量）で計算する。
【００７４】
ｉｆ文構造が、ｉｆ−ｔｈｅｎ−ｅｌｓｅ−ｉｆ  ．．．．構造の場合について説明する。図１７（ａ）は、ｉｆ−ｔｈｅｎ−ｅｌｓｅ−ｉｆ  ．．．．構造の場合の例である。２段目以降のｉｆ文節の処理が行われる確率については、ｉｆ文節の条件式に、前段までの全てのｉｆ文節の条件式の否定を、ａｎｄ演算により追加した条件式を用いて、２段目以降のｉｆ文節の処理量を計算する。図１７（ｂ）は、図１７（ａ）のｉｆ−ｔｈｅｎ−ｅｌｓｅ−ｉｆ  ．．．．構造において、２段目以降のｉｆ文節の処理が行われる確率を求めるための条件式である。Ｃ２’は、２段目のｉｆ文節の処理が行われる確率を求めるための条件式に用いられる。Ｃ２’は、１段目のｉｆ文節の条件Ｃ１が成立せず、かつ、２段目のｉｆ文節の条件式Ｃ２が成立する場合の条件式である。Ｃ３’は、３段目のｉｆ文節の処理が行われる確率を求めるための条件式に用いられる。Ｃ３’は、１段目のｉｆ文節の条件Ｃ１が成立せず、かつ、２段目のｉｆ文節の条件Ｃ２が成立せず、かつ、３段目のｉｆ文節の条件式Ｃ３が成立する場合の条件式である。Ｃｅは、４段目のｉｆ文節の処理が行われる確率を求めるための条件式に用いられる。Ｃｅは、１段目のｉｆ文節の条件Ｃ１が成立せず、かつ、２段目のｉｆ文節の条件Ｃ２が成立せず、かつ、３段目のｉｆ文節の条件式Ｃ３が成立しない場合の条件式である。したがって、図１７（ａ）のｉｆ−ｔｈｅｎ−ｅｌｓｅ−ｉｆ  ．．．．構造全体の処理量Ｖは、図１７（ｃ）のようになる。
【００７５】
制御処理が、Ｃ言語のｓｗｉｔｃｈ−ｃａｓｅ文の場合には、条件変数の取り得る値の総数の逆数を、各ｃａｓｅ節への分岐確率とする。また、ｄｅｆａｕｌｔ節への分岐確率は、他のｃａｓｅ節への分岐確率の総和を、１から引いたものとする。図１８（ａ）は、制御処理がｓｗｉｔｃｈ−ｃａｓｅ文の場合の例である。Ｃの取り得る値の総数が４である場合には、ｓｗｉｃｈ−ｃａｓｅ文全体の処理量Ｖは、図１８（ｂ）のようになる。
【００７６】
以上が、分岐処理全体の処理量を計算する方法についての説明である。上述の方法で、下位の分岐処理全体の処理量を計算することにより、上位プログラムブロックの分岐処理の各節の節電効果を求めてもよい。
【００７７】
次に、回路分割部１０による図１０のステップＳ２４の処理（回路分割）、合成部１１によるステップＳ２５の処理（動作合成）の詳細について説明する。図１９は、本発明の第２実施形態における回路設計支援方法において、回路を分割する方法、低消費電力を実現するための制御回路を挿入する方法のフローチャートである。
【００７８】
（ステップＳ４１）
回路分割部１０は、節電効果情報を参照して、回路分割判定を行う制御ブロック（分岐処理、繰り返し処理等）の節電効果を参照する。
【００７９】
（ステップＳ４２）
回路分割部１０は、条件分岐構造に従って回路分割を行うかどうかを、予め設定しておいた条件を満たすかどうかで判定する。回路分割条件を満たす場合には、ステップＳ４３の処理に進み、回路分割条件を満たさない場合には、ステップＳ４５に進む。
【００８０】
回路分割条件は、回路分割を行い、その分割した回路にクロックゲーティングまたは電源遮断を行うかどうかを決定するための条件である。一般に、ｉｆ文等の制御文は、プログラムの基本構造であるため、回路動作記述中に多数存在する。そのため、ゲーティングや電源遮断を、すべての制御文に施すのではなく、省電力化に効果が高いものに施す必要性がある。
【００８１】
回路分割条件としては、例えば、節電効果の値が大きいブロックから順番に、予め設定しておいた個数まで回路分割する方法や、回路分割するかどうか判定するための節電効果の閾値を定めておき、節電効果が閾値を超えた場合に回路分割する方法や、回路分割判定対象のプログラムブロックの節電効果と、回路全体の処理量との割合に基づいて、節電効果の大きいプログラムブロックから順に回路分割する方法（ユーザ指定によって、全処理量の５０％まで、回路分割する等）が考えられる。
【００８２】
（ステップＳ４３）
回路分割部１０は、回路分割判定対象の制御ブロックに対して、回路分割を行うことを決定する。回路分割部１０は、対象の制御ブロックが、省電力化対象である独立モジュールの回路であることを回路分割情報に記録する。
【００８３】
（ステップＳ４４）
合成部１１は、回路分割と制御回路生成や電源情報生成を含めた動作合成処理を行う。合成部１１は、回路分割情報を参照し、回路分割対象となっているブロックを、独立の回路モジュールに分割する。合成部１１は、分割された回路モジュールに対するクロックゲーティング、又は電源遮断のための回路を付加する。
【００８４】
（ステップＳ４５）
合成部１１は、通常の動作合成処理を行う。
【００８５】
本発明の第２実施形態によれば、処理量情報ではなく、節電効果情報に基づいて、省電力化対象とする回路ブロックを決定することにより、低消費電力化の効果の精度が、より高い回路を自動的に設計することができる。
【００８６】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００８７】
１  表示部
２  入力部
３  ＣＰＵ
４  補助記憶装置
５  メモリ
６  システムバス
７  回路設計支援システムプログラム
８  フロー解析部
９  処理量解析部
１０  回路分割部
１１  合成部
１２  設定調整部
１３  節電効果解析部
２０  回路設計支援システム
２１  動作記述
２２  フローグラフ情報
３１  プログラムブロック
３２  プログラムブロック
４１  制御回路
４２  ＡＮＤ回路
４３  ｔｈｅｎ節ブロック回路
４４  ｅｌｓｅ節を含む残りのブロック回路
５１  制御回路
５２  ＯＲ回路
５３  ＡＮＤ回路
５４  ＡＮＤ回路
５５  ｔｈｅｎ節ブロック回路
５６  入れ子のｅｌｓｅ節ブロック回路
【図１】
2012243211.tif 000003
【図２】
2012243211.tif 000004
【図３】
2012243211.tif 000005
【図４】
2012243211.tif 000006
【図５】
2012243211.tif 000007
【図６】
2012243211.tif 000008
【図７】
2012243211.tif 000009
【図８】
2012243211.tif 000010
【図９】
2012243211.tif 000011
【図１０】
2012243211.tif 000012
【図１１】
2012243211.tif 000013
【図１２】
2012243211.tif 000014
【図１３】
2012243211.tif 000015
【図１４】
2012243211.tif 000016
【図１５】
2012243211.tif 000017
【図１６】
2012243211.tif 000018
【図１７】
2012243211.tif 000019
【図１８】
2012243211.tif 000020
【図１９】
2012243211.tif 000021