(57)【特許請求の範囲】
【請求項１】
集積回路の実装設計前に実行される論理設計を支援する集積回路設計支援装置において、
前記集積回路の論理設計を実行する制御プログラム及び配線が形成される対象となる複数のモジュールのサイズと、このサイズに対応する配線のばらつきに基づくディレイ値との関係を規定した制御テーブルを有するメモリと、
前記集積回路の仕様を入力する入力装置と、
演算装置と、を備え、
当該演算装置は、前記制御プログラムと前記集積回路の仕様に基づいて、
前記集積回路の機能設計を行う第１の段階と、
前記機能設計結果を受けて論理合成を行う第２の段階と、
当該論理合成結果を受けて前記複数のモジュールをチップに配置するフロアプランを行う第３の段階と、
前記フロアプランによって得られたフロアプラン情報を利用して前記複数のモジュール間に形成される配線にタイミング違反がないか否かを判定する第４の段階と、
前記フロアプラン情報を利用して複数のモジュールに配線混雑が発生しているか否かを判定する第５の段階と、
前記タイミング違反がなく、かつ前記配線混雑が発生していない際に、前記フロアプラン情報を前記集積回路の実装設計のための情報として出力する第６の段階と、を順次実行する集積回路設計支援装置であって、
前記第４の段階は、前記複数のモジュール間の配線の配線長を算出する第７の段階と、前記集積回路に形成されるクロック供給線を製造するプロセスで生じるばらつきに基づくディレイを算出する第８の段階と、前記第７の段階で得られ配線長と前記第８の段階で得られたばらつきに基づいて、前記複数のモジュール間の配線に生じるディレイを算出する第９の段階と、第９の段階で算出されたディレイ値により前記タイミングの違反の判定を行う第１０の段階と、を有し、
前記第５の段階は、前記モジュール内で形成可能な配線の第１合計長を算出する第１１の段階と、前記モジュールが要求する配線の第２の合計長を算出する第１２の段階と、前記第２の合計長が前記第１の合計長以内にあるか否かを判定する第１３の段階と、この判定が肯定されたとき前記モジュールで配線の混雑が無いと判定し、前記判定が否定されたとき前記モジュールで配線の混雑があると判定する第１４の段階と、を有する、
ことを特徴とする集積回路の設計支援装置。
【請求項２】
前記第４の段階は、前記第７の段階で算出された複数のモジュール間の配線の配線長の算出結果に基づいて、前記配線に中継バッファを設定する第１５の段階を含み、当該中継バッファが適用後の前記配線に対して前記タイミング違反の判定を行う、請求項１記載の集積回路の設計支援装置。
【請求項３】
前記第１５の段階は、前記第７の段階で算出された配線長に基づいて、当該配線に適用される前記中継バッファの特性、及び当該中継バッファが前記配線に適用される頻度を前記メモリに格納された制御テーブルに基づいて決定する、請求項２記載の集積回路の設計支援装置。
【請求項４】
集積回路の実装設計前に実行される論理設計を支援する集積回路設計支援装置を用いた、集積回路設計支援方法において、
前記集積回路設計支援装置は、
前記集積回路の論理設計を実行する制御プログラム及び配線が形成される対象となる複数のモジュールのサイズと、このサイズに対応する配線のばらつきに基づくディレイ値との関係を規定した制御テーブルを有するメモリと、
前記集積回路の仕様を入力する入力装置と、
演算装置と、を備え、
前記演算装置が、前記制御プログラムと前記集積回路の仕様に基づいて、前記集積回路の機能設計を行う第１の段階と、
前記機能設計結果を受けて論理合成を行う第２の段階と、
当該論理合成結果を受けて複数のモジュールをチップに配置するフロアプランを行う第３の段階と、
前記フロアプランによって得られたフロアプラン情報を利用して複数のモジュール間に形成される配線にタイミング違反がないか否かを判定する第４の段階と、
前記フロアプラン情報を利用して複数のモジュールに配線混雑が発生しているか否かを判定する第５の段階と、
前記タイミング違反がなく、かつ前記配線混雑が発生していない際に、前記フロアプラン情報を前記集積回路の実装設計のための情報として出力する第６の段階と、を順次実行する集積回路設計支援方法であって、
前記第４の段階は、前記複数のモジュール間の配線の配線長を算出する第７の段階と、前記集積回路に形成されるクロック供給線を製造するプロセスで生じるばらつきに基づくディレイを算出する第８の段階と、前記第７の段階で得られ配線長と前記第８の段階で得られたばらつきに基づいて、前記複数のモジュール間の配線に生じるディレイを算出する第９の段階と、第９の段階で算出されたディレイ値により前記タイミングの違反の判定を行う第１０の段階と、を有し、
前記第５の段階は、前記モジュール内で形成可能な配線の第１合計長を算出する第１１の段階と、前記モジュールが要求する配線の第２の合計長を算出する第１２の段階と、前記第２の合計長が前記第１の合計長以内にあるか否かを判定する第１３の段階と、この判定が肯定されたとき前記モジュールで配線の混雑が無いと判定し、前記判定が否定されたとき前記モジュールで配線の混雑があると判定する第１４の段階と、を有する、
ことを特徴とする集積回路の設計支援方法。
【請求項５】
集積回路の実装設計前に実行される論理設計を支援する集積回路の設計支援プログラムであって、
前記プログラムは、
前記集積回路の仕様に基づいて、前記集積回路の機能設計を行う第１の段階と、
前記機能設計結果を受けて論理合成を行う第２の段階と、
当該論理合成結果を受けて複数のモジュールをチップに配置するフロアプランを行う第３の段階と、
前記フロアプランによって得られたフロアプラン情報を利用して複数のモジュール間に形成される配線にタイミング違反がないか否かを判定する第４の段階と、
前記フロアプラン情報を利用して複数のモジュールに配線混雑が発生しているか否かを判定する第５の段階と、
前記タイミング違反がなく、かつ前記配線混雑が発生していない際に、前記フロアプラン情報を前記集積回路の実装設計のための情報として出力する第６の段階と、を
コンピュータに実行させるためのプログラムであり、
前記第４の段階は、前記複数のモジュール間の配線の配線長を算出する第７の段階と、前記集積回路に形成されるクロック供給線を製造するプロセスで生じるばらつきに基づくディレイを算出する第８の段階と、前記第７の段階で得られ配線長と前記第８の段階で得られたばらつきに基づいて、前記複数のモジュール間の配線に生じるディレイを算出する第９の段階と、第９の段階で算出されたディレイ値により前記タイミングの違反の判定を行う第１０の段階と、を有し、
前記第５の段階は、前記モジュール内で形成可能な配線の第１合計長を算出する第１１の段階と、前記モジュールが要求する配線の第２の合計長を算出する第１２の段階と、前記第２の合計長が前記第１の合計長以内にあるか否かを判定する第１３の段階と、この判定が肯定されたとき前記モジュールで配線の混雑が無いと判定し、前記判定が否定されたとき前記モジュールで配線の混雑があると判定する第１４の段階と、を有する、
ことを特徴とする集積回路の設計支援プログラム。
【請求項６】
集積回路の実装設計前に実行される論理設計を支援する集積回路の設計支援プログラムが記録された記録媒体であって、
前記プログラムは、
前記集積回路の仕様に基づいて、前記集積回路の機能設計を行う第１の段階と、
前記機能設計結果を受けて論理合成を行う第２の段階と、
当該論理合成結果を受けて複数のモジュールをチップに配置するフロアプランを行う第３の段階と、
前記フロアプランによって得られたフロアプラン情報を利用して複数のモジュール間に形成される配線にタイミング違反がないか否かを判定する第４の段階と、
前記フロアプラン情報を利用して複数のモジュールに配線混雑が発生しているか否かを判定する第５の段階と、
前記タイミング違反がなく、かつ前記配線混雑が発生していない際に、前記フロアプラン情報を前記集積回路の実装設計のための情報として出力する第６の段階と、コンピュータに実行させるためのプログラムであり、
前記第４の段階は、前記複数のモジュール間の配線の配線長を算出する第７の段階と、前記集積回路に形成されるクロック供給線を製造するプロセスで生じるばらつきに基づくディレイを算出する第８の段階と、前記第７の段階で得られ配線長と前記第８の段階で得られたばらつきに基づいて、前記複数のモジュール間の配線に生じるディレイを算出する第９の段階と、第９の段階で算出されたディレイ値により前記タイミングの違反の判定を行う第１０の段階と、を有し、
前記第５の段階は、前記モジュール内で形成可能な配線の第１合計長を算出する第１１の段階と、前記モジュールが要求する配線の第２の合計長を算出する第１２の段階と、前記第２の合計長が前記第１の合計長以内にあるか否かを判定する第１３の段階と、この判定が肯定されたとき前記モジュールで配線の混雑が無いと判定し、前記判定が否定されたとき前記モジュールで配線の混雑があると判定する第１４の段階と、を有する、
ことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路の設計支援に係る装置等に関するものであり、特に、集積回路の実装設計段階前の論理設計段階においてパスディレイを高精度に見積ることができる集積回路の設計支援に係る装置等に関するものである。
【背景技術】
【０００２】
半導体回路における集積度の高まりもあって、半導体回路を高い周波数で動作させる必要が出ている。そのために、ゲート間での信号の伝送が高周波数に追従可能なタイミングに収まるように、配線に基づくディレイを極力少なくした回路を設計することが重要である。
【０００３】
一方、ゲート間のタイミングは論理設計後の実装設計段階で実際には明らかとなるために、論理設計段階で問題なかったものが、実装設計段階においてタイミングが目標タイミングに収束できないことが判明することがあった。この場合、フロアプランをやり直し、時には機能設計段階にまで立ち戻って回路設計をやり直す必要があった。
【０００４】
そこで、回路設計のやり直しを防ぐために、論理設計段階でタイミングを精度良く設定することが重要であり、そのための従来技術として、例えば、特開２００５−３５２９１６号公報と特開２００６−３２３６４３号公報がある。
【特許文献１】特開２００５−３５２９１６号公報
【特許文献２】特開２００６−３２３６４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ゲート間の配線の形態は論理設計後の実装設計段階で決定されるために、論理設計段階では所定の配線長を想定して配線に発生するディレイが見積もられる。一方、実装設計段階では、論理設計段階で想定された配線長とは関係無くゲート間の配線長が定まるため、論理設計段階でのタイミング解析においてディレイが制約条件に収束しても、実装設計段階で目標ディレイに実際には収束できないことがある。既述の従来技術は論理設計段階で最適な配線長を設定することについては開示も示唆もしていない。
【０００６】
また、論理設計段階におけるタイミング解析によってディレイが目標値に収束することが確認できても、ゲートをチップにレイアウトする実装段階で配線が集中して混雑することにより配線の迂回が発生して、結果的にタイミングを悪化させることもあった。
【０００７】
そこで、本発明は、集積回路の論理設計の段階で最適な配線長や配線混雑を見積もることができ、実装設計段階で判明した配線ディレイを原因とする論理設計や機能設計のやり直しを防ぎ、以って集積回路の設計に要する時間を短縮することができる集積回路の設計支援装置等を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明は前記目的を達成するために、集積回路の実装設計前の論理設計の段階で、モジュール間の配線長とモジュールにおける配線混雑を正確に見積もり、その上で集積回路の論理設計結果を集積回路の実装設計に反映させるものである。即ち、本発明は、集積回路の実装設計前に実行される論理設計を支援する集積回路設計支援装置において、前記集積回路の論理設計を実行する制御プログラム及び配線が形成される対象となる複数のモジュールのサイズと、このサイズに対応する配線のばらつきに基づくディレイ値との関係を規定した制御テーブルを有するメモリと、前記集積回路の仕様を入力する入力装置と、演算装置と、を備え、当該演算装置は、前記制御プログラムと前記集積回路の仕様に基づいて、前記集積回路の機能設計を行う第１の段階と、前記機能設計結果を受けて論理合成を行う第２の段階と、当該論理合成結果を受けて前記複数のモジュールをチップに配置するフロアプランを行う第３の段階と、前記フロアプランによって得られたフロアプラン情報を利用して前記複数のモジュール間に形成される配線にタイミング違反がないか否かを判定する第４の段階と、前記フロアプラン情報を利用して複数のモジュールに配線混雑が発生しているか否かを判定する第５の段階と、前記タイミング違反がなく、かつ前記配線混雑が発生していない際に、前記フロアプラン情報を前記集積回路の実装設計のための情報として出力する第６の段階と、を順次実行するものであって、前記第４の段階は、前記複数のモジュール間の配線の配線長を算出する第７の段階と、前記集積回路に形成されるクロック供給線を製造するプロセスで生じるばらつきに基づくディレイを算出する第８の段階と、前記第７の段階で得られ配線長と前記第８の段階で得られたばらつきに基づいて、前記複数のモジュール間の配線に生じるディレイを算出する第９の段階と、第９の段階で算出されたディレイ値により前記タイミングの違反の判定を行う第１０の段階と、を有し、前記第５の段階は、前記モジュール内で形成可能な配線の第１合計長を算出する第１１の段階と、前記モジュールが要求する配線の第２の合計長を算出する第１２の段階と、前記第２の合計長が前記第１の合計長以内にあるか否かを判定する第１３の段階と、この判定が肯定されたとき前記モジュールで配線の混雑が無いと判定し、前記判定が否定されたとき前記モジュールで配線の混雑があると判定する第１４の段階と、を有する、ことを特徴とする。
【発明の効果】
【０００９】
したがって、本発明によれば、実装設計段階で判明した配線ディレイを原因とする論理設計や機能設計のやり直しを防ぎ、以って集積回路の設計に要する時間を短縮することができる集積回路の設計支援装置等を提供することができる。
【発明を実施するための最良の形態】
【００１０】
次に本発明の実施形態を図面に基づいて説明する。図１は、集積回路の設計支援装置のハードウエアブロック図を示すものである。集積回路の論理設計を支援する制御プログラム（ＣＡＤ）が、通常ハードディスクとして存在する補助記憶装置１８に記憶されている。
【００１１】
入力装置１０の一つであるキーボードがコマンドをＣＰＵ１２に送信して、論理設計の実行をＣＰＵ１２に指示する。補助記憶装置１８のプログラムは主記憶装置１６にロードされて、ＣＰＵ１２はこのプログラムを実行する。出力装置１４は論理設計の結果をディスプレイやプリンタ等の出力装置によってユーザに提供する。主記憶装置１６は論理設計の過程でＣＰＵが利用する各種データを一次保存する。また、補助記憶装置は論理設計に必要な各種データを記憶している。
【００１２】
ＣＰＵ１２は制御プログラムを実行することによって、機能設計部、論理合成部、フロアプラン実行部、モジュール間配線ディレイ算出部、タイミング検証部、配線混雑検証部を実現する。各部の動作をフローチャートを利用しながら後に説明する。
【００１３】
図２は、集積回路の論理設計を説明するためのフローチャートである。仕様設計の段階で、半導体集積回路（ＬＳＩ）のアーキテクチャや目標性能などの仕様を決めて設計仕様書が作成される(２００)。
【００１４】
機能設計２０２の段階は、仕様書を元にして半導体集積回路を機能毎に複数のモジュールに分割し、各モジュールをゲートとゲート間の組み合せ回路からなるＲＴＬファイル２０４を作成する。ＲＴＬファイルとは、ハードウエア回路を論理式、状態遷移表などの動作で表した回路図ファイルである。なお、集積回路の論設計技術によれば、モジュールはブロックなどとも表現される。モジュールの下位にはサブモジュールが設定されることもあり、この場合モジュールはサブモジュールの組み合わせとして定義される。
【００１５】
論理合成２０６の段階はＲＴＬで記述した回路論理をゲートレベルで記述したネットリスト２０８に変換する設計工程である。ネットリストとは、ハードウエア回路をフィリップフロップ、ＮＡＮＤ、及びＮＯＲなどのゲート、などＩＣセルと、ＩＣセル同士の配線（ネット）とによって定義したファイルである。
【００１６】
次いで、機能設計２０２で得られた情報、ネットリスト２０８、回路設計で得られた、チップあるいはモジュール毎のゲート数、ゲートサイズ、ネット数、及びピン数２１０と、デバイス（ＩＣセル）の情報及びチップサイズ２１２に基づいてフロアプラン２１４が行われる。
【００１７】
フロアプランとは、モジュールの形状を方形とし、複数のモジュールが重ならないように、全体として小さな領域に収まるようにデザインする手法である。全体としての領域がチップのサイズとなる。図３は、フロアプラン実行部の処理動作を示すフローチャートである。２１０−２１２の各情報の入力（３００）に基づいて、フロアプラン実行部は、ステップ３０１以降のフロアプランを実行する。フロアプラン実行部は、ステップ３０１において、ステップ２０８−２１２の情報からモジュール間の結線情報を抽出する。
【００１８】
例えば、ネットリストが図４に示すようなモジュール間の接続を示すものであれば、フロアプラン実行部は図５に示す配線（結線）情報を抽出する。図４において、符号４００はネット、すなわち配線を示している。
【００１９】
続いて、フロアプラン実行部は、モジュール内のゲート数、ゲートサイズ、モジュールにおけるゲート実装率に基づいて、モジュールの配置領域、すなわちモジュールが配置されるべき領域のサイズを算出する(３０２)。
【００２０】
図６はモジュールＡ、モジュールＢ、及びモジュールＣについて、ゲート数、ゲートサイズ、及び配置領域を纏めた表である。図７に示すように、モジュールＢは図６からサイズが４００に設定されるのに対して、モジュールＡはゲート数がモジュールＢの２倍であるためにサイズが８００に設定される。
【００２１】
次いで、フロアプラン実行部はステップ３０１のモジュールの結線情報などに基づいて、チップの領域へのモジュールの配置を決定する(３０４)。このステップでは、次の順で該当するモジュールが他のモジュールに対して優先してチップに配置される。
【００２２】
例えば、第１に外部インターフェースに接続しているモジュールを優先し、第２に配置される位置が固定されるべきモジュール、例えば、モジュール間での結線関係において共通となるモジュールを優先し、第３に結線数が多いモジュールを優先する。
【００２３】
図８は、チップ領域へモジュールＡ−Ｄを配置した一例を示すものである。図８において、符号８００−８０４は、チップ領域８０１に対する外部インターフェースであり、モジュールＡは外部インターフェース８００に接続されるために、外部インターフェース８００側にあるチップ領域の境界に配置される。モジュールＢ，Ｃもそれぞれ同様である。モジュールＤはモジュールＡ−Ｃに対して共通モジュールとなるために、チップの中心に配置される。
【００２４】
次いで、フロアプラン実行部は、ステップ３０４の配置結果よりチップ領域に対するモジュールの座標を抽出する(３０６)。図９はチップ領域の座標系に対するモジュールの配置図である。フロアプラン実行部は、図１０に示すように、各モジュールの中心座標（Ｘ，Ｙ）、幅（Ｘ軸方向でのモジュールの距離）、高さ（Ｙ軸方向でのモジュールの距離）を決定する。
【００２５】
次いで、フロアプラン実行部は、図９に示すフロアプラン情報であるモジュール配置情報を出力装置１４に出力する（３０８）。モジュール配置情報は、モジュール配置座標(図１０)、モジュール配置領域（図７）、モジュール間結線情報（図５）及びデバイス情報からなる。
【００２６】
次に、モジュール配線間ディレイ算出部が図２に示すように、フロアプラン情報(２１６)に基づいてモジュール間配線ディレイの算出処理を行う（２１８）。モジュール間配線ディレイの算出処理の詳細は図１１に示されている。
【００２７】
モジュール間配線ディレイ算出部は、モジュール配置座標などの情報(２１６)を取り込み(１１００)、次いで、モジュール間の距離を算出する(１１０２)。図１２は、モジュール間距離の算出の一例を示すためのブロック図であり、チップ領域８０１にモジュールＡとモジュールＢとが配置されている様子を示している。モジュール間の距離は、例えばモジュールの中心座標を利用して算出される。（ｘ１，ｙ１）はモジュールＡの中心座標であり、（ｘ２，ｙ２）はモジュールＢの中心座標である。モジュールＡとモジュールＢとの距離は、｜ｘ２−ｘ１｜+｜ｙ２−ｙ１｜で算出される。
【００２８】
次に、モジュール配線間ディレイ算出部は、中継バッファの決定処理１１０４を実行する。中継バッファは、配線の途中に設けられて配線に沿って伝送される信号強度を増強してディレイを改善するためのものである。図１３は中継バッファの動作を説明するブロック図であり、（１）はモジュールＡのゲート１３００とモジュールＢのゲート１３０２との間にネット１３０４が形成されている様子を示している。
【００２９】
ネット１３０４のモジュールＡの領域にはバッファ１３０６が設けられ、ネット１３０４のモジュールＢの領域にはバッファ１３０８が設けられている。ゲート１３００とバッファ１３０６との間には１ｎｓのディレイが生じ、バッファ１３０６自身は１ｎｓのディレイを有する。
【００３０】
バッファ１３０６とバッファ１３０８との間には８ｎｓのディレイが発生する。さらに、モジュールＢでもモジュールと同様なディレイが発生する。この結果、ゲート１３００とゲート１３０２との間には合計で１２ｎｓのディレイが発生する。チップ内のゲートの動作周波数を１００ＭＨｚでのゲート間におけるデータ転送を可能にするためには、ゲート間のディレイは１０ｎｓ以内に収まらなくてはならない。
【００３１】
したがって、ゲート１３００とゲート１３０２との間のディレイは目標ディレイに収束できず、ゲート１３００とゲート１３０２との間での配線はタイミング違反となる。
【００３２】
そこで、図１３（２）のように、モジュールＡとモジュールＢ間にさらに中継バッファ１３１０と１３１２とを追加する。これらバッファの固有ディレイ特性がそれぞれ１ｎｓとし、バッファ１３０６と中継バッファ１３１０との間、中継バッファ１３１０と中継バッファ１３１２との間、中継バッファ１３１２とバッファ１３０８との間、それぞれにディレイが１ｎｓあるため、ゲート１３００とゲート１３０２との間のディレイは合計で９ｎｓとなり目標の１０ｎｓ以内に収めることができる。駆動力の高いバッファを使用するほどディレイをより抑制することができる。
【００３３】
一方、高駆動のものを用いると消費電力が嵩むばかりでなく、実装率が上がりフロアプランの設計に対して良からぬ影響を与える。そこで、配線長に対して中継バッファの適用形態を変更するルールを定め、このルールに基づいて中継バッファを配線に適用することとした。このルールは図１４に示す制御テーブルとして設定され、制御テーブルは補助記憶装置１８に予め記憶されている。
【００３４】
なお、図１４に示す、低駆動バッファ、中駆動バッファ、及び高駆動バッファの区別は例えば、図２０に示すものである。図２０は低駆動バッファ、中駆動バッファ、及び高駆動バッファの特性を示すテーブルである。図２０は各特性において、低駆動バッファの特性の程度を“１”とした時の中駆動バッファ及び高駆動バッファの特性の程度が示されている。
【００３５】
このルールによれば、配線長が比較的短い範囲（例えば０．２−０．５ｍｍ）では低駆動の中継バッファを配線０．２５ｍｍ当たり１個の割合で配線に適用して配線ディレイを改善し、配線長が比較的長い範囲（例えば、２．０ｍｍ以上では高駆動の中継バッファを配線２．０ｍｍ当たり１個の割合で配線に適用して実装率の増加を最小に留めならが、配線ディレイを改善し、配線長が中程度の範囲(例えば０．５−２．０ｍｍ)では、中駆動バッファを配線０．５ｍｍ当たり一個の割合で使用する。
【００３６】
モジュール間配線ディレイ算出部は、図１２で説明したモジュール間の配線距離の算出結果と図１４の制御テーブルとを参照して、配線に挿入されるバッファの特性とバッファの数を決定して、これを後述のレイアウト（実装設計）前のタイミング解析に反映させる。
【００３７】
このように、モジュール間配線ディレイ算出部は、複数のモジュール間の算出された配線長に基づいて、配線に適用される中継バッファの特性、及び中継バッファが配線に適用される頻度や割合を図１４の制御テーブルに基づいて決定する。
【００３８】
次に、モジュール間配線ディレイ算出部は、集積回路の実装時における、ゲートへのクロックを供給する配線（クロックネット）の製造時のばらつきによるディレイを計算する（１１０６）。
【００３９】
チップ上にゲートを製造するプロセスの過程において、例えば、マスクパターンとクロックネットの形状ずれや、マスクパターンを露光する際のフォーカシングのずれ、エッチング時のむらなどによってマスクパターンの形状が設計された形状に対してばらつきが発生する。この結果生じたクロックネットのばらつきによってゲートがクロック信号を受けるタイミングがゲート毎に異なり、その結果、データ転送路におけるデータ転送にディレイが発生する。したがって、タイミングの判定や検証にはこのクロックネットのばらつきに基づくディレイを見積もる必要がある。
【００４０】
図１５は、データ転送における始点となるゲートと終点となるゲートへのＰＬＬからクロックが供給される様子を示したブロック図である。ＰＬＬからゲートＧ１とゲートＧ２へクロック信号を送出する配線である、クロックネットが構成されている。互いに離れたゲートＧ１とゲートＧ２には、ＰＬＬからそれぞれ異なるクロックネットを介してクロックパルスが供給されている。
【００４１】
ゲートＧ１とゲートＧ２とが近距離の関係にある場合には、図１５の実線Ｃ１に示すように、クロックネットは、共通のクロックネットＣ１１と、ゲートＧ１へ分岐するクロックネットＣ１２と、ゲートＧ２へ分岐するクロックネットＣ１３とからなる。
【００４２】
ゲートＧ１とゲートＧ２のそれぞれにクロックが供給されるタイミングにおける差は、共通クロックネットＣ１１では発生せず、分岐クロックネットＣ１２，Ｃ１３において発生する。分岐クロックネットの長さはゲートＧ１とゲートＧ２とが近接していることからそれほど大きくないために、既述のばらつきはそれぞれの分岐クロックネットでそれほど大きな値にならない。よって、互いに近接した位置にあるゲート間でのデータパスＤ１でのディレイは大きな値にならない。
【００４３】
一方、ゲートが離れている場合には、共通クロックネットが無いか、共通クロックネットがあったとしてもその後の分岐クロックネットＣ２０，Ｃ２２が長くなり、ばらつきの影響度が大きくなる。
【００４４】
モジュール間配線ディレイ算出部は、ばらつきを原因とするディレイの影響を見積もってモジュール間の配線ディレイを算出する。論理設計段階では、モジュール配線ディレイ算出部は、モジュール単位でばらつきに基づくディレイを見積もる。
【００４５】
例えば、データの転送が同一モジュール内で行われる場合には、このモジュールのサイズ（ｍｍ□）分のばらつきに基づくディレイが発生し、異なるモジュール間でデータの転送が行われる場合には、異なるモジュールを包含する最小サイズ（ｍｍ□）分のばらつきに基づくディレイが発生するとし、このサイズ（ｍｍ□）とばらつきに基づくディレイとの関係をテーブルとして予め作成し、このテーブルを補助記憶装置に予め格納しておく。ばらつきは集積回路の製造段階で発生するためにベンダー毎に固有の傾向を持っていた。そこで、ベンダー毎にテーブルを作成しておくことが好適である。図１６に、このテーブルの一例を示す。データ転送が行われるモジュールを含むサイズが大きくなるにしたがって、ばらつきディレイが大きくなることが示されている。
【００４６】
モジュール間配線ディレイ算出部は、モジュールの中心座標、モジュールのサイズを事前に分かっているので、図１６の制御テーブルを参照することによってばらつきを原因とするディレイを決定することができる。
【００４７】
モジュール間配線ディレイ算出部は、モジュール間の配線長と中継バッファによって定まるデータパスディレイに、既述のばらつきを原因とするディレイを含む補正値を加算してモジュール間配線ディレイを算出する（１１０８）。この補正値には、他に基準クロックの発信回路のジッター（ＰＬＬジッター）、ゲートのセットアップディレイ（データをラッチするまで要する時間）が含まれる。
【００４８】
したがって、モジュール間配線ディレイ算出部は、データ転送元とデータ転送先の配線（パス）に生じるディレイである、データパスディレイ（ａ）にＰＬＬジッター（ｂ）、セットアップディレイ（ｃ）、既述のばらつきが原因となるディレイ（ｄ）を加算し合計値をモジュール配線間ディレイとする。なお、モジュール間配線ディレイ算出部は、モジュール間配線ディレイをファイアウトネットに関してはモジュールのピン毎に配線ディレイを算出する。モジュール間配線ディレイ算出部は、算出結果を出力装置で出力する（１１１０）とともに、タイミング検証部に算出情報（１１１２）を供給する。
【００４９】
タイミング検証部は、
データパスディレイ（ａ），ＰＬＬジッター（ｂ）、セットアップディレイ（ｃ）、既述のばらつきが原因となるディレイ（ｄ）について、これらの合計値（ａ＋ｂ＋ｃ＋ｄ）がクロック周波数によって定まる許容されるタイミングに収まるか、すなわち、許容ディレイに収まるかの判定、レイアウト前タイミング解析（図２の２２０）を行う。
【００５０】
例えば、ゲートの動作クロック周波数が１００ＭＨｚとすると、許容ディレイは１／（１００ＭＨｚ）＝１０ｎｓとなる。ジッターが０．２ｎｓ、セットアップディレイが０．３ｎｓ、ばらつきディレイが０．３ｎｓ（１ｍｍ□）、配線長と中継バッファによって算出されたデータパスディレイが９ｎｓとすると、これらの合計は９．８ｎｓであり１０ｎｓ以下となるために、タイミング検証部は、図２のステップ２２２において、データパスのタイミングは目標ディレイに収束でき、目標周波数(１００ＭＨｚ)でモジュール間においてデータが転送可能であると判定する。
【００５１】
タイミング検証部はこの判定を否定した場合は、フロアプラン２１４又は機能設計２０２まで戻り論理設計及びタイミング解析２２０をやり直す。例えば、フロアプランを再実行し、それでもタイミング判定が否定された場合には機能設計まで戻るようにしてもよい。
【００５２】
タイミング検証部が、タイミング検証を肯定判定し、さらに、後述の配線混雑度検証部における検証結果を肯定すると（２２４）、タイミング検証部は、実装設計装置にモジュール配置情報などのフロアプラン情報２１８を出力して、実際の実装設計が開始される（２２６）。
【００５３】
次に配線混雑検証部の処理について説明する。配線混雑検証部は、モジュールにおける配線密度をフロアプラン情報に基づいて算出し（図２の２２８）、算出された値からモジュールにおいて配線の混雑が発生しているか否かを判定する（図２の２３０）。
【００５４】
配線密度の算出処理（２２８）の詳細は、図１７のフローチャートに示されている。配線混雑検証部は、フロアプラン情報２１６を取り込んで（１７００）、モジュール内での実現できる配線長を先ず算出する（１７０２）。
【００５５】
先ず、モジュールに対して設定される配線の形態について説明する。図１８に示すように、集積回路の配線構造は複数の配線層１８００から構成されている。複数の各層では、配線方向１８０２が直交方向に交互に変更されている。各層の配線はスルーホールによって接続される。ゲートは最下層１８０４に配置される。符号１８０６は配線が形成されるピッチを示し、このピッチは例えば２ｍｍに設定される。
【００５６】
各層の配線ピッチを例えば２ｍｍ、モジュールのサイズ（図１８のＴ）が１１ｍｍ□、層数が５とすると、モジュール内で実現可能な配線長は、
（（１１ｍｍ／２ｍｍ）＝合計配線数）×１１ｍｍ(＝モジュールのサイズ)×５（＝層数）＝５５０ｍｍである。配線混雑検証部は全てのモジュールについて形成可能となる配線長を計算する。
【００５７】
次に配線混雑検証部は、各モジュールについて、モジュール内で実現可能な合計配線長にモジュールが要求する配線長が収まるか否かを検証し、これが収まらない場合にはこのモジュールについて配線混雑があり、実装設計の段階で配線の迂回が発生して、そもそも論理設計で目標ディレイに収束できていたものが実装設計段階でタイミング違反となるおそれがあるとして、実装設計まで進むことなくフロアプラン又は機能設計をやり直すこととした。
【００５８】
モジュールが要求する配線長は、モジュール内の複数のゲートの接続のために必用な配線長と、モジュールが他のモジュールと接続するために必用な配線長と、そして、モジュール上空を通過するためだけの配線長の合計からなる。
【００５９】
先ず、配線混雑検証部は、モジュール内で要求される配線長を算出する。モジュール内で必要な配線長は、モジュールのサブモジュール内でゲートの接続のために必要とされる配線長（１７０４）と複数のサブモジュールを接続するために必要な配線長（１７０６）との合計である。
【００６０】
図１９はモジュール１９００内の複数のサブモジュールの配置例を示すブロック図である。モジュールには二つのサブモジュール１９０２，１９０４が存在し、これらサブモジュールはエッジピン１９０６と配線１９０８によって接続されている。符号Ｇ1、Ｇ２、Ｇ３はそれぞれはゲートであり、符号１９１０はゲートＧ２，Ｇ３とバッファ１９１２を接続するゲートピンである。
【００６１】
サブモジュール内で要求される配線は符号１９１４，１９１６，１９１８，１９２０でえある。この配線の合計長さは、
（４／３）×（（Ａ／Ｇ）1/2×Ｇ1/6−1）×Ｐ×Ｎ・・・・・式Ｉ
Ａ：モジュールサイズ（ｍｍ□）
Ｇ：部品数(ゲート数)
Ｐ：ピン数(ゲートピン数)
Ｎ：ネット数（ゲート間のネット数）
によってシミュレートされる。
【００６２】
一方、サブモジュール間で必要な配線は符号１９０８である。この配線の長さは、式Ｉを利用し、
Ａ：モジュールサイズ（ｍｍ□）
Ｇ：部品数(サブモジュール数)
Ｐ：ピン数(サブモジュールエッジピン数)
Ｎ：ネット数（サブモジュール間のネット数）
によって算出される。
【００６３】
次に、配線混雑検証部は、モジュールが他のモジュールとの間で配線を形成するために必要な配線長を算出する（１７０８）。この配線は、モジュールの領域上にある配線である。配線混雑検証部は、この配線長を見積もるために、
配線長＝モジュール間ネット数×（（1／２）×モジュールサイズ（ｍｍ□））
の演算を行う。
【００６４】
図２１に従い、チップ上にモジュールＡ、モジュールＢ、そしてモジュールＣを配置した例を説明すると、モジュールＡとモジュールＣとの間のネット数を１０とし、モジュールＢとモジュールＣとの間のネット数を１００とすると、各モジュールにおいて要求される必要な配線長２１００−２１０６は次のように算出される。
【００６５】
モジュールＡの必要配線長＝１０ネット×（１／２）×３ｍｍ＝１５ｍｍ
モジュールＢの必要配線長＝１００ネット×（１／２）×２ｍｍ＝１００ｍｍ
モジュールCの必要配線長＝
１１０ネット（モジュールＡとのネット数とモジュールＢとのネット数の合計ト）×
（１／２）×４ｍｍ＝２２０ｍｍ
これの配線長が各モジュールについて必要である。
【００６６】
次に配線混雑検証部は、モジュール上空を通過する配線長を計算する（１７１０）。図２２に示すように、モジュールＢを算出対象とした場合、モジュールＢに対しては接続されず、モジュールＢの領域上を通る配線２２００が算出の対象となる配線である。
【００６７】
なお、符号２００４は、各配線層にある配線を接続するために複数の配線層にわたって形成されたスルーホールである。
【００６８】
そこで、配線混雑度検証部は、各モジュールについて配線が上空を通過する可能性があるか否かを判定する。図２３を例として説明すると、モジュールＢとモジュールＣとの間のネット（２３００−２３０６）のうち、２３０２と２３０４のようにモジュールＡの上空を配線が通過する可能性がある。換言すれば、モジュールＡの上空の配線層をネットが通過する可能性がある。
【００６９】
モジュールＡがこの可能性を持つことは、モジュールの中心座標を利用して判定される。モジュールＡの中心座標を（ｘＡ，ｙＡ）とし、モジュールＢの中心座標を（ｘＢ，ｙＢ）とし、モジュールＣの中心座標を（ｘＣ，ｙＣ）とすると、
ｘＢ≦ｘＡ≦ｘＣ、かつ、ｙＣ≦ｙＡ≦ｙＢ、であるとき、モジュールＢとモジュールＣ間の配線がモジュールＡ上の配線層を通過、すなわちこの配線層にモジュールＢとモジュールＣ間の配線の一部が形成される可能性がある。
【００７０】
実際にはレイアウト設計の段階で詳細な配線の設定を行わないと、モジュールＡ上を配線が通過するか否かは分からないため、モジュールサイズとチップサイズの割合でモジュール上空を通過する配線長を下記式を利用して見積もる。
【００７１】
配線長= (Ｍ／Ｃ)×Ｎ×Ｍ
Ｍ：モジュールの一辺長
Ｃ：チップの一辺長
Ｎ：ネット数（モジュールＡを対象とした時に、モジュールＡを含むチップの一辺長の範囲に形成される、モジュール間のネット数）
モジュールＡを算出対象とし、モジュールＢとモジュールＣ間のネット数１００とすると、モジュールＡ上を通過する可能性のある配線長は、４０ｍｍ（＝（２ｍｍ／１０ｍｍ）×１００ネット×２ｍｍ）となる。モジュール配線混雑検証部は、全てモジュールに対してこの算出処理を行う。
【００７２】
次いで、モジュール配線混雑検証部は、全てのモジュールについて、図１７の１７０４，１７０６，１７０８，１７１０の各ステップでそれぞれ算出された配線長を全て合算した合計値が配線可能長（１７０２）に対する割合である配線密度（モジュール領域が要求する配線の割合（配線要求率）を次のようにして計算する。
【００７３】
Ａ：配線可能配線長
Ｂ：サブモジュール内配線要求長
Ｃ：サブモジュール間配線要求長
Ｄ：モジュール間配線要求長
Ｅ：モジュール上空通過要求配線長
配線要求率（％）＝(Ｂ＋Ｃ＋Ｄ＋Ｅ)／Ａ
モジュール配線混雑検証部は、この要求率が１００％未満のときに、そのモジュールについて配線混雑がなく、レイアウト設計で配線の迂回が発生するおそれが無いと判定する（図２の２３０）。
【００７４】
モジュール間配線混雑検証部は、全てのモジュールについて要求率が１００％未満のときに配線の迂回のおそれが無いと判定する。この判定が否定された場合には、ユーザーはその結果を受けて、フロアプラン２１４又は機能設計２０２を再実行する。
【００７５】
ＣＰＵは、タイミング検証部の肯定判定と配線混雑検証部の肯定結果を受けて、タイミング収束性及び配線混雑の両方に問題が無いと判定し（２２４）、実装設計側のシステムにフロアプラン情報を出力し、以後、実装設計が実行される（２２６）。
【００７６】
なお、配線混雑の有無の判定に際しては、限界配線要求率が１００％以下の値であっても良い。
【図面の簡単な説明】
【００７７】
【図１】集積回路の設計支援装置のハードウエアブロック図である。
【図２】集積回路の論理設計を説明するためのフローチャートである。
【図３】フロアプラン実行部の処理動作を示すフローチャートである。
【図４】フロアプランによって得られた複数のモジュールの配置状態を示すブロック図である。
【図５】図４に基づく、モジュール間の配線情報を纏めた表である。
【図６】複数のモジュールについて、ゲート数、ゲートサイズ、及び配置領域を纏めた表である。
【図７】図６の表にある配置領域を持ったモジュールのブロック図である。
【図８】チップ領域へ複数のモジュールを配置する手法を説明するためのブロック図である。
【図９】チップの領域の座標に対するモジュールの配置状況を図８と対応させて説明したブロック図である。
【図１０】図９の座標系におけるモジュールの配置状況を纏めた表である。
【図１１】モジュール間配線ディレイの算出処理の詳細を示すフローチャートである。
【図１２】複数のモジュール間距離の算出の一例を示すブロック図である。
【図１３】複数のモジュール間の配線に中継バッファが挿入されている様子を示すブロック図である。
【図１４】複数のモジュール間の配線に中継バッファを挿入するルールを示す制御テーブルである。は補助記憶装置１８に予め記憶されている。
【図１５】データ転送における始点となるゲートと終点となるゲートへのＰＬＬからクロックが供給される様子を示したブロック図である。
【図１６】データ転送が行われるモジュールを含むサイズとばらつきディレイとの関係を示すテーブルの一例である。
【図１７】配線密度の算出処理の詳細を示すフローチャートである。
【図１８】モジュールの複数の配線層を示す斜視図である。
【図１９】モジュール内の複数のサブモジュールの配置例を示すブロック図である。
【図２０】低駆動バッファ、中駆動バッファ、及び高駆動バッファの特性を示すテーブルである。
【図２１】チップ領域に配置される複数のモジュールのそれぞれについて、モジュール間接続するために必用とされる配線長を説明するブロック図である。
【図２２】モジュールの上空にある配線層を通過する配線が形成された形態を示す斜視図である。
【図２３】上空の配線層を通過する配線を備えたモジュールをチップに配置した例を示すブロック図である。
【符号の説明】
【００７８】
１０  入力装置
１２  ＣＰＵ（演算装置）
１４  出力装置
１６  主記憶装置
１８  補助記憶装置
【図１】
0005060991.tif 000002
【図２】
0005060991.tif 000003
【図３】
0005060991.tif 000004
【図４】
0005060991.tif 000005
【図５】
0005060991.tif 000006
【図６】
0005060991.tif 000007
【図７】
0005060991.tif 000008
【図８】
0005060991.tif 000009
【図９】
0005060991.tif 000010
【図１０】
0005060991.tif 000011
【図１１】
0005060991.tif 000012
【図１２】
0005060991.tif 000013
【図１３】
0005060991.tif 000014
【図１４】
0005060991.tif 000015
【図１５】
0005060991.tif 000016
【図１６】
0005060991.tif 000017
【図１７】
0005060991.tif 000018
【図１８】
0005060991.tif 000019
【図１９】
0005060991.tif 000020
【図２０】
0005060991.tif 000021
【図２１】
0005060991.tif 000022
【図２２】
0005060991.tif 000023
【図２３】
0005060991.tif 000024