(57)【特許請求の範囲】
【請求項１】
ＲＴＬで記述されたＬＳＩ設計内容を論理合成することにより、該ＬＳＩを構成するフリップフロップセルの間の接続関係を規定する第一のネットリストを生成するステップと、
前記第一のネットリストを用いてフロアプランを実行することにより、前記ＬＳＩのクロックツリーを生成するステップと、
前記クロックツリーに基づいて、前記フリップフロップセルを駆動するためのバッファセルを含む第二のネットリストを作成するステップと、
前記フロアプランの実行により得られたフロアプラン情報と前記第二のネットリストとに基づいて、前記バッファセルと、前記フリップフロップセルと、前記バッファセルと前記フリップフロップセルとを接続するクロック信号線との初期配置を含む前記ＬＳＩのクロックレイアウトを行うステップと、
前記クロックレイアウト後にクロック信号線以外の通常ネットの配線を行うステップとを備え、
前記初期配置のステップは、クロックソースから各フリップフロップセルまでのバッファセルの段数が等しくなるようにバッファ段数を調整するステップを備える、ＬＳＩレイアウト方法。
【請求項２】
前記初期配置のステップは、前記ネットリストと前記フロアプラン情報とに基づいて、前記クロックツリー上のネットを無視してセルの配置処理を行い、次いで前記クロックツリーに結線されるべきフリップフロップセルの配置位置を決定するというステップを備える、請求項１に記載のＬＳＩレイアウト方法。
【請求項３】
前記バッファ段数を調整するステップの後に、前記フリップフロップセルの初期配置から、前記クロックツリーの最終段ネットを抽出し、抽出された最終段ネットのネット範囲を調べ、該ネット範囲が重なる複数のネットをマージし、該マージされたネットをネット範囲が重ならないネットに分割し、分割されたネットにバッファセルを割り当てることによりネット範囲が重ならないようにネットの再構成処理を行う、というステップを備える請求項１に記載のＬＳＩレイアウト方法。
【請求項４】
前記クロックレイアウトを行うステップは、前記クロックツリー上のネットを無視してセルの配置処理を行うステップによる前記フリップフロップの配置結果に基づいて、前記クロックツリー上のバッファセルの配置位置をボトムアップに決定し、クロックツリーの最終段バッファ毎に、バッファが駆動するフリップフロップセルの配置情報から、フリップフロップセルのクラスタ情報を作成し、前記バッファセルの各々を中心に配置制限領域情報を作成し、次に前記バッファセル以外のセルについて再配置制限領域情報およびクラスタ情報を制約値として再配置処理を行う、というステップをさらに備える、請求項２に記載のＬＳＩレイアウト方法。
【請求項５】
前記バッファセル以外のセルについて再配置制限領域情報およびクラスタ情報を制約値として再配置処理を行うステップの次に、前記クロックツリーのネット毎に、被駆動セルの配置位置からクラスタ情報を作成し、作成した各クラスタ毎に、クラスタされた被駆動セル間をクラスタ配線し、駆動セルから各クラスタまでの配線をスター状にルート配線する、というステップをさらに備える、請求項４に記載のＬＳＩレイアウト方法。
【請求項６】
前記クロックツリー上のバッファセルの配置処理をボトムアップに決定するステップの次に、クロックツリーの再構成を行うステップを備え、該クロックツリーの再構成のステップで、クロック論理の変更時に論理変更コマンドをネットリストファイルに出力し、該論理変更コマンドに基づいて前記第二のネットリストを変更することにより、レイアウトデータベース上のクロック論理と一致したクロック論理を含む第三のネットリストを作成するステップを更に備える、請求項４に記載のＬＳＩレイアウト方法。
【請求項７】
請求項１から請求項６までの何れか一項に記載のステップを実行する、ＬＳＩレイアウト用プログラムを格納した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は半導体集積回路（ＬＳＩ）レイアウト方法及びＬＳＩレイアウト用プログラムを格納した記録媒体に関し、特にＬＳＩにおけるクロックパスの実装設計方法及びその記録媒体に関する。
【０００２】
【従来の技術】
ＬＳＩは多数のフリップフロップセルとこれらを駆動するバッファセルとを含んでいる。一般に１個のバッファセルで数万個のフリップフロップをクロック信号線を介して駆動する。このようなＬＳＩ内の回路素子およびクロック信号線のレイアウトにおいては、高密度化、信号伝播遅延時間の短縮、及び配線の混雑の緩和のためにクロック配線長を短くすることが要求される。また、クロック信号を必要とする回路素子に対して時間差（クロックスキューという）を抑制するための最適な回路素子配置が要求される。
【０００３】
図２７は従来のＬＳＩレイアウト方法を説明するフローチャートである。図示のように、ＬＳＩレイアウトは、論理設計段階Ｓ２７と、クロックレイアウト段階Ｓ２８と、クロック信号線以外の通常ネットの配線段階Ｓ２９とからなる。
論理設計段階Ｓ２７は、論理合成のステップＳ２７１とクロックツリー生成のステップＳ２７２からなっている。
【０００４】
論理合成のステップＳ２７１では、ＬＳＩを構成する素子のレジスタ・トランスファ・レベル（ＲＴＬ）で記述されたハードウエア記述言語（ＨＤＬ）を、レイアウト可能な論理に論理合成を行って、モジュールで構成される第１のネットリスト（Ｎｅｔｌｉｓｔ）（１）を作成する。クロックツリー生成ステップＳ２７２では、この第１のネットリスト（１）に基づいてＬＳＩのバッファセル導入前のクロックツリーを作成する。
【０００５】
図２８はＬＳＩのモジュール内における、バッファセル導入前のクロックツリーの一例を示す図である。図において、２８１はモジュール、２８２〜２８４は小モジュール、２８５はクロック信号源であるクロックソース、２８６〜２８８はフリップフロップセルである。この段階では未だバッファセルは導入されていないので、クロックソース２８５がフリップフロップセル２８６〜２８８を直接駆動する回路になっている。
【０００６】
次に第１のネットリスト（１）に対してバッファリング処理を行ってクロックツリーにバッファセルを導入することにより、第２のネットリスト（２）を作成する。
図２９はＬＳＩのモジュール内における、バッファセルが導入されたクロックツリーを示す図である。図示のように、図２８のクロックツリーにバッファセル２９１〜２９６が導入されている。各モジュール内のバッファセルの数は、駆動されるフリップフロップセルの数に応じて決定される。図２９においては、小モジュール２８２および２８３内のフリップフロップセルの数は少ないので、それぞれ１個のバッファセル２９２および２９３により駆動されるようにバッファセルを配置してあるが、小モジュール２８４内のフリップフロップセル２８８の数が他の小モジュール内のフリップフロップセル数より多いので、ツリー構造にして３つのバッファセル２９５、２９６、２９７で駆動するようになっている。
【０００７】
図２７に戻り、第２のネットリスト（２）の内容はクロックレイアウト段階Ｓ２８に引き渡される。
クロックレイアウト段階Ｓ２８は、ステップＳ２８１〜Ｓ２８７からなっている。
ステップＳ２８１ではフロアプランを取得する。フロアプランとは、ＬＳＩの設計者自身から得られるレイアウト情報である。
【０００８】
ステップＳ２８２では、そのフロアプランに基づいてクロック配線長ができるだけ短くなるようにバッファセル及びフリップフロップセルを図３０に示すように初期配置する。図３０はＬＳＩのモジュール内におけるバッファセル及びフリップフロップセルの初期配置結果を示す図である。図において、バッファセル３０１とそれが駆動する６個のフリップフロップセル３１０〜３１５の間を線で結んで、結線関係があることを表している。
【０００９】
ステップＳ２８３では、クロックバッファのボトムアップ配置を行う。ボトムアップ配置とは、クロックソースから最も離れたフリップフロップセルから順番に配置することをいう。これは、フリップフロップセルの配置情報に基づいて、バッファセル３０１とそれにより駆動されるフリップフロップセル３１０〜３１５との間の距離が出来るかぎり等距離になるように、クロックバス上のバッファセルをボトムアップに配置する処理である。ボトムアップの手法には、バッファセルをそのバッファセルが駆動するフリップフロップセルの配置範囲の中心に配置する手法、バッファセルをそのバッファセルが駆動するフリップフロップセルの重心に配置する手法等がある。
【００１０】
図３１はＬＳＩのモジュール内においてバッファセル３０１をそのバッファセル３０１が駆動するフリップフロップセル３１０〜３１５の配置範囲の中心に配置した例を示す図である。
次に、ステップＳ２８４で、バッファからフリップフロップセルまでの配線長を制限するために、フリップフロップセルの配置制限領域を生成する。これは、フリップフロップセルを駆動するバッファセルを中心に、ひし形の領域である。図３２はバッファセル３２１を中心に配置制限領域３２２を設定した例を示す図である。次に、配置制限領域３２２を考慮した再配置処理を行う。ここでは、ステップＳ２８３でボトムアップ配置したバッファセル３２１の配置を固定にし、ステップＳ２８４で生成した配置制限領域３２１をフリップフロップセルの配置制約にし、クロックバッファ以外のセルを再配置する。図３３および図３４はセルを再配置した結果を示す図である。図示のように、配置制限領域３２２の中央部にバッファセル３２１が配置されており、フリップフロップセル３３１〜３３６は配置制限領域３２２の内部に配置されることを示している。
【００１１】
次に、ステップＳ２８６で、クロックツリー最終段ネットの特殊配線を行う。ここでは図３５〜３７に示す３つの処理を行う。即ち、図３５はクラスタ用バー情報３５１〜３５７の設定を示している。図３６は、各フリップフロップセルとクラスタ用バーとを結ぶ支線３６１の配線を示している。図３７は、駆動用バッファセル３２１からクラスタ用バーへのルート配線を示している。
【００１２】
次に、バッファ間ネットの特殊配線を行う。ここでは図３８に示すように、バッファセル３８１が駆動する４つのバッファセル３８２〜３８５まで、スター状に特殊配線をする。上記に説明した、ステップＳ２８２からステップＳ２８７の処理を行うことにより、クロックソースからフリップフロップセルまでの信号伝播遅延時間値およびスキュー値を抑えるようにクロックツリーの配置配線を行った後、通常ネットの配線処理を行っている。
【００１３】
【発明が解決しようとする課題】
上記従来のＬＳＩレイアウト方法は、おもにＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）  のゲートアレイ、エンベデッドアレイで使用されている手法であって、論理設計以降は、ネットリストの変更をすることなくクロックレイアウトおよびＬＳＩ実装設計を行う方法である。この従来方法では、クロックツリー論理は変更しないで、ユーザ所望のクロック信号伝播遅延時間、およびスキュー値による制約にしたがうようにクロック信号線をレイアウトする。
【００１４】
しかしながら、ステップ２７１の論理設計およびステップ２７２のクロックツリー生成の段階では、フリップフロップセルの配置位置およびクロック信号線の配線経路を考慮しないで論理設計するため、その論理情報に対しクロック制約条件を満たすようにクロックレイアウトを行うと、配線の混雑をまねき、クロック配線、およびその後の信号配線ができなくなる問題がある。
【００１５】
以下に問題点の詳細について説明する。
ステップ２７２におけるクロックツリー生成ではフロアプラン、およびフリップフロップの配置は考慮していないので、バッファセルを配置した結果、図３９における半導体チップ３９１上のフロアプランブロック３９２と３９５、又はフロアプランブロック３９３と３９４のように離れたフロアプランブロックをバッファセル３９６又は３９７がそれぞれ駆動する場合がある。この場合、離れたフロアプランブロックを駆動するネットワーク（以下、ネットという）の配線３９８〜４０１の長さが長くなり、結果的にクロック信号伝播遅延時間が長くなるという問題および配線の混雑を招くという問題がある（第一の問題）。
【００１６】
図２７のステップＳ２８５の配置制限領域を考慮したフリップフロップセルの再配置において、図４０のように配置制限領域４３０および４３１が重なってしまった場合に、フリップフロップセルを再配置した結果、図４１のように、２つの配置制限領域４３０および４３１の共通領域内にフリップフロップセルが集中し、その結果配線が混雑してしまうという問題がある（第二の問題）。図４０および図４１において、４１０および４２０はバッファセル、４１１〜４１６はバッファセル４１０により駆動されるフリップフロップ、４２１〜４２６はバッファセル４２０により駆動されるフリップフロップ、４３０および４３１は配置制限領域である。図４１には、配置制限領域内４３０内にフリップフロップセル４１１〜４１６を移動させ、配置制限領域４３１内にフリップフロップセル４２１〜４２６を移動させた例を示してある。
【００１７】
また、フリップフロップセルを初期配置の位置から配置制限領域内に引き込むことによって、フリップフロップセルにつながるクロック以外のネットの配線長を長くしてしまい、クロック以外の配線についても混雑させてしまうという問題がある（第三の問題）。例えば、図４１の配線４４１〜４４５のように配線が長くなる。
【００１８】
また、図３８に示すように、１つのバッファセルにより複数のバッファセルが駆動される場合のバッファセル間の配線では、バッファセルからバッファセルまでの配線での混雑がおきるという問題がある（第四の問題）。図３８では、バッファセル３８１により複数のバッファセル３８２〜３８５が駆動される構成において、バッファセル３８１とバッファセル３８２および３８３との間の配線が混雑している様子を示している。
【００１９】
配線混雑以外の問題として、信号伝播遅延時間のスキュー値の問題がある（第五の問題）。即ち、図２７のステップＳ２８５で、フリップフロップセルの配置制限をしながら再配置処理を行い、フリップフロップセルを集め、スキュー値を抑える手法をとっているが、図３７に示すフリップフロップセル３７１のように、フリップフロップセルがクラスタから離れて配置されてしまう場合がある。この場合、その離れたフリップフロップセルまでの配線が長くなることにより、そのセルまでの信号伝播遅延時間が長くなり、結果的にスキューが大きくなるという問題がある。
【００２０】
また、図２７のステップＳ２７３のクロックツリー生成処理では、バッファセルのファンアウト制約を満たすようにバッファセルを配置した結果、図２９の小モジュール２８２又は２８３と大モジュール２８４とで、クロックソース２８５からフリップフロップセルまでのバッファ段数が異なる部分ができる。この場合、バッファ段数２段と３段のクロックパスでは、信号伝播遅延が異なり、スキューのばらつきが大きくなるという問題がある（第六の問題）。
【００２１】
さらに、図２７のステップＳ２８２の初期配置においては、従来は図４２に示すようにフリップフロップセル４２１〜４２４の配置を、クロックバッファセル４２５および４２６からのクロックパス４２７および４２８を無視しないで行っていたので、フリップフロップセルを接続するデータパス４２９の配線経路が交差して混み合うという問題もある。また、データパス４２９やクロックパス４２７および４２８の経路が長くなり、タイミングエラーの原因となるという問題もある（第七の問題）。
【００２２】
上記の第一の問題は、クロックツリーを生成するときにレイアウト情報を考慮していないことが障害になって生じていた。
また、上記第二の問題および第三の問題は、配置制限領域が重なってしまうこと、および重なった配置制限領域内に被駆動セルをむりやり引きつけて再配置することが障害となって生じていた。
【００２３】
上記第四の問題は、駆動用のバッファセルから各被駆動側バッファまでのバッファセル間の配線を単純なスター状の配線としたことが障害となって生じていた。
上記第五の問題は、フリップフロップセルを単純に配置制限領域内に再配置するという手法をとっていることが障害となって生じていた。
【００２４】
上記第六の問題は、バッファ段数が異なるパスがクロックスキューのばらつきを大きくしていることが障害となって生じていた。
上記第七の問題は、初期配置時にクロックパスを無視しないでフリップフロップセルの配置を行っていることにより生じていた。
本発明の目的は、上記の従来技術における問題に鑑み、クロック信号線およびそれ以外の信号線の配線長が短く、且つ配線の混雑の程度が低く、信号伝播遅延時間が短く、且つ信号伝播遅延時間のばらつきが少ないＬＳＩを製造するためのＬＳＩレイアウト方法およびＬＳＩレイアウト用プログラムを格納した記録媒体を提供することにある。
【００２５】
【課題を解決するための手段】
上記の目的を達成するために、本発明の第一の態様により提供される方法によれば、ＲＴＬで記述されたＬＳＩの設計内容を論理合成後のネットリストに対してフロアプランを実行し、得られたフロアプラン情報に基づいて、クロック信号に応じて動作するバッファセルを配置し、一度バッファセルを配置した結果に対し、バッファ段数を調べ、クロックソースから各フリップフロップセルまでのバッファ段数が等しくなるように、調整を行う（請求項１）。
【００２６】
これにより、フロアプラン情報を考慮してクロックバッファセルを配置するので、離れたフロアプランブロックをバッファリングすることがなくなり、その結果、クロックパスの配線長を抑えることが可能になり、引いてはクロック信号伝播遅延時間を抑えることが可能になる。また、バッファ段数を調整するため、クロックスキューも抑えることができる。
【００２７】
本発明の第二の態様によれば、初期配置のステップは、ネットリストとフロアプラン情報とに基づいて、クロックツリー上のネットを無視してセルの配置処理を行い、次いで前記クロックツリーに結線されるべきフリップフロップセルの配置位置を決定するというステップを備える（請求項２）。
これにより、クロック信号線のネット（クロックネットという）以外に接続されるセルとフリップフロップセルを最適な位置に初期配置し、その配置結果をもとにクロックネットの再構成を行っているので、クロックネットおよびその他のネットの配線効率を最適にしたセルの配置が可能になり、その後の配線処理時間が短縮される。また、フリップフロップセル間のデータバスの経路も最適に配置されるので、セルのレイアウト後のタイミングエラーを抑えることができる。
【００２８】
本発明の第三の態様によれば、バッファ段数を調整するステップの後に、フリップフロップセルの初期配置から、クロックツリーの最終段ネットを抽出し、抽出された最終段ネットのネット範囲を調べ、該ネット範囲が重なる複数のネットをマージし、該マージされたネットをネット範囲が重ならないネットに分割し、分割されたネットにバッファセルを割り当てることによりネット範囲が重ならないようにネットの再構成処理を行う、というステップを備える（請求項３）。
【００２９】
これにより、クロック最終段ネットのスキューばらつきを抑え、配線混雑度の緩和が可能である。
本発明の第四の態様によれば、クロックレイアウトを行うステップは、クロックツリー上のネットを無視してセルの配置処理を行うステップによるフリップフロップの配置結果に基づいて、クロックツリー上のバッファセルの配置位置をボトムアップに決定し、クロックツリーの最終段バッファ毎に、バッファが駆動するフリップフロップセルの配置情報から、フリップフロップセルのクラスタ情報を作成し、バッファセルの各々を中心に配置制限領域情報を作成し、次にバッファセル以外のセルについて再配置制限領域情報およびクラスタ情報を制約値として再配置処理を行う、というステップをさらに備える（請求項４）。
【００３０】
これにより、フリップフロップセルは配置制限領域内で、かつ、クラスタグループ毎にフリップフロップセルがかたまるように配置されることになるので、クロックパスの信号伝播遅延時間を短縮し、スキュー値を抑えることができるので、レイアウト後のタイミング調整作業工数の短縮が可能である。
本発明の第五の態様により、バッファセル以外のセルについて再配置制限領域情報およびクラスタ情報を制約値として再配置処理を行うステップの次に、クロックツリーのネット毎に、被駆動セルの配置位置からクラスタ情報を作成し、作成した各クラスタ毎に、クラスタされた被駆動セル間をクラスタ配線し、駆動セルから各クラスタまでの配線をスター状にルート配線する、というステップをさらに備える（請求項５）。
【００３１】
これにより、クロックスキューを抑えたクロック配線が可能である。また、バッファセル間のネットの配線混雑度を緩和することも可能である。
本発明の第六の態様によれば、クロックツリー上のバッファセルの配置処理をボトムアップに決定するステップの次に、クロックツリーの再構成を行うステップを備え、該クロックツリーの再構成のステップで、クロック論理の変更時に論理変更コマンドをネットリストファイルに出力し、該論理変更コマンドに基づいて前記第二のネットリストを変更することにより、レイアウトデータベース上のクロック論理と一致したクロック論理を含む第三のネットリストを作成するステップを更に備える（請求項６）。
【００３２】
これにより、レイアウトデータベース上の論理と、ネットリストの論理の一致性を保持することができるので、論理変更後の論理一致性を保証するためのフォーマルベリフィケーション等が利用できる。
本発明の第七の態様により、上記一連の処理のいずれかを実行するプログラムを格納した記録媒体が提供される（請求項７）。
【００３３】
【発明の実施の形態】
次に、本発明の実施の形態を説明する。
図１は本発明によるＬＳＩレイアウト方法の一実施の形態の概略を説明するフローチャートである。図２７に示した従来例と同様に、本発明の実施の形態においても、ＬＳＩレイアウトは、論理設計段階Ｓ１１と、クロックレイアウト段階Ｓ１２と、クロック信号線以外の通常ネットの配線段階Ｓ１３とからなる。
【００３４】
論理設計段階Ｓ１１は、論理合成のステップＳ１１１と、本発明により導入されたフロアプランを利用するステップ１１２と、クロックツリー生成のステップＳ１１３からなっている。
論理合成のステップＳ１１１では従来同様に、ＬＳＩを構成する素子のレジスタ・トランスファ・レベル（ＲＴＬ）で記述されたハードウエア記述言語（ＨＤＬ）を、レイアウト可能な論理に論理合成を行って、各々が複数のフリップフロップセルからなる複数のモジュールを配置した第１のネットリスト（Ｎｅｔｌｉｓｔ）（１）を作成する。
【００３５】
フロアプランの利用ステップＳ１１２では、第１のネットリスト（１）上のモジュールをフロアプランに従って配線長が短くなるようにオペレータが再配置し、その結果をフロアプラン情報ファイル１０に格納する。
次にステップＳ１１３にて、フロアプラン情報ファイル１０に格納されているフロアプラン情報に基づいて、フロアプランを考慮し且つクロッスソースから末端のフリップフロップセルまでの間のバッファ段数を最高のバッファ段数に調整したクロックツリー生成を行って第二のネットリスト（２）を作成する。第二のネットリスト（２）にはクロックツリーに接続されたモジュール（フロアプランブロックという）とバッファセルとが含まれている。第二のネットリスト（２）に基づいてクロックツリーに接続されるセルの接続関係の論理をデータベース２６７（図２６）に格納しておく。
【００３６】
次に第二のネットリスト（２）とフロアプラン情報を、クロックレイアウト段階Ｓ１２で用いる。
クロックレイアウト段階Ｓ１２では先ず、ステップＳ１２１で第二のネットリスト（２）からクロックパスの抽出をする。
次にステップＳ１２２にて、フロアプラン情報を用いて、且つステップＳ１２１で抽出したクロックパスを無視して、データ線に接続されるフリップフロップセルのみの初期配置を行う。
【００３７】
次にステップＳ１２３にて、クロック信号を入出力するバッファセル（以下クロックバッファセルともいう）のボトムアップ配置を図２７のステップＳ２８３で示した従来方法と同様に行う。
次にステップＳ１２４にて、図５から図１５を用いて後に詳述するクロックツリー最終段ネットの再構成処理を行う。
【００３８】
次にステップＳ１２５にて、クロックバッファセルをもう一度ボトムアップ配置し、ステップＳ１２６にてそのバッファセルの配置からフリップフロップセルの配置制限領域（図１８参照）を生成し、生成された配置制限領域を配置制限領域情報ファイル１２に出力する。
次にステップＳ１２７にて、フリップフロップセルのかたまりに関するクラスタ情報を作成し（図１９）、作成されたクラスタ情報を第一のクラスタ情報ファイル１４に出力する。
【００３９】
次にステップＳ１２８にて、先に作成したフリップフロップの配置制限領域情報と、クラスタ情報をコンピュータに入力し、バッファセル以外のセルの再配置処理を行う（図２０参照）。
次にステップＳ１２９にて、ステップＳ１２８における再配置の結果に基づいて、フリップフロップセルと各バッファセルについてクラスタ情報を生成し（図２１参照）、生成されたクラスタ情報を第二のクラスタ情報ファイル１６に出力する。
【００４０】
次にステップＳ１３０にて、第二のクラスタ情報ファイルの内容をコンピュータに入力し、クロックネットの特殊配線、すなわち、クラスタ内配線（図２３参照）と、ルート配線（図２４）を行う。ここまでの処理で、全てのセルの配置処理、およびクロックパスの配線が完了している。
次に残った通常ネットの配線を行いレイアウトを完了する。
【００４１】
尚、ステップＳ１２４におけるクロックツリー最終段ネットの再構成により、レイアウトデータベースの論理は変更しているので、ステップＳ１３１にて、先に作成しておいた論理変更コマンドファイル１８の内容に基づいて第二のネットリスト（２）の内容の変更処理を行い、データベース２６７上の論理と一致する論理を持つ第三のネットリスト（３）を作成している。
【００４２】
図２は、図１におけるステップＳ１１３の処理内容の詳細を示すフローチャートである。
図２において、ステップＳ２１でフロアプラン情報ファイル１０の内容をコンピュータに入力し、ステップＳ２２にて、第一のネットリスト（１）に対してこのフロアプラン情報を考慮したバッファリングを行う（図３参照）。
【００４３】
次いでステップＳ２３で、バッファセルが配置された第一のネットリスト内の最大のモジュール内の、クロックソースと末端のフリップフロップとの間のバッファ段数の中で最大のバッファ段数を調べる。そしてステップＳ２４で、最大バッファ段数より小さいバッファ段数を含むクロックパス上のバッファセルの数が最大バッファ段数に等しくなるようにバッファセルを配置して、バッファ段数の調整処理を行う（図４参照）。これにより、クロックソースから末端のフリップフロップのすべてにいたる信号伝播遅延時間が等しくなるので、スキューを抑えることができる。
【００４４】
図３はフロアプラン情報を考慮したバッファリングを行った後のクロックツリーを示しており、３１は半導体チップ、３２−１〜３２−５はそれぞれ、１個のバッファセルにより駆動されるモジュール（フロアプランブロックともいう）であり、それぞれのモジュールは複数のフリップフロップセル（図３においては図示を省略してある）を含んでいる。各モジュール内のバッファセル３３−１〜３３−４はモジュール内のフリップフロップセルを駆動するバッファセルを代表して表している。図２におけるステップＳ２２のバッファリングにより、接近したモジュールを共通のクロックバッファで駆動するようにしている。図３においては、接近している２つのモジュール３２−１と３２−２を共通に駆動するようにバッファセル３４を配置し、同様に接近している２つのモジュール３３−３と３３−４を共通に駆動するようにバッファセル３５を配置している。この結果、図３９に示した従来例と比較してフロアプランブロックを駆動するネット３６が短くなる。
【００４５】
図４は図２のステップＳ２４によるバッファ段数の調整結果を表している。図４において、４１は大モジュール、４２〜４４は小モジュール、４５はクロックソース、４６〜４８はフリップフロップセル、４９〜５５はバッファセルである。ステップＳ２４により、バッファセル５０が追加されている。これにより、クロックソース４５と末端のフリップフロップセル４６との間のバッファ段数、クロックソース４５と末端のフリップフロップセル４７との間のバッファ段数、およびクロックソース４５と末端のフリップフロップセル４８との間のバッファ段数が等しくなり、従ってその間の信号遅延時間は等しくなる。
【００４６】
図５は図１のステップＳ１２４の詳細を説明するフローチャートである。図５において、まず、ステップＳ５１にて、図１にステップＳ１２３でクロックバッファのボトムアップ配置を終了したネットリストからクロックツリー最終段ネットを抽出し、次に、ステップＳ５２にて抽出したネットのネット範囲を調べる。そしてステップＳ５３でネット範囲領域が重なっているネットを検索し、重なっているネットがなければ処理を終了して図１のステップＳ１２５に進む。重なっているネットがあれば（図６参照）、ステップＳ５６で重なっているネット同志をマージ（併合）する（図８参照）。次いでステップＳ５７で、併合したネットをネット範囲が重ならないように分割し（図１１参照）、ステップＳ５８で、分割されたネットの各々にバッファセルを割り当て（図１２参照）、ステップＳ５９で、割り当てたバッファセルをそれぞれのネットの中心に仮配置する（図１４参照）。これをバッファの仮想配置という。次いでステップＳ６０で論理変更情報を論理変更コマンドとして論理変更コマンドファイル１８に出力する。次に、再び、ステップＳ５２のネット範囲を調べる処理に戻り、ネット範囲の重なりがなくなるまで処理を続ける。
【００４７】
図６は図５のステップＳ５４の判断で重なるネットがある場合の最終段ネットのネット範囲を示す図である。図において、６１はバッファセルＢｕｆ１が駆動するネットの範囲を示し、６２はバッファセルＢｕｆ２が駆動するネットの範囲を示す。ネット範囲６１と６２とは図示のように重なっている部分がある。図示例では、ネット範囲６１内にはフリップフロップセル１〜６が存在しており、ネット範囲６２内にはフリップフロップセル７〜１２が存在している。
【００４８】
図７は図６に示したネット範囲のクロックネットの論理を表す図である。図示のように、クロックツリーの再構成前では、バッファセルＢｕｆ１によってフリップフロップセル１〜６が駆動され、バッファセルＢｕｆｆ２によってフリップフロップセル７〜１２が駆動される。
図８は図５のステップＳ５６のネットのマージを示す図である。図示のように、図６に示したネット範囲６１および６２が併合されてフリップフロップセル１〜１２とバッファセルＢｕｆ１およびＢｕｆ２のすべてが、１つのネット範囲８１内に収容されている。
【００４９】
図９は図８に示したネット範囲のクロックネットの論理を表す図である。図示のように、ネット範囲のマージ後はフリップフロップセル１〜１２を駆動するバッファセルがＢｕｆ１およびＢｕｆ２のどれであるかが不定となっている。
図１０および図１１は図５のステップＳ５７のネットの分割処理を説明する図である。図示のように、図８の併合ネット８１は、ネット範囲が重ならないネット１０１と１０２とに分割されている。ネット１０１にはフリップフロップ１、２、３、７、８、９が含まれている。ネット１０２にはフリップフロップ４、５、６、１０、１１、１２が含まれている。ネット１０１はバッファセルＢｕｆ１により駆動される。ネット１０２はバッファセルＢｕｆ２により駆動される。
【００５０】
図１２は図４のステップＳ５８のバッファ割り当てを説明する図である。図示のように、バッファセルＢｕｆ１はネット１０１を駆動するように割り当てられており、バッファセルＢｕｆ２はネット１０２を駆動するように割り当てられている。
図１３は図１２に示したようにバッファセルを割り当てた後のクロックネットの論理を示す図である。図示のように、バッファセルＢｕｆ１はネット１０１内のフリップフロップ１、２、３、７、８、９に接続されてこれらを駆動し、バッファセルＢｕｆ２はネット１０２内のフリップフロップ４、５、６、１０、１１、１２に接続されてこれらを駆動する。尚、このようにクロックツリーの論理を変更してもよいバッファセルは、“０”の入力に応じて“０”を出力し、“１”の入力に応じて“１”を出力するトルー系のバッファセルである。
図１４は図５のステップＳ５９のバッファセルの仮想配置を示す図である。図示のように、バッファセルＢｕｆ１はネット１０１の中央部に配置されており、バッファセルＢｕｆ２はネット１０２の中央部に配置されている。
【００５１】
図１５は図１のステップＳ１２６の配置制限領域生成を説明する図である。図示のように、図１４に示したネット１０１内のバッファセルＢｕｆ１を中心としてネット１０１内のフリップフロップセルができるだけ多く入る菱形の配置制限領域１５１が形成され、同様に、ネット１０２内のバッファセルＢｕｆ２を中心としてネット１０２内のフリップフロップセルができるだけ多く入る菱形の配置制限領域１５２が形成される。配置制限領域の大きさは中心から辺までの距離が設計対象のＬＳＩの設計上で規定されたルート長の範囲にあればよい。こうして形成された配置制限領域の情報は配置制限領域情報ファイル１２（図１）に格納される。
【００５２】
図１６は図１のステップＳ１２８の再配置処理の詳細を説明するフローチャートである。図１６において、まず、ステップＳ１６１でクロックツリーの最終段ネットを１つ抽出する。
次いでステップＳ１６２で、配置制限領域情報ファイル１２（図１参照）の内容を読み込み、フリップフロップセルに対する配置制限領域（図１７の菱形領域）を設定する。
【００５３】
次にステップＳ１６３で、第一のクラスタ情報ファイル１４を読み込み、クラスタでグループ化したフリップフロップ間に仮想ネットを作成する（図１８参照）。
次にステップＳ１６４で、作成した仮想ネット情報に対し、通常ネット内のセル間接近度より大きいセル間接近度を設定する。即ち、配置制限領域内に仮想ネットを閉じ込める。
【００５４】
ステップＳ１６１からステップＳ１６４の処理を、すべてのクロックツリー最終段ネットについて行い、すべての最終段ネットについての処理が終了すると、ステップＳ１６７で配置制限領域とセル間接近度を制約としてフリップフロップセルの再配置処理を実行することにより再配置処理を終了する。
図１７は図１６のステップＳ１６２で設定されたフリップフロップセルの配置制限領域情報を示す図である。図において、１７１はバッファセル、１７２はバッファセル１７１により駆動される多数のフリップフロップセル、１７３はフリップフロップセルの配置制限領域である。この配置制限領域は図１５に示したものと同じである。
【００５５】
図１８は図１６のステップＳ１６３で作成された仮想ネットを示す図である。図示のように、クラスタ情報に基づいて図１７に示したフリップフロップセル１７２を複数のクラスタＣＬ１、ＣＬ２、ＣＬ３、・・・にグループ化し、各グループにおいてセルの間を仮想的に接続して仮想ネットが作成される。
図１９は図１６のステップＳ１６７における仮想ネットの再配置処理を示す図である。図示のように、クラスタＣＬ１〜ＣＬ６は配置制限領域１７３内に閉じ込められている。
【００５６】
図２０は図１９に示したクラスタの再配置後に図１のステップＳ１２９によりセル間の接近度をさらに大きくして生成した第二のクラスタ情報を示す図である。図示のように、第二のクラスタ情報は、図１９に示した再配置されたクラスタＣＬ１〜ＣＬ６内のフリップフロップセル間の配線長がさらに短くなるようにクラスタＣＬ１〜ＣＬ６を再生成することにより得られる。この第二のクラスタ情報は第二のクラスタ情報ファイル１６に格納しておく。
【００５７】
図２１は図１のステップＳ１３０におけるクロックネットの特殊配線処理の詳細を説明するフローチャートである。図において、ステップＳ２１１では、１クロックネットを抽出し、ステップ２１２では第二のクラスタ情報ファイル１６の内容を読み込み、ステップ２１３では、入力したクラスタ情報に基づいて、クラスタ内配線を行う。ステップ２１４ではバッファセルからクラスタ配線までのルート配線を行う。ステップ２１５では全てのクロックネットについて処理が終了しているかを判断し、終了していない場合はステップ２１６で次のクロックネットについてステップ２１１〜Ｓ２１４を繰り返す。ステップ２１５ですべてのクロックネットについて処理が終了している場合は、この特殊配線の処理を終了する。
【００５８】
図２２は図２１のステップ２１３のクラスタ内配線処理の説明図である。図示のように、図２０に示した第二のクラスタ情報に基づいて、クラスタＣＬ１、ＣＬ２、ＣＬ３、ＣＬ４、ＣＬ５、ＣＬ６のそれぞれの内部に、図３５にて説明した従来の横方向に延びるクラスタバーを用いることなく、配線２２１〜２２６が自動的に施されている。この段階ではバッファセル２２７には配線が施されていない。
【００５９】
図２３は図２１のステップＳ２１４のルート配線処理の説明図である。図示のように、図２２のクラスタ配線２２１〜２２６とバッファセル２２７とが、ルート配線２３１〜２３６によりそれぞれ接続されている。
以上の説明ではフリップフロップセルのバッファセルとの接続方法を説明してきたが、同様の手法をバッファセル同志の接続にも適用する。
【００６０】
図２４はバッファ間ネットのクラスタ配線とルート配線の結果を示す図である。図において、ＣＬ１ａ、ＣＬ１ｂ、ＣＬ１ｃはそれぞれ複数のバッファセルを含むクラスタであり、クラスタＣＬ１ａ内のバッファセル２４１、クラスタＣＬ２ａ内のバッファセル２４２および２４３、およびクラスタＣＬ３ａ内のバッファセル２４４は、バッファセル２４５により駆動されるバッファセルである。バッファセル２４５と、各クラスタＣＬ１ａ、ＣＬ２ａ、ＣＬ３ａとはそれぞれ１本のルート配線２４６、２４７、２４８で接続されている。この結果、クラスタ内にバッファセル２４５により駆動されるべき複数のバッファセルが存在していても、図３８に示した従来例のような複数の配線による配線の混雑という問題を回避できる。
【００６１】
以上のステップＳ２１１からステップＳ２１４までの配線処理を全てのクロックネットについて行い、クロックネットの配線処理を完了させる。図１のステップＳ１３０までの処理により、全てのセル配置とクロックツリーの配線が完了し、最後にクロックネット以外の通常ネット配線を行い、レイアウトを完了する。図２５は、図１のステップＳ１２２のフリップフロップセルの初期配置において、クロックネットを無視して行う場合を説明する図である。同図において、２５１〜２５４はフリップフロップ、２５５および２５６はクロックバッファセル、２５７はクロックバッファセルとフリップフロップセルとを接続するクロックネット、２５８はフリップフロップセルを接続するデータパスネットである。フリップフロップの初期配置において、本発明の実施例により、クロックネットを無視し、データパスネットのみに着目してフリップフロップセルを配置することにより、図４２に示した従来技術における問題を回避して、データパスネットの経路を短くし、且つ配線混雑度を下げることができる。なお、この場合は、クロックネットは、図１のステップＳ１２４におけるクロックツリーの再構成の処理において、配線混雑度を緩和することができる。
【００６２】
図２６は本発明による方法を実施するためのコンピュータシステムの構成を示すブロック図である。図において、バス２６０に中央処理装置（ＣＰＵ）２６１と、ＣＤ−ＲＯＭドライブ２６２と、キーボード２６３と、ディスプレイ２６４と、ハードディスク２６５と、メモリ２６６と、データベース２６７とが接続されている。図１に示したフローチャートを含む本発明によるＬＳＩレイアウト方法のプログラムは、ハードディスクに予め格納しておいても、ＣＤ−ＲＯＭに図１に示したフローチャートを含むプログラムを格納し、そのプログラムをＣＤ−ＲＯＭドライブ２６２からハードディスク２６５にインストールするようにしてもよい。メモリ２６６には、図１のフローチャートで説明したフロアプラン情報、配置制限領域情報、第一のクラスタ情報（１）、第二のクラスタ情報（２）、第一〜第三のネットリストが格納される。
【００６３】
オペレータはディスプレイ２６４上の画面を見ながら、キーボード２６３を操作することにより、図１のフローチャートに従ってＬＳＩレイアウトを行う。
【００６４】
【発明の効果】
以上説明したように、本発明によれば、論理設計の段階からフロアプランを行い、その結果からクロックツリーを生成するので、フロアプランブロック間のクロック配線長を短くすることができ、信号伝播遅延時間も短縮することができる。
【００６５】
また、クロックバッファ段数を調整することでスキューを抑えることが可能である。
また、初期配置でクロックネットを無視した配置し、そのフリップフロップセルの配置結果からクロックネットの再構成を行うことで、クロックパス以外のパスを無理に接近させないようにするので、配線の混雑を緩和することが出来る。
【００６６】
また、フリップフロップセルの配置制限およびクラスタ制約による再配置処理を行うことで、クロックツリー最終段ネットのスキューが抑えられる。
また、バッファ間ネットもクラスタを使用した特殊配線することにより、配線混雑を緩和することが可能である。
以上の効果により、全体の配線効率がよくなり、処理時間が短縮することが可能である。
【００６７】
また、クロックの信号伝播遅延時間とスキューが抑えることが出来るため、レイアウト後のタイミングエラーを削減し、タイミング調整作業にかかる処理時間が短縮される。
さらに、配線混雑度を抑えることにより配線密度に余裕ができるため、その余裕部分を高密度にすることにより、チップサイズの縮小することも可能である。
【００６８】
また、レイアウト後の論理検証にフォーマルベリファイヤー等の高速検証ツールが利用できるため、ＬＳＩ実装設計時間を短縮することが可能である。
【図面の簡単な説明】
【図１】本発明によるＬＳＩレイアウト方法の一実施の形態の概略を説明するフローチャートである。
【図２】図１におけるステップＳ１１３の処理内容の詳細を示すフローチャートである。
【図３】フロアプラン情報を考慮したバッファリングを行った後のクロックツリーを示す図である。
【図４】図２のステップＳ２４によるバッファ段数の調整結果を表す図である。
【図５】図１のステップＳ１２４の詳細を説明するフローチャートである。
【図６】図５のステップＳ５４の判断で重なるネットがある場合の最終段ネットのネット範囲を示す図である。
【図７】図６に示したネット範囲のクロックネットの論理を表す図である。
【図８】図５のステップＳ５６のネットのマージを示す図である。
【図９】図８に示したネット範囲のクロックネットの論理を表す図である。
【図１０】図５のステップＳ５７のネットの分割処理を説明する図である。
【図１１】図５のステップＳ５７のネットの分割処理を説明する図である。
【図１２】図４のステップＳ５８のバッファ割り当てを説明する図である。
【図１３】図１２に示したようにバッファセルを割り当てた後のクロックネットの論理を示す図である。
【図１４】図５のステップＳ５９のバッファセルの仮想配置を示す図である。
【図１５】図１のステップＳ１２６の配置制限領域生成を説明する図である。
【図１６】図１のステップＳ１２８の再配置処理の詳細を説明するフローチャートである。
【図１７】図１６のステップＳ１６２で設定されたフリップフロップセルの配置制限領域情報を示す図である。
【図１８】図１６のステップＳ１６３で作成された仮想ネットを示す図である。
【図１９】図１６のステップＳ１６７における仮想ネットの再配置処理を示す図である。
【図２０】図１９に示したクラスタの再配置後に図１のステップＳ１２９によりセル間の接近度をさらに大きくして生成した第二のクラスタ情報を示す図である。
【図２１】図１のステップＳ１３０におけるクロックネットの特殊配線処理の詳細を説明するフローチャートである。
【図２２】図２１のステップ２１３のクラスタ内配線処理の説明図である。
【図２３】図２１のステップＳ２１４のルート配線処理の説明図である。
【図２４】バッファ間ネットのクラスタ配線とルート配線の結果を示す図である。
【図２５】図１のステップＳ１２２におけるフリップフロップセルの初期配置は、クロックネットを無視して行う場合を説明する図である。
【図２６】本発明による方法を実施するためのコンピュータシステムの構成を示すブロック図である。
【図２７】従来のＬＳＩレイアウト方法を説明するフローチャートである。
【図２８】従来の方法において、ＬＳＩのモジュール内における、バッファセル導入前のクロックツリーの一例を示す図である。
【図２９】従来の方法において、ＬＳＩのモジュール内における、バッファセルが導入されたクロックツリーを示す図である。
【図３０】従来の方法において、ＬＳＩのモジュール内におけるバッファセル及びフリップフロップセルの初期配置結果を示す図である。
【図３１】従来の方法において、ＬＳＩのモジュール内においてバッファセル３０１をそのバッファセル３０１が駆動するフリップフロップセル３１０〜３１５の配置範囲の中心に配置した例を示す図である。
【図３２】従来の方法において、バッファセル３２１を中心に配置制限領域３２２を設定した例を示す図である。
【図３３】従来の方法において、セルを再配置した結果を示す図である。
【図３４】従来の方法において、セルを再配置した結果を示す図である。
【図３５】従来の方法において、クラスタ用バー情報３５１〜３５７の設定を示す図である。
【図３６】従来の方法において、各フリップフロップセルとクラスタ用バーとを結ぶ支線３６１の配線を示す図である。
【図３７】従来の方法において、駆動用バッファセル３２１からクラスタ用バーへのルート配線を示す図である。
【図３８】従来の方法において、バッファ間ネットの特殊配線を示す図である。
【図３９】従来の方法において、フロアプランブロックとクロックツリーを示す図である。
【図４０】従来の方法において、配置制限領域の重なりを示す図である。
【図４１】従来の方法において、配線の混雑を説明する図である。
【図４２】従来の方法において、クロックネットを無視しない配置処理を説明する図である。
【符号の説明】
１０…フロアプラン情報ファイル
１２…配置制限領域情報
１４…第一のクラスタ情報ファイル
１６…第二のクラスタ情報ファイル
１８…論理変更コマンドファイル
３２−１〜３２−４…フロアプランブロック
３３−１〜３３−４…バッファセル
３４、３５…バッファセル
３６…クロックパス
４１〜４４…モジュール
４５…クロックソース
４６〜４８…フリップフロップセル
４９〜５５…バッファセル
１０１、１０２…分割されたネット
１５１、１５２…配置制限領域
１７１…バッファセル
１７２…フリップフロップセル
１７３…配置制限領域
２２７…バッファセル
２２１〜２２６…クラスタ内配線
２３１〜２３６…ルート配線
２４５…バッファセル
２４６〜２４８…バッファ間クラスタ配線
２５１〜２５４…フリップフロップセル
２５７…クロックネット
２５８…データパスネット
２６２…ＣＤ−ＲＯＭドライブ
Ｂｕｆ１、Ｂｕｆ２…バッファセル
ＣＬ１〜ＣＬ４…クラスタ
【図１】
0003614306.tif 000002
【図２】
0003614306.tif 000003
【図３】
0003614306.tif 000004
【図４】
0003614306.tif 000005
【図５】
0003614306.tif 000006
【図６】
0003614306.tif 000007
【図７】
0003614306.tif 000008
【図８】
0003614306.tif 000009
【図９】
0003614306.tif 000010
【図１０】
0003614306.tif 000011
【図１１】
0003614306.tif 000012
【図１２】
0003614306.tif 000013
【図１３】
0003614306.tif 000014
【図１４】
0003614306.tif 000015
【図１５】
0003614306.tif 000016
【図１６】
0003614306.tif 000017
【図１７】
0003614306.tif 000018
【図１８】
0003614306.tif 000019
【図１９】
0003614306.tif 000020
【図２０】
0003614306.tif 000021
【図２１】
0003614306.tif 000022
【図２２】
0003614306.tif 000023
【図２３】
0003614306.tif 000024
【図２４】
0003614306.tif 000025
【図２５】
0003614306.tif 000026
【図２６】
0003614306.tif 000027
【図２７】
0003614306.tif 000028
【図２８】
0003614306.tif 000029
【図２９】
0003614306.tif 000030
【図３０】
0003614306.tif 000031
【図３１】
0003614306.tif 000032
【図３２】
0003614306.tif 000033
【図３３】
0003614306.tif 000034
【図３４】
0003614306.tif 000035
【図３５】
0003614306.tif 000036
【図３６】
0003614306.tif 000037
【図３７】
0003614306.tif 000038
【図３８】
0003614306.tif 000039
【図３９】
0003614306.tif 000040
【図４０】
0003614306.tif 000041
【図４１】
0003614306.tif 000042
【図４２】
0003614306.tif 000043