(57)【特許請求の範囲】
【請求項１】
半導体集積回路の配置、配線及びタイミング修正を行う集積回路設計装置であって、
半導体集積回路の配置、配線を行なった結果から遅延情報を抽出し、タイミング検証を行うタイミング検証手段と、
前記タイミング検証手段によるタイミング検証を行った結果について、発生したホールドタイムエラーの値が基準値よりも小さいか否かを判定する判定手段と、
前記判定手段により、ホールドタイムエラーの値が基準値よりも小さいと判定した場合に、ホールドタイムエラーが発生しているパスを構成する配線の中から、迂回回線として配線を引き出すための余地があり、分岐数が所定値以下であり、該配線を伝搬する信号波形のなまりがスルーレート基準値以内であり、該配線を経由するパスの遅延が所定値以下である、これらの抽出条件に基づいて遅延の挿入可能な配線を抽出する抽出手段と、
前記抽出手段により抽出した配線に対して、当該配線を含むパスのホールドタイムエラーを改善しセットアップタイムエラーを生じさせない挿入遅延値に対応する配線延長距離を算出する延長距離算出手段と、
前記延長距離算出手段により算出した延長距離の分だけ、前記抽出手段により抽出した配線を延長する配線延長処理を行う配線処理手段と
を有することを特徴とする集積回路設計装置。
【請求項２】
前記判定手段は、ホールドタイムエラーの値と比較する基準値として、ホールドタイムエラーの修正に使用するディレイバッファの遅延値の中で最小の遅延値を用いること
を特徴とする請求項１記載の集積回路設計装置。
【請求項３】
前記抽出手段は、発生した全てのホールドタイムエラーが前記判定手段により基準値よりも小さいと判定された場合にのみ、前記配線延長処理を行う対象となる配線の抽出を行うこと
を特徴とする請求項１記載の集積回路設計装置。
【請求項４】
前記延長距離算出手段はさらに、
算出した配線延長距離の分だけ配線を延長した場合の配線遅延を、当該配線の配線長、配線幅、配線容量を暫定的に設定して計算する延長配線遅延計算手段と、
前記抽出手段により抽出した配線について、当該配線を含むパスのホールドタイムエラーを解消できる挿入遅延値に対応する配線延長距離を算出した後に、
前記延長配線遅延計算手段により計算した当該配線についての遅延値と、当該配線を一部に有するパスに含まれる当該配線以外のセルや配線の実レイアウト処理結果に基づく遅延値とを用いて、当該配線を延長した場合のパス遅延値を予測するパス遅延予測手段と、
前記パス遅延予測手段により予測されたパス遅延値が、前記ホールドタイムエラーを解消できる遅延値となっているかを判定し、ホールドタイムエラーを解消できる遅延値となっていない場合には、前記算出した配線延長距離を変更して、再度、延長配線遅延計算手段に配線遅延を計算させる配線延長距離変更手段と
を有することを特徴とする請求項１乃至３のいずれかに記載の集積回路設計装置。
【請求項５】
前記配線処理手段は、前記延長距離算出手段により算出した延長距離の分だけ、前記抽出手段が抽出した配線を迂回配線させる仮想的な配線禁止領域を設定して当該配線を延長する配線延長処理を行うこと
を特徴とする請求項１乃至４のいずれかに記載の集積回路設計装置。
【請求項６】
前記配線処理手段は、
前記抽出手段が抽出した配線を延長する処理を行うための領域であるフレームを設定するフレーム設定手段と、
前記フレーム設定手段により設定されたフレームを、所定の長さの辺を有する複数の分割領域に分割するフレーム分割手段と、
前記分割手段により分割された各分割領域が、前記抽出手段により抽出した配線の前記フレーム内における始点から上下左右に何個分移動した箇所にあるかを表す第１のラベル値を、各分割領域に設定する第１のラベル設定手段と、
前記各分割領域が、前記抽出手段により抽出した配線の前記フレーム内における終点から上下左右に何個分移動した箇所にあるかを表す第２のラベル値を、各分割領域に設定する第２のラベル設定手段と、
対応する前記第１のラベル値と前記第２のラベル値とを加算した値が、前記抽出手段により抽出した配線の当該フレーム内における配線長と前記延長距離算出手段により算出した配線延長距離とを加えた長さに相当するラベル値に等しくなる分割領域に対して、前記配線を延長する場合に配線を通過させる迂回配線通過ポイントを設定する通過ポイント設定手段と
を有し、
前記配線処理手段は、前記通過ポイント設定手段により設定された迂回配線通過ポイントを通過するように、前記抽出手段により抽出した配線を修正する
ことを特徴とする請求項１乃至５のいずれかに記載の集積回路設計装置。
【請求項７】
半導体集積回路の配置、配線及びタイミング修正を行う集積回路設計方法であって、
半導体集積回路の配置、配線を行なった結果から遅延情報を抽出し、タイミング検証を行うタイミング検証工程と、
前記タイミング検証工程によるタイミング検証を行った結果について、発生したホールドタイムエラーの値が基準値よりも小さいか否かを判定する判定工程と、
前記判定工程により、ホールドタイムエラーの値が基準値よりも小さいと判定した場合に、ホールドタイムエラーが発生しているパスを構成する配線の中から、迂回回線として配線を引き出すための余地があり、分岐数が所定値以下であり、該配線を伝搬する信号波形のなまりがスルーレート基準値以内であり、該配線を経由するパスの遅延が所定値以下である、これらの抽出条件に基づいて遅延の挿入可能な配線を抽出する抽出工程と、
前記抽出工程により抽出した配線に対して、当該配線を含むパスのホールドタイムエラーを改善しセットアップタイムエラーを生じさせない挿入遅延値に対応する配線延長距離を算出する延長距離算出工程と、
前記延長距離算出工程により算出した延長距離の分だけ、前記抽出工程により抽出した配線を延長する配線延長処理を行う配線処理工程と
をコンピュータに行わせることを特徴とする集積回路設計方法。
【請求項８】
半導体集積回路の配置、配線及びタイミング修正を行う集積回路設計プログラムであって、
半導体集積回路の配置、配線を行なった結果から遅延情報を抽出し、タイミング検証を行うタイミング検証工程と、
前記タイミング検証工程によるタイミング検証を行った結果について、発生したホールドタイムエラーの値が基準値よりも小さいか否かを判定する判定工程と、
前記判定工程により、ホールドタイムエラーの値が基準値よりも小さいと判定した場合に、ホールドタイムエラーが発生しているパスを構成する配線の中から、迂回回線として配線を引き出すための余地があり、分岐数が所定値以下であり、該配線を伝搬する信号波形のなまりがスルーレート基準値以内であり、該配線を経由するパスの遅延が所定値以下である、これらの抽出条件に基づいて遅延の挿入可能な配線を抽出する抽出工程と、
前記抽出工程により抽出した配線に対して、当該配線を含むパスのホールドタイムエラーを改善しセットアップタイムエラーを生じさせない挿入遅延値に対応する配線延長距離を算出する延長距離算出工程と、
前記延長距離算出工程により算出した延長距離の分だけ、前記抽出工程により抽出した配線を延長する配線延長処理を行う配線処理工程と
をコンピュータに行わせることを特徴とする集積回路設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のレイアウト設計に関し、特に配置、配線後のタイミング検証でホールドタイミングエラーが発生した場合のタイミング修正に関するものである。
【背景技術】
【０００２】
近年、半導体集積回路の設計において、回路規模の増大やプロセス技術の微細化、及び、回路の動作周波数の高速化に伴い、半導体集積回路の設計期間を短縮することが困難となってきている。このような状況において半導体集積回路のレイアウト設計を効率よく行うために、例えば、特許文献１に示すように、集積回路を分割してレイアウト設計を行なったり、配置、配線後のタイミング修正をＥＣＯ（Engineering Change Order）処理により行なったりすることがなされている。ここで、ＥＣＯ処理によるタイミング修正では、レイアウト修正すべき一部の回路についてのみ論理変更や回路素子の配置の修正等によりタイミング処理を行う。また、特許文献２のようにクロックディレイを調整する技術も用いられている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１４９７３０号公報
【特許文献２】特開２００２−２４５１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述の背景技術におけるＥＣＯ処理等においては、タイミングエラーが発生した場合の対処方法として、同一論理で遅延値や負荷駆動能力が異なる回路素子（セル）への変更、リピータセルやディレイバッファの挿入等が行われたり、クロックパスのスキュー調整が行われたりする場合もある。また、セルの配置位置を変更してタイミング調整が行なわれることもある。これらのタイミング修正方法は、セルの変更等によって遅延調整する方法であり、遅延値を大きく変更し得る点で、設計の中盤でのタイミング検証のように、比較的大きなタイミングエラーが残っている場合に有効な手法と考えられる。
【０００５】
しかし、セル変更等による修正では、変更箇所の遅延値が大きく変わることにより、新たなタイミングエラーを発生させてしまう場合がある。設計の中盤では、タイミング修正時に多少、タイミングを悪化させる箇所があったとしても、他の大きなエラーに隠れて目立たない場合が多いが、設計の終盤に近づくにつれて、タイミング修正時に新たなエラーを発生させてしまうと設計工程に影響を与える場合が出てくる。
【０００６】
特に、ホールドタイムエラーの場合には、一般にデータパスにディレイバッファを挿入して、データパスの信号を遅延させる処理を行うが、挿入するディレイバッファの遅延値や挿入箇所によっては、挿入したディレイバッファを通る他のパス等でセットアップエラーを引き起こすような場合もある。設計終盤の締め切り間際のタイミング修正で新たなタイミングエラーを引き起こしてしまうと、設計スケジュールの遅延を引き起こしかねない。
【０００７】
そのため、本発明では、設計終盤で小さな値のホールドタイムエラーが残っているような状態において、発生しているホールドタイムエラーのみを修正し、このホールドタイムエラーのタイミング修正によって他に悪影響を与えないようにすることを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係る集積回路設計装置は、半導体集積回路の配置、配線を行なった結果から遅延情報を抽出し、タイミング検証を行うタイミング検証手段と、前記タイミング検証手段によるタイミング検証を行った結果について、発生したホールドタイムエラーの値が基準値よりも小さいか否かを判定する判定手段と、前記判定手段により、ホールドタイムエラーの値が基準値よりも小さいと判定した場合に、ホールドタイムエラーが発生しているパスを構成する配線の中から、迂回回線として配線を引き出すための余地があり、分岐数が所定値以下であり、該配線を伝搬する信号波形のなまりがスルーレート基準値以内であり、該配線を経由するパスの遅延が所定値以下である、これらの抽出条件に基づいて遅延の挿入可能な配線を抽出する抽出手段と、前記抽出手段により抽出した配線に対して、当該配線を含むパスのホールドタイムエラーを改善しセットアップタイムエラーを生じさせない挿入遅延値に対応する配線延長距離を算出する延長距離算出手段と、前記延長距離算出手段により算出した延長距離の分だけ、前記抽出手段により抽出した配線を延長する配線延長処理を行う配線処理手段とを有する。
【発明の効果】
【０００９】
レイアウト設計終盤でのタイミング検証で残った小さな値のホールドタイムエラーを、論理変更無しに、かつタイミングエラーが発生していない他の回路に影響を与えることなく、最小限の遅延挿入により修正することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施例に係る半導体集積回路のレイアウト設計手法の前提となるレイアウト設計フローの例を説明する図である。
【図２】実施例に係るレイアウト設計フローを説明する図である。
【図３】実施例に係るレイアウト設計処理とデータの関係を説明する図である。
【図４】回路例における複数のパスを説明する図である。
【図５】回路例におけるホールドタイムエラーが発生したパスの例を説明する図である。
【図６】セル・ライブラリに含まれるディレイバッファのセル遅延値の例を説明する図である。
【図７】回路例に対して実施例に係る迂回配線による遅延挿入ポイントを説明する図である。
【図８】回路例のポイントＰ１に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。
【図９】回路例のポイントＰ２に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。
【図１０】回路例のポイントＰ３に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。
【図１１】回路例のポイントＰ４に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。
【図１２】複数のホールドタイムエラーが発生しているパスに共通したネットがある場合の例を説明する図である。
【図１３】局所的な遅延計算によって迂回配線に必要な延長距離を求める処理を説明する図である。
【図１４】遅延計算に利用する情報を説明する図である。
【図１５】仮想的な配線禁止領域を作成して迂回配線する方法を説明する図である。
【図１６】迂回地点を経由させて迂回配線する方法を説明する図である。
【図１７】実施例に係るレイアウト設計処理を行うためのコンピュータのハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について詳細に説明する。実施例の説明にあたり、実施例に係る半導体集積回路のレイアウト設計手法の前提となるレイアウト設計フローの例を説明してから実施例の詳細について説明する。本実施例においては、主に大規模かつ高速な半導体集積回路のレイアウト設計を行う場合について説明する。
図１は、実施例に係る半導体集積回路のレイアウト設計手法の前提となるレイアウト設計フローの例を説明する図である。比較的に大規模かつ高速な半導体集積回路では、ＣＡＤ（Computer Aided Design）ツールによる自動配置配線だけでなく、手動によるマニュアル・レイアウトも行なわれる場合がある。図１に示すフローは、大規模かつ高速な半導体集積回路のレイアウト設計を行う際に、ＣＡＤツールによる自動配置・配線処理に加えて、必要に応じて手作業によるマニュアル処理でのレイアウト修正、検証、確認等の処理も行う場合の処理フロー例を示した図である。図１のレイアウト設計フローは、半導体集積回路の全体のレイアウトを行う際に適用してもよいし、半導体集積回路を構成する特定のブロックの部分のレイアウトを行う際に適用してもよい（以下、後述の図２、図３に示すレイアウト設計フローにおいて同じ）。
【００１２】
図１に示すレイアウト設計フローでは、最初にフロアプランを作成する処理を行う（Ｓ１００）。フロアプランを作成する処理では、半導体集積回路を構成する回路ブロックの回路規模、端子数、配線の接続先等を考慮しながら、各回路ブロックの配置位置を決定する。
【００１３】
フロアプランが決まると、回路を構成するセルの配置又は配置修正の処理を行う（Ｓ１０１）。ここで、セルとは、トランジスタにより構成されて所定の機能ブロックとして機能する回路素子をいう（以下、同じ）。セルの配置処理がなされた後、配置したセルどうしの配置箇所に重複がないかといったバイオレーション検証を行う（Ｓ１０２）。
【００１４】
Ｓ１０２のバイオレーション検証で何らかの問題がある場合には（Ｓ１０３  Ｎｏ）、Ｓ１０１に戻って、問題があるセルについて配置修正等を行うＳ１０２のバイオレーション検証で問題が見つからなかった場合には（Ｓ１０３  Ｙｅｓ）、Ｓ１０４に進む。
【００１５】
セルの配置（Ｓ１０１）及びバイオレーション検証（Ｓ１０２）が終わった段階では、まだ配線処理は行なわれていないが、セルの配置箇所が不適切な場合には、配線処理後のタイミング検証で、セットアップタイムエラー等のタイミングエラーを引き起こす場合がある。そのため、Ｓ１０２のバイオレーション検証が終わった段階で、予めセルの配置処理の妥当性を確認するために、仮想的な配線容量を仮定した暫定的なタイミング検証を行いたい場合がある。この暫定的なタイミング検証を行う場合には（Ｓ１０４  Ｙｅｓ）、Ｓ１０５のタイミング検証処理に進む。尚、Ｓ１０４でセルの配置処理後の暫定的なタイミング検証（Ｓ１０５）が不要と判断した場合には（Ｓ１０４  Ｎｏ）、後述のＳ１１０の配線処理に進む。
【００１６】
Ｓ１０５のタイミング検証では、配置されたセルどうしを接続する配線を想定した仮想的な配線容量を設定して回路の遅延計算を行い、セットアップタイム等のタイミング条件を満足するか否かを検証する。図１では図示していないが、Ｓ１０５のタイミング検証で何らかの問題が見つかった場合には、必要に応じてＳ１０１の処理まで戻ってセルの配置修正等を行う。尚、タイミング検証の手法としては、静的タイミング解析（ＳＴＡ：Static Timing Analysis）や、実配線処理を行なった後の実際の遅延情報を用いたダイナミックシミュレーション等によって行う手法があるが、ここでは主としてＳＴＡによるタイミング検証をいうものとする（以下、同様）。
【００１７】
仮想的なタイミング検証（Ｓ１０５）で問題が無い場合には、次に、クロック配線処理が必要かどうかを判定する（Ｓ１０６）。一般的に、クロックが供給される各クロックツリーの末端のＦＦ（Ｆｌｉｐ−Ｆｌｏｐ）でのクロック・スキューを合わせやすいように、データ信号に対する配線処理を行う前に、クロック信号に対する配線処理を優先して行うことが多い。そのため、クロック信号に対する配線処理を優先して行う場合には（Ｓ１０６  Ｙｅｓ）、Ｓ１０７のクロック配線処理に進む。尚、クロック配線を優先的に行う必要が無い場合には（Ｓ１０６  Ｎｏ）、後述のＳ１１０の配線処理において、クロック配線を含めて配線するようにしてもよい。また、後述のタイミング修正処理時等において既にクロック配線処理が終わっていて、クロック配線の修正が必要ないような場合も（Ｓ１０６  Ｎｏ）、Ｓ１１０の処理へ進む。
【００１８】
Ｓ１０７のクロック配線の処理においては、クロック・スキュー等を考慮して適切なクロック挿入遅延になるようにクロック配線を行う。その際、クロック挿入遅延を調節するために、必要な数だけクロック・バッファの挿入又は削除等を行う。
【００１９】
Ｓ１０７のクロック配線処理を行なった後、配線処理が行なわれたクロック配線の結果に問題点がないか等を確認する場合には（Ｓ１０８  Ｙｅｓ）、Ｓ１０９で再度暫定的なタイミング検証を行う。Ｓ１０９のタイミング検証では、クロック配線については実際に配線した結果に基づく配線容量を、それ以外の配線については仮想的な配線容量を設定して回路の遅延計算を行い、所定のタイミング条件を満足するか否かを検証する。図示していないが、Ｓ１０９のタイミング検証で問題が見つかった場合においても、必要に応じてＳ１０１の処理まで戻ってセルの配置修正等を行う。尚、Ｓ１０９でのタイミング検証が必要ない場合には（Ｓ１０８  Ｎｏ）、Ｓ１１０の処理へ進む。
【００２０】
上記Ｓ１０４、Ｓ１０６、Ｓ１０８の各判断は、設計者がＣＡＤツールを用いてレイアウト設計を行なう際に、ＣＡＤツールの設定画面やＣＡＤツールに入力する設定ファイル等によって予め設定しておくようにしてもよい。
【００２１】
セルの配置処理（Ｓ１０１）が終わり、必要に応じてクロック配線処理（Ｓ１０７）が終わると、配置された各セルどうしを接続する配線を生成する配線処理を行う（Ｓ１１０）。配線処理（Ｓ１１０）は、主にＣＡＤツールを用いた自動配線処理により行う。しかし、特定の高速動作が要求される回路ブロックの配線や、後述のバイオレーションエラーが発生した場合の配線の修正等は、人手によるマニュアル修正、すなわち、設計者が修正方法を判断し、ＣＡＤ修正内容を指示して配線修正を行う場合もある。
【００２２】
Ｓ１１０の配線処理では、セルどうしを接続する配線を新規に生成することに加えて、後述のバイオレーション検証（Ｓ１１１）やタイミング検証（Ｓ１１３）で問題が見つかった場合の配線修正処理も行う。例えば、配線間ショート等のバイオレーションがある場合には、ショートしないように配線を引きなおしたり、迂回配線させたりすることにより、バイオレーションが発生しないように配線の修正を行う。また、Ｓ１０７のクロック配線処理を行なわなかった場合であって（Ｓ１０６  Ｎｏ）、未配線となっているクロック配線がある場合には、Ｓ１１０の配線処理において、合わせてクロック配線を行う。
【００２３】
配線処理（Ｓ１１０）が終わると、配線結果について、所定のレイアウト設計ルールを満たすか否かについてのバイオレーション検証を行う（Ｓ１１１）。具体的には、Ｓ１１１のバイオレーション検証では、配線処理された配線どうしが所定の配線間隔以上離して配線されているか等のデザインルールを満たしているか、ショートしている箇所がないか、あるいはクロストークノイズの問題は生じないかといった内容について検証を行う。
【００２４】
Ｓ１１１のバイオレーション検証で何か問題が見つかった場合には（Ｓ１１２  Ｎｏ）、Ｓ１１０の処理に戻って、バイオレーションがでないように問題が見つかった配線の修正を行う。配線修正処理（Ｓ１１０）とバイオレーション検証（Ｓ１１１）は必要に応じて何度も繰り返し行い、バイオレーションが無くなると（Ｓ１１２  Ｙｅｓ）、次のタイミング検証処理（Ｓ１１３）に進む。
【００２５】
配置・配線を行った結果バイオレーションが無くなると（Ｓ１１２  Ｙｅｓ）、実配線処理後のレイアウト結果が所定のタイミング条件を満たすか否かを検証するタイミング検証を行う（Ｓ１１３）。Ｓ１１３のタイミング検証の処理においては、実際の配線結果から配線容量等を抽出し、抽出した配線容量等に基づいて回路に含まれる全てのパスについて遅延計算を行う。そして、回路に含まれる各パスについて、所定のタイミング条件を満足するか否か、例えば、セットアップタイムエラーやホールドタイムエラーが無いか等を検証する（Ｓ１１３）。
【００２６】
通常、最初の配置・配線直後は多数のタイミングエラーがある場合が多く、また、タイミングエラーの値も大きい場合が多い。そのため、以下に述べるタイミング修正処理とタイミング検証を何回も繰り返し、タイミングエラーを収束させていく。
【００２７】
Ｓ１１３のタイミング検証でエラーが残っている場合には（Ｓ１１４  Ｎｏ）、発生したタイミングエラーを修正するために、発生したエラー内容に応じて論理変更やセル移動等のタイミングエラーの修正方法を判断する（Ｓ１１５）。タイミングエラーの修正方法としては、例えば、クロック・スキューが小さくなるように修正したり、データパス上にあるセルについて同一論理で遅延値や負荷駆動能力の異なるセルに変更したり、リピータセルやディレイバッファの挿入等を行ってタイミングエラーを修正する方法がある。
【００２８】
Ｓ１１５での修正方法を判断した結果、論理変更が必要となる場合には（Ｓ１１６  Ｙｅｓ）、タイミングエラーを修正するための論理変更を行い（Ｓ１１７）、変更結果をレイアウト用データベースに反映させる（Ｓ１１８）。そして、Ｓ１０１の処理に戻って、論理変更内容を反映したレイアウトデータベースの内容に基づいて、論理変更があったセル等の配置を修正する。Ｓ１１５での修正方法の判断で論理変更が不要と判断した場合には（Ｓ１１６  Ｎｏ）、そのままＳ１０１の処理に戻って、タイミングエラーに関連するセルを移動等する配置修正を行う。尚、タイミングエラーを修正するための配置修正等の処理（Ｓ１０１）では、タイミングエラーに関連したセルの変更や移動のみを行う。
【００２９】
タイミングエラーを修正するための論理修正やセル移動等に関する配置修正（Ｓ１０１）を行った後は、配置結果に対するバイオレーション検証を行う（Ｓ１０２）。Ｓ１０２のバイオレーション検証でエラーがあれば（Ｓ１０３  Ｎｏ）、再度Ｓ１０１に戻って配置修正を行い、Ｓ１０２のバイオレーション検証でエラーがなくなっていれば（Ｓ１０３  Ｙｅｓ）次の処理に進む。ここで、タイミングエラーを修正するための一連の処理では、主にタイミングエラーに関連するセルのみについて変更、移動等が行われるので、特に必要の無い限り、再度、暫定的なタイミング検証（Ｓ１０５）やクロック配線（Ｓ１０７）を行うことなく、Ｓ１１０の配線修正処理に進む。
【００３０】
Ｓ１１０の配線修正処理では、タイミングエラーを修正するための論理変更やセル移動等したセルについて、配線を引きなおす処理を行う。そして、配線処理結果について再度バイオレーション検証を行い（Ｓ１１１）、バイオレーション検証で問題がなくなれば（Ｓ１１２  Ｙｅｓ）、タイミング修正のための一連の配置・配線の修正処理が完了する。
【００３１】
上記、タイミング修正のための一連の処理が完了すると、修正したレイアウト結果を用いて、再度、実配線結果を用いたタイミング検証を行う（Ｓ１１３）。このタイミング検証（Ｓ１１３）でまだタイミングエラーが残っている場合には、再度、上記と同様にＳ１１５〜Ｓ１１８の処理、及び配置・配線の修正処理を行う（Ｓ１０１〜Ｓ１１２）。そして、Ｓ１１３のタイミング検証でタイミングエラーが無くなると（Ｓ１１４  Ｙｅｓ）、レイアウト設計が完了する。
上述の通り、図１のレイアウト設計フローでは、最終的なタイミング検証（Ｓ１１３）でタイミングエラーが発生した場合には、負荷駆動能力が異なるセルへの変更やディレイバッファの挿入等の論理変更、又は、セルの配置位置の変更等によりタイミング修正を行う。このようなタイミング修正方法はタイミングエラーが発生しているパス中のセルの遅延値を大きく変更できる点で、比較的大きなタイミングエラーが残っている設計中盤でのタイミング修正方法として有効な手段である。
【００３２】
しかし、設計終盤に近づくにつれて、タイミングエラーの値の小さいホールドタイムエラーのみが残っているような場合においては、上記修正方法では過剰に遅延挿入してしまう場合があり、意図しないセットアップエラーを発生させてしまう場合が生じてくる。特に、高速な回路動作が要求される半導体集積回路においては、クロックのサイクルタイムが非常に短いので、パスによっては、１つのディレイバッファの挿入によってセットアップタイムに大きな影響を及ぼしてしまう場合がある。
【００３３】
設計終盤の締め切り間際のタイミング修正で新たなタイミングエラーを発生させてしまうと、設計スケジュールの遅延を引き起こしかねない。そのため、設計終盤のタイミング修正、特にホールドタイムエラーの修正は、タイミングエラーが発生している箇所以外に影響を与えない方法でタイミング修正する必要がある。このような設計終盤における小さな値のホールドタイムエラーを効率的、かつ他の回路に影響を及ぼさないように修正するためのレイアウト設計の実施例について、以下、図２以降の図面を用いて説明する。
図２は、実施例に係るレイアウト設計フローを説明する図である。図２におけるＳ１２０〜Ｓ１３４、及びＳ１４１〜Ｓ１４４の各処理は、図１のフローにおけるＳ１００〜Ｓ１１８までの各処理と基本的に同じ内容となるので、図１と図２の各フローの差異点を中心に説明する。具体的には、図２で追加されたＳ１３５〜Ｓ１４０の各処理を中心に説明する。
【００３４】
図２のフローでは、配置・配線処理後のタイミング検証（Ｓ１３３）においてタイミングエラーが残っている場合（Ｓ１３４  Ｎｏ）、タイミングエラーが発生しているパスの中で、後述の迂回配線処理を施すだけで改善できるパスを抽出する（Ｓ１３５）。そして、残っている全てのタイミングエラーが迂回配線で修正可能なホールドタイムエラーのみであるかを判断する（Ｓ１３６）。
【００３５】
Ｓ１３６において、残っている全てのタイミングエラーを迂回配線だけでは修正可能でない場合には（Ｓ１３６  Ｎｏ）、Ｓ１４１の処理に進む。すなわち、配線改善で対処するには大きすぎる値のタイミングエラーが存在する場合には、Ｓ１４１に進み、図１のＳ１１５以降の各フローと同様、セル変更やディレイバッファ挿入等の論理変更によるタイミング修正を行う。
【００３６】
Ｓ１３６において、全てのタイミングエラーが迂回配線で修正可能な小さな値のホールドタイムエラーのみである場合には（Ｓ１３６  Ｙｅｓ）、Ｓ１３７の処理に進む。Ｓ１３７では、タイミングエラーが出ているパス毎に、迂回配線処理で改善できるポイントとなる改善対象のネットの抽出を行う。その際、後述の抽出方法により、最もタイミング修正による影響範囲が少なくなるように迂回配線ポイントの抽出を試みる。
【００３７】
Ｓ１３８で迂回配線により修正する迂回配線ポイントとなるネットの抽出が完了すると（Ｓ１３８  Ｙｅｓ）、抽出した各ネットについて、どの程度迂回配線を行う必要があるかを見積もるための、簡易的な遅延計算を行う（Ｓ１３９）。この簡易遅延計算の詳細については後述する。
【００３８】
尚、迂回配線による改善対象ネットの抽出処理（Ｓ１３７）において、改善対象ネットの抽出が完了していない場合（Ｓ１３８  Ｎｏ）、すなわち、Ｓ１３５で抽出されたパスに対して、迂回配線処理を行う最適なポイントが見つからなかった場合には、再度Ｓ１３７の処理に戻って次善の迂回配線ポイントの抽出を行う。そして、全ての改善対象ネットについて、迂回配線ポイントを抽出すると、Ｓ１３９の簡易的な遅延計算を行う。
【００３９】
Ｓ１３５で抽出した各ネット毎に簡易遅延計算（Ｓ１３９）を行った後、これらの各ネットに対しての迂回配線を行うためのパラメータを決定する（Ｓ１４０）。すなわち、迂回配線を行う対象となる各ネットのネット名と共に、タイミングエラーを改善するために必要な迂回配線を行う配線の延長距離等のパラメータを決定する。
【００４０】
Ｓ１４０で各迂回配線対象のネットについての配線パラメータが決まると、Ｓ１３０の配線修正処理に進み、抽出した各迂回ポイントのネット毎に配線修正を行う。この迂回配線処理の詳細についても後述する。
【００４１】
そして、Ｓ１３０での迂回配線処理が完了すると、再度、バイオレーション検証（Ｓ１３１）、タイミング検証（Ｓ１３３）を行い、タイミングエラーが無くなるまで、前記Ｓ１３５以降の工程を繰り返す。Ｓ１３３のタイミング検証において、全てのタイミングエラーが無くなってタイミング収束した場合には（Ｓ１３４  Ｙｅｓ）、レイアウト設計が完了する。
図３は、実施例に係るレイアウト設計処理とデータの関係を説明する図である。図３中、Ｓ１３０〜Ｓ１４１の各処理は、図２におけるＳ１３０〜Ｓ１４１の各処理と同じ内容である。図３では、Ｓ１３０〜Ｓ１４１の各処理フローを示すフロー図の中央部分に、Ｓ１３０〜Ｓ１４１の各処理で使用するデータや制御ファイルを保存するデータベース（３０１〜３０３）や制御ファイル（３００）、タイミング解析結果や容量定義ファイル等（３０４）を示す。
【００４２】
図３のネット延長指示カード３００は、Ｓ１３８で抽出された各迂回配線対象ネットについてＳ１４０で決定した配線パラメータの内容を保存した制御ファイルである。レイアウトＤＢ３０１は、レイアウト設計で必要となる回路情報やレイアウト設計において生成される各種レイアウトデータを有するデータベースである。タイミング解析ＤＢ３０２は、タイミング検証を行うためのデータベースであり、タイミング検証を行う前にレイアウトＤＢ３０１及びセル・ライブラリ３０３の情報等を用いて生成されたデータベースである（Ｓ１３３）。セル・ライブラリ３０３は、レイアウト設計対象回路を構成する各セルについての、論理情報や、端子、配線、コンタクト、負荷容量駆動能力、遅延情報といった物理情報等を記憶したライブラリである。
【００４３】
各種結果・容量定義ファイル３０４は、タイミング検証（Ｓ１３３）を行った結果得られる情報、すなわち、スルーレート解析結果（ａ）、スラック情報ファイル（ｂ）、容量定義ファイル（ｃ）、パスディレイ解析結果（ｄ）の各情報を有する。ここで、スラックとは、個々のパスに対するセットアップタイムやホールドタイム等のタイミング制約に対する遅延余裕度をいう。また、パスディレイとは、タイミング検証対象のパスに含まれるセルや配線の個々の遅延値を基に、そのパスに関するデータパスの遅延値やクロックパスの遅延値を表したものをいう。
【００４４】
スルーレート解析結果（ａ）には、レイアウトデータに含まれる配線やセルを伝搬する信号波形のなまりに関する情報、すなわち、信号の立ち上がり時間や立下り時間等を保存する。スラック情報ファイル（ｂ）には、タイミング解析対象となるＦＦ等についてのセットアップタイムやホールドタイム等の遅延余裕度に関する情報を保存する。容量定義ファイル（ｃ）には、レイアウトデータに含まれる配線やセルについての配線容量やセルの入力端子容量等の情報を保存する。パスディレイ解析結果３０４（ｄ）には、タイミング検証対象のパスに関するデータパスやクロックパスの累積遅延値に加え、そのパスを構成する個々のセルや配線の遅延値をも含めた情報を保存する。また、パスディレイ解析結果３０４（ｄ）には、タイミング検証対象のパスを構成する配線やセルについての、ネット名、セル名、セルの種類、配線の分岐数等に関する情報も保存する。これらの各ファイル（３０４）に保存された情報は、後述の迂回配線処理を行う対象となる配線の抽出処理（Ｓ１３７）、簡易遅延計算処理（Ｓ１３９）、迂回配線処理を行うための各種パラメータを決定する処理（Ｓ１４０）等で使用される。
【００４５】
スルーレート解析結果（ａ）、スラック情報ファイル（ｂ）、パスディレイ解析結果（ｄ）は、タイミング検証（Ｓ１３３）を行った結果のうち、少なくともタイミングエラーが発生したパスに関する情報を有する。一般的なＳＴＡ等のタイミング検証においては、スラック値が一番小さい（又は、エラー値が一番大きい）ワーストパスのみを出力する場合が多いが、各種結果・容量定義ファイル３０４の（ａ）、（ｂ）、（ｄ）のデータについては、ワーストパスに含まれるセルやネットを共有する全てのパスについてのタイミング解析結果の情報を格納する。すなわち、タイミングエラーが発生しているパスに含まれるネットに関連する全てのパスのスラック情報等について、タイミングエラーの発生の有無に係らず、情報を各種結果・容量定義ファイル３０４に格納する。タイミングエラーが発生しているパスに含まれるネットに関連する全てのパスのスラック情報がないと、特定のネットを修正した場合の他のパスへの影響を見積もることができないためである。
【００４６】
容量定義ファイル（ｃ）は、レイアウトＤＢ３０１やセル・ライブラリ３０３等に基づいて、実際のレイアウトデータに含まれるセルや配線に関する配線容量、負荷容量、入力端子容量等の容量を記憶したファイルである。
Ｓ１３０の迂回配線を行う際には、ネット延長指示カード３００の指示に従って、各迂回配線処理の対象となる配線について、迂回配線処理を行う。その際、レイアウトＤＢ３０１のデータを参照し、迂回配線処理を行なった後のレイアウトのデータをレイアウトＤＢ３０１に格納する。全ての迂回配線処理対象の配線に対して迂回配線処理（Ｓ１３０）が完了すると、配線結果に対して、所定のレイアウト設計ルールを満たすか否かを検証するバイオレーション検証を行う（Ｓ１３１）。
【００４７】
Ｓ１３１のバイオレーション検証を行う際には、レイアウトＤＢ３０１に格納された配線処理後のレイアウトデータを参照して、Ｓ１３０で行った配線処理の結果について、所定のレイアウト設計ルールを満たすか否かについてのバイオレーション検証を行う。このバイオレーション検証の結果、配線間ショートや配線間隔エラー等のバイオレーションがあった場合には、そのエラー情報をレイアウトＤＢ３０１に反映させて、再度Ｓ１３０の処理に戻って（Ｓ１３２  Ｎｏ）、バイオレーション発生箇所の修正を行う。
【００４８】
Ｓ１３３のタイミング検証の処理においては、まず、レイアウトＤＢ３０１及びセル・ライブラリ３０３を参照して、実配線処理後のレイアウトデータに基づいてレイアウトデータに含まれるセルや配線の容量抽出を行う。そして、抽出した配線容量等の容量情報に基づいて回路中の各セル遅延や配線遅延についての遅延計算を行い、タイミング解析ＤＢ３０２を作成する。また、合わせて、前記容量定義ファイル（３０４（ｃ））を作成する。その後、Ｓ１３３の処理ではタイミング解析ＤＢ３０２を用いてタイミング解析を行い、タイミング解析結果として、スルーレート解析結果（３０４（ａ））、スラック情報ファイル（３０４（ｂ））、パスディレイ解析結果（３０４（ｄ））を作成する。
【００４９】
タイミング検証（Ｓ１３３）を行った結果、タイミングエラーが無ければ（Ｓ１３４  Ｙｅｓ）レイアウト完了となるが、タイミングエラーがある場合には（Ｓ１３４  Ｎｏ）Ｓ１３５以降の処理に進む。
【００５０】
改善対象パス抽出処理（Ｓ１３５）では、セル・ライブラリ３０３とタイミング検証（Ｓ１３３）の結果出力される結果ファイル３０４を用いて迂回配線によるタイミング改善対象パスを抽出する。Ｓ１３５でのタイミング改善対象パスの抽出方法については後述する。Ｓ１３５の処理で用いるタイミング検証の結果ファイル３０４としては、スルーレート解析結果（ａ）、スラック情報ファイル（ｂ）、パスディレイ解析結果（ｄ）を用いる。
【００５１】
Ｓ１３３のタイミング検証で出力された全てのタイミングエラーが迂回配線によるタイミング修正で修正可能な場合（Ｓ１３６  Ｙｅｓ）、Ｓ１３５で抽出した各パスについて、迂回配線を行うポイントの抽出を行う（Ｓ１３７）。
【００５２】
Ｓ１３７では、タイミングエラーが出ているパス毎に、迂回配線処理で改善できるポイントとなる改善対象のネットの抽出を行う。その際、タイミング検証（Ｓ１３３）の結果出力されるタイミング検証の結果ファイル３０４に含まれるスルーレート解析結果（ａ）、スラック情報ファイル（ｂ）、パスディレイ解析結果（ｄ）を用いて迂回配線処理対象のネットを抽出する。具体的な迂回配線処理対象のネットの抽出方法については後述する。
【００５３】
迂回配線処理対象となるネットの抽出が完了すると（Ｓ１３８  Ｙｅｓ）、セル・ライブラリ３０３、容量定義ファイル（３０４（ｃ））、パスディレイ解析結果（３０４（ｄ））を用いて、どの程度迂回配線を行う必要があるかを見積もる簡易遅延計算を行う（Ｓ１３９）。そして、簡易遅延計算（Ｓ１３９）の結果に基づいて、Ｓ１３５で抽出した各ネットに対して、迂回配線処理を行うための各種パラメータを決定し（Ｓ１４０）、決定したパラメータに基づいてネット延長指示カード３００を作成する。
図４は、回路中に存在するＦＦ間のパスについてタイミング検証を行う際に、タイミング解析の対象となるパスの例を説明する図である。図４において、２つのＦＦセル１１、１２（インスタンス：Ｂ１、Ｂ２）の間には、複数の論理セル２１〜２７（インスタンス：ＢＬ＿Ａ１〜ＢＬ＿Ａ３、ＢＬ＿Ｂ１〜ＢＬ＿Ｂ３、ＢＬ＿Ｃ１）から成る３つの経路（パス）（パスＡ、パスＢ、パスＣ）が存在する。各論理セル２１〜２７は、ＡＮＤ、ＯＲ、セレクタといった特定の機能を有する論理ゲートであり、図４では、それぞれ模式的に長方形で示されている。
【００５４】
図４において、パスＡは、Ｂ１．ＯＵＴから出力された信号が、ＢＬ＿Ａ１．Ｘ（ここで「Ｘ」は端子名とする。以下、各図において同じ）、ＢＬ＿Ｂ１．Ｘ、ＢＬ＿Ｃ１．Ｘを経由してＢ２．ＩＮに到達するまでの経路（パス）をいう。また、パスＢは、Ｂ１．ＯＵＴから出力された信号が、ＢＬ＿Ａ２．Ｘ、ＢＬ＿Ｂ２．Ｘ、ＢＬ＿Ｃ１．Ｘを経由してＢ２．ＩＮに到達するまでの経路をいう。パスＣは、Ｂ１．ＯＵＴから出力された信号が、ＢＬ＿Ａ３．Ｘ、ＢＬ＿Ｂ３．Ｘ、ＢＬ＿Ｃ１．Ｘを経由してＢ２．ＩＮに到達するまでの経路をいう。
【００５５】
図４に示すＦＦ１１及びＦＦ１２はそれぞれクロック信号（ＣＬＫ）に接続されており、このクロック信号のクロック周期を基準にタイミング解析を行う。すなわち、ＦＦ１１の出力（Ｂ１．ＯＵＴ）から出力された信号が、各パス（パスＡ〜パスＣ）を通ってＦＦ１２の入力端子（Ｂ２．ＩＮ）に入力された場合のＦＦ１２におけるセットアップタイムやホールドタイムの余裕度、すなわち、スラックを求める。そして、スラック値がマイナスの場合、すなわち、パスＡ〜パスＣを通ってＦＦ１２に到達する信号到着タイミングが所定のタイミング条件を満たしていない場合には、タイミングエラーが発生していることになる。
図５は、図４の回路例におけるパスＢでホールドタイムエラーが発生した場合の経路を太線で示した図である。ここで、パスＡ及びパスＣを経由するパスではタイミングエラーは発生していないものとし、パスＢを経由するパスのみ、ホールドタイムエラーが発生しているものとする。パスＡ及びパスＣでは何らタイミングエラーは発生していないものの、パスＡ、パスＢ、パスＣの各経路を通るパスのセットアップタイムのスラックはほとんど余裕が無いものとする。また、パスＢで発生したホールドタイムエラーのエラー値は微小な値であり、パスＢについてのセットアップタイムのスラック値よりも少しだけ小さな値のホールドタイムエラーとなっているものとする。
【００５６】
図５の事例のように、パスＡ〜パスＣの各パスにおいて、ほとんどセットアップタイムのスラックに余裕が無い状態で、パスＢについて微小な値のホールドタイムエラーが発生した場合には、ディレイバッファの挿入によるホールドタイムエラーの修正を行うと、逆にセットアップタイムエラーを引き起こす恐れがある。すなわち、ディレイバッファ挿入により、セットアップタイムのスラック値よりも大きな過剰な値の遅延が挿入されてしまい、新たなセットアップタイムエラーを引き起こしてしまうおそれがある。そのため、このような状況においては、ディレイバッファの挿入等によるセル変更を伴う修正はせずに、ホールドタイムエラーが発生しているパスＢの経路中で、他のパスに影響を与えない箇所の一部の配線に迂回配線処理を行なって配線遅延を増加させ、ホールドタイムエラーを修正することが望ましい。
【００５７】
本実施形態は、このように配置、配線がほぼ収束した状態で、タイミング解析結果においても微小なホールドタイムエラーだけが残っているようなタイミング収束に近い状態において、最小限のタイミング修正で、かつ、そのタイミング修正により他のタイミングエラーを引き起こさないようにタイミング収束させようとするものである。以下、この図５の事例を用いて、図３におけるＳ１３０〜Ｓ１４０の各処理がどのように行なわれるかについて説明する。
図３のＳ１３３でのタイミング検証の結果、上記の図５におけるパスＢで微小なホールドタイムエラーが残っている場合には、タイミングは収束していないことになるので（図３のＳ１３４  Ｎｏ）、図３のＳ１３５の改善対象パス抽出処理を行う。図３のＳ１３５の改善対象パス抽出処理では、ホールドタイムエラーが発生している場合において、そのホールドタイムエラーが小さな値のホールドタイムエラーであって、迂回配線処理のみによってタイミング修正すべきパスであるか否かを判定する。
【００５８】
迂回配線処理によりタイミング修正するか否かの判断基準としては、まず、タイミング検証（Ｓ１３３）の結果、残っているタイミングエラーが小さな値のホールドタイムエラーのみであることが望ましい。そして、そのホールドエラーについて、ディレイバッファの挿入による修正では他のパスに影響を与える可能性があって、全体の設計工程を遅延させる恐れがあるような状況、すなわち、レイアウト設計の終盤であるときに、迂回配線処理によるタイミング修正を行うことが望ましい。
【００５９】
どういった場合に、迂回配線処理によりタイミング修正するのが好ましいかは、設計で使用するテクノロジ、ライブラリの特性や、ＣＡＤツールにも依存する可能性があるため、設計者の経験則により判断することが可能である。ただし、自動配置配線ツールを用いて効率的、かつ短期間の設計処理を行うためには、より客観的な基準により判断することが望ましい。
【００６０】
従って、図３のＳ１３５で迂回配線処理により改善するパスを抽出する際には、使用するテクノロジ毎に、設計者の経験から導き出される特定の基準値がある場合には、その基準値を用いて、迂回配線処理を行うパスであるか否かを判断する。具体的には、タイミング検証（Ｓ１３３）の結果残っているホールドタイムエラーの値が、その基準値以内のエラーであるか否かを判定することにより、迂回配線処理を行うべきパスであるか否かを判断する。
【００６１】
仮に、迂回配線処理によりタイミングエラーを修正するか否かを判断するための基準値が定まっていないような場合には、より客観的な基準が必要となる。このような客観的な基準の一態様として、使用するセル・ライブラリに含まれる、ホールドタイムエラーの修正に用いる可能性のあるディレイバッファのセル遅延値のうち、一番小さいセル遅延値を基準値として用いることができる。
【００６２】
例えば、セル・ライブラリ３０３に含まれるセルのうち、ホールドタイムエラーの修正に用いるディレイバッファとして図６に示す５つのセル（ＢＵＦ１〜ＢＵＦ５）がある場合を考える。この場合、図６に示すディレイバッファの中でセル遅延値の一番小さなＢＵＦ１のセル遅延値２０ｐｓ（pico second）よりもホールドタイムエラーの値が小さいか否かにより、迂回配線処理によりタイミングエラーを修正するか否かを判断する。具体的には、ホールドタイムエラーの値が２０ｐｓよりも大きい場合には、ディレイバッファ挿入によるタイミング修正を行い、２０ｐｓよりもホールドタイムエラーの値が小さい場合には迂回配線処理によるタイミング修正を行うといったように判断する。このように、セル遅延値の一番小さなディレイバッファのセル遅延値を用いて迂回配線処理によりタイミングエラーを修正するか否かを判断することで、客観的な基準値によってホールドタイムエラーの修正方法を決定することができる。
【００６３】
図３のＳ１３５では、タイミング検証（Ｓ１３３）の結果として出力された全てのホールドタイムエラーについて、ホールドタイムエラーの値が上記基準値（経験値に基づく基準値又は最小ディレイバッファのセル遅延値）よりも小さいか否かを判断する。Ｓ１３５での判断の結果、ホールドタイムエラーの値が基準値よりも小さいパスについては、迂回配線処理によりタイミングエラーを修正するパスであるとして認定する。
【００６４】
Ｓ１３５でホールドタイムエラーが出ている全てのパスについて、そのホールドタイムエラーの値が基準値よりも小さいか否かを判定した後は、タイミング検証（Ｓ１３３）の結果残っている全てのホールドタイムエラーを迂回配線処理により修正できるか否かを判定する（Ｓ１３６）。
【００６５】
タイミング検証（Ｓ１３３）の結果として出力されるエラーとしては、ホールドタイムエラー以外にセットアップエラーやクロックパルス幅エラー等の他のエラーも存在し得る。しかし、一般的には、回路動作周波数のターゲットスペックを満たすためにセットアップエラー等のタイミングエラーを先に修正することが多いため、本実施例を適用するような設計終盤においては、ホールドタイムエラー以外のタイミング修正は収束しているものとする。
【００６６】
Ｓ１３６において、上記基準値よりも大きな値のホールドタイムエラーが残っていると判断された場合には（Ｓ１３６  Ｎｏ）、残っている大きな値のホールドタイムエラーについてはディレイバッファの挿入によるタイミング修正を、他のホールドタイムエラーの修正よりも先に行うことが望ましい。すなわち、ディレイバッファ挿入等のセルの配置・配線の変更を伴う修正を行った場合には、修正箇所に関連する他のパスの遅延や、周りの配線にも影響を与える可能性が大きく、このような修正を先に完了させた方が早くタイミング収束し得ると考えられるためである。そのため、上記基準値よりも大きな値のホールドタイムエラーが残っている場合には（Ｓ１３６  Ｎｏ）、Ｓ１４１以降の処理へ進み、大きな値のホールドタイムエラーが出ているパスについて、ディレイバッファ挿入による修正を行う。このように処理することで、レイアウト設計ツールによる自動的なタイミング修正を容易、かつ、効率的に行うことが可能となる。
ところで、回路全体のタイミング修正がほぼ収束しかけている状態で、少しだけ残ってしまった大きな値のホールドタイムエラーと迂回配線処理で修正可能な小さな値のホールドタイムエラーとが並存する場合には、これらのタイミングエラーを並行して修正した方が効率的な場合もある。すなわち、Ｓ１３６において所定の基準値よりも大きなホールドタイムエラーが少しだけ残ってしまった場合、その数が少なく、かつ、その大きな値のホールドタイムエラーを修正しても他の回路への影響が少ないと判断される場合がある。そのように判断できるような場合、図３で図示していないが、ディレイバッファ挿入によるホールドタイム修正と迂回配線処理によるホールドタイム修正とを同時に行うようにすることも可能である。ただし、ディレイバッファ挿入による修正は、他のタイミングエラーを新たに発生させる場合もあるため、このようなセル変更を伴う修正と迂回配線処理による修正を行う際には、他のパスへの影響が小さいと判断できることが望ましい。
【００６７】
このようにセル変更等を伴う修正と迂回配線処理による修正を並行して行う方が良いと判断した場合、Ｓ１３６において大きな値のホールドタイムエラーが残っていても、別の判断処理（不図示）、あるいは設計者による手動処理により、Ｓ１３７の処理に進ませることができる。この場合、迂回配線処理の対象となるパスについてＳ１３７〜Ｓ１４０の処理を行ってネット延長指示カード３００を作成しておき、その後、Ｓ１４１の処理へ進む（Ｓ１４０からＳ１４１への破線の矢印）。Ｓ１４１以降の処理では、所定の基準値よりも大きなホールドタイムエラーについてはディレイバッファ挿入による修正を行い、再度、Ｓ１３０の配線修正の処理まで進んだ段階で、Ｓ１４０で作成したネット延長指示カード３００も読み込んで配線修正を行う。すなわち、Ｓ１３０の処理において、ディレイバッファ挿入に伴う配線修正と合わせて、エラー値の小さなホールドタイムエラーに対する迂回配線処理によるタイミング修正処理も並行して行う。このように、設計終盤の特定の状況においては、ディレイバッファ挿入によるホールドタイム修正と迂回配線処理によるホールドタイム修正を並行して行うことにより、早期タイミング収束を図ることができる場合もある。
次に迂回配線処理を行う修正箇所、すなわち迂回ポイントの抽出方法について説明する。Ｓ１３６においてホールドタイムエラーが出ているパスについて迂回配線処理による修正を行うと判断した場合、Ｓ１３７の処理に進んで、実際に迂回配線を行う修正箇所である迂回ポイントの抽出を行う。以下、図４、図５の事例を用いて、迂回配線処理を行う修正箇所、すなわち迂回ポイントの抽出方法について説明する。
【００６８】
図７は、回路例に対して実施例に係る迂回配線による遅延挿入ポイントを説明する図である。図７に示すように、パスＢで小さな値のホールドタイムエラーがある場合、ポイントＰ１〜ポイントＰ４の４つのポイントが迂回配線処理を行う対象となり得るポイント（配線）となる。これらの各ポイントの中から、迂回配線処理によるホールドタイムエラーのタイミング修正を行うのに適したポイントを抽出する。
【００６９】
ここで、迂回配線処理による遅延挿入ポイントとなる配線を抽出するための条件としては、以下の条件を満たすことが望ましい。すなわち、
（条件１）配線が短すぎないこと、
（条件２）分岐数が少ないこと（望ましくは分岐数が１）、
（条件３）その配線を伝搬する信号波形に大きななまりがないこと、かつ、
（条件４）その配線を経由するパスにある程度遅延余裕度があることが好ましい。
【００７０】
これらの条件を満たすことが望ましい理由としては、条件１については、迂回配線処理対象となる配線が極端に短いと迂回配線として配線を引き出すための余地がない場合があるためである。また、条件２の分岐数については、迂回配線による遅延挿入でタイミング修正対象外のパスへの影響を抑えるためである。条件３については、なまった波形の信号（例えば、制限値の５０％以上なまっているような波形の信号）が通る配線について迂回配線処理を行うと、さらに波形なまりが悪化して、信号波形なまりに関するスルーレートの基準値違反となるおそれがあるためである。条件４については、迂回配線による遅延挿入で、逆にセットアップタイムエラーを引き起こさないようにする必要があるためである。
【００７１】
迂回配線処理によりタイミング修正を行う場合、出来る限り、ホールドタイムエラーが発生している１つのパスに対して、一つの配線に対してのみ迂回配線による迂回路を形成することが望ましい。一つのパスに対して、複数個所の配線を延長させた場合、改善度合いを予測しにくく、逆に悪い結果となる可能性もあるためである。ただし、複数のパスに共通するネットの迂回配線を行うような場合には、一つのパスに対して２箇所の迂回配線を行う場合もある。詳細については、図１２を用いて後述する。
ホールドタイムエラーを修正するために、１箇所の配線を迂回配線によって延長させて所望の遅延値を挿入する場合を考える。図７に示すように、回路例のパスＢに対しては、４つのポイント（Ｐ１〜Ｐ４）が迂回配線の対象となり得る。この４つのポイント（Ｐ１〜Ｐ４）のうち、どのポイントを迂回配線の対象とするかについては、それぞれのポイントに遅延挿入した場合の、他のパスへの影響範囲を考慮する必要がある。
【００７２】
ホールドタイムエラーが発生しているパス中の特定のポイントとなる配線に遅延を挿入した場合、そのポイントを通過する全てのパスについて挿入遅延の分だけセットアップタイムのスラックが減少することになる。遅延挿入ポイントを含むパスの中にセットアップタイムのスラック値に余裕が無いパスがある場合には、ホールドタイムエラー修正の遅延挿入により、逆にセットアップタイムエラーを引き起こしてしまう場合がある。そのため、ホールドタイムエラー修正用の遅延挿入により他のパスのセットアップタイムへの影響が小さくなるポイントを見つける必要がある。
【００７３】
図７の４つのポイント（Ｐ１〜Ｐ４）を例に、各ポイントに遅延挿入した場合の影響範囲について、図８〜図１１を用いて説明する。
【００７４】
図８は、図７におけるポイントＰ１に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。ポイントＰ１に係る配線はＦＦ１１の出力端子（Ｂ１．ＯＵＴ）が駆動する配線であるが、この配線は、ホールドタイムエラーが発生しているパスＢだけでなく、パスＡ及びパスＣにも共通しているパスである。そのため、ポイントＰ１に遅延挿入した場合、その遅延挿入による影響範囲は、図８の二点鎖線で示した部分、すなわち、パスＡ、パスＢ、パスＣの全てのパスに影響を与えてしまう。
【００７５】
図９は、図７におけるポイントＰ２に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。ポイントＰ２に係る配線は、パスＢを構成する論理ゲート２３と論理ゲート２４とを接続する配線であり、他のパスへの分岐はない。そのため、ポイントＰ２に遅延挿入した場合の影響範囲は、図９の二点鎖線で示した部分のようにパスＢにのみ影響を与えることになる。
【００７６】
図１０は、図７におけるポイントＰ３に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。ポイントＰ３に係る配線は、パスＢを構成する論理ゲート２４と論理ゲート２７とを接続する配線であり、他のパスへの分岐はない。そのため、ポイントＰ３に遅延挿入した場合の影響範囲は、図１０の二点鎖線で示した部分のようにパスＢにのみ影響を与える。
【００７７】
図１１は、図７におけるポイントＰ４に迂回配線による遅延を挿入した場合の影響範囲を説明する図である。ポイントＰ４に係る配線は、パスＡ、パスＢ、パスＣに共通した配線であり、各パスのエンドポイントであるＦＦ１２の入力端子（Ｂ２．ＩＮ）に接続される配線である。そのため、ポイントＰ４に遅延挿入した場合の影響範囲は、図１１の二点鎖線で示した部分のように、パスＡ、パスＢ、パスＣの全てのパスに影響を与えてしまう。
【００７８】
図８〜図１１で説明したように、図７に示す４つの各ポイント（Ｐ１〜Ｐ４）に遅延挿入した場合には、それぞれ影響範囲が異なる。ポイントＰ１〜ポイントＰ４の中で、遅延挿入による影響範囲が最も小さくなるのは、ポイントＰ２とポイントＰ３の２箇所であることが分かる。ポイントＰ２とポイントＰ３のいずれの配線も分岐がなく、上記条件２（分岐数が少ないこと）の条件を満たす。そのため、ポイントＰ２とポイントＰ３に関して、上記条件１（配線が短すぎないこと）と上記条件３（その配線を伝搬する信号波形に大きななまりがないこと）とを考慮して、より適切なポイントを選択する。このようにして選択されたポイントについて、セットアップタイムの遅延余裕度があれば（上記条件４）、この選択されたポイントが迂回配線処理による遅延挿入ポイントとなる。
【００７９】
尚、信号波形のなまりについて判定する際には、図３におけるスルーレート解析結果３０４（ａ）の情報を用いて判定することができる。また、セットアップタイムの遅延余裕度の判定に際しては、図３のスラック情報ファイル３０４（ｂ）の情報を用いて判定することができる。
【００８０】
仮に上記条件１〜条件３を満たすポイントが見つかっても、そのポイントが上記条件４を満たさない場合、すなわち、セットアップタイムの遅延余裕度がない場合、そのポイントに遅延挿入するとセットアップタイムエラーを引き起こしてしまう。そのため、そのような場合には、ホールドタイムエラーの修正と合わせて、セットアップタイムの余裕度を増加させるための処理を行い、ホールドタイムエラーの修正に伴うセットアップタイムエラーが発生しないようにする。
ところで、複数のパスでホールドタイムエラーが発生しており、かつ、特定のネットが複数のパスのホールドタイムエラーに関与している場合がある。このような場合、複数のパスに共通する特定のネットに対してのみ迂回配線処理による遅延挿入をすることにより、複数のホールドタイムエラーを同時に改善できる場合がある。ただし、特定のネットを共有する複数パスそれぞれのホールドタイムエラーのエラー値の差が大きい場合には、迂回配線によって挿入する遅延値に注意する必要がある。つまり、前記特定のネットに対して、大きなホールドタイムエラーのエラー値を修正できるだけの挿入遅延を入れてしまうと、セットアップタイムの余裕度のないパスにおいて過度な遅延が挿入されてしまい、逆にセットアップタイムエラーを引き起こしてしまう場合がある。
【００８１】
この場合、特定のネットを共有するパスにおいてセットアップタイムエラーが起きない挿入遅延値の分だけ、その特定ネットに対して迂回配線処理による遅延挿入を行い、その挿入遅延では足りないパスに対しては、そのパス固有の別のポイントに追加の迂回配線処理による遅延挿入を行えばよい。尚、複数のパスに共通する特定のネットに対して修正を行わないで、個々のパスに固有のネットに対して迂回配線処理を行うようにしても良い。
【００８２】
図１２は、複数のホールドタイムエラーが発生しているパスに共通したネットがある場合の例を説明する図である。図１２（Ａ）は、ホールドタイムエラーが発生しているタイミング検証対象のＦＦ（不図示）に接続するパス上にある論理ゲート（ＢＬ＿Ａ１，ＢＬ＿Ｂ１，ＢＬ＿Ｃ１，ＢＬ＿Ｄ１）どうしを接続するパスとして、パスＡとパスＢがある場合の例を示した図である。ホールドタイムエラーは、パスＡとパスＢのいずれのパスにおいても発生しているものとする。図１２（Ａ）に示すように、パスＡとパスＢはそれぞれ、論理ゲートＢＬ＿Ａ１とＢＬ＿Ｂ１とを接続する配線を共有する。
【００８３】
ホールドタイムエラーが発生しているパスＡとパスＢのそれぞれについて、迂回配線処理を行う延長ポイントの候補を抽出する際、まずは個々のパス毎に延長ポイントの候補を抽出する。迂回配線処理を行う延長ポイントの候補を抽出した結果、例えば図１２（Ｂ）に示すように、パスＡについては論理ゲート３３と３４とを接続する配線が、パスＢについては、論理ゲート３１と３２を接続する配線が選ばれたとする。
【００８４】
この場合、パスＢについて選択された延長ポイントがパスＡにも共通している。そのため、パスＢについて選択された延長ポイントに対して、パスＡでのホールドタイムエラーとパスＢでのホールドタイムエラーの両方のエラーを解消できるだけの遅延を挿入しても問題ないか調べる。すなわち、パスＡとパスＢに共通するポイントに遅延挿入を行うことにより、パスＡとパスＢのいずれかのパスでセットアップタイムエラーを引き起こすことがないかを検討する。
【００８５】
パスＡとパスＢに共通するポイントに各パスのホールドタイムエラーを修正できるだけの遅延挿入をしても、その遅延挿入によって新たにセットアップタイムエラーを引き起こすことがなければ、この共通ポイントに対してのみ迂回配線処理を行う。
【００８６】
パスＡとパスＢに共通するポイントに各パスのホールドタイムエラーを修正できるだけの遅延挿入をするといずれかのパスでセットアップタイムエラーを引き起こしてしまう場合には、共通ポイントに対して小さい方のホールドタイムエラーを修正できるだけの遅延挿入を行う。そして、大きい方のホールドタイムエラーが出ているパスに対しては、共通ポイントに挿入した遅延値では足りない分の遅延値の分だけ、他のポイントに遅延挿入する。
【００８７】
このように、複数パスに共通するポイントとなる配線がある場合には、その共通ポイントにホールドタイムエラー修正用の遅延挿入を行うことで、全体としてホールドタイムエラー修正用の遅延挿入を最小限に抑えることが可能となる。
迂回配線処理によるホールドタイムエラー修正を行うポイントにどの程度の遅延値を挿入すればよいかについては、タイミング検証（図３のＳ１３３）の結果として出力されたホールドタイムエラーを解消できるだけの遅延値であればよい。また、半導体製造工程で生ずる製造ばらつきであるオンチップばらつき（ＯＣＶ：On Chip Variation）等を考慮したマージン値をホールドタイムエラーの値に加えた値を、迂回配線処理による挿入遅延値としてもよい。
【００８８】
また、ホールドタイムエラーが発生しているパスに含まれるどのポイント（配線）に遅延挿入するかを検討するに当たっては、各ポイントを通る全てのパスについて、前記スラック情報ファイル（図３の３０４（ｂ））を参照する。そして、ホールドタイムエラー修正用に挿入する遅延値が、スラック情報ファイル３０４（ｂ）に格納されている関連するパスのセットアップタイムのスラック値よりも小さいか否かを判定する。ホールドタイムエラー修正用に挿入する遅延値が、遅延挿入ポイントを通る全てのパスのセットアップタイムのスラック値（余裕度）よりも小さい値であれば、新たなセットアップタイムエラーを引き起こすことはないので、その遅延挿入ポイントは採用し得ることになる。
迂回配線処理によるホールドタイムエラー修正を行う配線延長ポイント及び挿入遅延値が決まると、次に、実際にその挿入遅延値の分だけ配線遅延を大きくできる配線の延長距離を求める。配線の延長距離と延長された配線による挿入遅延との関係は、配線幅、配線長、配線容量等のパラメータを暫定的に決定することで、おおよその遅延値として求めることは可能である。しかし、迂回配線により過度な遅延値が挿入されてしまわないように、実配線に近い配線パターンを想定して、配線の延長距離に応じた遅延値をある程度正確に見積もる必要がある。
【００８９】
通常の遅延計算では、パスを構成する全てのネットをたどり、パスを構成する全てのセル遅延や配線遅延を求めて、それらの合計遅延値から所定のタイミング条件を満たすか否かを判定する。しかし、実際の配線処理を行う前では、実レイアウトパターンがどのようになるか不明であるため、正確な遅延値を求めることができない。また、実際に配線処理を行なって実配線に基づく容量抽出、遅延計算を行ってタイミング解析を行うと、多くの処理時間が必要となってしまう。
【００９０】
そのため、本実施例では、タイミング検証（図３のＳ１３３）時に一度計算した遅延情報を用いつつ、迂回配線による延長処理を行う配線については、仮想的に配線容量等のパラメータを設定して局所的に配線遅延を再計算して、実配線パターンを用いた計算に近い遅延値を求める。迂回配線により延長する配線に対する挿入遅延値の計算は、図３における簡易遅延計算（Ｓ１３９）の処理にて行う。この簡易遅延計算（Ｓ１３９）の詳細について図１３を用いて説明する。
【００９１】
図１３は、局所的な遅延計算によって迂回配線に必要な延長距離を求める処理を説明する図である。図１３のフローでは、最初にＳ１５０で、暫定的に迂回配線させる延長距離を設定する。ここでは、迂回配線対象のネットを含むパスのホールドタイムエラーの値の大きさに応じて予め定めた延長距離を設定する。その際、ホールドタイムエラーの値のかかわらず、特定の小さな値の延長距離を設定するようにしてもよい。そして、Ｓ１５０の処理では、設定した延長距離と、迂回配線対象となる配線の実配線パターンにおける元の配線長とを加えた予測配線長４０１を出力する。
【００９２】
予測配線長４０１が求まると、図３における容量定義ファイル３０４（ｃ）及びパスディレイ解析結果３０４（ｄ）と（不図示）、図１３に示す遅延計算に用いる各種パラメータとを用いて延長する対象となる配線の遅延値４０２を計算する（Ｓ１５２）。延長対象となる配線の遅延値４０２の計算を行う際には、迂回配線対象となる配線以外の配線やセル等については実際に配線済みの情報（３０４（ｃ）、３０４（ｄ））を用いて計算を行う（Ｓ１５２）。そして、迂回配線対象となる配線については、実際の配線層、配線幅、配線箇所の隣接条件等を考慮しつつ、各種パラメータに関する情報４００を用いて仮想的な配線容量を設定して遅延計算を行う（Ｓ１５２）。Ｓ１５２の遅延計算で用いる各種パラメータに関する情報４００の詳細については、図１４を用いて説明する。
【００９３】
図１４は、遅延計算に利用する情報を説明する図である。遅延計算を行う際、論理セル自体の遅延であるゲート遅延、及び配線遅延を計算する（図１４（Ａ））。配線遅延は、配線の配線長、配線幅、配線のシート抵抗といったパラメータ（図１４（Ｂ））、及び、配線容量や配線の接続先のセルの入力端子容量（Ｃｉｎ）等のパラメータ（図１４（Ｃ））を用いて計算する。ゲート遅延は、セル自体の遅延に加えてセルの出力負荷容量（ＣＬ）やセルの入力端子に入力される信号波形のなまり（Ｔｓｉｎ）等のパラメータを用いて計算する。
【００９４】
尚、遅延計算を行う際の、温度、電圧、プロセス条件といった条件については、特定の条件における遅延値を計算するようにしてもよいし、例えば、ベスト条件とワースト条件の２ポイントを用いて遅延計算し、各条件で所望の遅延値となっているかを判断するようにしてもよい。
【００９５】
図１３のフローに戻って、Ｓ１５２で計算した迂回配線の予測した遅延値４０２が求まると、求めた遅延値４０２と迂回配線前の元の遅延値との差分が期待する遅延増加分、すなわち、ホールドタイムエラーを修正できるだけの遅延値となっているかを確認する（Ｓ１５４）。Ｓ１５４において、期待する遅延値となっている場合には（Ｓ１５４  Ｙｅｓ）、その遅延値に対応する延長距離が、迂回配線対象ポイントの延長距離と成る。
【００９６】
Ｓ１５４で期待する遅延値が得られなかった場合（Ｓ１５４  Ｎｏ）、例えば、遅延値が足りない場合や、逆に大きすぎる場合には、再度Ｓ１５０の処理に戻って延長距離の追加又は削除を行って、予測配線長４０１を出力しなおし、再度Ｓ１５２〜Ｓ１５４を行う。そして、所望の延長距離が求まると、図３における配線パラメータ決定処理（Ｓ１４０）を行い、決定したパラメータをネット延長指示カード３００に反映させる。図３のＳ１３７で抽出した迂回配線処理を行う全ての対象箇所の配線についての迂回配線を行うためのパラメータがネット延長指示カード３００に反映されると、図３のＳ１３０の処理に移って、実際に迂回配線処理を行う。
【００９７】
迂回配線処理によるホールドタイムエラー修正（図３のＳ１３０）では、ネット延長指示カード３００の情報と、既存のレイアウトデータが格納されているレイアウトＤＢ３０１を用いて、迂回配線処理を行う。すなわち、ネット延長指示カード３００に挙げられた全てのネットに対して、必要な延長距離の分だけ配線の延長処理を行う。この迂回配線処理によるホールドタイムエラー修正（図３のＳ１３０）のための配線延長処理では、特に必要のない限り、セル配置やホールドタイムエラーに関係しない配線については変更しないようにする。ホールドタイムエラーに関係するパスの一部の配線のみ迂回配線による遅延挿入して、新たなタイミングエラーを発生させること無くホールドタイムエラーの修正を行うためである。以下、迂回配線処理を行う方法の例を図１５及び図１６を用いて説明する。
【００９８】
図１５は、迂回配線処理を行う方法の例として、仮想的な配線禁止領域を作成して迂回配線する方法を説明する図である。図１５に示す迂回配線の方法では、まず、迂回配線を行う対象の配線５０に対して、迂回配線を引くことができる一定範囲の領域であるフレーム４０を暫定的に設定する。図１５中、斜線で囲まれた領域６０、６１は、フレーム４０内に存在する実際の配線禁止領域であるものとする。また、フレーム４０で囲まれた領域の中での、迂回配線対象の配線５０の始点と終点をそれぞれ“Ｓ”と“Ｔ”で示す。
【００９９】
図１５に示す迂回配線の方法では、迂回配線対象の配線５０の“Ｓ”と“Ｔ”の間の配線を延長する際に、延長距離を考慮した仮想的な配線禁止領域６２を配線５０をまたぐように設定する。図１５では、仮想的な配線禁止領域６２の上側は、フレーム４０の上辺まで達しているので、この仮想的な配線禁止領域６２を考慮したレイアウトを行うと、配線５０を下側へ迂回配線することになる。この場合において、配線５０の配線の下側の配線禁止領域６２の左右の両辺の長さ及び下辺の長さの和が、ネット延長指示カード３００に記憶された延長距離となるように仮想的な配線禁止領域６２を設定する。このように設定された仮想的な配線禁止領域６２を回避するように配線５０を引きなおすことにより、迂回配線処理を行う。
【０１００】
図１５では、仮想的な配線禁止領域６２に加えて、配線禁止領域６０、６１も存在するので、配線５０を迂回配線処理させる際には、破線５１で示す配線禁止領域６０〜６２の各領域を通らない迂回経路を通って配線５０が引かれることになる。このようにして得られた破線５１で示される迂回配線の配線長が、所望の延長距離だけ延ばされた配線長になっていれば、配線５０に対する迂回配線処理が完了することになる。
【０１０１】
仮想的な配線禁止領域６２以外の配線禁止領域６０、６１の影響等により、配線５０に対する延長距離として期待していた延長距離よりも長い配線（５１）になってしまう場合も発生し得る。そのような場合には、仮想的な配線禁止領域６２の位置を変更したり、仮想的な配線禁止領域６２の大きさを変更することにより、所望の延長距離だけ延ばされた迂回配線５１を引くことが可能となる。
【０１０２】
また、仮想的な配線禁止領域６２と既存の配線禁止領域６０が重なるような場合には、重なっていない部分の配線禁止領域６０の外延部分の長さを考慮して、仮想的な配線禁止領域６２の大きさを決定するようにしてもよい。このようにすることで、既存の配線禁止領域を考慮したより正確な迂回配線処理を行うことが可能となる。
【０１０３】
仮に、暫定的に設定したフレーム４０内で、適切な迂回配線経路が得られない場合には、フレーム４０の位置を変更したり、フレーム４０の領域を広げて、再度、仮想的な配線禁止領域６２を設定し、所望の延長距離が得られる迂回配線できるか否かを試みるようにすればよい。あるいは、迂回配線処理を行なった結果を記憶しておき、フレーム４０の領域を広げて、足りない配線距離の分だけ、さらに別の仮想的な配線禁止領域を追加設定して、配線をさらに迂回配線させて引き伸ばすこともできる。
【０１０４】
また、設定したフレームが十分広い場合には、例えば、図１５の配線５０の上下両側に迂回配線できる領域が得られるように仮想的な配線禁止領域６２を設定し、より、期待する延長距離に近い延長距離が得られる迂回配線経路を用いるようにしてもよい。
【０１０５】
図１６は、迂回配線処理を行う方法の例として、迂回地点を経由させて迂回配線する方法を説明する図である。図１６に示す方法では、まず、フレーム４０で囲まれた領域をマス目状に所定の大きさの領域に分ける。この１マスの大きさは、レイアウト設計処理を行う際の最小グリッド幅を基準に決定してもよいし、任意の長さを基準に決定してもよい。そして、フレーム４０で囲まれた領域内の前記各マス目状の領域に対して、配線５０の始点（Ｓ）と終点（Ｔ）の各ポイントから、各マス目単位で縦横方向に何マス移動した位置にあるかを示すラベル情報を設定する。この各マス目に設定されたラベル情報は、フレーム４０内の配線５０の始点（Ｓ）及び終点（Ｔ）からの距離の情報を、所定の長さを単位としたマンハッタン長で表したものに相当する。
【０１０６】
このようにして設定されたラベル情報を用いて、ネット延長指示カード３００に記憶された迂回配線処理対象となる配線の延長距離の要件を満たす迂回配線通過ポイントを決定し、決定した迂回配線通過ポイントを通過するように配線５０の配線を修正する。この様子を図１６の例を用いて具体的に説明する。
【０１０７】
図１６において、フレーム４０で囲まれた領域内の配線５０の始点（Ｓ）から終点（Ｔ）までの長さが１８（長さの単位は任意）であったとする。また、この配線５０の元の長さと、ネット延長指示カード３００で指示する延長距離の長さを加えた長さが４２であったとする。
【０１０８】
この場合、配線５０に対する迂回配線通過ポイントを決定する方法として、例えば、配線５０の始点（Ｓ）及び終点（Ｔ）のそれぞれのポイントから、配線５０に対して期待する配線長である４２の半分の値である２１の距離だけ離れた位置を探索する。そして、配線５０の始点（Ｓ）及び終点（Ｔ）のそれぞれのポイントから２１の距離離れた各位置が接するポイントが見つかると、そのポイントを迂回配線通過ポイントとする。図１６では、配線５０に対する迂回配線通過ポイントを三角印７０で示す。
【０１０９】
尚、図１６では、迂回配線通過ポイント７０を、配線５０の始点（Ｓ）及び終点（Ｔ）の各ポイントから等間隔にあるポイントに設定した例を示しているが、迂回配線後の長さが４２であれば足りる。従って、Ｓからの距離とＴからの距離との和が４２となるポイントでさえあれば、このＳとＴからの距離の和が４２になるポイントを迂回配線通過ポイントとすることができる。
【０１１０】
図１６に示すように、フレーム４０内に配線禁止領域６０、６１があるような場合には、予めその領域に対しては、Ｓ、Ｔからの配線距離に関するラベル情報を設定しないようにする。そのようにすることで、誤って配線禁止領域６０、６１内に迂回配線通過ポイントを設定してしまうことを防止することができる。
【０１１１】
迂回配線通過ポイント（例えば図１６の三角印７０）が決まると、その迂回配線通過ポイントから、配線５０の始点（Ｓ）と終点（Ｔ）のそれぞれのポイントへ逆トレースして配線することにより、例えば配線経路５１を通過する迂回配線処理済みの配線５０を得ることができる。仮に、暫定的に設定したフレーム４０内で、適切な迂回配線経路が得られない場合には、フレーム４０の位置を変更したり、フレーム４０の領域を広げて、再度、迂回配線通過ポイント７０を設定し、所望の延長距離が得られる迂回配線できるか否かを試みるようにすればよい。
【０１１２】
このように、図１６に示す迂回配線の方法では、フレーム４０で囲まれた領域内の迂回配線処理対象となる配線５０の始点（Ｓ）及び終点（Ｔ）からの距離の情報を用いて、迂回配線通過ポイントを決定し、決定した通過ポイントを通過するように配線５０を修正する。そのようにすることで、所望の配線距離になるように迂回配線処理対象の配線を延長することが可能となり、配線の延長距離に応じた遅延増加によって、その配線を含むパスで発生しているホールドタイムエラーを修正することが可能となる。
【０１１３】
迂回配線処理を行う方法の例として、図１５及び図１６に示す２つの方法を示したが、本発明に係る迂回配線処理はこれらの方法に限定されるものではなく、他の方法による迂回配線処理を用いることも可能である。
図１７は、実施例に係るレイアウト設計処理を行うためのコンピュータのハードウェア構成例を示した図である。コンピュータ７０は、ＣＰＵ（Central Processing Unit）７１、メモリ７２、記憶装置７３、ネットワークインターフェース回路７４、キーボードやマウス等の入力装置とのインターフェース回路７５、ディスプレイ等の出力装置とのインターフェース回路７６を有する。また、コンピュータ７０の外部には、所定のネットワーク通信回線７８を介してネットワーク上の記憶装置７９が接続される。
【０１１４】
記憶装置７３やネットワーク上の記憶装置７９は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置あるいは半導体記憶装置を含み、コンピュータ読み取り可能な記録媒体を扱うドライブ装置も含む。ドライブ装置が扱う記録媒体としては、磁気テープ、メモリカード、光ディスク（ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ，等）、光磁気ディスク（ＭＯ，ＭＤ，等）といった、任意のコンピュータ読み取り可能な記録媒体を使用することができる。
【０１１５】
記憶装置７３やネットワーク上の記憶装置７９は、レイアウト設計の対象となる回路情報７０、レイアウト処理で使用するライブラリ７１、及び、レイアウト処理を行うためのプログラム７２等を格納する。ＣＰＵ７１は、バス７７や各インターフェース回路（７４〜７６）を介して、メモリ７２、記憶装置７３、７９、及び各種入出力装置等にアクセスし、記憶装置７３や記憶装置７９に格納された各種レイアウト設計処理プログラム、又は、メモリ７２等にロードされた各種レイアウト設計処理プログラムを実行する。本実施例において説明した各種レイアウト設計処理等は、図１７に示すコンピュータ７０が有するＣＰＵ７１により実行される。
【０１１６】
すなわち、本実施例に係るレイアウト設計処理プログラムは、タイミング検証（図３のＳ１３３）の結果情報３０４から迂回配線処理によってホールドタイムエラーを改善できる配線を自動的に抽出し（Ｓ１３５、Ｓ１３７）、抽出した配線に対して配線延長する距離を計算する（Ｓ１３９）。そして、レイアウト設計処理プログラムは、計算した配線毎の迂回配線を行うためのパラメータを決定し（Ｓ１４０）、決定したパラメータをネット延長指示カード３００に出力する。レイアウト設計処理プログラムによる自動配線処理（Ｓ１３０）は、ネット延長指示カード３００に基づいて、迂回配線処理を行い、ホールドタイムエラーを修正するための遅延挿入を行う。レイアウト設計処理プログラムは、迂回配線処理後、再度タイミング検証を行い（Ｓ１３３）、タイミングエラーが無くなるまで、これらの処理（Ｓ１３０〜Ｓ１３３、Ｓ１３５〜Ｓ１４０）を繰り返す。
【０１１７】
以上に述べたとおり、本実施例によれば、レイアウト設計終盤でのタイミング検証で残った小さな値のホールドタイムエラーを、かつタイミングエラーが発生していない他の回路に影響を与えることなく、最小限の遅延挿入により修正することが可能となる。
【産業上の利用可能性】
【０１１８】
本発明は、半導体集積回路のレイアウト設計に利用することができる。
【符号の説明】
【０１１９】
１１、１２  ＦＦ
２１〜３４  論理ゲート
４０        フレーム
５０        迂回配線対象の配線
５１        迂回配線経路
６０、６１  配線禁止領域
６２        仮想的な配線禁止領域
７０        迂回配線通過ポイント
３００      ネット延長指示カード
３０１      レイアウトＤＢ
３０２      タイミング解析ＤＢ
３０３      セル・ライブラリ
３０４      各種解析結果・設定ファイル
【図１】
0005609364.tif 000002
【図２】
0005609364.tif 000003
【図３】
0005609364.tif 000004
【図４】
0005609364.tif 000005
【図５】
0005609364.tif 000006
【図６】
0005609364.tif 000007
【図７】
0005609364.tif 000008
【図８】
0005609364.tif 000009
【図９】
0005609364.tif 000010
【図１０】
0005609364.tif 000011
【図１１】
0005609364.tif 000012
【図１２】
0005609364.tif 000013
【図１３】
0005609364.tif 000014
【図１４】
0005609364.tif 000015
【図１５】
0005609364.tif 000016
【図１６】
0005609364.tif 000017
【図１７】
0005609364.tif 000018