(57)【要約】【課題】消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置を提供する。【解決手段】動作記述またはＲＴＬ記述に基づいてグラフを生成するグラフ生成手段１２、１３と、グラフを小グラフに分割する分割手段１４と、夫々の小グラフからモジュール回路を夫々生成する回路生成処理手段１５と、全モジュール回路の合計の消費電力を見積もり、消費電力が所定条件を満たしているか否かを判定する消費電力見積／評価手段１６と、を備え、満たしていない場合、分割手段に小グラフをさらに分割させ、満たしている場合、モジュール回路毎にゲーティッドクロックされた半導体集積回路のＲＴＬ記述を生成する半導体集積回路合成装置。【選択図】        図３
2010113405.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の動作記述またはレジスタ転送レベル記述に基づいて、演算をノードとし、演算間のデータの流れをエッジとしたグラフを生成するグラフ生成手段と、
該生成されたグラフを複数の小グラフに分割する分割手段と、
スケジューリングおよびハードウェア部品の割り当てを行って前記夫々の小グラフからモジュール回路を夫々生成する回路生成処理手段と、
非動作中のモジュール回路にはクロック供給しないこととして前記回路生成処理手段が生成した全モジュール回路の合計の消費電力を見積もり、該見積もった消費電力が所定条件を満たしているか否かを判定する消費電力見積／評価手段と、
を備え、
前記消費電力見積／評価手段が見積もった消費電力が前記所定条件を満たしていないと判定した場合、前記分割手段に前記分割後の小グラフをさらに分割させ、前記消費電力見積／評価手段が前記見積もった消費電力が前記所定条件を満たしていると判定した場合、前記回路生成処理手段が生成したモジュール回路に基づき、モジュール回路毎にゲーティッドクロックされた半導体集積回路のレジスタ転送レベル記述を生成する、ことを特徴とする半導体集積回路合成装置。
【請求項２】
前記所定条件は、予め定められる消費電力制約を充足することか、または消費電力が最小になること、であることを特徴とする請求項１に記載の半導体集積回路合成装置。
【請求項３】
前記分割手段は、消費電力が最大のモジュール回路に対応する小グラフを分割する、ことを特徴とする請求項１または２に記載の半導体集積回路合成装置。
【請求項４】
前記分割手段は、グラフのデータパスの略中央に位置するエッジで該グラフを２つの小グラフに分割する、ことを特徴とする請求項１〜３の何れか一つに記載の半導体集積回路合成装置。
【請求項５】
前記分割手段は、グラフのデータパスの略中央に位置するエッジが複数ある場合、境界を横切るエッジの数が少ない部分で該グラフを分割する、ことを特徴とする請求項４に記載の半導体集積回路合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置に関する。
【背景技術】
【０００２】
近年、半導体集積回路の高集積化に伴い、消費電力が増加する傾向がある。したがって、設計者には消費電力をできるだけ削減した半導体集積回路の設計を行うことが求められる。
【０００３】
従来、消費電力を削減した半導体集積回路を設計する技術としては、動作記述に含まれる一つのスレッドを複数に分割し、分割後の夫々のスレッドを実行する夫々のモジュールに対して夫々ゲーティッドクロックを行う半導体集積回路を生成する技術がある（例えば特許文献１参照）。この技術により設計される半導体集積回路は、分割後の夫々のモジュールに対し動作するときにのみクロックを供給するので、非動作のモジュールにこれまで供給していたクロックに基づく電力の分だけ消費電力が削減されたものとなる。
【０００４】
しかしながら、上記従来の技術によれば、どのように分割するかを設計者が決めなければならないので、設計した半導体集積回路の消費電力削減効果が十分ではなかった場合、再度スレッドを分割しなおす作業が必要になる。すなわち、上記従来技術によれば、設計者にかかる負担が大きく、設計に長い時間がかかることになるため、効率的な設計作業を行うことができなかった。
【０００５】
【特許文献１】特開２００２−３６６５９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、半導体集積回路の動作記述またはレジスタ転送レベル記述に基づいて、演算をノードとし、演算間のデータの流れをエッジとしたグラフを生成するグラフ生成手段と、該生成されたグラフを複数の小グラフに分割する分割手段と、スケジューリングおよびハードウェア部品の割り当てを行って前記夫々の小グラフからモジュール回路を夫々生成する回路生成処理手段と、非動作中のモジュール回路にはクロック供給しないこととして前記回路生成処理手段が生成した全モジュール回路の合計の消費電力を見積もり、該見積もった消費電力が所定条件を満たしているか否かを判定する消費電力見積／評価手段と、を備え、前記消費電力見積／評価手段が見積もった消費電力が前記所定条件を満たしていないと判定した場合、前記分割手段に前記分割後の小グラフをさらに分割させ、前記消費電力見積／評価手段が前記見積もった消費電力が前記所定条件を満たしていると判定した場合、前記回路生成処理手段が生成したモジュール回路に基づき、モジュール回路毎にゲーティッドクロックされた半導体集積回路のレジスタ転送レベル記述を生成する、ことを特徴とする半導体集積回路合成装置が提供される。
【発明の効果】
【０００８】
本発明によれば、消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置を提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【０００９】
まず、スレッドおよびゲーティッドクロックについて説明する。スレッドとは、例えば入力データを受け取り、処理を行い、出力データを生成する動作単位を指す。この動作単位は、回路記述としては入／出力ポートを持つモジュールとして定義され、さらにモジュールのポートは信号で接続される。
【００１０】
同期回路ではクロック信号によりデータをレジスタに保持する。すべてのレジスタにクロックが供給されると、論理回路を構成するトランジスタがオンオフ、スイッチングを起こすため電力を消費する。このスイッチング回数を減らすために、新しいデータを取り込む必要がなくレジスタの値を保持するクロックサイクルでは、レジスタへのクロック供給を止める設計（ゲーティッドクロック）が用いられている。
【００１１】
図１に、スレッドが１つの場合(スレッド分割前)とスレッドが３つの場合（スレッド分割後）の消費電力の差を示す。モジュール一つが複数のスレッドを有する場合があるが、以降の説明においては一つのスレッドが一つのモジュールに対応するものとして説明する。１スレッド(モジュール)の場合、同モジュールは時刻Ｔまでクロックが供給され、平均Ｗ０の消費電力を消費する。一方これを３つのスレッド（モジュール）に分割し、各モジュールが動作するときにのみクロックを供給し、動作しないときにクロックを止めると、非動作モジュールの回路のトランジスタがスイッチしないため、図１下図に示すように消費電力が削減される。
【００１２】
一般的に、半導体集積回路の全体または一部について、予め消費電力の上限の制約が与えられる。従来技術によれば、設計者が勘に頼ってスレッド分割を行うこととなるため、消費電力の制約以下の半導体集積回路の設計を得るまでに時間と労力がかかった。これに対し、本発明の実施の形態は、分割後の消費電力の見積もりに基づいて十分な消費電力削減効果が得られるまで自動的にスレッド分割を繰り返すので、設計者に負担をかけることなく、また短時間で、消費電力の制約以下の半導体集積回路を得ることができる。
【００１３】
以下に添付図面を参照して、この発明にかかる半導体集積回路合成装置および半導体集積回路合成方法の最良な実施の形態を詳細に説明する。
【００１４】
（第１の実施の形態）
図２は、本発明にかかる第１の実施の形態の半導体集積回路合成装置の構成を示すブロック図である。第１の実施の形態にかかる半導体集積回路は、文献「D.D.Gajski,L.Ramachandran,"Introduction  to  High-level  Synthesis",IEEE  Design  &  Test  Computer,  Winter  1994,  pp.44-54.」にて紹介されているような方法を用いて、動作記述であるＳｙｓｔｅｍＣ記述から動作合成を行う。第１の実施の形態にかかる半導体集積回路は、その動作合成処理の途中でスレッド分割を実行する。
【００１５】
すなわち、図２に示すように、第１の実施の形態の半導体集積回路合成装置１０は、全体制御部１１と、入力記述解釈部１２と、コントロールデータフローグラフ（ＣＤＦＧ）生成部１３と、スレッド分割部（分割手段）１４と、回路生成処理部（回路生成処理手段）１５と、消費電力見積／評価部（消費電力見積／評価手段）１６と、クロックゲート生成部１７と、レジスタ転送レベル（Register  Transfer  Level；ＲＴＬ）記述生成部１８と、を備える。
【００１６】
入力記述解釈部１２およびＣＤＦＧ生成部１３は、導体集積回路のＳｙｓｔｅｍＣ記述から、演算をノードとし、演算間のデータの流れをエッジとしたグラフであるＣＤＦＧを生成するグラフ生成手段を構成する。すなわち、入力記述解釈部１２は、入力されるクロック周期、レイテンシ、消費電力に関する制約およびＳｙｓｔｅｍＣ記述を解釈する。ＣＤＦＧ生成部１３は、入力記述解釈部１２が解釈したＳｙｓｔｅｍＣ記述からＣＤＦＧを生成する。
【００１７】
スレッド分割部１４は、ＣＤＦＧ生成部１３が生成したＣＤＦＧを複数のＣＤＦＧに自動分割する。
【００１８】
回路生成処理部１５は、レイテンシ制約に基づき、スレッド分割部１４が分割した複数のＣＤＦＧに対してスケジューリングと、演算器、レジスタ、メモリなどのハードウェア部品のアロケーションと、該アロケートされたハードウェア部品間を接続するデータパスの生成と、該生成されたデータパスを制御する有限状態機械（ＦＳＭ）の生成とを行うことにより、分割されたスレッド（モジュール）毎の回路の構成（モジュール回路）である複数のデータパスグラフ（ＤＰＧ）を生成する。
【００１９】
消費電力見積／評価部１６は、テクノロジライブラリを用いて、非動作中のモジュール回路にはクロック供給しないこととして全モジュール回路の消費電力を見積もり、十分な消費電力削減効果が得られるように分割されたか否かを判定評価する。
【００２０】
クロックゲート生成部１７は、回路生成処理部１５が生成した夫々のデータパスグラフに対し、クロックゲート回路を夫々生成する。ＲＴＬ記述生成部１８は、夫々のモジュールのデータパスグラフおよび生成されたクロックゲート回路に基づき、半導体集積回路全体のＲＴＬ記述を生成する。
【００２１】
全体制御部１１は、以上の各構成要素を必要に応じて呼び出して制御する。
【００２２】
図３は、半導体集積回路合成装置１０のハードウェア構成を示す図である。半導体集積回路合成装置１０は、ＣＰＵ（Central  Processing  Unit）１、ＲＯＭ（Read  Only  Memory）２、ＲＡＭ（Random  Access  Memory）３、表示部４、入力部５を有している。半導体集積回路合成装置１０では、これらのＣＰＵ１、ＲＯＭ２、ＲＡＭ３、表示部４、入力部５がバスラインを介して接続されている。
【００２３】
ＣＰＵ１は、半導体集積回路の合成を行うコンピュータプログラムである半導体集積回路合成プログラム６を実行する。表示部４は、液晶モニタなどの表示装置であり、ＣＰＵ１からの指示に基づいて、操作画面などの設計者に対する出力情報を表示する。入力部５は、マウスやキーボードを備えて構成され、設計者からの半導体集積回路合成装置１０の操作が入力される。入力部５へ入力された操作情報は、ＣＰＵ１へ送られる。
【００２４】
半導体集積回路合成プログラム６は、ＲＯＭ２内に格納されており、バスラインを介してＲＡＭ３へロードされる。ＣＰＵ１はＲＡＭ３内にロードされた半導体集積回路合成プログラム６を実行する。具体的には、半導体集積回路合成装置１０では、設計者による入力部５からの指示入力に従って、ＣＰＵ１がＲＯＭ２内から半導体集積回路合成プログラム６を読み出してＲＡＭ３内のプログラム格納領域に展開して各種処理を実行する。ＣＰＵ１は、この各種処理に際して生じる各種データをＲＡＭ３内に形成されるデータ格納領域に一時的に記憶させておく。なお、半導体集積回路合成プログラム６は、ＤＩＳＫなどの記憶装置に格納しておいてもよい。また、半導体集積回路合成プログラム６は、ＤＩＳＫなどの記憶装置にロードしてもよい。
【００２５】
本実施の形態の半導体集積回路合成装置１０で実行される半導体集積回路合成プログラム６は、前述の各部（全体制御部１１、入力記述解釈部１２、ＣＤＦＧ生成部１３、スレッド分割部１４、回路生成処理部１５、消費電力見積／評価部１６、クロックゲート生成部１７、およびＲＴＬ記述生成部１８）を含む構成となっており、上記各部が主記憶装置上にロードされ、全体制御部１１、入力記述解釈部１２、ＣＤＦＧ生成部１３、スレッド分割部１４、回路生成処理部１５、消費電力見積／評価部１６、クロックゲート生成部１７、およびＲＴＬ記述生成部１８が主記憶装置上に生成される。
【００２６】
なお、本実施形態の半導体集積回路合成装置１０で実行される半導体集積回路合成プログラム６を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の半導体集積回路合成装置１０で実行される半導体集積回路合成プログラム６をインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、本実施形態の半導体集積回路合成プログラム６を、ＲＯＭ等に予め組み込んで本実施形態の半導体集積回路合成装置１０に提供するように構成してもよい。
【００２７】
次に、半導体集積回路合成装置１０の動作を説明する。図４は、半導体集積回路合成装置１０の動作を説明するフローチャートである。図４において、まず、入力記述解釈部１２は、クロック周期、レイテンシ制約、消費電力制約を読み取るとともに、入力されたＳｙｓｔｅｍＣ記述の構文と意味解釈を実行する（ステップＳ１）。
【００２８】
ＳｙｓｔｅｍＣ記述の入力例を図５および図６に示す。図５にはピンが定義されている。図５において、入力として、クロックｃｌｋ、リセットｒｅｓｅｔ、起動信号にｔｈｒｅａｄ１＿ｓ、３２ビットデータａ，ｂ、６４ビットデータｃが定義されている。また、出力として、ビジー信号ｔｈｒｅａｄ１＿ｂ、終了信号ｔｈｒｅａｄ１＿ｅ、出力データｏが定義されている。
【００２９】
図６にはクロックで駆動されるスレッド（関数）が記述されている。図６において、ｔｈｒｅａｄ１＿ｓがｔｒｕｅになるとｄｏ＿ｗｈｉｌｅ（）以下のアルゴリズム記述部分の演算を行い、出力ｏに結果を受け渡す。演算中、ビジー信号ｔｈｒｅａｄ１＿ｂはｔｕｒｅに、終了後にｆａｌｓｅになる。また演算が終了すると終了信号ｔｈｒｅａｄ１＿ｅはｔｒｕｅになる。
【００３０】
クロック周期、レイテンシ制約、および消費電力制約の入力例を図７に示す。図示するように、クロック周期、レイテンシ制約および低消費電力制約はコマンドで与えられる。
【００３１】
ＣＤＦＧ生成部１３は、ステップＳ１にて解釈されたＳｙｓｔｅｍＣ記述からＣＤＦＧを生成する（ステップＳ２）。
【００３２】
図８左図は、図６のアルゴリズム記述部分から生成されたＣＤＦＧである。○はノードを示し、変数または演算器である。○間の有向線分はデータの流れを示す。またマルチプレクサは特別な記号で示す。
【００３３】
スレッド分割部１４は、ステップＳ２にて生成されたＣＤＦＧを取り込み、複数のＣＤＦＧに分割する（ステップＳ３）。図９は、ステップＳ３におけるスレッド分割部１４による分割の手順を説明するフローチャートである。図９において、まず、スレッド分割部１４は、入力ノードからグラフをトレースし、パスを生成する（ステップＳ１１）。そして、スレッド分割部１４は、データパスの中央に位置するエッジを見出す（ステップＳ１２）。最後に、スレッド分割部１４は、前記見出した中央に位置するエッジを境界として、境界を横切る接続数が最小になるように２つのグラフに分割する（ステップＳ１３）。
【００３４】
例えば、図８左図のパスとして、スレッド分割部１４は、[ａ，＋，＊，ｔ，ＭＵＸ，ｏ]、[ａ，＋，＊，ｔ，>，ＭＵＸ，ｏ]、[ｂ，＋，＊，ｔ，ＭＵＸ，ｏ]、[ｂ，＋，＊，ｔ，＞，ＭＵＸ，ｏ]を抽出する。第１のパスでは[＊，ｔ]が、第２のパスでは、[ｔ，＞]が中央に位置し、分割候補のエッジになる。第３、第４のパスの候補も前者２つと同じである。エッジ[＊，ｔ]の＊の接続先は１つ、エッジ[ｔ，＞]のｔの接続先は２つある。スレッド分割部１４は、接続数の少ない方である[＊，ｔ]を選択して分割する。ただし、スレッド分割部１４は、繰り返しループ中のデータパスについてはトレースしない。そして、スレッド分割部１４は、分割後のエッジの端点に変数（ノード）を挿入する。スレッド分割部１４は、ＣＤＦＧの分割後のＣＤＦＧに変数ｔをノードとしてコピーする。こうして分割されたＣＤＦＧは、図８右図のようになる。
【００３５】
回路生成処理部１５は、レイテンシ制約に基づき、ステップＳ３にて分割された夫々のＣＤＦＧから夫々ＤＰＧを生成する（ステップＳ４）。
【００３６】
図１０は、図８右図の分割されたＣＤＦＧの上部のＣＤＦＧから生成されたＤＰＧを説明する図である。ｒｘはレジスタを、逆向きの台形は演算器を、端子記号はマルチプレクサを示す。マルチプレクサは図右にあるＳｙｓｔｅｍＣのレジスタ出力によって制御され、点線は制御信号を示している。この例は、３ステートで実行される回路である。
【００３７】
消費電力見積／評価部１６は、生成されたＤＰＧに基づき、テクノロジライブラリを使用して消費電力を見積もり、見積もった消費電力結果が消費電力制約を満足するか否かを判定評価する（ステップＳ５）。見積もった消費電力結果が消費電力制約を満足しないと判定した場合、ステップＳ３に移行する。
【００３８】
テクノロジライブラリは、論理合成で用いる基本セルライブラリであり、設計者の入力により与えられる。テクノロジライブラリには、論理セル／フリップフロップ／ラッチなどのセルのサイズ（面積ｍ２）、ピン間遅延（ｐ  ｓｅｃ）、内部の容量（ｐｆ）、利用可能な電源電圧（Ｖ)などが格納されている。また、テクノロジライブラリには、本装置でアロケーションが可能な各種ビット幅の演算器のサイズ（ｍ２)、レジスタのサイズ（ｍ２）、キャパシタンス（ｐｆ)が格納されている。
【００３９】
ステップＳ５の消費電力見積／評価部１６の動作をさらに具体的に説明する。ＣＭＯＳトランジスタからなる論理回路においては、トランジスタのオンオフ、スイッチングに起因するモジュールｉの消費電力は次の式で求められる。本例ではトランジスタのスイッチング確率を０．５としている。
【００４０】
【数１】
2010113405.tif 000003
【００４１】
ここで、
Ｎｇｉ：モジュールｉの組み合わせ回路部分の面積（ゲート数）
Ｎｒｉ：モジュールｉのレジスタの面積（ビット数）
Ｃｇ：組み合わせ回路部分の1単位面積（１ゲート）あたりのキャパシタンス
Ｃｒ：レジスタの1面積（１ビット）あたりのキャパシタンス
Ｖ：電源電圧
ｆ：クロック周波数
である。
【００４２】
Ｎｇｉは、モジュールｉに含まれる演算器やマルチプレクサ全部の面積（ゲート数）であり、消費電力見積／評価部１６は、テクノロジライブラリの値を用いてＮｇｉを計算する。図１０のＤＰＧは、３２ビット加算器が１つ、３２ビット減算器が１つ、３２ビット乗算器が１つ、２ビット加算器が１つから構成される。
【００４３】
Ｎｒｉは、モジュールｉに含まれるレジスタのビット数である。レジスタｒａ、ｒｂは３２ビット、ｒｔｍｐ１、ｒｔｍｐ２も３２ビット、ｒｔ１は６４ビット、ＦＳＭは３ステートで、ｒｓｔ、ｒｎｓｔとも２ビットである。これらを合計すると、１９８ビットである。消費電力見積／評価部１６は、これらのレジスタビット数分の面積をテクノロジライブラリから取り出す。
【００４４】
消費電力見積／評価部１６は、回路のキャパシタンスをテクノロジライブラリから、また電源電圧を制約またはテクノロジライブラリから求め、クロック周期は制約として与えられたものを用いる。なお、このモジュールのレイテンシＬｉは、３ステートで動作するため３である。消費電力見積／評価部１６は、式１を実行してモジュールｉの消費電力を求めるとともに、レイテンシを計算する。
【００４５】
そして、消費電力見積／評価部１６は、次の式を実行して、非動作中のモジュールにはクロック供給しないこととした全モジュールの動作時間あたりの消費電力を求める。
【００４６】
【数２】
2010113405.tif 000004
【００４７】
消費電力見積／評価部１６は、式２を実行することによって求めた全モジュールの動作時間あたりの消費電力が十分に削減されているか否かを判定する。すなわち、以下に示す評価関数Ｆの真偽を判定する。
【００４８】
【数３】
2010113405.tif 000005
【００４９】
ここで、Ｐｃｏｎｓｔは消費電力制約、Ｐａｌｌ＿ｃは現在の消費電力見積もり値、Ｐａｌｌ＿ｏｌｄは分割前の消費電力見積もり値である。
【００５０】
評価関数が真すなわち、全モジュール動作時間あたりの全モジュール消費電力が消費電力制約を満足、または分割前の消費電力見積もり値が分割後の消費電力見積もり値より小さい場合、消費電力見積／評価部１６は、消費電力が十分に削減されていると判定する。評価関数が偽の場合は、消費電力見積／評価部１６は消費電力が十分に削減されていないと判定する。消費電力見積／評価部１６が消費電力が十分に削減されていないと判定した場合、ステップＳ３に戻ってスレッド分割部１４は分割したスレッドをさらに分割する。
【００５１】
スレッド分割部１４は、再分割を行う場合、消費電力量が最大のモジュールに対応するスレッドを分割対象とする。すなわち、分割対象のモジュールは、以下の式で与えられるモジュールＭｉである。
【００５２】
【数４】
2010113405.tif 000006
【００５３】
クロックゲート生成部１７は、夫々のモジュールに対し、夫々クロックゲート回路を生成する（ステップＳ６）。最後に、ＲＴＬ記述生成部１８は、夫々のモジュールのＤＰＧおよび生成されたクロックゲート回路に基づき、ＲＴＬ記述を生成する（ステップＳ７）。ＲＴＬは例えばｖｅｒｉｌｏｇやＶＨＤＬなどのハードウェア記述言語で記述される。
【００５４】
図１１は分割後のモジュールの一例を説明する図である。ｘｘ＿ｓはモジュールを起動するスタート信号、ｘｘ＿ｂはビジー(動作中を示す)信号、ｘｘ＿ｅは処理終了信号である。スタート信号がアサートされている時にはクロックをイネーブルし、終了信号がアサートされたらディスイネーブルする。よってゲーティッドクロックのイネーブル信号は
【００５５】
【数５】
2010113405.tif 000007
【００５６】
となる。ゲーティッドクロックは例えば図１２のようにデータラッチとＡＮＤ論理を用いて構成される。クロックゲート生成部１７は、夫々のモジュールに対して夫々１つのデータラッチとＡＮＤ論理回路を生成する。ここで、信号極性により、必ずしもＡＮＤである必要はなくＯＲ論理でも実現可能である。
【００５７】
以上述べたように、第１の実施の形態によれば、動作記述に含まれるスレッドに対応するコントロールデータフローグラフを生成し、予め定められた条件が満たされるまで自動的に該グラフの分割を繰り返すように構成したので、消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置を提供することができる。また、消費電力制約を充足するか、または消費電力が最小になるまで分割を繰り返すように前記する条件を設定したので、半導体集積回路は十分に消費電力が削減された半導体集積回路を設計することができる。また、最も消費電力が大きいモジュールが分割対象となるように構成したので、一回の分割による電力削減量を大きくすることができる。また、コントロールデータフローグラフのデータパスの略中央に位置するエッジで該グラフを分割するように構成したので、一回の分割による電力削減量を大きくすることができる。また、該グラフのデータパスの略中央に位置するエッジが複数ある場合、境界を横切るエッジの数が少ない部分で該グラフを分割するように構成したので、分割に伴って新しく配備されるレジスタの数を少なく抑えることができる。
【００５８】
ところで、近年の半導体集積回路の微細化に伴い、レジスタや組み合わせ回路などからのリーク電流が無視できなくなってきている。そこで、消費電力見積／評価部１６は、消費電力を求めるとき、式１の代わりに、式１にリーク電流による消費電力の項を付加した以下の式を用いるようにしてもよい。
【００５９】
【数６】
2010113405.tif 000008
【００６０】
ここで、Ｐｌｋｇは組み合わせ回路部分の１単位面積（ゲート）あたりのリーク電流による消費電力であり、Ｐｌｋｒはレジスタの１単位面積（１ビット）あたりのリーク電流による消費電力である。消費電力見積／評価部１６は、ＰｌｋｇおよびＰｌｋｒをテクノロジライブラリから取得する。式５を用いて消費電力を算出することにより、組み合わせ回路およびスレッドを分割する毎に増加するレジスタからのリーク電流の影響を考慮したより正確な消費電力を見積もることができるようになる。
【００６１】
また、動作記述としてＳｙｓｔｅｍＣ記述を取り上げて説明したが、入力される動作記述はＳｙｓｔｅｍＣ記述に限定されるものではなく、各種演算と制御が記述できアルゴリズムが記述できるものであれば容易に対応可能であるため、どのような言語を用いた記述であってもよい。また、クロック周期、レイテンシ、消費電力制約の入力形式もコマンド入力に限定されるものではなく、ＳｙｓｔｅｍＣの記述中のコメントで入力されるようにしてもよい。
【００６２】
（第２の実施の形態）
次に、本発明にかかる第２の実施の形態の半導体集積回路合成装置について説明する。図１３は、第２の実施の形態の半導体集積回路合成装置の構成を示すブロック図である。第２の実施の形態の半導体集積回路合成装置２０は、ＲＴＬ記述を入力とし、消費電力を削減するために該入力されたＲＴＬ記述に基づくモジュールをさらに分割する。
【００６３】
すなわち、半導体集積回路合成装置２０は、グラフ生成手段として、入力記述解釈部２１、ＤＰＧ生成部２２、およびＣＤＦＧ変換部２３を有する。入力記述解釈部２１は、入力されるクロック周期、レイテンシ、消費電力に関する制約およびＲＴＬ記述を解釈する。ＤＰＧ生成部２２は、解釈されたＲＴＬ記述に基づき、モジュール毎にＤＰＧを生成する。ＣＤＦＧ変換部２３は、該生成されたＤＰＧをＣＤＦＧに変換する。
【００６４】
半導体集積回路合成装置２０は、その他に、全体制御部１１、スレッド分割部１４、回路生成処理部１５、消費電力見積／評価部１６、クロックゲート生成部１７、およびＲＴＬ記述生成部１８を備える。これらの各構成要素の機能は第１の実施の形態にかかる同一符号の各構成要素と同一であるので、詳細な説明を省略する。
【００６５】
次に、第２の実施の形態の半導体集積回路合成装置２０の動作を説明する。図１４は、第２の実施の形態の半導体集積回路合成装置２０の動作を説明するフローチャートである。
【００６６】
まず、入力記述解釈部２１は、入力されるクロック周期、レイテンシ、消費電力に関する制約およびＲＴＬ記述を解釈する（ステップＳ２１）。そして、ＤＰＧ生成部２２は、解釈されたＲＴＬ記述に基づき、モジュール毎に図１１に示したようなＤＰＧを生成する（ステップＳ２２）。そして、ＣＤＦＧ変換部２３は、該生成された夫々のＤＰＧから、データ、制御パスグラフのレジスタ、マルチプレクサ、ＦＳＭのレジスタ、演算器を削除して、ＣＤＦＧに変換する（ステップＳ２３）。以降、半導体集積回路合成装置２０は、第１の実施の形態の動作のステップＳ３〜ステップＳ７と同等の動作を、ステップＳ２４〜ステップＳ２８において実行する。
【００６７】
このように、第２の実施の形態によれば、ＲＴＬ記述に含まれる夫々のモジュールの記述に対応するコントロールデータフローグラフを生成し、所望の条件が満たされるまで自動的に該グラフの分割を繰り返すように構成したので、消費電力を削減した半導体集積回路を効率的に設計する半導体集積回路合成装置を提供することができる。
【図面の簡単な説明】
【００６８】
【図１】スレッド分割前と分割後の消費電力の差を説明する図。
【図２】第１の実施の形態の半導体集積回路合成装置の構成を示すブロック図。
【図３】第１の実施の形態の半導体集積回路合成装置のハードウェア構成を示す図。
【図４】第１の実施の形態の半導体集積回路合成装置の動作を説明するフローチャート。
【図５】ＳｙｓｔｅｍＣ記述の入力例を説明する図。
【図６】ＳｙｓｔｅｍＣ記述の入力例を説明する図。
【図７】各種制約の入力例を説明する図。
【図８】ＣＤＦＧの例を説明する図。
【図９】ＣＤＦＧを分割する手順を説明するフローチャート。
【図１０】ＤＰＧの一例を説明する図。
【図１１】分割されたモジュールの一例を説明する図。
【図１２】ゲーティッドクロックの回路を説明する図。
【図１３】第２の実施の形態の半導体集積回路合成装置の構成を示すブロック図。
【図１４】第２の実施の形態の半導体集積回路合成装置の動作を説明するフローチャート。
【符号の説明】
【００６９】
１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  表示部、５  入力部、６  半導体集積回路合成プログラム、１０  半導体集積回路合成装置、１１  全体制御部、１２  入力記述解釈部、１３  ＣＤＦＧ生成部、１４  スレッド分割部、１５  回路生成処理部、１６  消費電力見積／評価部、１７  クロックゲート生成部、１８  ＲＴＬ記述生成部、２０  半導体集積回路合成装置、２１  入力記述解釈部、２２  ＤＰＧ生成部、２３  ＣＤＦＧ変換部。
【図１】
2010113405.tif 000009
【図２】
2010113405.tif 000010
【図３】
2010113405.tif 000011
【図４】
2010113405.tif 000012
【図５】
2010113405.tif 000013
【図６】
2010113405.tif 000014
【図７】
2010113405.tif 000015
【図８】
2010113405.tif 000016
【図９】
2010113405.tif 000017
【図１０】
2010113405.tif 000018
【図１１】
2010113405.tif 000019
【図１２】
2010113405.tif 000020
【図１３】
2010113405.tif 000021
【図１４】
2010113405.tif 000022