説明

集積回路設計装置及び集積回路設計方法

【課題】クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計する集積回路設計装置を提供する。
【解決手段】開示の装置は、消費電力算出手段と、消費電力比較手段と、クロックツリー生成手段とを備える。消費電力算出手段は、クロック線上における、クロックゲーティングセルをクロックソース側及びクロックシンク側に配置した場合の第1及び第2の消費電力を算出する。クロックツリー生成手段は、第1及び第2の消費電力の比較により、消費電力が小さいと判定された方の配置の仕方で、クロックゲーティングセルをクロック線上に配置する。ここで、消費電力算出手段は、クロックゲーティングセルのイネーブル率と、クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、第1及び第2の消費電力を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クロックゲーティングセルを有する集積回路を設計する集積回路設計装置に関する。
【背景技術】
【0002】
半導体集積回路(LSI)は一般的にクロック同期回路として設計されており、近年の大規模化及び高速化に伴ってクロック信号部での消費電力が増大しつつある。そこで、クロック信号部の消費電力を削減する効果的な方法として、クロックゲーティングと呼ばれる手法が考えだされている。
【0003】
クロックゲーティングの具体的な方法としては、クロックソースとフリップフロップ回路との間にAND素子などのクロックゲーティングセルが挿入される。クロックゲーティングセルにはクロック信号及びイネーブル信号が入力され、当該イネーブル信号を制御することにより、フリップフロップ回路に対するクロック信号の供給の有無が制御される。ここで、クロックゲーティングセルの配置位置としては、クロックソース側に配置するのが好ましいとされる(特許文献1、2及び3)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2001−22816号公報
【特許文献2】特開2006−93393号公報
【特許文献3】特開2007−72995号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、実際のLSIでは、多数の分岐したクロックゲーティング系統及びフリップフロップ回路が存在するため、クロックゲーティングセルをクロックソース側に配置するのが必ずしも好ましいとは言えない。
【課題を解決するための手段】
【0006】
開示の装置は、クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第1の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第2の消費電力とを算出する消費電力算出手段と、前記第1の消費電力と前記第2の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較手段と、前記消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、前記消費電力算出手段は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第1及び第2の消費電力を算出する。
【0007】
開示の装置は、消費電力算出手段と、消費電力比較手段と、クロックツリー生成手段とを備える。消費電力算出手段は、クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第1の消費電力と、クロックゲーティングセルをクロックシンク側に配置した場合の第2の消費電力とを算出する。消費電力比較手段は、第1の消費電力と第2の消費電力とを比較して、どちらの消費電力が小さいかを判定する。クロックツリー生成手段は、消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、クロックゲーティングセルをクロック線上に配置する。ここで、消費電力算出手段は、クロックゲーティングセルのイネーブル率と、クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、第1及び第2の消費電力を算出する。
【発明の効果】
【0008】
開示の装置によれば、このようにすることで、クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計することが可能となる。
【図面の簡単な説明】
【0009】
【図1】実施形態に係る集積回路設計装置のハードウェア構成の一例を示す図である。
【図2】一定の方向に沿ってクロック線が配置された集積回路の一例を示す図である。
【図3】クロックゲーティングセルの配置方法の他の例を示す図である。
【図4】クロックゲーティングセルの配置方法の他の例を示す図である。
【図5】X軸およびY軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図6】X軸およびY軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図7】X軸およびY軸方向に沿ってクロック線が配置された集積回路の一例を示す図。
【図8】実施形態に係る集積回路設計方法の具体的な処理を示すフローチャートである。
【図9】変形例に係る集積回路の一例を示す図である。
【発明を実施するための形態】
【0010】
以下、実施形態の一例について図面を参照しつつ説明する。
【0011】
[ハードウェア構成]
まず、実施形態に係る集積回路設計装置200のハードウェア構成の一例について説明する。
【0012】
図1に、集積回路設計装置200のハードウェア構成の一例を示す。集積回路設計装置200は、例えばPC(Personal Computer)などのコンピュータであり、制御部11、メモリ12、ハードディスク13、出力部14、入力部15、インターフェース(I/F)16及びディスクドライブ17を有する。これらの構成要素は、バス10に接続されている。ここで、制御部11は、例えばCPU(Central Processing Unit)である。メモリ12は、例えばROM(Read Only Memory)やRAM(Random Access Memory)である。出力部14は、例えばモニタやプリンタなどの装置であり、入力部15は、ユーザが指示を入力するための、例えばマウスやキーボードなどの装置である。インターフェース16は、例えばUSB(Universal Serial Bus)などの外部接続インターフェースである。ディスクドライブ17は、例えばDVD(Digital Versatile Disc)などのディスクを駆動させるためのディスクドライブである。
【0013】
集積回路設計装置200において、制御部11は、ユーザからの指示を基に、集積回路設計プログラムを実行する。これにより、ユーザにより入力されたデータに基づいて、実施形態に係る集積回路が設計される。以下、実施形態に係る集積回路設計方法について説明する。
【0014】
[集積回路設計方法]
実施形態に係る集積回路設計方法では、クロック線上にて消費される消費電力を減少させるため、クロックゲーティングセルをクロック線上に配置する設計が行われる。なお、以下において、「集積回路の消費電力」といった場合には、集積回路におけるクロック線上にて消費される消費電力のことを示すものとする。クロックゲーティングセルは、例えばAND素子であり、クロック信号及びイネーブル信号が入力される。イネーブル信号を制御することにより、クロックゲーティングセルよりクロック信号を出力させるか否かが制御される。クロックゲーティングセルの配置の一例について図2を用いて説明する。
【0015】
図2(a)、(b)は、主に、一定の方向(図2(a)、(b)でいうとX軸方向)に沿ってクロック線が配置された集積回路の一例を示す図である。図2(a)、(b)に示す集積回路では、クロックソースCSの出力端子に接続されるとともに3本に分岐したクロック線上にクロックゲーティングセルCGC1〜CGC3が配置されている。
【0016】
なお、以下において、集積回路において、同じ機能を有する構成要素を区別しないで示す場合には、数字又は英小文字を省略して示すものとする。例えば、以下では、クロックゲーティングセルCGC1〜CGC3を区別せずに示す場合には、単に「クロックゲーティングセルCGC」と示すものとする。
【0017】
図2(a)は、クロックゲーティングセルをクロックシンク側に配置した集積回路の一例を示す図である。
【0018】
図2(a)に示す集積回路の一例では、クロックソースCSから点Paまで1本のクロック線L1が配置されている。クロック線L1は点Paにて3本のクロック線L11、L12、L13に分岐している。分岐したクロック線L11、L12、L13はそれぞれフリップフリップ回路FFに接続されている。クロック線L1には、リピータバッファ(以下、単に「バッファ」と称する)Bu1〜Bu5が配置されている。クロック線L11には、クロックゲーティングセルCGC1が配置され、クロック線L12には、クロックゲーティングセルCGC2が配置され、クロック線L13には、クロックゲーティングセルCGC3が配置されている。クロックゲーティングセルCGC1とフリップフロップ回路FFとの間にはバッファBu6が配置されている。クロックゲーティングセルCGC2とフリップフロップ回路FFとの間にはバッファBu7が配置されている。クロックゲーティングセルCGC3とフリップフロップ回路FFとの間にはバッファBu8が配置されている。つまり、バッファBuは、各クロックゲーティングセルCGCを境にして、クロックソースCS側に5つ配置され、クロックシンク側に1つ配置されている。このことから分かるように、図2(a)に示す集積回路では、各クロックゲーティングセルCGCをクロックシンク側に配置する仕方として、各クロックゲーティングセルCGCはフリップフロップ回路FFに最も近い配置可能な場所に配置されている。
【0019】
ここで、クロックゲーティングセルCGC1、CGC2、CGC3のそれぞれには、イネーブル信号e1、e2、e3が入力される。イネーブル信号e1、e2、e3を制御することにより、クロックゲーティングセルCGC1、CGC2、CGC3のそれぞれからフリップフロップ回路FFに供給されるクロック信号の有無が制御される。
【0020】
図2(b)は、クロックゲーティングセルをクロックソース側に配置した集積回路の一例を示す図である。
【0021】
図2(b)に示す集積回路の一例では、クロックソースCSの出力端子に、3本に分岐したクロック線L21、22、23が接続されている。分岐したクロック線L21、22、23はそれぞれフリップフロップ回路FFに接続されている。各クロック線L21、22、23にはそれぞれ、クロックソースCSに隣接して、クロックゲーティングセルCGCが配置されている。具体的には、クロック線L21には、クロックゲーティングセルCGC1が配置され、クロック線L22には、クロックゲーティングセルCGC2が配置され、クロック線L23には、クロックゲーティングセルCGC3が配置されている。クロックゲーティングセルCGC1とフリップフロップ回路FFとの間にはバッファBu11〜Bu16が配置されている。クロックゲーティングセルCGC2とフリップフロップ回路FFとの間にはバッファBu21〜Bu26が配置されている。クロックゲーティングセルCGC3とフリップフロップ回路FFとの間にはバッファBu31〜Bu36が配置されている。このことから分かるように、図2(b)に示す集積回路では、各クロックゲーティングセルCGCをクロックソース側に配置する仕方として、各クロックゲーティングセルCGCは、クロックソースCSに最も近い配置可能な場所に配置されている。
【0022】
ここで、クロックゲーティングセルCGCをクロックシンク側に配置した集積回路(図2(a))と比較して、クロックゲーティングセルCGCをクロックソース側に配置した集積回路(図2(b))の方が必ずしも低消費電力になるとは限らない。なぜなら、クロックゲーティングセルCGCをクロックソース側に配置した場合と比較して、クロックゲーティングセルCGCをクロックシンク側に配置した場合には、配線およびバッファBuの共有部分が増加するからである。別の言い方をすると、クロックゲーティングセルCGCをクロックソース側に配置した場合と比較して、クロックゲーティングセルCGCをクロックシンク側に配置した場合には、バッファBuの数を減少させることができるからである。
【0023】
ここで、どちらの集積回路がより低消費電力になるかは、クロックゲーティングセルCGCのイネーブル率、より詳細には、イネーブル率と、消費電力におけるダイナミック電力成分とスタティック電力成分との比率と、に応じて決まる。ここで、イネーブル率とは、クロックゲーティングセルCGCにおける単位時間に対するクロック信号の出力時間の割合である。ダイナミック電力成分とは、集積回路が動作したときに消費される電力である。スタティック電力成分とは、集積回路が動作しなくても電源が入っただけで消費される電力であり、リーク電流に起因する消費電力である。以下、図2(a)、(b)に示す各集積回路における、イネーブル率、ダイナミック電力成分及びスタティック電力成分を考慮した消費電力の算出方法について説明する。
【0024】
まず、図2(a)に示す集積回路の消費電力の算出方法について説明する。
【0025】
以下では、ダイナミック電力成分をPdとし、スタティック電力成分をPsとし、イネーブル率をe_rateとする。このとき、クロックゲーティングセルCGCを介さないクロック信号が供給されるバッファBuの消費電力はPd+Psで表わされる。一方、クロックゲーティングセルCGCを介したクロック信号が供給されるバッファBuの消費電力はPd×e_rate+Psで表わされる。また、以下では、クロックゲーティングセルCGCの消費電力をPgとし、フリップフロップ回路FFの消費電力をPffとする。
【0026】
図2(a)に示す集積回路では、バッファBu1〜Bu5が、クロックゲーティングセルCGCを介さないクロック信号が供給されるバッファに相当する。また、バッファBu6〜Bu8が、クロックゲーティングセルCGCを介したクロック信号が供給されるバッファに相当する。また、クロックゲーティングセルCGCは3つ配置され、各クロックゲーティングCGCのそれぞれに対応してフリップフロップ回路FFが配置されている。従って、図2(a)に示す集積回路における合計消費電力Pmaは、以下の式(1)で示される。
【0027】
Pma=(Pd+Ps)×5
+(Pg+(Pd×e_rate+Ps)+Pff)×3
=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
・・・(1)
次に、図2(b)に示す集積回路の消費電力の算出方法について説明する。
【0028】
図2(b)に示す集積回路では、バッファBu11〜Bu16、Bu21〜Bu26、Bu31〜Bu36が、クロックゲーティングセルCGCを介したクロック信号が供給されるバッファに相当する。また、分岐した3本のクロック線L21、22、23にはそれぞれ、クロックゲーティングセルCGCが配置されるとともに、フリップフロップ回路FFが配置されている。従って、図2(b)に示す集積回路における合計消費電力Pmbは、以下の式(2)で示される。
【0029】
Pmb=(Pg+(Pd×e_rate+Ps)×6+Pff)×3
=(18×e_rate×Pd)+18Ps+(Pg+Pff)×3
・・・(2)
上記の式(1)、(2)はどちらも(Pg+Pff)×3の項を含んでいる。また、この項以外の項にはPg、Pffが含まれていない。つまり、合計消費電力Pma、Pmbのうち、どちらが小さいか、ということは、Pg、Pffの値によっては影響されない。逆に言うと、図2(a)、(b)に示す集積回路のうち、どちらが低消費電力になるか、ということは、イネーブル率e_rateとダイナミック電力成分Pdとスタティック電力成分Psとによって決まるということになる。
【0030】
ここで、図2(a)、(b)に示す集積回路において、ダイナミック電力成分Pdとスタティック電力成分Psとの比率をPd=10Psに設定して、イネーブル率を変化させた場合の例について説明する。
【0031】
最初に、各クロックゲーティングセルCGCのイネーブル率をいずれも同じ値に設定した場合の例について説明する。具体的には、各クロックゲーティングセルCGCのイネーブル率がいずれも80%となっている場合といずれも20%となっている場合との2つの場合について説明する。
【0032】
まず、各クロックゲーティングセルCGCのイネーブル率がいずれも80%となっている場合の例について説明する。
【0033】
イネーブル率を80%とした場合における図2(a)に示す集積回路の合計消費電力Pmaは、式(1)を用いると、以下の式(3)で示される。
【0034】
Pma=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
=7.4Pd+8Ps+(Pg+Pff)×3 ・・・(3)
イネーブル率を80%とした場合における図2(b)に示す集積回路の合計消費電力Pmbは、式(2)を用いると、以下の式(4)で示される。
【0035】
Pmb=(18×e_rate×Pd)+18Ps+(Pg+Pff)×3
=14.4Pd+18Ps+(Pg+Pff)×3 ・・・(4)
ここで、Pd=10Psとした場合には、式(3)は以下の式(5)となり、式(4)は以下の式(6)となる。
【0036】
Pma=7.4Pd+8Ps+(Pg+Pff)×3
=8.2Pd+(Pg+Pff)×3 ・・・(5)
Pmb=14.4Pd+18Ps+(Pg+Pff)×3
=16.2Pd+(Pg+Pff)×3 ・・・(6)
上記の式(5)、(6)より分かるように、Pd=10Psとなっている場合において、各クロックゲーティングセルCGCのイネーブル率が80%となっている場合には、図2(b)に示す集積回路と比較して、図2(a)に示す集積回路の方が低消費電力となっている。
【0037】
次に、各クロックゲーティングセルCGCのイネーブル率がいずれも20%となっている場合の例について説明する。
【0038】
イネーブル率を20%とした場合における図2(a)に示す集積回路の合計消費電力Pmaは、式(1)を用いると、以下の式(7)で示される。
【0039】
Pma=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
=5.6Pd+8Ps+(Pg+Pff)×3 ・・・(7)
イネーブル率を20%とした場合における図2(b)に示す集積回路の合計消費電力Pmbは、式(2)を用いると、以下の式(8)で示される。
【0040】
Pmb=(18×e_rate×Pd)+18Ps+(Pg+Pff)×3
=3.6Pd+18Ps+(Pg+Pff)×3 ・・・(8)
ここで、Pd=10Psとした場合には、式(7)は以下の式(9)となり、式(8)は以下の式(10)となる。
【0041】
Pma=5.6Pd+8Ps+(Pg+Pff)×3
=6.4Pd+(Pg+Pff)×3 ・・・(9)
Pmb=3.6Pd+18Ps+(Pg+Pff)×3
=5.4Pd+(Pg+Pff)×3 ・・・(10)
式(9)、(10)より分かるように、Pd=10Psとなっている場合において、各クロックゲーティングセルCGCのイネーブル率が20%となっている場合には、図2(a)に示す集積回路と比較して、図2(b)に示す集積回路の方が低消費電力となっている。つまり、イネーブル率が80%となっている場合とイネーブル率が20%となっている場合とでは、互いに逆の結果となっている。
【0042】
次に、各クロックゲーティングセルCGCのイネーブル率が互いに異なる場合の例について説明する。具体的には、クロックゲーティングセルCGC1、CGC2、CGC3のそれぞれについて、イネーブル率が30%、20%、10%となっている場合と、イネーブル率が30%、20%、100%となっている場合とについて説明する。
【0043】
まず、クロックゲーティングセルCGC1のイネーブル率が30%、クロックゲーティングセルCGC2のイネーブル率が20%、クロックゲーティングセルCGC3のイネーブル率が10%となっている場合の例について説明する。ここでもPd=10Psとする。この場合、図2(a)に示す集積回路の合計消費電力Pmaは以下の式(11)となる。
【0044】
Pma=(Pd+Ps)×5+Σ(Pg+(Pd×e_rate+Ps)+Pff)
=(Pd+Ps)×5+Pd×(0.3+0.2+0.1)
+3Ps+(Pg+Pff)×3
=5.6Pd+8Ps+(Pg+Pff)×3
=6.4Pd+(Pg+Pff)×3 ・・・(11)
一方、図2(b)に示す集積回路の合計消費電力Pmbは以下の式(12)となる。
【0045】
Pmb=Σ(Pg+(Pd×e_rate+Ps)×6+Pff)
=Pd×(0.3+0.2+0.1)×6+18Ps+(Pg+Pff)×3
=3.6Pd+18Ps+(Pg+Pff)×3
=5.4Pd+(Pg+Pff)×3 ・・・(12)
上記の式(11)、(12)より分かるように、クロックゲーティングセルCGC1、CGC2、CGC3の各イネーブル率が30%、20%、10%となっている場合、図2(a)に示す集積回路よりも図2(b)に示す集積回路の方が低消費電力となっている。
【0046】
次に、クロックゲーティングセルCGC1のイネーブル率が30%、クロックゲーティングセルCGC2のイネーブル率が20%、クロックゲーティングセルCGC3のイネーブル率が100%となっている場合の例について説明する。なお、ここで、クロックゲーティングセルCGC3のイネーブル率が100%とは、別の言い方をすると、クロックゲーティングセルCGC3が配置されていないということである。従って、図2(a)に示す集積回路の合計消費電力Pmaは以下の式(13)となる。
【0047】
Pma=(Pd+Ps)×5+Σ(Pg+(Pd×e_rate+Ps)+Pff)
=(Pd+Ps)×5+Pd×(0.3+0.2+1.0)
+3Ps+(2Pg+3Pff)
=6.5Pd+8Ps+(2Pg+3Pff) ・・・(13)
一方、図2(b)に示す集積回路の合計消費電力Pmbは以下の式(14)となる。
【0048】
Pmb=Σ(Pg+(Pd×e_rate+Ps)×6+Pff)
=Pd×(0.3+0.2+1.0)×6+18Ps+(2Pg+3Pff)
=9Pd+18Ps+(2Pg+3Pff) ・・・(14)
上記の式(13)、(14)より分かるように、クロックゲーティングセルCGC1、CGC2、CGC3の各イネーブル率が30%、20%、100%となっている場合、図2(b)に示す集積回路よりも図2(a)に示す集積回路の方が低消費電力となっている。これは、クロックゲーティングセルCGC1、CGC2、CGC3の各イネーブル率が30%、20%、10%となっている場合と比較して、逆の結果となっている。
【0049】
以上に述べたことから分かるように、クロックゲーティングセルをクロックシンク側に配置した場合とクロックソース側に配置した場合とで、どちらが低消費電力となるかは、イネーブル率、ダイナミック電力成分及びスタティック電力成分によって決まる。
【0050】
なお、図2では、クロックゲーティングセルを全てクロックシンク側に配置した場合の集積回路と、クロックゲーティングセルを全てクロックソース側に配置した場合の集積回路の例を示した。しかしながら、クロックゲーティングセルの配置方法としては、これに限られるものではない。例えば、クロックゲーティングセルの他の配置方法としては、一部のクロックゲーティングセルをクロックソース側に配置し、それ以外のクロックゲーティングセルをクロックシンク側に配置する方法も考えられる。また、例えば、更なる他の配置方法としては、クロックソースとフリップフロップ回路との間の中間位置にクロックゲーティングセルを配置する方法も考えられる。そこで、以下では、これらの配置方法による消費電力の大きさについて検証する。
【0051】
まず、一部のクロックゲーティングセルをクロックソース側に配置し、それ以外のクロックゲーティングセルをクロックシンク側に配置した場合の消費電力の大きさについて図3を用いて検証する。
【0052】
図3は、クロックゲーティングセルの配置方法の他の例を示す図である。図3(a)は、図2(a)に示した、クロックゲーティングセルCGCを全てクロックシンク側(ここでは、フリップフロップ回路FFに最も近い配置可能な場所)に配置したときの集積回路例である。図3(d)は、図2(b)に示した、クロックゲーティングセルCGCを全てクロックソース側(ここでは、クロックソースCSに最も近い配置可能な場所)に配置したときの集積回路例である。それに対し、図3(b)は、2つのクロックゲーティングセルCGC1、CGC2をクロックシンク側に配置し、1つのクロックゲーティングセルCGC3をクロックソース側に配置した集積回路例である。また、図3(c)は、1つのクロックゲーティングセルCGC1をクロックシンク側に配置し、2つのクロックゲーティングセルCGC2、CGC3をクロックソース側に配置した集積回路例である。なお、図3において、クロック線上の黒い三角印はバッファBuを示している(以下、図4以降においても同じ)。
【0053】
クロックゲーティングセルCGCのイネーブル率が全て同じであるとすると、先にも述べたように、図3(a)に示す集積回路における合計消費電力Pmaは以下の式(15)で示される。
【0054】
Pma=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
・・・(15)
これに対し、図3(b)に示す集積回路における合計消費電力Pma1は以下の式(16)で示される。
【0055】
Pma1=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
+(5×e_rate×Pd)+5Ps ・・・(16)
また、図3(c)に示す集積回路における合計消費電力Pma2は以下の式(17)で示される。
【0056】
Pma2=5Pd+8Ps+(3×e_rate×Pd)+(Pg+Pff)×3
+(10×e_rate×Pd)+10Ps ・・・(17)
上述の式(15)、(16)、(17)より分かるように、図3(a)、(b)、(c)に示す集積回路のうち、最も低消費電力となるのは、図3(a)に示す集積回路であり、図3(b)、(c)に示す集積回路が最も低消費電力となることはない。このことは、次に述べる理由からも言える。即ち、クロックゲーティングセルを1つでもクロックシンク側に配置した場合には、当該クロックゲーティングセルに対し100%動作のクロック信号が供給される。ここで、100%動作のクロック信号とは、供給停止期間がないクロック信号、即ち、クロックソースからクロックゲーティングセルを介さずに直接供給されるクロック信号という意味である。また、クロックシンク側に配置したクロックゲーティングセル以外の他のクロックゲーティングセルがクロックソース側に配置されると、当該他のクロックゲーティングセルとフリップフロップ回路との間にはバッファが挿入される。そのため、このとき、挿入されたバッファ分の電力消費が発生する。つまり、クロックゲーティングセルを1つでもクロックシンク側に配置した場合には、当該クロックゲーティングセル以外の他のクロックゲーティングセルについても、当該クロックゲーティングセルとクロック線を共有させた方が、共有させない場合と比較して低消費電力となる。
【0057】
このことから分かるように、図3(a)、(b)、(c)に示す集積回路のうち、最も低消費電力となるのは、図3(a)に示す集積回路である。また、先に述べたように、図3(a)に示す集積回路と図3(d)に示す集積回路とで、どちらが低消費電力となるかは、イネーブル率、ダイナミック電力成分及びスタティック電力成分によって決まる。従って、図3(a)〜(d)に示す集積回路のうち、図3(a)、(d)に示す集積回路のどちらかが最も低消費電力となる。
【0058】
次に、クロックソースCSとフリップフロップ回路FFとの間の中間位置にクロックゲーティングセルCGCを配置した場合の消費電力の大きさについて図4を用いて検証する。
【0059】
図4は、クロックゲーティングセルCGCの配置方法の他の例を示す図である。図4(a)は、図2(a)に示した、クロックゲーティングセルCGCを全てフリップフロップ回路FFに最も近い配置可能な場所に配置したときの集積回路例である。図4(f)は、図2(b)に示した、クロックゲーティングセルCGCを全てクロックソースCSに最も近い配置可能な場所に配置したときの集積回路例である。それに対し、図4(b)〜図4(e)は、クロックソースCSとフリップフロップ回路FFとの間の中間位置にクロックゲーティングセルCGCを配置したときの集積回路例である。
【0060】
クロックゲーティングセルCGCのイネーブル率が全て同じであるとすると、先にも述べたように、図4(a)に示す集積回路における合計消費電力Pmaは以下の式(18)で示される。
【0061】
Pma=5Pd+8Ps+(3×e_rate×Pd)+3(Pg+Pff)
・・・(18)
図4(b)に示す集積回路における合計消費電力Pmab1は以下の式(19)で示される。
【0062】
Pmab1=4Pd+10Ps+(6×e_rate×Pd)+3(Pg+Pff)
・・・(19)
図4(c)に示す集積回路における合計消費電力Pmab2は以下の式(20)で示される。
【0063】
Pmab2=3Pd+12Ps+(9×e_rate×Pd)+3(Pg+Pff)
・・・(20)
図4(d)に示す集積回路における合計消費電力Pmab3は以下の式(21)で示される。
【0064】
Pmab3=2Pd+14Ps+(12×e_rate×Pd)+3(Pg+Pff)
・・・(21)
図4(e)に示す集積回路における合計消費電力Pmab4は以下の式(22)で示される。
【0065】
Pmab4=1Pd+16Ps+(15×e_rate×Pd)+3(Pg+Pff)
・・・(22)
先にも述べたように、図4(f)に示す集積回路における合計消費電力Pmbは以下の式(23)で示される。
【0066】
Pmb=18Ps+(18×e_rate×Pd)+3(Pg+Pff)
・・・(23)
上述の式(18)〜(23)を見てみると、式(18)と式(19)、式(19)と式(20)、式(20)と式(21)、式(21)と式(22)、式(22)と式(23)のそれぞれの差分はいずれも−1Pd+2Ps+(3×e_rate×Pd)となる。従って、差分−1Pd+2Ps+(3×e_rate×Pd)が正の値の場合には、式(18)の値が最も小さくなる、即ち、図4(a)に示す集積回路が最も低消費電力となる。一方、差分−1Pd+2Ps+(3×e_rate×Pd)が負の値の場合には、式(23)の値が最も小さくなる、即ち、図4(f)に示す集積回路が最も低消費電力となる。なお、差分−1Pd+2Ps+(3×e_rate×Pd)が0となる場合には、図4(a)〜(f)に示す各集積回路における合計消費電力は同じ値となる。
【0067】
このことから分かるように、差分−1Pd+2Ps+(3×e_rate×Pd)が0でない場合には、図4(a)〜(f)に示す集積回路のうち、図4(a)、(f)に示す集積回路のどちらかが最も低消費電力となる。
【0068】
図3、図4で述べたことから分かるように、集積回路では、クロックゲーティングセルCGCを全てフリップフロップ回路FFに最も近い配置可能な場所に配置するか、または、全てクロックソースCSに最も近い配置可能な場所に配置するのが低消費電力を実現する上で好適である。
【0069】
図2(a)、(b)に示した各集積回路は、X軸方向に沿ってクロック線が配置されていたが、実際の集積回路では、X軸方向だけでなく、他の方向、例えばY軸方向にも沿ってクロック線が配置されている。このような場合においても、実施形態に係る集積回路設計方法では、上述したのと同様に、イネーブル率、ダイナミック電力成分及びスタティック電力成分を基に、クロックゲーティングセルCGCの配置位置を決定する。以下、図5〜図7を用いて具体的に説明する。
【0070】
図5〜図7は、X軸方向およびY軸方向のそれぞれに沿ってクロック線が配置された集積回路の一例を示す図である。
【0071】
図5〜図7に示す集積回路では、クロックソースCSから点P1まで1本のクロック線Ln1が配置されている。クロック線Ln1は、クロックソースCSからX軸方向に沿って配置されるとともに、途中で折れ曲がって、Y軸方向に沿って点P1まで配置されている。クロック線Ln1は、点P1にて2本のクロック線Ln2、Ln3に分岐している。クロック線Ln2はY軸方向に沿って配置され、クロック線Ln3はX軸方向に沿って配置されている。クロック線Ln2は、点P2にて3本のクロック線Ln21、Ln22、Ln23に分岐している。分岐したクロック線Ln21、Ln22、Ln23はそれぞれフリップフロップ回路FFに接続されている。クロック線Ln3は、点P3にて3本のクロック線Ln31、Ln32、Ln33に分岐している。分岐したクロック線Ln31、Ln32、Ln33はそれぞれフリップフロップ回路FFに接続されている。以下、図5〜図7を用いて実施形態に係る集積回路設計方法について説明する。
【0072】
実施形態に係る集積回路設計方法において、まず、クロックゲーティングセルCGCはクロックシンク側、ここでは、フリップフロップ回路FFに最も近い配置可能な場所に配置される。図5に示す例では、クロックゲーティングセルCGCa1がクロック線Ln21に配置され、クロックゲーティングセルCGCa2がクロック線Ln23に配置される。クロック線Ln22はクロックゲーティングセルを介さない。また、クロックゲーティングセルCGCb1がクロック線Ln31に配置され、クロックゲーティングセルCGCb2がクロック線Ln32に配置され、クロックゲーティングセルCGCb3がクロック線Ln33に配置される。各クロックゲーティングセルCGCと各フリップフロップ回路FFとの間、および、各クロックゲーティングセルCGCとクロックソースCSとの間には、バッファBuが配置される。
【0073】
次に、クロックゲーティングセルCGCは、クロックソースCSに向けて、最初の分岐点まで無条件に移動される。即ち、クロックゲーティングセルCGCは、当該クロックゲーティングセルCGCが配置されたクロック線と他のクロック線とが合流する分岐点まで無条件に移動される。図6に示す例では、クロックゲーティングセルCGCa1、CGCa2が分岐点P2まで移動され、クロックゲーティングセルCGCb1、CGCb2、CGCb3が分岐点P3まで移動される。なぜならば、1本のクロック線上では、バッファBuの後にクロックゲーティングセルCGCを配置するよりも、バッファBuの前にクロックゲーティングセルCGCを配置した方が低消費電力となるからである。
【0074】
ここで、実施形態に係る集積回路設計方法では、図6に示す集積回路における合計消費電力が図2で述べたのと同様の方法を用いて求められる。具体的には、図6に示す集積回路では、クロックゲーティングセルCGCを介してクロック信号が供給されるバッファBuは17個あり、クロックゲーティングセルCGCを介さずにクロック信号が供給されるバッファBuは14個ある。また、クロックゲーティングセルCGCは5個配置され、フリップフロップ回路FFは6ヶ所に配置されている。従って、図6に示す集積回路における合計消費電力Pmは、以下の式(24)で示される。
【0075】
Pm=(Pd+Ps)×14
+(Pd×e_rate+Ps)×17+(5×Pg+6×Pff)
・・・(24)
次に、各クロックゲーティングセルCGCは、さらに一段上流の分岐点まで移動される。図7(a)、(b)、(c)に示す例では、クロックゲーティングセルが上流の分岐点まで移動されるとともに、その移動分だけ経路が多重化される。図7(a)に示す例では、クロックゲーティングセルCGCa1、CGCa2が分岐点P1まで移動されるとともに、その移動分だけ経路が多重化される。図7(b)に示す例では、クロックゲーティングセルCGCb1、CGCb2、CGCb3が分岐点P1まで移動されるとともに、その移動分だけ経路が多重化される。図7(c)に示す例では、クロックゲーティングセルCGCa1、CGCa2、CGCb1、CGCb2、CGCb3が分岐点P1まで移動されるとともに、その移動分だけ経路が多重化される。多重化された経路にはバッファBuが新たに配置される。ここで、図7(a)、(b)、(c)に示す集積回路における合計消費電力が図2で述べたのと同様の方法を用いて求められる。
【0076】
具体的には、図7(a)に示す集積回路では、クロックゲーティングセルCGCを介してクロック信号が供給されるバッファBuは23個あり、クロックゲーティングセルCGCを介さずにクロック信号が供給されるバッファBuは14個ある。また、クロックゲーティングセルCGCは5個配置され、フリップフロップ回路FFは6ヵ所に配置されている。従って、図7(a)に示す集積回路における合計消費電力Pmは、以下の式(25)で示される。
【0077】
Pm=(Pd+Ps)×14
+(Pd×e_rate+Ps)×23+(5×Pg+6×Pff)
・・・(25)
図7(b)に示す集積回路では、クロックゲーティングセルCGCを介してクロック信号が供給されるバッファBuは26個あり、クロックゲーティングセルCGCを介さずにクロック信号が供給されるバッファBuは11個ある。また、クロックゲーティングセルCGCは5個配置され、フリップフロップ回路FFは6ヵ所に配置されている。従って、図7(b)に示す集積回路における合計消費電力Pmは、以下の式(26)で示される。
【0078】
Pm=(Pd+Ps)×11
+(Pd×e_rate+Ps)×26+(5×Pg+6×Pff)
・・・(26)
図7(c)に示す集積回路では、クロックゲーティングセルCGCを介してクロック信号が供給されるバッファBuは32個あり、クロックゲーティングセルCGCを介さずにクロック信号が供給されるバッファBuは11個ある。また、クロックゲーティングセルCGCは5個配置され、フリップフロップ回路FFは6ヶ所に配置されている。従って、図7(c)に示す集積回路における合計消費電力Pmは、以下の式(27)で示される。
【0079】
Pm=(Pd+Ps)×11
+(Pd×e_rate+Ps)×32+(5×Pg+6×Pff)
・・・(27)
実施形態に係る集積回路設計方法では、図6に示す集積回路での式(24)で求められる合計消費電力と、図7(a)、(b)、(c)に示す集積回路での式(25)、(26)、(27)で求められる合計消費電力とが比較され、低消費電力となる方の配置の仕方でクロックゲーティングセルが配置される。
【0080】
ここで、上述の式(24)、(25)、(26)、(27)を見ると分かるように、いずれの式も(5×Pg+6×Pff)の項を含むとともに、この項以外の項にはPg、Pffが含まれていない。つまり、X軸方向およびY軸方向のそれぞれに沿ってクロック線が配置された場合であっても、図6及び図7(a)、(b)、(c)に示す集積回路のうち、どちらの集積回路が最も低消費電力となるかは、イネーブル率e_rate、ダイナミック電力成分Pd及びスタティック電力成分Psによって決まることになる。
【0081】
なお上述の式(24)、(25)、(26)、(27)では、式(25)よりは式(24)の方が必ず低消費電力、式(27)よりは式(25)の方が必ず低消費電力という比較結果となる。これはこの回路例でのクロック線Ln22がクロックゲーティングセルを介していないためである。
【0082】
以上をまとめると、実施形態に係る集積回路設計方法では、クロック線の所定の分岐点にクロックゲーティングセルを配置したときの消費電力と、当該所定の分岐点の一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力とが比較される。そして、当該所定の分岐点にクロックゲーティングセルを配置したときの消費電力の方が、当該一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力よりも小さい場合には、当該所定の分岐点にクロックゲーティングセルが配置される。一方、当該所定の分岐点にクロックゲーティングセルを配置したときの消費電力の方よりも、当該一段上流の分岐点にクロックゲーティングセルを配置したときの消費電力の方が小さい場合には、当該一段上流の分岐点にクロックゲーティングセルが配置される。
【0083】
次に、上述の実施形態に係る集積回路設計方法について図8に示すフローチャートを用いて説明する。図8は、実施形態に係る集積回路設計方法の具体的な処理を示すフローチャートである。図8に示す制御処理は、集積回路設計装置200において、制御部11がプログラムを実行することにより実現される。
【0084】
まず、ステップS101において、ネットリスト、および、クロックゲーティングセルCGCのイネーブル率がユーザにより入力される。続くステップS102において、制御部11は、ユーザからの指示を基に、フリップフロップ回路FFを含むロジックセルを配置する。この後、制御部11は、ステップS103の処理へ進む。
【0085】
ステップS103において、制御部11は、各クロックゲーティングセルCGCを配置する。ここで、図5に示したように、制御部11は、各クロックゲーティングセルCGCをクロックシンク側、ここでは、フリップフロップ回路FFに最も近い配置可能な場所に配置する。続くステップS104において、制御部11は、クロックツリーにバッファBuを配置して、クロックバッファツリーを生成する。この後、制御部11は、ステップS105の処理へ進む。
【0086】
ステップS105において、制御部11は、クロックゲーティングセルCGCを現在位置からクロックソースCSに向けて最初に到達する所定の分岐点まで移動させる。この後、制御部11は、ステップS106の処理へ進む。
【0087】
ステップS106において、制御部11は、クロックゲーティングセルCGCを移動させることが可能な、当該所定の分岐点の一段上流の分岐点を選定する。続くステップS107において、制御部11は、当該所定の分岐点から当該一段上流の分岐点までにあるバッファのダイナミック電力成分Pdとスタティック電力成分Psとを求める。この後、制御部11は、ステップS108の処理へ進む。
【0088】
ステップS108において、制御部11は、イネーブル率と、ダイナミック電力成分とスタティック電力成分との比率Pd/Psとから、クロックゲーティングセルCGCを一段上流の分岐点まで移動させた場合の合計消費電力と、クロックゲーティングセルCGCを所定の分岐点に留めた場合の合計消費電力を求める。この後、制御部11は、ステップS109の処理へ進む。
【0089】
ステップS109において、制御部11は、クロックゲーティングセルCGCを一段上流の分岐点まで移動させた場合の集積回路の合計消費電力と、クロックゲーティングセルCGCを所定の分岐点に留めた場合の集積回路の合計消費電力とを比較する。制御部11は、比較の結果、クロックゲーティングセルCGCを一段上流の分岐点まで移動させた場合の集積回路の合計消費電力の方が低消費電力であると判定した場合には(ステップS109:Yes)、ステップS110の処理へ進む。一方、制御部11は、クロックゲーティングセルCGCを所定の分岐点に留めた場合の集積回路の合計消費電力の方が低消費電力であると判定した場合には(ステップS109:No)、ステップS112の処理へ進む。
【0090】
ステップS110において、制御部11は、クロックゲーティングセルCGCを一段上流の分岐点まで移動させる。続くステップS111において、制御部11は、クロックゲーティングセルCGCの移動分だけ経路を多重化するとともに、多重化された経路にバッファBuを挿入する。この後、制御部11は、ステップS112の処理へ進む。
【0091】
ステップS112において、制御部11は、全てのクロックゲーティングセルCGCについて一段上流の分岐点まで移動させた場合の合計消費電力を算出したか否かについて判定する。制御部11は、全てのクロックゲーティングセルCGCについて一段上流の分岐点まで移動させた場合の合計消費電力を算出していないと判定した場合には(ステップS112:No)、ステップS106の処理へ戻る。一方、制御部11は、全てのクロックゲーティングセルCGCについて一段上流の分岐点まで移動させた場合の合計消費電力を算出したと判定した場合には(ステップS112:Yes)、ステップS113の処理へ進む。ステップS113において、制御部11は、上述の各処理によって生成されたクロックバッファツリーを出力する。この後、制御部11は、本制御処理を終了する。
【0092】
以上述べたように、集積回路設計装置200は、クロックゲーティングセルCGCをクロックシンク側、即ち、所定の分岐点に配置した場合の消費電力と、クロックソース側、即ち、一段上流の分岐点に配置した場合の消費電力とを算出する。そして、集積回路設計装置200は、これらの消費電力を比較して、どちらの消費電力が小さいかを判定し、消費電力が小さいと判定した方の配置の仕方で、クロックゲーティングセルCGCをクロック線上に配置する。このようにすることで、クロック線上における消費電力を効果的に抑えることが可能な集積回路を設計することが可能となる。
【0093】
[変形例]
次に、上述の実施形態に係る集積回路の変形例について説明する。図9は、変形例に係る集積回路の一例を示す図である。
【0094】
図9(a)は、図2(a)に示した、クロックゲーティングセルCGCを全てクロックシンク側に配置したときの集積回路例である。それに対し、図9(b)は、クロックゲーティングセルCGCを全てクロックソース側に配置したときの集積回路例であるが、図2(b)とは異なり、クロック線L21、L22、L23のそれぞれに配置されるバッファBuの数が異なっている。具体的には、クロック線L21には6個のバッファBuが配置され、クロック線L22には5個のバッファBuが配置され、クロック線L23には4個のバッファBuが配置されている。
【0095】
図9(a)に示す集積回路と図9(b)に示す集積回路とで、どちらが低消費電力となるかについても、イネーブル率とダイナミック電力成分とスタティック電力成分とに応じて算出することができる。つまり、集積回路設計装置200は、イネーブル率とダイナミック電力成分とスタティック電力成分とを基に、各集積回路における消費電力を算出することにより、どちらが、消費電力をより抑えることが可能な集積回路かを決定することができる。また、さらには、集積回路の配置されるバッファについて、バッファの性能、例えばバッファの駆動力が互いに異なる場合であっても、同様の方法を用いることにより、消費電力をより抑えることが可能なクロックゲーティングセルの配置を決定することができる。この場合、各バッファの消費電力を計算する際に、各バッファの性能に応じてダイナミック電力とスタティック電力の値を変化させて計算を行うことで、各バッファの性能を反映した集積回路の消費電力を算出することができる。
【0096】
なお、実施形態は、上述した実施形態の例に限られるものではなく、特許請求の範囲及び明細書全体から読み取れる発明の要旨あるいは思想に反しない範囲で適宜変更可能である。
【符号の説明】
【0097】
CS クロックソース
CGC クロックゲーティングセル
FF フリップフロップ回路
Bu バッファ

【特許請求の範囲】
【請求項1】
クロック線上における、クロックゲーティングセルをクロックソース側に配置した場合の第1の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第2の消費電力とを算出する消費電力算出手段と、
前記第1の消費電力と前記第2の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較手段と、
前記消費電力比較手段により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、
前記消費電力算出手段は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第1及び第2の消費電力を算出することを特徴とする請求項1に記載の集積回路設計装置。
【請求項2】
前記消費電力算出手段は、前記クロックゲーティングセルの前記クロックシンク側への配置として、前記クロック線の所定の分岐点に前記クロックゲーティングセルを配置し、前記クロックゲーティングセルの前記クロックソース側への配置として、前記クロック線における前記所定の分岐点の一段上流の分岐点に前記クロックゲーティングセルを配置することを特徴とする請求項1に記載の集積回路設計装置。
【請求項3】
コンピュータにより実行される集積回路設計方法であって、
クロック線上において、クロックゲーティングセルをクロックソース側に配置した場合の第1の消費電力と、前記クロックゲーティングセルをクロックシンク側に配置した場合の第2の消費電力とを算出する消費電力算出工程と、
前記第1の消費電力と前記第2の消費電力とを比較して、どちらの消費電力が小さいかを判定する消費電力比較工程と、
前記消費電力比較工程により消費電力が小さいと判定された方の配置の仕方で、前記クロックゲーティングセルを前記クロック線上に配置するクロックツリー生成手段と、を備え、
前記消費電力算出工程は、前記クロックゲーティングセルのイネーブル率と、前記クロック線上における消費電力のダイナミック電力成分とスタティック電力成分との比率と、に基づいて、前記第1及び第2の消費電力を算出することを特徴とする集積回路設計方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−22440(P2012−22440A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−158732(P2010−158732)
【出願日】平成22年7月13日(2010.7.13)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】