(57)【要約】【課題】複数のクロック信号源と、複数のクロック信号源が各入力端子に接続された論理回路との各クロック出力について、同期関係を解析してクロックツリーを最良に生成する。【解決手段】複数のクロック信号源と、この複数のクロック信号源が各入力端子に接続された論理回路との各クロック出力について、クロック同期関係解析手段１０によって、同期関係を解析し、この解析結果に基づいて、クロックツリー構成手段２０によって、クロックツリーを生成するため、クロックツリーを再構成することなく、クロックスキューを低減することができる。また、論理回路からクロックが供給されるクロック同期素子（フリップフロップ）が、どちらの信号源に同期して動作するかが分かるため、クロックスキューが小さく、消費電力が少ないクロックツリーを簡単に構成してタイミング違反による回路誤動作を防ぐことができる。【選択図】図１
2007122517.tif 000002
【特許請求の範囲】
【請求項１】
複数のクロック信号源から複数のクロック同期素子までのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整するクロックツリー合成装置において、
該複数のクロック信号源と、該複数のクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路と、該複数のクロック信号源からそれぞれクロック信号がそれぞれ供給される一または複数のクロック同期素子と、該論理回路からクロック信号が供給される一または複数のクロック同期素子とを有するクロック同期回路に対して、
該複数のクロック信号源と該論理回路との各クロック出力について、同期関係を解析するクロック同期関係解析手段と、該クロック同期関係解析手段による解析結果に基づいてクロックツリーを生成するクロックツリー構成手段とを備えたクロックツリー合成装置。
【請求項２】
前記クロック同期関係解析手段は、
前記論理回路からクロック信号が供給される一または複数のクロック同期素子と、該論理回路の各入力端子に接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子間のデータパスの有無を調べて、該データパスが存在する場合に該クロック信号源と該論理回路の各クロック出力に同期関係があり、該データパスが存在しない場合に該各クロック出力に同期関係がないと前記解析結果として判定する同期判定手段を有する請求項１に記載のクロックツリー合成装置。
【請求項３】
前記クロック同期関係解析手段は、
少なくとも二つのクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路を検出する論理回路検出手段と、
該論理回路の各入力端子にそれぞれ接続されたクロック信号源の数およびそのクロック名を検出するクロック信号源検出手段と、
該論理回路からクロック信号が供給される一または複数のクロック同期素子を検出して第１素子リストを作成する第１素子リスト作成手段と、
該論理回路の各入力端子にそれぞれ接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子を検出して第２素子リストを作成する第２素子リスト作成手段と、
該第１素子リストのクロック同期素子と該第２素子リストのクロック同期素子間にデータパスが存在するかどうかを調べて、該データパスが存在する場合には該クロック信号源と該論理回路との各クロック出力に同期関係があると判定して当該クロック信号源のクロック名を同期クロックリストに追加し、該第２素子リストのクロック同期素子を同期クロックツリー対象リストに追加し、同期クロック数をカウントし、また、該データパスが存在しない場合には該クロック信号源と該論理回路との各クロック出力に同期関係がないと判定して当該クロック信号源のクロック名を非同期クロックリストに追加する同期関係処理手段とを有する請求項１に記載のクロックツリー合成装置。
【請求項４】
前記第２素子リスト作成手段および前記同期関係処理手段の各処理を前記クロック信号源の数だけ繰り返して行う請求項３に記載のクロックツリー合成装置。
【請求項５】
前記クロックツリー構成手段は、
前記同期関係がない場合に、前記論理回路からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第１クロックツリー生成手段と、前記論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段とを有する請求項１〜３のいずれかに記載のクロックツリー合成装置。
【請求項６】
前記クロックツリー構成手段は、
前記同期関係がある場合に、前記論理回路からクロック信号が供給される一または複数のクロック同期素子および、該論理回路のクロック出力と同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第３クロックツリー生成手段と、該論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段とを有する請求項１〜３のいずれかに記載のクロックツリー合成装置。
【請求項７】
前記クロック同期素子はフリップフロップ素子またはラッチ素子である請求項１〜６のいずれかに記載のクロックツリー合成装置。
【請求項８】
請求項１〜７のいずれかに記載のクロックツリー合成装置を用いて、複数のクロック信号源から複数のクロック同期素子までのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整するクロックツリー合成を行うクロックツリー合成方法であって、
該複数のクロック信号源と、該複数のクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路と、該複数のクロック信号源からそれぞれクロック信号が供給される一または複数のクロック同期素子と、該論理回路からクロック信号が供給される一または複数のクロック同期素子とを有するクロック同期回路に対して、
前記クロック同期関係解析手段によって、
少なくとも二つのクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路を検出する論理回路検出ステップと、該論理回路の各入力端子にそれぞれ接続されたクロック信号源の数およびそのクロック名を検出するクロック信号源検出ステップと、該論理回路の出力からクロック信号が供給される一または複数のクロック同期素子を検出して第１素子リストを作成する第１素子リスト作成ステップとを行い、
該論理回路の各入力端子にそれぞれ接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子を検出して第２素子リストを作成する第２素子リスト作成ステップと、該第１素子リストのクロック同期素子と該第２素子リストのクロック同期素子間にデータパスが存在するかどうかを調べて、該データパスが存在する場合には該クロック信号源と該論理回路との各クロック出力に同期関係があると判定して当該クロック信号源のクロック名を同期クロックリストに追加し、該第２素子リストのクロック同期素子を同期クロックツリー対象リストに追加し、同期クロック数をカウントし、また、該データパスが存在しない場合には該クロック信号源と該論理回路との各クロック出力に同期関係がないと判定して当該クロック信号源のクロック名を非同期クロックリストに追加する同期関係判定処理ステップとを該クロック信号源の数だけ繰り返して行うクロックツリー合成方法。
【請求項９】
前記同期関係がない場合に、
前記クロックツリー構成手段によって、前記第１素子リストを用いて、前記論理回路からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップと、前記非同期クロックリストおよび前記第２素子リストを用いて、前記論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップとをさらに有する請求項８に記載のクロックツリー合成方法。
【請求項１０】
前記同期関係がある場合に、
前記クロックツリー構成手段によって、前記同期クロックリストおよび前記同期クロックツリー対象リストを用いて、前記論理回路の出力および該論理回路の各クロック出力に同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップと、前記非同期クロックリストおよび前記第２素子リストを用いて、該論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップとをさらに有する請求項８に記載のクロックツリー合成方法。
【請求項１１】
前記クロック同期関係解析手段により得られた同期クロック数が「１」である場合に、
前記論理回路のクロック出力と同期関係があるクロック信号源を基点として、該論理回路からクロック信号が供給される一または複数のクロック同期素子および、該同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子までのクロックラインを対象としてクロックツリーを生成する請求項１０に記載のクロックツリー合成方法。
【請求項１２】
前記クロック同期関係解析手段により得られた同期クロック数が「２」以上である場合に、
前記論理回路のクロック出力と同期関係がある複数のクロック信号源を同じクロック信号源であるとしてクロックツリーを生成する請求項１０に記載のクロックツリー合成方法。
【請求項１３】
請求項８〜１０のいずれかに記載のクロックツリー合成方法の各ステップをコンピュータに実行させるための制御プログラム。
【請求項１４】
請求項１３に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に対してクロックスキューを調整するために用いられるクロックツリー合成装置、これを用いたクロックツリー合成方法、これに用いる制御プログラムおよび可読記録媒体に関し、特に、複数のクロック信号源から供給されるクロック信号に同期して動作するように構成された半導体集積回路のクロックスキューの調整を行うクロックツリー合成装置、これを用いたクロックツリー合成方法、これに用いる制御プログラムおよび可読記録媒体に関する。
【背景技術】
【０００２】
近年の半導体集積回路は、論理合成ツールの普及や回路設計の容易さから、クロック信号に同期して動作するクロック同期回路として設計されることが多い。このクロック同期回路において、伝送ライン（クロックライン）間で抵抗や容量が異なることなどによりクロック信号のずれ（クロックスキュー）が生じるが、このクロックスキューが大きい場合には、タイミング違反が生じて回路が正常に動作しないことがある。これを防ぐため、クロック信号に同期して動作するフリップフロップ（フリップフロップ素子）などのクロック同期素子に対しては、クロック信号をほぼ同一のタイミングで供給する必要がある。
【０００３】
そこで、クロックスキューを調整してフリップフロップなどのクロック同期素子にクロック信号をほぼ同一のタイミングで供給するために、例えば特許文献１に開示されているように、従来のクロックツリー手法が用いられている。以下に、このクロックツリー手法について、図７を用いて詳細に説明する。
【０００４】
図７に示すように、一つのクロック信号源ＣＬＫからクロック信号が供給される複数のフリップフロップＦＦ０〜ＦＦ７が設けられているクロック同期回路に対して、従来のクロックツリー手法では、一つのクロック信号源ＣＬＫから複数のフリップフロップＦＦ０〜ＦＦ７までのクロックライン上に、各クロックバッファＣＢ０〜ＣＢ１４をツリー状に配置している。
【０００５】
この構成では、フリップフロップＦＦ０はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ１、ＣＢ３、ＣＢ７を通してクロック信号が供給され、フリップフロップＦＦ１はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ１、ＣＢ３、ＣＢ８を通してクロック信号が供給され、フリップフロップＦＦ２はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ１、ＣＢ４、ＣＢ９を通してクロック信号が供給され、フリップフロップＦＦ３はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ１、ＣＢ４、ＣＢ１０を通してクロック信号が供給される。
【０００６】
また、フリップフロップＦＦ４はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ２、ＣＢ５、ＣＢ１１を通してクロック信号が供給され、フリップフロップＦＦ５はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ２、ＣＢ５、ＣＢ１２を通してクロック信号が供給され、フリップフロップＦＦ６はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ２、ＣＢ６、ＣＢ１３を通してクロック信号が供給され、フリップフロップＦＦ７はクロック信号源ＣＬＫからバッファＣＢ０、ＣＢ２、ＣＢ６、ＣＢ１４を通してクロック信号が供給される。
【０００７】
各フリップフロップＦＦ０〜ＦＦ７はそれぞれ、クロック信号源ＣＬＫから４段のバッファを通してクロック信号が供給されるため、クロックスキューを低減してほぼ同一のタイミングでクロック信号を供給することができる。
【特許文献１】特開２００４−２５９２８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年では、半導体集積回路の大規模化および高機能化に伴って、単純なクロック信号ではなく、複数のクロック信号源から論理回路を経由して供給されるクロック信号によって動作する半導体集積回路が用いられるようになっている。このような複雑なクロック信号を用いた半導体集積回路に対して、従来のクロックツリー手法を適用すると、クロックツリーを構成するために長い時間が必要とされたり、クロックスキューが大きくなったり、クロック信号による消費電力が大きくなったりするという問題がある。以下に、この問題について、図８を用いて説明する。
【０００９】
図８において、従来のクロック同期回路は、二つのクロック信号源ＣＬＫ１およびＣＬＫ２と、それらのクロック信号源がそれぞれ各入力端子にそれぞれ接続された論理回路ＬＧ１と、クロック信号源ＣＬＫ１からクロック信号が供給されるフリップフロップＦＦＡ０〜ＦＦＡ３と、そのクロック信号源ＣＬＫ１とは異なるクロック信号源ＣＬＫ２からクロック信号が供給されるフリップフロップＦＦＣ０〜ＦＦＣ７と、二つのクロック信号源ＣＬＫ１およびＣＬＫ２が各入力端子に接続された論理回路ＬＧ１の出力からクロック信号が供給されるフリップフロップＦＦＢ０およびＦＦＢ１とによって構成されている。
【００１０】
このようなクロック同期回路では、二つのクロック信号源ＣＬＫ１およびＣＬＫ２が各入力端子に接続された論理回路ＬＧ１の出力からクロック信号が供給されるフリップフロップＦＦＢ０およびＦＦＢ１が、二つのクロック信号源ＣＬＫ１およびＣＬＫ２のいずれに同期して動作するかということが問題となる。
【００１１】
大規模化および複雑化している今日の半導体集積回路では、複数のブロックを統合する手法が使われており、いくつかのブロックを跨いでこのような回路が構成されている場合には、同期関係を理解することが容易ではない。
【００１２】
図８に示すようなクロック同期回路に対して、クロックツリーを構成する手法としては、以下のような３つの方法が考えられる。
【００１３】
第１に、クロック信号源ＣＬＫ１からフリップフロップＦＦＡ０〜ＦＦＡ３およびフリップフロップＦＦＢ０およびＦＦＢ１を対象としてクロックツリーを構成し、その後、クロック信号源ＣＬＫ２からフリップフロップＦＦＣ０〜ＦＦＣ７を対象としてクロックツリーを構成する方法が挙げられる。
【００１４】
第２に、クロック信号源ＣＬＫ２からフリップフロップＦＦＣ０〜ＦＦＣ７およびフリップフロップＦＦＢ０およびＦＦＢ１を対象としてクロックツリーを構成し、その後、クロック信号源ＣＬＫ１からフリップフロップＦＦＡ０〜ＦＦＡ３を対象としてクロックツリー構成する方法が挙げられる。
【００１５】
第３に、全ての枝からクロックツリーを構成する手法、即ち、クロック信号源ＣＬＫ１からフリップフロップＦＦＡ０〜ＦＦＡ３を対象としてクロックツリーを構成し、クロック信号源ＣＬＫ２からフリップフロップＦＦＣ０〜ＦＦＣ７を対象としてクロックツリーを構成し、二つのクロック信号源が入力された論理回路の出力からフリップフロップＦＦＢ０〜ＦＦＢ１を対象としてクロックツリーを構成する方法が挙げられる。
【００１６】
しかしながら、これらのクロックツリー構成方法では、いずれも、クロック信号の同期関係によって、クロックスキューが大きくなることがある。
【００１７】
一旦、上記全ての枝からクロックツリーを構成する第３の手法を用いた後で、各々のクロックツリーの遅延時間を計算して、最も遅延時間が長いクロックツリーの遅延時間に合わせてクロックツリーを再構成することによって、クロックスキューを低減する方法も考えられる。
【００１８】
しかしながら、このクロックツリー構成方法では、クロックツリーを構成するために長い時間が必要とされる上に、クロックバッファが必要以上に配置されるため、クロックラインが長くなって、クロック信号の消費電力が大きくなることがある。
【００１９】
これらの問題は、二つのクロック信号源ＣＬＫ１およびＣＬＫ２が各入力端子に接続された論理回路ＬＧ１の出力からクロック信号が供給されるフリップフロップＦＦＢ０およびＦＦＢ１が、二つのクロック信号源ＣＬＫ１およびＣＬＫ２のいずれに同期して動作するかということが分からないために生じることである。
【００２０】
本発明は、上記従来の問題を解決するもので、複数のクロック信号源と、複数のクロック信号源が各入力端子に接続された論理回路との各クロック出力について、同期関係を解析してクロックツリーを最良に構成することができるクロックツリー合成装置、これを用いたクロックツリー合成方法、これに用いる制御プログラムおよび可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明のクロックツリー合成装置は、複数のクロック信号源から複数のクロック同期素子までのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整するクロックツリー合成装置において、該複数のクロック信号源と、該複数のクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路と、該複数のクロック信号源からそれぞれクロック信号がそれぞれ供給される一または複数のクロック同期素子と、該論理回路からクロック信号が供給される一または複数のクロック同期素子とを有するクロック同期回路に対して、該複数のクロック信号源と該論理回路との各クロック出力について、同期関係を解析するクロック同期関係解析手段と、該クロック同期関係解析手段による解析結果に基づいてクロックツリーを生成するクロックツリー構成手段とを備えたものであり、そのことにより上記目的が達成される。
【００２２】
また、好ましくは、本発明のクロックツリー合成装置におけるクロック同期関係解析手段は、前記論理回路からクロック信号が供給される一または複数のクロック同期素子と、該論理回路の各入力端子に接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子間のデータパスの有無を調べて、該データパスが存在する場合に該クロック信号源と該論理回路の各クロック出力に同期関係があり、該データパスが存在しない場合に該各クロック出力に同期関係がないと前記解析結果として判定する同期判定手段を有する。
【００２３】
さらに、好ましくは、本発明のクロックツリー合成装置におけるクロック同期関係解析手段は、少なくとも二つのクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路を検出する論理回路検出手段と、該論理回路の各入力端子にそれぞれ接続されたクロック信号源の数およびそのクロック名を検出するクロック信号源検出手段と、該論理回路からクロック信号が供給される一または複数のクロック同期素子を検出して第１素子リストを作成する第１素子リスト作成手段と、該論理回路の各入力端子にそれぞれ接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子を検出して第２素子リストを作成する第２素子リスト作成手段と、該第１素子リストのクロック同期素子と該第２素子リストのクロック同期素子間にデータパスが存在するかどうかを調べて、該データパスが存在する場合には該クロック信号源と該論理回路との各クロック出力に同期関係があると判定して当該クロック信号源のクロック名を同期クロックリストに追加し、該第２素子リストのクロック同期素子を同期クロックツリー対象リストに追加し、同期クロック数をカウントし、また、該データパスが存在しない場合には該クロック信号源と該論理回路との各クロック出力に同期関係がないと判定して当該クロック信号源のクロック名を非同期クロックリストに追加する同期関係処理手段とを有する。
【００２４】
さらに、好ましくは、本発明のクロックツリー合成装置における第２素子リスト作成手段および前記同期関係処理手段の各処理を前記クロック信号源の数だけ繰り返して行う。
【００２５】
さらに、好ましくは、本発明のクロックツリー合成装置におけるクロックツリー構成手段は、前記同期関係がない場合に、前記論理回路からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第１クロックツリー生成手段と、前記論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段とを有する。
【００２６】
さらに、好ましくは、本発明のクロックツリー合成装置におけるクロックツリー構成手段は、前記同期関係がある場合に、前記論理回路からクロック信号が供給される一または複数のクロック同期素子および、該論理回路のクロック出力と同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第３クロックツリー生成手段と、該論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段とを有する。
【００２７】
さらに、好ましくは、本発明のクロックツリー合成装置におけるクロック同期素子はフリップフロップ素子またはラッチ素子である。
【００２８】
本発明のクロックツリー合成方法は、本発明の上記クロックツリー合成装置を用いて、複数のクロック信号源から複数のクロック同期素子までのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整するクロックツリー合成を行うクロックツリー合成方法であって、該複数のクロック信号源と、該複数のクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路と、該複数のクロック信号源からそれぞれクロック信号が供給される一または複数のクロック同期素子と、該論理回路からクロック信号が供給される一または複数のクロック同期素子とを有するクロック同期回路に対して、前記クロック同期関係解析手段によって、少なくとも二つのクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路を検出する論理回路検出ステップと、該論理回路の各入力端子にそれぞれ接続されたクロック信号源の数およびそのクロック名を検出するクロック信号源検出ステップと、該論理回路の出力からクロック信号が供給される一または複数のクロック同期素子を検出して第１素子リストを作成する第１素子リスト作成ステップとを行い、
該論理回路の各入力端子にそれぞれ接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子を検出して第２素子リストを作成する第２素子リスト作成ステップと、該第１素子リストのクロック同期素子と該第２素子リストのクロック同期素子間にデータパスが存在するかどうかを調べて、該データパスが存在する場合には該クロック信号源と該論理回路との各クロック出力に同期関係があると判定して当該クロック信号源のクロック名を同期クロックリストに追加し、該第２素子リストのクロック同期素子を同期クロックツリー対象リストに追加し、同期クロック数をカウントし、また、該データパスが存在しない場合には該クロック信号源と該論理回路との各クロック出力に同期関係がないと判定して当該クロック信号源のクロック名を非同期クロックリストに追加する同期関係判定処理ステップとを該クロック信号源の数だけ繰り返して行うものであり、そのことにより上記目的が達成される。
【００２９】
また、好ましくは、本発明のクロックツリー合成方法において、前記同期関係がない場合に、前記クロックツリー構成手段によって、前記第１素子リストを用いて、前記論理回路からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップと、前記非同期クロックリストおよび前記第２素子リストを用いて、前記論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップとをさらに有する。
【００３０】
さらに、好ましくは、本発明のクロックツリー合成方法において、前記同期関係がある場合に、前記クロックツリー構成手段によって、前記同期クロックリストおよび前記同期クロックツリー対象リストを用いて、前記論理回路の出力および該論理回路の各クロック出力に同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップと、前記非同期クロックリストおよび前記第２素子リストを用いて、該論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成するステップとをさらに有する。
【００３１】
さらに、好ましくは、本発明のクロックツリー合成方法において、前記クロック同期関係解析手段により得られた同期クロック数が「１」である場合に、前記論理回路のクロック出力と同期関係があるクロック信号源を基点として、該論理回路からクロック信号が供給される一または複数のクロック同期素子および、該同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子までのクロックラインを対象としてクロックツリーを生成する。
【００３２】
さらに、好ましくは、本発明のクロックツリー合成方法において、前記クロック同期関係解析手段により得られた同期クロック数が「２」以上である場合に、前記論理回路のクロック出力と同期関係がある複数のクロック信号源を同じクロック信号源であるとしてクロックツリーを生成する。
【００３３】
本発明の制御プログラムは、本発明の上記クロックツリー合成方法の各ステップをコンピュータに実行させるための制御プログラムであって、そのことにより上記目的が達成される。
【００３４】
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体であって、そのことにより上記目的が達成される。  上記構成により、以下に、本発明の作用について説明する。
【００３５】
本発明にあっては、複数のクロック信号源と、この複数のクロック信号源が各入力端子に接続された論理回路とのクロック出力について、クロック同期関係解析手段によって、同期関係を解析する。この解析結果に基づいて、クロックツリー構成手段によって、クロックツリーを生成する。
【００３６】
このように、解析結果としての同期関係の有無に応じてクロックツリーを生成するため、クロックツリーを再構成することなく、クロックスキューを低減することが可能となる。また、論理回路からクロックが供給されるクロック同期素子（フリップフロップ）が、どちらの信号源に同期して動作するかが分かるため、従来技術のようにクロックツリー構成に時間がかかったり、クロックバッファが必要以上に配置されたり、クロックの消費電力が大きくなったりする問題を防ぐことが可能となる。
【発明の効果】
【００３７】
以上により、本発明によれば、複数のクロック信号源と、それらのクロック信号源が各入力端子に接続された論理回路とのクロック出力について、クロック同期解析手段により同期関係を解析し、その解析結果からクロックツリー構成手段によりクロックツリーが生成されるため、クロックスキューが小さく、消費電力が少ないクロックツリーを簡単に生成してタイミング違反による回路誤動作を防ぐことができる。
【発明を実施するための最良の形態】
【００３８】
以下に、本発明のクロックツリー合成装置およびクロックツリー合成方法の実施形態について、図面を参照しながら詳細に説明する。
【００３９】
本実施形態のクロックツリー合成装置は、例えば図８に示すように、複数のクロック信号源ＣＬＫ１およびＣＬＬＫ２と、そのクロック信号源ＣＬＫ１およびＣＬＬＫ２がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路ＬＧ１と、クロック信号源ＣＬＫ１からクロック信号が供給されるクロック同期素子としてのフリップフロップＦＦＡ０〜ＦＦＡ３と、クロック信号源ＣＬＫ２からクロック信号が供給されるクロック同期素子としてのフリップフロップＦＦＣ０およびＦＦＣ７と、論理回路ＬＧ１の出力からクロック信号が供給されるクロック同期素子としてのフリップフロップＦＦＢ０およびＦＦＢ１とを含むクロック同期回路に対して、図７のクロックツリー手法の場合と同様に、クロック信号源から複数のフリップフロップまでのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整するためのものである。
【００４０】
図１は、本発明の実施形態に係るクロックツリー合成装置の要部構成例を示すブロック図である。
【００４１】
図１において、本実施形態のクロックツリー合成装置１００は、クロックの同期関係を解析するクロック同期関係解析手段１０と、クロックの同期関係解析結果からクロックツリーを構成するクロックツリー構成手段２０とを有し、クロック信号源から複数のクロック同期素子（例えばフリップフロップ）までのクロックライン上に、クロックバッファをツリー状に配置してクロックスキューを調整する。
【００４２】
クロック同期関係解析手段１０は、複数のクロック信号源と、この複数のクロック信号源が各入力端子に接続されてクロック信号を出力する論理回路と、この複数のクロック信号源からクロック信号が供給される一または複数のクロック同期素子と、この論理回路の出力からクロック信号が供給される一または複数のクロック同期素子とを有するクロック同期回路（半導体集積回路）に対して、複数のクロック信号源とこの論理回路との各クロック出力について、同期関係を解析する。
【００４３】
例えば、クロック同期関係解析手段１０は、少なくとも二つのクロック信号源がそれぞれ各入力端子にそれぞれ接続されてクロック信号を出力する論理回路を検出する論理回路検出手段１１と、この論理回路の各入力端子にそれぞれ接続されたクロック信号源の数およびそのクロック名を検出するクロック信号源検出手段１２と、この論理回路からクロック信号が供給される一または複数のクロック同期素子を検出して第１素子リストを作成する第１素子リスト作成手段１３と、この論理回路の各入力端子にそれぞれ接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子を検出して第２素子リストを作成する第２素子リスト作成手段１４と、この第１素子リストのクロック同期素子と第２素子リストのクロック同期素子間にデータパスが存在するかどうかを調べて、このデータパスが存在する場合にはクロック信号源と論理回路との各クロック出力に同期関係があると判定して当該クロック信号源のクロック名を同期クロックリストに追加し、第２素子リストのクロック同期素子を同期クロックツリー対象リストに追加し、同期クロック数をカウントし、また、このデータパスが存在しない場合には該クロック信号源と論理回路との各クロック出力に同期関係がないと判定してこのクロック信号源のクロック名を非同期クロックリストに追加する同期関係処理手段１５とを有している。これらの各手段の機能を、図示しないＣＰＵ（中央演算処理装置）が、コンピュータ読み取り可能な可読記録媒体としての記憶手段（ＩＣメモリや光ディスクなどのＲＯＭまたはＲＡＭなど）内の制御プログラムに基づいて実行するものである。
【００４４】
詳細には後述するが、これらの第２素子リスト作成手段１４および同期関係処理手段１５の各処理をクロック信号源の数だけ繰り返して行うようになっている。また、同期関係処理手段１５には、論理回路からクロック信号が供給される一または複数のクロック同期素子と、この論理回路の各入力端子に接続されたクロック信号源からクロック信号が供給される一または複数のクロック同期素子間のデータパスの有無を調べて、このデータパスが存在する場合にクロック信号源と該論理回路の各クロック出力に同期関係があり、このデータパスが存在しない場合に各クロック出力に同期関係がないと判定する同期判定手段１５ａを有している。
【００４５】
次に、クロックツリー構成手段２０は、クロック同期関係解析手段１０によるクロックの同期関係の解析結果（同期関係の有無）に基づいて、クロックツリーを構成する。
【００４６】
例えば、クロックツリー構成手段２０は、同期関係がない場合（同期クロック数が「０」の場合）に、論理回路からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第１クロックツリー生成手段２１と、この論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段２２とを有している。また、クロックツリー構成手段２０は、同期関係がある場合（同期クロック数が「０」ではない場合）に、この論理回路からクロック信号が供給される一または複数のクロック同期素子および、この論理回路のクロック出力と同期関係があるクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第３クロックツリー生成手段２３と、この論理回路のクロック出力と同期関係がないクロック信号源からクロック信号が供給される一または複数のクロック同期素子に対してクロックツリーを生成する第２クロックツリー生成手段とを有している。これらの各手段の機能を、図示しないＣＰＵ（中央演算処理装置）が、コンピュータ読み取り可能な可読記録媒体としての記憶手段（ＩＣメモリや光ディスクなどのＲＯＭまたはＲＡＭなど）内の制御プログラムに基づいて実行するものである。
【００４７】
以下に、図１のクロック同期関係解析手段１０の動作例について、図２を用いて説明する。
【００４８】
図２は、図１のクロック同期関係解析手段１０の動作例を説明するためのフローチャートである。なお、図２では、クロック同期関係解析手段１０は、ステップＳ１〜Ｓ８までの各処理を行うものとする。
【００４９】
図２に示すように、まず、ステップＳ１において、クロック同期関係解析手段１０は、少なくとも二つ以上のクロック信号源がそれぞれ各入力端子にそれぞれ入力されてクロック信号を出力する論理回路ＬＧを検出する。
【００５０】
次に、ステップＳ２において、クロック同期関係解析手段１０は、論理回路ＬＧの各入力端子に接続されているクロック信号源の数と、そのクロック名を検出する。
【００５１】
続いて、ステップＳ３において、クロック同期関係解析手段１０は、論理回路ＬＧの出力からクロック信号が供給されるフリップフロップを検出し、フリップフロップリストＦＬＩＳＴ［０］を作成する。
【００５２】
その後、ステップＳ４において、クロック同期関係解析手段１０は、論理回路ＬＧの各入力端子に接続されたクロック信号源ＣｌｋＮａｍｅ［ｉ（ｉは１以上信号源の数以下の整数）］からクロック信号が供給されるフリップフロップを検出し、フリップフロップリストＦＬＩＳＴ［ｉ］を作成する。
【００５３】
さらに、ステップＳ５において、クロック同期関係解析手段１０は、ステップＳ３で得られたフリップフロップリストＦＬＩＳＴ［０］に記載されたフリップフロップと、ステップＳ４で得られたフリップフロップリストＦＬＩＳＴ［ｉ］に記載されたフリップフロップ間のデータパスの有無を調べる。
【００５４】
ステップＳ５でデータパスが存在する場合（ｙｅｓ）には、ステップＳ６の処理に移行し、クロック同期関係解析手段１０は、クロック信号源と論理回路（ＬＧ）の出力とにクロックの同期関係があると判断して、当該ＣｌｋＮａｍｅ［ｉ］を同期関係があるクロック名を示す同期クロックリストに追加し、フリップフロップリストＦＬＩＳＴ［ｉ］に記載されたフリップフロップを同期クロックツリー対象リストに追加し、同期関係があるクロック数を示す同期クロック数をカウントする。同期クロックツリー対象リストには、初期値として論理回路ＬＧからクロック信号が供給される各フリップフロップが予め設定されている。
【００５５】
また、ステップＳ５でデータパスが存在しない場合（ｎｏ）には、ステップＳ７の処理に移行し、クロック同期関係解析手段１０は、クロック信号源と論理回路ＬＧの出力とにクロックの同期関係がないと判断して、当該ＣｌｋＮａｍｅ［ｉ］を同期関係がないクロック名を示す非同期クロックリストに追加する。
【００５６】
最後に、ステップＳ８において、クロック同期関係解析手段１０は、ステップＳ２で検出したクロック信号源の数だけ終了したかどうかを判定する。クロック信号源の数だけ終了していない場合（ｎｏ）、上記ステップＳ４〜Ｓ７を、そのクロック信号源の数だけ、繰り返して行う。また、ステップＳ８でクロック信号源の数だけ終了した場合（ｙｅｓ）には、このクロックの同期関係解析処理を終了する。
【００５７】
以上のようにして、このクロック同期関係解析手段１０によって、クロックの同期関係を解析して、フリップフロップリストＦＬＩＳＴ［０］、ＦＬＩＳＴ［ｉ］と、同期クロックリストと、同期クロックツリー対象リストと、非同期クロックリストとを作成し、同期クロック数を調べることができる。
【００５８】
図３は、図１のクロックツリー構成手段２０の動作例を説明するためのフローチャートである。なお、図３では、クロックツリー構成手段２０は、ステップＳ１１〜Ｓ１４までの各処理を行うものとする。
【００５９】
図３に示すように、まず、ステップＳ１１において、クロックツリー構成手段２０は、クロック同期関係解析手段１０によって得られた同期クロック数が「０」であるか否かを判断する。
【００６０】
ステップＳ１１で同期クロック数が「０」である場合（ｙｅｓ）とは、クロックの同期関係がない場合である。この場合には、ステップＳ１２の処理に進み、クロックツリー構成手段２０は、複数のクロック信号源が各入力端子に接続された論理回路ＬＧの出力からクロック信号が供給されるフリップフロップに対してクロックツリーを構成する。このとき、クロックツリーの構成対象となるフリップフロップは、上記クロック同期関係解析手段１０によって作成されるフリップフロップリストＦＬＩＳＴ［０］に記載されている。
【００６１】
その後、ステップＳ１４において、クロックツリー構成手段２０は、論理回路ＬＧの出力とクロックの同期関係がないクロック信号源からクロック信号が供給されるフリップフロップに対してクロックツリーを構成する。このとき、対象となるクロック信号源は、上記クロック同期関係解析手段１０によって作成される非同期クロックリストに記載されている。また、クロックツリーの構成対象となるフリップフロップは、クロック同期関係解析手段１０によって作成されるフリップフロップリストＦＬＩＳＴ［ｉ］に記載されている。
【００６２】
また、ステップＳ１１で同期クロック数が「０」でない場合（ｎｏ）とは、クロックに同期関係がある場合である。この場合には、ステップＳ１３の処理に進み、クロックツリー構成手段２０は、論理回路ＬＧの出力とクロックに同期関係があるクロック信号源からクロック信号が供給されるフリップフロップに対してクロックツリーを構成する。このとき、対象となるクロック信号源は、上記クロック同期関係解析手段１０によって作成される同期クロックリストに記載されている。また、クロックツリーの構成対象となるフリップフロップは、クロック同期関係解析手段１０によって作成される同期クロックツリー対象リストに記載されている。
【００６３】
例えば、クロック同期関係解析手段１０により得られた同期クロック数が「１」である場合には、クロックツリー構成手段２０は、論理回路ＬＧのクロック出力と同期関係があるクロック信号源を基点として、論理回路ＬＧからクロック信号が供給されるフリップフロップと、同期関係があるクロック信号源からクロック信号が供給されるフリップフロップまでのクロックラインを対象としてクロックツリーを構成する。
【００６４】
また、クロック同期関係解析手段１０により得られた同期クロック数が「２」以上である場合には、クロックツリー構成手段２０は、以下のようにしてクロックツリーを生成する。図８に示すように、二つのクロック信号源ＣＬＫ１およびＣＬＫ２が共に論理回路ＬＧ１と同期関係がある場合、同期クロック数は「２」となる。この場合、図４に示すように、二つのクロック信号源ＣＬＫ１およびＣＬＫ２が同じクロック信号源ＣＬＫＸであるとして、クロックツリーを生成する。なお、同期クロック数が「３」以上の場合でもこれと同様である。
【００６５】
その後、ステップＳ１４において、クロックツリー構成手段２０は、論理回路ＬＧの出力とクロックの同期関係がないクロック信号源からクロック信号が供給されるフリップフロップに対してクロックツリーを構成する。このとき、対象となるクロック信号源は、上記クロック同期関係解析手段１０によって作成される非同期クロックリストに記載されている。また、クロックツリーの構成対象となるフリップフロップは、クロック同期関係解析手段１０によって作成されるフリップフロップリストＦＬＩＳＴ［ｉ］に記載されている。
【００６６】
次に、本実施形態のクロックツリー合成装置を用いたクロックツリー合成方法を図５に示すクロック同期回路に適用した場合について説明する。
【００６７】
図５において、このクロック同期回路は、二つのクロック信号源ＣＬＫＡ、ＣＬＫＢと、二つのクロック信号源ＣＬＫＡ、ＣＬＫＢが各入力端子にそれぞれ接続されてクロック信号を出力する論理回路Ｇ０と、当該論理回路Ｇ０の出力からクロック信号が供給されるフリップフロップＦＢ０およびＦＢ１と、この論理回路Ｇ０の各入力端子に接続されているクロック信号源ＣＬＫＡからクロック信号が供給されるフリップフロップＦＡ０〜ＦＡ３と、クロック信号源ＣＬＫＡとは異なるクロック信号源ＣＬＫＢからクロック信号が供給されるフリップフロップＦＣ０〜ＦＣ７と、論理回路Ｇ０からクロック信号が供給されるフリップフロップＦＢ１のデータ出力端子とクロック信号源ＣＬＫＡからクロック信号が供給されるフリップフロップＦＡ３のデータ入力端子との間に配置される論理回路Ｇ１とによって構成されている。
【００６８】
まず、クロック同期関係解析手段１０の動作について説明する。
【００６９】
図２のステップＳ１において、クロック同期関係解析手段１０は、二つのクロック信号源ＣＬＫＡ、ＣＬＫＢが各入力端子に接続された論理回路Ｇ０を検出する。
【００７０】
次に、ステップＳ２において、クロック同期関係解析手段１０は、当該論理回路Ｇ０の各入力端子に接続されているクロック信号源ＣＬＫＡ、ＣＬＫＢの数が「２」であり、クロック名は「ＣＬＫＡ」および「ＣＬＫＢ」であることを検出する。
【００７１】
さらに、ステップＳ３において、クロック同期関係解析手段１０は、論理回路Ｇ０の出力からクロック信号が供給されるフリップフロップを検出し、フリップフロップリストＦＬＩＳＴ［０］を作成する。これにより、フリップフロップリストＦＬＩＳＴ［０］には、”ＦＢ０”および“ＦＢ１”が記載される。
【００７２】
さらに、ステップＳ４において、クロック同期関係解析手段１０は、論理回路Ｇ０の入力端子に接続されているクロック信号源ＣＬＫＡからクロック信号が供給されるフリップフロップを検出し、フリップフロップリストＦＬＩＳＴ［１］を作成する。これにより、フリップフロップリストＦＬＩＳＴ［１］には、“ＦＡ０”、“ＦＡ１”、“ＦＡ２”および“ＦＡ３”が記載される。
【００７３】
さらに、ステップＳ５において、クロック同期関係解析手段１０は、ステップＳ３で作成されたフリップフロップリストＦＬＩＳＴ［０］に記載されているフリップフロップと、ステップＳ４で作成されたフリップフロップリストＦＬＩＳＴ［１］に記載されているフリップフロップとの間のデータパスの有無を調べて、フリップフロップリストＦＬＩＳＴ［１］に記載されているフリップフロップＦＢ１のデータ出力から論理回路Ｇ１を経由してフリップフロップリストＦＬＩＳＴ［０］に記載されているフリップフロップＦＡ３のデータ入力へデータパスがあることを検出して、ステップＳ６の処理に進む。
【００７４】
このステップＳ６では、クロック同期関係解析手段１０は、同期クロックリストにクロック信号源ＣＬＫＡを追加し、同期クロックツリー対象リストにフリップフロップリストＦＬＩＳＴ［１］に記載されているフリップフロップを追加し、同期クロック数をカウントする。これにより、同期クロックリストにはクロック信号源ＣＬＫＡが記載される。また、同期クロックツリー対象リストは、初期値で設定されている“ＦＢ０”および“ＦＢ１”に、フリップフロップリストＦＬＩＳＴ［１］に記載されている“ＦＡ０”、“ＦＡ１”、“ＦＡ２”および“ＦＡ３”を追加したものとなる。さらに、同期クロック数は”１”となる。
【００７５】
また、ステップＳ４において、クロック同期関係解析手段１０は、論理回路Ｇ０の入力端子に接続されているもう一つのクロック信号源ＣＬＫＢからクロック信号が供給されるフリップフロップを検出し、フリップフロップリストＦＬＩＳＴ［２］を作成する。このとき、ＦＬＩＳＴ［２］には、“ＦＣ０”、“ＦＣ１”、“ＦＣ２”、“ＦＣ３”、“ＦＣ４”、“ＦＣ５”、“ＦＣ６”および“ＦＣ７”が記載される。
【００７６】
さらに、ステップＳ５において、クロック同期関係解析手段１０は、ステップＳ３で作成されたフリップフロップリストＦＬＩＳＴ［０］に記載されているフリップフロップと、ステップＳ４で作成されたフリップフロップリストＦＬＩＳＴ［２］に記載されているフリップフロップとの間のデータパスの有無を調べて、データパスが存在しないため、ステップＳ７の処理に進む。
【００７７】
このステップＳ７では、クロック同期関係解析手段１０は、非同期クロックリストにクロック信号源ＣＬＫＢを追加する。これにより、非同期クロックリストには“ＣＬＫＢ”が記載される。
【００７８】
次に、クロックツリー構成手段２０の動作について説明する。
【００７９】
図３のステップＳ１１において、クロックツリー構成手段２０は、同期クロック数を調べて”０”であるか否かを判定する。
【００８０】
上記クロック同期解析手段１０によって同期クロック数として“１”が得られているため、ステップＳ１３の処理に進み、クロックツリー構成手段２０は、同期クロックに対するクロックツリーを構成する。このときには、同期クロックリストに記載されているクロック信号源ＣＬＫＡを基点として、同期クロックツリー対象リストに記載されているフリップフロップＦＢ０、ＦＢ１、ＦＡ０、ＦＡ１、ＦＡ２、ＦＡ３を対象としてクロックツリーを構成する。
【００８１】
さらに、ステップＳ１４において、クロックツリー構成手段２０は、非同期クロックに対するクロックツリーを構成する。このときには、非同期クロックリストに記載されているクロック信号源ＣＬＫＢを基点として、フリップフロップリストＦＬＩＳＴ［２］に記載されたフリップフロップＦＣ０、ＦＣ１、ＦＣ２、ＦＣ３、ＦＣ４、ＦＣ５、ＦＣ６、ＦＣ７を対象としてクロックツリーを構成し、処理を終了する。
【００８２】
図６は、以上のようにして合成されたクロックツリーを示す回路図である。
【００８３】
図６に示すように、クロック信号源ＣＬＫＡからクロック信号が供給される複数のフリップフロップＦＡ０〜ＦＡ３と、クロック信号源ＣＬＫＢからクロック信号が供給される複数のフリップフロップＦＣ０〜ＦＣ７と、論理回路Ｇ０からクロック信号が供給される複数のフリップフロップＦＢ０およびＦＢ１と、フリップフロップＦＢ１のデータ出力端子とフリップフロップＦＡ３のデータ入力端子との間に論理回路Ｇ１を通るデータパスが設けられている回路に対して、同期関係があるクロック信号源ＣＬＫＡからフリップフロップＦＡ０〜ＦＡ３までのクロックラインと論理回路Ｇ０からフリップフロップＦＢ０およびＦＢ１までのクロックライン上にクロックバッファＣＤＡ０〜ＣＤＡ１０がツリー状に配置されている。
【００８４】
また、、同期関係がないクロック信号源ＣＬＫＢからフリップフロップＦＣ０〜ＦＣ７までのクロックライン上にクロックバッファＣＤＢ０〜ＣＤＡ１４がツリー状に配置されている。
【００８５】
この構成では、フリップフロップＦＡ０はクロック信号源ＣＬＫＡからバッファＣＤＡ０、ＣＤＡ２、ＣＤＡ５を通してクロック信号が供給され、フリップフロップＦＡ１はクロック信号源ＣＬＫＡからバッファＣＤＡ０、ＣＤＡ２、ＣＤＡ６を通してクロック信号が供給され、フリップフロップＦＡ２はクロック信号源ＣＬＫＡからバッファＣＤＡ０、ＣＤＡ３、ＣＤＡ７を通してクロック信号が供給され、フリップフロップＦＡ３はクロック信号源ＣＬＫＡからバッファＣＤＡ０、ＣＤＡ３、ＣＤＡ８を通してクロック信号が供給され、フリップフロップＦＢ０は論理回路Ｇ０からバッファＣＤＡ１、ＣＤＡ４、ＣＤＡ９を通してクロック信号が供給され、フリップフロップＦＢ１は論理回路Ｇ０からバッファＣＤＡ１、ＣＤＡ４、ＣＤＡ１０を通してクロック信号が供給される。各フリップフロップＦＡ０〜ＦＡ３、ＦＢ０およびＦＢ１はそれぞれ、クロック信号源ＣＬＫＡおよび論理回路Ｇ０から３つのバッファを通してクロック信号が供給されるため、クロックスキューを低減してほぼ同一のタイミングでクロック信号を供給することができる。
【００８６】
また、フリップフロップＦＣ０はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ１、ＣＤＢ３、ＣＤＢ７を通してクロック信号が供給され、フリップフロップＦＣ１はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ１、ＣＤＢ３、ＣＤｂ８を通してクロック信号が供給され、フリップフロップＦＣ２はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ１、ＣＤＢ４、ＣＤＢ９を通してクロック信号が供給され、フリップフロップＦＣ３はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ１、ＣＤＢ４、ＣＤＢ１０を通してクロック信号が供給される。また、フリップフロップＦＣ４はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ２、ＣＤＢ５、ＣＤＢ１１を通してクロック信号が供給され、フリップフロップＦＣ５はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ２、ＣＤＢ５、ＣＤＢ１２を通してクロック信号が供給され、フリップフロップＦＣ６はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ２、ＣＤＢ６、ＣＤＢ１３を通してクロック信号が供給され、フリップフロップＦＣ７はクロック信号源ＣＬＫＢからバッファＣＤＢ０、ＣＤＢ２、ＣＤＢ６、ＣＤＢ１４を通してクロック信号が供給される。各フリップフロップＣＤＢ０〜ＣＤＢ７はそれぞれ、クロック信号源ＣＬＫＢから４つのバッファを通してクロック信号が供給されるため、クロックスキューを低減してほぼ同一のタイミングでクロック信号を供給することができる。
【００８７】
以上により、本実施形態によれば、複数のクロック信号源と、この複数のクロック信号源が各入力端子に接続された論理回路との各クロック出力について、クロック同期関係解析手段１０によって、同期関係を解析し、この解析結果に基づいて、クロックツリー構成手段２０によって、クロックツリーを生成するため、クロックツリーを再構成することなく、クロックスキューを低減することができる。また、論理回路からクロックが供給されるクロック同期素子（フリップフロップ）が、どちらの信号源に同期して動作するかが分かるため、クロックスキューが小さく、消費電力が少ないクロックツリーを簡単に構成してタイミング違反による回路誤動作を防ぐことができる。
【００８８】
なお、以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【００８９】
本発明は、半導体集積回路に対してクロックスキューを調整するために用いられるクロックツリー合成装置およびこれを用いたクロックツリー合成方法に関し、特に、複数のクロック信号源から供給されるクロック信号に同期して動作するように構成された半導体集積回路のクロックスキューの調整を行うクロックツリー合成装置、これを用いたクロックツリー合成方法、これに用いる制御プログラムおよび可読記録媒体の分野において、複数のクロック信号源と、この複数のクロック信号源が各入力端子に接続されてクロック信号を出力する論理回路と、この複数のクロック信号源からクロック信号が供給されるクロック同期素子と、この論理回路の出力からクロック信号が供給されるクロック同期素子とを有するクロック同期回路（半導体集積回路）に対して、当該論理回路の出力とその論理回路の入力端子に接続されるクロック信号源とのクロック同期関係をクロック同期解析手段により解析し、その解析結果からクロックツリー構成手段によりクロックツリーが構成されるため、クロックスキューが小さく、消費電力が少ないクロックツリーを簡単に構成してタイミング違反による回路誤動作を防ぐことができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施形態に係るクロックツリー合成装置の要部構成例を示すブロック図である。
【図２】図１のクロック同期関係解析手段の動作例を説明するためのフローチャートである。
【図３】図１のクロックツリー構成手段の動作例を説明するためのフローチャートである。
【図４】本発明の実施形態に係るクロックツリー合成方法において、図１のクロックツリー構成手段の動作を説明するための回路図である。
【図５】本発明の実施形態に係るクロックツリー合成方法の動作例を説明するための回路図である。
【図６】本発明の実施形態に係るクロックツリー合成方法により合成されたクロックツリーを示す回路図である
【図７】従来のクロックツリー手法について説明するための回路図である。
【図８】従来のクロックツリー合成方法の課題について説明するための回路図である。
【符号の説明】
【００９１】
１０  クロック同期関係解析手段
１１  論理回路検出手段
１２  クロック信号源検出手段
１３  第１素子リスト作成手段
１４  第２素子リスト作成手段
１５  同期関係処理手段
１５ａ  同期判定手段
２０  クロックツリー構成手段
２１  第１クロックツリー生成手段
２２  第２クロックツリー生成手段
２３  第３クロックツリー生成手段
１００  クロックツリー合成装置
ＣＢ０〜ＣＢ１４、ＣＤＡ０〜ＣＤＡ１０、ＣＤＢ０〜ＣＤＢ１４  クロックバッファ
ＬＧ１、Ｇ０、Ｇ１  論理回路
ＦＦ０〜ＦＦ７、ＦＦＡ０〜ＦＦＡ３、ＦＦＢ０〜ＦＦＢ１、ＦＦＣ０〜ＦＦＣ７、ＦＡ０〜ＦＡ３、ＦＢ０〜ＦＢ１、ＦＣ０〜ＦＣ７  フリップフロップ
ＣＬＫ、ＣＬＫ１、ＣＬＫ２、ＣＬＫＸ、ＣＬＫＡ、ＣＬＫＢ  クロック信号源
【図１】
2007122517.tif 000003
【図２】
2007122517.tif 000004
【図３】
2007122517.tif 000005
【図４】
2007122517.tif 000006
【図５】
2007122517.tif 000007
【図６】
2007122517.tif 000008
【図７】
2007122517.tif 000009
【図８】
2007122517.tif 000010