(57)【特許請求の範囲】
【請求項１】
ＬＳＩのクロック発生源から複数のタイミング規定回路まで複数のバッファを含んで構成されるクロックツリーに対して、コンピュータによって実行される、第１、第２及び第３ステップを含む、当該ＬＳＩについてのＬＳＩ設計方法であって、
前記第１ステップでは、前記クロックツリー内の１つの分岐と、前記分岐から前記タイミング規定回路方向に延びる１つの枝における次の分岐との間に存在するバッファを対象バッファとして規定し、
前記第２ステップでは、前記枝から拡がるクロックツリーの末端に接続されているタイミング規定回路を対象タイミング規定回路とし、前記複数のタイミング規定回路のうち前記対象タイミング規定回路以外のタイミング規定回路を非対象タイミング規定回路とし、前記非対象タイミング規定回路を始点とし前記対象タイミング規定回路を終点とする信号伝搬経路についてのタイミング解析を実行し、
前記第３ステップでは、前記タイミング解析の結果に基づいて、すべての信号伝搬経路におけるセットアップ余裕を０以上に保つことができる範囲内で、前記対象バッファに含まれる１個または複数のバッファを削除する、ＬＳＩ設計方法。
【請求項２】
請求項１において、前記コンピュータによって実行され、前記第１、第２及び第３ステップに先立って、前記複数のタイミング規定回路相互間のすべての信号伝搬経路におけるセットアップ余裕を０以上に調整する、第４ステップをさらに含む、ＬＳＩ設計方法。
【請求項３】
請求項１において、前記クロックツリー内の全ての分岐を順次選び、前記分岐から延びる全ての枝を順次選んでバッファを削除する前記第２及び第３ステップを繰り返し実施する、ＬＳＩ設計方法。
【請求項４】
請求項３において、前記分岐の選択は、前記クロック発生源に近い分岐を先に選択する、ＬＳＩ設計方法。
【請求項５】
請求項３において、前記コンピュータによって実行され、前記第１ステップに先立って除外対象の枝を規定する第５ステップと、前記対象バッファが前記除外対象の枝に含まれるか否かを判断する第６ステップとをさらに含み、前記対象バッファが前記除外対象の枝に含まれるときに、前記第２及び第３ステップをスキップして次の分岐についての前記第１ステップに進む、ＬＳＩ設計方法。
【請求項６】
請求項５において、前記第５ステップでは、前記クロックツリー内の、電気的設計ルールに対する余裕の最も少ない経路にある枝を、前記除外対象の枝と規定する、ＬＳＩ設計方法。
【請求項７】
請求項５において、前記第５ステップでは、前記クロックツリー内の、バッファを含まない枝を前記除外対象の枝と規定する、ＬＳＩ設計方法。
【請求項８】
請求項１において、配置配線後の設計データを対象とする、ＬＳＩ設計方法。
【請求項９】
請求項８において、前記コンピュータによって実行され、バッファを削除する前記第３ステップを実行した後、前記削除されたバッファの入力を駆動していたバッファから前記削除されたバッファが駆動していたバッファへの配線を配線し、前記配線の容量と抵抗を抽出し前記容量と前記抵抗に基づいて前記削除されたバッファの入力を駆動していた前記バッファの遅延値を算出する第７ステップをさらに含む、ＬＳＩ設計方法。
【請求項１０】
請求項１において、前記タイミング規定回路が、フリップフロップ、ラッチ、クロック同期式メモリ、または、クロックゲーティングのためのゲートである、ＬＳＩ設計方法。
【請求項１１】
ＬＳＩのクロック発生源から複数のタイミング規定回路まで複数のバッファを含んで構成されるクロックツリーを含むゲートレベルの論理回路に対して、コンピュータによって実行される、第１、第２及び第３ステップを含む、当該ＬＳＩについてのＬＳＩ設計方法であって、
前記第１ステップでは、前記クロックツリー内の１つの分岐から、前記分岐から拡がる部分ツリーの末端までに存在するバッファを対象バッファとして規定し、
前記第２ステップでは、前記部分ツリーの末端に接続されているタイミング規定回路を対象タイミング規定回路とし、前記複数のタイミング規定回路のうち前記対象タイミング規定回路以外のタイミング規定回路を非対象タイミング規定回路とし、前記非対象タイミング規定回路を始点とし前記対象タイミング規定回路を終点とするすべての信号伝搬経路についてのタイミング解析を実行し、
前記第３ステップでは、前記第２ステップにおける前記タイミング解析の結果に基づいて、前記対象タイミング規定回路相互間のすべての信号伝搬経路におけるセットアップ余裕およびホールド余裕を０以上に保つことができる範囲内で、且つ、前記非対象タイミング規定回路を始点とし前記対象タイミング規定回路を終点とするすべての信号伝搬経路におけるセットアップ余裕を０以上に保つことができる範囲内で、前記対象バッファに含まれる１個または複数のバッファを削除する、ＬＳＩ設計方法。
【請求項１２】
請求項１１において、前記コンピュータによって実行され、前記第１、第２及び第３ステップに先立って、前記複数のタイミング規定回路相互間のすべての信号伝搬経路におけるセットアップ余裕を０以上に調整する、第４ステップをさらに含む、ＬＳＩ設計方法。
【請求項１３】
請求項１１において、前記コンピュータによって実行され、バッファを削除する前記ステップに先立って、前記複数のタイミング規定回路のうち、同一の組合せ回路を経由する信号伝搬経路の始点のタイミング規定回路と前記信号伝搬経路の終点のタイミング規定回路とを、同じ分岐から拡がる部分ツリーに接続する、第５ステップをさらに含む、ＬＳＩ設計方法。
【請求項１４】
請求項１１において、
前記第３ステップでは、前記第２ステップにおける前記タイミング解析の結果に基づいて、前記対象タイミング規定回路相互間の信号伝搬経路において、第１の枝から拡がる部分ツリーに接続されるタイミング規定回路を始点とし、第１の枝とは異なる第２の枝から拡がる部分ツリーに接続されるタイミング規定回路を終点とするセットアップ余裕およびホールド余裕を０以上に保つことができる範囲内で、前記第１の枝に含まれる前記対象バッファに含まれる１個または複数のバッファと前記第２の枝に含まれる前記対象バッファに含まれる１個または複数のバッファとを削除する、ＬＳＩ設計方法。
【請求項１５】
請求項１１において、前記クロックツリーに含まれるすべての分岐について、バッファを削除する前記第２及び第３ステップを繰り返す、ＬＳＩ設計方法。
【請求項１６】
請求項１５において、前記クロック発生源から遠い分岐から順に、バッファを削除する前記ステップを繰り返す、ＬＳＩ設計方法。
【請求項１７】
請求項１５において、前記コンピュータによって実行され、前記第１ステップに先立って除外対象の枝を規定する第６ステップと、前記対象バッファが前記除外対象の枝に含まれるか否かを判断する第７ステップとをさらに含み、
前記対象バッファが前記除外対象の枝に含まれるときに、前記バッファを削除する前記第２及び第３ステップをスキップして次の分岐についての前記第１ステップに進む、ＬＳＩ設計方法。
【請求項１８】
請求項１７において、前記第６ステップでは、前記クロックツリー内の、電気的設計ルールに対する余裕の最も少ない経路にある枝を、前記除外対象の枝と規定する、ＬＳＩ設計方法。
【請求項１９】
請求項１７において、前記第６ステップでは、前記クロックツリー内の、バッファを含まない枝を前記除外対象の枝と規定する、ＬＳＩ設計方法。
【請求項２０】
請求項１１において、前記タイミング規定回路が、フリップフロップ、ラッチ、クロック同期式メモリ、または、クロックゲーティングのためのゲートである、ＬＳＩ設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ設計方法に係り、特に、クロックツリーによる電力消費を抑えるために有効な技術に関する。
【背景技術】
【０００２】
ロジックＬＳＩでは、クロック発生源からそのクロックに同期して動作するフリップフロップ（以下ＦＦと略記する）までクロックツリーを備える同期設計が一般的である。ＦＦ間には組合せ回路があり、クロックスキューと、組合せ回路による信号伝搬遅延と、クロック周期との関係で、セットアップ時間、ホールド時間などのタイミング仕様が定められている。クロックスキューは、クロック発生源から信号伝搬の始点と終点となる１組のＦＦそれぞれにクロックが到達する時間の差を表す。始点のＦＦの出力がクロックに同期して遷移すると、組合せ回路による信号伝搬遅延を経て、終点のＦＦにその論理演算の結果が到達する。到達するタイミングは、クロック周期に対してある程度の余裕を必要としており、その余裕をセットアップ時間という。また、信号伝搬遅延が少なすぎて始点における信号遷移がそのクロックサイクルのうちに終点の出力に現れるレーシングという不具合を防止するために、ホールド時間が規定されている。
【０００３】
このようなＬＳＩの設計方法には、一般に、論理合成（Logic Synthesis）、クロックツリー合成（CTS; Clock Tree Synthesis）、配置配線、タイミング解析、および検証を行う各ステップが含まれている。
【０００４】
論理合成では、設計者によって高位論理記述の形で設計された論理を入力として、ゲートレベルの論理回路を合成する。論理回路は、クロック発生源からそのクロックに同期して動作するＦＦまでクロックツリーを備える、同期設計が一般的である。ＦＦは、組合せ回路による信号伝搬遅延の始点および終点であって、同期設計におけるタイミング規定回路である。始点のタイミング規定回路であるＦＦの出力がクロックに同期して遷移すると、組合せ回路による信号伝搬遅延を経て、終点のタイミング規定回路であるＦＦにその論理演算の結果が到達する。到達するタイミングは、クロック周期に対してある程度の余裕を必要としており、その余裕をセットアップ時間という。一方、信号伝搬遅延が少なすぎて始点における信号遷移がそのクロックサイクルのうちに終点の出力に現れるレーシングという不具合を防止するために、ホールド時間が規定されている。タイミング規定回路には、ＦＦだけではなく、ラッチ回路、クロック同期式のメモリ、クロックゲーティングを制御するゲート回路などが含まれる。
【０００５】
クロックツリー合成（CTS）では、クロック発生源から、ＦＦなどのすべてのタイミング規定回路に対して、クロックが供給されるように、クロックバッファをツリー状に構成する。１個のクロック発生源から多数のタイミング規定回路にクロックを供給するために、複数回の分岐を経て供給対象を増やす。分岐から延びる複数の枝のそれぞれに１個乃至複数個のバッファを直列に備え、さらに次の分岐に至る。同期設計においては、すべてのタイミング規定回路に同時にクロックが到達するように設計されるのが一般的である。論理合成がそれを前提として実行されているからである。タイミング規定回路にクロックが到達する時刻の誤差をスキューという。
【０００６】
配置配線では、論理回路の各ゲートに対応するセルの配置を決め、セル間の配線を行う。これにより、ＬＳＩのレイアウト情報が生成される。
【０００７】
タイミング解析には、過渡解析を行う動的タイミング解析と、過渡解析を行わずに、配線の負荷容量と配線抵抗を抽出しそれに基づいてゲートごとに遅延時間を算出してその加減算によってのみ行う、静的タイミング解析（STA; Static Timing Analysis）がある。回路規模の膨大なＬＳＩ設計では、一般に、演算量の少ないＳＴＡが採用されている。ＳＴＡでは、クロック発生源から、クロックバッファによる遅延を累積しながら始点または終点であるタイミング規定回路までの信号伝搬遅延を計算し、始点から終点までの組合せ回路による信号伝搬遅延を計算し、セットアップ時間とホールド時間に対する余裕を算出する。セットアップ時間に対する余裕をスラック（slack）と呼び、違反している場合にはスラックを負で表し、余裕がある場合にはスラックを正で表す。ＳＴＡでは、すべてのタイミング規定回路を始点および終点とするすべての組合せについて、セットアップ時間とホールド時間に対する余裕を算出する。配置配線後にＳＴＡを行う場合には、レイアウト情報から負荷容量と配線抵抗などの遅延に影響するパラメータを抽出して、より正確に遅延を計算することができる。
【０００８】
検証には、設計ルールチェック（DRC; Design Rule Check）と回路レイアウト検証（LVS; Layout vs. Schematic）が含まれ、レイアウト情報における各種ルールについての検証と、レイアウトの回路図との一致検証を行う。
【０００９】
一方、ロジックＬＳＩにおける消費電力の低減は、益々重要度が高まっている課題であり、特にクロックツリーを始めとするクロック系の消費電力の低減は極めて重要である。クロックツリーは回路規模において組合せ回路より小さいにも関わらず、クロックが通常のデータと比べて単位時間当たりの状態遷移確率が数倍高いため、ロジックＬＳＩにおけるクロックツリーによる消費電力は、比較的高い割合を占める。したがって、クロックツリーの消費電力を抑えることは、ロジックＬＳＩ全体の消費電力の低減に大きく寄与する。
【００１０】
特許文献１には、セットアップ違反を解消するために、ＦＦへのクロックの到達時間を調節する技術が開示されている。複数のセットアップ違反の最悪スラックを、クロックツリーにおけるクロックバッファの追加または削除によって解消する技術である。
【００１１】
特許文献２には、セットアップ違反を解消するためのクロックラインの最適化フローが開示されている。セットアップ違反のパスの終点のＦＦを、クロックを遅延させる遅延付きＦＦに置き換える。
【００１２】
特許文献３には、消費電力の低減とセットアップ／ホールドエラー改善を行うことができるクロックツリー作成方法が開示されている。クロックツリー上の遅延素子の数を減らすことによって消費電力を低減し、セットアップ／ホールドエラーを発生させているパスを構成するセルの配置をやり直して配線を短縮することによりエラーを解消する技術である。クロック発生源からクロック負荷セル（通常はＦＦ）までの配線長が所定範囲内になるように、クロック負荷セルを再配置することにより、クロックツリー上のバッファ数を必要最小限とし、合わせてセットアップ／ホールドエラーを解消する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６−０３１１４１号公報
【特許文献２】特開２００２−１０８９６２号公報
【特許文献３】特開２００６−３１９１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上で述べたように、ＣＴＳはＦＦなどすべてのタイミング規定回路までのクロック遅延を等しく（スキューを０に）するようにしてクロックツリーを合成するので、クロック発生源から最も遠いタイミング規定回路までのクロック遅延を基準として、他の全てのクロック伝搬経路の遅延をこれと一致させている。したがって、クロック発生源に近いＦＦに対するクロックツリーには、スキュー調整のためのバッファが多数挿入されていることになる。
【００１５】
本願の発明者はこの点に着目し、タイミング違反を発生させないならば、このようなスキュー調整のために挿入されたバッファを削除することにより、クロックツリーによる消費電力を抑えることができることを見出した。
【００１６】
特許文献１に開示される技術において、セットアップ違反を解消するために、クロックツリー上のクロックバッファを追加または削除するので、削除すれば結果的にクロックツリーにおける消費電力を削減する効果はあるが、同文献には、消費電力を削減するための技術的思想は開示されていない。
【００１７】
特許文献２に開示される技術において、セットアップ違反を解消するために終点のＦＦを、クロックを遅延させる遅延付きＦＦに置き換えるのは、クロックツリーに遅延素子を挿入するのと回路的に等価であって、結果的にクロックツリーにおける消費電力を増加させる。
【００１８】
特許文献３に開示される技術において、消費電力を低く抑えながらセットアップ／ホールドエラー改善を行うことができるが、スキューを保ったままセルの配置を最適化することによって、配線負荷を必要最小限に抑えることによる消費電力低減に留まる。
【００１９】
本願において開示される実施の形態においては、タイミング余裕がある限り、より積極的にクロックツリー上のバッファを削減して、クロックツリーにおける消費電力を削減することを課題とする。
【００２０】
その他の課題と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２１】
本願において開示される実施の形態の概要を簡単に説明すれば下記の通りである。
【００２２】
すなわち、クロックツリー内の分岐に着目し、前記分岐から拡がる前記クロックツリーの一部である部分ツリーに接続されるＦＦ群の全部または一部を対象ＦＦとし、非対象ＦＦ相互間の信号伝搬経路でのスラックが原理的に変動しない条件下で、削除対象バッファを特定する。非対象ＦＦを始点、対象ＦＦを終点とする信号伝搬経路と対象ＦＦ間の信号伝搬経路がいずれもタイミング仕様違反を発生させない範囲内で、削除対象バッファの中から削除できるバッファを特定して削除する。
【発明の効果】
【００２３】
本願において開示される実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００２４】
すなわち、セットアップ余裕がある限り、より積極的にクロックツリー上のバッファを削減して、クロックツリーにおける消費電力を削減することができる。
【図面の簡単な説明】
【００２５】
【図１】図１は、実施形態１または実施形態２を適用したＬＳＩ設計方法を表す設計フローの中核部分である。
【図２】図２は、実施形態１または実施形態２を適用したＬＳＩ設計方法を表す設計フローの全体である。
【図３】図３は、実施形態１または実施形態２の変形例を適用したＬＳＩ設計方法を表す設計フローの中核部分である。
【図４】図４は、実施形態１によるバッファの削除方法の一例を示す説明図である。
【図５】図５は、実施形態１によるバッファの削除のためのタイミング解析の一例を示す説明図である。
【図６】図６、バッファを削除した後の再配線による遅延値の更新についての説明図である。
【図７】図７は、実施形態２によるバッファの削除方法の一例を示す説明図である。
【図８】図８は、実施形態２によるバッファの削除のためのタイミング解析の一例を示す説明図である。
【発明を実施するための形態】
【００２６】
１．実施の形態の概要
先ず、本願において開示される実施の形態について概要を説明する。実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２７】
〔１〕＜１本の枝に含まれるバッファを対象とするバッファ削除ステップ＞
クロック発生源（２００）から複数のタイミング規定回路（ＦＦ１〜ＦＦ８）まで複数のバッファ（１０１〜１６６）を含んで構成されるクロックツリー（１００）に対して、以下のステップを実行するＬＳＩ設計方法である。
【００２８】
前記クロックツリー内の１つの分岐（２２）と、前記分岐から前記タイミング規定回路方向に延びる１つの枝（３１）における次の分岐（２４）との間に存在するバッファ（１１１、１１２、１１３）を対象バッファとする（ステップ１）。前記枝から拡がるクロックツリー（４１）の末端に接続されているタイミング規定回路（ＦＦ１，ＦＦ２）を対象タイミング規定回路（５１）とし、前記複数のタイミング規定回路のうち前記対象タイミング規定回路以外のタイミング規定回路（ＦＦ３〜ＦＦ８）を非対象タイミング規定回路（５２）とする（ステップ１）。
【００２９】
前記非対象タイミング規定回路を始点とし前記対象タイミング規定回路を終点とするすべての信号伝搬経路（６１）におけるセットアップ余裕を０以上に保つことができる範囲内で（ステップ３）、前記対象バッファに含まれる１個または複数のバッファを削除する（ステップ５）。
【００３０】
これにより、タイミング余裕がある限り、より積極的にクロックツリー上のバッファを削減して、クロックツリーにおける消費電力を削減することができる。
【００３１】
〔２〕＜予めセットアップ余裕（スラック）≧０に調整＞
項１において、バッファを削除する前記ステップ（１５）に先立って、前記複数のタイミング規定回路相互間のすべての信号伝搬経路におけるセットアップ余裕を０以上に調整するステップ（ステップ１４）をさらに含む。
【００３２】
これにより、削除可能なバッファの数をさらに多くすることができる。
【００３３】
〔３〕＜全ての分岐および枝についてバッファ削除ステップの繰り返し＞
項１または２において、前記クロックツリー内の全ての分岐を順次選び、前記分岐から延びる全ての枝を順次選んでバッファを削除する前記ステップを繰り返し実施する（ステップ２）。
【００３４】
これにより、クロックツリー内の全てのバッファを対象に、削除可能か否かの判断を行うことができ、より多くのバッファを削除することができる。
【００３５】
〔４〕＜クロック発生源に近い分岐から順次繰り返し＞
項３において、前記分岐の選択は、前記クロック発生源に近い分岐を先に選択する。
【００３６】
これにより、削除可能なバッファの数をさらに多くすることができる。
【００３７】
〔５〕＜削除候補の絞込み（削除からの除外対象の指定）＞
項３または４において、バッファを削除する前記ステップに先立って除外対象の枝を規定し（ステップ６）、前記対象バッファが前記除外対象の枝に含まれるときに、前記バッファを削除するステップをスキップして次の分岐に移る（ステップ７）。
【００３８】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。
【００３９】
〔６〕＜電気的最長パスを削除対象から除外＞
項５において、前記クロックツリー内の、電気的設計ルールに対する余裕の最も少ない経路にある枝を、前記除外対象の枝と規定する（ステップ６）。
【００４０】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。電気的設計ルールとは、例えば、波形の立上り時間を所定の時間内以下に制限する規定など、信頼性を確保するためなどの目的で速度性能の仕様とは別に設けられているルールを指す。信頼性を確保するために挿入されたバッファを削除することは許されないため、仮に削除すると後の検証で電気的設計ルール違反となり、削除したバッファを元に戻すような手戻りを生じることとなる。このようなバッファを予め削除対象とすることにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。
【００４１】
〔７〕＜バッファを含まないパスを削除対象から除外＞
請求項５または６において、前記クロックツリー内の、バッファを含まない枝を前記除外対象の枝と規定する（ステップ６）。
【００４２】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。バッファを含まない枝においては、バッファが削除されることはあり得ないので、これをスキップすることにより、無駄な実行時間を節約することができる。
【００４３】
〔８〕＜配置配線後の設計データを対象＞
項１乃至７のうちの１項において、配置配線（ステップ１４）後の設計データを対象とする。
【００４４】
これにより、より正確な遅延値に基づいてバッファを削除することができる。
【００４５】
〔９〕＜バッファ削除後の再配線と遅延値の更新＞
項８において、バッファを削除する前記ステップ（ステップ５）を実行した後、前記削除されたバッファの入力を駆動していたバッファから前記削除されたバッファが駆動していたバッファへの配線を配線するステップを実行し、前記配線の容量と抵抗を抽出し前記容量と前記抵抗に基づいて前記削除されたバッファの入力を駆動していた前記バッファの遅延値を算出する（ステップ８）。
【００４６】
これにより、バッファ削除後のタイミング解析、例えば別のバッファを対象としてさらなるバッファ削除（ステップ１５）を実行しようとするときのタイミング解析を正確に行うことができる。
【００４７】
〔１０〕＜タイミング規定回路とは、ＦＦなど＞
請求項１乃至９のうちの１項において、前記タイミング規定回路が、フリップフロップ、ラッチ、クロック同期式メモリ、または、クロックゲーティングのためのゲートである。
【００４８】
これにより、タイミング規定回路がフリップフロップ以外の回路であっても、本ＬＳＩ設計方法を適用することができる。
【００４９】
〔１１〕＜１つの分岐から延びるすべての枝に含まれるバッファを対象とする削除＞
クロック発生源（２００）から複数のタイミング規定回路（ＦＦ１〜ＦＦ８）まで複数のバッファ（１０１〜１６６）を含んで構成されるクロックツリー（１００）に対して、以下のステップを実行するＬＳＩ設計方法である。
【００５０】
前記クロックツリー内の１つの分岐（２４）から、前記分岐から拡がる部分ツリー（４１）の末端までに存在するバッファ（１３１〜１３６）を対象バッファとする。前記部分ツリーの末端に接続されているタイミング規定回路（ＦＦ１〜ＦＦ２）を対象タイミング規定回路（５１）とし、前記複数のタイミング規定回路のうち前記対象タイミング規定回路以外のタイミング規定回路（ＦＦ３〜ＦＦ８）を非対象タイミング規定回路（５２）とする（ステップ１）。
【００５１】
前記対象タイミング規定回路相互間の全ての信号伝搬経路（６２）におけるセットアップ余裕およびホールド余裕を０以上に保つことができる範囲内で、且つ、前記非対象タイミング規定回路を始点とし前記対象タイミング規定回路を終点とする全ての信号伝搬経路（６１）におけるセットアップ余裕を０以上に保つことができる範囲内（ステップ３）で、前記対象バッファに含まれる１個または複数のバッファを削除する（ステップ５）。
【００５２】
これにより、タイミング余裕がある限り、より積極的にクロックツリー上のバッファを削減して、クロックツリーにおける消費電力を削減することができる。
【００５３】
〔１２〕＜予めセットアップ余裕（スラック）≧０に調整＞
項１１において、バッファを削除する前記ステップに先立って、前記複数のタイミング規定回路相互間のすべての信号伝搬経路におけるセットアップ余裕を０以上に調整するステップ（ステップ１１〜１４）をさらに含む。
【００５４】
これにより、削除可能なバッファの数を多くすることができる。
【００５５】
〔１３〕＜クラスタリング＞
項１１または項１２において、バッファを削除する前記ステップに先立って、前記複数のタイミング規定回路のうち、同一の組合せ回路を経由する信号伝搬経路の始点のタイミング規定回路と前記信号伝搬経路の終点のタイミング規定回路とを、同じ分岐から拡がる部分ツリーに接続するステップをさらに含む。
【００５６】
これにより、削除可能なバッファの数をさらに多くすることができる。互いに関連の強い一連の組合せ回路群をまとめて同じ部分ツリーに接続するため、バッファ削除のための条件を満たしやすくなるためである。
【００５７】
〔１４〕＜複数本の枝から同時にバッファを削除＞
項１１乃至１３のうちの１項において、前記対象タイミング規定回路相互間の信号伝搬経路において、第１の枝から拡がる部分ツリーに接続されるタイミング規定回路を始点とし、第１の枝とは異なる第２の枝から拡がる部分ツリーに接続されるタイミング規定回路を終点とする。そのときのセットアップ余裕およびホールド余裕を０以上に保つことができる範囲内で、前記第１の枝に含まれる前記対象バッファに含まれる１個または複数のバッファと前記第２の枝に含まれる前記対象バッファに含まれる１個または複数のバッファとを削除する。
【００５８】
これにより、１本の枝に含まれるバッファのみを対象とした削除ステップでは削除できないバッファまで削除可能とすることができる。
【００５９】
〔１５〕＜分岐ごとの繰り返し＞
項１１乃至１４のうちの１項において、前記クロックツリーに含まれるすべての分岐について、バッファを削除する前記ステップを繰り返す。
【００６０】
これにより、クロックツリー内の全てのバッファを対象に、削除可能か否かの判断を行うことができ、より多くのバッファを削除することができる。
【００６１】
〔１６〕＜クロック発生源に遠い分岐から順次繰り返し＞
項１５において、前記クロック発生源から遠い分岐から順に、バッファを削除する前記ステップを繰り返す。
【００６２】
これにより、削除可能なバッファの数をさらに多くすることができる。
【００６３】
〔１７〕＜削除候補の絞込み（削除からの除外対象の指定）＞
項１５または１６において、バッファを削除する前記ステップに先立って除外対象の枝を規定し（ステップ６）、前記対象バッファが前記除外対象の枝に含まれるときに、前記バッファを削除するステップをスキップして次の分岐に移る（ステップ７）。
【００６４】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。
【００６５】
〔１８〕＜電気的最長パスを削除対象から除外＞
項１７において、前記クロックツリー内の、電気的設計ルールに対する余裕の最も少ない経路にある枝を、前記除外対象の枝と規定する（ステップ６）。
【００６６】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。
【００６７】
〔１９〕＜バッファを含まないパスを削除対象から除外＞
項１７または項１８において、前記クロックツリー内の、バッファを含まない枝を前記除外対象の枝と規定する（ステップ６）。
【００６８】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。バッファを含まない枝においては、バッファが削除されることはあり得ないので、これをスキップすることにより、無駄な実行時間を節約することができる。
【００６９】
〔２０〕＜タイミング規定回路とは、ＦＦなど＞
項１１乃至１９のうちの１項において、前記タイミング規定回路が、フリップフロップ、ラッチ、クロック同期式メモリ、または、クロックゲーティングのためのゲートである。
【００７０】
これにより、タイミング規定回路がフリップフロップ以外の回路であっても、本ＬＳＩ設計方法を適用することができる。
【００７１】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００７２】
〔実施形態１〕
図１と図２は、実施形態１を適用したＬＳＩ設計方法を表す設計フローであり、図１はその中核部分、図２は中核部分を含む設計フロー全体である。図４は実施形態１によるバッファの削除方法の一例を示す説明図、図５はそのバッファの削除のためのタイミング解析の一例を示す説明図である。
【００７３】
実施形態１を適用したＬＳＩ設計方法を表す設計フローについて、図１を参照して説明する。
【００７４】
本実施形態においては、クロックツリーの分岐点に着目し、その分岐点から延びる複数の枝のうちの１本に含まれるクロックバッファを対象として、削除が可能かどうかを判定するステップを含む。
【００７５】
ステップ１は、分岐点サーチである。クロックツリー内の１つの分岐と、その分岐から延びる１つの枝において次の分岐との間に存在するバッファを削除候補の対象バッファとする。着目する枝から拡がるクロックツリーの末端に接続されているＦＦを対象ＦＦとし、それ以外のＦＦを非対象ＦＦとする。
【００７６】
ステップ３は、バッファが削除可能かどうかを判定するためのタイミング解析である。対象バッファのうちのいくつかを削除したと仮定したときに、非対象ＦＦを始点とし対象ＦＦを終点とするすべての信号伝搬経路におけるセットアップ余裕を０以上に保つことができる範囲内にあるか否かのタイミング解析を行う。
【００７７】
ステップ５は、バッファ削除である。上記タイミング解析の結果に基づいて、対象バッファの中から１個乃至複数個のバッファを削除する。上記タイミング解析の結果、バッファを削除するとセットアップ余裕を０以上に保つことができないと判断した場合には、バッファの削除は実行しない。
【００７８】
以上のステップは、実施形態１を適用したＬＳＩ設計方法を表す設計フローの中核部分であって、図２に示すように、ＬＳＩの設計フローにおいて、論理合成（ステップ１１）、配置（ステップ１２）、クロックツリー生成（ＣＴＳ）（ステップ１３）、配線（ステップ１４）の後に実行するのが好適である。バッファ削除（ステップ１５）の後で検証（ステップ１６）を実行する。論理合成（ステップ１１）、ＣＴＳ（ステップ１３）の後、配置配線（ステップ１２、１４）の前に、バッファ削除（ステップ１５）を実行してもよい。後者の場合は、レイアウト前にバッファ削除ステップを行うため、そのタイミング解析（ステップ３）において、レイアウト情報から抽出した配線容量と配線抵抗に基づく遅延値を参照することができない。配線容量と配線抵抗を仮定してモデル化した遅延値を仮定して実行する。一般にモデル化した遅延値は、マージンを大きくとるので、図２に示したように、配置配線後にバッファ削除（ステップ１５）を実行した方が、ステップ３でバッファを削除することができると判断される確率は高く、より多くのバッファを削除することができる。バッファの削除（ステップ１５）が完了した後は、デザインルールチェック（ＤＲＣ）、レイアウトと回路図の照合（ＬＶＳ）などの検証を行って（ステップ１６）設計フローを終了する。
【００７９】
バッファ削除（ステップ１５）を実行する前には、全てのＦＦ間でのセットアップ余裕（スラック）を０以上に調整しておくと良い。タイミング解析（ステップ３）において、バッファを削除してもスラックが０以上に保持できるか否かを判断しているので、削除前のスラックが負であるとバッファを削除することができないからである。
【００８０】
タイミング解析（ステップ３）について、詳述する。対象バッファを削除すると、非対象ＦＦを始点とし対象ＦＦを終点とするすべての信号伝搬経路におけるセットアップ余裕即ちスラックが、削除したバッファの遅延分だけ減る。対象バッファの中から、その合計の遅延値がスラックの値を超えない遅延値を持つバッファを削除することができる。一方、その他の信号伝搬経路については考慮する必要がない。対象ＦＦを始点とし非対象ＦＦを終点とする信号伝搬経路のスラックは、対象バッファからのバッファの削除によってむしろ増加する。始点である対象ＦＦからの出力タイミングが、対象バッファの削除によって早まるからである。非対象ＦＦ相互間および対象ＦＦ相互間の信号伝搬経路のスラックは、対象バッファからのバッファの削除によって変動しない。非対象ＦＦへのクロックの到達時間は、対象バッファの削除によって変化せず、対象ＦＦへのクロックの到達時間は、対象バッファの削除によって一律に早まるからである。
【００８１】
本実施形態において、対象バッファ、対象と非対象のＦＦを上記のように規定することによって、バッファの削除によってスラックに影響が現れる組合せ回路と影響を受けない組合せ回路とに、明確に区別できるようになり、スラックが悪化する経路にのみ注目すれば足りることを明らかにしている。これにより、クロックツリーにおけるバッファの削除を、系統的に実施することができることとなった。
【００８２】
図４を参照して、具体的に例示して説明する。ステップ４において着目した分岐を２２、着目した枝を３１とする。着目した枝３１の次の分岐２４までに含まれるバッファ１１１、１１２、１１３が対象バッファである。着目した枝３１から拡がる部分ツリー４１の末端に接続されているＦＦ１、ＦＦ２が対象ＦＦ（５１）であり、それ以外のＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６、ＦＦ７、ＦＦ８が非対象ＦＦ（５２）である。ＦＦ間には組合せ回路が存在するが、非対象ＦＦを始点とし対象ＦＦを終点とする組合せ回路６１、対象ＦＦどうしを始点および終点とする組合せ回路６２、対象ＦＦを始点とし非対象ＦＦを終点とする組合せ回路６３、および、非対象ＦＦどうしを始点および終点とする組合せ回路６４のみを代表して示した。
【００８３】
本実施形態で利用しているのは、対象バッファ１１１、１１２、１１３を何個削除しても、組合せ回路６２、６４のスラックには影響しないという特性である。
【００８４】
組合せ回路６４は、クロックツリーにおいて対象バッファの削除によって影響を受けない位置に接続されている。組合せ回路６２に対しては、削除するバッファの遅延時間だけ、始点と終点のクロック到達時刻を早めるが、始点と終点について等しく早めるに過ぎないので、スラックには影響しない。組合せ回路６３については、対象ＦＦを始点としているので、始点における出力が早まることになり、スラック即ち余裕は大きくなる。
【００８５】
一方、組合せ回路６１は、非対象ＦＦを始点として対象ＦＦを終点としているので、対象バッファの削除によって、始点へのクロック到達時刻が変化しないのに対して、終点へのクロック到達時刻が早まる。スラックは、削除したバッファの遅延時間分だけ、余裕を減らすことになる。逆に言うと、組合せ回路６１のように、非対象ＦＦを始点として対象ＦＦを終点としている信号伝搬遅延のスラックにのみ着目して、このスラックが負にならない限り対象バッファから１個乃至複数のバッファを削除することができる。非対象ＦＦを始点とし対象ＦＦを終点とするすべての信号伝搬経路のうち、ワーストケースとなったＦＦペアについて、スラックが負にならないように、対象バッファから１個乃至複数のバッファを削除するとよい。ワーストケースのペアのスラックが負にならなければ、他のペアのスラックは負にならないことは明らかだからである。
【００８６】
図５に、バッファの削除のためのタイミング解析（ステップ３）の一例をさらに詳細に示す。非対象ＦＦ５２から対象ＦＦ５１への信号伝搬経路のうち、ワーストケースとなったＦＦペアを示したものである。ここで、タイミング解析において、スラックを求める式は、下記のとおりである。
【００８７】
スラック＝（対象ＦＦまでのクロック遅延＋クロック周期）−（非対象ＦＦまでのクロック遅延＋データパスにおける信号伝搬遅延）
図５において、スラック＝（２６５＋３００）−（２７５＋２２０）＝７０ｐｓと算出される。ここで、クロック周期を３００ｐｓとし、ＦＦ自体が要求するセットアップ余裕は、説明を簡略化するために無視している。非対象ＦＦであるＦＦ３を始点とし、対象ＦＦであるＦＦ２を終点とする組合せ回路６１の信号伝搬遅延は２２０ｐｓである。ＦＦ３へのクロック遅延が２６５ｐｓ、ＦＦ２へのクロック遅延が２７０ｐｓであるので、スラックは７０ｐｓとなる。対象バッファからは、７０ｐｓの遅延に相当する分のバッファを削除してもよいことになる。１１１と１１２を削除すると遅延の合計は５０ｐｓなので、スラックは２０ｐｓとなる。１１２と１１３を削除すると遅延の合計は５５ｐｓなのでスラックは１５ｐｓとなる。１１１、１１２および１１３の３個の対象バッファの遅延の合計８０ｐｓなので、仮に３個すべてを削除すると、スラックは−１０ｐｓとなり、セットアップ違反となるから、すべてを削除することはできない。上記ワーストケースとなったＦＦペアについてさえ、スラックが負にならない限り、タイミング違反を発生させずにバッファを削減することができ、クロックツリーによる消費電力を削減することができる。
【００８８】
これにより、セットアップ余裕がある限り、より積極的にクロックツリー上のバッファを削減して、クロックツリーにおける消費電力を削減することができる。ＣＴＳ（ステップ１３）の結果、スキューを０にするため、クロックツリーはクロック発生源から全てのＦＦまでの遅延を一定とするように調整されている。本実施形態では、削除してもセットアップ違反を発生させないバッファを解析的かつ効率的に判定して削除することができる。
【００８９】
以上は、タイミング規定点がＦＦである場合についてのみ説明したが、タイミング規定点がラッチ、同期式クロック、クロックゲーティングのためのゲートであっても、同様に本実施形態を適用することができる。以下の変形例においても同様である。
【００９０】
〔実施形態１の変形（全ての分岐・枝についてバッファ削除ステップの繰返し）〕
図３は、実施形態１に種々の変形を適用したＬＳＩ設計方法を表す設計フローである。
【００９１】
全ての分岐・枝についてバッファ削除ステップを繰返すため、分岐点サーチ（ステップ１）の後に全ての分岐点をサーチしたか否かの判断ステップ（ステップ２）を設ける。クロックツリー内の全ての分岐を順次選び、その分岐から延びる全ての枝を順次選んでバッファを削除するステップ（ステップ３〜５）を繰り返し実施する。
【００９２】
必ずしもクロックツリー内のすべての分岐点を順次判定対象とする必要はないが、クロックツリー内の全てのバッファを網羅的に判定対象とし、本実施形態のアルゴリズムで削除可能なバッファを漏れなく削除することができる。
【００９３】
サーチする順序に特に制限はないが、一つの分岐から延びる枝を順次判定対象とした後、着目する分岐点をクロック発生源に近い上流側から下流側に、順次移すとより好適である。上流側を優先することにより、より広範囲のタイミング解析から順次削除対象バッファを抽出していくことができるので、より多くのバッファが削除できる可能性が高まる。
【００９４】
〔実施形態１の変形（削除候補絞込み）〕
分岐点サーチに先立って、信頼性などの別の要因で削除することが許されないバッファ、枝、もしくは分岐点を除外対象として指定しておき、削除候補を予め絞り込むことによって、全体の実行時間を短縮することができる。図３に示すように、削除候補絞込み（ステップ６）と対象バッファが除外対象か否かの判断（ステップ７）を追加する。
【００９５】
削除候補絞込み（ステップ６）は、分岐点サーチ（ステップ１）に先立って、削除することができないバッファ、枝、もしくは分岐点を除外対象として指定する。分岐点サーチ（ステップ１）の後、着目した分岐、枝、対象バッファが、ステップ９で指定された除外対象か否かの判断を行い（ステップ７）、除外対象であれば、その後のタイミング解析（ステップ３）、バッファ削除（ステップ５）を実行せずに分岐点サーチ（ステップ１）に戻る。
【００９６】
除外対象には、例えば、電気的設計ルールに対する余裕が最も小さいクロック伝搬経路に配置されたクロックバッファを指定することができる。
【００９７】
ＣＴＳ（ステップ１３）では、クロック発生源２００から末端のＦＦまでの遅延を等しくするように調整する。そのため、クロック遅延は、クロック発生源から最も遠いＦＦまでの遅延と等しくなるように調整される。このとき、クロックツリー内の最も遠いＦＦまでのクロック伝搬経路は、電気的設計ルールが許す限り遅延が最も小さくなるように設計される。最大の遅延がクロックツリー全体の遅延になるため、これを最小に設計することがクロックツリー全体の遅延を小さくし、回路規模や消費電力を抑えることにつながるからである。したがって、クロックツリー内の最も遠いＦＦまでのクロック伝搬経路が、結果的に電気的設計ルールに対する余裕が最も小さい経路になっていることが多い。電気的設計ルールとは、例えば、波形の立上りおよび立下り時間を所定の時間内以下に制限する規定など、信頼性を担保するためなどの目的で速度性能の仕様とは別に設けられているルールを指す。このクロック伝搬経路内のクロックバッファは、削除することが許されない。仮に削除すると、電気的設計ルールに違反し、場合によってはＬＳＩ全体の信頼性を保てなくなるからである。このようなクロック伝搬経路は、除外対象の枝と、また、これに含まれるバッファは除外対象のバッファと、それぞれ指定することができる。この他、何らかの理由で削除することが許されないバッファがあれば、同様に除外対象に指定しておく。
【００９８】
クロックツリーの中には、バッファを含まない枝が存在する。このような枝は、そもそも削除すべきバッファが存在しないのであるから、除外対象として指定する。
【００９９】
これにより、コンピュータの無駄な実行時間を節約し、短時間で設計方法を実施することができる。原理的に削除することが許されないバッファ、枝または分岐点については、タイミング解析（ステップ３、４）を実行しないで済ませることができるからである。
【０１００】
〔実施形態１の変形（バッファ削除後の再配線と遅延値の更新）〕
バッファが削除されたことによって、配線が変更され、削除されたバッファの前後において、遅延値が変動する。これに対応するために、図３に示すように、再配線・遅延値更新（ステップ８）を追加する。
【０１０１】
再配線・遅延値更新（ステップ８）は、変化した配線部分について容量と抵抗を抽出し、それに基づいて遅延計算をやり直してその配線を駆動するバッファの遅延時間を更新する。その他についてはバッファ削除前の遅延値をそのまま使用することにより、一連の処理時間を増大させない。
【０１０２】
図６は、バッファを削除する前後におけるタイミング解析の例である。対象バッファ３１のうち、バッファ１１２を削除した場合、バッファ削除前（ａ）において、バッファ１１２方向に折れ曲がっていた配線２５１、２５２が、バッファの削除に伴って再配線され、バッファ１１２を削除した後（ｂ）には長い直線２５３となる。バッファ１１１にとっての負荷容量と配線抵抗が、配線２５１から配線２５３に置き換わるので、バッファ１１１の遅延時間を、配線２５３による負荷容量と配線抵抗を抽出して再計算して更新する。
【０１０３】
これにより、バッファ削除後のタイミング解析、例えば分岐点サーチ（ステップ１、２）により別のバッファを対象としてさらなるバッファ削除（ステップ１５）を実行しようとするときのタイミング解析（ステップ３）を正確に行うことができる。
【０１０４】
タイミング解析（ステップ３）では、再配線前の遅延値の加減算のみに基づいて、バッファを削除することができるか否かの判断をするが、その後、再配線と遅延値の更新を行うと、正確にはその判断を再確認する必要がある。タイミング解析（ステップ３）の段階で、対象バッファからのバッファの削除を仮定したときに、再配線と関連するバッファの遅延値の更新を仮定して、バッファ削除の可否を判断することもできる。また、実際には再配線と容量、抵抗の抽出を行わず、簡易的なモデル化により更新後の遅延値を推定することもできる。
【０１０５】
〔実施形態２〕
実施形態１では、分岐点から延びる枝が複数あるときに、そのうちの１本の枝に着目して、対象バッファ、対象ＦＦを規定し、削除するバッファを決めた。本実施形態は、１つの分岐点から延びる複数の枝に同時に着目して対象バッファと対象ＦＦを規定し、削除するバッファを決めるものである。
【０１０６】
設計フローの中核部分は図１と同様であり、ＬＳＩの設計フローにおいて挿入できるステップも図２に示し実施形態１で説明した通りである。さらに、種々の変形についても、図３およびそれを引用して説明した実施形態１と同様である。以下、実施形態１と相違する点を中心に説明する。
【０１０７】
図７を参照して、本実施形態によるバッファの削除方法を説明する。
【０１０８】
クロック発生源２００、クロックツリー１００、およびタイミング規定回路としてのＦＦ１〜ＦＦ８は、図４に示したものと同様である。また、ＦＦ間の組合せ回路は、適宜図示を省略してある。
【０１０９】
クロックツリー内の１つの分岐２４に着目する。その分岐から拡がる部分ツリー４１の末端までに存在するバッファ１３１〜１３６を対象バッファとする。部分ツリー４１の末端に接続されているタイミング規定回路ＦＦ１〜ＦＦ２を対象ＦＦ５１とし、それ以外のタイミング規定回路ＦＦ３〜ＦＦ８を非対象ＦＦ５２とする。
【０１１０】
対象ＦＦ相互間のすべての信号伝搬経路におけるセットアップ余裕およびホールド余裕を０以上に保つことができる範囲内で、且つ、非対象ＦＦを始点とし対象ＦＦを終点とするすべての信号伝搬経路におけるセットアップ余裕を０以上に保つことができる範囲内で、対象バッファに含まれる１個または複数のバッファを削除する。
【０１１１】
図８を参照して、より具体的に説明する。図８は、実施形態２によるバッファの削除のためのタイミング解析の一例を示す説明図である。非対象ＦＦであるＦＦ３を始点とし、対象ＦＦであるＦＦ２を終点とする組合せ回路６１の信号伝搬遅延は２２０ｐｓである。ＦＦ３へのクロック遅延が２７５ｐｓ、ＦＦ２へのクロック遅延が２６５ｐｓであるので、クロック周期を３００ｐｓとしたときのスラックは７０ｐｓとなる。対象バッファからは、７０ｐｓ分のバッファを削除してもよいことになる。一方、対象ＦＦ相互間の信号伝搬経路の例としてＦＦ２からＦＦ１に至る組合せ回路６２の信号伝搬遅延は２７０ｐｓである。ＦＦ２へのクロック遅延が２６５ｐｓ、ＦＦ１へのクロック遅延が２７５ｐｓであるので、スラックは４０ｐｓとなる。ここで、対象バッファからは、例えば、バッファ１３５とバッファ１３６、バッファ１３２と１３３を削除することができる。バッファ１３５とバッファ１３６を削除することにより、組合せ回路６１のスラックが７０ｐｓから２０ｐｓに減るが、０以上であるから、セットアップ違反には至らない。このとき、バッファ１３５とバッファ１３６を削除しただけでは、対象ＦＦ相互間の信号伝搬経路で、タイミング制約違反が発生する可能性があるので、対象ＦＦに至る対象バッファは、できるだけ一律に削除するようにする。図８の例では、ＦＦ１に至るクロック遅延からもバッファ１３２と１３３を削除する。ＦＦ１へ至るクロック遅延は２７５ｐｓから２１０ｐｓになり、組合せ回路６２の信号伝搬遅延のスラックは、４０ｐｓから３０ｐｓに減る。
【０１１２】
これにより、実施形態１よりも多くのバッファを削除することができる。実施形態１では、対象ＦＦに対する部分ツリーにおいて対象ＦＦに共通する部分のバッファを削除することにより、対象ＦＦ相互間のスラックを全く変化させないで、バッファ削除の可否を判断した。そのため、対象ＦＦ相互間の信号伝搬遅延については、タイミング解析（ステップ３）の対象外とすることができた。その一方、部分ツリーにおいて対象ＦＦに共通する部分、即ち１本の枝に含まれるバッファを削除することができるに過ぎない。
【０１１３】
本実施形態２では、実施形態１とは異なり、複数の枝から同時にバッファを削除することができるので、消費電力を削減する効果が高い。一方、複数の枝で一律にバッファを削除することは、現実には不可能で、クロック遅延の減少量にばらつきが生じる。このため、複数のバッファを削除したものと仮定してタイミング解析（ステップ３）を実行し、対象ＦＦ相互間のセットアップおよびホールド違反が生じないことも検証しながら、削除を行う必要がある。ただし、対象ＦＦ相互間に限ったタイミング解析でよいので、ＬＳＩ全体のＳＴＡよりもはるかに短時間で済む。
【０１１４】
〔実施形態２の変形（全ての分岐についてバッファ削除ステップの繰返し）〕
図３に示したとおり、実施形態１と同様に、全ての分岐・枝についてバッファ削除ステップを繰返すため、分岐点サーチ（ステップ１）の後に全ての分岐点をサーチしたか否かの判断ステップ（ステップ２）を設ける。クロックツリー内の全ての分岐を順次選び、その分岐から延びる全ての枝に含まれるバッファを対象として削除ステップ（ステップ３〜５）を繰り返し実施する。
【０１１５】
分岐点サーチの順序について特に制限はないが、実施形態１において、クロック発生源２００に近い上流側から下流側へサーチしたのに対し、実施形態２においては、下流のＦＦ側からサーチするのが好適である。これにより、実施形態１よりも多くのバッファを削除することができる。
【０１１６】
〔実施形態２の変形（クラスタリング）〕
本実施形態２においては、対象ＦＦを駆動する複数の枝に含まれるバッファを同時に削除することにより、対象ＦＦ相互間のスラックの変動は小さく抑えることができる。一方、対象ＦＦと非対象ＦＦとの間のスラックの変動は大きい。
【０１１７】
対象ＦＦと非対象ＦＦとの間に多くの信号伝搬経路が存在し、かつそれらのセットアップ余裕（スラック）が小さいと、ステップ３、４においてバッファの削除条件を満たすと判断される確率が低くなる。これを解消するために、ＣＴＳ（ステップ１３）において、同一の組合せ回路を経由する信号伝搬経路の始点と終点のＦＦとを、同じ分岐から拡がる部分ツリーに接続する処理を行うとよい。複数のＦＦを入力とし別の複数のＦＦを出力とするような、例えば、ＡＬＵのような組合せ回路は、他の組合せ回路との信号の入出力が少ないため、入力ＦＦ群と出力ＦＦ群とを一つの部分ツリーで駆動するように構成するとよい。この処理は、クラスタリングと呼ばれている。相互に関係の深いＦＦを物理的に近くに配置することができ、配線が長くなることを予防することができるなどの利点があって、一般に採用されている。
【０１１８】
本実施形態２において、バッファ削除（ステップ１５）に先立ってクラスタリングを実行しておけば、スラック変動の大きい非対象ＦＦと対象ＦＦの間の信号伝搬経路が少なくなることが期待される。また、上記ＡＬＵの例の場合には、他の回路からの信号伝搬経路は、動作モード設定信号などのようにスラックが十分に大きい信号伝搬経路であることが期待される。したがって、クラスタリングされたＦＦを対象とするバッファ削除は、削除できるバッファの数が比較的多くなることが期待される。
【０１１９】
なお、クラスタリングは、実施形態２においてより有効に作用するが、実施形態１に適用しても有効である。バッファの削除によって、対象ＦＦ相互間のスラックを変動させず、非対象ＦＦと対象ＦＦの間のスラックのみを変動させる点では、実施形態１も同様だからである。
【０１２０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１２１】
例えば、実施の形態においては、１つのクロック系統についてのみクロックツリーからのクロックバッファの削除を行う設計方法を説明したが、複数のクロック系統を備えるＬＳＩにおいて、ぞれぞれのクロック系統のクロックツリーに本実施形態を適用することができる。
【符号の説明】
【０１２２】
１  分岐点サーチ
３  タイミング解析
５  バッファ削除
６  削除候補絞込み
８  再配線・遅延値更新
１１  論理合成
１２  配置
１３  クロックツリー合成（ＣＴＳ）
１４  配線
１５  バッファ削除
１６  検証（ＤＲＣ／ＬＶＳ）
１００  クロックツリー
２００  クロック発生源
１０１〜１６６  バッファ
２１〜２７  分岐
３１  枝
４１  部分ツリー
５１  対象ＦＦ
５２  非対象ＦＦ
６１、６２、６３、６４  組合せ回路
２５１、２５２、２５３  配線
【図１】
0005883676.tif 000002
【図２】
0005883676.tif 000003
【図３】
0005883676.tif 000004
【図４】
0005883676.tif 000005
【図５】
0005883676.tif 000006
【図６】
0005883676.tif 000007
【図７】
0005883676.tif 000008
【図８】
0005883676.tif 000009