(57)【要約】  本発明は、クロック供給経路の供給源になるべく近い位置においてクロックを制御することができるゲーテッドクロック方式の設計方法を提供する。ゲーテッドクロック設計方法は、集積回路内の複数のレジスタへのクロック供給／停止をそれぞれ指示する複数のクロック制御信号について、前記クロック停止を指示する期間がより長く重なるクロック制御信号同士を同一グループになるように、複数のクロック制御信号をグループ化し、前記同一グループに属するクロック制御信号の論理和をグループ制御信号とし、グループ制御信号を受け取るゲーテッドクロックバッファを、前記同一グループに対応する複数のレジスタへのクロック供給経路に設けることを特徴とする。
2008114402.tif 000002
【特許請求の範囲】
【請求項１】
集積回路内の複数のレジスタへのクロック供給／停止をそれぞれ指示する複数のクロック制御信号について、前記クロック停止を指示する期間がより長く重なるクロック制御信号同士を同一グループになるように、該複数のクロック制御信号をグループ化し、
前記同一グループに属するクロック制御信号の論理和をグループ制御信号とし、
該グループ制御信号を受け取るゲーテッドクロックバッファを、前記同一グループに対応する複数のレジスタへのクロック供給経路に設ける
ことを特徴とするゲーテッドクロック設計方法。
【請求項２】
該複数のクロック制御信号の前記グループ化は、
該複数のクロック制御信号の波形を該集積回路の計算機シミュレーションにより求め、該同一グループに属するクロック制御信号の波形の論理和に基づく波形において、前記クロック供給を指示する信号値の期間がより短くなるように該複数のクロック制御信号をグループ化するグループ化であることを特徴とする請求項１記載のゲーテッドクロック設計方法。
【請求項３】
該ゲーテッドクロックバッファを該複数のレジスタへの前記クロック供給経路に設けるときに、
該グループ制御信号を受け取るゲーテッドクロックバッファを設けるか否かを判定し、
該判定に応じて該グループ制御信号を受け取るゲーテッドクロックバッファを設ける
ことを特徴とする請求項１又は２記載のゲーテッドクロック設計方法。
【請求項４】
該ゲーテッドクロックバッファを設けるか否かを前記判定は、該グループ制御信号を受け取るゲーテッドクロックバッファを設けた場合と該ゲーテッドクロックバッファの代わりに通常のクロックバッファを設けた場合との消費電力差に応じた判定であることを特徴とする請求項３記載のゲーテッドクロック設計方法。
【請求項５】
該ゲーテッドクロックバッファを設けるか否かの前記判定は、
該通常のクロックバッファの消費電力に対する該ゲーテッドクロックバッファの消費電力の増分を求め、該通常のクロックバッファを設けた場合に該通常のクロックバッファの出力端に結合されたクロック配線において消費する電力に対して、該ゲーテッドクロックバッファを設けた場合に該グループ制御信号がクロック停止を指示することにより該クロック配線において削減される消費電力削減量を求め、該消費電力削減量と該消費電力増分とに応じた判定である
ことを特徴とする請求項４記載のゲーテッドクロック設計方法。
【請求項６】
ゲーテッドクロックバッファを該複数のレジスタへのクロック供給経路に設けるときに、
前記グループ化により、複数のグループが生成され、
前記複数のグループそれぞれについて生成された複数のグループ制御信号を更にグループ化して生成された複数の上位グループの各々について、当該上位グループに属するグループ制御信号の論理和を求めることにより複数の上位グループ制御信号を生成し、
該複数の上位グループ制御信号の前記生成を繰り返すことを特徴とする請求項１〜５のいずれか一つに記載のゲーテッドクロック設計方法。
【請求項７】
該複数のクロック制御信号をそれぞれ受け取る複数のゲーテッドクロックバッファを設けることを更に含む請求項６記載のゲーテッドクロック設計方法。
【請求項８】
該複数のクロック制御信号のグループ化は、
クロック信号供給を指示する期間の長さに応じて該複数のクロック制御信号を順序づけし、該順序づけされたクロック制御信号の順番に従って該複数のクロック制御信号をグループ化するグループ化である
ことを特徴する請求項６又は７記載のゲーテッドクロック設計方法。
【請求項９】
複数のクロック信号にそれぞれ同期してデータ信号をラッチする複数のレジスタと、
該複数のレジスタにそれぞれ結合され、該複数のレジスタに該複数のクロック信号をそれぞれ供給する複数のゲーテッドクロックバッファと、
該複数のゲーテッドクロックバッファに結合され、該複数のゲーテッドクロックバッファに１つのクロック信号を供給する１つのゲーテッドクロックバッファ
を含むことを特徴とする半導体集積回路。
【請求項１０】
該複数のゲーテッドクロックバッファはそれぞれ対応する複数のクロック制御信号によりクロック供給／停止が制御され、該１つのゲーテッドクロックバッファは該複数のクロック制御信号の論理和信号によりクロック供給／停止が制御される請求項９記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に計算機利用設計及び半導体集積回路に関し、詳しくはゲーテッドクロック設計方法及びゲーテッドクロックバッファを含む半導体集積回路に関する。
【背景技術】
【０００２】
クロック信号に同期して動作するレジスタ（フリップフロップ）が一時的に状態遷移をしない動作条件にある場合、状態遷移を発生させないようなレジスタの動作制御の方式としてデータ制御とクロック制御とがある。データ制御方式では、フリップフロップの入力部分にセレクタを設け、前段の回路素子から供給される信号と当該フリップフロップ自身の出力信号との何れか一方を、フリップフロップへのデータ入力として選択できるようにする。フリップフロップが状態遷移をしない動作条件にある場合には、セレクタにより当該フリップフロップ自身の出力信号をデータ入力信号として選択して取り込むことにより、フリップフロップの内部状態（格納データ）が変化しないようにする。それに対してクロック制御方式では、フリップフロップ）が状態遷移をしない動作条件の場合には、フリップフロップへのクロック信号入力を停止することにより、フリップフロップのデータ取り込み動作自体を行わないようにする。このようにクロック信号を制御して、クロック信号に同期したデータ取り込み動作を停止させることにより、無駄な電力消費を無くす方式をゲーテッドクロック方式と呼ぶ。【０００３】
ゲーテッドクロック方式では、クロック停止によりクロック信号配線（クロックツリー）や各フリップフロップのクロック入力部分での電力消費を削減することができる。この際、フリップフロップへのクロックの供給／供給停止を制御するためには、クロックの供給／供給停止を制御する論理を求める必要がある。【０００４】
回路設計者が人手でクロック制御論理を記述する場合には、回路設計者が記述した回路ブロックの動作／動作停止についての条件をそのままクロック制御論理に用いることが多い。この場合、半導体集積回路内の比較的大きな回路ブロック単位で、クロックの供給／供給停止が制御されることになる。一方ｓｙｎｏｐｓｙｓ社のｐｏｗｅｒＣｏｍｐｉｌｅｒツールを用いると、ＲＴＬ（Register Transfer Level）のレジスタのイネーブル記述を基にして、クロックゲーティングされた論理回路を生成することができる。この場合、半導体集積回路内の個々のレジスタ単位でクロックの供給／供給停止をきめ細かく制御できるので、各レジスタに着目した場合には消費電力削減の効果を最大限に発揮することができる。【０００５】
回路ブロック単位でクロックの供給／供給停止の制御がされる場合には、その回路ブロックの各レジスタへクロック供給するクロックツリーの大元においてクロック信号を供給／供給停止すればよい。従ってこの場合には、クロックツリーの全体において、配線容量やクロックバッファ入力容量等に起因する電力消費を削減することができる。【０００６】
それに対して、半導体集積回路内の個々のレジスタ単位でクロックの供給／供給停止の制御がされる場合には、異なるレジスタ間でクロックの制御論理が互いに異なる。従って、クロックツリーの大元（供給源に最も近い位置）においてクロック信号を供給／供給停止することはできずに、クロックツリーの末端においてクロック信号を供給／供給停止するしかない。このような構成では、クロックツリーの末端に至るまでの経路においてはクロックが伝搬し、配線容量やクロックバッファ入力容量等に起因して電力が消費されることになる。【０００７】
従来技術には、フリップフロップのイネーブル信号のアクティブ率に基づいてフリップフロップを選択的にゲーテッドクロック化することにより、フリップフロップの消費電力を効果的に削減する手法がある（特許文献１）。この技術では、アクティブ率に基づいて、消費電力の削減に効果があるフリップフロップのみをゲーテッドクロック制御するようにしている。
【特許文献１】特開平２００２−９２０６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
以上を鑑みて本発明は、クロック供給経路の各レジスタ毎にクロック制御をし、クロック供給経路の供給源により近い位置でクロックを制御することができるゲーテッドクロック方式の設計方法及び半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、集積回路内の複数のレジスタへのクロック供給／停止をそれぞれ指示する複数のクロック制御信号について、前記クロック停止を指示する期間がより長く重なるクロック制御信号同士を同一グループになるように、該複数のクロック制御信号をグループ化し、前記同一グループに属するクロック制御信号の論理和をグループ制御信号とし、該グループ制御信号を受け取るゲーテッドクロックバッファを、前記同一グループに対応する複数のレジスタへのクロック供給経路に設けることを特徴とする。また、複数のクロック信号にそれぞれ同期してデータ信号をラッチする複数のレジスタと、該複数のレジスタにそれぞれ結合され、該複数のレジスタに該複数のクロック信号をそれぞれ供給する複数のゲーテッドクロックバッファと、該複数のゲーテッドクロックバッファに結合され、該複数のゲーテッドクロックバッファに１つのクロック信号を供給する１つのゲーテッドクロックバッファを含むことを特徴とする。
【発明の効果】
【００１０】
本発明による少なくとも１つの実施例によれば、ゲーテッドクロックバッファをクロック供給経路をクロック供給源のより近い位置に設けることができる。従って、ゲーテッドクロックバッファの位置以降のクロックツリーの末端に向かう部分において、配線容量やクロックバッファ入力容量等に起因する電力消費を削減することができる。この際、グループに属する複数のクロック制御信号のクロック停止を指示する期間が互いにより重なるように各グループを生成しているので、グループに纏めたクロック制御によるクロック停止期間が長くなり、良好な電力削減効率を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】半導体集積回路の設計方法を示すフローチャートである。
【図２】本発明によるゲーテッドクロック設計方法の手順を示すフローチャートである。
【図３Ａ】クロックツリーのクロック供給源に近い位置にゲーテッドクロックバッファを設けた場合の効果について説明するための図である。
【図３Ｂ】クロックツリーのクロック供給源に近い位置にゲーテッドクロックバッファを設けた場合の効果について説明するための図である。
【図４】クロック制御信号グループ化処理の一例を示すフローチャートである。
【図５】計算機シミュレーション結果により得られたクロック制御信号の波形の一例を示す図である。
【図６】順序付けしたクロック制御信号の一例を示す図である。
【図７】クロック制御信号ｅ、ｂ、ｄ、ｇ、ｈから３つのクロック制御信号を選択する１０通りの組み合わせを示す図である。
【図８】グループ化されていない信号に対するグループ化の一例を示す図である。
【図９】グループ化を順次上位の階層について実行する処理を示すフローチャートである。
【図１０】ゲーテッドクロックバッファ挿入処理の一例を示す図である。
【図１１Ａ】ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。
【図１１Ｂ】ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。
【図１２Ａ】ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。
【図１２Ｂ】ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。
【図１３】クロックツリーのより供給源に近い位置にゲーテッドクロックバッファ挿入した場合を示す図である。
【図１４】クロック制御信号グループ化処理の説明で用いた図５に示すクロック制御信号の例の場合の電力削減効果を説明するための図である。
【図１５】ゲーテッドクロック化される前のフリップフロップのＲＴＬ記述の一例を示す図である。
【図１６】ゲーテッドクロック化後のフリップフロップのＲＴＬ記述の一例を示す図である。
【図１７】ゲーテッドクロックバッファのＲＴＬ記述の一例を示す図である。
【図１８】図１６に示すゲーテッドクロック化後のフリップフロップを駆動するＲＴＬ記述である。
【図１９】上流でクロック制御しながら図１６に示すゲーテッドクロック化後のフリップフロップを駆動するＲＴＬ記述である。
【図２０】本発明によるゲーテッドクロック設計方法により設計し製造された半導体集積回路の一例を示す図である。
【図２１】本発明によるゲーテッドクロック設計方法を実行する装置の構成を示す図である。
【符号の説明】
【００１２】
１０  ＲＴＬ記述
１１  計算機シミュレーション結果
１２  ゲーテッドクロックバッファ挿入済ＲＴＬ
１５  クロック制御情報
１６  クロック制御信号グループ情報
１７  ＧＵＩインターフェース
７１〜７３  レジスタ（フリップフロップ）
７４〜７６  組み合わせ論理回路
７７〜８０  ゲーテッドクロックバッファ
８１〜８６  通常のクロックバッファ
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【発明を実施するための最良の形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。【００１４】
図１は、半導体集積回路の設計方法を示すフローチャートである。このフロ―チャートは、半導体集積回路の設計方法全体における本発明のゲーテッドクロック設計方法の位置づけを示すものである。【００１５】
ステップＳ１において、論理設計及び検証（計算機シミュレーション）が行われる。即ち、設計対象の半導体集積回路について論理設計を行い、その回路が正常に動作するか否かを計算機シミュレーションにより検証する。この結果として、回路のＲＴＬ記述１０及び計算機シミュレーション結果１１が得られる。【００１６】
ステップＳ２において、ゲーティングクロック設定を行う。即ち、ＲＴＬ記述１０及び計算機シミュレーション結果１１に基づいて、ゲーテッドクロックバッファを回路内のクロックリーに挿入する。このステップＳ２が、本発明によるゲーテッドクロック設計方法に対応する。この処理により、ゲーテッドクロックバッファが挿入されたＲＴＬ記述であるゲーテッドクロックバッファ挿入済ＲＴＬ１２が得られる。【００１７】
ステップＳ３において、物理設計を行う。即ち、ゲーテッドクロックバッファ挿入済ＲＴＬ１２に基づいて、テスト合成、クロック木合成、回路レイアウトの設計、タイミング検証等が行われる。【００１８】
図２は、本発明によるゲーテッドクロック設計方法の手順を示すフローチャートである。ステップＳ１において、回路情報（ＲＴＬ記述）１０から、クロック制御情報を抽出する。即ち、図１のステップＳ１の論理設計・検証の結果得られるＲＴＬ記述１０に基づいて、集積回路内の複数のレジスタへのクロック供給／停止をそれぞれ指示する複数のクロック制御信号を抽出する。各クロック制御信号は、その値"１"又は"０"により対応するレジスタへクロックを供給するか又は停止するかを示す信号であり、具体的には、ＲＴＬ記述１０から各レジスタ（フリップフロップ）について抽出されたイネーブル信号である。これら複数のクロック制御信号は、クロック制御情報１５として出力される。【００１９】
ステップＳ２において、計算機シミュレーション結果１１を参照して、クロック制御情報１５に含まれるクロック制御信号をグループ化する。この際、クロック停止を指示する期間が互いにより長く重なるクロック制御信号同士が優先的に同一グループになるように、複数のクロック制御信号をグループ化する。この際、グループ化プロセスは機械的な自動プロセスでよいが、設計者の経験・知識を反映させるように、ＧＵＩインターフェース１７を適宜用いて設計者がグループを選択・指定できるようにしてもよい。これにより、クロック制御信号のグループ分けを示すクロック制御信号グループ情報１６が出力される。【００２０】
ステップＳ３において、クロック制御信号グループ情報１６に基づいて、ゲーテッドクロックバッファを挿入する。即ち、グループ化により生成された複数のグループのうちの少なくとも１つのグループに属するクロック制御信号の論理和をグループ制御信号として、グループ制御信号を受け取るゲーテッドクロックバッファを複数のレジスタへのクロック供給経路に設ける。この際、消費電力に基づいてグループ制御信号を受け取るゲーテッドクロックバッファを設けるか否かを判断し、その判断に応じてグループ制御信号を受け取るゲーテッドクロックバッファを設けるようにすることが好ましい。この判断は、後ほど説明するように、ゲーテッドクロックバッファを設けた場合とゲーテッドクロックバッファの代わりに通常のクロックバッファを設けた場合との消費電力差を考えて行えばよい。【００２１】
このようにして、ゲーテッドクロックバッファをクロック供給経路の末端だけではなく、クロック供給経路の途中即ちクロック供給源に近い位置に設けたゲーテッドクロックバッファ挿入済ＲＴＬ１２（図１参照）が生成される。従って、ゲーテッドクロックバッファの位置以降のクロックツリーの末端に向かう部分において、配線容量やクロックバッファ入力容量等に起因する電力消費を削減することができる。この際、グループに属する複数のクロック制御信号のクロック停止を指示する期間が互いになるべく重なるように各グループを生成しているので、グループに纏めたクロック制御によるクロック停止期間が長くなり、良好な電力削減効率を実現することができる。【００２２】
また複数のグループそれぞれについて生成された複数のグループ制御信号を更にグループ化して生成された複数の上位グループの各々について、当該上位グループに属するグループ制御信号の論理和を求めることにより複数の上位グループ制御信号を生成してよい。この複数の上位グループ制御信号を生成する段階を、繰り返し更に上位のグループについて実行することで、クロックツリーの階層を順次上位に進みながらグループ化を繰り返してよい。これらの手順により求められたグループ制御信号を受け取るゲーテッドクロックバッファを、必要に応じて適宜クロック供給経路に設ける。これにより、クロックツリーのクロック供給源に更に近い位置に置いて、クロック供給／停止を制御することが可能となり、クロックツリーの全体において、配線容量やクロックバッファ入力容量等に起因する電力消費を削減することができる。【００２３】
図３Ａ及び３Ｂは、クロックツリーのクロック供給源に近い位置にゲーテッドクロックバッファを設けた場合の効果について説明するための図である。図３Ａでは、クロックツリーの末端にゲーテッドクロックバッファ２４が設けられ、それぞれクロック制御信号ａ乃至ｈを受け取る。クロックツリーの最上段には１つの通常のクロックバッファ２１が設けられ、中段には２つの通常のクロックバッファ２２及び２３が設けられる。この構成の場合、クロックバッファ２１の出力端から各ゲーテッドクロックバッファ２４の入力端に至るクロック配線には、常時クロック信号が伝搬して電力が消費されている。【００２４】
図３Ｂでは、クロックバッファ２１の代わりにゲーテッドクロックバッファ２５が設けられている。ゲーテッドクロックバッファ２５は、クロック制御信号ａ乃至ｈの全ての制御信号の論理和"ａ｜ｂ｜・・・｜ｈ"によりクロック供給／停止が制御される。この場合、ゲーテッドクロックバッファ２５がクロック停止している状態では、ゲーテッドクロックバッファ２５の出力端に結合されるクロック配線にはクロック信号が伝搬しない。従って、ゲーテッドクロックバッファ２５の出力端から各ゲーテッドクロックバッファ２４の入力端に至るクロック配線（点線で示す）における電力消費分が、図３Ａの場合と比較してゲーテッドクロックバッファ２５のアクティブ率（＝クロック供給時間／（クロック供給時間＋クロック停止時間））に応じて削減される。【００２５】
図４は、クロック制御信号グループ化処理の一例を示すフローチャートである。このクロック制御信号グループ化処理は、図２のステップＳ２に対応する。【００２６】
ステップＳ１で、クロック制御信号グループ化処理が開始される。即ち、グループ化されていない全てのクロック制御信号について以下の処理を繰り返す。【００２７】
ステップＳ２で、クロック制御信号を順序づけする。例えば、計算機シミュレーション結果１１により得られたクロック制御信号の波形のＯＮ時間（クロック供給を指示する時間）が短いものから順番に１から番号をつける。或いは、逆に、クロック制御信号の波形のＯＮ時間が長いものから順番に１から番号をつけてもよい。【００２８】
図５は、計算機シミュレーション結果１１により得られたクロック制御信号の波形の一例を示す図である。図５には、クロック制御信号ａ乃至ｉについて波形が示される。図４のクロック制御信号グループ化処理において使用する波形としては、シミュレーションが計算対象とした全期間に渡る波形を用いてよい。各波形は、クロック供給を指示するＯＮ（"１"又はＨＩＧＨ）とクロック停止を指示するＯＦＦ（"０"又はＬＯＷ）とから構成される。【００２９】
図６は、順序付けしたクロック制御信号の一例を示す図である。この例では、ＯＮ時間が短いものから順番に上から下にクロック制御信号が並べられている。例えばクロック制御信号ｅは、ＯＮ時間がクロック１サイクルであり、最もＯＮ時間が短い。その次にＯＮ時間が短いのは、クロック制御信号ｂ及びｄである。なおクロック制御信号ｂ及びｄの何れが先の順番となるかは適当に定めればよい。【００３０】
図４に戻り、ステップＳ３でグループ候補を作成する。この例では、順序づけしたクロック制御信号のうちで、最も短いＯＮ時間のものから順番にｎ個のクロック制御信号を選択してグループ候補とする。図６に示す順序づけしたクロック制御信号のうちで、最も短いＯＮ時間のものから順番に例えば３個のクロック制御信号を選択すると、クロック制御信号ｅ、ｂ、ｄが選択される。【００３１】
ここで、ｎはクロックツリーの分岐点からの分岐数である。クロックツリーにおいては、１つのクロック供給源から複数のクロック供給先にクロックを供給するために、途中に挿入したクロックバッファにより複数のクロック供給先（最終的なクロック供給先又は次段のクロックバッファ）にクロック信号を分配している。このときのクロックバッファによるクロック信号分配数（分岐数）は、そのクロックバッファの駆動能力に依存する。１つのクロックツリー内で、同一の駆動能力のクロックバッファに異なる数のクロック供給先が接続されるとクロック信号の伝搬速度に差が生じてしまうので、通常、分岐数はクロックツリー内で一定である。【００３２】
次にステップＳ４で、比較グループ候補を作成する。ステップＳ３で選択したグループ候補であるクロック制御信号ｅ、ｂ、ｄは、必ずしも最適なクロック制御信号の組み合わせではない可能性がある。そこで、最終的なグループ化の候補となるグループを他にも作成する。この例では、ステップＳ３で選択したグループ候補のクロック制御信号ｅ、ｂ、ｄの論理和について、そのＯＮ時間を求め、求めたＯＮ時間よりも短いＯＮ時間を有するクロック制御信号により比較グループ候補を作成する。【００３３】
図６において、グループ候補であるクロック制御信号ｅ、ｂ、ｄの論理和が最下段に示されている。この論理和信号のＯＮ時間は、４クロックサイクルである。従って、ＯＮ時間が４クロックサイクル以下である他のクロック制御信号ｇ及びｈも含めて、クロック制御信号ｅ、ｂ、ｄ、ｇ、ｈにより比較グループ候補を作成する。ここでＯＮ時間が４クロックサイクル以下である他のクロック制御信号も検討対象に含めるのは、そのような信号であれば、組み合わせたときに論理和のＯＮ時間が４クロックサイクル以下になる可能性があるからである。それに対して、自分自身のＯＮ時間が４クロックサイクル以上であるクロック制御信号については、組み合わせたときに論理和のＯＮ時間が必ず４クロックサイクル以上になるので、最初のグループ候補であるクロック制御信号ｅ、ｂ、ｄの方が好ましいグループであることが分かり切っている。【００３４】
クロック制御信号ｅ、ｂ、ｄ、ｇ、ｈから３つのクロック制御信号を選択する組み合わせは、１０通りある。図７は、クロック制御信号ｅ、ｂ、ｄ、ｇ、ｈから３つのクロック制御信号を選択する１０通りの組み合わせを示す図である。図７の左側の欄には信号の組み合わせを示し、右側の欄には組み合わせ対象の信号の論理和の信号のＯＮ時間（クロックサイクル数）を示してある。これらの組み合わせが、グループ比較候補として用いられる。【００３５】
図４に戻り、ステップＳ５でグループを決定する。具体的には、図７に示されるグループ比較候補から１つを選択する。選択の基準としては、まず論理和のＯＮ時間が最も短いもの（クロック信号間でのＯＦＦ時間の重なりがなるべく長いもの）が好ましい。何故なら、ＯＮ時間の短い論理和の信号をクロック制御信号としてクロック制御すると、クロック供給期間が短くなり、クロック配線等における信号伝搬による電力消費を大きく削減することができるからである。【００３６】
図７の例では、ＯＲ時間が最短なのはｅｂｄの組み合わせとｅｂｈの組み合わせとである。従ってこれら２つの組み合わせのうちで何れか１つをグループとすればよい。これら２つの組み合わせにおいて互いに異なる要素はｄ及びｈである。ｄのＯＮ時間とｈのＯＮ時間を比較すると、ｈの方がＯＮ時間が長い。従って、ｈを含むｅｂｈの組み合わせをグループとして確定する。これは、ｅｂｄの組み合わせとｅｂｈの組み合わせとでＯＮ時間が同一（４クロックサイクル）であるにも関わらず、ｈの方がＯＮ時間が長い（電力削減という観点ではより不利な信号である）ので、同一の結果が得られるのであればｈを用いた方が得だからである。即ち、よりＯＮ時間が短いｄを後のグループ化で使用できるように残しておいた方が、後のグループ化で得な結果となることが期待できるからである。【００３７】
図４に戻り、ステップＳ６で全ての信号がグループになったか否かを判定する。全ての信号がグループ化された場合には処理を終了する。まだグループ化されていない信号が残っている場合には、ステップＳ１に戻り以降の処理を繰り返す。【００３８】
図８は、グループ化されていない信号に対するグループ化の一例を示す図である。図８において、既にグループ化されたクロック制御信号ｅ、ｂ、ｈは取り除かれて、残りのクロック制御信号についてＯＮ時間の短い順に上から下に並べられている。最も短いＯＮ時間のものから順番に３個のクロック制御信号を選択すると、クロック制御信号ｄ、ｇ、ａが選択される。グループ候補であるクロック制御信号ｄ、ｇ、ａの論理和が最下段に示されている。この論理和信号のＯＮ時間は、９クロックサイクルである。ＯＮ時間が９クロックサイクル以下である他のクロック制御信号も含めて比較グループ候補を作成しようとするが、ＯＮ時間が９クロックサイクル以下である他のクロック制御信号はこの場合存在しない。従って、クロック制御信号ｄ、ｇ、ａの組み合わせが第２番目のグループとして確定される。【００３９】
図９は、グループ化を順次上位の階層について実行する処理を示すフローチャートである。前述したように、複数のグループそれぞれについて生成された複数のグループ制御信号を更にグループ化して生成された複数の上位グループの各々について、当該上位グループに属するグループ制御信号の論理和を求めることにより複数の上位グループ制御信号を生成する。この複数の上位グループ制御信号を生成する段階を、繰り返し更に上位のグループについて実行することで、クロックツリーの階層を順次階層上位に進みながらグループ化を繰り返す。【００４０】
まずステップＳ１で、個々の制御信号を下位階層グループとする。即ち、最下層のクロック制御信号又は各グループについて求めたグループ制御信号（グループに属する制御信号の論理和）を、以下の処理における下位階層グループとする。【００４１】
ステップＳ２で、グループ化するか否かを判断する。この際、下位階層グループの個数が１グループあたりの最大下位グループ数ｎよりも大きいか否かを判断する。即ち、グループ化しようとする信号の数が分岐数ｎ（前述の例では３）よりも大きいか否かを判断する。大きくない場合には、グループ化する必要がないので処理を終了する。大きい場合には、ステップＳ３でグループ化処理を実行する。このグループ化処理は、図４に示すグループ化処理において、クロック制御信号を下位の制御信号に置換えて行えばよい。【００４２】
ステップＳ４で、新たに生成されたグループを下位階層グループとする。その後、ステップＳ２に戻り以降の処理を繰り返す。以上により、クロックツリーの階層を順次上位階層に進みながらグループ化を繰り返すことができる。【００４３】
図１０は、ゲーテッドクロックバッファ挿入処理の一例を示す図である。図１０のゲーテッドクロックバッファ挿入処理は、図２のステップＳ３に相当する。【００４４】
図１０のステップＳ１で、全てのグループ制御信号についてゲーテッドクロックバッファ挿入の是非を判断したか否かを判定する。Ｙｅｓの場合には処理を終了する。Ｎｏの場合には、ステップＳ２に進み、最下位階層から順に未判断のグループ制御信号を１つ選択する。【００４５】
ステップＳ３で、このグループ制御信号について、ゲーテッドクロックバッファにした場合のバッファ電力増分を計算する。即ち、ゲーテッドクロックバッファの代わりに用いる通常のクロックバッファの消費電力に対するゲーテッドクロックバッファの消費電力の増分を求める。例えば、通常のクロックバッファが自分で消費する消費電力がＷｂｕｆワットであり、ゲーテッドクロックバッファが自分で消費する消費電力がＷｇｃｋｂｕｆｆワットである場合、ゲーテッドクロックバッファ使用による消費電力の増分はＷｇｃｋｂｕｆｆ−Ｗｂｕｆ（ワット）である。【００４６】
ステップＳ４で、このグループ制御信号について、ゲーテッドクロックバッファにした場合のネット電力削減分を計算する。即ち、通常のクロックバッファを設けた場合に通常のクロックバッファの出力端に結合されたクロック配線において消費する電力に対して、ゲーテッドクロックバッファを設けた場合にグループ制御信号がクロック停止を指示することにより上記クロック配線において削減される消費電力削減量を求める。【００４７】
クロックツリー上のある分岐点に着目したときに、その分岐点に通常のクロックバッファ又はゲーテッドクロックバッファを挿入する必要がある。通常のクロックバッファを挿入したときは、その分岐点以下のネット（クロック配線の集合）においてクロックが伝搬して電力が消費される。ゲーテッドクロックバッファを挿入した場合には、クロック停止する場合において、その分岐点以下のネットにおいて電力が消費されない。従って、この消費電力の差が上記の消費電力削減量となる。なおこの分岐点以下のネットの下流において既に別のゲーテッドクロックバッファが存在する場合には、そのゲーテッドクロックバッファより更に下流の部分の消費電力については、上記分岐点における通常のクロックバッファ又はゲーテッドクロックバッファの選択によらず一定である。【００４８】
図１１Ａ及び１１Ｂは、ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。図１１Ａでは、クロックツリーの末端にゲーテッドクロックバッファ３４が設けられる。図示部分のクロックツリーの最上段には１つの通常のクロックバッファ３１が設けられ、中段には２つの通常のクロックバッファ３２及び３３が設けられる。この構成の場合、クロックバッファ３２の出力端から各ゲーテッドクロックバッファ３４の入力端に至るクロック配線には、常時クロック信号が伝搬して電力が消費されている。【００４９】
図１１Ｂでは、通常のクロックバッファ３２の代わりにゲーテッドクロックバッフ３５が設けられている。ゲーテッドクロックバッファ３５は、対応するグループ制御信号によりクロック供給／停止が制御される。この場合、ゲーテッドクロックバッファ３５がクロック停止している状態では、ゲーテッドクロックバッファ３５の出力端に結合されるクロック配線にはクロック信号が伝搬しない。従って、ゲーテッドクロックバッファ３５の出力端から各ゲーテッドクロックバッファ３４の入力端に至るクロック配線（点線で示す）における電力消費分が、図１Ａの場合と比較してゲーテッドクロックバッファ３５のアクティブ率に応じて削減される。【００５０】
ゲーテッドクロックバッファ３５のアクティブ率（動作率）をβ、点線で示すクロック配線での消費電力（バッファ３４入力端も含むネットの消費電力）をＷｎｅｔとする。このときゲーテッドクロックバッファにした場合のネット電力削減分（図１０のステップＳ４で求める値）は、Ｗｎｅｔ−βＷｎｅｔである。【００５１】
図１０に戻り、ステップＳ５で、増分<削減分ならゲーテッドクロック化する。即ち、ゲーテッドクロックバッファを用いることにより、全体的に消費電力が少なくなるならゲーテッドクロックバッファを挿入する。その後、ステップＳ１に戻り、以降の処理を繰り返す。【００５２】
なお上記のゲーテッドクロックバッファ挿入処理において、電力削減分を検討する場合には、着目分岐点の更に上流の分岐点も着目することが好ましい。これについて以下に説明する。【００５３】
図１２Ａ及び１２Ｂは、ゲーテッドクロックバッファを設けた場合の消費電力への影響について説明するための図である。図１２Ａでは、クロックツリーの末端にゲーテッドクロックバッファ４３が設けられる。図示部分のクロックツリーの最上段には１つのゲーテッドクロックバッファ４１が設けられ、中段には１つの通常のクロックバッファ４２が設けられる。この構成の場合、ゲーテッドクロックバッファ４１の出力端から各ゲーテッドクロックバッファ４３の入力端に至るクロック配線には、ゲーテッドクロックバッファ４１の動作率β１に従いクロック信号が伝搬して電力が消費されている。【００５４】
図１２Ｂでは、通常のクロックバッファ４２の代わりにゲーテッドクロックバッフ４４が設けられている。ゲーテッドクロックバッファ４４は、対応するグループ制御信号によりクロック供給／停止が制御される。この場合、ゲーテッドクロックバッファ４４がクロック停止している状態では、ゲーテッドクロックバッファ４４の出力端に結合されるクロック配線にはクロック信号が伝搬しない。しかし仮にゲーテッドクロックバッファ４４の動作率β２とゲーテッドクロックバッファ４１の動作率β１とが同一であるとすると、ゲーテッドクロックバッファ４４を設けることによるネットの消費電力削減は皆無である。【００５５】
従って、着目分岐点における電力削減分の計算においては、着目分岐点の動作率β２と着目分岐点より上流の分岐点の動作率β１との差β１−β２が、考慮されるべき動作率である。この場合におけるネット電力削減分は、（β１−β２）Ｗｎｅｔとなる。このような処理により、クロックツリーのより供給源に近い位置でクロック制御することが可能となり、大きな電力削減効果を上げることができる。図１３は、クロックツリーのより供給源に近い位置にゲーテッドクロックバッファ挿入した場合を示す図である。最上段にある通常のクロックバッファ５１のみがゲーテッドクロックバッファ５２に変更されている。【００５６】
なお図１０のゲーテッドクロックバッファ挿入処理を変形して、以下のように処理してもよい。上位グループと下位グループのＯＮ時間が変わらない場合は、下位グループは挿入ポイントの候補から外す。グループのＯＮ時間が、ある割合より大きくなり、ゲーティングしても電力削減効果がなくなった場合は、それより上位は挿入ポイントの候補から外す。残ったポイントに対して、クロックゲーティングを挿入する。グループ化されたレジスタのクロック木をひとつにまとめ、そのクロック木の大元でグループの全制御信号の論理和を取ったクロックゲーティングを挿入する。【００５７】
図１４は、クロック制御信号グループ化処理の説明で用いた図５に示すクロック制御信号の例の場合の電力削減効果を説明するための図である。図１４では、通常のクロックバッファ６１がゲーテッドクロックバッファ６２に変更されている。なお制御信号の並びも変更されている。【００５８】
通常のクロックバッファが自分で消費する消費電力がＷｂｕｆワットであり、ゲーテッドクロックバッファが自分で消費する消費電力ＷｇｃｋｂｕｆｆワットがＷｂｕｆの１．２倍であるとする。即ち、Ｗｇｃｋｂｕｆｆ＝１．２Ｗｂｕｆであるとする。１つの通常のクロックバッファ６１（又はゲーテッドクロックバッファ６２）の出力に結合されたネット部分の消費電力ＷｎｅｔがＷｂｕｆの２倍であるとする。即ち、Ｗｎｅｔ＝２Ｗｂｕｆであるとする。【００５９】
グループｅｂｈの動作率は１３％、グループｄｇａの動作率は３０％、グループｆｃｉの動作率は４７％である。また全制御信号を纏めるグループの動作率は５３％である。【００６０】
上記の条件の場合、通常のクロックバッファ６１を使用した場合の全体の消費電力は、４Ｗｂｕｆ＋４Ｗｎｅｔ＝１２Ｗｂｕｆとなる。またゲーテッドクロックバッファ６２を使用した場合の全体の消費電力は、４Ｗｇｃｋｂｕｆｆ＋（０．１３＋０．３＋０．４７＋０．５３）Ｗｎｅｔ＝７．６６Ｗｂｕｆとなる。従って、この場合、３６．２％の電力削減となる。【００６１】
図１５は、ゲーテッドクロック化される前のフリップフロップのＲＴＬ記述の一例を示す図である。図１５の記述において、ｃｌｋがクロック信号、ｅｎがイネーブル信号を表している。ｃｌｋの立ち上がりエッジｐｏｓｅｄｇｅが到来すると、イネーブル信号ｅｎがアサートされている場合には、フリップフロップ入力ｉｎをフリップフロップ出力ｏｕｔｐｕｔとすることが示されている。この記述は、クロック信号の供給／停止を制御しないフリップフロップに相当する。【００６２】
図１６は、ゲーテッドクロック化後のフリップフロップのＲＴＬ記述の一例を示す図である。図１６の記述において、イネーブル信号ｅｎがｌａｔｃｈｅｄ＿ｅｎに代入され、ｌａｔｃｈｅｄ＿ｅｎとクロックｃｌｋとの論理和としてイネーブルされたクロック信号ｅｎａｂｌｅｄ＿ｃｌｏｃｋが生成される。ｅｎａｂｌｅｄ＿ｃｌｏｃｋの立ち上がりエッジｐｏｓｅｄｇｅが到来すると、フリップフロップ入力ｉｎをフリップフロップ出力ｏｕｔｐｕｔとすることが示されている。この記述は、クロック信号の供給／停止を制御するフリップフロップに相当する。【００６３】
図１７は、ゲーテッドクロックバッファのＲＴＬ記述の一例を示す図である。ｃｌｋｉｎがゲーテッドクロックバッファのクロック入力、ｃｌｋｏｕｔがゲーテッドクロックバッファのクロック出力を示している。ｌａｔｃｈｅｄ＿ｅｎとクロック入力ｃｌｋｉｎとの論理和としてクロック出力ｃｌｋｏｕｔが生成される。この記述は、クロック制御信号に応じてクロック供給／停止を制御するゲーテッドクロックバッファに相当する。【００６４】
図１８は、図１６に示すゲーテッドクロック化後のフリップフロップを駆動するＲＴＬ記述である。ｇａｔｅｄ＿ｃｌｏｃｋ＿ｆｆであるＦＦ１乃至ＦＦ３の呼び出しが、図１６のフリップフロップモジュールを３つ設けてあることに相当する。この記述は、クロックツリー末端に存在するフリップフロップのクロック入力端においてのみクロック制御を行なう場合に相当する。【００６５】
図１９は、上流でクロック制御しながら図１６に示すゲーテッドクロック化後のフリップフロップを駆動するＲＴＬ記述である。第１行で、イネーブル信号ｅｎ１乃至ｅｎ３の論理和をとってイネーブル信号ｅｎ１ｔｏ３としている。第２行にあるｇａｔｅｄ＿ｃｌｏｃｋ＿ｂｕｆｆの呼び出しが、図１７のゲーテッドクロックバッファモジュールを、クロックツリーの分岐点で使用することを示している。このｇａｔｅｄ＿ｃｌｏｃｋ＿ｂｕｆｆの呼び出しにおいて、ｅｎ１ｔｏ３をイネーブル信号の引数としていることで、このゲーテッドクロックバッファは、イネーブル信号ｅｎ１乃至ｅｎ３をグループ化したグループ制御信号により制御される。またｇａｔｅｄ＿ｃｌｏｃｋ＿ｆｆであるＦＦ１乃至ＦＦ３の呼び出しが、図１６のフリップフロップモジュールを３つ設けてあることに相当する。各ｇａｔｅｄ＿ｃｌｏｃｋ＿ｆｆの呼び出しにおいて、ｅｎ１乃至ｅｎ３がそれぞれのイネーブル信号の引数として用いられている。この記述は、クロックツリー末端に存在するフリップフロップのクロック入力端及びその上流の分岐点においてクロック制御を行なう場合に相当する。【００６６】
本発明では、図２のステップＳ３によりゲーテッドクロックバッファ挿入済ＲＴＬ１２を出力するが、このゲーテッドクロックバッファ挿入済ＲＴＬ１２において、図１６、図１７、及び図１９のようなＲＴＬ記述が含まれることになる。【００６７】
図２０は、本発明によるゲーテッドクロック設計方法により設計し製造された半導体集積回路の一例を示す図である。図２０の半導体集積回路は、レジスタ（フリップフロップ）７１乃至７３、組み合わせ論理回路７４乃至７６、ゲーテッドクロックバッファ７７乃至８０、通常のクロックバッファ８１乃至８６を含む。レジスタ７１乃至７３のデータ出力には、それぞれ組み合わせ論理回路７４乃至７６が結合されている。これらのレジスタ７１乃至７３及び論理回路７４乃至７６を含む回路が、クロック信号ＣＬＫに同期して動作することで、半導体集積回路の意図された機能を提供する。【００６８】
複数のレジスタ７１乃至７３は、複数のクロック信号にそれぞれ同期してデータ信号をラッチする。ゲーテッドクロックバッファ７７乃至７９は、複数のレジスタ７１乃至７３にそれぞれ結合され、複数のレジスタ７１乃至７３に複数のクロック信号をそれぞれ供給する。ゲーテッドクロックバッファ８０は、複数のゲーテッドクロックバッファ７７乃至７９に結合され、複数のゲーテッドクロックバッファ７７乃至７９に１つのクロック信号ＣＬＫを供給する。ここで、複数のゲーテッドクロックバッファ７７乃至７９はそれぞれ対応する複数のクロック制御信号ａ乃至ｃによりクロック供給／停止が制御され、ゲーテッドクロックバッファ８０は複数のクロック制御信号ａ乃至ｃの論理和信号ａ｜ｂ｜ｃによりクロック供給／停止が制御される。【００６９】
ゲーテッドクロックバッファ８０が設けられていることにより、ゲーテッドクロックバッファ８０の出力端からゲーテッドクロックバッファ７７乃至７９の入力端に至るクロック配線及びクロックバッファ８４乃至８６における電力消費を削減することが可能になる。即ち、論理和信号ａ｜ｂ｜ｃによりクロック停止することにより、その期間における電力消費を無くすことが可能となる。【００７０】
図２１は、本発明によるゲーテッドクロック設計方法を実行する装置の構成を示す図である。【００７１】
図２１に示されるように、本発明によるゲーテッドクロック設計方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図２１の装置は、コンピュータ５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。【００７２】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。【００７３】
本発明によるゲーテッドクロック設計方法は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。【００７４】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。【００７５】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記各実施例で説明されたようにゲーテッドクロック設計方法を実行する。【００７６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図１】
2008114402.tif 000003
【図２】
2008114402.tif 000004
【図３Ａ】
2008114402.tif 000005
【図３Ｂ】
2008114402.tif 000006
【図４】
2008114402.tif 000007
【図５】
2008114402.tif 000008
【図６】
2008114402.tif 000009
【図７】
2008114402.tif 000010
【図８】
2008114402.tif 000011
【図９】
2008114402.tif 000012
【図１０】
2008114402.tif 000013
【図１１Ａ】
2008114402.tif 000014
【図１１Ｂ】
2008114402.tif 000015
【図１２Ａ】
2008114402.tif 000016
【図１２Ｂ】
2008114402.tif 000017
【図１３】
2008114402.tif 000018
【図１４】
2008114402.tif 000019
【図１５】
2008114402.tif 000020
【図１６】
2008114402.tif 000021
【図１７】
2008114402.tif 000022
【図１８】
2008114402.tif 000023
【図１９】
2008114402.tif 000024
【図２０】
2008114402.tif 000025
【図２１】
2008114402.tif 000026
【国際調査報告】
2008114402.tif 000027
2008114402.tif 000028
2008114402.tif 000029
2008114402.tif 000030