(57)【要約】【課題】クロックゲートにおけるタイミング制約を満足すると同時に、所望のクロックツリー全体を合成することができる論理回路の設計方法および設計支援装置を提供する。【解決手段】第１の複数のフリップフロップとクロックゲートとの間に第１のタイミング制約を課して、第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置を実施し、実施した第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置に基づいたタイミング解析を行い、クロックツリーに含まれる、クロックゲートから第２の複数のフリップフロップの間のサブツリーの部分に許容される最大遅延時間を把握し、把握した最大遅延時間を制約条件として、サブツリーの構築を行い、その後、構築したサブツリーを維持したままクロックツリーの構築を行う。【選択図】図２
2008040735.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数のフリップフロップと、該第１の複数のフリップフロップの出力信号に応じてイネーブル信号を生成するイネーブル論理回路と、前記イネーブル信号に応じてクロック信号の通過／停止を制御するクロックゲートと、第２の複数のフリップフロップと、前記第１の複数のフリップフロップに前記クロック信号を供給するとともに、前記クロックゲートを介して、前記第２の複数のフリップフロップに前記クロック信号を供給するクロックツリーとを備える論理回路の設計方法において、
前記第１の複数のフリップフロップのクロック入力端子から前記イネーブル論理回路を経由し、前記クロックゲートのイネーブル入力端子までの経路に対して、前記クロック信号の１周期の時間よりも短い時間である第１のタイミング制約を課して、前記第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置を実施し、
前記実施した第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置に基づいたタイミング解析を行い、前記クロックツリーに含まれ、前記クロックゲートから前記第２の複数のフリップフロップまでのクロック信号の経路であるサブツリーの部分に許容される最大遅延時間を把握し、
前記把握した最大遅延時間を第２のタイミング制約として、前記サブツリーの構築を行い、
その後、前記構築したサブツリーの構造を維持したままの状態で前記論理回路全体のクロックツリーの構築を行うことを特徴とする論理回路の設計方法。
【請求項２】
前記タイミング解析において前記クロックゲートにおけるタイミングスラック値を求め、その値を、前記最大遅延時間として把握することを特徴とする請求項１記載の論理回路の設計方法。
【請求項３】
前記サブツリーの構築を行うとともに該構築したサブツリーのクロック配線を行い、その後、前記クロックツリーの構築を行うことを特徴とする請求項１または２記載の論理回路の設計方法。
【請求項４】
前記クロックゲートが、前記クロック信号に応じて前記イネーブル信号を保持するラッチと、前記クロック信号と前記ラッチの出力信号との論理をとってゲーティッドクロックとして出力する論理ゲートとで構成されることを特徴とする請求項１ないし３のいずれかに記載の論理回路の設計方法。
【請求項５】
第１の複数のフリップフロップと、該第１の複数のフリップフロップの出力信号に応じてイネーブル信号を生成するイネーブル論理回路と、前記イネーブル信号に応じてクロック信号の通過／停止を制御するクロックゲートと、第２の複数のフリップフロップと、前記第１の複数のフリップフロップに前記クロック信号を供給するとともに、前記クロックゲートを介して、前記第２の複数のフリップフロップに前記クロック信号を供給するクロックツリーとを備える論理回路の設計支援装置であって、
前記第１の複数のフリップフロップのクロック入力端子から前記イネーブル論理回路を経由し、前記クロックゲートのイネーブル入力端子までの経路に対し、前記クロック信号の１周期の時間よりも短い時間である第１のタイミング制約を課して、前記第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置を実施する配置手段と、
前記実施した第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置に基づいたタイミング解析を行い、前記クロックツリーに含まれ、前記クロックゲートから前記第２の複数のフリップフロップまでのクロック信号の経路であるサブツリーの部分に許容される最大遅延時間を把握する最大遅延時間把握手段と、
前記把握した最大遅延時間を第２のタイミング制約として、前記サブツリーの構築を行うサブツリー構築手段と、
前記構築したサブツリーの構造を維持したままの状態で前記論理回路全体のクロックツリーの構築を行うクロックツリー構築手段とを有することを特徴とする設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックゲートを介して複数のフリップフロップ（以下、ＦＦとも記述する）にクロック信号を供給するクロックツリーを備える論理回路の設計方法とその設計支援装置に関するものである。
【背景技術】
【０００２】
従来、半導体集積回路の消費電力を削減するための技術として、クロックゲートを用いてクロック信号を停止するゲーティッドクロックという手法が知られている。この手法は、半導体チップ内の、ある機能ブロックが使用されていない時に、その機能ブロックに供給されるクロック信号をクロックゲートを用いて停止させることによって、その機能ブロックの消費電力を削減する技術である。
【０００３】
クロック信号を停止させるためには、クロックゲートとして、例えばＡＮＤゲートをクロック信号の経路（クロックライン）に挿入し、その入力端子にクロック信号とクロック信号の供給／停止を制御するイネーブル信号を入力する。
【０００４】
イネーブル信号が“１”の場合、クロック信号は、そのままＡＮＤゲートを通過し、上記機能ブロックに含まれる複数のＦＦ（以下、ＦＦ群という）に供給される。一方、イネーブル信号が“０”の場合、クロック信号はＡＮＤゲートによって遮断され、ＦＦ群には供給されない。そのため、その機能ブロックに含まれる全てのＦＦは動作しない。その結果、その機能ブロックの消費電力を低減することができる。
【０００５】
従来は、半導体集積回路にゲーティッドクロックを適用する場合、設計者が、必要な箇所に１つ１つのクロックゲートを手動で挿入することによって、各々の機能ブロックにおける消費電力の制御が行われていた。
【０００６】
しかし、近年では、論理合成ツールが使用されている。このため、論理合成段階でのＲＴＬ（レジスタ・トランスファ・レベル）の記述において、各々のＦＦで状態維持（前のクロック周期におけるデータを保持）の条件がある場合、図６に示すように、ＦＦ群３０の手前のデータ信号経路（データライン）にマルチプレクサ３２を入れるのではなく、ＦＦ群３０のクロック経路の手前にクロックゲート３４を自動挿入する合成が行われる。
【０００７】
論理合成ツールでは、上記のような箇所にクロックゲートが自動挿入される。このため、回路中に大量のクロックゲートが存在する場合がある。クロックゲートは、例えば図７に示す論理回路４０のように挿入される。
【０００８】
レイアウト設計において、クロックツリー合成（ＣＴＳ）前のタイミング最適化の際には、ＦＦ群間の通常の（クロックゲートを含まない）データ経路と同様に、第１ＦＦ群４２からイネーブル論理回路４８を経てクロックゲート５０に入力されるイネーブル信号を生成するデータ経路も最適化される。この際、通常は全てのＦＦ間のデータ経路が１クロック周期のタイミング制約でタイミング解析、最適化される。
【０００９】
その後のクロックツリー合成では、図７中、ルートとなるＡ点を基準として、第１、第２および第３ＦＦ群４２、４４、４６のクロック入力端子Ｂ，Ｅ，Ｆ点までのクロック信号ＣＬＯＣＫの到達遅延時間をほぼ揃える（一致させる）ようにクロックツリーが合成される。
【００１０】
クロックツリー合成の際には、クロックゲート５０は透過して合成される。すなわち、イネーブル信号がアクティブ状態であり、クロックゲート５０が単なるバッファと同じ状態として扱われる。
【００１１】
ここで、クロックゲートがＡＮＤゲートの場合、イネーブル信号の変化タイミングは、クロック信号がローレベルの期間でなければならない。つまり、イネーブル信号は、図３に示すように、クロック信号の立ち上がりエッジよりも前の時点で確定している必要がある。クロック信号がハイレベルの期間にイネーブル信号が変化すると、パルス幅の短いクロック信号のグリッチが発生し、これが誤動作の原因となる。
【００１２】
一方、前述の通り、第１ＦＦ群４２からイネーブル論理回路４８およびクロックゲート５０を経て第２ＦＦ群４４までの経路を含む、全てのＦＦ間のデータ経路は、１クロック周期のタイミング制約で論理合成やレイアウトでのタイミング最適化が行われる。このために、第１ＦＦ群４２からイネーブル論理回路４８を経てクロックゲート５０にいたる経路についても、イネーブル信号の到達時間が１クロック周期の時間を超えないようにし、タイミング最適化が行われる。
【００１３】
しかし、このようなタイミング最適化を行っても、実際には、誤動作が発生する可能性が高い。前述のように、Ａ点からＢ，Ｅ，Ｆ点までの遅延時間がそろうようにクロックツリーが合成されるため、Ｃ点へのクロック信号の到達は、Ｂ点へのクロック信号の到達よりも早くなる。しかも、Ｃ点へのクロック信号の到達がＢ点へのクロック信号の到達に比較してどの程度早くなるかは、クロックツリー合成の結果次第である。従って、第１ＦＦ群４２からクロックゲート５０までの経路のイネーブル信号の到達時間が１クロック周期の時間未満であったとしても、タイミング違反が発生し、誤動作が起きる場合がある。
【００１４】
このタイミング違反は、人手でクロックゲート５０を挿入した場合であれば、その影響範囲は限定されているので修正可能ではある。
【００１５】
しかし、論理合成ツールが自動で大量のクロックゲート５０を挿入した場合には、セットアップ時間違反が大量に発生する可能性があり、この修正を人手で行うことは容易なことではない。イネーブル信号生成の経路の到着時間がどうなっているか、また、クロックツリーがどのように合成されたかという偶然的な要因次第で、このタイミング違反の発生状況が変わり、設計収束の予測性がないことも問題となる。
【００１６】
第１ＦＦ群４２からクロックゲート５０までの経路において、イネーブル信号の到達時間が１クロック周期のタイミング制約で最適化してもタイミング違反を生じる問題の解決策の１つとして、例えば特許文献１などが既に提案されている。
【００１７】
同文献は、タイミング制約を満たすように論理合成、配置処理を行い、その後、クロック配線処理（クロックツリー合成）を行い、クロック配線処理された後のイネーブル論理からタイミング制約値を計算する。その結果、計算したタイミング制約が満たされていない場合、その計算したタイミング制約を用いて再度論理合成、配置処理からやり直すものである。
【００１８】
しかし、特許文献１の手法では、クロックツリー合成の結果次第では、タイミング収束不可能なタイミング制約になる可能性もある。従って、特許文献１の手法では万全ではない。
【００１９】
【特許文献１】特許第３６６０２４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
本発明の目的は、前記従来技術に基づく問題点を解消し、クロックゲートを介して複数のフリップフロップにクロック信号を供給するクロックツリーを備える論理回路を設計するに際し、クロックゲートにおけるタイミング制約を満足すると同時に、全体のクロックツリーを合成することができる論理回路の設計方法および設計支援装置を提供することにある。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明は、第１の複数のフリップフロップと、該第１の複数のフリップフロップの出力信号に応じてイネーブル信号を生成するイネーブル論理回路と、前記イネーブル信号に応じてクロック信号の通過／停止を制御するクロックゲートと、第２の複数のフリップフロップと、前記第１の複数のフリップフロップに前記クロック信号を供給するとともに、前記クロックゲートを介して、前記第２の複数のフリップフロップに前記クロック信号を供給するクロックツリーとを備える論理回路の設計方法において、
前記第１の複数のフリップフロップのクロック入力端子から前記イネーブル論理回路を経由し、前記クロックゲートのイネーブル入力端子までの経路に対して、前記クロック信号の１周期の時間よりも短い時間である第１のタイミング制約を課して、前記第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置を実施し、
前記実施した第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置に基づいたタイミング解析を行い、前記クロックツリーに含まれ、前記クロックゲートから前記第２の複数のフリップフロップまでのクロック信号の経路であるサブツリーの部分に許容される最大遅延時間を把握し、
前記把握した最大遅延時間を第２のタイミング制約として、前記サブツリーの構築を行い、
その後、前記構築したサブツリーの構造を維持したままの状態で前記論理回路全体のクロックツリーの構築を行うことを特徴とする論理回路の設計方法を提供するものである。
【００２２】
ここで、前記タイミング解析において前記クロックゲートにおけるタイミングスラック値を求め、その値を、前記最大遅延時間として把握することが好ましい。
【００２３】
また、前記サブツリーの構築を行うとともに該構築したサブツリーのクロック配線を行い、その後、前記クロックツリーの構築を行うことが好ましい。
【００２４】
また、前記クロックゲートが、前記クロック信号に応じて前記イネーブル信号を保持するラッチと、前記クロック信号と前記ラッチの出力信号との論理をとってゲーティッドクロックとして出力する論理ゲートとで構成されることが好ましい。
【００２５】
また、本発明は、第１の複数のフリップフロップと、該第１の複数のフリップフロップの出力信号に応じてイネーブル信号を生成するイネーブル論理回路と、前記イネーブル信号に応じてクロック信号の通過／停止を制御するクロックゲートと、第２の複数のフリップフロップと、前記第１の複数のフリップフロップに前記クロック信号を供給するとともに、前記クロックゲートを介して、前記第２の複数のフリップフロップに前記クロック信号を供給するクロックツリーとを備える論理回路の設計支援装置であって、
前記第１の複数のフリップフロップのクロック入力端子から前記イネーブル論理回路を経由し、前記クロックゲートのイネーブル入力端子までの経路に対し、前記クロック信号の１周期の時間よりも短い時間である第１のタイミング制約を課して、前記第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置を実施する配置手段と、
前記実施した第１の複数のフリップフロップ、イネーブル論理回路、および、クロックゲートの配置に基づいたタイミング解析を行い、前記クロックツリーに含まれ、前記クロックゲートから前記第２の複数のフリップフロップまでのクロック信号の経路であるサブツリーの部分に許容される最大遅延時間を把握する最大遅延時間把握手段と、
前記把握した最大遅延時間を第２のタイミング制約として、前記サブツリーの構築を行うサブツリー構築手段と、
前記構築したサブツリーの構造を維持したままの状態で前記論理回路全体のクロックツリーの構築を行うクロックツリー構築手段とを有することを特徴とする設計支援装置を提供する。
【発明の効果】
【００２６】
本発明では、通常よりも厳しいタイミング制約を課してイネーブル信号経路の配置を行い、許容される最大遅延時間を把握してサブツリーを構築し、その後、構築したサブツリーを維持したままの状態で論理回路全体のクロックツリーの構築を行う。従って、本発明によれば、クロックゲートにおけるタイミング制約を満足すると同時に、全体のクロックツリーを構築することができる。
【発明を実施するための最良の形態】
【００２７】
以下に、添付の図面に示す好適実施形態に基づいて、本発明の論理回路の設計方法および設計支援装置を詳細に説明する。
【００２８】
図１は、本発明の論理回路の設計支援装置の構成を表す一実施形態のブロック図である。同図に示す設計支援装置１０は、クロックゲートを介して複数のＦＦにクロック信号を供給するクロックツリーを備える論理回路の設計を支援するものである。
【００２９】
本実施形態の設計支援装置１０の説明を行う前に、図７に示す論理回路４０について説明する。
【００３０】
図７に示す論理回路４０は、クロックゲートを介して複数のＦＦにクロック信号を供給するクロックツリーを備えるもので、第１、第２および第３ＦＦ群４２、４４、４６と、イネーブル論理回路４８と、クロックゲート５０とによって構成されている。
【００３１】
第１および第３ＦＦ群４２、４６のクロック入力端子ＣＫとクロックゲート５０のクロック入力端子ＣＬＫにはクロック信号ＣＬＯＣＫが入力される。第１ＦＦ群４２の出力信号Ｑはイネーブル論理回路４８に入力され、イネーブル論理回路４８の出力信号はクロックゲート５０のイネーブル入力端子ＥＮＢに入力される。クロックゲート５０の出力信号ＯＵＴは第２ＦＦ群４４のクロック入力端子に入力される。
【００３２】
ここで、イネーブル論理回路４８は、第１ＦＦ群４２の出力信号Ｑに応じてイネーブル信号を生成する。クロックゲート５０は、本実施形態の場合、アクティブ状態であるハイレベルのイネーブル信号が入力されたときのみ、クロック信号ＣＬＯＣＫを通過させて第２ＦＦ群４４に供給する。クロックゲート５０は、非アクティブ状態のイネーブル信号が入力されると、クロック信号ＣＬＯＣＫを停止する。
【００３３】
論理回路４０は、クロック信号ＣＬＯＣＫに同期して動作する同期回路である。従って、各ＦＦおよびクロックゲート５０にクロック信号ＣＬＯＣＫを供給するクロックツリーが設けられる。
【００３４】
本実施形態では、クロック信号ＣＬＯＣＫが供給されるＡ点から第１ＦＦ群４２のクロック入力端子Ｂ点までの部分と、Ａ点からクロックゲート５０を介して第２ＦＦ群４４のクロック入力端子Ｅ点までの部分と、Ａ点から第３ＦＦ群４６のクロック入力端子Ｆ点までの部分とを含めて論理回路４０全体のクロックツリーもしくは単にクロックツリーと呼ぶ。そして、このクロックツリーの、クロックゲート５０のクロック入力端子Ｃ点から第２ＦＦ群４４のクロック入力端子Ｅ点までの部分をサブツリーと呼ぶ。
【００３５】
なお、第３ＦＦ群４６は、クロックゲート５０とは関係のないＦＦの一例として示してある。また、説明を容易に行う目的から、背景技術で説明した図７の論理回路４０を例に挙げて以下の説明を行うが、本発明が適用される論理回路は、図７に示すものに限定されない。
【００３６】
次に、本実施形態の設計支援装置１０について説明する。
【００３７】
図１に示すように、本実施形態の設計支援装置１０は、配置手段１２と、最大遅延時間把握手段１４と、サブツリー構築手段１６と、クロックツリー構築手段１８とによって構成されている。
【００３８】
配置手段１２は、図７に示す論理回路４０のネットリスト情報と通常のタイミング制約とから、第１、第２および第３ＦＦ群４２、４４、４６、イネーブル論理回路４８、および、クロックゲート５０を含む、各構成要素の配置を実施する。この時、第１ＦＦ群４２からクロックゲート５０までのイネーブル信号の経路を自動認識し、このイネーブル信号の経路に、通常のタイミング制約に比較して厳しい、第１のタイミング制約を課して配置を行う。
【００３９】
ここで、論理回路４０のネットリスト情報は、論理回路４０に含まれる、上記第１、第２および第３ＦＦ群４２、４４、４６、イネーブル論理回路４８、および、クロックゲート５０などの各構成要素の情報と、これらの構成要素の間の接続情報などを含む。
【００４０】
通常のタイミング制約は、各々のＦＦ間のデータ経路に課せられるタイミング制約である。論理回路４０の場合、通常のタイミング制約は、クロック信号ＣＬＯＣＫの１周期（１クロック周期）である。すなわち、前段のＦＦからクロック信号ＣＬＯＣＫの１つのエッジに同期して出力された出力信号は、その次段のＦＦに、クロック信号ＣＬＯＣＫの次のエッジまでに入力される必要がある。
【００４１】
また、第１のタイミング制約は、クロック信号ＣＬＯＣＫの１周期よりも短い時間の制約条件である。従って、第１ＦＦ群４２からクロックゲート５０までは、クロック信号ＣＬＯＣＫの１クロックよりも短い時間でデータが伝播される必要がある。
【００４２】
第１のタイミング制約は、論理回路毎に（論理回路の動作周波数に応じて）適宜設定されるべきものである。例えば、論理回路４０のクロック信号ＣＬＯＣＫの動作周波数が１００ＭＨｚの場合、その１周期は１０ｎｓである。この場合、制約条件として、クロック信号ＣＬＯＣＫにかけ算される係数として０．８が設定されると、第１のタイミング制約は、１周期の１０ｎｓよりも厳しい（短い）８ｎｓとなる。
【００４３】
配置手段１２は、第１、第２および第３ＦＦ群４２、４４、４６、イネーブル論理回路４８、および、クロックゲート５０などの各構成要素の配置を決定する。このとき、第１ＦＦ群４２からクロックゲート５０までの間のイネーブル信号の経路（厳密には、第１ＦＦ群４２のそれぞれのＦＦのクロック入力端子から、イネーブル論理回路４８を経由し、クロックゲート５０のイネーブル入力端子までの経路）については、上記第１のタイミング制約に従って、クロック信号ＣＬＯＣＫの１周期である１０ｎｓよりも短い８ｎｓで接続できるように、タイミングドリブン配置、さらにはタイミング最適化を行う。
【００４４】
また、第１、第２および第３ＦＦ群４２、４４、４６、イネーブル論理回路４８、および、クロックゲート５０などの各構成要素の配置は、特許文献１の手法を適用し、タイミング制約を更新しながらタイミング最適化を行うことも可能である。
【００４５】
続いて、最大遅延時間把握手段１４は、配置手段１２で実施した第１ＦＦ群４２、イネーブル論理回路４８、および、クロックゲート５０の各構成要素の配置（配置情報）に基づいたタイミング解析を行う。そして、そのタイミング解析結果に基づいて、クロックツリーに含まれる、クロックゲート５０から第２ＦＦ群４４までの間（厳密には、クロックゲート５０のクロック入力端子から、第２ＦＦ群４４のクロック入力端子までの間）のサブツリーの部分に許容される最大遅延時間を把握する。
【００４６】
ここでは、前述の配置情報に基づいて第１ＦＦ群４２とイネーブル論理回路４８との間の遅延時間を求める。そして、制約条件を通常のタイミング制約に戻して、クロックゲート５０におけるタイミングスラック値（余裕度）を求める。サブツリーの部分に許容される最大遅延時間は、クロックゲート５０におけるタイミングスラック値以下の値である。
【００４７】
前述のように、配置手段１２では、例えばクロック信号ＣＬＯＣＫの１周期が１０ｎｓの場合に、第１ＦＦ群４２からクロックゲート５０までの間の経路に、１０ｎｓよりも短い、例えば８ｎｓの第１のタイミング制約を課して、各構成要素の配置が実施されている。従って、第１ＦＦ群４２とクロックゲート５０との間の経路の遅延時間が８ｎｓ以下となるように、各構成要素が配置されている。
【００４８】
従って、制約条件を通常のタイミング制約である１０ｎｓに戻してタイミング解析を行い、上記スラック値を求めると、クロックゲート５０のタイミングスラック値は２ｎｓ以上になる。
【００４９】
続いて、サブツリー構築手段１６は、最大遅延時間把握手段１４で把握した最大遅延時間（最大遅延時間情報）を制約条件（第２のタイミング制約）として、サブツリーの構築を行う。
【００５０】
サブツリー構築手段１６は、前述のように、例えばクロックゲート５０のタイミングスラック値が２ｎｓの場合、２ｎｓを制約条件（上限値）として、クロックゲート５０から第２ＦＦ群４４までの間が、２ｎｓ以内で接続できるようにサブツリーの構成を決定し、サブツリー情報を出力する。
【００５１】
最後に、クロックツリー構築手段１８は、サブツリー構築手段１６によるサブツリーの構築後、構築したサブツリーの構成を維持したまま、論理回路４０全体のクロックツリーの構築を行い、クロックツリー情報を出力する。
【００５２】
この場合、既に述べたように、図７中、ルートとなるＡ点を基準として、第１、第２および第３ＦＦ群４２、４４、４６のクロック入力端子までのクロック信号ＣＬＯＣＫの到達遅延時間をほぼ揃えるようにクロックツリーが合成される。
【００５３】
次に、図２に示すフローチャートを参照しながら、図１に示す論理回路の設計支援装置１０の動作とともに、本実施形態の論理回路の設計方法についてさらに具体的に説明する。
【００５４】
まず、配置手段１２において、論理回路のネットリストと、通常のタイミング制約（各々のＦＦ間のデータ経路の遅延時間が１クロック周期の制約条件）を読み込む（ステップＳ１）。本実施形態では、通常のタイミング制約は前述の１０ｎｓであるとする。
【００５５】
ネットリストから、第１ＦＦ群４２からクロックゲート５０までの間のイネーブル信号の経路を自動認識し、そのイネーブル信号の経路に対して、通常のタイミング制約よりも厳しい第１のタイミング制約を課す（ステップＳ２）。本実施形態では、第１のタイミング制約は前述の８ｎｓであるとする。なお、イネーブル信号の経路以外のデータ経路には、通常のタイミング制約が設定される。
【００５６】
ステップＳ２で設定されたタイミング制約（通常のタイミング制約および第１のタイミング制約）に基づいて、各構成素子のタイミングドリブン配置、さらにはタイミング最適化を行う（ステップＳ３）。
【００５７】
続いて、最大遅延時間把握手段１４において、イネーブル信号の経路のタイミング制約を通常のタイミング制約、すなわち、１クロック周期の１０ｎｓに戻してタイミング解析を行う。すなわち、まず、イネーブル信号の経路（図７のＢ点〜Ｄ点）の遅延時間を求める。実際には、第１のＦＦ群４２に含まれる複数のＦＦのそれぞれを介した経路ごとに遅延時間が異なるので、その中の最大の遅延時間を求める。そして、通常のタイミング制約（１０ｎｓ）から、この遅延時間（最大遅延時間）、および、クロックゲート５０のセットアップ時間を減じて、クロックゲート５０におけるタイミングスラック値（余裕時間）を算出する（ステップＳ４）。従って、イネーブル信号経路の配置において課す第１のタイミング制約は、通常のタイミング制約（クロック信号の１周期の時間）からクロックゲート５０のセットアップ時間を減じた値よりも、さらに短い値にすることが好ましい。これによって、クロックゲート５０におけるタイミングスラック値として正の値を得ることができる。
【００５８】
ここで、クロックゲート５０として、例えばＡＮＤゲートのような単純な論理ゲートを利用する場合、セットアップ時間を無視することも可能である。一方、例えば、後述するようなラッチと論理ゲートとを組み合わせてクロックゲート５０を構成した場合には、ラッチ動作に必要なセットアップ時間を考慮する必要がある。
【００５９】
ここで、クロックゲート５０に十分なタイミングスラックがあるかどうかを判断する（ステップＳ５）。この判断は、設計支援装置１０に、タイミングスラック値のしきい値を設定しておき、それと比較することによって自動的に行うこともできるが、設計者が、タイミングスラック値に基づいて自己判断し、その後の指示を設計支援装置１０に与えることもできる。
【００６０】
その結果、十分なタイミングスラック値がないと判断した場合（ステップＳ５で‘Ｎｏ’）、ＲＴＬを修正して再度論理合成を行う（ネットリストを作り直す）か、もしくは、第１のタイミング制約を厳しくし、ステップＳ１へ戻ってやり直す（ステップＳ６）。
【００６１】
一方、十分なタイミングスラック値があると判断した場合（ステップＳ５で‘Ｙｅｓ’）、次のステップＳ７へ進み、クロックツリー合成を行う。クロックツリー合成は２回に分けて実施する。
【００６２】
１回目は、クロックゲート５０から第２ＦＦ群４４のクロック入力端子までの間の部分の経路、すなわち、サブツリーの合成を行う。この時、制約条件として、最大遅延時間把握手段１４で求めたクロックゲート５０におけるタイミングスラック値（すなわち、イネーブル信号の経路のタイミングスラック値）を、サブツリーの部分に許容されるクロック信号ＣＬＯＣＫの最大遅延時間としてサブツリーを構築する（ステップＳ７）。
【００６３】
続いて、構築されたサブツリーにおけるクロック信号ＣＬＯＣＫの遅延時間を求め、ステップＳ７で設定された制約条件、すなわち、イネーブル信号の経路のタイミングスラック値以内の遅延時間を満たしているかどうかを判断する（ステップＳ８）。
【００６４】
ここで、前記ステップＳ７において、構築したサブツリーのクロック配線まで行い、実際のクロック配線について遅延時間を求めることも可能である。もしくは、ステップＳ７においてはクロック配線までは行わず、仮配線について遅延時間を求めることも可能である。前者の方が、遅延時間を高い精度で求められるという点では優れている。
【００６５】
その結果、サブツリーにおけるクロック信号ＣＬＯＣＫの遅延時間がステップＳ７の制約条件を満たしていない場合（ステップＳ８で‘Ｎｏ’）、サブツリー合成の条件、例えば使用するバッファや鈍り制約値などのパラメータの修正を行う。そして、ステップＳ７へ戻って、ステップＳ７の制約条件を満たせるまでサブツリーの構築を繰り返し行う（ステップＳ９）。
【００６６】
一方、サブツリーにおけるクロック信号ＣＬＯＣＫの遅延時間がステップＳ７の制約条件を満たしている場合（ステップＳ８で‘Ｙｅｓ’）、次のステップＳ１０へ進み、２回目のクロックツリー合成を行う。
【００６７】
２回目は、論理回路４０全体のクロックツリー合成を行う。この時、クロック信号ＣＬＯＣＫの最大遅延時間として、サブツリーのクロック遅延時間に比較して大きな値を与え、なおかつ、クロックゲート５０から第２ＦＦ群４４のクロック入力端子までのサブツリーの構造を維持したままの状態で、Ａ点をルートとして、論理回路４０全体のクロックツリーを構築する（ステップＳ１０）。
【００６８】
ここで、サブツリーは、前記ステップＳ７において、必ずクロックゲート５０のタイミングスラック値以下の遅延時間で構築されている。この結果、クロックゲート５０におけるセットアップ時間のタイミング違反は発生しないことになる。
【００６９】
上記事項を式で表すと、下記式（１）〜（８）のようになる。
【００７０】
クロックゲート５０において、クロック信号ＣＬＯＣＫに対するイネーブル信号のタイミング制約を満たすということは、下記式（１）を満たしていれば良い。
【００７１】
Ａ点からＢ点までの間の遅延時間  ＋  Ｂ点からＤ点までの間の遅延時間  ＋  クロックゲート５０のセットアップ時間  ≦  Ａ点からＣ点までの間の遅延時間  ＋  １クロック周期の時間  …  （１）
【００７２】
タイミング最適化後に求めたクロックゲート５０のタイミングスラック値は下記式（２）で表される。
【００７３】
クロックゲート５０のタイミングスラック値  ＝  １クロック周期の時間  −  Ｂ点からＤ点までの間の遅延時間  −  クロックゲート５０のセットアップ時間  …  （２）
【００７４】
クロックゲート５０のタイミングスラック値以下の値となるように、クロックゲート５０以降のサブツリーを構築するための条件は下記式（３）となる。
【００７５】
Ｃ点からＥ点までの間の遅延時間  ≦  クロックゲート５０のタイミングスラック値  …  （３）
【００７６】
次に、論理回路４０全体でクロック信号ＣＬＯＣＫの遅延時間を揃えるようにクロックツリーを構築するための条件は下記式（４）となる。
【００７７】
Ａ点からＢ点までの間の遅延時間  ＝  Ａ点からＥ点までの間の遅延時間  …  （４）
【００７８】
式（２）および（３）から、下記式（５）が得られる。
【００７９】
Ｃ点からＥ点までの間の遅延時間  ≦  １クロック周期の時間  −  Ｂ点からＤ点までの間の遅延時間  −  クロックゲート５０のセットアップ時間  …  （５）
【００８０】
また、式（５）を移項すると、下記式（６）が得られる。
【００８１】
Ｃ点からＥ点までの間の遅延時間  ＋  Ｂ点からＤ点までの間の遅延時間  ＋  クロックゲート５０のセットアップ時間  ≦  １クロック周期の時間  …  （６）
【００８２】
続いて、式（６）の両辺にＡ点からＣ点までの間の遅延時間を加えると、下記式（７）が得られる。
【００８３】
Ａ点からＣ点までの間の遅延時間  ＋  Ｃ点からＥ点までの間の遅延時間  ＋  Ｂ点からＤ点までの間の遅延時間  ＋クロックゲート５０のセットアップ時間  ≦  Ａ点からＣ点までの間の遅延時間  ＋  １クロック周期の時間  …  （７）
【００８４】
Ａ点からＣ点までの間の遅延時間  ＋  Ｃ点からＥ点までの間の遅延時間  ＝  Ａ点からＥ点までの間の遅延時間なので、下記式（８）が得られる。
【００８５】
Ａ点からＥ点までの間の遅延時間  ＋  Ｂ点からＤ点までの間の遅延時間  ＋  クロックゲート５０のセットアップ時間  ≦  Ａ点からＣ点までの間の遅延時間  ＋  １クロック周期の時間  …  （８）
【００８６】
この式（８）は、Ａ点からＢ点までの間の遅延時間がＡ点からＥ点までの間の遅延時間に変わっているが、クロックツリーは、両者の遅延時間がほぼ揃うように合成されるため、式（８）は式（１）と同じ条件を表していることになる。
【００８７】
つまり、クロックゲート５０でのタイミングスラック値を制約条件としてクロックゲート５０以降のサブツリーを構築し、その後、構築したサブツリーの構造を維持したままの状態で論理回路４０全体のクロックツリーの構築を行うことによって、クロックゲート５０におけるタイミング制約を満たすことができる。
【００８８】
前述の通り、タイミング最適化の結果、十分なタイミングスラック値が得られない場合、クロックゲート５０以降のサブツリーが、そのタイミングスラック値以内で希望するスキューを満たすように構築できない可能性はある。この場合、条件を変更してクロックツリー合成を行い、サブツリーが、タイミングスラック値以内で希望するスキューを満たすように合成を繰り返し行う必要がある。
【００８９】
しかし、従来のように、ゼロから論理回路４０全体のクロックツリー合成を実行し、その後でタイミング解析を行うまで最終的にタイミングを満たせているかどうか判断できないわけではなく、少なくともサブツリーが、所定の遅延値以内で構築できるかどうかでクロックゲート５０に関するタイミングの収束の可能性を判断できる。従って、設計者は、サブツリーの構築に注力すれば良くなり、その具体的な目標値も明確化される。
【００９０】
なお、クロックゲート５０は、ＡＮＤゲートのほかに、ＯＲゲートなどの各種の論理ゲート回路によって構成されたものや、ラッチとＡＮＤゲートやＯＲゲートなどの論理ゲートとによって構成されたものなど、各種構成のものが利用可能である。クロックゲート５０として、例えば、特許文献１の図６〜図９に開示のものを使用することも可能である。
【００９１】
クロックゲート５０がＡＮＤゲートの場合、図３に示すように、クロック信号ＣＬＯＣＫがローレベルの期間にイネーブル信号が変化すれば問題は生じないが、クロック信号ＣＬＯＣＫがハイレベルの期間にイネーブル信号が変化すると、パルス幅の短いクロック信号のグリッチが発生する。つまり、クロック信号ＣＬＯＣＫの立ち上がりに対して、イネーブル信号のタイミング制約が存在する。
【００９２】
これに対し、図４に一例を示すように、クロックゲート５０をラッチと論理ゲートとによって構成することで、クロック信号ＣＬＯＣＫに、パルス幅の短いグリッチが生じるのを防止できることが知られている。
【００９３】
図４に示すクロックゲート２０は、インバータ２２と、ラッチ２４と、ＡＮＤゲート２６とによって構成されている。ラッチ２４のデータ入力端子Ｄにはイネーブル信号が入力され、そのイネーブル入力端子Ｇには、インバータ２２を介してクロック信号の反転信号が入力される。また、ＡＮＤゲート２６には、ラッチ２４の出力信号Ｑとクロック信号が入力され、ＡＮＤゲート２６からは、ゲーティッドクロックが出力される。
【００９４】
ラッチ２４は、クロック信号がローレベルの期間は、イネーブル信号を通過させ、クロック信号がハイレベルに立ち上がった時点のイネーブル信号を保持する。つまり、クロック信号がハイレベルに立ち上がった時点でラッチ２４に保持されたイネーブル信号とクロック信号のハイレベルとのＡＮＤが取られ、ゲーティッドクロックとして出力される。
【００９５】
このラッチ２４を用いたクロックゲート２０は、ハードマクロないしはソフトマクロで構成され、ラッチ２４によってイネーブル信号を保持することで、グリッチがゲーティッドクロックに伝播することを防止することができる。
【００９６】
しかし、クロックゲート２０の場合には、図５に示すように、イネーブル信号の保持が正常に行われることを保証するために、イネーブル信号の変化とクロック信号の立ち上がりエッジとの間にセットアップ時間が必要である。また、クロック信号ＣＬＯＣＫがローレベルの期間にイネーブル信号が変化すれば問題は生じないが、ハイレベルの期間に変化すると、その変化の時点でラッチ２４に保持することができない。このため、図５に示すように、ゲーティッドクロックの出力が遅れる。すなわち、意図した時刻にクロック信号を供給／停止することができない。
【００９７】
上記のように、論理ゲートで構成されたクロックゲートの場合も、ラッチと論理ゲートによって構成されたクロックゲートの場合も、クロック信号ＣＬＯＣＫの立ち上がりに対して、イネーブル信号のタイミング制約が存在する。従って、いずれの場合においても、本発明の論理回路の設計方法および設計支援装置を用いて、クロックゲートにおけるタイミング制約を満足するようにクロックツリーを構築することが有効である。
【００９８】
本発明は、基本的に以上のようなものである。
以上、本発明の論理回路の設計方法および設計支援装置について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００９９】
【図１】本発明の論理回路の設計支援装置の構成を表す一実施形態のブロック図である。
【図２】図１に示す設計支援装置を用いて論理回路を設計する時の本発明の論理回路の設計方法の各工程を表すフローチャートである。
【図３】ＡＮＤゲートで構成されたクロックゲートの動作を表す一例のタイミングチャートである。
【図４】ラッチとＡＮＤゲートで構成されたクロックゲートの構成を表す一例の回路図である。
【図５】図４に示すクロックゲートの動作を表す一例のタイミングチャートである。
【図６】クロックゲートを用いない論理回路とクロックゲートを用いた論理回路それぞれの構成を表す一例の回路図である。
【図７】論理回路に含まれる複数のＦＦ群にクロック信号を供給するクロックツリーの構成を表す一例の概略図である。
【符号の説明】
【０１００】
１０  設計支援装置
１２  配置手段
１４  最大遅延時間把握手段
１６  サブツリー構築手段
１８  クロックツリー構築手段
２０、３４、５０  クロックゲート
２２  インバータ
２４  ラッチ
２６  ＡＮＤゲート
４０  論理回路
３０、４２、４４、４６  フリップフロップ（ＦＦ群）
３２  マルチプレクサ
４８  イネーブル論理回路
【図１】
2008040735.tif 000003
【図２】
2008040735.tif 000004
【図３】
2008040735.tif 000005
【図４】
2008040735.tif 000006
【図５】
2008040735.tif 000007
【図６】
2008040735.tif 000008
【図７】
2008040735.tif 000009