(57)【要約】【課題】クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計する集積回路設計装置を提供する。【解決手段】開示の装置は、消費電力算出手段と、消費電力比較手段と、クロックツリー生成手段とを備える。消費電力算出手段は、クロック線上における、クロックゲーティングセルをクロックソース側及びクロックシンク側に配置した場合の第１及び第２の消費電力を算出する。クロックツリー生成手段は、第１及び第２の消費電力の比較により、消費電力が小さいと判定された方の配置の仕方で、クロックゲーティングセルをクロック線上に配置する。ここで、消費電力算出手段は、クロックゲーティングセルのイネーブル率と、クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、第１及び第２の消費電力を算出する。【選択図】図４
2012022440.tif 000002
【特許請求の範囲】
【請求項１】
クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第１の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第２の消費電力とを算出する消費電力算出手段と、
前記第１の消費電力と前記第２の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較手段と、
前記消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、
前記消費電力算出手段は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第１及び第２の消費電力を算出することを特徴とする請求項１に記載の集積回路設計装置。
【請求項２】
前記消費電力算出手段は、前記クロックゲーティングセルの前記クロックシンク側への配置として、前記クロック線の所定の分岐点に前記クロックゲーティングセルを配置し、前記クロックゲーティングセルの前記クロックソース側への配置として、前記クロック線における前記所定の分岐点の一段上流の分岐点に前記クロックゲーティングセルを配置することを特徴とする請求項１に記載の集積回路設計装置。
【請求項３】
コンピュータにより実行される集積回路設計方法であって、
クロック線上において、クロックゲーティングセルをクロックソース側に配置した場合の第１の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第２の消費電力とを算出する消費電力算出工程と、
前記第１の消費電力と前記第２の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較工程と、
前記消費電力比較工程により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、
前記消費電力算出工程は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第１及び第２の消費電力を算出することを特徴とする集積回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックゲーティングセルを有する集積回路を設計する集積回路設計装置に関する。
【背景技術】
【０００２】
半導体集積回路（ＬＳＩ）は一般的にクロック同期回路として設計されており、近年の大規模化及び高速化に伴ってクロック信号部での消費電力が増大しつつある。そこで、クロック信号部の消費電力を削減する効果的な方法として、クロックゲーティングと呼ばれる手法が考えだされている。
【０００３】
クロックゲーティングの具体的な方法としては、クロックソースとフリップフロップ回路との間にＡＮＤ素子などのクロックゲーティングセルが挿入される。クロックゲーティングセルにはクロック信号及びイネーブル信号が入力され、当該イネーブル信号を制御することにより、フリップフロップ回路に対するクロック信号の供給の有無が制御される。ここで、クロックゲーティングセルの配置位置としては、クロックソース側に配置するのが好ましいとされる（特許文献１、２及び３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２２８１６号公報
【特許文献２】特開２００６−９３３９３号公報
【特許文献３】特開２００７−７２９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、実際のＬＳＩでは、多数の分岐したクロックゲーティング系統及びフリップフロップ回路が存在するため、クロックゲーティングセルをクロックソース側に配置するのが必ずしも好ましいとは言えない。
【課題を解決するための手段】
【０００６】
開示の装置は、クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第１の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第２の消費電力とを算出する消費電力算出手段と、前記第１の消費電力と前記第２の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較手段と、前記消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、前記消費電力算出手段は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第１及び第２の消費電力を算出する。
【０００７】
開示の装置は、消費電力算出手段と、消費電力比較手段と、クロックツリー生成手段とを備える。消費電力算出手段は、クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第１の消費電力と、クロックゲーティングセルをクロックシンク側に配置した場合の第２の消費電力とを算出する。消費電力比較手段は、第１の消費電力と第２の消費電力とを比較して、どちらの消費電力が小さいかを判定する。クロックツリー生成手段は、消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、クロックゲーティングセルをクロック線上に配置する。ここで、消費電力算出手段は、クロックゲーティングセルのイネーブル率と、クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、第１及び第２の消費電力を算出する。
【発明の効果】
【０００８】
開示の装置によれば、このようにすることで、クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る集積回路設計装置のハードウェア構成の一例を示す図である。
【図２】一定の方向に沿ってクロック線が配置された集積回路の一例を示す図である。
【図３】クロックゲーティングセルの配置方法の他の例を示す図である。
【図４】クロックゲーティングセルの配置方法の他の例を示す図である。
【図５】Ｘ軸およびＹ軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図６】Ｘ軸およびＹ軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図７】Ｘ軸およびＹ軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図８】実施形態に係る集積回路設計方法の具体的な処理を示すフローチャートである。
【図９】変形例に係る集積回路の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、実施形態の一例について図面を参照しつつ説明する。
【００１１】
［ハードウェア構成］
まず、実施形態に係る集積回路設計装置２００のハードウェア構成の一例について説明する。
【００１２】
図１に、集積回路設計装置２００のハードウェア構成の一例を示す。集積回路設計装置２００は、例えばＰＣ（Personal Computer）などのコンピュータであり、制御部１１、メモリ１２、ハードディスク１３、出力部１４、入力部１５、インターフェース（Ｉ／Ｆ）１６及びディスクドライブ１７を有する。これらの構成要素は、バス１０に接続されている。ここで、制御部１１は、例えばＣＰＵ（Central Processing Unit）である。メモリ１２は、例えばＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）である。出力部１４は、例えばモニタやプリンタなどの装置であり、入力部１５は、ユーザが指示を入力するための、例えばマウスやキーボードなどの装置である。インターフェース１６は、例えばＵＳＢ（Universal Serial Bus）などの外部接続インターフェースである。ディスクドライブ１７は、例えばＤＶＤ（Digital Versatile Disc）などのディスクを駆動させるためのディスクドライブである。
【００１３】
集積回路設計装置２００において、制御部１１は、ユーザからの指示を基に、集積回路設計プログラムを実行する。これにより、ユーザにより入力されたデータに基づいて、実施形態に係る集積回路が設計される。以下、実施形態に係る集積回路設計方法について説明する。
【００１４】
［集積回路設計方法］
実施形態に係る集積回路設計方法では、クロック線上にて消費される消費電力を減少させるため、クロックゲーティングセルをクロック線上に配置する設計が行われる。なお、以下において、「集積回路の消費電力」といった場合には、集積回路におけるクロック線上にて消費される消費電力のことを示すものとする。クロックゲーティングセルは、例えばＡＮＤ素子であり、クロック信号及びイネーブル信号が入力される。イネーブル信号を制御することにより、クロックゲーティングセルよりクロック信号を出力させるか否かが制御される。クロックゲーティングセルの配置の一例について図２を用いて説明する。
【００１５】
図２（ａ）、（ｂ）は、主に、一定の方向（図２（ａ）、（ｂ）でいうとＸ軸方向）に沿ってクロック線が配置された集積回路の一例を示す図である。図２（ａ）、（ｂ）に示す集積回路では、クロックソースＣＳの出力端子に接続されるとともに３本に分岐したクロック線上にクロックゲーティングセルＣＧＣ１〜ＣＧＣ３が配置されている。
【００１６】
なお、以下において、集積回路において、同じ機能を有する構成要素を区別しないで示す場合には、数字又は英小文字を省略して示すものとする。例えば、以下では、クロックゲーティングセルＣＧＣ１〜ＣＧＣ３を区別せずに示す場合には、単に「クロックゲーティングセルＣＧＣ」と示すものとする。
【００１７】
図２（ａ）は、クロックゲーティングセルをクロックシンク側に配置した集積回路の一例を示す図である。
【００１８】
図２（ａ）に示す集積回路の一例では、クロックソースＣＳから点Ｐａまで１本のクロック線Ｌ１が配置されている。クロック線Ｌ１は点Ｐａにて３本のクロック線Ｌ１１、Ｌ１２、Ｌ１３に分岐している。分岐したクロック線Ｌ１１、Ｌ１２、Ｌ１３はそれぞれフリップフリップ回路ＦＦに接続されている。クロック線Ｌ１には、リピータバッファ（以下、単に「バッファ」と称する）Ｂｕ１〜Ｂｕ５が配置されている。クロック線Ｌ１１には、クロックゲーティングセルＣＧＣ１が配置され、クロック線Ｌ１２には、クロックゲーティングセルＣＧＣ２が配置され、クロック線Ｌ１３には、クロックゲーティングセルＣＧＣ３が配置されている。クロックゲーティングセルＣＧＣ１とフリップフロップ回路ＦＦとの間にはバッファＢｕ６が配置されている。クロックゲーティングセルＣＧＣ２とフリップフロップ回路ＦＦとの間にはバッファＢｕ７が配置されている。クロックゲーティングセルＣＧＣ３とフリップフロップ回路ＦＦとの間にはバッファＢｕ８が配置されている。つまり、バッファＢｕは、各クロックゲーティングセルＣＧＣを境にして、クロックソースＣＳ側に５つ配置され、クロックシンク側に１つ配置されている。このことから分かるように、図２（ａ）に示す集積回路では、各クロックゲーティングセルＣＧＣをクロックシンク側に配置する仕方として、各クロックゲーティングセルＣＧＣはフリップフロップ回路ＦＦに最も近い配置可能な場所に配置されている。
【００１９】
ここで、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３のそれぞれには、イネーブル信号ｅ１、ｅ２、ｅ３が入力される。イネーブル信号ｅ１、ｅ２、ｅ３を制御することにより、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３のそれぞれからフリップフロップ回路ＦＦに供給されるクロック信号の有無が制御される。
【００２０】
図２（ｂ）は、クロックゲーティングセルをクロックソース側に配置した集積回路の一例を示す図である。
【００２１】
図２（ｂ）に示す集積回路の一例では、クロックソースＣＳの出力端子に、３本に分岐したクロック線Ｌ２１、２２、２３が接続されている。分岐したクロック線Ｌ２１、２２、２３はそれぞれフリップフロップ回路ＦＦに接続されている。各クロック線Ｌ２１、２２、２３にはそれぞれ、クロックソースＣＳに隣接して、クロックゲーティングセルＣＧＣが配置されている。具体的には、クロック線Ｌ２１には、クロックゲーティングセルＣＧＣ１が配置され、クロック線Ｌ２２には、クロックゲーティングセルＣＧＣ２が配置され、クロック線Ｌ２３には、クロックゲーティングセルＣＧＣ３が配置されている。クロックゲーティングセルＣＧＣ１とフリップフロップ回路ＦＦとの間にはバッファＢｕ１１〜Ｂｕ１６が配置されている。クロックゲーティングセルＣＧＣ２とフリップフロップ回路ＦＦとの間にはバッファＢｕ２１〜Ｂｕ２６が配置されている。クロックゲーティングセルＣＧＣ３とフリップフロップ回路ＦＦとの間にはバッファＢｕ３１〜Ｂｕ３６が配置されている。このことから分かるように、図２（ｂ）に示す集積回路では、各クロックゲーティングセルＣＧＣをクロックソース側に配置する仕方として、各クロックゲーティングセルＣＧＣは、クロックソースＣＳに最も近い配置可能な場所に配置されている。
【００２２】
ここで、クロックゲーティングセルＣＧＣをクロックシンク側に配置した集積回路（図２（ａ））と比較して、クロックゲーティングセルＣＧＣをクロックソース側に配置した集積回路（図２（ｂ））の方が必ずしも低消費電力になるとは限らない。なぜなら、クロックゲーティングセルＣＧＣをクロックソース側に配置した場合と比較して、クロックゲーティングセルＣＧＣをクロックシンク側に配置した場合には、配線およびバッファＢｕの共有部分が増加するからである。別の言い方をすると、クロックゲーティングセルＣＧＣをクロックソース側に配置した場合と比較して、クロックゲーティングセルＣＧＣをクロックシンク側に配置した場合には、バッファＢｕの数を減少させることができるからである。
【００２３】
ここで、どちらの集積回路がより低消費電力になるかは、クロックゲーティングセルＣＧＣのイネーブル率、より詳細には、イネーブル率と、消費電力におけるダイナミック電力成分とスタティック電力成分との比率と、に応じて決まる。ここで、イネーブル率とは、クロックゲーティングセルＣＧＣにおける単位時間に対するクロック信号の出力時間の割合である。ダイナミック電力成分とは、集積回路が動作したときに消費される電力である。スタティック電力成分とは、集積回路が動作しなくても電源が入っただけで消費される電力であり、リーク電流に起因する消費電力である。以下、図２（ａ）、（ｂ）に示す各集積回路における、イネーブル率、ダイナミック電力成分及びスタティック電力成分を考慮した消費電力の算出方法について説明する。
【００２４】
まず、図２（ａ）に示す集積回路の消費電力の算出方法について説明する。
【００２５】
以下では、ダイナミック電力成分をＰｄとし、スタティック電力成分をＰｓとし、イネーブル率をｅ＿ｒａｔｅとする。このとき、クロックゲーティングセルＣＧＣを介さないクロック信号が供給されるバッファＢｕの消費電力はＰｄ＋Ｐｓで表わされる。一方、クロックゲーティングセルＣＧＣを介したクロック信号が供給されるバッファＢｕの消費電力はＰｄ×ｅ＿ｒａｔｅ＋Ｐｓで表わされる。また、以下では、クロックゲーティングセルＣＧＣの消費電力をＰｇとし、フリップフロップ回路ＦＦの消費電力をＰｆｆとする。
【００２６】
図２（ａ）に示す集積回路では、バッファＢｕ１〜Ｂｕ５が、クロックゲーティングセルＣＧＣを介さないクロック信号が供給されるバッファに相当する。また、バッファＢｕ６〜Ｂｕ８が、クロックゲーティングセルＣＧＣを介したクロック信号が供給されるバッファに相当する。また、クロックゲーティングセルＣＧＣは３つ配置され、各クロックゲーティングＣＧＣのそれぞれに対応してフリップフロップ回路ＦＦが配置されている。従って、図２（ａ）に示す集積回路における合計消費電力Ｐｍａは、以下の式（１）で示される。
【００２７】
Ｐｍａ＝（Ｐｄ＋Ｐｓ）×５
＋（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）＋Ｐｆｆ）×３
＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
・・・（１）
次に、図２（ｂ）に示す集積回路の消費電力の算出方法について説明する。
【００２８】
図２（ｂ）に示す集積回路では、バッファＢｕ１１〜Ｂｕ１６、Ｂｕ２１〜Ｂｕ２６、Ｂｕ３１〜Ｂｕ３６が、クロックゲーティングセルＣＧＣを介したクロック信号が供給されるバッファに相当する。また、分岐した３本のクロック線Ｌ２１、２２、２３にはそれぞれ、クロックゲーティングセルＣＧＣが配置されるとともに、フリップフロップ回路ＦＦが配置されている。従って、図２（ｂ）に示す集積回路における合計消費電力Ｐｍｂは、以下の式（２）で示される。
【００２９】
Ｐｍｂ＝（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×６＋Ｐｆｆ）×３
＝（１８×ｅ＿ｒａｔｅ×Ｐｄ）＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
・・・（２）
上記の式（１）、（２）はどちらも（Ｐｇ＋Ｐｆｆ）×３の項を含んでいる。また、この項以外の項にはＰｇ、Ｐｆｆが含まれていない。つまり、合計消費電力Ｐｍａ、Ｐｍｂのうち、どちらが小さいか、ということは、Ｐｇ、Ｐｆｆの値によっては影響されない。逆に言うと、図２（ａ）、（ｂ）に示す集積回路のうち、どちらが低消費電力になるか、ということは、イネーブル率ｅ＿ｒａｔｅとダイナミック電力成分Ｐｄとスタティック電力成分Ｐｓとによって決まるということになる。
【００３０】
ここで、図２（ａ）、（ｂ）に示す集積回路において、ダイナミック電力成分Ｐｄとスタティック電力成分Ｐｓとの比率をＰｄ＝１０Ｐｓに設定して、イネーブル率を変化させた場合の例について説明する。
【００３１】
最初に、各クロックゲーティングセルＣＧＣのイネーブル率をいずれも同じ値に設定した場合の例について説明する。具体的には、各クロックゲーティングセルＣＧＣのイネーブル率がいずれも８０％となっている場合といずれも２０％となっている場合との２つの場合について説明する。
【００３２】
まず、各クロックゲーティングセルＣＧＣのイネーブル率がいずれも８０％となっている場合の例について説明する。
【００３３】
イネーブル率を８０％とした場合における図２（ａ）に示す集積回路の合計消費電力Ｐｍａは、式（１）を用いると、以下の式（３）で示される。
【００３４】
Ｐｍａ＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
＝７．４Ｐｄ＋８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（３）
イネーブル率を８０％とした場合における図２（ｂ）に示す集積回路の合計消費電力Ｐｍｂは、式（２）を用いると、以下の式（４）で示される。
【００３５】
Ｐｍｂ＝（１８×ｅ＿ｒａｔｅ×Ｐｄ）＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝１４．４Ｐｄ＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（４）
ここで、Ｐｄ＝１０Ｐｓとした場合には、式（３）は以下の式（５）となり、式（４）は以下の式（６）となる。
【００３６】
Ｐｍａ＝７．４Ｐｄ＋８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝８．２Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（５）
Ｐｍｂ＝１４．４Ｐｄ＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝１６．２Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（６）
上記の式（５）、（６）より分かるように、Ｐｄ＝１０Ｐｓとなっている場合において、各クロックゲーティングセルＣＧＣのイネーブル率が８０％となっている場合には、図２（ｂ）に示す集積回路と比較して、図２（ａ）に示す集積回路の方が低消費電力となっている。
【００３７】
次に、各クロックゲーティングセルＣＧＣのイネーブル率がいずれも２０％となっている場合の例について説明する。
【００３８】
イネーブル率を２０％とした場合における図２（ａ）に示す集積回路の合計消費電力Ｐｍａは、式（１）を用いると、以下の式（７）で示される。
【００３９】
Ｐｍａ＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
＝５．６Ｐｄ＋８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（７）
イネーブル率を２０％とした場合における図２（ｂ）に示す集積回路の合計消費電力Ｐｍｂは、式（２）を用いると、以下の式（８）で示される。
【００４０】
Ｐｍｂ＝（１８×ｅ＿ｒａｔｅ×Ｐｄ）＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝３．６Ｐｄ＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（８）
ここで、Ｐｄ＝１０Ｐｓとした場合には、式（７）は以下の式（９）となり、式（８）は以下の式（１０）となる。
【００４１】
Ｐｍａ＝５．６Ｐｄ＋８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝６．４Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（９）
Ｐｍｂ＝３．６Ｐｄ＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝５．４Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（１０）
式（９）、（１０）より分かるように、Ｐｄ＝１０Ｐｓとなっている場合において、各クロックゲーティングセルＣＧＣのイネーブル率が２０％となっている場合には、図２（ａ）に示す集積回路と比較して、図２（ｂ）に示す集積回路の方が低消費電力となっている。つまり、イネーブル率が８０％となっている場合とイネーブル率が２０％となっている場合とでは、互いに逆の結果となっている。
【００４２】
次に、各クロックゲーティングセルＣＧＣのイネーブル率が互いに異なる場合の例について説明する。具体的には、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３のそれぞれについて、イネーブル率が３０％、２０％、１０％となっている場合と、イネーブル率が３０％、２０％、１００％となっている場合とについて説明する。
【００４３】
まず、クロックゲーティングセルＣＧＣ１のイネーブル率が３０％、クロックゲーティングセルＣＧＣ２のイネーブル率が２０％、クロックゲーティングセルＣＧＣ３のイネーブル率が１０％となっている場合の例について説明する。ここでもＰｄ＝１０Ｐｓとする。この場合、図２（ａ）に示す集積回路の合計消費電力Ｐｍａは以下の式（１１）となる。
【００４４】
Ｐｍａ＝（Ｐｄ＋Ｐｓ）×５＋Σ（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）＋Ｐｆｆ）
＝（Ｐｄ＋Ｐｓ）×５＋Ｐｄ×（０．３＋０．２＋０．１）
＋３Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝５．６Ｐｄ＋８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝６．４Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（１１）
一方、図２（ｂ）に示す集積回路の合計消費電力Ｐｍｂは以下の式（１２）となる。
【００４５】
Ｐｍｂ＝Σ（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×６＋Ｐｆｆ）
＝Ｐｄ×（０．３＋０．２＋０．１）×６＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝３．６Ｐｄ＋１８Ｐｓ＋（Ｐｇ＋Ｐｆｆ）×３
＝５．４Ｐｄ＋（Ｐｇ＋Ｐｆｆ）×３    ・・・（１２）
上記の式（１１）、（１２）より分かるように、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３の各イネーブル率が３０％、２０％、１０％となっている場合、図２（ａ）に示す集積回路よりも図２（ｂ）に示す集積回路の方が低消費電力となっている。
【００４６】
次に、クロックゲーティングセルＣＧＣ１のイネーブル率が３０％、クロックゲーティングセルＣＧＣ２のイネーブル率が２０％、クロックゲーティングセルＣＧＣ３のイネーブル率が１００％となっている場合の例について説明する。なお、ここで、クロックゲーティングセルＣＧＣ３のイネーブル率が１００％とは、別の言い方をすると、クロックゲーティングセルＣＧＣ３が配置されていないということである。従って、図２（ａ）に示す集積回路の合計消費電力Ｐｍａは以下の式（１３）となる。
【００４７】
Ｐｍａ＝（Ｐｄ＋Ｐｓ）×５＋Σ（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）＋Ｐｆｆ）
＝（Ｐｄ＋Ｐｓ）×５＋Ｐｄ×（０．３＋０．２＋１．０）
＋３Ｐｓ＋（２Ｐｇ＋３Ｐｆｆ）
＝６．５Ｐｄ＋８Ｐｓ＋（２Ｐｇ＋３Ｐｆｆ）    ・・・（１３）
一方、図２（ｂ）に示す集積回路の合計消費電力Ｐｍｂは以下の式（１４）となる。
【００４８】
Ｐｍｂ＝Σ（Ｐｇ＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×６＋Ｐｆｆ）
＝Ｐｄ×（０．３＋０．２＋１．０）×６＋１８Ｐｓ＋（２Ｐｇ＋３Ｐｆｆ）
＝９Ｐｄ＋１８Ｐｓ＋（２Ｐｇ＋３Ｐｆｆ）    ・・・（１４）
上記の式（１３）、（１４）より分かるように、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３の各イネーブル率が３０％、２０％、１００％となっている場合、図２（ｂ）に示す集積回路よりも図２（ａ）に示す集積回路の方が低消費電力となっている。これは、クロックゲーティングセルＣＧＣ１、ＣＧＣ２、ＣＧＣ３の各イネーブル率が３０％、２０％、１０％となっている場合と比較して、逆の結果となっている。
【００４９】
以上に述べたことから分かるように、クロックゲーティングセルをクロックシンク側に配置した場合とクロックソース側に配置した場合とで、どちらが低消費電力となるかは、イネーブル率、ダイナミック電力成分及びスタティック電力成分によって決まる。
【００５０】
なお、図２では、クロックゲーティングセルを全てクロックシンク側に配置した場合の集積回路と、クロックゲーティングセルを全てクロックソース側に配置した場合の集積回路の例を示した。しかしながら、クロックゲーティングセルの配置方法としては、これに限られるものではない。例えば、クロックゲーティングセルの他の配置方法としては、一部のクロックゲーティングセルをクロックソース側に配置し、それ以外のクロックゲーティングセルをクロックシンク側に配置する方法も考えられる。また、例えば、更なる他の配置方法としては、クロックソースとフリップフロップ回路との間の中間位置にクロックゲーティングセルを配置する方法も考えられる。そこで、以下では、これらの配置方法による消費電力の大きさについて検証する。
【００５１】
まず、一部のクロックゲーティングセルをクロックソース側に配置し、それ以外のクロックゲーティングセルをクロックシンク側に配置した場合の消費電力の大きさについて図３を用いて検証する。
【００５２】
図３は、クロックゲーティングセルの配置方法の他の例を示す図である。図３（ａ）は、図２（ａ）に示した、クロックゲーティングセルＣＧＣを全てクロックシンク側（ここでは、フリップフロップ回路ＦＦに最も近い配置可能な場所）に配置したときの集積回路例である。図３（ｄ）は、図２（ｂ）に示した、クロックゲーティングセルＣＧＣを全てクロックソース側（ここでは、クロックソースＣＳに最も近い配置可能な場所）に配置したときの集積回路例である。それに対し、図３（ｂ）は、２つのクロックゲーティングセルＣＧＣ１、ＣＧＣ２をクロックシンク側に配置し、１つのクロックゲーティングセルＣＧＣ３をクロックソース側に配置した集積回路例である。また、図３（ｃ）は、１つのクロックゲーティングセルＣＧＣ１をクロックシンク側に配置し、２つのクロックゲーティングセルＣＧＣ２、ＣＧＣ３をクロックソース側に配置した集積回路例である。なお、図３において、クロック線上の黒い三角印はバッファＢｕを示している（以下、図４以降においても同じ）。
【００５３】
クロックゲーティングセルＣＧＣのイネーブル率が全て同じであるとすると、先にも述べたように、図３（ａ）に示す集積回路における合計消費電力Ｐｍａは以下の式（１５）で示される。
【００５４】
Ｐｍａ＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
・・・（１５）
これに対し、図３（ｂ）に示す集積回路における合計消費電力Ｐｍａ１は以下の式（１６）で示される。
【００５５】
Ｐｍａ１＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
＋（５×ｅ＿ｒａｔｅ×Ｐｄ）＋５Ｐｓ    ・・・（１６）
また、図３（ｃ）に示す集積回路における合計消費電力Ｐｍａ２は以下の式（１７）で示される。
【００５６】
Ｐｍａ２＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋（Ｐｇ＋Ｐｆｆ）×３
＋（１０×ｅ＿ｒａｔｅ×Ｐｄ）＋１０Ｐｓ    ・・・（１７）
上述の式（１５）、（１６）、（１７）より分かるように、図３（ａ）、（ｂ）、（ｃ）に示す集積回路のうち、最も低消費電力となるのは、図３（ａ）に示す集積回路であり、図３（ｂ）、（ｃ）に示す集積回路が最も低消費電力となることはない。このことは、次に述べる理由からも言える。即ち、クロックゲーティングセルを１つでもクロックシンク側に配置した場合には、当該クロックゲーティングセルに対し１００％動作のクロック信号が供給される。ここで、１００％動作のクロック信号とは、供給停止期間がないクロック信号、即ち、クロックソースからクロックゲーティングセルを介さずに直接供給されるクロック信号という意味である。また、クロックシンク側に配置したクロックゲーティングセル以外の他のクロックゲーティングセルがクロックソース側に配置されると、当該他のクロックゲーティングセルとフリップフロップ回路との間にはバッファが挿入される。そのため、このとき、挿入されたバッファ分の電力消費が発生する。つまり、クロックゲーティングセルを１つでもクロックシンク側に配置した場合には、当該クロックゲーティングセル以外の他のクロックゲーティングセルについても、当該クロックゲーティングセルとクロック線を共有させた方が、共有させない場合と比較して低消費電力となる。
【００５７】
このことから分かるように、図３（ａ）、（ｂ）、（ｃ）に示す集積回路のうち、最も低消費電力となるのは、図３（ａ）に示す集積回路である。また、先に述べたように、図３（ａ）に示す集積回路と図３（ｄ）に示す集積回路とで、どちらが低消費電力となるかは、イネーブル率、ダイナミック電力成分及びスタティック電力成分によって決まる。従って、図３（ａ）〜（ｄ）に示す集積回路のうち、図３（ａ）、（ｄ）に示す集積回路のどちらかが最も低消費電力となる。
【００５８】
次に、クロックソースＣＳとフリップフロップ回路ＦＦとの間の中間位置にクロックゲーティングセルＣＧＣを配置した場合の消費電力の大きさについて図４を用いて検証する。
【００５９】
図４は、クロックゲーティングセルＣＧＣの配置方法の他の例を示す図である。図４（ａ）は、図２（ａ）に示した、クロックゲーティングセルＣＧＣを全てフリップフロップ回路ＦＦに最も近い配置可能な場所に配置したときの集積回路例である。図４（ｆ）は、図２（ｂ）に示した、クロックゲーティングセルＣＧＣを全てクロックソースＣＳに最も近い配置可能な場所に配置したときの集積回路例である。それに対し、図４（ｂ）〜図４（ｅ）は、クロックソースＣＳとフリップフロップ回路ＦＦとの間の中間位置にクロックゲーティングセルＣＧＣを配置したときの集積回路例である。
【００６０】
クロックゲーティングセルＣＧＣのイネーブル率が全て同じであるとすると、先にも述べたように、図４（ａ）に示す集積回路における合計消費電力Ｐｍａは以下の式（１８）で示される。
【００６１】
Ｐｍａ＝５Ｐｄ＋８Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（１８）
図４（ｂ）に示す集積回路における合計消費電力Ｐｍａｂ１は以下の式（１９）で示される。
【００６２】
Ｐｍａｂ１＝４Ｐｄ＋１０Ｐｓ＋（６×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（１９）
図４（ｃ）に示す集積回路における合計消費電力Ｐｍａｂ２は以下の式（２０）で示される。
【００６３】
Ｐｍａｂ２＝３Ｐｄ＋１２Ｐｓ＋（９×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（２０）
図４（ｄ）に示す集積回路における合計消費電力Ｐｍａｂ３は以下の式（２１）で示される。
【００６４】
Ｐｍａｂ３＝２Ｐｄ＋１４Ｐｓ＋（１２×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（２１）
図４（ｅ）に示す集積回路における合計消費電力Ｐｍａｂ４は以下の式（２２）で示される。
【００６５】
Ｐｍａｂ４＝１Ｐｄ＋１６Ｐｓ＋（１５×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（２２）
先にも述べたように、図４（ｆ）に示す集積回路における合計消費電力Ｐｍｂは以下の式（２３）で示される。
【００６６】
Ｐｍｂ＝１８Ｐｓ＋（１８×ｅ＿ｒａｔｅ×Ｐｄ）＋３（Ｐｇ＋Ｐｆｆ）
・・・（２３）
上述の式（１８）〜（２３）を見てみると、式（１８）と式（１９）、式（１９）と式（２０）、式（２０）と式（２１）、式（２１）と式（２２）、式（２２）と式（２３）のそれぞれの差分はいずれも−１Ｐｄ＋２Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）となる。従って、差分−１Ｐｄ＋２Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）が正の値の場合には、式（１８）の値が最も小さくなる、即ち、図４（ａ）に示す集積回路が最も低消費電力となる。一方、差分−１Ｐｄ＋２Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）が負の値の場合には、式（２３）の値が最も小さくなる、即ち、図４（ｆ）に示す集積回路が最も低消費電力となる。なお、差分−１Ｐｄ＋２Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）が０となる場合には、図４（ａ）〜（ｆ）に示す各集積回路における合計消費電力は同じ値となる。
【００６７】
このことから分かるように、差分−１Ｐｄ＋２Ｐｓ＋（３×ｅ＿ｒａｔｅ×Ｐｄ）が０でない場合には、図４（ａ）〜（ｆ）に示す集積回路のうち、図４（ａ）、（ｆ）に示す集積回路のどちらかが最も低消費電力となる。
【００６８】
図３、図４で述べたことから分かるように、集積回路では、クロックゲーティングセルＣＧＣを全てフリップフロップ回路ＦＦに最も近い配置可能な場所に配置するか、または、全てクロックソースＣＳに最も近い配置可能な場所に配置するのが低消費電力を実現する上で好適である。
【００６９】
図２（ａ）、（ｂ）に示した各集積回路は、Ｘ軸方向に沿ってクロック線が配置されていたが、実際の集積回路では、Ｘ軸方向だけでなく、他の方向、例えばＹ軸方向にも沿ってクロック線が配置されている。このような場合においても、実施形態に係る集積回路設計方法では、上述したのと同様に、イネーブル率、ダイナミック電力成分及びスタティック電力成分を基に、クロックゲーティングセルＣＧＣの配置位置を決定する。以下、図５〜図７を用いて具体的に説明する。
【００７０】
図５〜図７は、Ｘ軸方向およびＹ軸方向のそれぞれに沿ってクロック線が配置された集積回路の一例を示す図である。
【００７１】
図５〜図７に示す集積回路では、クロックソースＣＳから点Ｐ１まで１本のクロック線Ｌｎ１が配置されている。クロック線Ｌｎ１は、クロックソースＣＳからＸ軸方向に沿って配置されるとともに、途中で折れ曲がって、Ｙ軸方向に沿って点Ｐ１まで配置されている。クロック線Ｌｎ１は、点Ｐ１にて２本のクロック線Ｌｎ２、Ｌｎ３に分岐している。クロック線Ｌｎ２はＹ軸方向に沿って配置され、クロック線Ｌｎ３はＸ軸方向に沿って配置されている。クロック線Ｌｎ２は、点Ｐ２にて３本のクロック線Ｌｎ２１、Ｌｎ２２、Ｌｎ２３に分岐している。分岐したクロック線Ｌｎ２１、Ｌｎ２２、Ｌｎ２３はそれぞれフリップフロップ回路ＦＦに接続されている。クロック線Ｌｎ３は、点Ｐ３にて３本のクロック線Ｌｎ３１、Ｌｎ３２、Ｌｎ３３に分岐している。分岐したクロック線Ｌｎ３１、Ｌｎ３２、Ｌｎ３３はそれぞれフリップフロップ回路ＦＦに接続されている。以下、図５〜図７を用いて実施形態に係る集積回路設計方法について説明する。
【００７２】
実施形態に係る集積回路設計方法において、まず、クロックゲーティングセルＣＧＣはクロックシンク側、ここでは、フリップフロップ回路ＦＦに最も近い配置可能な場所に配置される。図５に示す例では、クロックゲーティングセルＣＧＣａ１がクロック線Ｌｎ２１に配置され、クロックゲーティングセルＣＧＣａ２がクロック線Ｌｎ２３に配置される。クロック線Ｌｎ２２はクロックゲーティングセルを介さない。また、クロックゲーティングセルＣＧＣｂ１がクロック線Ｌｎ３１に配置され、クロックゲーティングセルＣＧＣｂ２がクロック線Ｌｎ３２に配置され、クロックゲーティングセルＣＧＣｂ３がクロック線Ｌｎ３３に配置される。各クロックゲーティングセルＣＧＣと各フリップフロップ回路ＦＦとの間、および、各クロックゲーティングセルＣＧＣとクロックソースＣＳとの間には、バッファＢｕが配置される。
【００７３】
次に、クロックゲーティングセルＣＧＣは、クロックソースＣＳに向けて、最初の分岐点まで無条件に移動される。即ち、クロックゲーティングセルＣＧＣは、当該クロックゲーティングセルＣＧＣが配置されたクロック線と他のクロック線とが合流する分岐点まで無条件に移動される。図６に示す例では、クロックゲーティングセルＣＧＣａ１、ＣＧＣａ２が分岐点Ｐ２まで移動され、クロックゲーティングセルＣＧＣｂ１、ＣＧＣｂ２、ＣＧＣｂ３が分岐点Ｐ３まで移動される。なぜならば、１本のクロック線上では、バッファＢｕの後にクロックゲーティングセルＣＧＣを配置するよりも、バッファＢｕの前にクロックゲーティングセルＣＧＣを配置した方が低消費電力となるからである。
【００７４】
ここで、実施形態に係る集積回路設計方法では、図６に示す集積回路における合計消費電力が図２で述べたのと同様の方法を用いて求められる。具体的には、図６に示す集積回路では、クロックゲーティングセルＣＧＣを介してクロック信号が供給されるバッファＢｕは１７個あり、クロックゲーティングセルＣＧＣを介さずにクロック信号が供給されるバッファＢｕは１４個ある。また、クロックゲーティングセルＣＧＣは５個配置され、フリップフロップ回路ＦＦは６ヶ所に配置されている。従って、図６に示す集積回路における合計消費電力Ｐｍは、以下の式（２４）で示される。
【００７５】
Ｐｍ＝（Ｐｄ＋Ｐｓ）×１４
＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×１７＋（５×Ｐｇ＋６×Ｐｆｆ）
・・・（２４）
次に、各クロックゲーティングセルＣＧＣは、さらに一段上流の分岐点まで移動される。図７（ａ）、（ｂ）、（ｃ）に示す例では、クロックゲーティングセルが上流の分岐点まで移動されるとともに、その移動分だけ経路が多重化される。図７（ａ）に示す例では、クロックゲーティングセルＣＧＣａ１、ＣＧＣａ２が分岐点Ｐ１まで移動されるとともに、その移動分だけ経路が多重化される。図７（ｂ）に示す例では、クロックゲーティングセルＣＧＣｂ１、ＣＧＣｂ２、ＣＧＣｂ３が分岐点Ｐ１まで移動されるとともに、その移動分だけ経路が多重化される。図７（ｃ）に示す例では、クロックゲーティングセルＣＧＣａ１、ＣＧＣａ２、ＣＧＣｂ１、ＣＧＣｂ２、ＣＧＣｂ３が分岐点Ｐ１まで移動されるとともに、その移動分だけ経路が多重化される。多重化された経路にはバッファＢｕが新たに配置される。ここで、図７（ａ）、（ｂ）、（ｃ）に示す集積回路における合計消費電力が図２で述べたのと同様の方法を用いて求められる。
【００７６】
具体的には、図７（ａ）に示す集積回路では、クロックゲーティングセルＣＧＣを介してクロック信号が供給されるバッファＢｕは２３個あり、クロックゲーティングセルＣＧＣを介さずにクロック信号が供給されるバッファＢｕは１４個ある。また、クロックゲーティングセルＣＧＣは５個配置され、フリップフロップ回路ＦＦは６ヵ所に配置されている。従って、図７（ａ）に示す集積回路における合計消費電力Ｐｍは、以下の式（２５）で示される。
【００７７】
Ｐｍ＝（Ｐｄ＋Ｐｓ）×１４
＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×２３＋（５×Ｐｇ＋６×Ｐｆｆ）
・・・（２５）
図７（ｂ）に示す集積回路では、クロックゲーティングセルＣＧＣを介してクロック信号が供給されるバッファＢｕは２６個あり、クロックゲーティングセルＣＧＣを介さずにクロック信号が供給されるバッファＢｕは１１個ある。また、クロックゲーティングセルＣＧＣは５個配置され、フリップフロップ回路ＦＦは６ヵ所に配置されている。従って、図７（ｂ）に示す集積回路における合計消費電力Ｐｍは、以下の式（２６）で示される。
【００７８】
Ｐｍ＝（Ｐｄ＋Ｐｓ）×１１
＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×２６＋（５×Ｐｇ＋６×Ｐｆｆ）
・・・（２６）
図７（ｃ）に示す集積回路では、クロックゲーティングセルＣＧＣを介してクロック信号が供給されるバッファＢｕは３２個あり、クロックゲーティングセルＣＧＣを介さずにクロック信号が供給されるバッファＢｕは１１個ある。また、クロックゲーティングセルＣＧＣは５個配置され、フリップフロップ回路ＦＦは６ヶ所に配置されている。従って、図７（ｃ）に示す集積回路における合計消費電力Ｐｍは、以下の式（２７）で示される。
【００７９】
Ｐｍ＝（Ｐｄ＋Ｐｓ）×１１
＋（Ｐｄ×ｅ＿ｒａｔｅ＋Ｐｓ）×３２＋（５×Ｐｇ＋６×Ｐｆｆ）
・・・（２７）
実施形態に係る集積回路設計方法では、図６に示す集積回路での式（２４）で求められる合計消費電力と、図７（ａ）、（ｂ）、（ｃ）に示す集積回路での式（２５）、（２６）、（２７）で求められる合計消費電力とが比較され、低消費電力となる方の配置の仕方でクロックゲーティングセルが配置される。
【００８０】
ここで、上述の式（２４）、（２５）、（２６）、（２７）を見ると分かるように、いずれの式も（５×Ｐｇ＋６×Ｐｆｆ）の項を含むとともに、この項以外の項にはＰｇ、Ｐｆｆが含まれていない。つまり、Ｘ軸方向およびＹ軸方向のそれぞれに沿ってクロック線が配置された場合であっても、図６及び図７（ａ）、（ｂ）、（ｃ）に示す集積回路のうち、どちらの集積回路が最も低消費電力となるかは、イネーブル率ｅ＿ｒａｔｅ、ダイナミック電力成分Ｐｄ及びスタティック電力成分Ｐｓによって決まることになる。
【００８１】
なお上述の式（２４）、（２５）、（２６）、（２７）では、式（２５）よりは式（２４）の方が必ず低消費電力、式（２７）よりは式（２５）の方が必ず低消費電力という比較結果となる。これはこの回路例でのクロック線Ｌｎ２２がクロックゲーティングセルを介していないためである。
【００８２】
以上をまとめると、実施形態に係る集積回路設計方法では、クロック線の所定の分岐点にクロックゲーティングセルを配置したときの消費電力と、当該所定の分岐点の一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力とが比較される。そして、当該所定の分岐点にクロックゲーティングセルを配置したときの消費電力の方が、当該一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力よりも小さい場合には、当該所定の分岐点にクロックゲーティングセルが配置される。一方、当該所定の分岐点にクロックゲーティングセルを配置したときの消費電力の方よりも、当該一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力の方が小さい場合には、当該一段上流の分岐点にクロックゲーティングセルが配置される。
【００８３】
次に、上述の実施形態に係る集積回路設計方法について図８に示すフローチャートを用いて説明する。図８は、実施形態に係る集積回路設計方法の具体的な処理を示すフローチャートである。図８に示す制御処理は、集積回路設計装置２００において、制御部１１がプログラムを実行することにより実現される。
【００８４】
まず、ステップＳ１０１において、ネットリスト、および、クロックゲーティングセルＣＧＣのイネーブル率がユーザにより入力される。続くステップＳ１０２において、制御部１１は、ユーザからの指示を基に、フリップフロップ回路ＦＦを含むロジックセルを配置する。この後、制御部１１は、ステップＳ１０３の処理へ進む。
【００８５】
ステップＳ１０３において、制御部１１は、各クロックゲーティングセルＣＧＣを配置する。ここで、図５に示したように、制御部１１は、各クロックゲーティングセルＣＧＣをクロックシンク側、ここでは、フリップフロップ回路ＦＦに最も近い配置可能な場所に配置する。続くステップＳ１０４において、制御部１１は、クロックツリーにバッファＢｕを配置して、クロックバッファツリーを生成する。この後、制御部１１は、ステップＳ１０５の処理へ進む。
【００８６】
ステップＳ１０５において、制御部１１は、クロックゲーティングセルＣＧＣを現在位置からクロックソースＣＳに向けて最初に到達する所定の分岐点まで移動させる。この後、制御部１１は、ステップＳ１０６の処理へ進む。
【００８７】
ステップＳ１０６において、制御部１１は、クロックゲーティングセルＣＧＣを移動させることが可能な、当該所定の分岐点の一段上流の分岐点を選定する。続くステップＳ１０７において、制御部１１は、当該所定の分岐点から当該一段上流の分岐点までにあるバッファのダイナミック電力成分Ｐｄとスタティック電力成分Ｐｓとを求める。この後、制御部１１は、ステップＳ１０８の処理へ進む。
【００８８】
ステップＳ１０８において、制御部１１は、イネーブル率と、ダイナミック電力成分とスタティック電力成分との比率Ｐｄ／Ｐｓとから、クロックゲーティングセルＣＧＣを一段上流の分岐点まで移動させた場合の合計消費電力と、クロックゲーティングセルＣＧＣを所定の分岐点に留めた場合の合計消費電力を求める。この後、制御部１１は、ステップＳ１０９の処理へ進む。
【００８９】
ステップＳ１０９において、制御部１１は、クロックゲーティングセルＣＧＣを一段上流の分岐点まで移動させた場合の集積回路の合計消費電力と、クロックゲーティングセルＣＧＣを所定の分岐点に留めた場合の集積回路の合計消費電力とを比較する。制御部１１は、比較の結果、クロックゲーティングセルＣＧＣを一段上流の分岐点まで移動させた場合の集積回路の合計消費電力の方が低消費電力であると判定した場合には（ステップＳ１０９：Ｙｅｓ）、ステップＳ１１０の処理へ進む。一方、制御部１１は、クロックゲーティングセルＣＧＣを所定の分岐点に留めた場合の集積回路の合計消費電力の方が低消費電力であると判定した場合には（ステップＳ１０９：Ｎｏ）、ステップＳ１１２の処理へ進む。
【００９０】
ステップＳ１１０において、制御部１１は、クロックゲーティングセルＣＧＣを一段上流の分岐点まで移動させる。続くステップＳ１１１において、制御部１１は、クロックゲーティングセルＣＧＣの移動分だけ経路を多重化するとともに、多重化された経路にバッファＢｕを挿入する。この後、制御部１１は、ステップＳ１１２の処理へ進む。
【００９１】
ステップＳ１１２において、制御部１１は、全てのクロックゲーティングセルＣＧＣについて一段上流の分岐点まで移動させた場合の合計消費電力を算出したか否かについて判定する。制御部１１は、全てのクロックゲーティングセルＣＧＣについて一段上流の分岐点まで移動させた場合の合計消費電力を算出していないと判定した場合には（ステップＳ１１２：Ｎｏ）、ステップＳ１０６の処理へ戻る。一方、制御部１１は、全てのクロックゲーティングセルＣＧＣについて一段上流の分岐点まで移動させた場合の合計消費電力を算出したと判定した場合には（ステップＳ１１２：Ｙｅｓ）、ステップＳ１１３の処理へ進む。ステップＳ１１３において、制御部１１は、上述の各処理によって生成されたクロックバッファツリーを出力する。この後、制御部１１は、本制御処理を終了する。
【００９２】
以上述べたように、集積回路設計装置２００は、クロックゲーティングセルＣＧＣをクロックシンク側、即ち、所定の分岐点に配置した場合の消費電力と、クロックソース側、即ち、一段上流の分岐点に配置した場合の消費電力とを算出する。そして、集積回路設計装置２００は、これらの消費電力を比較して、どちらの消費電力が小さいかを判定し、消費電力が小さいと判定した方の配置の仕方で、クロックゲーティングセルＣＧＣをクロック線上に配置する。このようにすることで、クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計することが可能となる。
【００９３】
［変形例］
次に、上述の実施形態に係る集積回路の変形例について説明する。図９は、変形例に係る集積回路の一例を示す図である。
【００９４】
図９（ａ）は、図２（ａ）に示した、クロックゲーティングセルＣＧＣを全てクロックシンク側に配置したときの集積回路例である。それに対し、図９（ｂ）は、クロックゲーティングセルＣＧＣを全てクロックソース側に配置したときの集積回路例であるが、図２（ｂ）とは異なり、クロック線Ｌ２１、Ｌ２２、Ｌ２３のそれぞれに配置されるバッファＢｕの数が異なっている。具体的には、クロック線Ｌ２１には６個のバッファＢｕが配置され、クロック線Ｌ２２には５個のバッファＢｕが配置され、クロック線Ｌ２３には４個のバッファＢｕが配置されている。
【００９５】
図９（ａ）に示す集積回路と図９（ｂ）に示す集積回路とで、どちらが低消費電力となるかについても、イネーブル率とダイナミック電力成分とスタティック電力成分とに応じて算出することができる。つまり、集積回路設計装置２００は、イネーブル率とダイナミック電力成分とスタティック電力成分とを基に、各集積回路における消費電力を算出することにより、どちらが、消費電力をより抑えることが可能な集積回路かを決定することができる。また、さらには、集積回路の配置されるバッファについて、バッファの性能、例えばバッファの駆動力が互いに異なる場合であっても、同様の方法を用いることにより、消費電力をより抑えることが可能なクロックゲーティングセルの配置を決定することができる。この場合、各バッファの消費電力を計算する際に、各バッファの性能に応じてダイナミック電力とスタティック電力の値を変化させて計算を行うことで、各バッファの性能を反映した集積回路の消費電力を算出することができる。
【００９６】
なお、実施形態は、上述した実施形態の例に限られるものではなく、特許請求の範囲及び明細書全体から読み取れる発明の要旨あるいは思想に反しない範囲で適宜変更可能である。
【符号の説明】
【００９７】
ＣＳ  クロックソース
ＣＧＣ  クロックゲーティングセル
ＦＦ  フリップフロップ回路
Ｂｕ  バッファ
【図１】
2012022440.tif 000003
【図２】
2012022440.tif 000004
【図３】
2012022440.tif 000005
【図４】
2012022440.tif 000006
【図５】
2012022440.tif 000007
【図６】
2012022440.tif 000008
【図７】
2012022440.tif 000009
【図８】
2012022440.tif 000010
【図９】
2012022440.tif 000011