(57)【要約】【課題】消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることが可能な半導体集積回路を提供する。【解決手段】クロック信号を分配するクロックツリー構造を備えた半導体集積回路であって、第１のクロック信号に基づいた制御信号に応じて、イネーブル信号を出力する制御論理回路と、前記第１のクロック信号が入力され、前記イネーブル信号に応じて、前記第１のクロック信号の出力を制御する第１のクロックゲーティング回路と、前記第１のクロックゲーティング回路から出力される前記第１のクロック信号に基づいた第２のクロック信号が入力され、前記イネーブル信号に応じて、前記第２のクロック信号の出力を制御する複数の第２のクロックゲーティング回路と、前記第２のクロックゲーティング回路から出力される前記第２のクロック信号がクロック入力端子に入力される第１のフリップフロップと、を備える。【選択図】図５
2010004352.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号を分配するクロックツリー構造を備えた半導体集積回路であって、  
第１のクロック信号に基づいた制御信号に応じて、イネーブル信号を出力する制御論理回路と、
前記第１のクロック信号が入力され、前記イネーブル信号に応じて、前記第１のクロック信号の出力を制御する第１のクロックゲーティング回路と、
前記第１のクロックゲーティング回路から出力される前記第１のクロック信号に基づいた第２のクロック信号が入力され、前記イネーブル信号に応じて、前記第２のクロック信号の出力を制御する複数の第２のクロックゲーティング回路と、
前記第２のクロックゲーティング回路から出力される前記第２のクロック信号がクロック入力端子に入力される第１のフリップフロップと、を備える
ことを特徴とする半導体集積回路。
【請求項２】
前記第１のクロック信号に基づいた第３のクロック信号がクロック入力端子に入力され、データ入力端子に入力されるデータ信号に応じて、前記制御信号を出力する第２のフリップフロップをさらに備える
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記第１のクロックゲーティング回路の出力と前記第２のクロックゲーティング回路の入力との間に接続され、前記クロックツリーを構成するバッファをさらに備える
ことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記第１のクロックゲーティング回路および第２のクロックゲーティング回路は、ＡＮＤ回路またはＯＲ回路の何れか一方である
ことを特徴とする請求項１ないし３の何れかに記載の半導体集積回路。
【請求項５】
クロック信号を分配するクロックツリー構造を備えた半導体集積回路を自動的に設計する設計装置であって、
前記半導体集積回路を構成する論理ゲート情報を記憶する記憶部と、
前記記憶部に記憶された論理ゲート情報に基づいて、前記クロックツリー構造のクロック信号が伝搬する経路の上流側に、第１のクロック信号に応じて制御論理回路が出力するイネーブル信号に応じて前記第１のクロック信号をクロックゲーティングする第１のクロックゲーティング回路を、配置し、
前記第１のクロック信号の変化に応じた前記イネーブル信号の変化が、前記第１のクロック信号の前記変化から規定期間内であるか否かを判断し、
前記イネーブル信号の前記変化が、前記第１のクロック信号の前記変化から前記規定期間後である場合には、前記クロックツリー構造のクロック信号が伝搬する経路の下流側に、入力される第２のクロック信号を前記イネーブル信号に応じてクロックゲーティングする第２のクロックゲーティング回路を配置する、演算部と、を備える
ことを特徴とする半導体集積回路の設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号を分配するクロックツリー構造を備えた半導体集積回路およびその設計方法に関する。
【背景技術】
【０００２】
最近のＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）設計においては、いわゆるクロックゲーティング回路が一般的に、使用されている。
【０００３】
このいわゆるクロックゲーティング回路は、消費電力を低減するために、フリップフロップが記憶データの更新を必要としない期間、そのフリップフロップを駆動するクロック信号を停止するものである（例えば、特許文献１参照。）。
【０００４】
また、一般に、クロック信号は、多量のフリップフロップを駆動する必要があるため、クロック信号を階層的に分岐し、駆動負荷を分散するクロックツリー構造をなしている。
【０００５】
クロックゲーティングの制御信号が、複数のフリップフロップに対して、論理的に等価な制御ができる場合、制御信号を共通化し、クロックツリー構造のクロック信号が伝搬する経路の上流側にクロック制御回路を配置する。
【０００６】
これにより、より多くのクロックツリー構造を構成する回路の動作を停止することが可能になり、消費電力を低減することができる。
【特許文献１】特開２００７−８１８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることが可能な半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る実施例に従った半導体集積回路は、
クロック信号を分配するクロックツリー構造を備えた半導体集積回路であって、  
第１のクロック信号に基づいた制御信号に応じて、イネーブル信号を出力する制御論理回路と、
前記第１のクロック信号が入力され、前記イネーブル信号に応じて、前記第１のクロック信号の出力を制御する第１のクロックゲーティング回路と、
前記第１のクロックゲーティング回路から出力される前記第１のクロック信号に基づいた第２のクロック信号が入力され、前記イネーブル信号に応じて、前記第２のクロック信号の出力を制御する複数の第２のクロックゲーティング回路と、
前記第２のクロックゲーティング回路から出力される前記第２のクロック信号がクロック入力端子に入力される第１のフリップフロップと、を備えることを特徴とする。
【０００９】
本発明の一態様に係る実施例に従った半導体集積回路の設計装置は、クロック信号を分配するクロックツリー構造を備えた半導体集積回路を自動的に設計する設計装置であって、
前記半導体集積回路を構成する論理ゲート情報を記憶する記憶部と、
前記記憶部に記憶された論理ゲート情報に基づいて、前記クロックツリー構造のクロック信号が伝搬する経路の上流側に、第１のクロック信号に応じて制御論理回路が出力するイネーブル信号に応じて前記第１のクロック信号をクロックゲーティングする第１のクロックゲーティング回路を、配置し、
前記第１のクロック信号の変化に応じた前記イネーブル信号の変化が、前記第１のクロック信号の前記変化から規定期間内であるか否かを判断し、
前記イネーブル信号の前記変化が、前記第１のクロック信号の前記変化から前記規定期間後である場合には、前記クロックツリー構造のクロック信号が伝搬する経路の下流側に、入力される第２のクロック信号を前記イネーブル信号に応じてクロックゲーティングする第２のクロックゲーティング回路を配置する、演算部と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明の半導体集積回路によれば、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることができる。
【発明を実施するための最良の形態】
【００１１】
（比較例）
ここで、比較例として、既述のような従来のクロックゲーティング回路を有する半導体集積回路について検討する。
【００１２】
図１は、比較例の半導体集積回路１００ａの構成を示す図である。また、図２Ａは、図１に示す比較例の半導体集積回路１００ａのクロックゲーティング動作が適切な場合のタイミングチャートである。また、図２Ｂは、図１に示す比較例の半導体集積回路１００ａのクロックゲーティング動作が不適切な場合のタイミングチャートである。
【００１３】
図１に示す半導体集積回路１００ａにおいて、或るクロック信号ＣＫに応じて制御論理回路Ｘが出力するイネーブル信号ＥＮの変化が、クロックゲーティング回路（ＡＮＤ回路）Ｃの入力ピンＡに達する時刻を、時刻Ｔ１とする。所定のクロックゲーティングを実現するためには、この時刻Ｔ１は、図２Ａに示すように、クロックゲーティング回路Ｃの入力ピンＢにおいて、次のクロック信号ＣＫが立ち上がる時刻Ｔ２の前でなければならない。
【００１４】
もし、時刻Ｔ１が時刻Ｔ２よりも後の場合、図２Ｂに示すように、信号ＧＣＫ０（ＧＣＫ０１〜ＧＣＫ０４）に次のクロック信号ＣＫに応じた想定外のクロックパルスが含まれることとなり、フリップフロップＦ１〜Ｆ４が誤動作し得る。
【００１５】
したがって、制御論理回路Ｘにおいて、イネーブル信号ＥＮを生成するために許される時間は、クロック信号ＣＫの周期Ｐから、クロックゲーティング回路ＣからフリップフロップＦ１〜Ｆ４のクロックピンまでに要する時間Ｔを、減じた値になる。
【００１６】
すなわち、通常のフリップフロップ間の論理生成に許される時間Ｐよりも短い時間で、イネーブル信号ＥＮを生成しなければならなくなる。この点は、ＳｏＣ全体の動作のボトルネックになるという問題に繋がる。
【００１７】
ここで、図３は、他の比較例の半導体集積回路１００ｂの構成を示す図である。また、図４は、さらに他の比較例の半導体集積回路１００ｃの構成を示す図である。
【００１８】
上記問題に遭遇した場合、従来は、例えば、図３に示すように、イネーブル信号ＥＮを生成する源になっているフリップフロックＦに、図１のようなバッファを介さずに、直接クロック信号ＣＫが入力されるようにする。これにより、より早い時刻から、制御論理回路Ｘは、イネーブル信号ＥＮの生成を始める。これにより、時間的制約を軽減するのが一般的である。
【００１９】
しかし、図３に示す比較例では、フリップフロップＦのデータピンに信号が達するまでに許される時間が、減じられ、ＳｏＣ全体の動作の新たなボトルネックを生みだす。
【００２０】
また、他の対策として、図４に示すように、複数のクロックゲーティング回路Ｃ１〜Ｃ４を、クロックツリー構造のクロック信号が伝搬する経路のより下流側に配置する。これにより、イネーブル信号ＥＮの生成時間に余裕を与える方法もある。
【００２１】
しかし、この方法では、図１に示す比較例に比べて、クロック信号ＣＫを停止できる対象が削減され、バッファが常に動作することになり、消費電力の増大を招く。
【００２２】
そこで、本発明に係る実施例では、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることができる半導体集積回路を提案する。
【００２３】
以下、本発明に係る各実施例について図面に基づいて説明する。
【実施例１】
【００２４】
図５は、本発明の一態様である実施例１に係る半導体集積回路１００の要部の構成を示す図である。
【００２５】
図５に示すように、半導体集積回路１００は、制御論理回路１と、第１のクロックゲーティング回路２と、第２のクロックゲーティング回路３ａ〜３ｄと、フリップフロップＦ、Ｆ１〜Ｆ４と、バッファ４ａ、４ｂ、５ａ〜５ｃと、を備える。
【００２６】
バッファ５ａ〜５ｃは、直列に接続されている。この直列に接続されたバッファ５ａ〜５ｃは、クロック信号ＣＫを分配（増幅）したクロック信号ＣＫ１をフリップフロップＦのクロック入力端子に出力するようになっている。
【００２７】
フリップフロップＦは、クロック信号ＣＫに基づいたクロック信号ＣＫ１がクロック入力端子に入力されるようになっている。このフリップフロップＦは、データ入力端子に入力されるデータ信号Ｄに応じて、クロック信号ＣＫに基づいた制御信号Ｓを出力するようになっている。すなわち、外部から入力するデータ信号Ｄにより、フリップフロップＦが制御信号Ｓを出力する動作を制御することができる。
【００２８】
制御論理回路１は、クロック信号ＣＫに基づいた上記制御信号Ｓに応じて、イネーブル信号ＥＮを出力する（変化させる）ようになっている。すなわち、外部から入力するデータ信号Ｄにより、制御論理回路１がイネーブル信号ＥＮを出力する（変化させる）動作を制御することができる。
【００２９】
第１のクロックゲーティング回路２は、クロック信号ＣＫが入力され、イネーブル信号ＥＮに応じて、第２のクロック信号の出力を制御するようになっている。この第１のクロックゲーティング回路２は、ここでは、イネーブル信号ＥＮおよびクロック信号ＣＫが入力され、クロック信号制御ＧＣＫを出力するＡＮＤ回路で構成されている。
【００３０】
第２のクロックゲーティング回路３ａ〜３ｄは、第１のクロックゲーティング回路２から出力されるクロック信号ＧＣＫに基づいたクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）が入力され、イネーブル信号ＥＮに応じて、クロック信号ＧＣＫ０（ＧＣＫ０１〜ＧＣＫ０４）の出力を制御するようになっている。この第２のクロックゲーティング回路３ａ〜３ｄは、ここでは、イネーブル信号ＥＮおよびクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）が入力され、クロック信号制御ＧＣＫ０（ＧＣＫ０１〜ＧＣＫ０４）を出力するＡＮＤ回路で構成されている。
【００３１】
バッファ４ａは、第１のクロックゲーティング回路２の出力と第２のクロックゲーティング回路３ａ、３ｂの入力との間に接続され、クロックツリーを構成する。このバッファ４ａは、クロック信号ＧＣＫを分配しクロック信号ＧＣＫ１（ＧＣＫ１１）を出力するようになっている。
【００３２】
バッファ４ｂは、第１のクロックゲーティング回路２の出力と第２のクロックゲーティング回路３ｃ、３ｄの入力との間に接続され、クロックツリーを構成する。このバッファ４ｂは、クロック信号ＧＣＫを分配しクロック信号ＧＣＫ１（ＧＣＫ１２）を出力するようになっている。
【００３３】
なお、これらのバッファ４ａ、４ｂは、クロック信号ＧＣＫ（パルス）の入力が停止すると、その動作が停止し、その電力消費が低下する。
【００３４】
フリップフロップＦ１〜Ｆ４は、第２のクロックゲーティング回路３ａ〜３ｄから出力されるクロック信号ＧＣＫ０（ＧＣＫ０１〜ＧＣＫ０４）がクロック入力端子に入力されるようになっている。
【００３５】
以上のように、半導体集積回路１００は、第１のクロックゲーティング回路２に加え、クロックツリーのクロック信号が伝搬する経路のより下流側にも、第２のクロックゲーティング回路３ａ〜３ｄを配置する。
【００３６】
なお、この第１のクロックゲーティング回路２のクロック信号が伝搬する経路の上流側にもクロックツリーが配置されていてもよい。
【００３７】
ここで、以上のような構成を有する半導体集積回路１００の動作の一例について説明する。
【００３８】
図６Ａは、図５に示す実施例１に係る半導体集積回路１００のクロックゲーティング動作が適切な場合のタイミングチャートである。また、図６Ｂは、図５に示す実施例１に係る半導体集積回路１００のクロックツリーにおいて想定外のクロックパルスが生成される場合のタイミングチャートである。
【００３９】
なお、図６Ａ、図６Ｂにいて、クロック信号ＣＫの或るパルスに応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が、第１のクロックゲーティング回路２の入力ピンＡに達する時刻を、時刻Ｔ１とする。なお、ここでは簡単のため、配線分の遅延が生じ得るが、イネーブル信号ＥＮの変化が、第２のクロックゲーティング回路３ａ〜３ｄの入力ピンＡに達する時刻も、同じ時刻Ｔ１とする。また、クロック信号ＣＫの次のパルスが立ち上がる時刻を時刻Ｔ２とする。
【００４０】
図６Ａに示す場合、時刻Ｔ１は、時刻Ｔ２の前である。すなわち、時刻Ｔ１は、クロック信号ＣＫの該或るパルスが立ち上がってからクロック信号ＣＫの１周期（規定期間）内である。これにより、第１のクロックゲーティング回路２において、所定のクロックゲーティングを実現することができる。
【００４１】
一方、図６Ｂに示す場合、時刻Ｔ１は時刻Ｔ２よりも後である。すなわち、時刻Ｔ１は、クロック信号ＣＫの該或るパルスが立ち上がってからクロック信号ＣＫの１周期（規定期間）後である。これにより、第１のクロックゲーティング回路２において、所定のクロックゲーティングができない。これにより、信号ＧＣＫ、ＣＧＫ１にクロック信号ＣＫの次のパルスに応じた想定外のクロックパルスが含まれることとなる。
【００４２】
しかし、信号ＣＧＫ１に含まれた想定外のクロックパルスが、第２のクロックゲーティング回路３ａ〜３ｄの入力ピンに到達する時刻は、時刻Ｔ１の後である。したがって、第２のクロックゲーティング回路３ａ〜３ｄにより、この信号ＣＧＫ１に含まれた想定外のクロックパルスは、クロックゲーティングされる。これにより、信号ＧＣＫ０には、想定外のクロックパルスは現れない。これにより、フリップフロップＦ１〜Ｆ４が誤動作を防止できる。
【００４３】
このように、イネーブル信号ＥＮの変化は、第２のクロックゲーティング回路３ａ〜３ｄの入力ピンＢにおいてクロック信号ＧＣＫ１が立ち上がる時刻Ｔ３までに、第２のクロックゲーティング回路３ａ〜３ｄの入力ピンＡに到達すればよい。したがって制御論理回路１がイネーブル信号ＥＮを生成する時間に余裕が生じる。
【００４４】
さらに、イネーブル信号ＥＮにより、クロック信号ＧＣＫを停止させている期間中は、バッファ４ａ、４ｂを停止できる。これにより、半導体集積回路１００の消費電力を低減することができる。
【００４５】
以上の半導体集積回路１００の構成は、クロックツリー全体に適用するのではなく、イネーブル信号ＥＮの生成時間に余裕の無い回路構成を抽出して、その範囲内にのみ適用するようにしてもよい。これにより、追加する回路の規模を最小限に抑えることができる。
【００４６】
以上のように、本実施例に係る半導体集積回路によれば、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることができる。
【実施例２】
【００４７】
実施例１では、第１、第２のクロックゲーティング回路として、ＡＮＤ回路を適用した場合について述べた。
【００４８】
本実施例２では、第１、第２のクロックゲーティング回路として、ＯＲ回路を適用した場合について述べる。
【００４９】
図７は、本発明の一態様である実施例２に係る半導体集積回路２００の要部の構成を示す図である。なお、図７において、図５と同じ符号を付された構成は、図５に示す構成と同様の構成である。
【００５０】
図７に示すように、半導体集積回路２００は、制御論理回路１と、第１のクロックゲーティング回路２０２と、第２のクロックゲーティング回路２０３ａ〜２０３ｄと、フリップフロップＦ、Ｆ１〜Ｆ４と、バッファ４ａ、４ｂ、５ａ〜５ｃと、を備える。
【００５１】
なお、この半導体集積回路２００は、実施例１の半導体集積回路１００と比較して、第１のクロックゲーティング回路２０２および第２のクロックゲーティング回路２０３ａ〜２０３ｄが、ＯＲ回路で構成される以外は、同様の構成である。
【００５２】
ここで、以上のような構成を有する半導体集積回路２００の動作の一例について説明する。
【００５３】
図８Ａは、図７に示す実施例２に係る半導体集積回路２００のクロックゲーティング動作が適切な場合のタイミングチャートである。また、図８Ｂは、図７に示す実施例２に係る半導体集積回路２００のクロックツリーにおいて想定外のクロックパルスが生成される場合のタイミングチャートである。
【００５４】
なお、図８Ａ、図８Ｂにいて、クロック信号ＣＫの或るパルスの立ち上がりに応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が、第１のクロックゲーティング回路２０２の入力ピンＡに達する時刻を、時刻Ｔ１とする。なお、ここでは簡単のため、配線分の遅延が生じ得るが、イネーブル信号ＥＮの変化が、第２のクロックゲーティング回路３ａ〜３ｄの入力ピンＡに達する時刻も、同じ時刻Ｔ１とする。また、クロック信号ＣＫの該パルスが立ち下がる時刻を時刻Ｔ２とする。
【００５５】
図８Ａに示す場合、時刻Ｔ１は、時刻Ｔ２の前である。すなわち、時刻Ｔ１は、クロック信号ＣＫの該或るパルスが立ち上がってからクロック信号ＣＫの半周期（規定期間）内である。これにより、第１のクロックゲーティング回路２０２において、所定のクロックゲーティングを実現することができる。
【００５６】
一方、図８Ｂに示す場合、時刻Ｔ１は時刻Ｔ２よりも後である。すなわち、時刻Ｔ１は、クロック信号ＣＫの該或るパルスが立ち上がってからクロック信号ＣＫの半周期（規定期間）後である。これにより、第１のクロックゲーティング回路２０２において、所定のクロックゲーティングができない。これにより、信号ＧＣＫ、ＣＧＫ１に、該クロック信号ＣＫの立ち下がりに応じた想定外のクロックパルスが含まれることとなる。
【００５７】
しかし、信号ＣＧＫ１に含まれた想定外のクロックパルスが、第２のクロックゲーティング回路２０３ａ〜２０３ｄの入力ピンに到達する時刻は、時刻Ｔ１の後である。したがって、第２のクロックゲーティング回路２０３ａ〜２０３ｄにより、この信号ＣＧＫ１に含まれた想定外のクロックパルスは、クロックゲーティングされる。これにより、信号ＧＣＫ０には、想定外のクロックパルスは現れない。これにより、フリップフロップＦ１〜Ｆ４が誤動作を防止できる。
【００５８】
このように、イネーブル信号ＥＮの変化は、第２のクロックゲーティング回路２０３ａ〜３ｄの入力ピンＢにおいてクロック信号ＧＣＫ１が立ち下がる時刻Ｔ３までに、第２のクロックゲーティング回路２０３ａ〜２０３ｄの入力ピンＡに到達すればよい。したがって制御論理回路１がイネーブル信号ＥＮを生成する時間に余裕が生じる。
【００５９】
さらに、イネーブル信号ＥＮにより、クロック信号ＧＣＫを停止させている期間中は、バッファ４ａ、４ｂを停止できる。これにより、半導体集積回路２００の消費電力を低減することができる。
【００６０】
以上の半導体集積回路２００の構成は、クロックツリー全体に適用するのではなく、イネーブル信号ＥＮの生成時間に余裕の無い回路構成を抽出して、その範囲内にのみ適用するようにしてもよい。これにより、追加する回路の規模を最小限に抑えることができる。
【００６１】
以上のように、本実施例に係る半導体集積回路によれば、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることができる。
【実施例３】
【００６２】
本実施例３では、実施例１で説明した半導体集積回路を自動的に設計する設計装置の一例について説明する。なお、この設計装置は、実施例２の半導体集積回路についても同様に適用される。
【００６３】
図９は、実施例３に係る半導体集積回路の設計装置３００の概略構成を示すブロック図である。
【００６４】
図９に示すように、設計装置３００は、演算処理を行う演算部（ＣＰＵ）３０１と、バス３０５を介して演算部３０１と接続された入力部３０２と、表示部３０３と、記憶部３０４と、を備える。
【００６５】
記憶部３０４は、後述する処理を実行するためのプログラムを記憶可能なプログラム記憶領域３０４ａと、半導体集積回路１００を構成する複数の論理ゲートの情報を記憶した素子情報記憶領域３０４ｂと、を有する。
【００６６】
入力部３０２から半導体集積回路１００を設計する旨の指令が与えられる。演算部３０１は、この指令に応じて、素子情報記憶領域３０４ｂの論理ゲートの情報を参照して論理ゲートの配置、結線を行い、図５に示すような半導体集積回路１００を設計する。この半導体集積回路１００の回路図は、表示部３０３に表示することができる。
【００６７】
ここで、図１０は、実施例３に係る半導体集積回路の設計装置３００による動作フローを示すフローチャートである。
【００６８】
先ず、入力部３０２を介して与えられる指令に応じて、演算部３０１は、半導体集積回路１００のクロックツリーの上流側（バッファ４ａ、４ｂの入力側）に、第１のクロックゲーティング回路２を配置する（ステップＳ１）。
【００６９】
次に、演算部３０１は、クロック信号ＣＫの或るパルスに応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が第１のクロックゲーティング回路２の入力ピンＡに達する時刻Ｔ１が、クロック信号ＣＫの次のパルスが立ち上がる時刻Ｔ２よりも、早いか否かを判断する（ステップＳ２）。
【００７０】
すなわち、演算部３０１は、クロック信号ＣＫの第１の変化（立ち上がり）に応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が、クロックツリーの第１のクロックゲーティング回路２の下流側（バッファ４ａ、４ｂの出力側）のクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）を変化させるクロック信号ＣＫの第２の変化（次の立ち上がり）よりも、早いか否かを判断する。言い換えれば、演算部３０１は、クロック信号ＣＫの第１の変化（立ち上がり）に応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が、該第１の変化からクロック信号ＣＫの１周期（規定期間）内であるか否かを判断する。
【００７１】
そして、時刻Ｔ１が時刻Ｔ２よりも早い場合（すなわち、イネーブル信号ＥＮの該変化がクロック信号ＣＫの第２の変化よりも早い場合、言い換えれば、該第１の変化からクロック信号ＣＫの１周期（規定期間）内である場合）には、演算部３０１は、クロックゲーティングが成功したものと判断する（ステップＳ３）。そして、演算部３０１は、その動作フローを終了する。この場合、半導体集積回路のクロックツリーの下流側には、第２の制御論理回路３ａ〜３ｄは、配置されない。すなわち、ここまでの演算部３０１の動作フローにより、図５に示す半導体集積回路１００から第２のクロックゲーティング回路３ａ〜３ｄが省略された回路構成が設計される。
【００７２】
一方、時刻Ｔ１が時刻Ｔ２よりも遅い場合（すなわち、イネーブル信号ＥＮの該変化がクロック信号ＣＫの第２の変化よりも遅い場合、言い換えれば、該第１の変化からクロック信号ＣＫの１周期（規定期間）後である場合）には、演算部３０１は、半導体集積回路１００のクロックツリーの下流側（バッファ４ａ、４ｂの出力側）に、第２のクロックゲーティング回路３ａ〜３ｄを配置する（ステップＳ４）。
【００７３】
次に、演算部３０１は、クロック信号ＣＫの或るパルスに応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が第２のクロックゲーティング回路３ａ〜３ｄの入力ピンＡに達する時刻Ｔ１が、クロック信号ＣＫの次のパルスに応じて第２のクロックゲーティング回路３ａ〜３ｄに入力されるクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）が変化する時刻Ｔ３よりも、早いか否かを判断する（ステップＳ５）。すなわち、クロック信号ＣＫの第１の変化（立ち上がり）に応じて制御論理回路１が出力するイネーブル信号ＥＮの変化が、該第１の変化から１周期（該規定期間）後のクロック信号ＣＫの第２の変化（次の立ち上がり）に応じたクロックツリーの第１のクロックゲーティング回路２の下流側（バッファ４ａ、４ｂの出力側）のクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）の変化よりも、早いか否かを判断する。
【００７４】
そして、時刻Ｔ１が、クロック信号ＣＫの次のパルスに応じて第２のクロックゲーティング回路３ａ〜３ｄに入力されるクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）が変化する時刻Ｔ３よりも、早い場合（すなわち、イネーブル信号ＥＮの該変化がクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）の該変化よりも早い場合）には、演算部３０１は、クロックゲーティングが成功したものと判断し（ステップＳ３）する。そして、演算部３０１は、その動作フローを終了する。
【００７５】
この場合、半導体集積回路のクロックツリーの下流側には、第２の制御論理回路３ａ〜３ｄは、配置された状態であり、例えば、図５に示す半導体集積回路１００のような回路構成が得られる。
【００７６】
一方、時刻Ｔ１が時刻Ｔ３よりも遅い場合（すなわち、イネーブル信号ＥＮの該変化がクロック信号ＧＣＫ１（ＧＣＫ１１、ＧＣＫ１２）の該変化よりも遅い場合）には、演算部３０１は、クロックゲーティングが失敗したものと判断し（ステップＳ６）、その動作フローを終了する。
【００７７】
以上の動作フローにより、半導体集積回路の設計装置３００は、例えば、図５に示すような半導体集積回路１００をレイアウトすることができる。すなわち、半導体集積回路の設計装置３００は、消費電流を低減しつつ、クロックゲーティングのタイミングの適正化を図ることが可能な半導体集積回路を自動的に設計することができる。
【図面の簡単な説明】
【００７８】
【図１】比較例の半導体集積回路１００ａの構成を示す図である。
【図２Ａ】図１に示す比較例の半導体集積回路１００ａのクロックゲーティング動作が適切な場合のタイミングチャートである。
【図２Ｂ】図１に示す比較例の半導体集積回路１００ａのクロックゲーティング動作が不適切な場合のタイミングチャートである。
【図３】他の比較例の半導体集積回路１００ｂの構成を示す図である。
【図４】さらに他の比較例の半導体集積回路１００ｃの構成を示す図である。
【図５】本発明の一態様である実施例１に係る半導体集積回路１００の要部の構成を示す図である。
【図６Ａ】図５に示す実施例１に係る半導体集積回路１００のクロックゲーティング動作が適切な場合のタイミングチャートである。
【図６Ｂ】図６Ｂは、図５に示す実施例１に係る半導体集積回路１００のクロックツリーにおいて想定外のクロックパルスが生成される場合のタイミングチャートである。
【図７】本発明の一態様である実施例２に係る半導体集積回路２００の要部の構成を示す図である。
【図８Ａ】図７に示す実施例２に係る半導体集積回路２００のクロックゲーティング動作が適切な場合のタイミングチャートである。
【図８Ｂ】図７に示す実施例２に係る半導体集積回路２００のクロックツリーにおいて想定外のクロックパルスが生成される場合のタイミングチャートである。
【図９】実施例３に係る半導体集積回路の設計装置３００の概略構成を示すブロック図である。
【図１０】実施例３に係る半導体集積回路の設計装置３００による動作フローを示すフローチャートである。
【符号の説明】
【００７９】
１、Ｘ  制御論理回路
２  第１のクロックゲーティング回路
３ａ〜３ｄ  第２のクロックゲーティング回路
４ａ、４ｂ、５ａ〜５ｃ  バッファ
１００、１００ａ、１００ｂ、１００ｃ、２００  半導体集積回路
３００  設計装置
３０１  演算部（ＣＰＵ）
３０２  入力部
３０３  表示部
３０４  記憶部
３０４ａ  プログラム記憶領域
３０４ｂ  素子情報記憶領域
３０５  バス
Ｆ、Ｆ１〜Ｆ４  フリップフロップ
Ｃ、Ｃ１〜Ｃ４  クロックゲーティング回路
ＥＮ  イネーブル信号
【図１】
2010004352.tif 000003
【図２Ａ】
2010004352.tif 000004
【図２Ｂ】
2010004352.tif 000005
【図３】
2010004352.tif 000006
【図４】
2010004352.tif 000007
【図５】
2010004352.tif 000008
【図６Ａ】
2010004352.tif 000009
【図６Ｂ】
2010004352.tif 000010
【図７】
2010004352.tif 000011
【図８Ａ】
2010004352.tif 000012
【図８Ｂ】
2010004352.tif 000013
【図９】
2010004352.tif 000014
【図１０】
2010004352.tif 000015