(57)【特許請求の範囲】
【請求項１】
半導体集積回路の論理情報、配線パターン情報を記憶した記憶手段（以下、第１記憶手段）と、ディレイ定数、半導体集積回路製造時のプロセスばらつき率、基本給電領域拡張パラメータを記憶した記憶手段（以下、第２記憶手段）と、内部メモリを有する処理手段とからなるコンピュータ利用のシステムにおいて、処理手段が半導体集積回路の信号遅延時間を計算し、クロック信号を再配線して、半導体集積回路のクロックスキューを低減するための処理を実行する方法であって、
前記処理手段は、
前記第１記憶手段から半導体集積回路の少なくとも論理情報、配線パターン情報を入力し、前記第２記憶手段からディレイ定数及び半導体集積回路製造時のプロセスばらつき率、基本給電領域拡張パラメータを入力して、各パスについて、当該パスを構成する始点フリップフロップから終点フリップフロップまでのパスディレイ（ティピカルパスディレイ）、チップのクロック入力ピンから始点及び終点フリップフロップまでのクロックディレイの差分（設計クロックスキュー）、及び、チップのクロックピンから始点及び終点フリップフロップまでのクロック配線径路のうち配線径路を共有しない部分のみを信号伝播するのにかかるディレイ値にそれぞれプロセスばらつき率をかけたプロセスばらつき（プロセスクロックスキュー）を求め、前記設計クロックスキューと前記プロセスクロックスキューとをクロックスキューとして、前記ティピカルパスディレイとを加算して、その値を当該パスの信号遅延時間（トータルパスディレイ）として、各パス毎に内部メモリに保持する処理と、
前記内部メモリを参照して、前記信号遅延時間（トータルパスディ）が目標値を超えているパス（クリティカルパス）が存在する場合、チップ内のフリップフロップへ直接クロック信号を給電する最終段クロックバッファのそれぞれについて、該クロックバッファがフリップフロップへクロック信号を最短で給電可能な領域を基本給電領域、前記基本給電領域拡張パラメータをもとに基本給電領域を所定幅だけ拡張した領域を拡張給電領域、及び、隣接した拡張給電領域どうしが重なる領域を共通領域として求め、クリティカルパスのうち、該パスを構成する始点及び終点フリップフロップが互いに隣接した基本給電領域内に配置され、かつ、少なくとも一方が前記共通領域に存在するパスを抽出し、該抽出したパスを構成する始点及び終点フリップフロップについては同一の最終段クロックバッファからクロック信号を給電するように再配線する処理と、
を実行することを特徴とする半導体集積回路のクロックスキュー低減方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の製造時のプロセスのばらつきによるスキューを考慮したパスディレイを計算し、パスディレイ値が目標値を超えるクリティカルパスを構成するフリップフロップのクロック信号を再配線して、クロックスキューを低減するレイアウト方法に関するものである。
【０００２】
【従来の技術】
半導体集積回路の信号遅延時間計算（パスディレイ計算）は、パスディレイチェックを行ううえで不可欠の技術である。従来、この半導体集積回路の信号遅延時間計算に関する技術として、例えば特開平５−１８９５１１号公報に記載のように、素子間のクロックスキューを考慮した信号遅延時間計算方法が知られている。この従来技術は、クロック間スキュー値をあらかじめ設定したクロック間スキュー値テーブルを用意し、フリップフロップ間の信号遅延時間（ティピカルパスディレイ）にクロック間スキュー値テーブルから求めたクロックスキュー値を足すことによってパスの信号遅延時間とするものであり、パスディレイチェックは、この信号遅延時間が目標値以内に入っているかどうかの合否判定を行うというものである。
【０００３】
【発明が解決しようとする課題】
前記従来技術では、クロックスキュー値テーブルに各フリップフロップのクロック相の組み合わせからクロックスキュー値を格納しているだけであり、半導体製造時のプロセスのばらつきによるスキューを考慮していないため、設計時のディレイ値と製造されたチップの実際のディレイ値の誤差が発生し、動作不良の原因となるという問題点を有している。
【０００４】
本発明の目的は、前記従来技術の問題点を解決し、半導体集積回路におけるフリップフロップ間のパスディレイ計算時に、半導体製造時のプロセスのばらつきによるスキューを考慮して、製造されたチップの実際のディレイ値により近い信号遅延時間を計算し、該計算された信号遅延時間が目標値を超えているクリティカルパスのディレイ値を短縮可能とするクロック信号の再配線を行う、半導体集積回路のクロックスキュー低減方法を提供することにある。
【０００５】
【課題を解決するための手段】
本発明では、半導体集積回路の論理情報、配線パターン情報を記憶した記憶手段と、ディレイ定数、半導体集積回路製造時のプロセスばらつき率、基本給電領域拡張パラメータを記憶した記憶手段と、内部メモリを有する処理手段とからなるコンピュータ利用のシステムを使用する。
【０００６】
処理手段は、まず、チップの論理情報、配線パターン情報、ディレイ定数、半導体集積回路製造時のプロセスばらつき率、基本給電領域拡張パラメータ等を記憶手段から入力して、各パスについて、当該パスを構成する始点フリップフロップから終点フリップフロップまでのパスディレイ（ティピカルパスディレイ）、チップのクロック入力ピンから始点及び終点フリップフロップまでのクロックディレイの差分（設計クロックスキュー）、及び、チップのクロックピンから始点及び終点フリップフロップまでの各クロックディレイ値、あるいはその径路のうち配線径路を共有しない部分のみを信号伝播するのにかかる各ディレイ値にそれぞれプロセスばらつき率をかけたプロセスばらつき（プロセスクロックスキュー）を求め、前記設計クロックスキューと前記プロセスクロックスキューとをクロックスキューとして、ティピカルパスディレイとを加算して、その値を当該パスの信号遅延時間（トータルパスディ）として、各パス毎に内部メモリに保存する。
【０００７】
次に、処理手段は、前記内部メモリを参照して、前記信号遅延時間（トータルパスディ）が目標値を超えているパス（クリティカルパス）が存在する場合、チップ内のフリップフロップへ直接クロック信号を給電する最終段クロックバッファのそれぞれについて、該クロックバッファがフリップフロップへクロック信号を最短で給電可能な領域を基本給電領域、前記基本給電領域拡張パラメータもとに基本給電領域を所定幅だけ拡張した領域を拡張給電領域、及び、隣接した拡張給電領域どうしが重なる領域を共通領域として求め、クリティカルパスのうち、該パスを構成する始点及び終点フリップフロップが互いに隣接した基本給電領域内に配置され、かつ、少なくとも一方が前記共通領域に存在するパスを抽出し、該抽出したパスを構成する始点及び終点フリップフロップについては同一の最終段クロックバッファからクロック信号を給電するように再配線する。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態としての一実施例を図面により詳細に説明する。
【０００９】
図１は本発明の実施の形態のハードウェア構成図である。図１において、ライブラリ１０には、ディレイ定数、プロセスばらつき率α、基本給電領域拡張パラメータｄなどが、あらかじめＬＳＩごとに格納されている。このうち、ディレイ定数は従来と同様であり、プロセスばらつき率αと基本給電領域拡張パラメータｄが本発明により追加されたものである。なお、プロセスばらつき率αは、統計的に例えば１０〜３０％の範囲が適当である。ファイル２０には、論理情報、配線パターン情報などが、あらかじめＬＳＩごとに格納されており、これは従来と同様である。処理装置（ＣＰＵ）３０は、ライブラリ１０、ファイル２０の情報を入力して、対象とする半導体集積回路について、半導体製造時のプロセスのばらつきによるスキュー（プロセスクロックスキュー）も考慮してパスの信号の遅延時間（パスディレイ）を計算し、さらに該パスディレイ値をもとにクリティカルパスを判定してクロック信号の再配線処理を行い、この再配線処理結果によりファイル２０の配線パターン情報を変更する。メモリ４０には、ＣＰＵ３０での処理の途中結果等を格納する作業用テーブル４５がある。図２は作業用テーブル４５の構成例で、各パスごとに、後述する各ディレイ値、合否結果を格納する複数欄で構成されることを示している。また、メモリ４０には、図１では省略したが、ＣＰＵ３０での信号遅延時間計算やクロック信号再配線処理のためのプログラムが外部記憶装置等からロードされて格納されている。
【００１０】
図３は、本発明の一実施例による信号遅延時間計算（パスディレイ計算）、クロック信号再配線の処理フローを示した図で、図１のＣＰＵ３０で実行される。図３において、ステップ１０１が必要情報の入力処理（前処理）、ステップ１０２〜１０７が信号遅延時間計算（パスディレイ計算）処理、ステップ１０８〜１１３がクロック信号再配線処理である。
【００１１】
まず、図３に示す処理フローを参照して、本発明の一実施例による信号遅延時間計算の処理動作を説明する。
【００１２】
（１）  信号遅延時間計算（パスディレイ計算）を行うに先立って、ライブラリ１０及びファイル２０から、対象とする半導体集積回路（チップ）に関し、ディレイ定数、プロセスばらつき率α、基本給電領域拡張パラメータｄ、論理情報、配線パターン情報等を処理装置（ＣＰＵ）３０内に入力する（ステップ１０１）。
【００１３】
（２）  入力された論理情報、配線パターン情報にもとづいて最初のパスを選択し、該パスを構成する始点フリップフロップから終点フリップフロップまでのパスディレイ（ティピカルパスディレイ）Ｔpdを計算する（ステップ１０２）。
【００１４】
（３）  チップのクロック入力ピンから始点及び終点フリップフロップまでのクロック配線径路のそれぞれのディレイ（クロックディレイ）Ｔck1、Ｔck2を計算する（ステップ１０３）。
【００１５】
（４）  チップのクロック入力ピンから始点及び終点フリップフロップまでのクロック配線径路のうち、配線径路を共有しない部分のそれぞれディレイＴckp1,Ｔckp2を計算する（ステップ１０４）。
【００１６】
（５）  ステップ１０３で得られたＴck1，Ｔck2結果より、チップのクロック入力ピンから始点及び終点フリップフロップまでのクロックディレイの差分（設計クロックスキュー）Ｔskewを、Ｔskew＝｜Ｔck1−Ｔck2｜により計算する（ステップ１０５）。
【００１７】
（６）  ステップ１０１でライブラリ１０より入力されたプロセスばらつき率α、ステップ１０４で得られたＴckp1，Ｔckp2より、半導体集積回路製造時のプロセスのばらつきによる始点及び終点フリップフロップそれぞれについてのクロックディレイのばらつき（プロセスクロックスキュー）Ｔpskew1，Ｔpskew2を、Ｔpskew1＝αＴckp1、Ｔpskew2＝αＴckp2により計算する（ステップ１０６）。
【００１８】
（７）  ステップ１０２、ステップ１０５、ステップ１０６で得られた値より、当該パスに関する信号遅延時間（トータルパスディレイ）Ｔtotalを、Ｔtotal＝Ｔpd＋Ｔskew＋Ｔpskew1＋Ｔpskew2により計算する（ステップ１０７）。なお、Ｔskew，Ｔpskew1，Ｔpskew2をまとめてクロックスキューと称す。
【００１９】
以上説明した（２）〜（７）の処理をチップ内の全てのパスについて繰り返し、各パスごとに、図２の作業用テーブル４５に各値Ｔpd，Ｔck1，Ｔck2，Ｔckp1，Ｔckp2，Ｔskew，Ｔpskew1，Ｔpskew2，Ｔtotalを格納する。
【００２０】
次に、同じく図３に示す処理フローを参照して、本発明の一実施例によるクロック信号再配線の処理動作を説明する。
【００２１】
（８）  チップ内の全てのパスについてパスディレイ計算が終了したなら、作業用テーブル４５に格納されている各パスのトータルパスディレイＴtotalを用いてディレイの合否判定を行う（ステップ１０８）。ここで、各パスのディレイ値Ｔtotalが全て目標値内におさまっていれば、クロック信号再配線処理は不要であるが、ディレイ値Ｔtotalが目標値を超えているパス（クリティカルパス）が一つでもあれば、すなわち、クリティカルパスが抽出されれば、以下の処理を行う。
【００２２】
（９）  チップ内の各最終段クロックバッファについて基本給電領域を求める（ステップ１０９）。ここで、最終段クロックバッファは、チップのクロックピンからフリップフロップまで複数段の木構造のクロックバッファが用いられる場合、一つあるいは複数のフリップフロップへ直接クロック信号を給電する最終段のファンアウトバッファとして定義される。基本給電領域は、該最終段クロックバッファがフリップフロップへクロック信号を最短で給電可能な領域として求める。
【００２３】
（10）  各最終段クロックバッファについて、ステップ１０１でライブラリ１０より入力された基本供電領域拡張パラメータｄを用いて拡張給電領域を求める（ステップ１１０）。即ち、拡張給電領域は、基本給電領域をパラメータｄの幅だけ上下左右に広げた領域である。
【００２４】
（11）  互いに重なりをもつ隣接した拡張給電領域について共通領域を求める（ステップ１１１）。
【００２５】
（12）  作業用テーブル４５を参照して、トータルパスディレイＴtotalが目標値を超えているパス（クリティカルパス）のうち、始点及び終点フリップフロップが互いに隣接した基本給電領域内に配置されているパスを抽出する（ステップ１１２）。
【００２６】
（13）  ステップ１１２で抽出されたパスの始点及び終点フリップフロップの少なくとも一方が共通領域に配置されているパスについて、始点及び終点フリップフロップの両方が同一の最終段クロックバッファからクロック信号を給電されるようにクロック配線を再配線する（ステップ１１３）。そして、このクロック信号の再配線処理結果にもとづいてファイル２０の配線パターン情報を変更する。
【００２７】
なお、図３の処理フローでは、チップのクロックピンからパスの始点及び終点フリップフロップまでのクロック配線径路のうち、配線径路を共有しない部分のみに着目し、それぞれディレイ値をＴckp1，Ｔckp2を計算し（ステップ１０４）、これらディレイ値にプロセスばらつき率αを掛けることで（ステップ１０６）、パスの始点及び終点フリップフロップそれぞれのプロセスクロックスキューを計算するとした。これは、特定のパスについて見た場合、クロックピンから始点及び終点フリップフロップまでの木構造のクロック配線パターン径路のうち、配線パターンを共有しない部分でのみ、ばらつきが発生することに着目するものである。
【００２８】
一方、ステップ１０３で得られたチップのクロックピンからパスの始点及び終点フリップフロップまでのそれぞれのクロックディレイ値Ｔck1，Ｔck2を用い、これらクロックディレイ値Ｔck1，Ｔck2にプロセスばらつき率α′（ただし、一般にα′＜αとする）を掛けて、パスの始点及び終点フリップフロップそれぞれのプロセスクロックスキューＴpskew1，Ｔpskew2を計算することも可能である。この場合、図３のステップ１０４の処理が省略できる。
【００２９】
次に、本発明による信号遅延時間計算、クロック信号再配線及びセル配置の処理動作を具体例により説明する。
【００３０】
図４は、信号遅延時間計算（パスディレイ計算）の具体的処理動作を説明する図である。図４において、２０１はチップ、２０２はチップのクロック入力ピン、２０３は１段目のクロックバッファ、２０４−１〜２０４−４は２段目のクロックバッファ、２０５−１〜２０５−３はフリップフロップ、２０６はクロック入力ピン２０２から１段目のクロックバッファ２０３までのクロック配線パターン、２０７−１〜１０７−４は１段目のクロックバッファ２０３から２段目のクロックバッファ２０４−１〜２０４−４までのクロック配線パターン、２０８−１〜２０８−２は２段目のクロックバッファ２０４−１〜２０４−４からフリップフロップ２０５−１〜２０５−３までのクロック配線パターン、２０９−１はフリップフロップＡ２０５−１からフリップフロップＢ２０５−２までのパス、２０９−２はフリップフロップＡ２０５−２からフリップフロップＣ２０５−３までのパスである。
【００３１】
いま、始点をフリップフロップＡ２０５−１、終点をフリップフロップＢ２０５−２とするパスＡ２０９−１に着目する。始点フリップフロップＡ２０５−１はクロック入力ピン２０２、クロックバッファＡ２０３を介して、クロックバッファＢ２０４−２よりクロック信号を供給され、終点フリップフロップＢ２０５−２は、同じくクロック入力ピン２０２、クロックバッファＡ２０３を介して、クロックバッファＢ１よりクロック信号を供給されている。
【００３２】
ディピカルパスディレイＴpdは、始点フリップフロップＡ２０５−１から終点フリップフロップＢ２０５−２までのパスＡ２０９−１自体のディレイ値である。また、クロック入力ピン２０２から始点フリップフロップＡ２０５−１までのクロック配線パターンＡ２０６、Ｂ2  ２０７−２、Ｃ3  ２０８−３の部分のクロックディレイがＴck1、クロック入力ピン２０２から終点フリップフロップＢ２０５−２までのクロック配線パターンＡ２０６、Ｂ1  ２０７−１、Ｃ1  ２０８−１の部分のクロックディレイがＴck2で、このＴck1とＴck2の差分｜Ｔck1−Ｔck2｜が設計クロックスキューＴskewである。従来は、ティピカルパスディレイＴpdと設計クロックスキューＴskewの和をパスＡ２０９−１のパスディレイ値としていた。
【００３３】
本発明の一実施例においては、さらに、クロック入力ピン２０２から始点フリッフフロップＡ２０５−１及び終点フリップフロップＢ２０５−２までのクロック配線径路のうち配線パターンを共有しない部分、すなわちクロックバッファＡ２０３からフリップフロップＡ２０５−１までのクロック配線パターンＢ2  ２０７−２、Ｃ3  ２０８−３の部分のディレイをＴckp1、クロックバッファＡ２０３から終点フリップフロップＢ２０５−２までのクロック配線パターンＢ1  ２０７−１、Ｃ1  ２０８−１の部分のディレイをＴckp2として、このＴckp1とＴckp2に、あらかじめライブラリ１０に定義されているプロセスばらつき率αを掛けることにより、始点フリップフロップＡ２０５−１及び終点フリップフロップＢ２０５−２のそれぞれについてのプロセスクロックスキューＴpskew1，Ｔpskew2を計算する。そして、前記ティピカルパスディレイＴpdと設計クロックスキューＴskewに、さらにプロセスクロックスキューＴpskew1，Ｔpskew2を加えた値を、パスＡ２０９−１に関するパスディレイ値（トータルパスディレイ）Ｔtotalとする。これにより、半導体集積回路製造時のプロセスのばらつきによるクロックディレイのばらつき（プロセスクロックスキュー）をより正確に求めることが可能となる。
【００３４】
同様に、図４において、パスＢ２０９−２については、クロックバッファＢ1  ２０４−１からフリップフロップＢ２０５−２までのクロック配線パターンＣ1  ２０８−１の部分のグロックディレイをＴckp1、クロックバッファＢ1  ２０４−１からフリップフロップＣ２０５−３までのクロック配線パターンＣ2  ２０８−２の部分のディレスをＴckp2として計算する。そして、このＴckp1，Ｔckp2にプロセスばらつき率αを掛けることにより、パスＢ２０９−２の始点フリップフロップＢ２０５−２及び終了フリップフロップＣ２０５−３それぞれについて、プロセスクロックスキューＴpskew1，Ｔpskew2が求まる。
【００３５】
なお、クロック入力ピン２０２から始点Ａ２０５−１までのクロックディレイＴck1、クロック入力ピ２０２から終点フリップフロップＢ２０５−２までのクロックディレイ値Ｔck2に、それぞれプロセスばらつき率α′を掛けることにより、パスＡ２０９−１の始点フリップフロップＡ２０５−１、終点フリップフロップＢ２０５−２のそれぞれのプロセスクロックスキューを求めることも可能である。これは、パスＢ２０９−２についても同様である。
【００３６】
図５はクリティカルパスを構成するフリップフロップへのクロック信号の再配置の具体的処理動作を説明する図である。図５において、パス３０６がトータルパスディレイが目標値を超えているクリティカルパスとする。このパス３０６を構成する始点フリップフロップ３０５−１がクロックバッファＢ３の基本給電領域３０７−３に、終点フリップフロップ３０５−２がクロックバッファＢ４の基本給電領域３０７−４にそれぞれ存在する。ここで、始点フリップフロップ３０５−１はクロックバッファＢ3  ３０４−３による基本給電領域３０７−３に配置されており、クロック配線パターン３１１によってクロック信号を給電されているが、基本給電領域３０７−４との共通領域３０９に配置されているため、該始点フリップフロップ３０５−１にはクロックバッファＢ4  ３０４−４からクロック信号を給電するように再配線を行う。これによって、クロックピン３０２から始点及び終点フリップフロップ３０５−１，３０５−２までのクロック配線径路がパターンを共有する部分を増やすことができ、クロック配線径路を共有しない部分に着目してプロセスクロックスキューを求める場合、該プロセスクロックスキューを短縮することが可能となるため、結果的にクリティカルパスのパスディレイを短縮することができる。
【００３７】
図６は論理ブロックのセル配置の具体的処理動作を説明する図である。図６において、例えば論理ブロックＡ４０６はゲート、フリップフロップを含む複数のセルから構成されている。論理ブロック内のセルの配置に先立って、クロックバッファＡ４０３、クロックバッファＢ1〜Ｂ4（４０４−１〜４０４−４）の配置位置を決定し、各最終段クロックバッファについて基本給電領域を決定する。次に、論理ブロック内の全てのセルを同一のクロックバッファの基本給電領域４０７−１に配置する。これによって、クロックピン４０２から同一論理ブロック内の全てのパスを構成する始点及び終点フリップフロップまでのクロック配線径路が最終段クロックバッファまでのパターン４０８、及びパターン４０９を共有するため、前記と同様に、クロック配線径路を共有しない部分に着目してプロセスクロックスキューを求める場合、該プロセスクロックスキューを低減することが可能となり、結果的に当該論理ブロック内の全てのパスディレイを短縮することができる。
【００３８】
【発明の効果】
以上説明したように、本発明によれば、半導体集積回路製造時のプロセスのばらつきによるクロックディレイのばらつきをパスディレイ計算時に計算することにより、実際にチップが製造された時のパスディレイ値を設計時により正確に求め、クリティカルパスの始点及び終点フリップフロップの両者に同じ最終段のクロックゲートがクロック信号を供給するように再配線することによって、配線径路を共有しない部分を最小限におさえ、プロセスクロックスキューを低減することができ、トータルパスディレイを低減することができる。
【図面の簡単な説明】
【図１】本発明を実施するハードウェア構成の概略ブロック図である。
【図２】図１におけるメモリ内の作業用テーブルの構成例を示す図である。
【図３】本発明の一実施例による信号遅延時間計算及びクロック配線の処理フローを示す図である。
【図４】本発明の一実施例による信号遅延時間計算の具体的処理動作を説明する図である。
【図５】本発明の一実施例によるクロック信号の再配線の具体的処理動作を説明する図である。
【図６】本発明の一実施例による論理ブロック内のセルの配置の具体的処理動作を説明する図である。
【符号の説明】
１０  ライブラリ
２０  ファイル
３０  ＣＰＵ
４０  メモリ
２０１，３０１，４０１  チップ
２０２，３０２，４０２  クロック入力ピン
２０３，３０３，４０３  １段目クロックゲート
２０４，３０４，４０４  ２段目クロックゲート
２０５，３０５  フリップフロップ
２０６〜２０８  クロック配線パターン
２０７，３０６  パス
３０７，４０７  基本給電領域
３０８  拡張給電領域
３０９  共通領域
３１０  拡張幅
３１１，３１２，４０８，４０９  クロック配線パターン
４０６  論理ブロック
【図１】
0003599531.tif 000002
【図２】
0003599531.tif 000003
【図３】
0003599531.tif 000004
【図４】
0003599531.tif 000005
【図５】
0003599531.tif 000006
【図６】
0003599531.tif 000007