(57)【要約】  【課題】  誤動作の虞の無いクロックゲーティング手法が適用されたクロック供給回路を含む半導体集積回路を提供すること。  【解決手段】  複数のバッファ１０１からなるバッファツリーを用いてレジスタとなる各々のフリップフロップ１０４ａ〜１０４ｄにクロック信号ＣＬＫを供給するクロック供給回路において、クロック信号ＣＬＫの供給を制御するためのイネーブル論理１０５を与えるためのクロックゲーティング回路を、各フリップフロップ１０４ａ〜１０４ｄと同じ個数のクロックゲーティング回路１０４ａ〜１０４ｄに複製し、これらを各フリップフロップ１０４ａ〜１０４ｄに物理的に隣接して配置し、各クロックゲーティング回路１０４ａ〜１０４ｄの出力を各々のフリップフロップ１０４ａ〜１０４ｄに直接接続させたもの。  【選択図】  図１
2007081853.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号の配分に複数のバッファからなるクロックツリーを用い、クロックゲーティング方式により動作する論理回路が形成された半導体集積回路において、
前記クロック信号の分配先となる回路と同じ個数で、前記クロックツリーの最終段に接続されている複数の論理ゲートを設け、
これら複数の論理ゲートにより前記クロックゲーティング方式による動作が与えられるように構成したことを特徴とする半導体集積回路。
【請求項２】
請求項１に記載の半導体集積回路において、
前記論理ゲートが、前記クロック信号の分配先である回路と半導体集積回路上で物理的に隣接して配置されていることを特徴とする半導体集積回路。
【請求項３】
請求項１に記載の半導体集積回路において、
前記論理ゲートがラッチ回路とアンド回路で構成され、前記クロック信号の分配先となる回路がフリップフロップ回路で構成されていることを特徴とする半導体集積回路。
【請求項４】
請求項１に記載の半導体集積回路において、
前記論理ゲートがオア回路で構成され、前記クロック信号の分配先となる回路がフリップフロップ回路で構成されていることを特徴とする半導体集積回路。
【請求項５】
請求項１に記載の半導体集積回路に適用される半導体集積回路設計方法であって、
前記論理ゲートに対して与えられたタイミング制約の下でタイミング解析を行うステップと、
前記タイミング解析の結果により前記タイミング制約を満足するか否かの判定を行うステップと、
前記判定結果により前記タイミング制約を満足してないと判定されたとき、前記論理ゲートを前記クロック信号の分配先となる回路と同じ個数作成するステップと、
前記論理ゲートの出力と前記クロック信号の分配先となる回路の入力を１対１の関係に接続させる処理に移行させるステップと、
を備えていることを特徴とする半導体集積回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模半導体集積回路とその設計方法に係り、特にクロックゲーティング手法が適用された半導体集積回路とその設計方法に関するものである。
【背景技術】
【０００２】
近年、ＬＳＩ(大規模半導体集積回路)の更なる大規模化と高速応答化の進捗が著しく、これに伴って消費電力の増大が大きな問題になってきている。そこで、この問題に対応するため、いわゆるクロックゲーティング手法が、これも近年、適用されるようになってきた。
【０００３】
ここで、このクロックゲーティング手法とは、ＬＳＩの中でデータの更新が行われず、論理回路が動作していない部分に対しては、データの更新が行われない期間中、クロック信号を供給しないように制御するという手法のことで、以下、このクロックゲーティング手法を用いて設計された回路、つまりクロック信号の配分に複数のバッファからなるクロックツリーを用い、クロックゲーティング方式により動作する論理回路の一例について、図４により説明する。
【０００４】
この図４の回路は、半導体集積回路の設計における論理合成処理、レイアウト設計における配置処理、それにクロック信号を各レジスタ(フリップフロップ)に等しい遅延時間で供給するためのクロックツリー合成処理を行なうことにより得られたもので、図示のように、クロック信号ＣＬＫを、レジスタとなる各々のフリップフロップ１０４ａ、１０４ｂ、１０４ｃ、１０４ｄに供給するためのバッファ１０１からなるバッファツリーと、クロック信号ＣＬＫの供給を制御するためのイネーブル論理１０５を備え、これにラッチ回路１０２とＡＮＤゲート１０３からなるクロックゲーティング回路１０６が挿入されているものである。
【０００５】
従って、この回路は、ＡＮＤゲート１０３から出力されるクロック信号を複数のフリップフロップ１０４ａ〜１０４ｄに供給する経路に、更に複数のバッファ１０１からなるクロックツリーが挿入された形になっているものということができる。
【０００６】
ここで、図５は、図４の回路からフリップフロップ１０４ａに至る一部の回路を取り出して示したもので、この図には、イネーブル論理１０５の入力にあるフリップフロップ１１０が示されている。そして、このフリップフロップ１１０に対するクロック信号ＣＬＫ_ａは、バッファだけからなるクロックツリーを介して供給されるが、フリップフロップ１０４ａのクロック信号ＣＬＫ_ｃは、バッファだけのクロックツリーではなく、バッファによるクロックツリーに更にラッチ回路１０２とＡＮＤゲート１０３が挿入された形のクロックツリーを介して供給されるようになっている。
【０００７】
従って、この回路においては、イネーブル論理回路１０５の出力ＥＮが“０”(Lowレベル)になっている期間中は、フリップフロップ１０４ａに対するクロック信号の供給がＡＮＤゲート１０３で遮断されることになり、この結果、クロックゲーティング手法による機能が得られることになる。
【０００８】
このとき、図５の回路では、フリップフロップ１０４ａのクロック入力端子ＣＫと、フリップフロップ１１０のクロック入力端子ＣＫ、それにラッチ回路１０２のクロック入力端子ＧＮの夫々にクロック信号ＣＬＫが到達するまでの時間、つまり遅延時間が何れも等しくなるように構成してある。
【０００９】
次に、この図５に示したクロック供給回路の動作について、図６のタイミングチャートにより説明すると、ここで、まず、図中の信号ＣＬＫ_ａは、フリップフロップ１１０のクロック入力端子ＣＫとラッチ回路１０２のクロック入力端子ＧＮにおけるクロック信号であり、信号ＣＬＫ_ｂはＡＮＤゲート１０３の入力端子Ｂにおけるクロック信号である。
【００１０】
また、信号ＥＮはＡＮＤゲート１０３の入力端子Ａにおけるイネーブル信号で、信号ＣＬＫ_ｃはフリップフロップ１０４ａのクロック入力端子ＣＫにおけるクロック信号であり、信号Ｄはフリップフロップ１０４ａのデータ入力端子Ｄにおける入力データ信号で、信号Ｑはフリップフロップ１０４のデータ出力端子Ｑにおける出力データ信号である。
【００１１】
ここで、図５のクロック供給回路は、上記したように、クロック信号ＣＬＫが、フリップフロップ１０４ａとフリップフロップ１１０、及びラッチ回路１０２に到達するまでの遅延時間が等しくなるように、クロックツリーが構成されているが、このときＡＮＤゲート１０３が、クロックバッファ１０１により構成されるバッファツリーの内部に挿入された構成になっている。
【００１２】
そこで、このことを考慮すると、クロック信号ＣＬＫがＡＮＤゲート１０３の入力端子Ｂに到達するまでの遅延時間は、フリップフロップ１０４ａとフリップフロップ１１０、及びラッチ回路１０２にクロック信号が到達するまでの遅延時間よりも短くなることになり、このときの遅延時間の差が、図６のタイミングチャートにおいては、信号ＣＬＫ_ａと信号ＣＬＫ_ｂの遅延時間の差δｔとして表されている。
【００１３】
ここで信号ＥＮは、フリップフロップ１１０から時刻ｔ１に出力されたデータ信号を入力データの一つとして、イネーブル論理１０５より出力され、時刻ｔ２にＡＮＤゲート１０３の入力端子Ａに到達する。そして、この信号ＥＮとクロック信号ＣＬＫ_ｂの論理積がＡＮＤゲート１０３から出力されるので、信号ＥＮが“０”(Lowレベル)の期間は、クロック信号ＣＬＫがＡＮＤゲート１０３で遮断された形になって、それがクロック信号ＣＬＫ_ｃとしてフリップフロップ１０４ａに供給される。
【００１４】
そこで、図５のクロック供給回路が、図６のタイミングチャートに示した通りの所望の動作をするためには、このクロック供給回路によって供給されるクロック信号ＣＬＫの周期をＴとしたとき、クロック信号ＣＬＫ_ａの立ち上がり時刻にフリップフロップ１１０から出力されたデータがイネーブル論理１０５とラッチ回路１０２を介してＡＮＤゲート１０３の入力端子Ａに到達するまでの遅延時間(ｔ２−ｔ１)が、クロック信号ＣＬＫ_ｂが立ち上がるまでの時間(Ｔ−δｔ)よりも短くなること、すなわち、次の(1)式に示す条件が満たされていなければならない。
【００１５】
(ｔ２−ｔ１)＜(Ｔ−δｔ)……    ……(1)
【００１６】
次に、図８は、同じく従来のクロックゲーティングの手法を用いて設計した場合のクロック供給回路の他の一例で、図９は、その一部を抜き出して示したものであり、これもクロック信号ＣＬＫを各レジスタ(フリップフロップ)に等しい遅延時間で供給するためのバッファ２０１からなるクロックツリーと、ＯＲゲートにより構成されるクロックゲーティング回路２０２、フリップフロップ２０３ａ、２０３ｂ、２０３ｃ、２０３ｄ、それにクロック信号ＣＬＫの供給を制御するためのイネーブル論理２０４を備えている。
【００１７】
そして、これも、半導体集積回路の設計における論理合成処理、レイアウト設計における配置処理、それにクロック信号を各レジスタ(フリップフロップ)に等しい遅延時間で供給するためのクロックツリー合成処理を行なうことにより得られたものであるが、この回路では、クロックゲーティング回路２０２から出力されるクロック信号の供給を受けるフリップフロップが複数(フリップフロップ２０３ａ、２０３ｂ、２０３ｃ、２０３ｄ)あり、さらに該クロック信号を供給するためのクロックバッファ２０１がクロックゲーティング回路２０２の出力以降にも複数段にわたって挿入されているものである。
【００１８】
このとき、フリップフロップ２１０のクロック信号は、バッファ２０１だけで形成されているバッファツリーを介して供給されるが、フリップフロップ２０３ａのクロック信号は、バッファ２０１により形成されているバッファツリーに、更にＯＲゲート(クロックゲーティング回路２０２)が挿入された形のクロックツリーを介して供給されるようになっており、このためイネーブル論理回路２０４の出力が“１"(Highレベル)にある期間中は、フリップフロップ２０３ａに供給されるべきクロック信号が遮断され、これによりクロックゲーティング手法による機能が得られることになる。
【００１９】
次に、図９に示すクロック供給回路の動作について、図１０のタイミングチャートにより説明する。まず、ここで、信号ＣＬＫ_ａはフリップフロップ２１０のクロック入力端子ＣＫにおけるクロック信号で、信号ＣＬＫ_ｂはクロックゲーティング回路２０２の入力端子Ｂにおけるクロック信号で、信号ＥＮはクロックゲーティング回路２０２の入力端子Ａにおけるイネーブル信号であり、信号ＣＬＫ_ｃはフリップフロップ２０３ａのクロック入力端子ＣＫにおけるクロック信号である。
【００２０】
そして、信号Ｄはフリップフロップ２０３ａのデータ入力端子Ｄにおける入力データ信号で、信号Ｑはフリップフロップ２０３ａのデータ出力端子Ｑにおける出力データ信号であり、この図９のクロック供給回路も、クロック信号が、フリップフロップ２０３ａとフリップフロップ２１０に到達するまでの遅延時間が等しくなるようにクロックツリーが構成されている。
【００２１】
そこで、ＯＲゲートからなるクロックゲーティング回路２０２が、バッファ２０１により構成されるバッファツリーの内部に挿入されている構成となっていることを考慮すると、クロック信号がＯＲゲートの入力端子Ｂに到達するまでの遅延時間は、フリップフロップ２０３ａとフリップフロップ２１０にクロック信号が到達するまでの遅延時間よりも短くなることになり、この遅延時間の差が、図１０のタイミングチャートにおいては、信号ＣＬＫ_ａと信号ＣＬＫ_ｂの遅延時間の差、つまり遅延差δｔとして表されている。
【００２２】
このとき信号ＥＮは、時刻ｔ１にフリップフロップ２１０から出力されたデータ信号を入力データの一つとしてイネーブル論理２０４から出力され、時刻ｔ２にクロックゲーティング回路２０２のＯＲゲートの入力端子Ａに到達する。そこで、この信号ＥＮとクロック信号ＣＬＫ_ｂの論理和がＯＲゲートから出力され、信号ＥＮが“１”(Highレベル)の期間は、クロック信号が遮断された形となって、図１０の信号ＣＬＫ_ｃの通りフリップフロップ２０３ａに供給される。
【００２３】
これより、図１０のタイミングチャートに示した通り、図９のクロック供給回路が所望の動作をするためには、このクロック供給回路によって供給されるクロック信号の周期をＴとしたとき、クロック信号ＣＬＫ_ａの立ち上がり時刻にフリップフロップ２１０から出力されたデータがイネーブル論理２０４を介して、ＯＲゲートの入力端子Ａに到達するまでの遅延時間(ｔ２−ｔ１)が、クロック信号ＣＬＫ＿ｂが立ち下がるまでの時間(Ｔ／２−δｔ)よりも短くなること、すなわち、次の(2)式に示す条件が満たされていなければならない。
【００２４】
(ｔ２−ｔ１)＜(Ｔ／２−δｔ)……      ……(2)
【００２５】
ところで、上記したように、半導体集積回路の大規模化と高速応答化が進んだ場合、イネーブル論理も複雑化する。そうするとイネーブル信号の遅延時間が増大し、クロックの高速化によりクロック周期Ｔが短くなるので、上記(1)式と(2)式において左辺(ｔ２−ｔ１)の値が大きくなる。また、この周期Ｔの減少に伴って(1)式の右辺(Ｔ−δｔ)及び(2)式の右辺(Ｔ／２−δｔ)の値は小さくなり、従って、従来技術では(1)式、(2)式を満足させるのが困難になってしまう。
【００２６】
このとき、現在の技術環境のもとでは、イネーブル論理の遅延時間は既に最適化され、しかも回路の動作速度を落とすことは困難な状態にあり、従って、上記した二つの値はほぼ固定された値であると考えるしかない状況下では、クロックゲーティング手法が適用された回路を正常に動作させるためには、上記(1)式と(2)式における遅延差δｔの値を抑えるしか手段がないことになる。
【００２７】
ここで、図７は、図５に示したクロック供給回路において、(1)式による条件が満たさなかった場合の動作を示したタイミングチャートで、ここには、信号ＣＬＫ_ａと信号ＣＬＫ_ｂの遅延差が図６に示した正常動作時よりも大きくなっていることにより、クロック供給回路が(1)式を満たさなくなっているときの動作が示されている。
【００２８】
そして、この場合、図示のように、フリップフロップ１０４ａに供給されるクロック信号ＣＬＫ_ｃの波形に、Ａで示すような不要なパルスが発生してしまったり、Ｂに示すように信号の立ち上がりが遅れたりと、図６に示した正常動作時のものとは異なったものになってしまい、この結果、フリップフロップ１０４ａがＡ点におけるクロック信号ＣＬＫ_ｃの立ち上がり時点、及びＢ点におけるクロック信号ＣＬＫ_ｃの立ち上がり時点で誤ったデータ出力信号Ｑを出力し、回路が誤動作を起こしてしまうことが判る。
【００２９】
また、図１１は、図９に示したクロック供給回路において、(2)式による条件を満たさなかった場合の動作を示したタイミングチャートで、ここには、信号ＣＬＫ_ａと信号ＣＬＫ_ｂの遅延差が図１０に示した正常動作時よりも大きくなっていることにより、クロック供給回路が(2)式を満たさなくなっているときの動作が示されている。
【００３０】
そして、この場合、フリップフロップ２０３ａに供給されるクロック信号ＣＬＫ_ｃの波形に、Ｃに示すような不要な信号の立ち上がりが発生し、図１０に示した正常動作時のものとは異なったものになってしまい、この結果、フリップフロップ２０３ａがＣ点におけるクロック信号ＣＬＫ_ｃの立ち上がり時点で、誤ったデータ出力信号Ｑを出力し、回路が誤動作を起こしてしまうことが判る。
【００３１】
そこで、これらの問題を解決するため、論理設計、論理合成、レイアウト設計の配置処理までは、フリップフロップにクロック信号が到達するまでの遅延時間と、クロックゲーティング回路におけるＡＮＤゲート(又はＯＲゲート)にクロック信号が到達するまでの遅延時間の差δｔを、予め設定された所定値にすることで回路に制約を与えて設計を行い、前記レイアウト処理の配置処理後にクロック信号の配線を行い、この配線によるクロック信号の遅延に基づいて実際の半導体デバイスでの動作時の値により近い遅延差δｔを求め、この値をクロックゲーティング回路の制約とした上で論理合成の段階に戻り、回路のタイミング最適化を実行し直す設計手法と設計支援プログラムが、従来技術として開示されている(例えば、特許文献１参照。)。
【特許文献１】特開２００２−１９０５２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００３２】
しかしながら、上記従来技術には以下の問題がある。すなわち、特許文献１に開示の技術は、始めに論理合成とレイアウト処理における配置処理、更にクロック信号の配線処理を行って回路に与える制約を作成し直した後、再び論理合成とレイアウト処理における配置処理、クロック信号の配線処理を行うといった作業を、回路に設定したタイミング制約が満足されるまで繰り返す必要があるため、設計にかかる手間と時間が増大するという問題がある。
【００３３】
このことは、特に半導体集積回路の大規模化した場合、論理合成、レイアウト処理における配置、配線にかかる時間が著しく長くなる傾向にあり、従って、この場合は、更に多くの時間が必要になってしまうという問題が生じてしまう。
【００３４】
また、上記特許文献１に開示の技術は、上記の(1)式、(2)式により表わされている配線後の正確な遅延差δｔを計算するものであって、この遅延差δｔの値そのものを減少させることには何も寄与できない。
【００３５】
このため、従来技術では、遅延差δｔを減少させたことによりクロックゲーティング手法が適用できたであろう回路に、それか適用できない場合が起こり得るという問題があった。
【００３６】
本発明の目的は、誤動作の虞の無いクロックゲーティング手法が適用されたクロック供給回路を含む半導体集積回路を提供することにある。
【００３７】
また、本発明のたの目的は、誤動作の虞の無いクロックゲーティング手法が適用されたクロック供給回路を含む半導体集積回路を対象とした半導体集積回路設計方法を提供することにある。
【課題を解決するための手段】
【００３８】
上記目的は、クロック信号の配分に複数のバッファからなるクロックツリーを用い、クロックゲーティング方式により動作する論理回路が形成された半導体集積回路において、前記クロック信号の分配先となる回路と同じ個数で、前記クロックツリーの最終段に接続されている複数の論理ゲートを設け、これら複数の論理ゲートにより前記クロックゲーティング方式による動作が与えられるようにして達成される。
【００３９】
このとき、前記論理ゲートが、前記クロック信号の分配先である回路と半導体集積回路上で物理的に隣接して配置されていることによっても上記目的が達成される。
【００４０】
また、このとき、前記論理ゲートがラッチ回路とアンド回路で構成され、前記クロック信号の分配先となる回路がフリップフロップ回路で構成されていることによっても上記目的か達成される。
【００４１】
更に、このとき、前記論理ゲートがオア回路で構成され、前記クロック信号の分配先となる回路がフリップフロップ回路で構成されていることによっても上記目的か達成される。
【００４２】
同じく上記目的は、請求項１に記載の半導体集積回路に適用される半導体集積回路設計方法であって、前記論理ゲートに対して与えられたタイミング制約の下でタイミング解析を行うステップと、前記タイミング解析の結果により前記タイミング制約を満足するか否かの判定を行うステップと、前記判定結果により前記タイミング制約を満足してないと判定されたとき、前記論理ゲートを前記クロック信号の分配先となる回路と同じ個数作成するステップと、前記論理ゲートの出力と前記クロック信号の分配先となる回路の入力を１対１の関係に接続させる処理に移行させるステップとを備えていることにより達成される。
【発明の効果】
【００４３】
本発明によれば、クロックゲーティング回路に与えられたタイミング制約を満たすことが容易になり、且つ、従来はクロックゲーティングを適用できなかった回路にもクロックゲーティング回路が適用可能になるので、ＬＳＩの更なる大規模化と高速応答化に応えることができる。
【００４４】
また、本発明によれば、論理合成をやり直す等と言った、設計に時間のかかる作業を繰り返し行う必要がなくせるたため、より短時間で消費電力の少ない半導体集積回路を実現することができる。
【００４５】
同じく本発明によれば、クロックゲーティング回路の複製作業や配置作業が自動的に行なえるので、ユーザが手作業で行う必要かなくなり、短時間で低消費電力の半導体集積回路を設計することができる。
【発明を実施するための最良の形態】
【００４６】
以下、本発明による半導体集積回路と半導体集積回路設計方法について、図示の実施の形態により詳細に説明する。
【００４７】
まず、図１は、本発明による半導体集積回路の一実施形態を示したもので、これは、既に従来技術として図４と図５に示したクロック供給回路に、本発明による半導体集積回路設計方法を適用して得られたものである。
【００４８】
ここで、従来技術のクロック供給回路は、図４、図５に示したように、クロック信号ＣＬＫを等しい遅延時間で複数のレジスタ(フリップフロップ)に供給するためのクロックツリー用のバッファ１０１と、ラッチ回路１０２及びＡＮＤゲート１０３からなるクロックゲーティング回路１０６、それにクロック信号ＣＬＫの供給を制御するためのイネーブル論理１０５を備えたものであり、ここでクロックが供給されるレジスタはフリップフロップ１０４ａ、１０４ｂ、１０４ｃ、１０４ｄである。
【００４９】
そして、この図４、図５の回路構成によって実現される物理的なレイアウトについて考えてみると、これも既に説明したように、クロック信号ＣＬＫがＡＮＤゲート１０３に到達するまでの遅延時間と、このクロック信号ＣＬＫが各フリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄに到達するまでの遅延時間の遅延時間差は、ＡＮＤゲート１０３以降に挿入されているクロックバッファ１０１によるゲート遅延と、ＡＮＤゲート１０３から各フリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄまでの配線による遅延の和になる。
【００５０】
そこで、このときに計算された遅延時間差をδｔとして上記した(1)式を評価し、(1)式の制約を満たさなかった場合、この実施形態による半導体設計回路設計方法を用いて得られた回路が図１の実施形態で、これは、図４の従来技術におけるクロックゲーティング回路１０６を、クロックの供給を受けるフリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄと同じ個数のクロックゲーティング回路１０６ａ、１０６ｂ、１０６ｃ、……、１０６ｄに複製した上でレイアウト処理し、クロックゲーティング回路１０６ａ〜１０６ｄの夫々が対応するフリップフロップ１０４ａ〜１０４ｄと物理的に隣接して配置させ、更にそれらがクロックツリーの最終段になるように、クロックツリーの合成をやり直したものである。
【００５１】
このとき、各クロックゲーティング回路１０６ａ、１０６ｂ、１０６ｃ、……、１０６ｄは、各々がラッチ回路１０２ａ、１０２ｂ、１０２ｃ、……、１０２ｄ及びＡＮＤゲート１０３ａ、１０３ｂ、１０３ｃ、……、１ｏ３ｄで構成されている。
【００５２】
従って、この図１の回路では、クロックの供給を受けるフリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄには、クロックゲーティング回路１０６a、１０６ｂ、１０６ｃ、……、１０６ｄの夫々の出力が直接供給されることになり、この結果、図４の従来技術では、これらフリップフロップ１０４ａ〜１０４ｄの入力にあったバッファ１０１によるクロックツリーが、この図１の回路では省略されていることになる。
【００５３】
そこで、今度は、この図１の実施形態の回路構成によって実現される物理的レイアウトについて考えてみると、この場合、クロック信号ＣＬＫが各ＡＮＤゲート１０３ａ、１０３ｂ、１０３ｃ、……、１０３ｄに到達するまでの遅延時間と、同じくクロック信号ＣＬＫが各フリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄに到達するまでの遅延時間の差は、各ＡＮＤゲート１０３ａ、１０３ｂ、１０３ｃ、……、１０３ｄと、各フリップフロップ１０４ａ、１０４ｂ、１０４ｃ、……、１０４ｄの間の配線による遅延になる。
【００５４】
そうすると、この図１の実施形態の回路の遅延時間差δｔは、図４と図５の従来技術の場合の遅延時間差δｔに比較して大幅に小さな値になる。何故なら、このとき各ＡＮＤゲート１０３ａ〜１０３ｄと各フリップフロップ１０４ａ〜１０４ｄの間はバッファによるクロックツリーが介在せず、配線だけで接続され、しかも、このときの配線は、上記したレイアウト処理により、ＡＮＤゲート１０３ａ〜とフリップフロップ１０４ａ〜が隣接配置されたことにより短縮されているからである。
【００５５】
従って、この図１の実施形態によれば、上記(1)式による制約を容易に満たして所望の動作を行うクロックゲーティング回路が実現でき、低消費電力化されたクロック供給回路を得ることができる。
【００５６】
次に、図２は、本発明による半導体回路の他の一実施形態で、これは、既に図８と図９に示した従来技術によるクロック供給回路に、本発明による半導体集積回路設計方法を適用して得られたものである。
【００５７】
ここで、この従来技術のクロック供給回路は、図８、図９に示したように、クロック信号ＣＬＫを等しい遅延時間で複数のレジスタ(フリップフロップ)に供給するためのクロックツリー用のバッファ２０１と、ＯＲゲートにより構成されるクロックゲーティング回路２０２、それにクロック信号ＣＬＫの供給を制御するためのイネーブル論理２０５を備えたものであり、このときクロックが供給されるレジスタはフリップフロップ２０３ａ、２０３ｂ、２０３ｃ、……、２０３ｄになっている。
【００５８】
そして、この図８、図９の回路構成によって実現される物理的レイアウトについて考えてみると、これも既に説明したように、クロック信号ＣＬＫがクロックゲーティング回路２０２に到達するまでの遅延時間と、クロック信号ＣＬＫが各フリップフロップ２０３ａ〜２０３ｄに到達するまでの遅延時間の遅延差は、クロックゲーティング回路２０２以降に挿入されているバッファ２０１によるゲート遅延と、クロックゲーティング回路２０２から各フリップフロップ２０３ａ〜２０３ｄまでの配線遅延の和になる。
【００５９】
そこで、このときに計算された遅延時間差をδｔとして上記した(2)式を評価し、(2)式の制約を満たさなかった場合、この実施形態による半導体設計回路設計方法を用いて得られた回路が図２の実施形態で、これは、図８、図９の従来技術におけるクロックゲーティング回路２０２を、クロックの供給を受ける２０３ａ、２０３ｂ、２０３ｃ、……、２０３ｄと同じ個数のクロックゲーティング回路２０２ａ、２０２ｂ、２０２ｃ、……、２０２ｄに複製した上でレイアウト処理し、これらクロックゲーティング回路２０２ａ〜２０２ｄの夫々が対応するフリップフロップ２０３ａ〜２０３ｄと物理的に隣接して配置させ、更にそれらがクロックツリーの最終段になるように、クロックツリーの合成をやり直したものである。
【００６０】
従って、この図２の回路では、クロックの供給を受けるフリップフロップ２０３ａ、２０３ｂ、２０３ｃ、……、２０３ｄには、クロックゲーティング回路２０２a、２０２ｂ、２０２ｃ、……、２０２ｄの夫々の出力が直接供給されることになり、この結果、図８と図９の従来技術では、これらフリップフロップ２０３ａ〜２０２ｄの入力にあったバッファ２０１によるクロックツリーが、この図２の回路では省略されていることになる。
【００６１】
そこで、今度は、この図２の実施形態の回路構成によって実現される物理的レイアウトについて考えてみると、この場合、クロック信号ＣＬＫが各クロックゲーティング回路２０２ａ〜２０２ｄのＯＲゲートに到達するまでの遅延時間と、同じくクロック信号ＣＬＫが各フリップフロップ２０３ａ〜２０２ｄに到達するまでの遅延時間の差は、各ＯＲゲートから各フリップフロップ２０３ａ〜２０２ｄの入力の間の配線による遅延になる。
【００６２】
そうすると、この図２の実施形態による回路の遅延時間差δｔは、図８と図９の従来技術の場合の遅延時間差δｔに比較して大幅に小さな値になる。何故なら、このとき各ＯＲゲートと各フリップフロップ２０３ａ〜２０３ｄの間はバッファによるクロックツリーが介在せず、配線だけで接続され、しかも、このときの配線は、上記したレイアウト処理により、各ＯＲゲートと各フリップフロップ２０３ａ〜が隣接配置されたことにより短縮されているからである。
【００６３】
従って、この図２の実施形態によれば、上記(2)式による制約を容易に満たして所望の動作を行うクロックゲーティング回路が実現でき、低消費電力化されたクロック供給回路を得ることができる。
【００６４】
次に、本発明による半導体集積回路設計方法について、図３のフローチャートを用いて説明する。ここで、この図３は、本発明による半導体集積回路設計方法の一実施形態による処理の流れを示したものであるが、このときクロック信号の供給を制御するためのイネーブル論理を生成する際のイネーブル論理による遅延については既に最適化され、回路の動作周波数は既に確定していて変更することは出来ないものと仮定する。
【００６５】
図３の処理が開始されたら、まず半導体集積回路の物理的レイアウト処理におけるセルの配置処理を、回路のタイミング制約或いは配線混雑度、又はタイミング制約と配線混雑度の両方を制約として実行する(ステップ３０１)。次にクロックツリー合成を実行し、各レジスタ(フリップフロップ)に等しい遅延時間でクロック信号が供給できるようにしたクロックゲーティング回路を備えた半導体集積回路の構築を行い(ステップ３０２)、構築された半導体集積回路のクロックツリー配置情報に基づいてクロックゲーティング回路のタイミング解析を行い(ステップ３０３)、与えられたタイミング制約を満足しているか否かの判定を行う(ステップ３０４)。
【００６６】
そして、ステップ３０４での判定がＹＥＳ(肯定)、つまりタイミング制約を満足していると判定されたクロックゲーティング回路に関しては、ここで配線処理以降の処理に移行し(ステップ３０９)、半導体集積回路に完成させるための物理的レイアウトを継続する。
【００６７】
一方、ステップ３０４での判定がＮＯ(否定)、つまりタイミング制約が満足されていないと判定された場合は、クロックゲーティング回路を、このクロックゲーティング回路からクロック信号が供給されるレジスタ(フリップフロップ)の数と等しくなるように複製し(ステップ３０６)、各々のクロックゲーティング回路をクロックツリーの最終段に挿入して、そのクロックゲーティング回路がクロックを供給するレジスタ(フリップフロップ)と１対１の関係になるように隣接させて配置する処理を行う(ステップ３０７)。
【００６８】
ここで、これらステップ３０６とステップ３０７の処理に進む際、まず、これらステップ３０６とステップ３０７の処理が既に適用されているか否かを判定する(ステップ３０５)。そして、このステップ３０５での判定がＹＥＳになったときは、このままではクロックゲーティング回路に与えられた制約を満たすことは不可能であるとして、そのクロックゲーティング論理の削除を行う(ステップ３０８)。
【００６９】
これらステップ３０６とステップ３０７を実行した後、又はステップ３０８の処理を実行した後、このままでは各レジスタ(フリップフロップ)に供給されるクロック信号に大きな遅延差が生じることが起こり得るため、再びステップ３０２の処理に進み、クロックツリーの再合成を行った後、以降の処理を実行する。
【００７０】
従って、この実施形態によれば、以上の処理の流れにより、クロックゲーティング回路に与えられた制約が満たされ、消費電力が更に少なくされた半導体集積回路を実現することができる。
【００７１】
また、この実施形態によれば、従来技術のように、論理合成などの設計の初期の段階まで処理を戻す必要がないので、設計時間の短縮が可能になる。
【図面の簡単な説明】
【００７２】
【図１】本発明による半導体集積回路の一実施形態を示す回路ブロック図である。
【図２】本発明による半導体集積回路の他の一実施形態を示す回路ブロック図である。
【図３】本発明における半導体集積回路設計方法の一実施形態による処理の流れを示すフローチャートである。
【図４】従来技術による半導体集積回路の一例を示す回路ブロック図である。
【図５】従来技術による半導体集積回路の一例における一部の構成を抜き出して示した回路ブロック図である。
【図６】従来技術による半導体集積回路の一例による正常な動作を説明するためのタイミングチャートである。
【図７】従来技術による半導体集積回路の一例による異常な動作を説明するためのタイミングチャートである。
【図８】従来技術による半導体集積回路の他の一例を示す回路ブロック図である。
【図９】従来技術による半導体集積回路の他の一例における一部の構成を抜き出して示した回路ブロック図である。
【図１０】従来技術による半導体集積回路の他の一例による正常な動作を説明するためのタイミングチャートである。
【図１１】従来技術による半導体集積回路の他の一例による異常な動作を説明するためのタイミングチャートである。
【符号の説明】
【００７３】
１０１、２０１：バッファ(クロックバッファ)
１０２ａ〜１０２ｄ：ラッチ回路
１０３ａ〜１０３ｄ：ＡＮＤゲート回路
２０２ａ〜２０２ｄ：クロックゲーティング回路(ＯＲゲート回路)
１０４ａ〜１０４ｄ、２０３ａ〜２０３ｄ：フリップフロップ(レジスタ)
１０５、２０５：イネーブル論理
１０６ａ〜１０６ｄ：クロックゲーティング回路
【図１】
2007081853.tif 000003
【図２】
2007081853.tif 000004
【図３】
2007081853.tif 000005
【図４】
2007081853.tif 000006
【図５】
2007081853.tif 000007
【図６】
2007081853.tif 000008
【図７】
2007081853.tif 000009
【図８】
2007081853.tif 000010
【図９】
2007081853.tif 000011
【図１０】
2007081853.tif 000012
【図１１】
2007081853.tif 000013