(57)【要約】【課題】 ＬＳＩのチップ内遅延ばらつきによるクロックスキューへの影響を、クロックツリー合成以前の設計ステップで適切に予測して、タイミング制約違反に対処することによりクロックツリー合成後にタイミング制約違反が多発することを防ぐ。【解決手段】 クロックツリー合成以前のステップでタイミング解析を行う際に、クロックツリー構造予測手段７１がクロックツリー合成前の論理回路の構造から合成後のクロックツリーの構造を予測し、遅延時間予測手段７２が予測されたクロックツリーの構造に基づいて各クロックツリーの遅延時間を予測し、クロックスキュー予測手段７３がチップ内遅延変動によって生じるクロックスキューを予測する。【選択図】  図１
2006268165.tif 000002
【特許請求の範囲】
【請求項１】
回路の機能設計終了後、論理素子の接続情報であるネットリストを作成する論理合成と、バッファツリー型クロック分配回路であるクロックツリーの合成以前の該論理素子のレイアウト設計との少なくともいずれかにおいてタイミング解析を行う集積回路のタイミング解析装置において、
該クロックツリーの合成以前で、タイミング解析を行う際に、論理合成された回路構造から該クロックツリーの構造を予測するクロックツリー構造予測手段と、
予測されたクロックツリーの構造に基づいて、当該クロックツリーの遅延時間を予測する遅延時間予測手段と、
予測されたクロックツリーの遅延時間を用いて、チップ内遅延変動によって生じるクロック信号到達時間の差を示すクロックスキューを予測するクロックスキュー予測手段とを有する集積回路のタイミング解析装置。
【請求項２】
前記クロックツリー構造予測手段は、クロックツリーの起点から該クロックツリーの終点までの回路情報から組み合せ論理素子を検出し、検出された該組み合わせ論理素子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する請求項１に記載の集積回路のタイミング解析装置。
【請求項３】
前記クロックツリー構造予測手段は、前記レイアウト設計にて階層レイアウト設計を行う場合に、クロックツリーの起点から該クロックツリーの終点までの回路情報から階層設計における子階層の入力端子を検出し、検出された該入力端子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する請求項１または２に記載の集積回路のタイミング解析装置。
【請求項４】
前記遅延時間予測手段は、
部分的な子ツリーを持たないクロックツリーについては、該クロックツリーの終点に接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測し、
該部分的な子ツリーを持つクロックツリーについては、該子ツリーを経由せずに直接接続される論理の規模に対して予め作成された該遅延予測データベースを元に当該クロックツリーの遅延時間を予測した上で、該子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする請求項１に記載の集積回路のタイミング解析装置。
【請求項５】
前記遅延時間予測手段は、前記部分的な子ツリーを持つクロックツリーの処理対象ネットが該クロックツリーの起点でなく、親ツリーを持つ場合に、該親ツリーが生成されるネットを新たな処理対象ネットとして該クロックツリーの遅延時間を予測する請求項４に記載の集積回路のタイミング解析装置。
【請求項６】
前記遅延時間予測手段は、前記子ツリーの総遅延時間を、予めレイアウト設計の試行を行った結果から求める請求項１に記載の集積回路のタイミング解析装置。
【請求項７】
前記遅延時間予測手段は、タイミング解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合に、予め定義された非共有パスの比率と該子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測する請求項１、４および６のいずれかに記載の集積回路のタイミング解析装置。
【請求項８】
前記遅延時間予測手段は、タイミング解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合に、該始点および該終点を包含する親ツリーを検索した上で、該論理パスの始点が含まれる子ツリーの総遅延時間、該論理パスの終点が含まれる子ツリーの総遅延時間、および予め定義された非共有パスの比率と該親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とする請求項１、４および６のいずれかに記載の集積回路のタイミング解析装置。
【請求項９】
前記クロックスキュー予測手段は、予め定義されたチップ内遅延変動による遅延の変動率と、前記遅延時間予測手段で予測された遅延時間とを乗じることによって、クロックスキューを予測する請求項１および４〜８のいずれかに記載の集積回路のタイミング解析装置。
【請求項１０】
前記クロックスキューの予測結果に基づいてタイミング解析を行うタイミング解析手段を更に有する請求項１または９に記載の集積回路のタイミング解析装置。
【請求項１１】
請求項１〜１０のいずれかに記載の集積回路のタイミング解析装置と、該タイミング解析装置によって前記クロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出するタイミング制約違反検出手段と、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正する回路修正手段とを有する集積回路のタイミング最適化装置。
【請求項１２】
回路の機能設計終了後、論理素子の接続情報であるネットリストを作成する論理合成ステップと、バッファツリー型クロック分配回路であるクロックツリー合成ステップ以前の該論理素子のレイアウト設計ステップとの少なくともいずれかにおいてタイミング解析を行う集積回路のタイミング解析方法において、
該クロックツリー合成ステップ以前のステップで、タイミング解析を行う際に、該クロックツリー合成ステップ前の回路構造から該クロックツリー合成ステップ後のクロックツリーの構造を予測するクロックツリー構造予測ステップと、
予測されたクロックツリーの構造に基づいて、当該クロックツリーの遅延時間を予測する遅延時間予測ステップと、
予測されたクロックツリーの遅延時間を用いて、チップ内遅延変動によって生じるクロック信号到達時間の差を示すクロックスキューを予測するクロックスキュー予測ステップとを有する集積回路のタイミング解析方法。
【請求項１３】
前記クロックツリー合成ステップ以前の論理素子のレイアウト設計ステップは、該論理素子間の配線設計ステップである請求項１２に記載の集積回路のタイミング解析方法。
【請求項１４】
前記クロックツリー構造予測ステップは、クロックツリーの起点から該クロックツリーの終点までの回路情報から組み合せ論理素子を検出し、検出された組み合わせ論理素子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する請求項１２に記載の集積回路のタイミング解析方法。
【請求項１５】
前記クロックツリー構造予測ステップは、前記レイアウト設計ステップにて階層レイアウト設計を行う場合に、クロックツリーの起点から該クロックツリーの終点までの回路情報から階層設計における子階層の入力端子を検出し、検出された該入力端子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する請求項１２または１４に記載の集積回路のタイミング解析方法。
【請求項１６】
前記遅延時間予測ステップは、
部分的な子ツリーを持たないクロックツリーについては、該クロックツリーの終点に接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測し、
該部分的な子ツリーを持つクロックツリーについては、該子ツリーを経由せずに直接接続される論理の規模に対して予め作成された該遅延予測データベースを元に当該クロックツリーの遅延時間を予測した上で、該子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする請求項１２に記載の集積回路のタイミング解析方法。
【請求項１７】
前記遅延時間予測ステップは、前記部分的な子ツリーを持つクロックツリーの処理対象ネットが該クロックツリーの起点でなく、親ツリーを持つ場合に、該親ツリーが生成されるネットを新たな処理対象ネットとして該クロックツリーの遅延時間を予測する請求項１６に記載の集積回路のタイミング解析方法。
【請求項１８】
前記遅延時間予測ステップは、前記子ツリーの総遅延時間を、予めレイアウト設計の試行を行った結果から求める請求項１２に記載の集積回路のタイミング解析方法。
【請求項１９】
前記遅延時間予測ステップは、タイミング解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合に、予め定義された非共有パスの比率と該子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測する請求項１２、１６および１８のいずれかに記載の集積回路のタイミング解析方法。
【請求項２０】
前記遅延時間予測ステップは、タイミング解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合に、該始点および該終点を包含する親ツリーを検索した上で、該論理パスの始点が含まれる子ツリーの総遅延時間、該論理パスの終点が含まれる子ツリーの総遅延時間、および予め定義された非共有パスの比率と該親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とする請求項１２、１６および１８のいずれかに記載の集積回路のタイミング解析方法。
【請求項２１】
前記クロックスキュー予測ステップは、予め定義されたチップ内遅延変動による遅延の変動率と、前記遅延時間予測ステップで予測された遅延時間とを乗じることによって、クロックスキューを予測する請求項１２および１６〜２０のいずれかに記載の集積回路のタイミング解析方法。
【請求項２２】
前記クロックスキューの予測結果に基づいてタイミング解析を行うタイミング解析手段を更に有する請求項１２または２１に記載の集積回路のタイミング解析方法。
【請求項２３】
請求項１２〜２２のいずれかに記載の集積回路のタイミング解析方法の各ステップと、該タイミング解析方法によって前記クロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出するタイミング制約違反検出ステップと、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正する回路修正ステップとを有する集積回路のタイミング最適化方法。
【請求項２４】
回路の機能設計終了後、論理合成ステップで論理素子の接続情報であるネットリストを作成し、レイアウト設計ステップで論理素子の配置、バッファツリー型クロック分配回路であるクロックツリーの合成、さらに論理素子間の配線設計を行って、マスクデータ作成ステップで製造用マスクデータを作成し、これを用いて集積回路基板を製造する集積回路基板の製造方法において、
該クロックツリーの合成ステップ以前の設計ステップで、請求項１２〜２２のいずれかに記載の集積回路のタイミング解析方法によって得られたクロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出し、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正する集積回路基板の製造方法。
【請求項２５】
請求項１２〜２２のいずれかに記載の集積回路のタイミング解析方法の各ステップをコンピュータに実行させるための制御プログラム。
【請求項２６】
請求項２５に記載の制御プログラムが記録されたコンピュータ読み出し可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ（大規模集積回路）やＩＣ（集積回路）のチップ内遅延ばらつきによるクロック信号到達時間の差（クロックスキュー）への影響を、クロック分配回路生成前の設計ステップで予測する集積回路のタイミング解析装置、その予測結果を用いて回路を最適化する集積回路のタイミング最適化装置、集積回路のタイミング解析方法、その予測結果を用いて回路を最適化する集積回路のタイミング最適化方法、集積回路基板の製造方法、これらの方法の処理をコンピュータに実行させるための制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
【背景技術】
【０００２】
現在、ＬＳＩ（大規模集積回路）の設計では、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）ツールによる設計自動化を目的として、主として同期式回路が用いられている。
【０００３】
この同期式回路では、回路の動作基準としてクロック信号が生成されている。このクロック信号は、回路内のフリップフロップ回路、ラッチ回路およびメモリ回路などの全ての順序回路に対して、同時か、または、ほぼ同時と見なすことができる許容時間範囲内に到達することが前提とされており、この前提を崩さないように、クロック分配回路を構成する必要がある。
【０００４】
図７は、従来の一般的なＬＳＩの自動設計フローを説明するためのフローチャートである。
【０００５】
図７に示すように、ＬＳＩの設計工程（ステップ）では、回路の機能設計工程（ステップ）終了後、ステップＳ１１の論理合成工程（ステップ）で論理素子の接続情報であるネットリストを作成し、ステップＳ１２〜Ｓ１４のレイアウト設計ステップに移行する。このレイアウト設計ステップでは、ステップＳ１２の論理素子配置ステップ、ステップＳ１３の後述するクロックツリー合成ステップ、さらにステップＳ１４の論理素子間の配線ステップの各処理を順次行った後、LSI製造用マスクデータ作成ステップへと処理が進む。
【０００６】
上記時間的な前提を崩さないようにクロック分配回路を生成するためには、各順序回路のレイアウト設計において、物理的な位置を考慮して、より正確な遅延の見積りに基づいた設計が必要とされる。このため、ステップＳ１１の論理合成ステップではなく、ステップＳ１２の論理素子配置ステップの後に、ステップＳ１３のような特別なクロックツリー合成ステップを設けて、そのクロックツリー合成ステップでバッファツリー型クロック分配回路（クロックツリー）を自動的に生成するクロックツリー合成方法が主流になっている。このクロックツリー合成方法は、例えば特許文献１に開示されている。
【０００７】
一般的に、ＬＳＩの設計ステップでは、ＬＳＩが正しく動作するか否かを解析して、問題がある場合には回路の修正を行う必要がある。
【０００８】
まず、タイミング解析の概要について、図８を用いて説明する。
【０００９】
図８は、任意の組み合せ回路２３を通してデータのやり取りを行うフリップフロップ２１および２２の間の論理パスのタイミング解析について説明するための回路図である。
【００１０】
図８において、フリップフロップ２１および２２に対しては、クロック供給点２４からクロックバッファ２５、２６および２７によって構成されるクロックツリーによってクロックが順次供給される。
【００１１】
この回路に対して、主要なタイミング制約であるセットアップ制約およびホールド制約について考える。
【００１２】
チップ内の遅延ばらつきを考慮しない場合、セットアップ制約の検証は、
｛（クロック１サイクルの時間）＋（クロック供給点２４からフリップフロップ２２に至るクロックパスの遅延）−（クロック供給点２４からフリップフロップ２１に至るクロックパスの遅延）−（フリップフロップ２１〜２２のデータパスの遅延）＞０｝
を検証するものと言い換えることができる。
【００１３】
一方、ホールド制約の検証は、
｛（フリップフロップ２１〜２２のデータパスの遅延）−（（クロック供給点２４からフリップフロップ２２に至るクロックパスの遅延）−（クロック供給点２４からフリップフロップ２１に至るクロックパスの遅延））＞０｝
を検証するものと言い換えることができる。
【００１４】
タイミング解析では、ＬＳＩ内の全論理パスについて、上記式を満たしているか否かが確認される。
【００１５】
上記タイミング解析に加えて、例えば非特許文献１に記載されているように、更なる半導体プロセスの微細化に伴って、チップ内の各素子の遅延特性が一様と考えることができなくなっており、チップ内遅延ばらつきを考慮したタイミング解析が必要となってきている。
【００１６】
遅延ばらつきの影響を考慮したタイミング解析では、順序回路間のデータパスの遅延への影響だけではなく、クロックツリーへの遅延ばらつきの影響を考慮する必要がある。
【００１７】
クロックツリーの合成では、理想的に、クロックスキューが「０」になるように構成される。例えば図８の回路例では、
（クロック供給点２４からフリップフロップ２２に至るクロックパスの遅延）−（クロック供給点２４からフリップフロップ２１に至るクロックパスの遅延））＝０
になるように構成される。
【００１８】
しかしながら、どのようにクロックツリーが構成されたとしても、各素子に遅延ばらつきによる新たなスキューが発生する。
【００１９】
クロックツリーの遅延ばらつきを考慮した場合、セットアップ制約の検証は、
｛（クロック１サイクルの時間）＋（クロック供給点２４からフリップフロップ２２に至るクロックパスの遅延＋クロックバッファ２７の遅延ばらつきによる遅延の変動）−（クロック供給点２４から２１に至るクロックパスの遅延＋クロックバッファ２６の遅延ばらつきによる遅延の変動）−（フリップフロップ２１〜２２のデータパスの遅延）＞０｝
と表せる。
【００２０】
また、ホールド制約の検証は
｛（フリップフロップ２１〜２２のデータパスの遅延）−（（クロック供給点２４からフリップフロップ２２に至るクロックパスの遅延＋クロックバッファ２７の遅延ばらつきによる遅延の変動）−（クロック供給点２４からフリップフロップ２１に至るクロックパスの遅延＋クロックバッファ２６の遅延ばらつきによる遅延の変動））＞０｝
と表せる。
【００２１】
クロックバッファ２５は、フリップフロップ２１および２２に至るクロックパスにおける共通部分であり、遅延ばらつきによる遅延の変動があっても、これらの式の結果には影響せず、クロックスキューは発生しない。
【００２２】
したがって、遅延ばらつきによって新たに生じるクロックスキューは、フリップフロップ２１および２２に至るクロックパスにおける非共有部分の遅延変動の差であり、図７の回路例では、
（クロックバッファ２７の遅延ばらつきによる遅延の変動−クロックバッファ２６の遅延ばらつきによる遅延の変動）
と表せる。
【００２３】
遅延ばらつきが最も厳しい条件になった場合にチップの動作を保証するため、例えば特許文献２，３に開示されているように、セットアップ制約の検証では遅延ばらつきによるスキューが最大になるケースが検証され、ホールド制約の検証では最小になるケースが検証される。
【００２４】
ここで、図７の設計フロー全体の説明に戻る。
【００２５】
図７に示す設計フローにおいて、正確なタイミング解析は、配線の容量および抵抗が確定されるステップＳ１４の配線ステップの後でしか、実施することができない。
【００２６】
しかしながら、配線の変更による回路への影響は小さく、この配線ステップで大きなタイミング問題が発生した場合には、ステップＳ１２の論理素子配置ステップやステップＳ１１の論理合成ステップへの大きな手戻りが発生する。
【００２７】
このため、一般的なＬＳＩ設計フローでは、ステップＳ１１の論理合成ステップ、ステップＳ１２の論理素子配置ステップおよびステップＳ１４の配線ステップなど、各ステップ毎にタイミング解析が実施される。
【００２８】
図９は図７のステップＳ１１の論理合成ステップを詳細に説明するためのフローチャートであり、図１０は図７のステップＳ１２の論理素子配置ステップを詳細に説明するためのフローチャートであり、図１１は図７のステップＳ１４の配線ステップを詳細に説明するためのフローチャートである。
【００２９】
図９に示すように、図７のステップＳ１１の論理合成ステップでは、まず、初期回路が生成されるステップＳ１１１の初期回路生成ステップの後に、ステップＳ１１２のタイミング解析ステップが行われる。次に、ステップＳ１１３においてタイミング制約違反があるかどうかを検出し、ステップＳ１１３でタイミング制約違反が検出されると（ＹＥＳ）、ステップＳ１１４で、タイミング制約違反箇所に対して論理の構成とセルの駆動能力とが修正処理される。その後、ステップＳ１１２のタイミング解析ステップの処理に戻り、タイミング制約違反がなくなるまでこれらの処理を繰り返し、タイミング制約違反がなくなれば（ステップＳ１１３；ＮＯ）、図７のステップＳ１１の論理合成ステップを終了する。
【００３０】
図１０に示すように、図７のステップＳ１２の論理素子配置ステップでは、まず、論理素子の初期配置が生成されるステップＳ１２１の初期配置生成ステップの後に、ステップＳ１２２のタイミング解析ステップが行われる。次に、ステップＳ１２３においてタイミング制約違反があるかどうかを検出し、ステップＳ１２３でタイミング制約違反が検出されると（ＹＥＳ）、ステップＳ１２４で、違反箇所に対してセルの配置と駆動能力とが修正される。その後、ステップＳ１２２のタイミング解析ステップの処理に戻り、タイミング制約違反がなくなるまでこれらの処理を繰り返し、タイミング制約違反がなくなれば（ステップＳ１２３；ＮＯ）、図７のステップＳ１２の論理素子配置ステップを終了する。
【００３１】
図１１に示すように、図７のステップＳ１４の配線ステップでは、まず、初期配線が生成されるステップＳ１４１の初期配線生成ステップの後に、ステップＳ１４２のタイミング解析ステップが行われる。次に、ステップＳ１４３においてタイミング制約違反があるかどうかを検出し、ステップＳ１４３でタイミング制約違反が検出されると（ＹＥＳ）、ステップＳ１４４で、違反箇所に対して配線とセルの駆動能力とが修正される。その後、ステップＳ１４２のタイミング解析ステップの処理に戻り、タイミング制約違反がなくなるまでこれらの処理を繰り返し、タイミング制約違反がなくなれば（ステップＳ１４３；ＮＯ）、図７のステップＳ１４の配線ステップを終了する。
【００３２】
このように、ステップ毎にタイミング解析と回路修正とを行って、各ステップ毎に問題を解決することによって、次ステップからの手戻りが発生しないように設計することができる。
【００３３】
これらの論理合成ステップ（ステップＳ１１；図９）および論理素子配置ステップ（ステップＳ１２；図１０）におけるタイミング解析ステップ（ステップＳ１１２、Ｓ１２２）では、過去の経験や統計情報を元に、最終的な回路形状と配線容量・抵抗が予測されて、タイミング解析が実施される。また、クロックツリーについても、図７のステップＳ１３のクロックツリー合成ステップにおいて初めて生成されるため、クロックツリーの総遅延と遅延ばらつきを含むクロックスキューについて、予測に基づいた解析が行われる。
【特許文献１】特開平７−１３４６２６号公報
【非特許文献１】“Ｍｙ  Ｈｅａｄ  Ｈｕｒｔｓ，  Ｍｙ  Ｔｉｍｉｎｇ  Ｓｔｉｎｋｓ，  ａｎｄ  Ｉ  Ｄｏｎ’ｔ  Ｌｏｖｅ  Ｏｎ−Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎ”，  Ｓｙｎｏｐｓｙｓ  Ｕｓｅｒ  Ｇｒｏｕｐ  Ｍｅｅｔｉｎｇ，  ２００２．  Ｂｏｓｔｏｎ，  ＭＡ
【特許文献２】特開平１０−３０１９８２号公報
【特許文献３】特開平１１−３９３５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００３４】
しかしながら、現在のＬＳＩ設計では、レイアウト設計ステップにてバッファツリー型クロック分配回路（クロックツリー）を自動的に生成する方法が主流になっている。このため、クロックツリー合成ステップ以前の作業（処理ステップ）ではクロックツリーが存在しないため、クロックツリーの詳細な構造や遅延を検証することができない。
【００３５】
上記特許文献２，３では、クロックツリー合成後のタイミング解析にて遅延ばらつきを考慮するための方法であり、クロックツリー合成以前の設計ステップで遅延ばらつきの影響を適切に見積もることはできない。
【００３６】
ここで、図７の設計フローにおいて、ステップＳ１３のクロックツリー合成ステップ以前のステップでクロックツリー部分の遅延ばらつきを考慮しない場合には、クロックツリー合成ステップ後のステップで遅延ばらつきを考慮することにより、新たにクロックスキューが発生する。このため、この検証条件の差によって、ステップＳ１４の配線ステップでタイミング制約違反が多数発生することになってしまう。
【００３７】
ステップＳ１３のクロックツリー合成ステップの処理終了時点では各論理素子の配置は確定しており、タイミング制約違反が多数発生した場合には修正に時間がかかる。また、全てを修正することができない場合には、ステップＳ１１の論理合成ステップおよびステップＳ１２の論理素子配置ステップへの手戻りが発生する。
【００３８】
一方、クロックツリー合成ステップ後のタイミング制約違反を防止するために、遅延ばらつきによるクロックスキューを過大に考慮した場合、例えば図８のクロックバッファ２５に相当する部分がなく、全てクロックバッファ２６および２７に相当する非共通部分であるという前提で設計マージンを設定すると、タイミング制約が厳しくなり過ぎる。その結果、図９の論理合成ステップにおけるステップＳ１１２のタイミング解析とステップＳ１１３の回路修正および、図１０の論理素子配置ステップにおけるステップＳ１２２のタイミング解析とステップＳ１２３の回路修正で、繰り返し処理が終了されなくなったり、タイミング制約を守るために巨大な回路が生成されたりするという問題が生じる。
【００３９】
本発明は、上記従来の問題を解決するもので、ＬＳＩのチップ内遅延ばらつきによるクロックスキューへの影響を、クロックツリー合成以前の設計ステップで適切に予測することができる集積回路のタイミング解析装置、その予測結果を用いてタイミング制約違反に対処することによりクロックツリー合成後にタイミング制約違反が多発することを防ぐことができる集積回路のタイミング最適化装置、これを用いた集積回路のタイミング解析方法、これを用いた集積回路のタイミング最適化方法、集積回路基板の製造方法、これらの方法の各処理をコンピュータに実行させるための制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００４０】
本発明の集積回路のタイミング解析装置は、回路の機能設計終了後、論理素子の接続情報であるネットリストを作成する論理合成と、バッファツリー型クロック分配回路であるクロックツリーの合成以前の該論理素子のレイアウト設計との少なくともいずれかにおいてタイミング解析を行う集積回路のタイミング解析装置において、該クロックツリーの合成以前で、タイミング解析を行う際に、論理合成された回路構造から該クロックツリーの構造を予測するクロックツリー構造予測手段と、予測されたクロックツリーの構造に基づいて、当該クロックツリーの遅延時間を予測する遅延時間予測手段と、予測されたクロックツリーの遅延時間を用いて、チップ内遅延変動によって生じるクロック信号到達時間の差を示すクロックスキューを予測するクロックスキュー予測手段とを有し、そのことにより上記目的が達成される。
【００４１】
好ましくは、本発明の集積回路のタイミング解析装置におけるクロックツリー構造予測手段は、クロックツリーの起点から該クロックツリーの終点までの回路情報から組み合せ論理素子を検出し、検出された該組み合わせ論理素子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００４２】
さらに、好ましくは、本発明の集積回路のタイミング解析装置におけるクロックツリー構造予測手段は、前記レイアウト設計にて階層レイアウト設計を行う場合に、クロックツリーの起点から該クロックツリーの終点までの回路情報から階層設計における子階層の入力端子を検出し、検出された該入力端子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００４３】
さらに、好ましくは、本発明の集積回路のタイミング解析装置における遅延時間予測手段は、部分的な子ツリーを持たないクロックツリーについては、該クロックツリーの終点に接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測し、該部分的な子ツリーを持つクロックツリーについては、該子ツリーを経由せずに直接接続される論理の規模に対して予め作成された該遅延予測データベースを元に当該クロックツリーの遅延時間を予測した上で、該子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする。
【００４４】
本発明の集積回路のタイミング解析装置における遅延時間予測手段では、前記子ツリーの総遅延時間を、予めレイアウト設計の試行を行った結果から求めても良い。
【００４５】
さらに、好ましくは、本発明の集積回路のタイミング解析装置における遅延時間予測手段は、前記部分的な子ツリーを持つクロックツリーの処理対象ネットが該クロックツリーの起点でなく、親ツリーを持つ場合に、該親ツリーが生成されるネットを新たな処理対象ネットとして該クロックツリーの遅延時間を予測する。
【００４６】
さらに、好ましくは、本発明の集積回路のタイミング解析装置における遅延時間予測手段は、タイミング解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合に、予め定義された非共有パスの比率と該子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測する。
【００４７】
さらに、好ましくは、本発明の集積回路のタイミング解析装置における遅延時間予測手段は、タイミング解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合に、該始点および該終点を包含する親ツリーを検索した上で、該論理パスの始点が含まれる子ツリーの総遅延時間、該論理パスの終点が含まれる子ツリーの総遅延時間、および予め定義された非共有パスの比率と該親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とする。
【００４８】
さらに、好ましくは、本発明の集積回路のタイミング解析装置におけるクロックスキュー予測手段は、予め定義されたチップ内遅延変動による遅延の変動率と、前記遅延時間予測手段で予測された遅延時間とを乗じることによって、クロックスキューを予測する。
【００４９】
さらに、好ましくは、本発明の集積回路のタイミング解析装置において、前記クロックスキューの予測結果に基づいてタイミング解析を行うタイミング解析手段を更に有する。
【００５０】
本発明の集積回路のタイミング最適化装置は、本発明の上記集積回路のタイミング解析装置と、該タイミング解析装置によって前記クロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出するタイミング制約違反検出手段と、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正する回路修正手段とを有し、そのことにより上記目的が達成される。
【００５１】
本発明の集積回路のタイミング解析方法は、回路の機能設計終了後、論理素子の接続情報であるネットリストを作成する論理合成ステップと、バッファツリー型クロック分配回路であるクロックツリー合成ステップ以前の該論理素子のレイアウト設計ステップとの少なくともいずれかにおいてタイミング解析を行う集積回路のタイミング解析方法において、 該クロックツリー合成ステップ以前のステップで、タイミング解析を行う際に、該クロックツリー合成ステップ前の回路構造から該クロックツリー合成ステップ後のクロックツリーの構造を予測するクロックツリー構造予測ステップと、予測されたクロックツリーの構造に基づいて、当該クロックツリーの遅延時間を予測する遅延時間予測ステップと、予測されたクロックツリーの遅延時間を用いて、チップ内遅延変動によって生じるクロック信号到達時間の差を示すクロックスキューを予測するクロックスキュー予測ステップとを有し、そのことにより上記目的が達成される。
【００５２】
また、好ましくは、本発明の集積回路のタイミング解析方法において、前記クロックツリー合成ステップ以前の論理素子のレイアウト設計ステップは、該論理素子間の配線設計ステップである。
【００５３】
さらに、好ましくは、本発明の集積回路のタイミング解析方法におけるクロックツリー構造予測ステップは、クロックツリーの起点から該クロックツリーの終点までの回路情報から組み合せ論理素子を検出し、検出された組み合わせ論理素子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００５４】
さらに、好ましくは、本発明の集積回路のタイミング解析方法におけるクロックツリー構造予測ステップは、前記レイアウト設計ステップにて階層レイアウト設計を行う場合に、クロックツリーの起点から該クロックツリーの終点までの回路情報から階層設計における子階層の入力端子を検出し、検出された該入力端子から該終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００５５】
さらに、好ましくは、本発明の集積回路のタイミング解析方法における遅延時間予測ステップは、部分的な子ツリーを持たないクロックツリーについては、該クロックツリーの終点に接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測し、該部分的な子ツリーを持つクロックツリーについては、該子ツリーを経由せずに直接接続される論理の規模に対して予め作成された該遅延予測データベースを元に当該クロックツリーの遅延時間を予測した上で、該子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする。
【００５６】
さらに、好ましくは、本発明の集積回路のタイミング解析方法における遅延時間予測ステップは、前記部分的な子ツリーを持つクロックツリーの処理対象ネットが該クロックツリーの起点でなく、親ツリーを持つ場合に、該親ツリーが生成されるネットを新たな処理対象ネットとして該クロックツリーの遅延時間を予測する。
【００５７】
本発明の集積回路のタイミング解析方法における遅延時間予測ステップは、前記子ツリーの総遅延時間を、予めレイアウト設計の試行を行った結果から求めても良い。
【００５８】
さらに、好ましくは、本発明の集積回路のタイミング解析方法における遅延時間予測ステップは、タイミング解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合に、予め定義された非共有パスの比率と該子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測する。
【００５９】
さらに、好ましくは、本発明の集積回路のタイミング解析方法における遅延時間予測ステップは、タイミング解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合に、該始点および該終点を包含する親ツリーを検索した上で、該論理パスの始点が含まれる子ツリーの総遅延時間、該論理パスの終点が含まれる子ツリーの総遅延時間、および予め定義された非共有パスの比率と該親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とする。
【００６０】
さらに、好ましくは、本発明の集積回路のタイミング解析方法におけるクロックスキュー予測ステップは、予め定義されたチップ内遅延変動による遅延の変動率と、前記遅延時間予測ステップで予測された遅延時間とを乗じることによって、クロックスキューを予測する。
【００６１】
さらに、好ましくは、本発明の集積回路のタイミング解析方法において、前記クロックスキューの予測結果に基づいてタイミング解析を行うタイミング解析手段を更に有する。
【００６２】
本発明の集積回路のタイミング最適化方法は、本発明の上記集積回路のタイミング解析方法の各ステップと、該タイミング解析方法によって前記クロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出するタイミング制約違反検出ステップと、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正する回路修正ステップとを有し、そのことにより上記目的が達成される。
【００６３】
本発明の集積回路基板の製造方法は、回路の機能設計終了後、論理合成ステップで論理素子の接続情報であるネットリストを作成し、レイアウト設計ステップで論理素子の配置、バッファツリー型クロック分配回路であるクロックツリーの合成、さらに論理素子間の配線設計を行って、マスクデータ作成ステップで製造用マスクデータを作成し、これを用いて集積回路基板を製造する集積回路基板の製造方法において、該クロックツリーの合成ステップ以前の設計ステップで、本発明の上記集積回路のタイミング解析方法によって得られたクロックスキューの予測結果に基づいて回路のタイミング解析を行い、タイミング制約違反かどうかを検出し、該タイミング制約違反が検出された場合に、該タイミング制約違反の検出箇所の回路を、該タイミング制約違反がなくなるように修正するものであり、そのことにより上記目的が達成される。
【００６４】
本発明の制御プログラムは、本発明の上記集積回路のタイミング解析方法の各ステップをコンピュータに実行させるためのものであり、そのことにより上記目的が達成される。
【００６５】
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されたコンピュータ読み出し可能なものであり、そのことにより上記目的が達成される。
【００６６】
上記構成により、以下、本発明の作用を説明する。
【００６７】
本発明にあっては、例えば図７のステップＳ１１の論理合成ステップや、図７のレイアウト設計ステップにおけるステップＳ１２の論理素子の配置ステップなど、図７のステップＳ１３のクロックツリー合成ステップ前の設計ステップにおいて、図９のステップＳ１１２のタイミング解析や図１０のステップＳ１２２のタイミング解析などを行う際に、クロックツリー合成前の論理回路の構造から合成後のクロックツリーの構造を予測し、予測されたクロックツリーの構造に基づいて各クロックツリーの遅延時間を予測して、予測されたクロックツリーの遅延時間を用いてチップ内遅延変動によって生じるクロック信号到達時間の差であるクロックスキューを予測する。
【００６８】
クロックツリーの構造を予測する際には、クロックツリーの起点からクロックツリーの終点（各フリップフロップ）までの回路情報（論理回路情報）から組み合せ論理素子を検出する。この検出された組み合わせ論理素子から終点までの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。また、レイアウト設計にて階層レイアウト設計を行う場合には、クロックツリーの起点からクロックツリーの終点（各フリップフロップ）までの回路情報から階層設計における子階層の入力端子を検出する。この検出された入力端子から終点までの間に子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００６９】
部分的な子ツリーを持たないクロックツリーについては、終点に接続される論理の規模に対して予め作成された遅延予測データベースを元に各クロックツリーの遅延時間を予測する。また、部分的な子ツリーを持つクロックツリーについては、子ツリーを経由せずに直接接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測した上で、子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする。或いは、子ツリーの総遅延時間を、予めレイアウト設計の試行を行った結果から求めてもよい。
【００７０】
チップ内遅延ばらつきを考慮したタイミング解析では、クロックツリーの分岐点以降の非共通パス部分に着目する。これは、クロックパスのうちの共通部分については、遅延ばらつきによる遅延の変動があっても、セットアップ制約やホールド制約の式の結果に影響を与えず、スキューが発生しないからである。
【００７１】
解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合には、予め定義された非共有パスの比率と子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測することが可能となる。
【００７２】
また、解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合には、始点および終点を包含する親ツリーを検索した上で、論理パスの始点が含まれる子ツリーの総遅延時間、論理パスの終点が含まれる子ツリーの総遅延時間、および予め定義された非共有パスの比率と親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とすることが可能となる。
【００７３】
予測された各クロックツリーの遅延時間と、予め定義しておいたチップ内遅延変動による遅延の変動率とを乗じることによって、クロックスキューを予測することが可能となる。
【００７４】
このように、クロックツリー合成前の回路構造（論理回路の構造）からクロックツリー合成後のクロックツリーの構造を予測することによって、遅延ばらつきによるクロックスキューとして適切な値を予測することが可能となる。
【００７５】
さらに、クロックツリー合成前のステップで、得られたクロックスキューの予測値に基づいてタイミング解析を行い、タイミング制約違反が発生した箇所の回路を、タイミング制約違反が発生しないように修正することによって、クロックツリー合成後にタイミング制約違反が多発することを防ぐことが可能となる。
【発明の効果】
【００７６】
以上により、本発明によれば、クロックツリー合成前の論理回路の構造からクロックツリー合成後のクロックツリーの構造を予測することにより、遅延ばらつきによるクロックスキューとして適切な値を予測することができる。さらに、この予測値に基づいたタイミング解析により検出されたタイミング制約違反に予め対処することによって、クロックツリー合成後にタイミング制約違反が多発することを防ぐことができる。
【発明を実施するための最良の形態】
【００７７】
以下、本発明の集積回路のタイミング解析装置を含むタイミング最適化装置およびタイミング解析方法を含むタイミング最適化方法の実施形態について図面を参照しながら説明する。
【００７８】
図１は、本発明の大規模集積回路のタイミング最適化装置の実施形態における要部構成例を示すブロック図である。
【００７９】
図１において、本実施形態の大規模集積回路（ＬＳＩ）のタイミング最適化装置１は、情報入力用および選択用のキーボードやマウスなどの他、外部情報入力を可能とする入力部２と、本発明の大規模集積回路のタイミング解析方法をコンピュータにより実行させるための処理手順が記述された制御プログラムおよびそのデータが格納されている可読記録媒体としてのＲＯＭ３と、制御手段がワークメモリとして利用するＲＡＭ４と、本発明のタイミング解析処理を実行するための各種データを格納したデータベース５と、初期画面、情報入力および選択内容などを示す画面の他、解析結果などを表示可能とする表示部６と、ＣＰＵ（中央演算処理装置）からなる制御手段７とを有している。
【００８０】
可読記録媒体としては、各種ＩＣメモリ、ハードディスク（ＨＤ）、光ディスク（例えばＣＤ）および磁気記録媒体（例えばＦＤ）などの記憶装置であり、本発明の制御プログラムおよびそのデータがコンピュータ読み取り可能な記録媒体であって、この記録媒体から読み取られた制御プログラムおよびそのデータがＲＯＭ３からＲＡＭ４内に格納されて制御手段７によって実行される。
【００８１】
データベース５は、本発明のタイミング解析処理を実行するための各種データとして、後述するが、遅延時間予測処理をするために予め作成されたクロックツリーに接続される論理の規模（回路規模）対クロック遅延のデータベースＤ１と、別途定義した非共有パス比率Ｅ１と、別途定義した遅延ばらつき比率Ｆ１とを格納している。
【００８２】
制御手段７は、詳細に後述するが、本発明の制御プログラムおよびそのデータに基づいて、クロックツリーの合成以前で、タイミング解析を行う際に、論理合成された論理回路の構造からクロックツリーの構造を予測するクロックツリー構造予測手段７１と、この予測されたクロックツリーの構造に基づいて、各クロックツリーの遅延時間を予測する遅延時間予測手段７２と、予測されたクロックツリーの遅延時間を用いて、チップ内遅延変動によって生じるクロック信号到達時間の差を示すクロックスキューを予測するクロックスキュー予測手段７３と、クロックスキューの予測結果に基づいてタイミング解析を行うタイミング解析手段７４と、タイミング制約違反かどうかを検出するタイミング制約違反検出手段７５と、タイミング制約違反検出手段７５でタイミング制約違反が検出された場合に、タイミング制約違反の検出箇所の回路（論理回路）を、タイミング制約違反がなくなるように修正する回路修正手段７６との各機能を実行する。これらのクロックツリー構造予測手段７１、遅延時間予測手段７２、クロックスキュー予測手段７３およびタイミング解析手段７４により本発明の大規模集積回路のタイミング解析装置１Ａの制御手段７Ａが構成されている。この大規模集積回路のタイミング解析装置１Ａの制御手段７Ａと、タイミング制約違反検出手段７５および回路修正手段７６とにより大規模集積回路（ＬＳＩ）のタイミング最適化装置１の制御手段７が構成されている。
【００８３】
クロックツリー構造予測手段７１は、クロックツリーの起点からクロックツリーの終点となるフリップフロップまでの論理回路情報から、階層設計における子階層の入力端子や、組み合せ論理素子を検出し、検出された入力端子や組み合わせ論理素子からフリップフロップまでの間に部分的なクロックツリーである子ツリーが生成されることを前提として、最終的なクロックツリーの構成を予測する。
【００８４】
遅延時間予測手段７２は、部分的な子ツリーを持たないクロックツリーについては、終点に接続される論理の規模に対して予め作成された遅延予測データベースを元に各クロックツリーの遅延時間を予測し、また、部分的な子ツリーを持つクロックツリーについては、子ツリーを経由せずに直接接続される論理の規模に対して予め作成された遅延予測データベースを元にクロックツリーの遅延時間を予測した上で、その子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする。
【００８５】
クロックスキュー予測手段７３は、予め定義されたチップ内遅延変動による遅延の変動率と、遅延時間予測手段７２で予測された遅延時間とを乗じることによって、クロックスキューを予測する。
【００８６】
上記大規模集積回路のタイミング解析装置１Ａを用いたタイミング解析方法について具体的に説明する前に、まず、一般的なクロックツリーの構造について図２および図３により説明する。
【００８７】
図２（ａ）〜図２（ｆ）は、一般的なクロックツリーの構造を説明するための回路図である。なお、図２（ａ）、図２（ｃ）および図２（ｅ）はそれぞれ、クロックツリー合成前の回路図を示しており、図２（ｂ）、図２（ｄ）および図２（ｆ）はそれぞれ、クロックツリー合成後の回路図を示している。
【００８８】
図２（ｂ）の回路３２は、図２（ａ）の回路３１に対してクロックツリー合成を行った後の回路図である。図２（ａ）の回路３１に対してクロックツリーの合成を行う際には、クロックツリーの起点として指定された点３１１から、同じクロックに所属する全てのフリップフロップ３１２までの遅延が一律になるように、図２（ｂ）に示すバッファツリー型の回路３２を構成する。
【００８９】
図２（ｄ）の回路３４は、図２（ｃ）の回路３３に対してクロックツリー合成を行った後の回路図である。図２（ｃ）の回路３３のように、クロック系統のゲーテッドクロック用として組み合せ論理素子３３１が挿入されている場合についても、その先に接続されているフリップフロップ３３３までの遅延が、その他のフリップフロップ３３２までの遅延と等しくなるように、図２（ｄ）に示すバッファツリー型の回路３４を構成する。ただし、この場合、クロックツリー合成前後で論理を等しくするために、クロックツリー合成後の回路３４には、ゲーテッドクロック用に、組み合せ論理素子３３１以降にこれを含む子ツリー３３４を有する回路構成となっている。
【００９０】
図２（ｆ）の回路３６は、図２（ｅ）の回路３５に対してクロックツリー合成を行った後の回路図である。階層レイアウト設計を行う場合に、図２（ｅ）の回路３５のように、クロックツリー合成前のクロック系統に子階層のクロック入力端子３５１が含まれている場合についても、その先に接続されているフリップフロップ３５３までの遅延が、その他のフリップフロップ３５２までの遅延と等しくなるように、図２（ｆ）に示すバッファツリー型の回路３６を構成する。ただし、この場合、クロックツリー合成処理が階層別に実施されるため、子階層のクロック入力端子３５１以降にこれを含む子ツリー３５４を有する回路構成となっている。
【００９１】
図３（ａ）〜図３（ｄ）は、子ツリーが存在する場合について、クロックツリーの構造例を説明するための回路図である。なお、図３（ａ）および図３（ｃ）はそれぞれ、クロックツリー合成前の回路図を示し、図３（ｂ）および図３（ｄ）はそれぞれ、クロックツリー合成後の回路図を示している。
【００９２】
図３（ｂ）の回路４２は、図３（ａ）の回路４１に対してクロックツリー合成を行った後の回路図である。図３（ａ）の回路４１では、クロックツリーの起点４１７から並列のクロックネット４１１，４１２が接続され、一方のクロックネット４１１に組み合せ論理素子４１３が挿入されてフリップフロップ４１４、４１５に接続され、他方のクロックネット４１２に複数のフリップフロップ４１６が接続されている。これに対して、図３（ｂ）の回路４２のように、組み合せ論理素子４１３以降にこれを含む子ツリー４２１を有する回路構成となっいる。ここで、図３（ｂ）のように、子ツリー４２１に接続されるフリップフロップ４１４、４１５の数が、親ツリー４２２に直接接続される複数のフリップフロップ４１６の数よりも少ない場合には、子ツリー４２１の規模よりも親ツリー４２２の規模が大きくなる。この場合、各フリップフロップ４１４〜４１６への遅延を等しくするために、回路全体の遅延（子ツリー４２１の遅延＋親ツリー４２２の一部４２３の遅延）が親ツリー４２２の遅延と等しくなるように、子ツリー４２１が親ツリー４２２の途中に接続されている。
【００９３】
図３（ｄ）の回路４４は、図３（ｃ）の回路４３に対してクロックツリー合成を行った後の回路図である。図３（ｃ）の回路４３では、クロックツリーの起点４３７から並列のクロックネット４３１，４３２が接続され、一方のクロックネット４３１に組み合せ論理素子４３３が挿入されてフリップフロップ４３４、４３５、・・に接続され、他方のクロックネット４３２に複数のフリップフロップ４１６、・・が接続されている。これに対して、図３（ｄ）の回路４４のように、組み合せ論理素子４３３以降にこれを含む子ツリー４４１を有する回路構成となる。ここで、図３（ｄ）のように、子ツリー４４１に接続される複数のフリップフロップ４３４、４３５、・・の数が親ツリー４４４に直接接続されるフリップフロップの数よりも多い場合には、子ツリー４４１の規模よりも親ツリー４４４が直接駆動するフリップフロップの部分ツリー４４２の規模が小さくなる。この場合、各フリップフロップへの遅延を等しくするために、親ツリーに直接接続されるフリップフロップに対して遅延回路４４３が挿入されて、親ツリー４４４の遅延と、子ツリー４４１の遅延がほぼ等しくなる。
【００９４】
次に、ここで、本実施形態の大規模集積回路のタイミング解析装置１Ａを用いたタイミング解析方法について具体的に説明する。
【００９５】
本実施形態では、図１で前述したように、クロックツリー合成前の設計ステップでクロックツリーの構造を予測するクロックツリー構造予測手段７１は、このようなクロックツリーの構成を前提として、クロックツリー合成前の論理回路の構造からクロックツリー合成後のクロックツリーの構造を予測する。さらに、遅延時間予測手段７２により、予測されたクロックツリーの構造に基づいて各クロックツリーの遅延時間を予測し、クロックスキュー予測手段７３により、予測された遅延時間を用いて、遅延ばらつきによるクロックスキューを求める。これについて図４〜図６により具体的に説明する。
【００９６】
図４は、図１の大規模集積回路のタイミング解析装置１Ａを用いたタイミング解析方法の各処理を示すフローチャートである。
【００９７】
本実施形態では、図７のステップＳ１１の論理合成ステップやレイアウト設計ステップにおけるステップＳ１２の論理素子の配置ステップのようなクロックツリー合成前の設計ステップにおいて、図９のステップＳ１１２や図１０のステップＳ１２２のようにタイミング解析処理（タイミング解析手段７４）を行う際に（タイミング解析処理を行う前に）、クロックツリー構造予測手段７１がクロックツリー合成前の論理回路の構造からクロックツリー合成後のクロックツリーの構造を予測し、遅延時間予測手段７２がその予測されたクロックツリーの構造に基づいて各クロックツリーの遅延時間を予測して、クロックスキュー予測手段７３が遅延ばらつきによるクロックスキューを求める。
【００９８】
なお、以下では、図４の内容を補足するために、遅延ばらつきを考慮したタイミング解析の事例を説明する図６、および子ツリーを含む回路例としての図２および図３を用いて説明を行う。
【００９９】
クロックツリー構造予測手段７１によるクロックツリー構造予測ステップでは、クロックツリー合成対象の回路の中から、図２（ｅ）に示す階層設計における子階層の入力端子３５１の先にこれを含む子ツリー３５４や、図２（ｂ）に示すゲーテッドクロックを構成する組み合わせ論理素子３３１の先にこれを含む子ツリー３３４が生成されることを前提として、クロックツリーの構造を予測する。このために、まず、該当する子階層の入力端子３５１や論理素子３３１を検出するための処理が必要である。
【０１００】
そこで、図７のステップＳ１１の論理合成ステップやレイアウト設計ステップにおけるステップＳ１２の論理素子の配置ステップのようなクロックツリー合成ステップ前の設計ステップにおいて、図９のステップＳ１１２や図１０のステップＳ１２２のようにタイミング解析を行う際に、図４の処理フローを開始して、まず、ステップＳ２１で、クロックツリー合成前の論理回路と、図３（ａ）に示すクロックツリーの起点４１７のようなクロック定義点に関する情報を読み込む。
【０１０１】
次に、ステップＳ２２で、レイアウト設計にて階層レイアウト設計を用いるかどうかを判定し、レイアウト設計にて階層レイアウト設計を用いる場合（ＹＥＳ）は、図４のステップＳ２３で、階層設計における子階層の入力端子を抽出する。抽出に当たっては、前のステップＳ２１で読み込まれた論理回路と、図３（ａ）に示すクロックツリーの起点４１７のようなクロック定義点に関する情報を元に、起点から下流方向にネットを移動して、図３（ａ）に示すフリップフロップのクロック端子４１４〜４１６、・・のような終点となるフリップフロップに至るパスを全て検索する。検索したパスの中から、子階層の入力端子を全て抽出する。
【０１０２】
続いて、ステップＳ２２でレイアウト設計にて階層レイアウト設計を用いない場合（ＮＯ）かまたは、階層レイアウト設計を用いかつステップＳ２３の処理終了後、即ち、階層レイアウト設計に関わらず、図４のステップＳ２４で、図３（ａ）に示す組み合せ論理素子４１３のような組み合わせ論理素子を抽出する。このときの抽出は、子階層の入力端子の場合と同様に、前のステップＳ２１で読み込まれた論理回路と、図３（ａ）に示すクロックツリーの起点４１７のようなクロック定義点に関する情報を元に、起点から下流方向にネットを移動して、図３（ａ）に示す終点となるクロック端子のフリップフロップ４１４〜４１６に至るパスを全て検索する。この検索したパスの中から、組み合せ論理素子を全て抽出する。
【０１０３】
このようにして、子階層の入力端子や論理素子を抽出した後、遅延時間予測手段７２による遅延時間予測ステップにおいて、クロックツリー構造予測手段７１が予測したクロックツリーの構造に基づいて、各クロックツリーの遅延時間を予測する。
【０１０４】
まず、図４のステップＳ２５において、各子ツリーおよびクロックツリー全体の遅延時間を予測する。クロックツリーの遅延時間の予測に際しては、ステップＳ２１で読み込まれたクロック定疑点の情報、ステップＳ２３、Ｓ２４で抽出された子階層の入力端子と論理素子の情報、および、予め作成されたクロックツリーに接続される論理の規模（回路規模）対クロック遅延のデータベースＤ１を用いる。
【０１０５】
図５は、図４の遅延時間予測処理ステップＳ２５について詳細に説明するためのフローチャートである。
【０１０６】
まず、ステップＳ２５１においては、図３（ａ）のクロックの起点４１７となるネットを処理の対象とする。
【０１０７】
次に、条件判断のステップＳ２５２において、処理対象のネット上に、図４のステップＳ２３，Ｓ２４で抽出された子階層の入力端子や図３（ａ）のような組み合せ論理素子４１３が存在し、かつ、それらの先に予想される図３（ｂ）のような子ツリー４２１のうち、総遅延が未確定のものがある場合には、ステップＳ２５３において、図３（ａ）のクロックネット４１１のような子ツリーが予想されるネットを新たな対象として、条件判断のステップＳ２５２の処理に戻る。
【０１０８】
条件判断のステップＳ２５２において、処理対象のネット上に、図４のステップＳ２３，Ｓ２４で抽出された子階層の入力端子や組み合せ論理素子が存在しないか、または、存在していても子ツリーの予想遅延が確定している場合（ＮＯ）には、ステップＳ２５４の処理に進み、処理対象ネット自体の遅延を予測する。
【０１０９】
ステップＳ２５４では、クロックツリーに接続される論理の規模対クロック遅延のデータベースＤ１を用いる。一般的な傾向として、クロックツリーが駆動すべきフリップフロップ数が多いと、大規模なクロックツリーが必要になるため、クロックツリーの遅延が大きくなる。また、フリップフロップ数が少ないと、クロックツリーの遅延は小さくなる。このような傾向を、試行データや過去の設計結果の集計を行って求め、「フリップフロップの数  対  生成されるクロックツリーの遅延の対応表」としてデータベースＤ１に格納することができる。このデータベースＤ１と、処理対象ネットに直接接続されているフリップフロップの数から、予想されるクロックツリーの遅延を求めることができる。
【０１１０】
条件判断のステップＳ２５５において、図３（ｂ）の子ツリー４２１または図３（ｄ）の子ツリー４４１のように、処理対象のネット上に図４のステップＳ２３，Ｓ２４で抽出された子階層の入力端子や論理素子が存在しないケース（ＮＯ）であるか、または、図３（ｂ）の親ツリー４２２または図３（ｄ）の部分ツリー４４２のように、子ツリーが存在していて子ツリーの予想遅延が確定しているケース（ＹＥＳ）であるかどうかを判断する。
【０１１１】
前者である場合（ＮＯ；部分的な子ツリーを持たない場合）には、ステップＳ２５６の処理に進み、ステップＳ２５４で求めた遅延を処理対象ネットに生成されるクロックツリーの予想遅延とする。
【０１１２】
また、後者である場合（ＹＥＳ；部分的な子ツリーを持つ場合）には、ステップＳ２５７の処理に進み、クロックツリーの構成が、図３（ｂ）の回路４２のように、子ツリー４２１の遅延が親ツリー４２２の遅延より小さいケースと、図３（ｄ）の回路４４のように子ツリー４４１の遅延が親ツリーの部分ツリー４４２の遅延よりも大きいケースとを想定し、ステップＳ２５４で求めた処理対象ネットの遅延と、子ツリーの遅延とのうちの大きい方を、処理対象ネットに生成されるクロックツリーの予想遅延とする。
【０１１３】
処理対象ネットの予想遅延の確定後、条件判断のステップＳ２５８の処理に進み、処理対象ネットがクロックの起点でなく、親ツリーを持つ場合には（ＹＥＳ）、ステップＳ２５９で親ツリーが生成されるネットを新たな処理対象ネットとして、条件判断のステップＳ２５２の処理に戻る。
【０１１４】
また、処理対象ネットがクロックの起点のネットである場合は、クロックツリーの総遅延を求める作業（ステップＳ２５）を終了し、次の図４のステップＳ２６の処理に進む。
【０１１５】
即ち、部分的な子ツリーを持たないクロックツリーについては、クロックツリーの終点に接続される論理の規模に対して予め作成された遅延予測データベースを元に各クロックツリーの遅延時間を予測し、また、部分的な子ツリーを持つクロックツリーについては、子ツリーを経由せずに直接接続される論理の規模に対して予め作成された該遅延予測データベースを元にクロックツリーの遅延時間（処理対象ネットの遅延時間）を予測した上で、子ツリーの遅延時間と比較して、大きい方の遅延時間をクロックツリーの遅延時間とする。この場合に、処理対象ネットがクロックツリーの起点ではなく、親ツリーを持つ場合には、その親ツリーが生成されるネットを新たな処理対象ネットとしてクロックツリーの遅延時間を予測する。
【０１１６】
次の 図４のステップＳ２６では、図８の２４〜２１および２４〜２２のような論理パスの始点から終点へのクロックパスのうち、遅延ばらつきについては、図８の２６および２７のような非共有パスについてのみ考慮すればよいことに着目して、図４のステップＳ２５で予測した各子ツリーの遅延時間と、別途定義した非共有パス比率Ｅ１とを用いて、始点および終点が共に同一子ツリーに含まれる非共有パスの遅延を求める。
【０１１７】
ＬＳＩのレイアウト設計においては、タイミング制約に基づいて論理素子の配置が行われるため、通常、密接に関係するフリップフロップは近い位置に配置されることが多く、クロックツリーの同じ枝に属することが多い。
【０１１８】
そこで、本実施形態では、このような状況を反映するために、非共有パスの比率Ｅ１を用いる。非共有パス比率Ｅ１は、予め試行データを用いてレイアウト設計を行い、その結果から、互いに関連するフリップフロップ間のクロックツリーの遅延のうち、非共有パスの遅延の割合がどの程度であるかを集計して準備する。
【０１１９】
非共有パスの遅延は、
（各子ツリーの遅延時間×非共有パス比率）
として算出されるが、集計結果に応じて、
（各子ツリーの遅延時間×非共有パス比率＋非共有パス遅延の一律部分）
のように、予測式を変えた応用も可能である。
【０１２０】
即ち、タイミング解析対象となる論理パスの始点および終点が同一の子ツリーに接続されている場合に、予め定義された非共有パスの比率と子ツリーの総遅延時間とを乗じることによって、分岐点から先の非共有パスの遅延時間を予測する。
【０１２１】
このようにして、全ての子ツリー、およびクロックツリー全体に対して、非共有パスの遅延を求めた後、後述するが、クロックスキュー予測手段７３によるクロックスキュー予測ステップにおいて、遅延ばらつきによるクロックスキューを求める。
【０１２２】
図４のステップＳ２７では、論理パスの始点および終点が、同一の子ツリーに接続されるか、または、別の子ツリーに接続されるかによって、非共有パスの遅延値の予測方法を変え、適切な非共有パスの予測に基づいて、遅延ばらつきによるクロックスキューを求める。この具体例を図６に示している。
【０１２３】
図６は、図４の遅延バラツキによるクロックスキュー予測ステップＳ２７について、その内容を詳細に説明するためのフローチャートである。
【０１２４】
図６に示すように、まず、ステップＳ２７１において、任意の論理パスの始点および終点について、図３（ａ）のフリップフロップ４１４，４１５のように同一のクロックネット４１１に接続されているか、または図３（ａ）のフリップフロップ４１５，４１６のように異なるクロックネット４１１，４１２に接続されているかどうかを判断する。
【０１２５】
図３（ａ）のフリップフロップ４１４，４１５のように、任意の論理パスの始点および終点が同一のクロックネット４１１に接続されている場合（ステップＳ２７１；ＹＥＳ）には、ステップＳ２７２の処理に進み、そのネットに対して図４のステップＳ２６で求めた子ツリーの非共有パスの遅延値と、別途定義した遅延ばらつき比率Ｆ１とから、その論理パスのタイミング解析で考慮すべき遅延ばらつきによるクロックスキューを
（子ツリーの非共有パスの遅延値×遅延ばらつき比率）
として算出する。
【０１２６】
また、図３（ａ）のフリップフロップ４１５，４１６のように、任意の論理パスの始点および終点が異なるクロックネット４１１，４１２に接続されている場合（ステップＳ２７１；ＮＯ）には、ステップＳ２７３の処理に進み、始点および終点が所属する親ツリーが予想されるクロックネット４１２を検索する。始点、終点または両方が子ツリーに所属する場合は、それぞれに予想される子ツリー４２１の総遅延時間と、親ツリー４２２の非共有パスの遅延時間の大小関係を比較する。ここで、総遅延時間は図４のステップＳ２５で、非共有パスの遅延時間は図４のステップＳ２６で、既に求められている。
【０１２７】
親ツリーの非共有パスの遅延時間が各子ツリーの総遅延時間よりも大きい場合（ＹＥＳ）は、ステップＳ２７５の処理に進み、その論理パスのタイミング解析で考慮すべき遅延ばらつきによるクロックスキューを
（親ツリーの非共有パスの遅延値×遅延ばらつき比率）
として算出する。この処理は、図３（ｂ）のように、親ツリー４２２が子ツリー４２１に対して大きく、子ツリー４２１の起点が親ツリー４２２の起点よりも終点のフリップフロップに近い位置にあるケースに対応する。
【０１２８】
また、子ツリーの非共有パスの遅延が子ツリーの総遅延よりも大きくない場合（ＮＯ）には、ステップＳ２７６の処理に進み、その論理パスのタイミング解析で考慮すべき遅延ばらつきによるクロックスキューを
（子ツリーの総遅延値×遅延ばらつき比率）
として算出する。この処理は、図３（ｄ）のように、子ツリー４４１が大きく、子ツリー４４１の起点が親ツリーの起点に近い位置にあるケースに対応する。
【０１２９】
即ち、タイミング解析対象となる論理パスの始点および終点が異なる子ツリーに接続されている場合に、始点および終点を包含する親ツリーを検索した上で、論理パスの始点が含まれる子ツリーの総遅延時間、論理パスの終点が含まれる子ツリーの総遅延時間、および、予め定義された非共有パスの比率と親ツリーの総遅延時間とを乗じたものを求めて、それらのうちの最も大きいものを非共有パスの遅延時間とする。このようにして予測された遅延時間と、予め定義されたチップ内遅延変動による遅延の変動率とを乗じることによって、クロックスキューを予測する。
【０１３０】
図４のステップＳ２７の処理後、図９のステップＳ１１２または図１０のステップＳ１２２のタイミング解析ステップにおける残りの処理に戻る。
【０１３１】
図４のステップＳ２７において予測された遅延ばらつきによるクロックスキュー（予測結果）を、図９のステップＳ１１２または図１０のステップＳ１２２のタイミング解析ステップ（タイミング解析手段７４によるタイミング解析処理）に適用し、タイミング制約違反検出手段７５により図９のステップＳ１１３または図１０のステップＳ１２３のように、タイミング制約違反かどうかを検出し、タイミング制約違反が検出された場合に、回路修正手段７６により図９のステップＳ１１４または図１０のステップＳ１２４のように、そのタイミング制約違反の検出箇所の回路を、そのタイミング制約違反がなくなるように修正する。
【０１３２】
このようなクロックスキュー予測処理、タイミング解析処理、タイミング制約違反検出処理および回路修正処理が論理合成ステップおよび論理素子の配置ステップにて行われる。このようにして、回路の機能設計終了後、論理合成ステップで論理素子の接続情報であるネットリストを作成し、レイアウト設計ステップで論理素子の配置、バッファツリー型クロック分配回路であるクロックツリーの合成、さらに論理素子間の配線を行って、マスクデータ作成ステップで製造用マスクデータを作成し、これを用いて集積回路基板を製造することができる。
【０１３３】
以上により、本実施形態によれば、クロックツリー合成以前のステップでタイミング解析を行う前に、クロックツリー構造予測手段７１がクロックツリー合成前の論理回路の構造から合成後のクロックツリーの構造を予測し、遅延時間予測手段７２が予測されたクロックツリーの構造に基づいて各クロックツリーの遅延時間を予測し、クロックスキュー予測手段７３がチップ内遅延変動によって生じるクロックスキューを予測する。このように、遅延ばらつきによるクロックスキューを適切に予測し、このクロックスキューの予測結果に基づいてタイミング解析を行って、検出されたタイミング制約違反に予め対処することによって、図７のステップＳ１３のクロックツリー合成ステップ後に行われる、図７のステップＳ１４の論理素子の配線ステップにおいて、タイミング制約違反が多発することを防ぐことができる。即ち、ＬＳＩのチップ内遅延ばらつきによるクロックスキューへの影響を、クロックツリー合成以前の設計ステップで適切に予測して、タイミング制約違反に対処することによりクロックツリー合成後にタイミング制約違反が多発することを防ぐことができる。
【０１３４】
なお、以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０１３５】
本発明は、ＬＳＩ（大規模集積回路）やＩＣ（集積回路）のチップ内遅延ばらつきによるクロック信号到達時間の差（クロックスキュー）への影響を、クロック分配回路生成前の設計ステップで予測する集積回路のタイミング解析装置、その予測結果を用いて回路を最適化する集積回路のタイミング最適化装置、集積回路のタイミング解析方法、その予測結果を用いて回路を最適化する集積回路のタイミング最適化方法、集積回路基板の製造方法、これらの方法の処理をコンピュータに実行させるための制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、ＬＳＩなどの設計ステップで、遅延ばらつきによるクロックスキューを適切に予測し、これに基づいてタイミング解析を行って、検出されたタイミング制約違反に予め対処することによってタイミングを最適化することが可能となり、クロックツリー合成ステップ後のステップにおいて、タイミング制約違反が多発することを防いで、設計時間の短縮化を図ることができる。
【図面の簡単な説明】
【０１３６】
【図１】本発明の大規模集積回路のタイミング最適化装置の実施形態における要部構成例を示すブロック図である。
【図２】（ａ）〜（ｆ）は、一般的なクロックツリーの構造を説明するための回路図である。
【図３】（ａ）〜（ｄ）は、子ツリーが存在する場合について、クロックツリーの構造例を説明するための回路図である。
【図４】図１の大規模集積回路のタイミング解析装置を用いたタイミング解析方法の各処理を示すフローチャートである。
【図５】図４の遅延時間予測処理ステップについて詳細に説明するためのフローチャートである。
【図６】図４の遅延バラツキによるクロックスキュー予測ステップについて詳細に説明するためのフローチャートである。
【図７】一般的なＬＳＩの自動設計フローを説明するためのフローチャートである。
【図８】任意の組み合せ回路を通してデータのやり取りを行うフリップフロップ間の論理パスのタイミング解析について説明するための回路図である。
【図９】図７のステップＳ１１の論理合成ステップを詳細に説明するためのフローチャートである。
【図１０】図７のステップＳ１２の論理素子配置ステップを詳細に説明するためのフローチャートである。
【図１１】図７のステップＳ１４の配線ステップを詳細に説明するためのフローチャートである。
【符号の説明】
【０１３７】
１  タイミング最適化装置
１Ａ  タイミング解析装置
２  入力部
３  ＲＯＭ
４  ＲＡＭ
５  データベース
６  表示部
７  制御手段
７Ａ  タイミング解析装置の制御手段
７１  クロックツリー構造予測手段
７２  遅延時間予測手段
７３  クロックスキュー予測手段
７４  タイミング解析手段
７５  タイミング制約違反検出手段
７６  回路修正手段
２１、２２ フリップフロップ
２３ 組み合せ回路
２４ クロック供給点
２５〜２７ バッファ
３１、３３、３５ クロックツリー合成前の回路
３２、３４、３６ クロックツリー合成後の回路
３１１ クロックツリーの起点
３１２ フリップフロップ
３３１ 組み合せ論理素子
３３２、３３３ フリップフロップ
３３４ 子ツリー
３５１ 子階層の入力端子
３５２、３５３ フリップフロップ
３５４ 子ツリー
４１、４３ クロックツリー合成前の回路
４２、４４ クロックツリー合成後の回路
４１１、４１２、４３１、４３２  クロックネット
４１３、４３３ 組み合せ論理素子
４１４、４１５、４１６ フリップフロップ
４１７、４４４ クロックツリーの起点  
４２１、４４１ 子ツリー
４２２ 親ツリー
４２３ 親ツリーの一部
４４２ 親ツリーば直接駆動するフリップフロップへの部分ツリー
４４３ 遅延回路
【図１】
2006268165.tif 000003
【図２】
2006268165.tif 000004
【図３】
2006268165.tif 000005
【図４】
2006268165.tif 000006
【図５】
2006268165.tif 000007
【図６】
2006268165.tif 000008
【図７】
2006268165.tif 000009
【図８】
2006268165.tif 000010
【図９】
2006268165.tif 000011
【図１０】
2006268165.tif 000012
【図１１】
2006268165.tif 000013