(57)【特許請求の範囲】
【請求項１】
トップ階層のブロックが備えるクロック生成回路から、複数の下位階層のブロックのそれぞれが備える基準クロックのクロックツリーおよび前記基準クロックが分周された分周クロックのクロックツリーを介して、前記基準クロックに同期して動作する第１末端ＦＦおよび前記分周クロックに同期して動作する第２末端ＦＦに供給される前記基準クロックおよび前記分周クロックの位相を同期させるクロック同期方法であって、
それぞれの前記下位階層のブロックの分周クロックのクロックツリーの開始点に、それぞれの前記下位階層のブロックが備える基準クロックのクロックツリーから入力される基準クロックに同期して前記分周クロックをデータ信号として保持し、前記保持された分周クロックのデータ信号をデータ入力とする、それぞれの前記下位階層のブロックが備える基準クロックのクロックツリーの開始点に接続する第１同期ＦＦを配置するステップと、
前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの第１同期ＦＦまでの基準クロックの遅延時間を求め、前記基準クロックの遅延時間の最大値を取得するステップと、
前記基準クロックの半周期未満の時間となるように、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦ間の基準クロックの遅延時間の最大値を決定するステップと、
前記基準クロックの遅延時間の最大値を、前記第２同期ＦＦ間の基準クロックの遅延時間の最大値で割ることにより得られる除算結果の値以上で、かつ、前記分周クロックの分周数の倍数で、それぞれの前記下位階層のブロックの分周クロックの配線経路を分割するように、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置され、前記基準クロックに同期して前記分周クロックをデータ信号として順次保持する第２同期ＦＦの段数を決定するステップと、
前記第２同期ＦＦ間の基準クロックの遅延時間の最大値以下の遅延時間となるように、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックのそれぞれの第２同期ＦＦおよび第１同期ＦＦまでの遅延時間の目標値を決定するステップと、
前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの、前記決定された段数の第２同期ＦＦのそれぞれおよび第１同期ＦＦまでの遅延時間が、前記遅延時間の目標値となる分周クロックの配線経路上の位置に、前記決定された段数の第２同期ＦＦのそれぞれを配置するステップと、
前記分周クロックの配線経路上のそれぞれの第２同期ＦＦの後ろに、前段の前記第２同期ＦＦのクロック入力端子に接続される基準クロックのローレベル期間に、前記前段の第２同期ＦＦの出力信号を通過させるラッチを配置するステップと、
それぞれの前記下位階層のブロックの初段の第２同期ＦＦのクロック入力端子に接続される基準クロックが、それぞれの前記第２同期ＦＦまでの遅延時間の目標値だけ遅延された遅延基準クロックを、それぞれの前記第２同期ＦＦのクロック入力端子に接続し、最終段の前記第２同期ＦＦに接続される遅延基準クロックを、前記基準クロックのクロックツリーの開始点に接続するステップとを含むことを特徴とするクロック同期方法。
【請求項２】
前記第１同期ＦＦを、それぞれの前記下位階層のブロックの内部に配置する請求項１に記載のクロック同期方法。
【請求項３】
それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦのうちの少なくとも１を、それぞれの前記下位階層のブロックの内部に配置する請求項２に記載のクロック同期方法。
【請求項４】
前記第１同期ＦＦ、および、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦを、前記トップ階層のブロックに配置する請求項１に記載のクロック同期方法。
【請求項５】
前記基準クロックの物理的な配線距離、前記基準クロックの物理的な配線の単位長さ当たりの遅延時間、および、それぞれのセルの遅延時間に基づいて、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの第１同期ＦＦまでの基準クロックの遅延時間を算出する請求項１〜４のいずれか１項に記載のクロック同期方法。
【請求項６】
ワーストケースのシミュレーションにより、前記基準クロックの半周期未満の時間となるように、前記第２同期ＦＦ間の基準クロックの遅延時間の最大値を決定する請求項１〜５のいずれか１項に記載のクロック同期方法。
【請求項７】
それぞれの前記下位階層のブロックの第２同期ＦＦの段数は、前記分周クロックが前記基準クロックをｎ分周（ｎは２以上の整数）の場合、等しいか、または、ｎの倍数の段数だけ異なる請求項１〜６のいずれか１項に記載のクロック同期方法。
【請求項８】
前記除算結果の値以上となる前記分周クロックの分周数の倍数の最小値以上の値で、それぞれの前記下位階層のブロックの分周クロックの配線経路を分割するように、それぞれの前記下位階層のブロックの第２同期ＦＦの段数を決定する請求項１〜７のいずれか１項に記載のクロック同期方法。
【請求項９】
前記第２同期ＦＦ間の基準クロックの遅延時間の最大値以下の遅延時間となるように、それぞれの前記下位階層のブロックの基準クロックの遅延時間を、前記決定された段数の第２同期ＦＦで分割することにより、前記遅延時間の目標値を決定する請求項１〜８のいずれか１項に記載のクロック同期方法。
【請求項１０】
前記基準クロックの物理的な配線の単位長さ当たりの遅延時間、および、それぞれのセルの遅延時間に基づいて、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックのそれぞれの第２同期ＦＦおよび第１同期ＦＦまでの遅延時間を算出することにより、前記算出されたそれぞれの遅延時間が、前記遅延時間の目標値となる前記分周クロックの配線経路上の位置を取得する請求項１〜９のいずれか１項に記載のクロック同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トップ階層のブロックが備えるクロック生成回路から、複数の下位階層のブロックのそれぞれが備える末端ＦＦ（フリップフロップ）に供給される基準クロックおよび分周クロックの位相を同期させるクロック同期方法に関するものである。
【背景技術】
【０００２】
大規模半導体集積回路のレイアウト設計では、階層レイアウト設計手法が用いられる。階層レイアウト設計手法では、半導体集積回路の大部分の回路が複数の下位階層のブロックに分割され、それぞれの下位階層のブロックのレイアウト設計が行われる。その後、または、並行して、下位階層のブロックを除くトップ階層のブロックのレイアウト設計が行われ、それぞれの下位階層のブロックにクロック信号が接続されるとともに、それぞれの下位階層のブロック間の配線が接続される。
【０００３】
下位階層のブロックおよびトップ階層のブロックのレイアウト設計では、クロック信号を、それぞれの下位階層のブロックが備える膨大な数のＦＦ群に供給するために、クロックツリーシンセシスという手法が用いられる。クロックツリーシンセシスは、トップ階層のブロックのクロック信号の開始点から、各々の経路を経由してそれぞれの下位階層のブロックが備える全てのＦＦまで到達するクロック信号の遅延時間を揃える（位相を同期させる）ための機能である。
【０００４】
階層レイアウト設計手法では、クロック配線がトップ階層のブロックとそれぞれの下位階層のブロックとの間にまたがるため、それぞれの下位階層のブロック内で下流部分のクロックツリー生成が行われる。そして、その結果を引き継いで、トップ階層のブロック内で上流部分のクロックツリー生成が行われ、クロック信号の開始点からそれぞれの下位階層のブロックの全てのＦＦまでのクロック信号の遅延時間が揃うように、トップ階層のブロック内のクロック信号の遅延時間の調整が行われる。
【０００５】
半導体集積回路では、製造時のプロセスばらつきや動作時の電圧／温度ばらつき等により、それぞれの信号の遅延時間に変動が発生する。レイアウト設計の際は、それぞれの信号の遅延時間にばらつきが発生しても回路が正常に動作するようにタイミング設計が行われる。具体的には、このような信号の遅延時間のばらつきはＯＣＶ（On Chip Variation）と呼ばれ、このＯＣＶ分のマージンを含めても半導体集積回路が正常に動作するようにタイミング設計が行われる。
【０００６】
また、大規模集積回路では、トップ階層のブロックが備えるクロック生成回路により、基準クロックから分周クロック群が生成され、それぞれの下位階層のブロックに分配されることが多い。その結果、基準クロックと分周クロックとがクロックツリーの上流側で分岐され、分岐点以降の基準クロックおよび分周クロックの経路が長くなりがちである。分岐点以降の長いクロック経路はそれぞれ個別にばらつくため、考慮すべきタイミングマージンが大きい値となり、タイミング設計が難航する。
【０００７】
図６は、従来の半導体集積回路の構成を表す一例の概念図である。同図に示す半導体集積回路７０は、階層レイアウト設計手法により設計されたものであり、３つの下位階層のブロックＡ、Ｂ、Ｃと、この下位階層のブロックＡ、Ｂ、Ｃを除くトップ階層のブロックとを備えている。また、トップ階層のブロックは、クロック生成回路１２を備え、クロック生成回路１２は、ＰＬＬ回路１４と、分周回路１６とを備えている。
【０００８】
半導体集積回路７０では、クロック生成回路１２において、ＰＬＬ回路１４により基準クロック１５が生成され、ＰＬＬ回路１４から出力される基準クロック１５が、分周回路１６により分周されて分周クロック１７が生成される。基準クロック１５および分周クロック１７は、クロック生成回路１２から、下位階層のブロックＡ、Ｂ、Ｃが備える、基準クロック１５に同期して動作する全ての第１末端ＦＦ１８および分周クロック１７に同期して動作する全ての第２末端ＦＦ２０に供給される。
【０００９】
半導体集積回路７０のレイアウト設計を行う場合、階層レイアウト設計手法では、まず、下位階層のブロックＡ、Ｂ、Ｃについて、基準クロックおよび分周クロックのクロックツリー（図６中、三角の枠で示す）１９、２１が生成される。下位階層のブロックＡ、Ｂ、Ｃは、大きさや第１末端ＦＦ１８および第２末端ＦＦ２０の個数がブロック毎に異なるため、クロックツリーの遅延時間は異なる。図示例の場合、下位階層のブロックＡ、Ｂ、Ｃ内の基準クロックおよび分周クロックのクロックツリー１９、２１の遅延時間は、それぞれ、２ｎｓ、７ｎｓ、５ｎｓである。
【００１０】
続いて、トップ階層のブロックで基準クロック１５および分周クロック１７のクロックツリーが生成される。この場合、下位階層のブロックＡ、Ｂ、Ｃ内の基準クロックおよび分周クロックのクロックツリー１９、２１の遅延時間のスキューをなくすように、トップ階層のブロックの基準クロック１５および分周クロック１７のクロックツリーの遅延時間が調整される。図示例の場合、クロック生成回路１２から下位階層のブロックＡ、Ｂ、Ｃまでの基準クロック１５および分周クロック１７のクロックツリーの遅延時間は、それぞれ、１０ｎｓ、５ｎｓ、７ｎｓである。
【００１１】
これにより、基準クロック１５と分周クロック１７との分岐点１３から、下位階層のブロックＡ、Ｂ、Ｃのそれぞれの第１末端ＦＦ１８および第２末端ＦＦ２０までの遅延時間が１２ｎｓに揃えられ、下位階層のブロックＡ、Ｂ、Ｃの全ての第１末端ＦＦ１８および第２末端ＦＦ２０を同期させて動作させることができる。
【００１２】
しかし、この場合の問題点は、基準クロック１５および分周クロック１７のタイミングマージンが大き過ぎて、設計が困難なことである。下位階層のブロックＡ、Ｂ、Ｃには、クロック生成回路１２において基準クロック１５から分岐された分周クロック１７が供給されるため、基準クロック１５と分周クロック１７との分岐点１３以降の１２ｎｓ分のクロック経路がＯＣＶばらつきの対象となる。
【００１３】
図７に示すように、基準クロック１５の周期が５ｎｓ、つまり、基準クロック１５が２分周された分周クロック１７の周期が１０ｎｓの場合、例えば、基準クロック１５の１周期を超える大きなタイミングマージン、この例の場合には、基準クロック１５および分周クロック１７の立ち上がりタイミングの前後６ｎｓずつ、合計で１２ｎｓのタイミングマージンが必要となり、レイアウト設計が非常に困難となる。
【００１４】
この問題を解決するには、図８に示すように、基準クロック１５に同期して分周クロック１７をデータ信号として受け取り基準クロックで出力し直す同期ＦＦ４１を、分周クロック１７の経路上の、それぞれの下位階層のブロックＡ、Ｂ、Ｃの近傍の位置に配置することである。
これにより、分岐点が、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの近傍の分岐点３７に移動され、図９に示すように、タイミングマージンをある程度は小さくすることができる。この例の場合には、タイミングマージンを合計で８ｎｓにすることができる。
【００１５】
また、図１０に示すように、同期ＦＦ４１を、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部の第２末端ＦＦ２０の近傍の位置に移動することにより、分岐点を、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部の第２末端ＦＦ２０の近傍の分岐点３９に移動させることができ、図１１に示すように、さらにタイミングマージンを小さくすることができる。この例の場合には、合計で４ｎｓにすることができる。
【００１６】
しかし、この場合の問題点は、クロック経路に配置した同期ＦＦ４１のタイミング設計が難しくなることである。
図１２に示すように、同期ＦＦ４１に供給される基準クロック１５の遅延時間は、基準クロック１５の１周期よりも大きな遅延時間になることが多い。この例の場合、クロック生成回路１２の内部の基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部の同期ＦＦ４１までの基準クロック１５の遅延時間は、それぞれ、１１ｎｓ、７ｎｓ、９ｎｓとなる。
【００１７】
同期ＦＦ４１のクロック経路の基準クロック１５に、このような基準クロック１５の周期を超える遅延がかかるということは、並走するデータ経路の分周クロック１７にも同等程度の遅延がかかることが多い。データ経路の遅延時間が周期を超えると、同期設計のセットアップ制約を満たせない場合がある。このため、データ経路の遅延時間が基準クロック１５の１周期の時間内に収まるように、図１３に示すように、データ経路に複数段の同期ＦＦ４１を追加する必要がある。
【００１８】
しかしながら、複数の同期ＦＦ４１を追加して、データ経路の遅延時間が１周期に収まるようにしても、ホールド制約を満たすことは難しい。
【００１９】
以下、ホールド制約を満たすことの難しさについて説明する。
まずは、図１４に示すように、１つの下位階層のブロックへの同期ＦＦ４１群のタイミング設計を考える。
【００２０】
これら同期ＦＦ４１群だけが対象であれば、図１５に示すように、基準クロックと分周クロックとの分岐点から、全ての同期ＦＦ４１までの基準クロックの経路にバッファ４５を挿入して遅延時間を揃える（クロックスキューをなくす）ことにより、セットアップ／ホールド制約を満たすことができる。
一方、前述の例のように、３つの下位階層のブロックＡ、Ｂ、Ｃが存在し、それぞれの遅延時間が、１１ｎｓ、７ｎｓ、９ｎｓと異なる場合、データのつき抜けが起きないように、遅らせるクロック遅延を３値の中で最大の１１ｎｓに合わせるのが一般的である。
【００２１】
しかし、この場合の問題点は、分周回路を構成するＦＦおよび全ての同期ＦＦ４１群の遅延時間を最も遅いものに揃えることにより、基準クロックの経路上に追加するバッファ４５の個数が膨大となり、レイアウト面積および消費電力が増えることである。また、基準クロックの遅延時間の最大値と最小値との差が基準クロックの１周期を超えると、同期設計で対応できる時間幅を超えるため、タイミング設計が成り立たなくなる。
【００２２】
このため、基準クロックの遅延時間を最も遅いものに揃える方法では対応できない場合が生じ、問題である。このため、図１６に示すように、一部あるいは全体に、基準クロックの遅延時間をずらしながら、セットアップ／ホールド制約を満たす必要性が生じる。
【００２３】
次に、基準クロックの遅延時間をずらしながら、セットアップ／ホールド制約を満たすことの難しさを説明する。
【００２４】
半導体集積回路は、動作保証範囲にある様々な温度、電圧、プロセス条件で動作する必要があるため、様々な動作環境による信号の遅延変動を考慮する必要がある。データのつき抜けを起こさないために、図１７（Ａ）および（Ｂ）に示すように、前段のＦＦＡから出力されるデータＱをバッファ４７により遅延させて、後段のＦＦＢのクロックＣＬＫの立ち上がりより後にＦＦＢのデータＤが変化しなければならない。このため、この構成の場合は、クロック系のバッファ４９による遅延時間よりも、データ系のバッファ４７による遅延時間を大きくする必要がある。
【００２５】
それぞれのセルの遅延時間は動作環境によって変動するが、バッファ４７、４９の遅延時間が大きいため、データ経路の遅延変動幅が大きい。クロック経路も遅延変動するため、両方の経路の遅延変動を考えた上で、セットアップ／ホールド制約を満たすようにタイミング設計するのは困難である。実際の半導体集積回路のレイアウト設計では、通常、タイミング設計を再調整する必要が何度も発生している。
【００２６】
ここで、本発明に関連性のある先行技術文献として、半導体集積回路さらには半導体チップ上における同期用のクロック信号の分配方式に関する特許文献１、クロック分配を制御する半導体集積回路等に関する特許文献２、多相クロックが内部回路に分配される集積回路におけるクロック分配方式に関する特許文献３、基準クロックを分周して遅延することで複数の遅延クロックを生成するクロック生成回路に関する特許文献４などがある。
【先行技術文献】
【特許文献】
【００２７】
【特許文献１】特開２００２−７６１２７号公報
【特許文献２】特開２００２−１５８２８６号公報
【特許文献３】特開２００１−３２００２２号公報
【特許文献４】特開平９−５１２５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００２８】
本発明の目的は、上記従来技術の問題点を解消し、基準クロックと分周クロックとを同期させるために必要となるタイミングマージンを大幅に削減し、タイミング設計を容易化することができるクロック同期方法を提供することにある。
【課題を解決するための手段】
【００２９】
上記目的を達成するために、本発明は、トップ階層のブロックが備えるクロック生成回路から、複数の下位階層のブロックのそれぞれが備える基準クロックのクロックツリーおよび前記基準クロックが分周された分周クロックのクロックツリーを介して、前記基準クロックに同期して動作する第１末端ＦＦおよび前記分周クロックに同期して動作する第２末端ＦＦに供給される前記基準クロックおよび前記分周クロックの位相を同期させるクロック同期方法であって、
それぞれの前記下位階層のブロックの分周クロックのクロックツリーの開始点に、それぞれの前記下位階層のブロックが備える基準クロックのクロックツリーから入力される基準クロックに同期して前記分周クロックをデータ信号として保持し、前記保持された分周クロックのデータ信号をデータ入力とする、それぞれの前記下位階層のブロックが備える基準クロックのクロックツリーの開始点に接続する第１同期ＦＦを配置するステップと、
前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの第１同期ＦＦまでの基準クロックの遅延時間を求め、前記基準クロックの遅延時間の最大値を取得するステップと、
前記基準クロックの半周期未満の時間となるように、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦ間の基準クロックの遅延時間の最大値を決定するステップと、
前記基準クロックの遅延時間の最大値を、前記第２同期ＦＦ間の基準クロックの遅延時間の最大値で割ることにより得られる除算結果の値以上で、かつ、前記分周クロックの分周数の倍数で、それぞれの前記下位階層のブロックの分周クロックの配線経路を分割するように、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置され、前記基準クロックに同期して前記分周クロックをデータ信号として順次保持する第２同期ＦＦの段数を決定するステップと、
前記第２同期ＦＦ間の基準クロックの遅延時間の最大値以下の遅延時間となるように、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックのそれぞれの第２同期ＦＦおよび第１同期ＦＦまでの遅延時間の目標値を決定するステップと、
前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの、前記決定された段数の第２同期ＦＦのそれぞれおよび第１同期ＦＦまでの遅延時間が、前記遅延時間の目標値となる分周クロックの配線経路上の位置に、前記決定された段数の第２同期ＦＦのそれぞれを配置するステップと、
前記分周クロックの配線経路上のそれぞれの第２同期ＦＦの後ろに、前段の前記第２同期ＦＦのクロック入力端子に接続される基準クロックのローレベル期間に、前記前段の第２同期ＦＦの出力信号を通過させるラッチを配置するステップと、
それぞれの前記下位階層のブロックの初段の第２同期ＦＦのクロック入力端子に接続される基準クロックが、それぞれの前記第２同期ＦＦまでの遅延時間の目標値だけ遅延された遅延基準クロックを、それぞれの前記第２同期ＦＦのクロック入力端子に接続し、最終段の前記第２同期ＦＦに接続される遅延基準クロックを、前記基準クロックのクロックツリーの開始点に接続するステップとを含むことを特徴とするクロック同期方法を提供するものである。
【００３０】
ここで、前記第１同期ＦＦを、それぞれの前記下位階層のブロックの内部に配置することが好ましい。
【００３１】
また、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦのうちの少なくとも１を、それぞれの前記下位階層のブロックの内部に配置することが好ましい。
【００３２】
また、前記第１同期ＦＦ、および、それぞれの前記下位階層のブロックの分周クロックの配線経路上に直列に配置される複数の第２同期ＦＦを、前記トップ階層のブロックに配置することが好ましい。
【００３３】
また、前記基準クロックの物理的な配線距離、前記基準クロックの物理的な配線の単位長さ当たりの遅延時間、および、それぞれのセルの遅延時間に基づいて、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックの第１同期ＦＦまでの基準クロックの遅延時間を算出することが好ましい。
【００３４】
また、ワーストケースのシミュレーションにより、前記基準クロックの半周期未満の時間となるように、前記第２同期ＦＦ間の基準クロックの遅延時間の最大値を決定することが好ましい。
【００３５】
また、それぞれの前記下位階層のブロックの第２同期ＦＦの段数は、前記分周クロックが前記基準クロックをｎ分周（ｎは２以上の整数）の場合、等しいか、または、ｎの倍数の段数だけ異なることが好ましい。
【００３６】
また、前記除算結果の値以上となる前記分周クロックの分周数の倍数の最小値以上の値で、それぞれの前記下位階層のブロックの分周クロックの配線経路を分割するように、それぞれの前記下位階層のブロックの第２同期ＦＦの段数を決定することが好ましい。
【００３７】
また、前記第２同期ＦＦ間の基準クロックの遅延時間の最大値以下の遅延時間となるように、それぞれの前記下位階層のブロックの基準クロックの遅延時間を、前記決定された段数の第２同期ＦＦで分割することにより、前記遅延時間の目標値を決定することが好ましい。
【００３８】
また、前記基準クロックの物理的な配線の単位長さ当たりの遅延時間、および、それぞれのセルの遅延時間に基づいて、前記基準クロックと前記分周クロックとの分岐点から、それぞれの前記下位階層のブロックのそれぞれの第２同期ＦＦおよび第１同期ＦＦまでの遅延時間を算出することにより、前記算出されたそれぞれの遅延時間が、前記遅延時間の目標値となる前記分周クロックの配線経路上の位置を取得することが好ましい。
【発明の効果】
【００３９】
本発明では、第１同期ＦＦを、下位階層のブロックの分周クロックのクロックツリーの開始点に配置することにより、基準クロックと分周クロックとの分岐点が、第１同期ＦＦにおける基準クロックと分周クロックとの分岐点に移動され、分岐点から第２末端ＦＦまでの配線距離を短くすることができるため、タイミングマージンを小さくし、タイミング設計を容易化することができる。
【００４０】
また、本発明によれば、第２同期ＦＦの後ろにラッチを追加することにより、例えば、基準クロックの立ち上がりエッジで第２同期ＦＦを通過させた分周クロックのデータ信号を、基準クロックがハイレベルの間、ラッチが保持して出力する。これにより、分周クロックの変化の開始タイミングが確実に基準クロックの半周期の時間遅延されるため、バッファにより遅延時間を確保する必要がなくなり、タイミング設計が容易化される。
【図面の簡単な説明】
【００４１】
【図１】本発明のクロック同期方法を適用して設計された半導体集積回路の構成を表す一実施形態の回路図である。
【図２】本発明のクロック同期方法の各工程を表す一例のフローチャートである。
【図３】図１に示す半導体集積回路におけるセル間の遅延時間を表す一例の概念図である。
【図４】基準クロックおよび分周クロックが、クロック生成回路から６個の下位階層のブロックに供給される場合の一例を表すブロック図である。
【図５】（Ａ）は、図１に示すクロック同期回路の一部の構成を表す一例の回路図、（Ｂ）は、同図（Ａ）に示す回路の動作を表す一例のタイミングチャートである。
【図６】従来の半導体集積回路の構成を表す一例の概念図である。
【図７】図６に示す半導体集積回路の動作を表す一例のタイミングチャートである。
【図８】従来の半導体集積回路の構成を表す別の例の概念図である。
【図９】図８に示す半導体集積回路の動作を表す一例のタイミングチャートである。
【図１０】従来の半導体集積回路の構成を表す別の例の概念図である。
【図１１】図１０に示す半導体集積回路の動作を表す一例のタイミングチャートである。
【図１２】図１０に示す半導体集積回路におけるセル間の遅延時間を表す一例の概念図である。
【図１３】従来の半導体集積回路の構成を表す別の例の概念図である。
【図１４】図１３に示すクロック同期回路の一部の構成を表す一例の回路図である。
【図１５】図１３に示すクロック同期回路の一部の構成を表す別の例の回路図である。
【図１６】図１３に示すクロック同期回路の一部の構成を表す別の例の回路図である。
【図１７】（Ａ）は、図１６に示すクロック同期回路の一部の構成を表す一例の回路図、（Ｂ）は、同図（Ａ）に示す回路の動作を表す一例のタイミングチャートである。
【発明を実施するための形態】
【００４２】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のクロック同期方法を詳細に説明する。
【００４３】
図１は、本発明のクロック同期方法を適用して設計された半導体集積回路の構成を表す一実施形態の回路図である。同図に示す半導体集積回路１０は、本発明のクロック同期方法を適用して、かつ、階層レイアウト設計手法により設計されたものであり、３つの下位階層のブロックＡ、Ｂ、Ｃと、この下位階層のブロックＡ、Ｂ、Ｃを除くトップ階層のブロックとを備えている。
【００４４】
トップ階層のブロックは、クロック生成回路１２を備え、クロック生成回路１２は、一定の周期（周波数）の基準クロック１５を生成するＰＬＬ回路１４と、ＰＬＬ回路１４により生成される基準クロック１５をｎ分周（ｎは２以上の整数）して分周クロック１７を生成する分周回路１６とを備えている。
【００４５】
なお、図示例の分周回路１６は、基準クロック１５を分周する分周器の後ろに、後述するラッチ４２と同じ、分周器に入力される基準クロック１５のローレベル期間にデータを通過させるラッチが設けられている。このラッチは必須ではないが、このラッチを設けてもよい。
【００４６】
それぞれの下位階層のブロックＡ、Ｂ、Ｃは、基準クロック１５に同期して動作する第１末端ＦＦ１８と、分周クロック１７に同期して動作する第２末端ＦＦ２０と、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部で使用される基準クロックおよび分周クロックのクロックツリー（図１中、三角の枠で示す）１９、２１とを備えている。
【００４７】
続いて、クロック同期回路は、クロック生成回路１２から、それぞれの下位階層のブロックＡ、Ｂ、Ｃが備える基準クロックおよび分周クロックのクロックツリー１９、２１を介して、第１末端ＦＦ１８および第２末端ＦＦ２０に供給される基準クロックおよび分周クロックの位相を同期させるものであり、それぞれの下位階層のブロックＡ、Ｂ、Ｃに対応する第１、第２および第３クロック同期回路２２、２４、２６を備えている。
【００４８】
第１クロック同期回路２２は、５段の基本同期回路２８、３０、３２、３４、３６と、第１同期ＦＦ３８と、基準クロック１５を遅延するバッファ４４とを備えている。初段〜４段目の基本同期回路２８、３０、３２、３４およびバッファ４４は、トップ階層のブロックに配置され、５段目の基本同期回路３６および第１同期ＦＦ３８は、下位階層のブロックＡの内部に配置されている。
【００４９】
初段の基本同期回路２８は、第２同期ＦＦ４０と、ラッチ４２とを備えている。第２同期ＦＦ４０のクロック入力端子には、クロック生成回路１２のＰＬＬ回路１４から基準クロック１５が入力され、データ入力端子には、分周回路１６から分周クロック１７が入力される。ラッチ４２のクロック入力端子には、第２同期ＦＦ４０のクロック入力端子に入力される基準クロック１５の反転が入力され、データ入力端子には、第２同期ＦＦ４０の出力信号が入力される。
【００５０】
第２同期ＦＦ４０は、基準クロック１５の立ち上がりに同期して分周クロック１７を保持する（保持し直す）ものである。
ラッチ４２は、基準クロックがローレベルの期間に、前段の第２同期ＦＦ４０の出力信号を通過させ、基準クロックがハイレベルの期間に、通過させた第２同期ＦＦ４０の出力信号を保持するものである。
【００５１】
なお、図１の例では、ラッチ４２の後ろにバッファが設けられている。このバッファは必須ではないが、ラッチ４２の後ろにバッファを設けてもよい。
【００５２】
２段目〜５段目の基本同期回路３０、３２、３４、３６は、初段の基本同期回路２８と同様の構成のものであるが、第２同期ＦＦ４０のデータ入力端子には、それぞれ、前段の基本同期回路２８、３０、３２、３４のラッチ４２の出力信号が入力され、第２同期ＦＦ４０のクロック入力端子およびラッチ４２のクロック入力端子には、基準クロック１５が、バッファ４４により一定の遅延時間だけ順次遅延された遅延基準クロックおよびその反転が入力される。
【００５３】
第１同期ＦＦ３８のクロック入力端子には、基準クロック１５のクロックツリー１９から、下位階層のブロックＡの内部で使用される基準クロックが入力され、データ入力端子には、５段目の基本同期回路３６のラッチ４２の出力信号が入力される。
第１同期ＦＦ３８は、下位階層のブロックＡの内部で使用される基準クロックの立ち上がりに同期して、５段目の基本同期回路３６のラッチの出力信号を保持するものである。
【００５４】
また、５段目の基本同期回路３６の第２同期ＦＦ４０のクロック入力端子に入力される遅延基準クロックが、下位階層のブロックＡの内部で使用される基準クロックとして、基準クロックのクロックツリー１９の開始点（入力端子）に入力され、第１同期ＦＦ３８の出力信号が、下位階層のブロックＡの内部で使用される分周クロックとして、分周クロックのクロックツリー２１の開始点に入力される。
【００５５】
第２および第３クロック同期回路２４、２６は、第１クロック同期回路２２と同様の構成のものである。
【００５６】
半導体集積回路１０では、トップ階層のブロックにおいて、クロック生成回路１２のＰＬＬ回路１４により、一定の周期の基準クロック１５が生成され、分周回路１６により、基準クロック１５がｎ分周されて分周クロック１７が生成される。
【００５７】
続いて、それぞれの下位階層のブロックＡ、Ｂ、Ｃに対応するバッファ４４により、基準クロック１５が順次遅延されて遅延基準クロックが生成され、基準クロックのクロックツリー１９を介して、全ての第１末端ＦＦ１８に供給される。
【００５８】
また、それぞれの下位階層のブロックＡ、Ｂ、Ｃに対応するクロック同期回路の初段の基本同期回路２８の第２同期ＦＦ４０により、基準クロック１５の立ち上がりに同期して分周クロック１７がデータ信号として保持され、続いて、ラッチ４２により、第２同期ＦＦ４０に入力される基準クロック１５がハイレベルの期間、第２同期ＦＦ４０の出力信号が保持されることにより、第２同期ＦＦ４０の出力信号が、基準クロック１５の半周期の時間遅延される。
【００５９】
同様に、２段目の基本同期回路３０の第２同期ＦＦ４０により、バッファ４４により遅延された遅延基準クロックの立ち上がりから立ち下がりまでの半周期、初段の基本同期回路２８のラッチ４２の出力信号が保持され、続いて、ラッチ４２により、遅延基準クロックがハイレベルの間、第２同期ＦＦ４０の出力信号が、遅延基準クロックの半周期の時間遅延される。３段目〜５段目の基本同期回路３２、３４、３６も同様に動作する。
【００６０】
そして、第１同期ＦＦ３８により、基準クロックのクロックツリー１９から入力される基準クロックの立ち上がりに同期して、５段目の基本同期回路３６のラッチ４２の出力信号がデータ信号として保持され、第１同期ＦＦ３８の出力信号、つまり、タイミング調整された分周クロックが、第１同期ＦＦ３８に保持された分周クロックのデータ信号をデータ入力とする分周クロックのクロックツリー２１を介して、全ての第２末端ＦＦ２０に供給される。
【００６１】
次に、図２のフローチャートを参照しながら、本発明のクロック同期方法に従って、基準クロックおよび分周クロックのレイアウト設計を行う場合の各工程を説明する。
【００６２】
半導体集積回路１０のレイアウト設計を行う場合、まず、それぞれの下位階層のブロックＡ、Ｂ、Ｃにおいて、クロックツリーシンセシスの手法を用いて、基準クロックおよび分周クロックのクロックツリー１９、２１を生成する（ステップＳ１）。
【００６３】
これにより、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部で使用される基準クロックの開始点から、全ての第１末端ＦＦ１８までの遅延時間が同じになるように、基準クロックのクロックツリー１９が生成される。同様に、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部で使用される分周クロックの開始点から、全ての第２末端ＦＦ２０までの遅延時間が同じになるように、分周クロックのクロックツリー２１が生成される。
【００６４】
本実施形態の場合、図３に示すように、下位階層のブロックＡでは、内部で使用される基準クロックおよび分周クロックの開始点から全ての第１末端ＦＦ１８および全ての第２末端ＦＦ２０までの遅延時間が２ｎｓ、１ｎｓとする。同様に、下位階層のブロックＢでは、内部で使用される基準クロックおよび分周クロックの開始点から全ての第１末端ＦＦ１８および全ての第２末端ＦＦ２０までの遅延時間が７ｎｓ、５ｎｓであり、下位階層のブロックＣでは、内部で使用される基準クロックおよび分周クロックの開始点から全ての第１末端ＦＦ１８および第２末端ＦＦ２０までの遅延時間が５ｎｓ、３ｎｓとする。
【００６５】
続いて、トップ階層のブロックにおいて、それぞれの下位階層のブロックＡ、Ｂ、Ｃにおける基準クロックおよび分周クロックのクロックツリー１９、２１による遅延時間の結果を引き継いで、基準クロック１５と分周クロック１７との分岐点１３から、基準クロックおよび分周クロックのクロックツリー１９、２１が生成された、それぞれの下位階層のブロックＡ、Ｂ、Ｃが備える第１末端ＦＦ１８および第２末端ＦＦ２０までの遅延時間が同じになるように、トップ階層のブロックの基準クロックおよび分周クロックのクロックツリーを生成する（ステップＳ２）。
【００６６】
ここで、基準クロック１５と分周クロック１７との分岐点１３とは、基準クロックに同期して動作するＦＦに、基準クロックを入力するために、ＦＦへ入力される基準クロックが、基準クロックの配線から分岐される点である。
図１の例では、基準クロックが、基準クロックの配線から、分周回路１６のＦＦへ分岐する点はもちろん、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第２同期ＦＦ４０へ分岐する点、第１同期ＦＦ３８へ分岐する点が分岐点である。
【００６７】
本実施形態の場合、図３に示すように、基準クロック１５と分周クロック１７との分岐点１３から、下位階層のブロックＡの内部で使用される基準クロックおよび分周クロックの開始点（入力端子）までの遅延時間は、１０ｎｓ、１１ｎｓとする。同様に、基準クロック１５と分周クロック１７との分岐点１３から、下位階層のブロックＢの内部で使用される基準クロックおよび分周クロックの開始点までの遅延時間は、５ｎｓ、７ｎｓであり、基準クロック１５と分周クロック１７との分岐点１３から、下位階層のブロックＣの内部で使用される基準クロックおよび分周クロックの開始点までの遅延時間は、７ｎｓ、９ｎｓとする。
【００６８】
これにより、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第１末端ＦＦ１８、第２末端ＦＦ２０までの遅延時間は、全て１２ｎｓに揃えられ、下位階層のブロックＡ、Ｂ、Ｃが備える全ての第１末端ＦＦ１８、第２末端ＦＦ２０を同期させて動作させることができる。
【００６９】
続いて、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロックのクロックツリー２１の開始点に、第１同期ＦＦ３８を配置する（ステップＳ３）。
第１同期ＦＦ３８のクロック入力端子には、それぞれの下位階層のブロックＡ、Ｂ、Ｃの基準クロックのクロックツリー１９から基準クロックが入力され、データ入力端子には、分周クロック１７が入力される。また、第１同期ＦＦ３８のデータ出力端子は、基準クロックのクロックツリー１９の開始点に接続される。
【００７０】
ここで、分周クロックのクロックツリー２１の開始点に、第１同期ＦＦ３８を配置するというのは、分周クロックのクロックツリー２１の開始点の位置だけでなく、第１同期ＦＦ３８と第２末端ＦＦ２０との間のタイミング制約を満たすことができる位置を含む。
【００７１】
このように、第１同期ＦＦ３８を、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部の分周クロックのクロックツリー２１の開始点に配置することにより、分岐点が、基準クロック１５と分周クロック１７との分岐点１３から、第１同期ＦＦ３８における基準クロックと分周クロックとの分岐点３９に移動され、分岐点から第２末端ＦＦ２０までの配線距離を短くすることができるため、タイミングマージンを小さくし、タイミング設計を容易化することができる。
【００７２】
なお、これに限定されず、第１同期ＦＦ３８を、トップ階層のブロックに配置してもよい。この場合も、第１同期ＦＦ３８を、基準クロック１５と分周クロック１７との分岐点１３よりも、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロックのクロックツリー２１の開始点に近い位置、例えば、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロックのクロックツリーの開始点に配置することにより、タイミングマージンを小さくすることが可能である。
【００７３】
続いて、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第１同期ＦＦ３８までの基準クロック１５の遅延時間を求め、基準クロック１５の遅延時間の最大値を取得する（ステップＳ４）。
【００７４】
基準クロックおよび分周クロックのクロックツリー１９、２１を生成することにより、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第１同期ＦＦ３８までの物理的な配線の経路が確定し、その結果、基準クロック１５および分周クロック１７の物理的な配線距離が決まる。また、基準クロック１５および分周クロック１７の物理的な配線の単位長さ当たりの遅延時間やそれぞれのセルの遅延時間は既知であるから、これらに基づいて、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第１同期ＦＦ３８までの基準クロック１５の遅延時間を算出することができる。
【００７５】
本実施形態の場合、図３に示すように、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第１同期ＦＦ３８までの基準クロック１５の遅延時間は、１１ｎｓ、７ｎｓ、９ｎｓであるから、基準クロック１５の遅延時間の最大値は、１１ｎｓとなる。
【００７６】
続いて、基準クロック１５の半周期未満の時間となるように、それぞれの下位階層のブロックＡ、Ｂ、Ｃまでの分周クロック１７の配線経路上に直列に配置される複数の第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値を決定する（ステップＳ５）。
【００７７】
本実施形態の場合、基準クロック１５の周期は５ｎｓ、つまり、その半周期は２．５ｎｓであり、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロック１７の配線経路上に直列に配置される第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値を２ｎｓとする。例えば、ワーストケースのシミュレーションにより、基準クロック１５の半周期未満の時間となるように、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値を決定することができる。
【００７８】
続いて、基準クロック１５の遅延時間の最大値を、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値で割ることにより得られる除算結果の値以上で、かつ、分周クロック１７の分周数の倍数で、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロック１７の配線経路を分割するように、それぞれの下位階層のブロックＡ、Ｂ、Ｃまでの分周クロック１７の配線経路上に直列に配置される第２同期ＦＦ４０の段数を決定する（ステップＳ６）。
【００７９】
本実施形態の場合、基準クロック１５の遅延時間の最大値である１１ｎｓを、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値である２ｎｓで割ることにより、除算結果の値である１１ｎｓ／２ｎｓ＝５．５を得る。分周クロック１７が基準クロック１５を２分周して生成される場合、除算結果の値である５．５以上で、かつ、２の倍数である６で、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロック１７の配線経路を６分割するように、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第２同期ＦＦ４０の段数を５段に決定する。
【００８０】
ここで、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第２同期ＦＦ４０の段数は、位相が揃うのであれば同じである必要はなく、分周クロック１７が基準クロックをｎ分周して生成される場合、ｎの倍数の段数だけ異なっていてもよい。
また、タイミング設計がより容易になるように、除算結果の値以上となる分周クロック１７の分周数ｎの倍数の最小値以上の値で、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロック１７の配線経路を分割するように、それぞれの下位階層のブロックＡ、Ｂ、Ｃの第２同期ＦＦ４０の段数を決定してもよい。
【００８１】
続いて、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値以下の遅延時間となるように、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃまでのそれぞれの第２同期ＦＦ４０および第１同期ＦＦ３８までの遅延時間の目標値を決定する（ステップＳ７）。
【００８２】
例えば、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値以下の遅延時間となるように、それぞれの下位階層のブロックＡ、Ｂ、Ｃの基準クロック１５遅延時間を、決定された段数の第２同期ＦＦ４０で分割することにより、遅延時間の目標値を決定する。
【００８３】
本実施形態の場合、図３に示すように、第２同期ＦＦ４０間の基準クロック１５の遅延時間の最大値である２ｎｓの遅延時間となるように、下位階層のブロックＡでは、基準クロック１５と分周クロック１７との分岐点１３から、５段の第２同期ＦＦ４０および第１同期ＦＦ３８までの遅延時間を、それぞれ、２ｎｓ、４ｎｓ、６ｎｓ、８ｎｓ、１０ｎｓ、１１ｎｓとする。同様に、下位階層のブロックＢでは、基準クロック１５と分周クロック１７との分岐点１３から、５段の第２同期ＦＦ４０および第１同期ＦＦ３８までの遅延時間を、それぞれ、１ｎｓ、２ｎｓ、３ｎｓ、４ｎｓ、５ｎｓ、７ｎｓとする。下位階層のブロックＢでは、基準クロック１５と分周クロック１７との分岐点１３から、５段の第２同期ＦＦ４０および第１同期ＦＦ３８までの遅延時間を、それぞれ、１ｎｓ、２．５ｎｓ、４ｎｓ、５．５ｎｓ、７ｎｓ、９ｎｓとする。
【００８４】
続いて、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃの、決定された段数の第２同期ＦＦ４０のそれぞれおよび第１同期ＦＦ３８までの遅延時間が、遅延時間の目標値となる分周クロック１７の配線経路上の位置に、決定された段数の第２同期ＦＦ４０のそれぞれを配置する（ステップＳ８）。
決定された段数の第２同期ＦＦ４０は、それぞれの下位階層のブロックＡ、Ｂ、Ｃの分周クロック１７の配線経路上に直列に配置される。また、初段の第２同期ＦＦ４０のデータ入力端子には分周クロック１７が接続され、最終段の第２同期ＦＦ４０のデータ出力端子は、第１同期ＦＦ３８のデータ入力端子に接続される。
【００８５】
前述のように、基準クロック１５および分周クロック１７の物理的な配線の単位長さ当たりの遅延時間やそれぞれのセルの遅延時間は既知であるから、これらに基づいて、基準クロック１５と分周クロック１７との分岐点１３から、それぞれの下位階層のブロックＡ、Ｂ、Ｃのそれぞれの第２同期ＦＦ４０および第１同期ＦＦ３８までの遅延時間を算出することにより、算出されたそれぞれの遅延時間が、遅延時間の目標値となる分周クロック１７の配線経路上の位置（基準クロック１５と分周クロック１７との分岐点１３からの配線距離）を取得することができる。
【００８６】
また、本実施形態では、決定された５段の第２同期ＦＦ４０のうち、初段〜４段目までの第２同期ＦＦ４０が、トップ階層のブロックに配置され、最終段の第２同期ＦＦ４０が、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部に配置されている。
このように、第１同期ＦＦ３８が、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部に配置される場合、決定された段数の第２同期ＦＦ４０のうちの少なくとも１つを、それぞれの下位階層のブロックＡ、Ｂ、Ｃの内部に配置してもよい。あるいは、第１同期ＦＦ３８、および、決定された段数の第２同期ＦＦ４０を、トップ階層のブロックに配置してもよい。
【００８７】
続いて、分周クロック１７の配線経路上のそれぞれの第２同期ＦＦ４０の後ろに、ラッチ４２を配置する（ステップＳ９）。
ラッチ４２のクロック入力端子には、同じ基本同期回路の第２同期ＦＦ４０のクロック入力端子に接続されている基準クロックまたは遅延基準クロックの反転が接続され、データ入力端子には、同じ基本同期回路の第２同期ＦＦ４０の出力信号が接続される。また、ラッチ４２のデータ出力端子は、後段の基本同期回路の第２同期ＦＦ４０のデータ入力端子に接続される。
【００８８】
最後に、それぞれの下位階層のブロックＡ、Ｂ、Ｃの初段の第２同期ＦＦ４０のクロック入力端子に接続される基準クロックが、バッファ４４により、それぞれの第２同期ＦＦ４０までの遅延時間の目標値だけ順次遅延された遅延基準クロックを、それぞれの第２同期ＦＦ４０のクロック入力端子に接続し、最終段の第２同期ＦＦ４０に接続される遅延基準クロックを、基準クロックのクロックツリー１９の開始点に接続する（ステップＳ１０）。
【００８９】
以上の工程により、基準クロック１５および分周クロック１７のレイアウト設計が完了する。
【００９０】
図４は、基準クロックおよび分周クロックが、クロック生成回路から６個の下位階層のブロックに供給される場合の一例を表すブロック図である。トップ階層のブロック５０が備えるクロック生成回路５２から、それぞれの下位階層のブロック５４、５６、５８、６０、６２、６４まで延びる線６６は、基準クロックおよび分周クロックのクロックツリーの物理的な配線経路、丸印６８は、基本同期回路および第１同期ＦＦの配置位置を表す。
【００９１】
この例では、クロック生成回路５２における基準クロックと分周クロックとの分岐点から、全ての下位階層のブロック５４、５６、５８、６０、６２、６４の第１同期ＦＦまでの基本同期回路および第１同期ＦＦの段数が同じ８段になるようにしている。また、それぞれの基本同期回路の第２同期ＦＦを、第２同期ＦＦ間の基準クロックの遅延時間の最大値を満足する一定距離以内に配置することによって、複雑な遅延時間の調整を行うことなく、自然とセットアップ／ホールド制約が満たされるようになっている。
【００９２】
本実施形態の半導体集積回路１０においても、データのつき抜けを起こさないために、図５（Ａ）に示すように、後段のＦＦＢのクロックＣＬＫの立ち上がりより後にＦＦＢのデータＤが変化しなければならない点は、従来回路の場合と同じである。
しかし、本実施形態の場合、同図（Ｂ）に示すように、ＦＦＡの後ろにラッチＡを追加することにより、クロックＣＬＫがローレベルの期間に通過させたデータＤを、クロックＣＬＫがハイレベルの間、ラッチＡが保持し、データＱとして出力する。これにより、データＱの変化の開始タイミングが確実にクロックＣＬＫの半周期の時間遅延されるため、バッファにより遅延時間を確保する必要がなくなる。
【００９３】
つまり、このラッチによりデータＱが保持されている期間内であれば、後段のＦＦＢのクロックＣＬＫが、前段のＦＦＡのクロックＣＬＫよりも遅くなっても問題はない。また、データＱの流れが一方向であるため、クロックＣＬＫの１周期未満であれば、後段のＦＦＢのクロックＣＬＫが前段のＦＦＡのクロックＣＬＫよりも早くても問題はない。このように、ラッチを追加することにより、クロックＣＬＫの到達時間に余裕を持たせることができるため、タイミング設計が容易化される。
【００９４】
例えば、クロックの周期が５ｎｓの場合、ＦＦＡの後ろにラッチＡを配置したことにより、クロックＣＬＫがハイレベルとなってから、クロックＣＬＫの半周期の２．５ｎｓの間、ラッチＡがデータＤを保持してデータＱを出力する。このため、ＦＦＡから後段のＦＦＢのクロックＣＬＫの遅延時間が２．５ｎｓ未満であれば、ホールド違反を起こさない。これを利用すると、この例では、ＦＦＡとＦＦＢとの間のクロックＣＬＫの遅延時間の最大値を、例えば、２ｎｓまで大きくしても、問題なくタイミング制約を満たすことができる。
【００９５】
また、データ経路のセル遅延は、ラッチＡの１段分の小さな遅延となり、それが動作環境によって変動するとしても、変動幅は複数段のバッファと比べて非常に小さい。このため、従来回路と比べて、格段にタイミング設計が容易化され、従来回路のように、タイミング調整の手間が不要になる。
【００９６】
また、半導体集積回路１０において、分周クロック１７の配線経路では、隣接する第１同期ＦＦ３８および第２同期ＦＦ４０間のセットアップ／ホールド制約さえ満たせばよく、ラッチ４２を追加することにより容易にこのタイミング制約を満たせる。そのため、クロック同期回路の初段の第２同期ＦＦ４０と第１同期ＦＦ３８のクロックの遅延差が、基準クロック１５の周期を超える場合でも、複数の下位階層のブロックＡ、Ｂ、Ｃの第１末端ＦＦ１８、第２末端ＦＦ２０のクロック遅延がばらばらな場合でも、問題なく、設計することができる。
【００９７】
なお、第１同期ＦＦ３８および第２同期ＦＦ４０を、基準クロック１５の立ち下がりに同期して動作させてもよい。この場合、ラッチ４２のクロック入力端子には、基準クロック１５または遅延基準クロックが入力される。つまり、第１同期ＦＦ３８および第２同期ＦＦ４０が、基準クロック１５の立ち上がりに同期して動作するか、立ち下がりに同期して動作するに係わらず、ラッチ４２を、前段の第２同期ＦＦ４０の出力をクロック半周期分保持するように動作させればよい。
【００９８】
本発明は、基本的に以上のようなものである。
以上、本発明について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【符号の説明】
【００９９】
１０  半導体集積回路
１２、５２  クロック生成回路
１３、３７、３９  分岐点
１４  ＰＬＬ回路
１５  基準クロック
１６  分周回路
１７  分周クロック
１８  第１末端ＦＦ
１９、２１  クロックツリー
２０  第２末端ＦＦ
２２  第１クロック同期回路
２４  第２クロック同期回路
２６  第３クロック同期回路
２８、３０、３２、３４、３６  基本同期回路
３８  第２同期ＦＦ
４０  第１同期ＦＦ
４１  同期ＦＦ
４２  ラッチ
４４、４５、４７、４９  バッファ
５０  トップ階層のブロック
６６  線
６８  丸印
Ａ、Ｂ、Ｃ、５４、５６、５８、６０、６２、６４  下位階層のブロック
【図１】
0006450953.tif 000002
【図２】
0006450953.tif 000003
【図３】
0006450953.tif 000004
【図４】
0006450953.tif 000005
【図５】
0006450953.tif 000006
【図６】
0006450953.tif 000007
【図７】
0006450953.tif 000008
【図８】
0006450953.tif 000009
【図９】
0006450953.tif 000010
【図１０】
0006450953.tif 000011
【図１１】
0006450953.tif 000012
【図１２】
0006450953.tif 000013
【図１３】
0006450953.tif 000014
【図１４】
0006450953.tif 000015
【図１５】
0006450953.tif 000016
【図１６】
0006450953.tif 000017
【図１７】
0006450953.tif 000018