(57)【特許請求の範囲】
【請求項１】
複数階層を有する半導体集積回路のレイアウト設計を行なうレイアウト設計装置であって、
上位モジュール内の複数個所で使用される下位モジュールについて、前記下位モジュールが配置された各配置箇所近傍の上位階層の配線情報を抽出し、
前記抽出した複数個所における上位階層の配線情報に基づいて、前記下位モジュールのレイアウト設計を行なうためのデータであるレイアウト用データベースに、配線処理を禁止する特定の領域である配線禁止領域を設定し、前記下位モジュールのレイアウト設計を行ない、
前記抽出した複数個所における上位階層の配線情報は、
前記上位モジュールに含まれる各前記下位モジュールから、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を抽出し、
前記抽出した前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を暫定的に前記上位階層の配線情報にマージし、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報をマージした上位階層の配線情報から、レイアウト対象の下位モジュールが配置される各配置箇所近傍の上位階層の配線情報を抽出することにより得られることを特徴とするレイアウト設計装置。
【請求項２】
前記下位モジュール内部における、下位モジュール境界近傍の下位モジュールの配線情報を抽出する際に、
前記下位モジュールのモジュール境界枠よりも内側の領域であって、下位モジュールの配線層に存在する配線どうしの間隔として必要な配線間距離の中で最大の配線間距離である下位階層最大スペーシングの分だけ下位モジュールの境界枠から内側の領域に含まれる下位モジュールの配線情報を前記下位モジュール内部のモジュール境界近傍の配線情報として抽出することを特徴とする請求項１に記載のレイアウト設計装置。
【請求項３】
前記下位モジュールが配置された各配置箇所近傍の上位階層の配線情報を抽出する際に、
前記下位モジュールの上位階層の各配線層に存在する配線どうしの間隔として必要な配線間距離の中で最大の配線間距離である上位階層最大スペーシングの分だけ、下位モジュールの境界枠から外側の位置を囲む枠から内側の領域に含まれる上位階層の配線情報を、前記下位モジュール近傍の上位階層の配線情報として抽出することを特徴とする請求項１乃至２のいずれかに記載のレイアウト設計装置。
【請求項４】
レイアウト対象の下位モジュールの端子に接続される上位階層の配線情報が示す配線を、前記端子に接続される下位モジュール内部の配線情報と接続された配線として取り扱って、前記下位モジュールのレイアウト検証を行なうことを特徴とする請求項１乃至３のいずれかに記載のレイアウト設計装置。
【請求項５】
レイアウト対象の下位モジュールの端子に接続されない当該下位モジュール近傍の上位階層の配線情報を、前記下位モジュール内部の配線であると取り扱って、前記下位モジュールのレイアウト検証を行なうことを特徴とする請求項１乃至３のいずれかに記載のレイアウト設計装置。
【請求項６】
前記レイアウト対象の下位モジュールのレイアウト検証において、前記下位モジュール内の配線どうしが所定のレイアウト設計ルールを満たすか否かを検証する際に、合わせて、前記下位モジュール内部の配線であると取り扱われた上位階層の配線情報と前記下位モジュール内部の配線とが所定のレイアウト設計ルールを満たすか否かを検証することを特徴とする請求項４又は５記載のレイアウト設計装置。
【請求項７】
前記レイアウト対象の下位モジュールのレイアウト検証において、前記下位モジュール内部の配線であると取り扱われた上位階層の配線情報どうしではレイアウト検証を行なわないことを特徴とする請求項４乃至６のいずれかに記載のレイアウト設計装置。
【請求項８】
前記下位モジュールのレイアウト処理を行なった後に、レイアウト処理後の下位モジュール内部のモジュール境界近傍の配線情報を抽出し、抽出した配線情報を上位階層のレイアウト設計における配線禁止領域として設定して、上位階層のレイアウト設計を行なうことを特徴とする請求項１乃至７のいずれかに記載のレイアウト設計装置。
【請求項９】
複数階層を有する半導体集積回路のレイアウト設計を行うレイアウト設計方法であって、
上位モジュール内の複数個所で使用される下位モジュールについて、前記下位モジュールが配置された各配置箇所近傍の上位階層の配線情報を抽出する上位配線情報抽出ステップと、
前記上位配線情報抽出ステップにより抽出した複数個所における上位階層の配線情報に基づいて、前記下位モジュールのレイアウトを行なうためのデータであるレイアウト用データベースに、配線処理を禁止する特定の領域である配線禁止領域を設定する配線禁止領域設定ステップと、
前記配線禁止領域設定ステップにより設定された配線禁止領域を用いて、前記下位モジュールのレイアウトを行なう下位モジュールレイアウト処理ステップと、を備え、
前記抽出した複数個所における上位階層の配線情報は、
前記上位モジュールに含まれる各前記下位モジュールから、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を抽出し、
前記抽出した前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を暫定的に前記上位階層の配線情報にマージし、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報をマージした上位階層の配線情報から、レイアウト対象の下位モジュールが配置される各配置箇所近傍の上位階層の配線情報を抽出することにより得られることを特徴とするレイアウト設計方法。
【請求項１０】
前記下位モジュールレイアウト処理ステップにより前記下位モジュールのレイアウトを行なった後に、前記抽出した上位階層の配線情報を、レイアウト後の当該下位モジュール内部の配線であるとして取り扱って、当該下位モジュールのレイアウト結果が所定のレイアウト設計ルールを満たすか否かを検証するレイアウト検証を行なうことを特徴とする請求項９に記載のレイアウト設計方法。
【請求項１１】
複数階層を有する半導体集積回路のレイアウト設計を行なうレイアウト設計プログラムであって、
上位モジュール内の複数個所で使用される下位モジュールについて、前記下位モジュールが配置された各配置箇所近傍の上位階層の配線情報を抽出する上位配線情報抽出ステップと、
前記上位配線情報抽出ステップにより抽出した複数個所における上位階層の配線情報に基づいて、前記下位モジュールのレイアウトを行なうためのデータであるレイアウト用データベースに、配線処理を禁止する特定の領域である配線禁止領域を設定する配線禁止領域設定ステップと、
前記配線禁止領域設定ステップにより設定された配線禁止領域を用いて、前記下位モジュールのレイアウトを行なう下位モジュールレイアウト処理ステップとをコンピュータに行なわせ、
前記抽出した複数個所における上位階層の配線情報は、
前記上位モジュールに含まれる各前記下位モジュールから、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を抽出し、
前記抽出した前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報を暫定的に前記上位階層の配線情報にマージし、前記下位モジュールの内部における、下位モジュール境界近傍の下位モジュールの配線情報をマージした上位階層の配線情報から、レイアウト対象の下位モジュールが配置される各配置箇所近傍の上位階層の配線情報を抽出することにより得られることを特徴とするレイアウト設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数階層を有する半導体集積回路のレイアウト設計に関する。
【背景技術】
【０００２】
近年の半導体集積回路の大規模化及び高集積化に伴い、データ規模が大きくなり、回路全体を一度にレイアウトすることが難しくなってきている。そのため、回路全体を複数の機能モジュールに分割し、各機能モジュール単位で論理設計、レイアウト設計、タイミング設計を進め、最後にこれらの機能モジュールを組み上げて半導体集積回路の全体を構成するような階層設計が行なわれている。
【０００３】
階層設計を行なう場合、下位モジュール内部の上層及びモジュール境界近傍の領域にある配線と、上位階層の配線とが互いに影響を与える場合がある。ここでいう「影響」とは、レイアウト設計上のデザインルール違反やクロストークノイズによる影響等をいうものとする（以下、同様）。そのため、下位モジュール内の配線と上位階層の配線との間で互いに影響を及ぼすのを防止するためのいくつかの技術が考えられている。
【０００４】
第１の技術として、下位モジュールの境界近傍に所定の幅の配線禁止領域を設ける手法が考えられている。例えば、図１７（Ａ）に示すように、回路２６を２つの下位モジュール３５、３６に機能的・物理的に分割して階層レイアウト設計する場合、図１７（Ｂ）の斜線で示した領域のように、各下位モジュール３５、３６の内部又は外部のモジュール境界近傍に一定幅のシールド領域、すなわち、配線禁止領域を設ける。このように下位モジュールの境界部分に配線禁止領域を設けることにより、下位モジュール内の配線であるＮｅｔ１やＮｅｔ２と、上位モジュール内の配線であるＮｅｔＢとの間で影響が生じることを防止することができる。
【０００５】
第２の技術として、下位モジュール内の境界近傍の配線情報を抽出し、抽出した配線情報を基に、上位階層における配線禁止領域を設定し、上位階層のレイアウト設計を行なう手法が考えられている。例えば、図１７（Ｃ）に示される下位モジュール３５及び下位モジュール３６内部のモジュール境界近傍の配線であるＮｅｔ１及びＮｅｔ２の各情報を抽出し、抽出した各配線情報を基に、上位階層に配線禁止領域を設定する。そして、設定された配線禁止領域の情報を考慮して上位階層に係る上位モジュール２６のレイアウトを行なう。このようにすることで、下位モジュール３５、３６内の配線状況を考慮した、上位モジュール２６のレイアウト設計が可能となる。
【０００６】
第３の技術として、上位階層の配線情報を基に下位モジュール内に配線禁止領域を設けて、下位モジュールのレイアウト設計を行なう手法が考えられている。例えば、上位階層の配線に関する情報がある状態で、下位モジュールのレイアウトを行なう場合、その下位モジュールの配置箇所を通る上位階層の配線情報を基に下位モジュール内に配線禁止領域を設定して、下位モジュールのレイアウトを行なうといったものである。このようにすることで、下位モジュール近傍の上位階層の配線を考慮した下位モジュールのレイアウト設計が可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２７０７７５号公報
【特許文献２】特開２００５−６３２７５号公報
【特許文献３】特開２００３−２４２１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ハイエンドサーバ等の上位機種向けの半導体集積回路では、ＣＡＤ（Computer Aided Design）ツールによる自動配置配線だけでなく、手動によるマニュアル・レイアウトも行なわれ、高速、かつ高密度なレイアウト設計を行なう努力がなされている。半導体集積回路の高速、かつ高密度な階層レイアウトを行なうような場合には、上記技術では高品質なレイアウトを行なうことが容易でない場合が生じ得る。以下、具体的に説明する。
【０００９】
前述の第１の技術のように、下位モジュール境界近傍に所定の幅の配線禁止領域を設ける場合、回路の実際の配置・配線状況を考慮しないで配線禁止領域を設定することになる。そのため、配線禁止領域に設定する必要の無い領域についてまで配線禁止としてしまい、回路の高密度な実装を阻害してしまう場合がある。
【００１０】
また、前記第２の技術においては、下位モジュール３５、３６設計時に上位モジュール２６の配線情報を参照できない。そのため、前記第２の技術においては、上位モジュール２６のクロック配線等のように、上位モジュールの配線が優先されるべき場合でも、下位モジュール３５、３６設計後に、下位モジュール３５、３６内の配線を避けるように上位モジュールの配線処理をしなければならなくなる。
【００１１】
前述の第３の技術のように、特定箇所に配置された下位モジュール近傍の上位階層の配線を考慮して下位モジュールのレイアウト設計を行なう場合、そのようにして配線レイアウトされた下位モジュールを複数個所に適用する際に問題となる場合がある。特に、同じ下位モジュールが複数個所に配置され、かつ、各配置箇所における下位モジュールの周囲の配線状況が異なる場合、各配置箇所における下位モジュールの周囲の配線状況に適合するように下位モジュールのレイアウトを変えなければならない可能性がある。この場合、簡便なレイアウト処理フローにより、全ての配置箇所における周りの配線状況を考慮して下位モジュールのレイアウトを行なうことは困難となる。この状況を、図１８を用いて説明する。
【００１２】
図１８では、半導体集積回路のＣＨＩＰ２７は、下位モジュールとして、回路モジュールＡを４つ（３７〜４０）と、回路モジュールＢ（４１）とを有する。図１８において、各下位モジュール枠内に描かれた黒い四角は、各モジュールの配置原点、すなわち、各下位モジュールのレイアウト処理を行なう際の基準位置を示す。下位モジュールＡは、４つのインスタンス（Ａ１〜Ａ４）を付して、異なる方向に回転して４箇所に配置されている。下位モジュール３８と下位モジュール３９は、下位モジュール３７を９０度右回転して配置され、下位モジュール４０は、下位モジュール３７を９０度左回転して配置されている。各下位モジュール３７〜４０は、黒丸で示した端子ＰｉｎＣを内側に有しているものとし、各端子ＰｉｎＣは、上位階層において、それぞれ異なる配線（ＮｅｔＡ〜ＮｅｔＤ）により下位モジュール４１と接続されているものとする。説明の便宜上、その他の端子や配線については図１８では省略する。
【００１３】
図１８に示すＣＨＩＰ２７のレイアウト設計において、例えば、インスタンスがＡ１の下位モジュール３７に着目して、下位モジュール３７近傍の上位階層の配線、例えば、ＮｅｔＢ等を考慮して下位モジュールＡの配置・配線等のレイアウト設計を行なうとする。この場合、他のインスタンス（Ａ２〜Ａ４）の下位モジュール３８〜４０の周りの配線状況が考慮されないまま、下位モジュールＡのレイアウトが行なわれる。こうしてレイアウトされた下位モジュールＡを、インスタンスがＡ２、Ａ３、及びＡ４のそれぞれの箇所でも好適に用いるためには、インスタンスがＡ２〜Ａ４の各下位モジュール３８〜４０近傍の上位階層の配線を、インスタンスがＡ１の下位モジュール３７近傍の上位階層の配線と同様に配線することが望ましい。
【００１４】
しかし、各下位モジュールの周りの回路の配置・配線状況によっては、上層階層の配線を非対称とせざるを得ない部分が生じ、下位モジュール３８〜４０のそれぞれの近傍の配線を、下位モジュール３７の近傍の配線と同一の状態でレイアウト設計することが困難な場合がある。例えば、図１８において、各下位モジュール３７〜４０の端子ＰｉｎＣに接続される各々のネット（ＮｅｔＡ、ＮｅｔＢ、ＮｅｔＣ、及びＮｅｔＤ）を、最短で中央の下位モジュール４１に接続するには、これらの各ネットについて、それぞれ下位モジュール３７〜４０上の異なる箇所を通る配線とせざるを得ない。
【００１５】
各下位モジュール３８〜４０近傍の上位階層の配線が下位モジュール３７近傍の上位階層の配線と非対称とならざるを得ない場合には、まずは、例えば下位モジュール３７を基準として下位モジュールＡのレイアウトを行なう。そして、レイアウトされた下位モジュールＡのレイアウトデータをインスタンスがＡ２〜Ａ４の下位モジュール３８〜４０に適用し、それぞれの下位モジュール３８〜４０の配置箇所において、上位階層の配線や他のモジュール内の配線との影響がないかをチェックする。バイオレーションが発生した場合には、上位階層の配線を修正するか、又は、バイオレーションが発生した箇所における下位モジュールＡの周りの配線状況を考慮して下位モジュールＡの配置・配線を修正し、再度、バイオレーションの有無をチェックする等の対策が必要となる。
【００１６】
ところが、下位モジュールＡを流用して配置する箇所が多くなってくると、全ての配置箇所における下位モジュール近傍の上位階層の配線状況を考慮して下位モジュールＡを修正することは非常に困難となるという問題点がある。そのため、本発明では、複数階層を有する半導体集積回路の階層レイアウトを行なう際に、複数個所で使用される下位モジュールについての各配置箇所における下位モジュール近傍の上位階層の配線状況を考慮して、下位モジュールのレイアウト設計を行なうことを課題とする。
【課題を解決するための手段】
【００１７】
上記課題を解決するために、本発明に係るレイアウト設計装置は、複数階層を有する半導体集積回路のレイアウト設計を行なうレイアウト設計装置であって、上位モジュール内の複数個所で使用される下位モジュールについて、前記下位モジュールが配置された各配置箇所近傍の上位階層の配線情報を抽出し、前記抽出した複数個所における上位階層の配線情報に基づいて、前記下位モジュールのレイアウトを行なうためのデータであるレイアウト用データベースに、配線処理を禁止する特定の領域である配線禁止領域を設定し、前記下位モジュールのレイアウト設計を行なう。
【発明の効果】
【００１８】
階層レイアウトを行なう際に、複数個所で使用される下位モジュールについての各配置箇所における下位モジュール近傍の上位階層の配線状況を考慮して、下位モジュールのレイアウト設計を行なうことが可能となる。また、このようにして下位モジュールのレイアウト設計を行なうことにより、レイアウト後の下位モジュールのレイアウト検証において、その下位モジュールの内部だけでなく、周りの配線状況も加味した正確なレイアウト検証を行なうことが可能となる。
【図面の簡単な説明】
【００１９】
【図１】実施例に係るレイアウト処理の全体フローの例の概要を示した図である。
【図２】実施例に係るレイアウト処理の実行環境を示したである。
【図３】複数個所に配置された下位モジュール近傍の配線情報を下位モジュールのレイアウト用のデータにマージする処理の説明図である。
【図４】隣接する下位モジュール内の配線どうしが互いに影響を与える場合の例を示した図である。
【図５】同じ下位モジュールを複数個所に隣接配置した場合の例を示した図である。
【図６】同じ下位モジュールを複数個所に隣接配置した場合の上位階層の配線情報の抽出例を示した図である。
【図７】下位モジュールの端子に接続された上位配線の取り扱いを説明する図である。
【図８】実施例に係るレイアウト設計装置の構成を示した図である。
【図９】実施例に係るレイアウト処理フローを示した図である。
【図１０】実施例に係る下位モジュール境界データ抽出処理の内容を示した図である。
【図１１】実施例に係る下位モジュールのデータ落とし込み処理の内容を示した図である。
【図１２】実施例に係る下位モジュール処理の内容を示した図である。
【図１３】下位モジュール内のモジュール境界枠付近の配線の抽出対象を示した図である。
【図１４】同じ名前のネットが複数の下位モジュールに存在する場合を示した図である。
【図１５】下位モジュール近傍の一定領域内にある上位階層の配線の抽出対象及び抽出結果を示した図である。
【図１６】下位モジュールの端子に接続された下位モジュール内部の配線と上層階層の配線との関係を示した図である。
【図１７】従来技術を説明した図である。
【図１８】従来技術に関する課題を説明する図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態について詳細に説明する。
【００２１】
図１は、実施例に係るレイアウト設計装置、レイアウト設計方法、及びレイアウト検証方法を実施するためのコンピュータ１０の構成例を示した図である。コンピュータ１０は、ＣＰＵ（Central Processing Unit）１１、メモリ１２、キーボードやマウス等の入力装置とのインターフェース回路１３、ディスプレイ等の出力装置とのインターフェース回路１４、ネットワークインターフェース回路１５、及び、記憶装置１６を有する。また、コンピュータ１０の外部には、所定のネットワーク通信回線１９を介してネットワーク上の記憶装置１７が接続される。
【００２２】
記憶装置１６やネットワーク上の記憶装置１７は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置あるいは半導体記憶装置を含み、コンピュータ読み取り可能な記録媒体を扱うドライブ装置も含む。ドライブ装置が扱う記録媒体としては、磁気テープ、メモリカード、光ディスク（ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ，等）、光磁気ディスク（ＭＯ，ＭＤ，等）といった、任意のコンピュータ読み取り可能な記録媒体を使用することができる。
【００２３】
記憶装置１６やネットワーク上の記憶装置１７は、レイアウト設計の対象となる回路情報７０、レイアウト処理で使用するライブラリ７１、及び、レイアウト処理を行なうためのプログラム７２等を格納する。ＣＰＵ１１は、バス１８や各インターフェース回路（１３〜１５）を介して、メモリ１２、記憶装置１６、１７、及び各種入出力装置等にアクセスし、記憶装置１６や記憶装置１７に格納されたプログラム７２、又は、メモリ１２等にロードされたプログラム７２を実行する。以下に説明する実施例に係るレイアウト処理等は、図１に示すコンピュータ１０が有するＣＰＵ１１により実行されるものとする。
図２は、実施例に係るレイアウト処理の全体フローの一態様について、そのフローの概要を示した図である。本発明は、図２に係るレイアウト処理のフローでのみ使用されるものではなく、他のフローにおいても適用し得るが、説明の便宜上、図２の全体フローを用いて、以下、実施例を説明する。なお、図２のフローで示されるレイアウト処理を行なう前提として、レイアウトを行なう対象となる回路は、階層レイアウトを行なうことを考慮した論理階層を有し、そのレイアウト対象の回路についての論理設計は完了しているものとする。
【００２４】
図２に示すレイアウト処理の全体フローの例では、最初に、レイアウト対象となる回路のモジュール分割を行なう（Ｓ１００）。このモジュール分割では、階層レイアウトの対象となる回路の回路規模や機能等を考慮して、階層レイアウトを行なうのに適した大きさの回路ブロックになるように、レイアウト処理上の階層（以下、「レイアウト階層」という）を分割する。そして、分割された各レイアウト階層のモジュールについて、端子位置、モジュール間配線、動作周波数、及び回路規模等を考慮しながら、好適なレイアウト処理を行ない得るフロアプランを作成する（Ｓ１０１）。
【００２５】
フロアプランを作成して各下位モジュールのモジュール境界枠が決まると、各々のモジュール内部の電源設計、及びクロック設計を行なう（Ｓ１０２）。一般に、フロアプラン後の配置・配線の処理においては、電源配線やクロック配線等は最も優先度が高く、最初に電源・クロック設計が行なわれることが多い。Ｓ１０２の処理において、各下位モジュールの電源・クロック設計等を行なう処理は、個々の下位モジュール毎に独立した作業となるので、並列して行なってもよい。尚、下位モジュールの回路の内容や設計の進捗状況によっては、Ｓ１０２の処理において、下位モジュールの電源設計、クロック設計に加えて、その下位モジュールの詳細な配置、配線設計まで行なわれる場合もある。
【００２６】
各下位モジュールの電源・クロック設計が完了すると、それらの下位モジュールを有する上位階層の上位モジュールの電源・クロック設計を行なう（Ｓ１０３）。その際、下位モジュールのクロック以外の信号線についてもモジュール端子位置が決まっているような場合には、例えば、タイミング的にクリティカルになる配線等について予め優先的に配線をしておく場合もある。
【００２７】
上位モジュールにおける電源配線、クロック配線や通常の信号についての配線が行なわれた後は、図２中の点線で囲まれた処理（Ｓ１０４，Ｓ１０５）により、各下位モジュールのレイアウト設計を行なっていく。
【００２８】
本実施例では、まず、各々の下位モジュールの詳細設計に入る前に、下位モジュールが配置される箇所の近傍、すなわち、その下位モジュールの周辺あるいはその下位モジュール上の上位階層の配線情報を基に、その下位モジュールのレイアウトにおける配線禁止領域を設定する（Ｓ１０４）。その際、同一の下位モジュールが複数個所で使用されている場合には、全ての使用箇所における上位階層の配線情報を基に、その下位モジュールのレイアウトにおける配線禁止領域を設定する。また、上位階層の配線情報を基に下位モジュールのレイアウトにおける配線禁止領域を設定する際、上位階層の配線情報が示す配線の配線幅に、所定の間隔、例えば所定の配線スペーシングルールを満たす幅を加えた幅の配線禁止領域を設定してもよい。そして、上位階層の配線情報を基に設定された配線禁止領域を考慮しながら下位モジュールの詳細設計を行なう（Ｓ１０５）。
【００２９】
Ｓ１０５の下位モジュールの詳細設計においては、配置・配線といった処理に加え、配置・配線した結果がレイアウト設計上の所定のデザインルールを満たすかといったことを検証するレイアウト検証も行なわれる。また、レイアウト後の配線情報等から配線抵抗や配線容量の抽出を行なって遅延計算を行い、その下位モジュールが所定の動作周波数で動作するかを検証するＳＴＡ（Static Timing Analysis）等のタイミング検証も行なわれる。タイミング検証では、ＳＴＡに加えて、実配線遅延を考慮した論理シミュレーションを行なって、所定の動作周波数で回路が動作するか否かの検証が行なわれることもある。レイアウト検証やタイミング検証でバイオレーションがある場合、必要に応じてＳ１０２まで戻りつつ、配置・配線を修正して、各バイオレーションを解消していくことになる。
【００３０】
Ｓ１０４とＳ１０５の処理内容の詳細については、後述する。尚、Ｓ１０４において、全ての下位モジュールについて上位階層の配線に基づく配線禁止領域を設定した後に、Ｓ１０５で各下位モジュールの詳細配線を行なうようにしてもよいし、個々の下位モジュールついてＳ１０４とＳ１０５を一連の処理として実行するようにしてもよい。また、Ｓ１０５の個々の下位モジュールのレイアウト詳細設計は各々独立して行なうことができるので、Ｓ１０５で複数の下位モジュールのレイアウト設計を並行して行なうこともできる。
【００３１】
上位モジュールに含まれる全ての下位モジュールの詳細設計が終わると、それらの各下位モジュール内のモジュール境界付近の配線を考慮しながら、上位階層のレイアウト設計を行なう（Ｓ１０６）。下位モジュール内のモジュール境界付近の配線を考慮した上位階層のレイアウト方法の詳細については後述する。
【００３２】
上位モジュールにおける配線処理等のレイアウト設計が終わると、その上位モジュールについて、さらに、レイアウト検証やタイミング検証を行なう（Ｓ１０６）。レイアウト検証では、上位階層に影響を与える可能性のある各下位モジュール内の配線のみを抽出して上位階層のレイアウト検証を行なってもよいし、上位階層に含まれる全ての下位階層のレイアウトデータを上位階層のレイアウトデータにマージして行なってもよい。また、タイミング検証では、各下位モジュールのレイアウトデータを上位モジュールのレイアウトデータにマージしてタイミング検証を行なってもよいし、各下位モジュールのレイアウト結果から抽出して作成した簡略化したタイミングモデルを用いて上位モジュールのタイミング検証を行なうようにしてもよい。
【００３３】
Ｓ１０６での上位モジュールのレイアウト検証やタイミング検証でバイオレーション、すなわちエラーがある場合には、上位モジュール内の配置・配線を修正したり（Ｓ１０６）、必要に応じて、Ｓ１０２〜Ｓ１０５に戻って下位モジュールのレイアウトの修正を行なう。そして、Ｓ１０６におけるレイアウト検証やタイミング検証の結果で修正が必要となるバイオレーションが消え、各下位モジュールのレイアウト設計も完了している場合には、レイアウト設計が完了となる（Ｓ１０７  ＹＥＳ）。
【００３４】
なお、上位モジュールに含まれる一部の下位モジュールの詳細レイアウト設計が完了していない場合においても、上位モジュールの詳細設計を行なうことができる（Ｓ１０６）。上位モジュールの詳細設計が一通り完了した段階において、全ての下位モジュールの詳細設計が完了していない場合には、Ｓ１０７の条件判定において設計完了とならないため、Ｓ１０７での判定結果は“ＮＯ”となる。この場合、未処理の下位モジュールの状態に応じて、Ｓ１０２、又は、Ｓ１０４の処理に戻って、引き続きレイアウト処理が行なわれることになる。
【００３５】
以下、図２におけるＳ１０４及びＳ１０５の処理を中心に、これらの処理の詳細について、図３以降の図面を用いて説明する。
図３は、複数個所に配置された同じ下位モジュール近傍の配線情報を下位モジュールのレイアウト用のデータベースに落とし込む、すなわち下位モジュール近傍の配線情報を追加する処理の説明図である。図３（Ａ）に示す上位モジュール２１は、モジュールＡを内容とする、インスタンスがＡ１とＡ２の２つの下位モジュール３１及び３２を有する。
【００３６】
図３中、下位モジュール３０〜３２内に描かれている黒い四角は、下位モジュールのレイアウトをする際の配置原点を示す記号であり、Ｆの記号は回転方向を示す記号である。配置原点は、レイアウト対象となるモジュールのレイアウトを行なう際の座標系の原点の位置を視覚的に表示したものである。Ｆの記号は、Ｆの記号が付されたモジュールを回転させたり、反転させたりした場合に、この記号Ｆも合わせて回転あるいは反転させることにより、そのモジュールの配置方向を視覚的に表示するのに用いられる。Ｆの記号は、レイアウト用データベースの中では、例えば、回転コードといった名称とし、Ｆの記号が向いている方向を特定の数値や記号に置き換えてデータベースに記憶する。
【００３７】
図３において、下位モジュール３２は、下位モジュール３１を図３の横方向を軸として垂直方向に反転して、下位モジュール３１とは異なる位置に配置したものである。下位モジュール３１近傍の上位階層には配線ＮｅｔＢが存在し、下位モジュール３２近傍の上位階層には配線ＮｅｔＡ及びＮｅｔＣが存在するものとする。
【００３８】
下位モジュールＡのレイアウト設計をする際には、図３（Ａ）に示すような下位モジュールＡの２つの配置箇所近傍の上位階層の配線ＮｅｔＡ，ＮｅｔＢ，ＮｅｔＣの全てを考慮したレイアウト設計を行なうことが望ましい。本実施例では、図３（Ａ）のように下位モジュールＡが複数個所で使用されているような場合において、下位モジュールの全ての配置箇所近傍の上位階層の配線に基づいて配線禁止領域を設定し、下位モジュールＡのレイアウト設計を行なう。
【００３９】
図３（Ａ）において下位モジュール３１と下位モジュール３２は垂直方向に反転して異なる位置に配置されているので、上位階層の配線情報を下位モジュールのレイアウト用データベースに落とし込む際には、上位階層の配線の座標情報を下位モジュールの座標系に変換する必要がある。すなわち、下位モジュールの配置原点と回転方向や反転の有無等を考慮した相対的な座標系に上位階層の配線の座標情報を変換して、上位階層の配線情報を下位モジュールのレイアウト用データベースに落とし込む。
【００４０】
図３（Ｂ）は、２つの下位モジュール（３１、３２）近傍を通る上位階層の各配線の情報を下位モジュールＡ単体（３０）のレイアウト用データベースに落とし込んだ場合のイメージ図を示したものである。図３（Ｂ）に示すように、下位モジュールＡの図示左下に配置原点があるとすると、上位階層のＮｅｔＢの配線情報は座標変換しないで下位モジュールＡの座標系に変換し、上位階層のＮｅｔＡ及びＮｅｔＣの配線情報については、座標情報を垂直方向に反転してから下位モジュールＡの座標系に変換する。
【００４１】
図３（Ｂ）では、下位モジュールＡ（３０）のレイアウト用データベースに落とし込まれた上位階層の配線情報（ＮｅｔＡ，ＮｅｔＢ，ＮｅｔＣ）を破線で表している。この落とし込まれた上位階層の配線情報を考慮して下位モジュールＡ（３０）のレイアウトを行なうためには、下位モジュールＡ（３０）のレイアウト設計時において、破線で表された上位階層の配線情報を動かすことのできない配線禁止領域として扱う。そして、下位モジュールＡ（３０）のレイアウト検証時においては、破線で表された上位階層の配線情報は、下位モジュールＡ（３０）のレイアウト用データベースの中に存在する配線であると擬似的に取り扱って、下位モジュールＡ（３０）のレイアウト検証を行なう。このようにすることで、上位階層の配線情報を考慮した下位モジュールＡのレイアウト設計及びレイアウト検証を行なうことが可能となる。下位モジュールＡのレイアウト設計及びレイアウト検証における、上位階層の配線情報の具体的な取り扱いについては後述する。
ところで、階層レイアウトを行なう場合、複数の下位モジュールを並べて配置するような場合があるが、その際、無駄なスペースを作らないように、下位モジュールどうしの間をほとんど間隔を空けずに隣接させて配置したい場合がある。そのような場合、隣り合う下位モジュール内部のモジュール境界枠付近の配線どうしが影響を及ぼしあう場合がある。
【００４２】
例えば、図４は、隣接する下位モジュール内の配線どうしが互いに影響を与える場合の例を示した図である。図４において、下位モジュール３５の図示右辺近傍には配線Ｎｅｔ１があり、下位モジュール３６の図示左辺近傍には配線Ｎｅｔ２があり、破線の円で囲った部分においてこれら各配線が互いに影響を及ぼし合う場合がある。この部分での影響としては、例えば互いにクロストークノイズを発生させたり、最低限確保しなければならない配線間隔であるスペーシング条件を満たさないといったスペーシングルール違反を起こすおそれなどがある。
【００４３】
図４と同様の例として、図５は、ＣＨＩＰ２０の中に、同じモジュールＡを下位モジュール３１〜３４として４個所に隣接配置した場合の例を示す。図５の例の場合、各下位モジュール３１〜３４内部の配線であるＮｅｔ１及びＮｅｔ２が、それぞれ隣接する下位モジュール内の配線に影響を及ぼし合う可能性がある。
【００４４】
このように、下位モジュールの上位階層の配線のみに着目して、下位モジュールのレイアウト時に配線禁止領域として設定するレイアウト方法（図３等）だと、隣接する下位モジュール内部の配線との影響を排除できないという問題がある。この点については、前述の第２の技術のように、下位モジュール内の境界近傍の配線情報を抽出し、抽出した配線情報を基に配線禁止領域を設定して上位階層のレイアウト設計を行なう手法においても同様の問題が存在する。前述の第２の技術においては、下位モジュールのレイアウト設計時に、その下位モジュール外部の状況を考慮したレイアウト上の制約は特にかからないためである。前述の第３の技術についても同様の問題が存在する。
【００４５】
従って、ある下位モジュールのレイアウトを行なう場合には、その下位モジュール近傍の上位階層の配線に加えて、その下位モジュールに隣接する下位モジュール内のモジュール境界近傍の配線をも考慮して、その下位モジュールのレイアウトを行なうことが望ましい。
【００４６】
このような要望を満たすための方法として、本実施例では、まず、上位モジュールに含まれる各下位モジュールについて、下位モジュール内部のモジュール境界近傍の配線情報を抽出する。そして、抽出した下位モジュール内部の境界近傍の配線情報を、暫定的に上位階層のレイアウト用データベースにマージする。抽出した下位モジュール内部の境界近傍の配線情報を、上位階層のレイアウト用データベースにマージする代わりに、暫定的に、データベース中に特定の中間データとして記憶するようにしてもよい。
【００４７】
図５の例では、各下位モジュール３１〜３４内の配線であるＮｅｔ１，Ｎｅｔ２のそれぞれの配線情報を、一旦、上位階層のレイアウト用データベースに持ち上げて、上位階層の配線情報とマージする。そして、各下位モジュール内の境界近傍の配線情報を含んだ上位階層の配線情報を用いて、レイアウト対象となる下位モジュールに影響を与える可能性のある上位階層の配線情報を抽出し、抽出した配線情報を基に下位モジュールのレイアウト用の配線禁止領域を設定する。このようにすることで、隣接する下位モジュール内部の境界付近の配線をも考慮して、下位モジュールのレイアウト設計を行なうことが可能となる。この具体例について、図５及び図６を用いて説明する。
【００４８】
最初、図５におけるＣＨＩＰ２０のレイアウト用データベースにおいて、下位モジュール３１〜３４の各インスタンス（Ａ１〜Ａ４）に対して、その下位モジュール内部の境界近傍の配線情報を抽出する。具体的には、下位モジュール３１内部のＮｅｔ１及びＮｅｔ２の配線情報、下位モジュール３２内部のＮｅｔ１及びＮｅｔ２の配線情報、下位モジュール３３内部のＮｅｔ１及びＮｅｔ２の配線情報、下位モジュール３４内部のＮｅｔ１及びＮｅｔ２の配線情報を抽出する。尚、この段階で抽出する配線情報としては、下位モジュール内の配線に加えて、コンタクト（ＶＩＡ）や下位モジュール内部にある特定のトランジスタにより構成されて所定の機能ブロックとして機能するセルの内部の配線禁止領域等も含まれるものとする（以下、「配線情報」といった場合において、同じ）。
【００４９】
次に、抽出した下位モジュール内の境界近傍の配線情報を、上位階層のＣＨＩＰ２０のレイアウト用データベースにマージする。その際、抽出した下位モジュール内の配線情報は、様々な方向に回転又は反転した各下位モジュールの座標系で表された位置情報を持つので、抽出した下位モジュール内の配線情報の座標を上位階層の座標系での位置座標に変換する。
【００５０】
各下位モジュール３１〜３４内部の境界近傍の配線情報を上位階層のレイアウト用データベースにマージした後、各下位モジュール３１〜３４のそれぞれについて、その下位モジュールの周辺あるいはその下位モジュール上の上位階層の配線情報を抽出する。この段階では、隣接する下位モジュール内部の境界近傍の配線情報も上位階層のレイアウト用データベースにマージされているため、隣接する下位モジュール内部の配線情報も合わせて上位階層の配線情報として抽出することが可能となる。
【００５１】
このようにして、下位モジュール内の境界近傍の配線情報をマージした上位階層のレイアウト用データベースを用いて、各々の下位モジュール近傍の上位階層の配線情報を抽出する処理を図６を用いて説明する。図６は、図５と同じように下位モジュールＡを４箇所に隣接配置された状態に加えて、上位モジュールであるＣＨＩＰ２０内の配線としてＮｅｔＣ及びＮｅｔＤの各配線も合わせて描いた図である。
【００５２】
まず、図６における、インスタンスがＡ３の下位モジュール３３近傍の上位階層の配線情報を抽出する場合を考える。図６における点線で囲まれた部分が下位モジュール３３のモジュール枠から見てスペーシングルールの影響を受ける範囲、あるいはクロストークノイズの影響を受ける範囲であるとする。すると、下位モジュール３３の外側の、点線で囲まれた領域に含まれる他のモジュール内の配線、コンタクト、配線禁止領域などが抽出対象となる。図６では、上位階層のレイアウト用データベースにマージされた、下位モジュール３１内のＮｅｔ１及び下位モジュール３４内のＮｅｔ２が抽出対象となる。下位モジュール３１、３２内のＮｅｔ２及び、下位モジュール３２、３４内のＮｅｔ１は、点線で囲まれた領域に含まれていないので、下位モジュール３３近傍の上位階層の配線としては抽出対象とはならない。
【００５３】
また、点線で囲まれた領域にある上位階層の配線や下位モジュール３３上の上層階層の配線も抽出対象となる。図６では、下位モジュール３３上を通過する配線であるＮｅｔＣ及びＮｅｔＤが抽出対象となる。尚、下位モジュール３３の上の上位階層の配線のうち、下位モジュール３３内の配線とのスペーシングルールの影響範囲、及び、クロストークノイズの影響範囲から外れる上位階層の配線については、抽出対象から除外することができる。
【００５４】
その他の下位モジュール３１，３２，３４についても同様に、各下位モジュールに着目して、各々の下位モジュール周辺あるいはその下位モジュール上の上位階層の配線情報及び隣接モジュール内の配線情報を抽出する。
【００５５】
抽出した各上位階層の配線情報に対して、固有化したネット名を設定する。その際、下位モジュールから抽出した配線情報については、抽出元の下位モジュールのモジュール名、インスタンス名、あるいはこれらに相当する情報を記憶しておく。このようにすることにより、抽出した各上位階層の配線情報を１つの下位モジュールのレイアウト用データベースに落としこむ際に、同一インスタンスのデータを重複して落とし込まないようにすることが可能となる。
ＣＨＩＰ２０内の全ての下位モジュール３１〜３４について、各下位モジュール近傍の配線情報の抽出が完了すると、次に、各インスタンス（Ａ１〜Ａ４）において抽出した上位階層の配線情報を１つの下位モジュールのレイアウト用データベースに落としこむ。ここでは、例えば、インスタンスがＡ３の下位モジュール３３のレイアウト用データベースに着目して、他のインスタンス（Ａ１，Ａ２，Ａ４）の下位モジュール３１、３２、３４の配置箇所近傍の上位階層の配線情報を下位モジュール３３のレイアウト用データベースに落としこむ場合を考える。
【００５６】
全ての下位モジュールに対して抽出した、各下位モジュール近傍の上位階層の配線情報には、下位モジュール３３内部の配線Ｎｅｔ１及びＮｅｔ２の情報も含まれるが、この情報を下位モジュール３３に落とし込む必要はないため、落とし込みの対象から外す。
【００５７】
また、下位モジュールのレイアウト検証で何らかのエラーが発生した場合等において、下位モジュール内の配線情報と、上位階層の配線情報として下位モジュールのレイアウト用データベースに落としこまれた情報とを人間が区別するには、上位階層の配線情報に対して人間が認識しやすいネット名を付している方が判別し易い。そのため、下位モジュールのレイアウト用データベースに落とし込まれた配線情報に関連付けられたモジュール名、インスタンス名等の情報を一時的に記憶しながら、上位階層の配線情報の落とし込みの制御を行なうことが望ましい。
【００５８】
落とし込みの対象となる配線、コンタクト、及び配線禁止領域等に対しては、上位階層での固有化されたネット名を用いる。下位モジュールのレイアウト用データベースに落とし込まれた上位階層の配線情報を、単に下位モジュールのレイアウト時の配線禁止領域として扱う場合、上位階層における配線の優先順位、例えば、電源、クロックを優先的に配線するといった情報までは含まないことになる。配線の優先度によっては、レイアウト検証でのエラー発生時等において、下位モジュール内の配線で対処するよりも、上位階層の配線で対処したい場合もあり得る。そのような場合、上位階層から落とし込まれた配線情報に上位階層での固有化されたネット名を付してあれば、レイアウト実施者による判断が容易となる。
【００５９】
落とし込む配線やコンタクトの情報にはさらに、下位モジュールのレイアウト用の一般のデータと区別可能な属性を設定する。複数個所に配置された各下位モジュール近傍の上位階層の配線情報を１つの下位モジュールのレイアウト用データベースに落とし込む場合、互いに異なる場所での配線情報を重ね合わせて１つの下位モジュールのレイアウト用データベースに落とし込む。そのため、下位モジュールのレイアウト用データベースに落とし込まれた配線情報どうしで重なりが生じたり、擬似的なスペーシングエラーが生じる場合がある。従って、下位モジュールのレイアウト用データベースに落とし込まれた配線情報どうしをレイアウト検証の対象から除外する必要がある。この落とし込まれた配線情報どうしをレイアウト検証の対象から除外する際に、前述の、落とし込まれた配線情報に設定された属性情報を用いる。
ところで、下位モジュールの取り扱いに関して、レイアウト済みの下位モジュール内部の配線層の変更を禁止するハードマクロとして下位モジュールを使用するだけでなく、レイアウト済みの下位モジュールを、下位モジュール内部の配線変更等を許容するソフトマクロとして使用する場合もある。下位モジュールをソフトマクロとして使用する場合、下位モジュール内部で使用している配線層と同じ配線層を用いて上位階層の配線を引く場合がある。このような場合、下位モジュールの配線レイアウトをする際に、上位階層にある配線を認識していないと、下位モジュール内の配線と上位階層の配線とのショート等が発生し得る。
【００６０】
また、下位モジュールの端子は、下位モジュールの外枠上に設けられる場合も多いが、図６中の丸印で示された下位モジュール３３の端子ＰｉｎＣのように、下位モジュールの内側に設けられる場合もある。例えば、クロック端子については、クロックが供給される各末端のＦＦ（Ｆｌｉｐ−Ｆｌｏｐ）でのクロック・スキューを合わせやすいように、下位モジュールの中心付近にクロック端子を設ける場合がある。また、その他の特定の信号端子についても下位モジュールの内側に設けられる場合がある。このような場合、下位モジュール近傍の上位階層の配線情報を配線禁止領域の情報として下位モジュールのレイアウト用データベースへ落とし込んで下位モジュールのレイアウト設計を行なう際、下位モジュールの端子に接続された上位配線の扱いで問題が生じる。具体的には、下位モジュールの端子に接続された上位階層の配線を配線禁止領域に設定して、下位モジュールのレイアウトを行なった場合、下位モジュール内部の配線をその端子に接続するための特殊な処理が必要となってくる。この問題点を図７を用いて説明する。
【００６１】
図７（Ａ）は、上位モジュール２３が、下位モジュール３５と下位モジュール３６とを有し、下位モジュール３５、３６の上位階層にＮｅｔＡが配線されている様子を示している。ここで、上位階層のＮｅｔＡは、図７（Ｂ）に示す下位モジュール３５の端子ＰｉｎＣに接続されているものとする。図７（Ｂ）は、上位階層のＮｅｔＡを、点線で示した配線禁止領域として下位モジュールのレイアウト用データベースに落とし込んだ様子を示したものである。図７（Ｂ）中の点線で示された配線禁止領域は、下位モジュール３５の端子ＰｉｎＣを介して、下位モジュール３５内部の配線Ｎｅｔ１に接続されている。図７（Ｂ）において、明示的に丸印で端子ＰｉｎＣを表しているが、実際には丸い配線やコンタクト等が存在する訳ではなく、最終的なレイアウトデータにおいては、下位階層のＮｅｔ１と上位階層のＮｅｔＡが単に接続されている状態となる。
【００６２】
図７（Ｂ）において、点線で示された配線禁止領域と、実線で示されたＮｅｔ１の配線とが同一の配線層にあるとすると、丸印で示した端子部分で、配線禁止領域と配線とが接触することになる。ここで、点線で示された配線禁止領域は、下位モジュール３５内部の配線と上位階層の配線ＮｅｔＡと間に一定の間隔を確保するために使用することを目的としたものである。従って、下位モジュール３５の端子ＰｉｎＣに配線禁止領域が接している場合には、通常のレイアウト処理では下位モジュール３５内部の配線であるＮｅｔ１を端子ＰｉｎＣに接続できないことになってしまう。
【００６３】
もちろん、一般に、下位モジュールのレイアウト処理において、配線禁止領域と接する端子ＰｉｎＣに、Ｎｅｔ１を強制的に接続することは可能である。そして、この配線禁止領域内の端子への配線接続をエラー扱いとせず、下位モジュール３５のレイアウト終了後、下位モジュール３５のレイアウトデータを上位モジュール２３のレイアウトデータに組み込んだ後に、この配線禁止領域内の端子への配線接続の妥当性を判断するといった特殊処理をするようにしてもよい。しかし、このようにして強制的に配線禁止領域内の端子へ配線接続した場合、その配線接続が間違っていた場合や、その配線接続がレイアウト上のデザインルールを満たさない場合には、下位モジュールのレイアウト段階では良否判断できない。言い換えれば、上位モジュール２３全体でのレイアウト検証時にはじめてデザインルールを満たしていないといった問題が判明する。そのため、このような特殊処理をした結果レイアウト上の問題が発生した場合、レイアウト修正から、修正結果の妥当性の確認までの処理時間が長くなり、作業効率が悪くなってしまう。
【００６４】
従って、レイアウト対象の下位モジュール３５の端子ＰｉｎＣに接続される上位階層のＮｅｔＡのような配線は、単純な配線禁止領域として扱うのではなく、下位モジュール３５のレイアウト検証時においては、下位モジュール３５内部の配線であると認識してレイアウト検証できることが望ましい。そのため、本発明の実施例においては、下位モジュールのレイアウト時には、上位階層の配線は配線禁止領域として扱いつつも、下位モジュールのレイアウト検証時には、上位階層の配線を下位モジュール内にある配線として取り扱うことで、上記問題を解消する。
具体的な処理方法としては、下位モジュールに落とし込まれた上位階層の配線情報の内、下位モジュールの端子に接続される配線情報については、その上位階層におけるネット名に、接続される下位モジュールの端子名を付加する。上位階層でのネット名に下位モジュールの端子名を付加することで、下位モジュールのレイアウト設計時に、落とし込まれた上位階層の配線が下位モジュールの端子と接続される配線であるか否かの判定を行なうことができる。例えば、端子ＰｉｎＣに接続される上位階層の配線ＮｅｔＡについては、“ネット名＋区切り文字＋端子名”となるように、ネット名“ＮｅｔＡ．ＰｉｎＣ”を付して、下位モジュールのレイアウト用データベースへ落とし込む。この例では区切り文字を“．”としている。このようなネット名とすることで、下位モジュールのレイアウト用データベースを用いたレイアウト設計において、区切り文字で区切られたネット名の最後の部分が端子名を含むか否かを判定することにより、端子と接続される上位階層の配線であるか否かを判定することが可能となる。
【００６５】
下位モジュールに落とし込まれる上位階層の配線の内、下位モジュールの端子に接続されない上位階層の配線については、例えば、上位階層におけるネット名をそのまま付して、下位モジュールのレイアウト用データベースに落とし込むようにすればよい。
前述の通り、下位モジュールのレイアウト用データベースに落とし込まれた上位階層の配線情報は、上位階層の配線を考慮したレイアウトを行なうためのものである。従って、下位モジュールのレイアウト設計時には、落とし込まれた上位階層の配線情報は、配線禁止情報として取り扱われる。そして、レイアウト検証時には、下位モジュールのレイアウト用データベースに落とし込まれた上位階層の配線とレイアウト対象の下位モジュール内部の配線との間で、所定のレイアウト設計ルールを満たすか否かについての検証を行なう。すなわち、下位モジュールのレイアウト用データベースに落とし込まれた上位階層の配線とレイアウト対象の下位モジュール内部の配線との間で、デザインルール等を満たしているか、ショートしている箇所がないか、あるいはクロストークノイズの問題は生じないか等についての検証がなされる。下位モジュールのレイアウト検証において、落とし込まれた上位階層の配線どうしのレイアウトチェックは行なわない。
【００６６】
下位モジュールのレイアウト用データベースに落とし込まれる上位階層の配線情報の取り扱いについて具体的に説明すると、端子ＰｉｎＣに接続される上位階層の配線情報は、下位モジュールのレイアウト時には、動かせない配線禁止領域として扱う。そして、レイアウト検証時には、ＰｉｎＣを介して下位モジュール内部のＮｅｔ１に接続された配線であると上位階層の配線情報を認識させてレイアウト検証を行なう。レイアウト検証を行なう際、特にショートチェックにおいては、前述のように、落とし込まれた上位階層の配線のネット名に、下位モジュールの端子名を付加したネット名を利用して、当該端子との接触が許される配線か否かを判定して、端子上のショート検出を行なう。
【００６７】
下位モジュールのレイアウト用データベースに落とし込まれた上位階層の配線情報の内、下位モジュールの端子に接続されない上位階層の配線については、下位モジュールのレイアウト時には単なる配線禁止領域として扱い、レイアウト検証時には、下位モジュール内に存在する配線であると認識させてレイアウト検証を行なう。
このように下位モジュールの端子に接続される上位階層の配線情報を処理することにより、従来、下位モジュールのレイアウト検証時に検出できなかった、端子上での上位配線とのショート検出等が可能となる。また、下位モジュールのレイアウト検証の段階で、上位階層の配線をも含めた形でレイアウト検証することが可能となる。同一の下位モジュールが複数個所で使用されている場合には、複数個所における下位モジュール近傍の上位階層の配線状況を考慮して、下位モジュールのレイアウト設計及びレイアウト検証がなされる。さらに、前述の通り、レイアウト対象の下位モジュールに隣接する下位モジュール内部の配線も考慮してレイアウトを行なうことができるので、従来、上位階層でのレイアウト検証でしか発見できなかった下位モジュール内の配線どうしの問題も事前に発見し、対処することができる。
【００６８】
従って、下位モジュールが使用される複数個所における、上位階層の配線や隣接モジュール内の配線との間のクロストークノイズ等の影響についても、下位モジュールのレイアウト設計時における１回のチェックで検証でき、事前にエラー等の対処を行なうことが可能となる。そして、下位モジュールと上位モジュールを含めた総合的なレイアウト検証でのエラーの発見と対処を事前に行なうことができるので、全体的なレイアウト処理時間の短縮を図ることが可能となる。
実施例に係るレイアウト設計装置の構成、及び、レイアウト処理の詳細について、以下、図８〜１６を用いて説明する。
【００６９】
図８は、実施例に係るレイアウト設計装置の構成を示した図である。実施例に係るレイアウト処理装置は、ライブラリ読み込み部５０、デザインルール読み込み部５１、ネットリスト読み込み部５２、データベース５３、下位階層境界認識部５４、上位階層境界認識部５５、ネット固有化部５６、座標変換部５７、下位データ保存部５８、及び、制御部５９を有する。
【００７０】
図８のライブラリ読み込み部５０は、図１に示された記憶装置１６等に格納されたライブラリ情報７１から、レイアウト設計対象回路を構成するセルのライブラリを読み込み、各セルについての端子情報、配線情報、コンタクト情報、配線禁止領域の情報、駆動能力等の情報を読み込む。ここで、セルとは、特定のトランジスタにより構成され、ＡＮＤやＯＲ等の論理ゲートやＦＦ等の順序回路を成す機能ブロックを言うものとする。ライブラリ読み込み部５０は、レイアウト対象の回路が、セル以外にＲＡＭ（Random Access Memory）等の所定の機能を提供するハードマクロを有する場合には、それらハードマクロのライブラリ情報も合わせて読み込む。
【００７１】
図８のデザインルール読み込み部５１は、図１に示された記憶装置１６等に格納されたライブラリ情報７１から、配線パターンをレイアウトする上での規則であるデザインルールの読み込み等の処理を行なう。ここで、デザインルールの例としては、製造プロセスや配線幅に応じた最小配線間隔等を規定するスペーシングルールや、平行配線長ルール等が含まれる。
【００７２】
図８のネットリスト読み込み部５２は、図１に示された記憶装置１６等に格納された回路情報７０から、回路情報を所定の規則に従って表現したネットリストを読み込む。データベース５３は、レイアウト設計で必要となる図１図示の回路情報７０、ライブラリ情報７１、及び、レイアウト設計において生成される各種レイアウトデータを有するデータベースである。図８のデータベース５３に含まれるデータは、図１に示されたメモリ１２、記憶装置１６、ネットワーク上の記憶装置１７等に格納される。
【００７３】
図８の下位階層境界認識部５４は、下位モジュール内のモジュール境界近傍に存在する配線を検出して認識する。上位階層境界認識部５５は、下位モジュールのモジュール境界近傍に存在する上位階層の配線を検出して認識する。ネット固有化部５６は、下位階層境界認識部５４や上位階層境界認識部５５で検出された配線に対して、固有化されたネット名の情報を生成する。
【００７４】
図８の座標変換部５７は、下位階層にある配線情報等を上位階層の情報と合わせて処理する場合、あるいは、上位階層にある配線情報等を下位階層の情報と合わせて処理する場合に、各配線情報等の座標系を合わせる処理を行なう。下位データ保存部５８は、下位階層境界認識部５４で検出され、ネット固有化部５６で上位階層の座標系に変換された下位モジュールの境界近傍の下位モジュール内の配線情報等を、レイアウト処理における中間データとしてデータベース５３に保存する。制御部５９は、レイアウト設計装置を構成する各部（５０〜５８）の動作を制御して、半導体集積回路のレイアウト処理を実行する。
図９は、実施例に係るレイアウト処理の中で、下位モジュールの配線禁止領域の設定を行なう処理以降のレイアウト処理（図２におけるＳ１０４〜Ｓ１０６）のフローの概略図を示した図である。
【００７５】
まず、Ｓ１２０のモジュール読み込み処理により、レイアウト対象となる上位モジュールのレイアウト用データベースを記憶装置１６等に格納されたデータベース５３から読み込み、上位モジュールの配線情報、コンタクト情報、セルやモジュールの配置情報等の読み込みを行なう。また、合わせて、Ｓ１２０のモジュール読み込み処理では、上位モジュールに含まれる各下位モジュールに含まれるセルの配置情報等の、レイアウト設計に必要な情報の読み込みも行なう。
【００７６】
次に、上位モジュール及び各下位モジュールのネットリストの読み込み（Ｓ１２１）、セルライブラリの読み込み（Ｓ１２２）、及び、デザインルールの読み込み（Ｓ１２３）を行なう。Ｓ１２１〜Ｓ１２３の各処理は、それぞれ図８におけるライブラリ読み込み部５０、デザインルール読み込み部５１、及びネットリスト読み込み部５２により行なわれる。
【００７７】
図９のＳ１２０〜Ｓ１２３でレイアウト設計に必要な情報を読み込んだ後、下位モジュール内の境界近傍の配線情報の抽出を行う（Ｓ１２４）。そして、Ｓ１２４で抽出した下位モジュール内の境界近傍の配線情報と、上位階層の配線情報とを合わせて、下位モジュールのレイアウト設計用の制約情報として、下位モジュールのレイアウト用データベースへの落とし込み処理を行なう（Ｓ１２５）。その際、同一下位モジュールが複数個所で使用されている場合には、各下位モジュールが配置された複数個所における上位階層の配線情報等をマージして、下位モジュールのレイアウト設計用の配線禁止領域等の制約情報が生成される。Ｓ１２４及びＳ１２５の各処理ブロックの詳細については、図１０及び図１１を用いて後述する。
【００７８】
下位モジュールへのレイアウト制約情報の落とし込み（Ｓ１２５）がなされた後は、Ｓ１２６とＳ１２８で囲まれたループ１の処理ループにより、全ての下位モジュールについて、下位モジュールのレイアウト詳細設計（Ｓ１２７）が行なわれる。下位モジュールのレイアウト詳細設計の処理ブロックＳ１２７の詳細については、図１２を用いて後述する。
【００７９】
全ての下位モジュールのレイアウト詳細設計が完了すると、各下位モジュール内のモジュール境界近傍の配線情報を再度抽出し（Ｓ１２９）、ここで抽出した配線情報を考慮して、上位モジュールのレイアウト設計（Ｓ１３０）を行なう。その後、上位モジュール検証（Ｓ１３１）として、上位モジュールのレイアウト検証やタイミング検証を行う。Ｓ１３１の上位モジュール検証において、何らかのエラーが発生した場合には、エラー内容に応じて、適切な修正処理を行ない、エラーが無くなるまで上位モジュール検証（Ｓ１３１）と修正を繰り返す。そして、各検証においてエラーが無くなれば、図９における一連の処理は終了する。
図１０は、図９におけるＳ１２４の下位モジュール境界データ抽出処理の詳細を説明する図である。図１０の各処理（Ｓ１４０〜１４８）では、下位モジュール内部のモジュール境界近傍の配線情報の抽出等を行なう。以下、各処理の内容について具体的に説明する。
【００８０】
まず、Ｓ１４０とＳ１４８で囲まれた処理ループ（ループ１）では、全ての下位モジュールについて、Ｓ１４１〜Ｓ１４７の処理を順に繰り返す。
【００８１】
本実施例では、下位モジュール内のモジュール境界近傍の配線情報を抽出する際に、下位モジュールの外形枠から所定の間隔だけ内側に抽出枠（以下、「下位抽出枠」という）を設定し、下位抽出枠とモジュール外形枠との間の領域内にある配線情報を抽出する。ここでいう配線情報としては、下位抽出枠とモジュール外形枠との間の領域内にある配線、コンタクト、セルの端子、セル内部の配線禁止領域等の物理情報と、配線等のネット名を言うものとする（以下、同じ）。
【００８２】
下位モジュール内の境界近傍の配線を抽出する理由としては、着目する下位モジュール近傍の上位階層の配線、あるいは、着目する下位モジュールに隣接する他の下位モジュール内との配線との間で、デザインルール違反等を起こし得る配線を予め抽出するためである。換言すれば、レイアウト設計時にデザインルール違反等を起こし得る配線を予め抽出して、そのような配線を考慮しながら、レイアウト対象の下位モジュールあるいは上位モジュールのレイアウト設計を行なおうとするものである。
【００８３】
Ｓ１４１では、下位モジュールの配線層毎に、下位モジュールの外形枠から所定の間隔だけ内側の下位抽出枠を設定する。ここで、下位モジュールの外形枠と下位抽出枠との間隔として、下位モジュール内の各配線層毎に存在する種々の配線幅を有する配線の配線幅に応じたスペーシング条件の内、最大のスペーシング条件である最大スペーシング値を用いることができる。この下位モジュール内部の下位抽出枠を求める際の最大スペーシング値を、便宜上、下位階層最大スペーシングと呼ぶこととする。この最大スペーシング値の算出は、図１０におけるＳ１４１で行なってもよいし、これよりも前の処理である図９におけるデザインルール読み込み（Ｓ１２３）等の段階で行なってもよい。
【００８４】
Ｓ１４１での下位抽出枠の設定について、図１３を用いて説明する。図１３では、下位モジュール３０の外形枠から下位階層最大スペーシングの間隔だけ内側に、下位抽出枠３０−０１が点線で描かれている。この下位抽出枠３０−０１と下位モジュール３０の外形枠（下位モジュール３０を囲む実線で描かれた枠）とで挟まれた領域が、本実施例で着目する下位モジュール３０内部の境界近傍の領域である。
【００８５】
ここで、図１３に示すように、下位モジュール内部に２つの配線（Ｎｅｔ１、Ｎｅｔ２）があるとすると、Ｎｅｔ１は、下位抽出枠と下位モジュール３０の外形枠で挟まれた領域に含まれている。従って、Ｎｅｔ１は、下位モジュール３０内の境界近傍の配線として抽出する対象となる配線である。Ｎｅｔ２は、下位抽出枠３０−０１よりもさらに内側にあるので、下位モジュール３０内の境界近傍の配線として抽出する対象とはならない。
【００８６】
尚、図１３では、下位階層最大スペーシングの値を用いて、下位抽出枠の設定を行なったが、所定の長さの平行配線によるクロストークの影響が及ぶ配線間距離等を用いて下位抽出枠の設定を行なうようにしてもよい。その場合、下位階層最大スペーシングの値に代えて、クロストークの影響が及ぶ配線間距離と下位階層最大スペーシングとを比較して大きい方の値の分だけ、下位モジュールの外形枠から内側に下位抽出枠を設定するといったようにすることができる。
図１０のＳ１４１で下位抽出枠の設定処理が完了すると、下位モジュール内の全ての配線層について、下位抽出枠と下位モジュールの外形枠で挟まれた領域に含まれる配線情報の抽出を行なう。具体的には、図１０のＳ１４２とＳ１４７とで挟まれた処理ループ（ループ２）において、下位モジュールの配線層毎に、下位モジュール内の全ての配線情報について、下位抽出枠と下位モジュールの外形枠で挟まれた領域に含まれるか否かを判定し、この領域に含まれる配線情報の抽出を行なう。
【００８７】
図１０のＳ１４３の条件判定ブロックでは、下位モジュール内の各配線データについて、下位抽出枠と下位モジュールの外形枠で挟まれた領域に含まれるか否かを判定する。配線データがこの領域に含まれる場合には（Ｓ１４３  Ｙｅｓ）これを抽出された配線情報であるとしてＳ１４４に進む。一方、配線データがこの領域に含まれない場合には（Ｓ１４３  Ｎｏ）Ｓ１４７、Ｓ１４２へと進んで、次の配線データについて条件判定する（Ｓ１４３）。この処理は、図８における下位階層境界認識部５４により行なわれる。
【００８８】
図１０のＳ１４３で抽出された配線情報は、一般に下位モジュール内部の座標系で表されるので、後の処理で上位階層の配線データと一緒に処理できるようにするために、上位階層の座標系への座標変換を行なう（Ｓ１４４）。
【００８９】
また、図１４（Ａ）で示されるように異なる複数の下位モジュール内で同一ネット名が使用されていたり（図１４（Ａ）３１、３２）、図１４（Ｂ）で示されるように同じ下位モジュールが複数箇所で使用されている場合がある（図１４（Ｂ）３１、３２）。このように、下位モジュールが複数個所で使用されている場合や他のモジュールで同一ネット名を使用している場合には、抽出した配線情報を一意に特定できるように、抽出した配線情報に係るネット名を固有化する（Ｓ１４５）。この固有化の方法としては、例えば、下位モジュール内のネット名に上位階層における当該下位モジュールが有するインスタンス名を付加することにより、抽出した配線情報を固有化できる。このようなネット名の固有化処理は、図８におけるネット固有化部５６によって行なわれる。
【００９０】
抽出された配線情報に対して上位座標系への変換処理（Ｓ１４４）及びネット名の固有化処理（Ｓ１４５）がなされた後、この抽出した下位データに関する情報を後の処理で使用できるようにするために、抽出した下位データを、一旦、図８におけるデータベース５３に保存する。下位データを保存する処理は、図８における下位データ保存部５８により行なわれる。
全ての下位モジュールについて、その下位モジュール内のモジュール境界近傍の配線情報の抽出処理（図１０のＳ１４０〜Ｓ１４８）が終わると、下位モジュールの種類毎に、その下位モジュールの周辺あるいは下位モジュール上の上位階層の配線情報を抽出する。同じ種類の下位モジュールが複数個所で使用されている場合には、全ての箇所における、下位モジュール近傍の上位階層の配線情報を抽出する。その際、図１０のＳ１４６で保存された下位モジュール内の抽出配線情報についても、上位階層に存在する配線情報であるものとして取り扱う。そのようにすることで、着目する下位モジュールに他の下位モジュールが隣接している場合等においても、隣接する下位モジュール内部のモジュール境界近傍の配線情報の抽出が可能となる。
【００９１】
そして、抽出した上位階層の配線情報を、下位モジュールのレイアウト制約情報として下位モジュールのレイアウト用データベースに落とし込む処理を行なう。このように着目する下位モジュールの全ての配置箇所における周辺の配線情報を下位モジュールのレイアウト用データベースに落とし込むことにより、複数個所における下位モジュールの周辺の配線状況を考慮して、下位モジュールのレイアウトを行なうことが可能となる。この下位モジュールへのデータの落とし込み処理について、図１１を用いて説明する。尚、図１１の説明においては、図１０のＳ１４６で保存された下位モジュール内の抽出された配線情報は上位階層の配線情報に含まれているものとして説明する。
図１１は、下位モジュールへの上位階層の配線データの落とし込みを行なう処理の内容を示した図である。図１１の処理では、まず、Ｓ１５０とＳ１６２の処理ループ（ループ１）で、上位階層に配置されている下位モジュールの種類毎に、順次、下位モジュールを選択する。そして、Ｓ１５１とＳ１６１の処理ループ（ループ２）で、Ｓ１５０で選択された下位モジュールが用いられた全ての箇所のインスタンス毎に、順次、特定のインスタンスに着目する。Ｓ１５１で着目したインスタンス毎に、その下位モジュールの外側の周辺領域を画定するための所定の抽出枠の算出を行なう（Ｓ１５２）。
【００９２】
Ｓ１５２における上位抽出枠の算出では、着目する下位モジュールの外形枠から所定の間隔だけ外側に抽出枠（以下「上位抽出枠」）を設定する。この下位モジュールの外形枠と上位抽出枠との間隔としては、上位階層の各配線層毎に存在する種々の配線幅を有する配線の配線幅に応じたスペーシング条件の内、最大のスペーシング条件である最大スペーシング値を用いることができる。上位抽出枠を求める際の上位階層での最大スペーシング値を、便宜上、上位階層最大スペーシングと呼ぶこととする。この上位階層最大スペーシングに係る最大スペーシング値の算出についても、図１１のＳ１５２で行なってもよいし、これよりも前の処理である図９におけるデザインルール読み込み（Ｓ１２３）等の段階で行なってもよい。
【００９３】
図１１のＳ１５２での上位抽出枠の設定について、図１５を用いて説明する。図１５（Ａ）では、下位モジュール３０の外形枠から上位階層最大スペーシングの間隔だけ外側に、上位抽出枠３０−０２が点線で描かれている。この上位抽出枠３０−０２で囲まれた、下位モジュール３０を含む領域の中に含まれる上位階層の配線情報が、下位モジュール３０近傍の上位階層の配線情報として抽出する対象となる配線である。
【００９４】
ここで、図１５（Ａ）に示すように、上位モジュール２５には、４つの配線（ＮｅｔＡ、ＮｅｔＢ、ＮｅｔＣ、ＮｅｔＤ）があるとすると、ＮｅｔＢとＮｅｔＣが、上位抽出枠３０−０２で囲まれた領域に含まれる、あるいは通過する配線であることが分かる。従って、図１５（Ａ）では、ＮｅｔＢとＮｅｔＣが、下位モジュール３０近傍の上位階層の配線情報として抽出する対象となる配線である。図１５（Ａ）において、ＮｅｔＡ及びＮｅｔＤは、上位抽出枠３０−０２の外側しか通過しないので、下位モジュール３０近傍の上位階層の配線情報として抽出する対象とはならない。
【００９５】
尚、下位モジュール３０近傍の上位階層の配線情報の抽出を行なう際、抽出した上位階層の配線情報が、着目している下位モジュール内部から抽出された情報であり、かつ着目しているインスタンスの下位モジュールに関する配線情報である場合には、抽出対象から除外する。
【００９６】
次に図１１に戻って、各下位モジュール近傍の上位階層の配線情報の抽出を行なう処理、及び、それ以降の処理について説明する。図１１のＳ１５２における上位抽出枠の算出処理が終わると、Ｓ１５３とＳ１６０の処理ループ（ループ３）で、上位階層の全配線情報のデータ、具体的には、上位階層の配線情報及び図１０のＳ１４６で保存された下位モジュール内の抽出された配線情報について、Ｓ１５２で設定した上位抽出枠内に含まれるか否かを判定する（Ｓ１５４）。Ｓ１５３で選択された上位階層のデータが上位抽出枠内に含まれない場合には（Ｓ１５４  Ｎｏ）、Ｓ１６０を経由して、再度Ｓ１５３に戻り、次の上位階層のデータについて上位抽出枠内に含まれるか否かを判定する（Ｓ１５４）。Ｓ１５３で選択された上位階層のデータが上位抽出枠内に含まれる場合には（Ｓ１５４  Ｙｅｓ）、Ｓ１５５の処理に進む。図１１に関するこれらの処理は、図８における上位階層境界認識部５５により行なわれる。
【００９７】
Ｓ１５５では、Ｓ１５３で選択された上位階層のデータが、Ｓ１５１で着目しているインスタンスの下位モジュール内部から抽出されたデータであるか否かを判定する。すなわち、Ｓ１５５では、Ｓ１５３で選択された上位階層のデータが、Ｓ１５１で着目しているインスタンスの下位モジュールから抽出されたデータであるか否かを判定する。Ｓ１５３で選択された上位階層のデータが、同じインスタンスのモジュールから抽出されたデータである場合には（Ｓ１５５  Ｙｅｓ）、何もしないで、Ｓ１６０を経由して、再度Ｓ１５３に戻り、次の上位階層のデータについて処理する。Ｓ１５３で選択された上位階層のデータが、同じインスタンスのモジュールから抽出されたデータと異なる場合には（Ｓ１５５  Ｎｏ）、Ｓ１５６の処理に進む。
【００９８】
ところで、Ｓ１５３で選択された上位階層のデータは、上位階層での座標系における座標の情報を有しており、そのままでは、下位モジュールで使用することができない。そのため、Ｓ１５６では、Ｓ１５３で選択された上位階層のデータに対して、Ｓ１５０で選択された下位モジュールについての下位階層の座標系に変換する処理を行なう。すなわち、Ｓ１５３で選択された上位階層のデータの座標情報を、上位階層での配置座標及び回転コードを参照して、Ｓ１５０で選択された下位モジュールの座標系に変換する。このようなＳ１５６に関する処理は、図８における座標変換部５７により行なわれる。
【００９９】
次に、図１１のＳ１５７において、Ｓ１５６で座標変換された上位階層のデータが、Ｓ１５１で着目するインスタンスに係る下位モジュールの端子に接続される配線であるか否かを判定する。ここで、Ｓ１５７での判定対象となっている上位階層のデータが、下位モジュールの端子に接続される配線である場合には（Ｓ１５７  Ｙｅｓ）、Ｓ１５８において、その配線のネット名に下位モジュールの端子名を付加する処理を行なう。これは、後に実施される下位モジュールのレイアウト検証等において、端子に接続された配線であると認識させるために行なうものである。
【０１００】
このＳ１５８での処理内容について、図１５を用いて説明する。図１５（Ａ）の例では、前述の通り、ＮｅｔＢとＮｅｔＣとが下位モジュールへの落とし込みの対象となる配線となる。図１５（Ｂ）は、図１５（Ａ）におけるＮｅｔＢ及びＮｅｔＣの配線情報を下位モジュールに落とし込んだ様子を示した図である。図１５（Ｂ）において、下位モジュールに落とし込まれた上位階層の配線（ＮｅｔＢ、ＮｅｔＣ）は破線で示されている。
【０１０１】
ここで、図１５（Ａ）、図１５（Ｂ）において、ＮｅｔＣは下位モジュールの端子ＰｉｎＣに接続されている。このような場合、図１５（Ｂ）に示すように、下位モジュールに落とし込まれたＮｅｔＣの配線には、ＮｅｔＣの配線名に下位モジュールの端子名ＰｉｎＣを付加して、“ＮｅｔＣ．ＰｉｎＣ”という配線名を付ける（図１１のＳ１５８）。このような配線名にすることにより、下位モジュールのレイアウト設計において、ネット名の最後の部分が端子名を含むか否かを判定することにより、上位階層から落とし込まれた配線情報が端子と接続される上位階層の配線であるか否かを判定することが可能となる。
【０１０２】
尚、本実施例においては、下位モジュールの端子に接続される上位階層の配線情報を下位モジュールに落とし込む際に、ネット名に端子名を付加する実施例としているが、他の手段により、下位モジュールの端子に接続される上位階層の配線であるか否かを判別してもよい。例えば、下位モジュールの端子に接続される上位階層の配線のネット名の一覧データを別途作成し、後続の下位モジュールのレイアウト処理において、その一覧データを参照して、ネット名の読み替えを行なうといった方法を採ることも可能である。
図１１のＳ１５８において、下位モジュールの端子に接続される上位階層の配線情報については（Ｓ１５７  Ｙｅｓ）、その配線のネット名に下位モジュールの端子名を付加して、下位モジュールのレイアウト用データベースに情報を追加する（Ｓ１５９）。下位モジュールの端子に接続されていない上位階層の配線情報については（Ｓ１５７  Ｎｏ）、Ｓ１５８を経由せずに、そのままＳ１５９にて、下位モジュールのレイアウト用データベースに情報を追加する。
【０１０３】
図１１のＳ１５９では、Ｓ１５４〜Ｓ１５８で抽出された、下位モジュール近傍の上位階層の配線情報を下位モジュールのレイアウト用データベースに落とし込む、すなわち、追加する処理を行なう。その際、単なる配線禁止情報として上位階層の配線情報を落とし込むのではなく、上位階層から落とし込まれた配線情報であることが分かるように、下位モジュール内部の配線情報と区別可能な属性情報を下位モジュール近傍の上位階層の配線情報に設定する。
【０１０４】
上位階層の配線情報であることを示す属性情報の例を、図１５（Ｃ）に示す。図１５（Ｃ）は、図１５（Ａ）、（Ｂ）に示す下位モジュールのレイアウト用データベースに記憶する配線情報の例を示したものである。図１５（Ｃ）に示すレイアウト用データベースに記憶した配線情報のデータは、通し番号（Ｎｏ．）、ネット名、インスタンス名、属性情報、物理情報等の情報を有する。図１５（Ｃ）において、ネット名が“ＮｅｔＢ”、“ＮｅｔＣ．ＰｉｎＣ”の配線情報は、図１５（Ａ）、（Ｂ）に示した配線情報と同じものであり、ネット名が“Ｎｅｔ１”となっている配線情報は、下位モジュール３０内の配線情報であるものとする。これら以外の配線情報については、省略する。また、図１５（Ｃ）において、各配線情報に対する配線幅や位置情報といった物理情報もここでは省略する。
【０１０５】
図１５（Ｃ）に示すように、ネット名が“ＮｅｔＢ”や“ＮｅｔＣ．ＰｉｎＣ”の上位階層の配線情報の属性情報の欄には“ＵＬ”といった固有の情報を付加する等して、属性情報を設定することができる。この上位階層の配線情報であることを示す属性情報は、他の形式によって設定、保存するようにしてもよい。
【０１０６】
下位モジュールのレイアウト時には、配線等に前記属性情報が設定されているか否かを確認し、上位階層の配線情報であることを示す属性情報が設定されている場合には、その配線情報を配線禁止領域として取り扱う。そして、下位モジュールのレイアウト検証時においては、前記属性情報が付加された配線どうしの検証は行なわないようにする。
【０１０７】
例えば、図６のように、下位モジュールが複数個所で使用されている場合には、図１１のＳ１５１のループ２において、同じ下位モジュールの全てのインスタンスについて、順次、その下位モジュール近傍の上位階層の配線情報の抽出を行なっていく。そして、Ｓ１５３〜Ｓ１５９の各処理を経て、全ての箇所における下位モジュール近傍の上位階層の配線情報を１つの下位モジュールのレイアウト用データベースに落とし込んでいく。このように複数個所における下位モジュール近傍の上位階層の配線情報を下位モジュールのレイアウト用データベースに落とし込むことにより、複数個所での下位モジュール近傍の配線状況を考慮した下位モジュールのレイアウトを行なうことが可能となる。
全ての下位モジュールに対して、図１１に示された下位モジュールへのデータ落とし込み処理、すなわち、図９におけるＳ１２５の処理が行なわれた後は、Ｓ１２５で落とし込まれた上位階層の配線情報を考慮して、下位モジュールのレイアウト詳細設計を行なう。図９のフローにおいては、Ｓ１２６とＳ１２８で囲まれたループ１の処理により、全ての下位モジュールについて、Ｓ１２７による下位モジュールのレイアウト詳細設計が行なわれる。
【０１０８】
Ｓ１２７の下位モジュールのレイアウト処理では、下位モジュール近傍の上位階層の配線情報も考慮して、下位モジュールの配置、配線等の実装設計を行ない、合わせて、下位モジュールのレイアウト検証やタイミング検証も行なう。このＳ１２７における下位モジュールのレイアウト詳細設計の処理は、上位のレイアウト設計とは独立に行なうことが可能であり、また、下位モジュールどうしの関係においても独立に並列処理で行なうことも可能である。Ｓ１２７の下位モジュールのレイアウト処理の内容を図１２を用いて説明する。
図１２は、実施例に係る下位モジュール処理の内容を示した図である。下位モジュール処理のフローにおいては、まずレイアウト対象となる下位モジュールのレイアウト用データベース及びネットリストの読み込みを行なう（Ｓ１７０、Ｓ１７１）。そして、下位モジュールのレイアウト処理で必要となるライブラリやデザインルールの読み込みを行なう（Ｓ１７２、Ｓ１７３）。尚、下位モジュールのレイアウト処理で必要となるこれらの各データが、これ以前の処理、例えば、図９におけるＳ１２０〜Ｓ１２３等で読み込まれている場合には、図１２におけるＳ１７０〜Ｓ１７３の処理は省略してもよい。
【０１０９】
図１２のＳ１７４の下位モジュールの実装設計では、図１１の各処理により下位モジュールのレイアウト用データベースに落とし込まれた、下位モジュール近傍の上位階層の配線情報を考慮して、下位モジュールの配置、配線等の実装設計を行なう。具体的には、下位モジュール近傍の上位階層の配線情報を動かせない配線禁止領域として取り扱って、下位モジュールの配置、配線等の実装設計を行なう。その際、下位モジュールの端子に接続される下位モジュール内部の配線については、上位階層の配線情報に基づいて設定された配線禁止領域がその端子と重なっている場合であっても、その端子への配線を引いておくようにする。この端子部分における下位モジュール内部の配線と、配線禁止領域との重なりにより発生し得るレイアウト検証上のエラーは、後に述べる方法により、エラーでないものとして取り扱うことが可能となるためである。
【０１１０】
Ｓ１７４において、下位モジュールの配置、配線等の実装設計が終わると、Ｓ１７５の下位モジュール検証において、レイアウト検証やタイミング検証を行なう。尚、下位モジュールの配置、配線等が、より早い段階、例えば、図２のＳ１０２等の段階で事前に行なわれているような場合には、図１２のＳ１７４において実装設計を省略して、レイアウト検証やタイミング検討のみを実施することも可能である。
【０１１１】
Ｓ１７５におけるレイアウト検証では、下位モジュール内の配線等がスペーシング条件等の所定のデザインルールを満足しているか、あるいは、クロストークノイズ等の影響を受けないかといった評価を行なう。
【０１１２】
上位階層から落とし込まれた配線情報についても、下位モジュール内の配線等との間でデザインルール等のチェックやクロストークノイズ評価等を行なう。その際、上位階層から落とし込まれた配線情報も、下位モジュール内に存在する配線として取り扱って、あるいは、配線禁止領域として取り扱ってレイアウト評価を行なう。
【０１１３】
下位モジュールの端子に接続される上位階層の配線情報については、その端子を介して、その端子につながった下位モジュール内部の配線と接続された配線であるとして取り扱い、レイアウト検証を行なう。この様子を図１６に示す。図１６において、Ｎｅｔ１は下位モジュール３０内部の配線であり、下位モジュール３０の端子ＰｉｎＣを介して、上位階層から落とし込まれた配線情報である“ＮｅｔＣ．ＰｉｎＣ”に接続されている。
【０１１４】
下位モジュール３０の配置、配線等のレイアウト処理を行なう際には、“ＮｅｔＣ．ＰｉｎＣ”は単に配線禁止領域として扱うが、レイアウト検証においては、“ＮｅｔＣ．ＰｉｎＣ”は、端子ＰｉｎＣを介して内部のＮｅｔ１に接続された一連の配線であるものとして取り扱う。すなわち、レイアウト検証時においては、下位モジュール３０内部のＮｅｔ１を、“ＮｅｔＣ．ＰｉｎＣ”と接続した新たな配線であるとして取り扱い、Ｎｅｔ１とは別の固有のネット名、例えば、“Ｎｅｔ１．ＮｅｔＣ．ＰｉｎＣ”や“ＮｅｔＸ”等のネット名を付してレイアウト検証を行なう。
【０１１５】
このようにすることで、端子部分の配線禁止領域（ＮｅｔＣ．ＰｉｎＣ）と内部配線Ｎｅｔ１との接点（端子ＰｉｎＣの部分）で発生するエラーを擬似エラーとして取り扱い、上位階層のレイアウト検証で再度検証するといった特殊な処理が不要となる。また、下位モジュールのレイアウト検証時に、上位階層の配線も考慮した形での詳細なクロストークノイズの影響の確認等を行なうことが可能となる。
【０１１６】
ところで、本実施例では、下位モジュールが複数個所で使用される場合には、複数個所における上位階層の配線情報が１つの下位モジュールのレイアウト用データベースに落とし込まれる。別々の箇所における上位階層の配線どうしの間では、当然レイアウトチェックする必要はないため、下位モジュールのレイアウト検証においては、データベースに含まれる配線の属性情報を確認し、上位階層の配線どうしの検証は行なわないようにする。上位階層の配線どうしのレイアウト検証については、上位階層でのレイアウト検証時に行なえばよい。
【０１１７】
Ｓ１７５におけるタイミング検証では、配置、配線を行なった下位モジュールについて、配線容量や配線抵抗等を抽出して、配線やセルの遅延値を算出し、算出した遅延値を用いて、回路が所定の周波数で正常に動作し得るかについてのタイミング検証を行なう。その際、下位モジュールのレイアウト用データベースに含まれる上位階層の配線データについては、容量抽出等の対象から除外してもよいし、逆に、上位階層の配線等も考慮して容量抽出等を行なって配線遅延等を算出してもよい。下位モジュールのタイミング検証において、上位階層の配線情報も考慮した遅延計算を行なえば、より高い精度で、下位モジュールのタイミング検証を行なうことが可能となる。
図９におけるＳ１２６〜Ｓ１２８での下位モジュールのレイアウト詳細設計が完了すると、今度は、各下位モジュールを含む上位モジュールのレイアウトを行なう。その際、レイアウト設計が完了した各下位モジュール内部の境界近傍の配線状況を考慮して上位モジュールのレイアウト設計を行なうことが望ましい。従って、図９におけるＳ１２９では、レイアウト設計完了後の各下位モジュール内部のモジュール境界の配線情報の抽出を行なう。この抽出処理の詳細については、図１０で説明した処理内容と同様の処理となるので、ここでは説明を省略する。
【０１１８】
図９のＳ１２９で抽出された各下位モジュール内部のモジュール境界近傍の配線情報は、上位モジュールのレイアウト設計時に配線禁止情報として設定して、上位モジュールのレイアウト設計を行なう（Ｓ１３０）。その際、上位モジュールの配線処理で使用する配線層を用いている下位モジュール内の配線情報、及び、上位モジュールの配線にクロストーク等の影響を与える可能性のある下位モジュール内の配線情報についても抽出することが望ましい。そうすることにより、上位モジュールのレイアウト時において、上位モジュールに含まれる下位モジュールの境界付近の配線状況を考慮して上位モジュールのレイアウト設計を行なうことが可能となる。
【０１１９】
図９のＳ１３０の上位モジュールの実装設計において、例えば、上位モジュールの配線設計が、これよりも早い段階、例えば、図２におけるＳ１０３等の段階で完了しているような場合には、上位モジュールの実装設計を省略して、上位モジュールの検証（Ｓ１３１）に進むこともできる。
【０１２０】
図９のＳ１３１での上位モジュールの検証では、各下位モジュールの実装結果を使用して、デザインルールのチェックやクロストークノイズ評価等の検証を行なう。また、これらのレイアウト検証と合わせて、上位モジュールでのタイミング検証も行なう。
以上に述べたように、本発明では、階層レイアウト設計において、下位モジュールの境界付近の上位階層や隣接下位モジュールの配線状況を考慮してレイアウト設計を行なうことができる。そのため、下位モジュールの周囲にリング状の配線禁止領域を設けるといった処理が不要となり、高密度な実装が可能となる。また、下位モジュールのレイアウト設計時に上位階層や隣接するモジュール内部の配線も考慮してレイアウトの実装設計をすることが可能となる。その際、下位モジュールが複数個所で使用されている場合には、複数個所における下位モジュール近傍の上位階層や隣接モジュール内の配線状況を考慮した下位モジュールのレイアウト設計が可能となる。
【０１２１】
さらに、本発明によれば、下位モジュールのレイアウト検証においても、上位階層の配線状況や隣接モジュール内の配線状況を考慮してレイアウト検証を行なうことが可能となる。その際、複数個所で使用される下位モジュール近傍の上位階層の配線状況を考慮したレイアウト検証を行なうことが可能となる。また、下位モジュールの端子に接続される上位階層の配線について、レイアウト検証時に下位モジュール内の配線に端子を介して接続された配線であると取り扱ってレイアウト検証を行なうことにより、端子に接続された上位階層の配線を考慮した好適なレイアウト検証が可能となる。従って、従来、最終的な上位モジュールでの全体検証で見つかっていたようなレイアウト設計上の問題について、早い段階で発見、対処することが可能となり、その結果として、レイアウト設計期間の短縮を図ることが可能となる。
【産業上の利用可能性】
【０１２２】
本発明は、複数階層を有する半導体集積回路のレイアウト設計に利用することができる。
【符号の説明】
【０１２３】
１０        コンピュータ
１１        ＣＰＵ
１２        メモリ
１３        入力装置インターフェース
１４        出力装置インターフェース
１５        ネットワークインターフェース
１６        記憶装置
１７        ネットワーク上の記憶装置
１８        バス
２０〜２７  上位モジュール
３０〜４１  下位モジュール
５０        ライブラリ読み込み部
５１        デザインルール読み込み部
５２        ネットリスト読み込み部
５３        データベース
５４        下位階層境界認識部
５５        上位階層境界認識部
５６        ネット固有化部
５７        座標変換部
５８        下位データ保存部
５９        制御部
７０〜７２  回路情報、ライブラリ、プログラム等の各情報
【図１】
0005533119.tif 000002
【図２】
0005533119.tif 000003
【図３】
0005533119.tif 000004
【図４】
0005533119.tif 000005
【図５】
0005533119.tif 000006
【図６】
0005533119.tif 000007
【図７】
0005533119.tif 000008
【図８】
0005533119.tif 000009
【図９】
0005533119.tif 000010
【図１０】
0005533119.tif 000011
【図１１】
0005533119.tif 000012
【図１２】
0005533119.tif 000013
【図１３】
0005533119.tif 000014
【図１４】
0005533119.tif 000015
【図１５】
0005533119.tif 000016
【図１６】
0005533119.tif 000017
【図１７】
0005533119.tif 000018
【図１８】
0005533119.tif 000019