(57)【要約】【課題】ホールド・エラー・パス上にホールド・エラー解消のためのバッファの配置スペースがない場合や、バッファの配置スペースはあるが、セットアップ・エラーを招いてしまう場合、他のセルの移動や配線の二重化や配線経路の変更により、新たに遅延エラーを発生させないバッファ挿入ポイントの探索を可能にし、ＥＣＯレイアウトの繰り返しを回避できるようにした半導体集積回路のレイアウト設計方法を提供する。【解決手段】初期配置・配線の結果、ホールド・エラーがある場合には、レイアウト情報２２及びホールド・エラー・パス／スラック情報２４に基づき、ホールド・エラー解消のためのバッファの挿入ポイント探索に必要なペナルティ情報を作成し（Ｓ４）、ＲＣ情報２３と遅延ライブラリ２５とペナルティ情報に基づき、バッファの挿入ポイントの探索・決定・遅延調整を行う（Ｓ５）。【選択図】図１
2008217642.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路のネットリストに基づいて、初期配置・配線手段により初期配置・配線を行い、レイアウト情報を作成する工程と、
前記レイアウト情報に基づいて、ＲＣ抽出・遅延計算・静的タイミング解析手段により配線抵抗および配線容量の抽出と遅延計算と静的タイミング解析とを行い、配線抵抗・配線容量情報およびホールド・エラー・パス／スラック情報を作成する工程と、
前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー有無判定手段によりホールド・エラー有無の判定を行い、ホールド・エラーがある場合、前記レイアウト情報および前記ホールド・エラー・パス／スラック情報に基づいて、ペナルティ情報作成手段によりホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する工程と、
前記ペナルティ情報に基づいて、バッファ挿入ポイント探索・決定・遅延調整手段により前記挿入ポイントの探索および決定と遅延調整を行う工程を有する
ことを特徴とする半導体集積回路のレイアウト設計方法。
【請求項２】
前記ペナルティ情報は、ホールド・エラー・パスのエンド・ポイントからスタート・ポイントまでをインスタンスとノードとに分解し、前記インスタンスについては、インスタンス名に配置座標、ホールド・スラックおよびセットアップ・スラックの情報を付加し、前記ノードについては、ノード名にノード位置、配線層、挿入面積、他のセル名、その移動可能範囲、分岐数、分岐先のホールド・スラックおよびセットアップ・スラックの情報を付加したものである
ことを特徴とする請求項１に記載の半導体集積回路のレイアウト設計方法。
【請求項３】
前記挿入ポイントの決定は、前記ペナルティ情報を前記エンド・ポイントから前記スタート・ポイントに向けてトレースしなくとも、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしに前記挿入ポイントを確保できる場合を第１優先、前記ペナルティ情報を前記エンド・ポイントから前記スタート・ポイントに向けてトレースすると、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしに前記挿入ポイントを確保できる場合を第２優先、他のセルを移動すると、前記挿入ポイントを確保できる場合を第３優先、配線を二重化すると、前記挿入ポイントを確保できる場合を第４優先、配線経路を変更すると、前記挿入ポイントを確保できる場合を第５優先として行う
ことを特徴とする請求項２に記載の半導体集積回路のレイアウト設計方法。
【請求項４】
コンピュータに、
半導体集積回路のネットリストに基づいて、初期配置・配線を行い、レイアウト情報を作成する工程と、
前記レイアウト情報に基づいて、配線抵抗および配線容量の抽出と遅延計算と静的タイミング解析とを行い、配線抵抗・配線容量情報およびホールド・エラー・パス／スラック情報を作成する工程と、
前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー有無の判定を行い、ホールド・エラーがある場合、前記レイアウト情報および前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する工程と、
前記ペナルティ情報に基づいて、前記挿入ポイントの探索および決定と遅延調整を行う工程を行わせる
ことを特徴とする半導体集積回路のレイアウト設計用プログラム。
【請求項５】
前記ペナルティ情報は、ホールド・エラー・パスのエンド・ポイントからスタート・ポイントまでをインスタンスとノードとに分解し、前記インスタンスについては、インスタンス名に配置座標、ホールド・スラックおよびセットアップ・スラックの情報を付加し、前記ノードについては、ノード名にノード位置、配線層、挿入面積、他のセル名、その移動可能範囲、分岐数、分岐先のホールド・スラックおよびセットアップ・スラックの情報を付加したものである
ことを特徴とする請求項４に記載の半導体集積回路のレイアウト設計用プログラム。
【請求項６】
前記挿入ポイントの決定は、前記ペナルティ情報を前記エンド・ポイントから前記スタート・ポイントに向けてトレースしなくとも、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしに前記挿入ポイントを確保できる場合を第１優先、前記ペナルティ情報を前記エンド・ポイントから前記スタート・ポイントに向けてトレースすると、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしに前記挿入ポイントを確保できる場合を第２優先、他のセルを移動すると、前記挿入ポイントを確保できる場合を第３優先、配線を二重化すると、前記挿入ポイントを確保できる場合を第４優先、配線経路を変更すると、前記挿入ポイントを確保できる場合を第５優先として行う
ことを特徴とする請求項５に記載の半導体集積回路のレイアウト設計用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いる半導体集積回路のレイアウト設計方法、および、コンピュータを半導体集積回路のレイアウト設計装置として機能させるための半導体集積回路のレイアウト設計用プログラム、より詳しくは、半導体集積回路のレイアウト設計工程に含まれるホールド・エラーを解消するためのバッファの挿入手法の改良に関する。
【背景技術】
【０００２】
図１３は従来の半導体集積回路のレイアウト設計方法の一例を示すフローチャートである。本例はコンピュータを用いて実行されるものであり、本例では、まず、レイアウト設計対象の半導体集積回路のネットリスト１に基づいて初期配置・配線を行い、レイアウト情報２を作成する（ステップＰ１）。
【０００３】
次に、レイアウト情報２に基づいて、配線抵抗および配線容量の抽出（ＲＣ抽出）と遅延計算と静的タイミング解析（ＳＴＡ）とを行い、ＲＣ情報３とホールド・エラー・パス／スラック（ホールド・スラックおよびセットアップ・スラック）情報４を作成する（ステップＰ２）。
【０００４】
次に、ホールド・エラー・パス／スラック情報４に基づいて、ホールド・エラー有無の判定を行い（ステップＰ３）、ホールド・エラーが無い場合（ステップＰ３でＮＯの場合）には、レイアウト設計を終了する。
【０００５】
これに対して、ホールド・エラーがある場合（ステップＰ３でＹＥＳの場合）には、ＲＣ情報３と遅延ライブラリ５に格納されているセルの遅延情報に基づいて、ホールド・エラーを解消するためのバッファの挿入ポイントの探索および決定と、バッファ挿入による遅延調整を行う（ステップＰ４）。なお、本例においては、バッファ挿入ポイントの探索は、配置スペースやセットアップ・クリティカル・パスなどを考慮せずに行われる。
【０００６】
次に、ＥＣＯ（engineering change order）リスト６を作成し（ステップＰ５）、ＥＣＯリスト６に基づいて、ネットリスト・配置・配線の修正を行い、レイアウト情報２を更新する（ステップＰ６）。以下、ステップＰ３において、「ホールド・エラー無し」となるまで、ステップＰ４〜Ｐ６、Ｐ２、Ｐ３を繰り返す。
【特許文献１】特開２０００−２６９３４７号公報
【特許文献２】特開２０００−２０５６７号公報
【特許文献３】特開２００１−１６８１９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１３に示す従来の半導体集積回路のレイアウト設計方法では、ホールド・エラーを解消するためのバッファの挿入ポイントの探索は、配置スペースやセットアップ・クリティカル・パス等を考慮せずに行われるため、バッファを挿入することができない箇所をバッファ挿入ポイントに決定してしまい、これを原因として、後述するように、新たにホールド・エラーやセットアップ・エラーが発生し、何度もＥＣＯレイアウトを繰り返さなければならない場合があるという問題点があった。
【０００８】
図１４は図１３に示す従来の半導体集積回路のレイアウト設計方法が有する問題点を具体的に説明するための図であり、初期配置・配線（ステップＰ１）後のレイアウト例の一部分を示しており、図１４（Ａ）はホールド・エラーを解消するためのバッファを挿入する前、図１４（Ｂ）はホールド・エラーを解消するためのバッファを挿入した後を示している。
【０００９】
図１４中、９は配線、１０は配線９から分岐した配線、１１はデータ出力端子が配線９に接続された論理セル（以下、単に「セル」という）、１２はデータ入力端子が配線９に接続されたフリップ・フロップ、１３はデータ入力端子が配線１０に接続されたフリップ・フロップ、１４は配線９とは別配線経路のセル、１５、１６はバッファを挿入できない箇所、１７はバッファを挿入できる箇所、１８は挿入されたバッファである。
【００１０】
ここで、図１４（Ａ）に示すレイアウト例は、配線９がホールド・エラー・パス、配線１０がセットアップ・クリティカル・パスになっている例である。このレイアウト例の場合には、セル１４を他の位置に移動して、セル１４の元の位置にバッファを挿入すれば、フリップ・フロップ１２のホールド・エラーについては解消することができるが、このようにすると、セル１４の移動先によっては、セル１４を含む配線経路が新たにホールド・エラー・パスとなってしまう。
【００１１】
また、図１４（Ｂ）に示すように、バッファを挿入できる箇所１７にバッファ１８を挿入すると、フリップ・フロップ１２のホールド・エラーについては解消することができるが、配線１０がセットアップ・クリティカル・パスとなっているので、配線１０が新たにセットアップ・エラーになってしまう。
【００１２】
ここで、図１３に示す従来の半導体集積回路のレイアウト設計方法では、ホールド・エラーを解消するためのバッファの挿入ポイントの探索は、配置スペースやセットアップ・クリティカル・パスなどを考慮せずに行われるため、図１４（Ａ）に示すレイアウト例の場合、セル１４の位置をバッファ挿入ポイントに決定し、ＥＣＯレイアウトでセル１４を新たにホールド・エラー・パスを発生させる位置に移動し、あるいは、図１４（Ｂ）に示すように、新たにセットアップ・エラーを発生させてしまう位置１７にバッファ１８を配置してしまう場合が発生する。
【００１３】
なお、特許文献１には、適切なピン配置のバッファを挿入することによりセットアップ・エラーの修正を行い、再配線後のタイミング制約に違反する配線数を減少させるレイアウト設計方法が記載されている。しかしながら、特許文献１に記載のレイアウト設計方法では、配線経路上に存在するバッファ挿入ポイントを探すだけなので、配線経路上にバッファ挿入ポイントがないと、セットアップ・エラーを改善することができないという問題点がある。
【００１４】
また、特許文献２には、レイアウト設計後のタイミング制約違反の修正において、セルの配置移動量を削減するレイアウト設計方法が記載されている。しかしながら、特許文献２に記載のレイアウト設計方法では、セットアップ・エラーを修正するために挿入した重複セルの配置が基点のため、重複セルがどちらもクリティカルな場合は、移動することができないという問題点がある。
【００１５】
また、特許文献３には、バッファ挿入範囲内の全ての領域を対象として、既存素子と重ならない位置の座標を検索し、検索した位置にバッファを配置することにより遅延規格を満たす修正を行うことができるレイアウト設計方法が記載されている。しかしながら、特許文献３に記載のレイアウト設計方法では、探索範囲は広がるが、既存素子と重ならない位置に挿入ポイントがない場合には、遅延エラーを改善することができないという問題点がある。
【００１６】
本発明は、かかる点に鑑み、ホールド・エラー・パス上にホールド・エラー解消のためのバッファの配置スペースがない場合や、ホールド・エラー・パス上にホールド・エラー解消のためのバッファ配置スペースはあるが、セットアップ・エラーを招いてしまう場合には、他のセルの移動や配線の二重化や配線経路の変更により、新たにホールド・エラーやセットアップ・エラーを発生させないバッファ挿入ポイントを探索することを可能にしてＥＣＯレイアウトの繰り返しを回避することができるようにし、半導体集積回路のレイアウト設計を効率的に行うことができるようにした半導体集積回路のレイアウト設計方法および半導体集積回路のレイアウト設計用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の半導体集積回路のレイアウト設計方法は、半導体集積回路のネットリストに基づいて、初期配置・配線手段により初期配置・配線を行い、レイアウト情報を作成する工程と、前記レイアウト情報に基づいて、ＲＣ抽出・遅延計算・静的タイミング解析手段により配線抵抗および配線容量の抽出と遅延計算と静的タイミング解析とを行い、配線抵抗・配線容量情報およびホールド・エラー・パス／スラック情報を作成する工程と、前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー有無判定手段によりホールド・エラー有無の判定を行い、ホールド・エラーがある場合、前記レイアウト情報および前記ホールド・エラー・パス／スラック情報に基づいて、ペナルティ情報作成手段によりホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する工程と、前記ペナルティ情報に基づいて、バッファ挿入ポイント探索・決定・遅延調整手段により前記挿入ポイントの探索および決定と遅延調整を行う工程を有するものである。
【００１８】
本発明の半導体集積回路のレイアウト設計用プログラムは、コンピュータに、半導体集積回路のネットリストに基づいて、初期配置・配線を行い、レイアウト情報を作成する工程と、前記レイアウト情報に基づいて、配線抵抗および配線容量の抽出と遅延計算と静的タイミング解析とを行い、配線抵抗・配線容量情報およびホールド・エラー・パス／スラック情報を作成する工程と、前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー有無の判定を行い、ホールド・エラーがある場合、前記レイアウト情報および前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する工程と、前記ペナルティ情報に基づいて、前記挿入ポイントの探索および決定と遅延調整を行う工程を行わせるものである。
【発明の効果】
【００１９】
本発明によれば、初期配置・配線の結果、ホールド・エラーがある場合、レイアウト情報およびホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報が作成され、このペナルティ情報に基づいて、ホールド・エラーを解消するためのバッファの挿入ポイントの探索が行われる。
【００２０】
この結果、ホールド・エラー・パス上にホールド・エラー解消のためのバッファの配置スペースがない場合や、ホールド・エラー・パス上にホールド・エラー解消のためのバッファ配置スペースはあるが、セットアップ・エラーを招いてしまう場合には、他のセルの移動や配線の二重化や配線経路の変更を検討することが可能となり、新たにホールド・エラーやセットアップ・エラーを発生させないバッファ挿入ポイントを探索することが可能となる。したがって、ＥＣＯレイアウトの繰り返しを回避することができ、半導体集積回路のレイアウト設計を効率的に行うことができる。
【発明を実施するための最良の形態】
【００２１】
図１は本発明の半導体集積回路のレイアウト設計方法の一実施形態を示すフローチャートであり、本発明の半導体集積回路のレイアウト設計方法の一実施形態は、コンピュータを用いて実行されるものである。
【００２２】
本発明の半導体集積回路のレイアウト設計方法の一実施形態においては、まず、レイアウト設計対象の半導体集積回路のネットリスト２１に基づいて、初期配置・配線手段により初期配置・配線を行い、レイアウト情報２２を作成する（ステップＳ１）。
【００２３】
次に、レイアウト情報２２に基づいて、ＲＣ抽出・遅延計算・静的タイミング解析手段により配線抵抗および配線容量の抽出（ＲＣ抽出）と遅延計算と静的タイミング解析（ＳＴＡ）とを行い、ＲＣ情報２３とホールド・エラー・パス／スラック（ホールド・スラックおよびセットアップ・スラック）情報２４を作成する（ステップＳ２）。
【００２４】
次に、ホールド・エラー・パス／スラック情報２４に基づいて、ホールド・エラー有無判定手段によりホールド・エラー有無の判定を行い（ステップＳ３）、ホールド・エラーが無い場合（ステップＳ３でＮＯの場合）には、レイアウト設計を終了する。
【００２５】
これに対して、ホールド・エラーがある場合（ステップＳ３でＹＥＳの場合）には、レイアウト情報２２およびホールド・エラー・パス／スラック情報２４に基づいて、ペナルティ情報作成手段により、ホールド・エラーを解消するためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する（ステップＳ４）。
【００２６】
次に、ＲＣ情報２３と、遅延ライブラリ２５に格納されているセルの遅延情報と、ペナルティ情報に基づいて、バッファ挿入ポイント探索・決定・遅延調整手段により、ホールド・エラーを解消するためのバッファの挿入ポイントの探索および決定と、バッファ挿入による遅延調整を行う（ステップＳ５）。
【００２７】
ここで、ホールド・エラーを解消するためのバッファの挿入にあたり、配線の二重化や配線経路の変更を行った場合には、配線経路情報作成手段により配線経路情報２６を作成する（ステップＳ６）。また、ホールド・エラーを解消するためのバッファの挿入にあたり、別配線経路のセルを移動した場合には、移動セル配置情報作成手段により移動セル配置情報２７を作成する（ステップＳ７）。そして、挿入バッファ配置情報作成手段およびＥＣＯリスト作成手段により挿入バッファ配置情報２８およびＥＣＯリスト２９を作成する（ステップＳ８、Ｓ９）。
【００２８】
次に、配線経路情報２６と、移動セル配置情報２７と、挿入バッファ配置情報２８と、ＥＣＯリスト２９とに基づいて、ネットリスト・配置・配線修正手段によりネットリスト・配置・配線の修正を行い、レイアウト情報２２を更新する（ステップＳ１０）。以下、ステップＳ３において、「ホールド・エラー無し」となるまで、ステップＳ４〜Ｓ１０、Ｓ２、Ｓ３を繰り返す。
【００２９】
ここで、ステップＳ４で作成するペナルティ情報は、ホールド・エラー・パスのエンド・ポイントからスタート・ポイントまでをインスタンスとノード（ＲＣラダーに基づいたポイント）とに分解し、これらインスタンスおよびノードについての情報で構成する。
【００３０】
本実施形態では、インスタンスについての情報は、インスタンス名に配置座標とホールド・スラックとセットアップ・スラックの各情報を付加したものとし、ノードについての情報は、ノード名にノード位置、配線層、挿入面積、別配線経路の他のセル名、その移動可能範囲（ホールド・エラーおよびセットアップ・エラーを発生させることなくセルを移動させることができる範囲）、分岐数、分岐先のワースト・ホールド・スラック、分岐先のワースト・セットアップ・スラックの各情報を付加したものとする。
【００３１】
また、ペナルティ情報を記述する構文は、インスタンスについては、たとえば、「インスタンス名（配置座標ｘ，ｙ，ホールド・スラック，セットアップ・スラック）」とし、ノードについては、たとえば、「ノード名（ノード位置ｘ１，ｙ１，配線層，挿入面積，別配線経路の他のセル名（移動可能範囲ｍｘ１，ｍｙ１，ｍｘ２，ｍｙ２）、分岐数，分岐先のワースト・ホールド・スラック、分岐先のワースト・セットアップ・スラック）」とする。
【００３２】
図２は初期配置・配線された半導体集積回路の一例の一部分のレイアウト例を示す図である。図２中、「EndA」、「inst1A」、「StartA」はインスタンス名、「node1」〜「node９」はノード名であり、３１〜３３は配線、３４はデータ入力端子が配線３１に接続されたフリップ・フロップ、３５はデータ出力端子が配線３１に接続されたフリップ・フロップ、３６は配線３１に挿入されたセル、３７〜４３は配線３１とは別配線経路の他のセルである。
【００３３】
また、散点模様を付しているノードは、バッファ挿入面積がないノードであり、この例では、ノード５およびノード９はバッファ挿入面積があるノードとされている。このレイアウト例の場合には、ステップＳ４において、図３に示すようなペナルティ情報を作成する。
【００３４】
また、ステップＳ５で実行するバッファ挿入ポイントの決定は、予め決めておいた優先順位（第１優先〜第５優先）に従って行うものとする。図４〜図８は本実施形態で使用するバッファ挿入ポイントの優先順位を説明するための図である。
【００３５】
ここで、バッファ挿入ポイントの第１優先は、ペナルティ情報をエンド・ポイントからスタート・ポイントに向けてトレースしなくとも、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしにバッファ挿入ポイントを確保することができる場合であり、この場合には、当該確保することができるバッファ挿入ポイントを第１優先のバッファ挿入ポイントとする。
【００３６】
図４はバッファ挿入ポイントの第１優先を説明するための図である。図４（Ａ）はバッファ挿入前、図４（Ｂ）はバッファ挿入後を示しており、図４（Ａ）は図１４（Ａ）に示す回路部分において、セル１４が存在せず、ノード１にバッファ挿入面積がある場合である。
【００３７】
図４（Ａ）に示すレイアウト例の場合、ノード１にはバッファ挿入面積があるので、ペナルティ情報をエンド・ポイントからスタート・ポイントに向けてトレースしなくとも、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしにノード１をバッファ挿入ポイントとして確保し、図４（Ｂ）に示すように、ノード１にバッファ１８を挿入することができ、このようにすることにより、フリップ・フロップ１２のホールド・エラーを解消することができる。
【００３８】
また、バッファ挿入ポイントの第２優先は、ペナルティ情報をエンド・ポイントからスタート・ポイントに向けてトレースすると、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしにバッファ挿入ポイントを確保することができる場合であり、この場合には、当該確保することができるバッファ挿入ポイントを第２優先のバッファ挿入ポイントとする。
【００３９】
図５はバッファ挿入ポイントの第２優先を説明するための図である。図５（Ａ）はバッファ挿入前、図５（Ｂ）はバッファ挿入後を示しており、図５（Ａ）は図１４（Ａ）に示す回路部分において、配線１０およびフリップ・フロップ１３が存在しない場合である。
【００４０】
図５（Ａ）に示すレイアウト例の場合、ノード５にはバッファ挿入面積があるので、ペナルティ情報をエンド・ポイントからスタート・ポイントに向けてトレースすると、他のセルの移動、配線の二重化又は配線経路の変更を行うことなしにノード５をバッファ挿入ポイントとして確保し、図５（Ｂ）に示すように、ノード５にバッファ１８を挿入することができ、このようにすることにより、フリップ・フロップ１２のホールド・エラーを解消することができる。
【００４１】
また、バッファ挿入ポイントの第３優先は、他のセルを移動すると、バッファ挿入ポイントを確保することができる場合であり、この場合には、当該確保することができるバッファ挿入ポイントを第３優先のバッファ挿入ポイントとする。
【００４２】
図６はバッファ挿入ポイントの第３優先を説明するための図である。図６（Ａ）はバッファ挿入前、図６（Ｂ）はバッファ挿入後を示しており、図６（Ａ）は図１４（Ａ）に示す回路部分とその周辺部を示している。太線４６は、別配線経路のセル１４をセットアップ・エラーもホールド・エラーも発生させることなく移動させることができる範囲を示している。
【００４３】
図６（Ａ）に示すレイアウト例の場合、セル１４の移動可能範囲内にセル１４を移動させることができる場所４７があるので、図６（Ｂ）に示すように、セル１４を場所４７に移動すると、ノード１をバッファ挿入ポイントとして確保し、ノード１にバッファ１８を挿入することができ、このようにすることにより、フリップ・フロップ１２のホールド・エラーを解消することができる。
【００４４】
また、バッファ挿入ポイントの第４優先は、配線を二重化すると、バッファを挿入することができるポイントを確保することができる場合であり、この場合には、当該確保することができるバッファ挿入ポイントを第４優先のバッファ挿入ポイントとする。
【００４５】
図７はバッファ挿入ポイントの第４優先を説明するための図である。図７（Ａ）はバッファ挿入前、図７（Ｂ）はバッファ挿入後を示しており、図７（Ａ）は図１４（Ａ）に示す回路部分と同一の回路部分を示している。
【００４６】
図７（Ａ）に示すレイアウト例の場合において、別配線経路のセル１４を移動させることができる場所が無い場合には、図７（Ｂ）に示すように、ノード５にバッファ１８を挿入し、新たに配線４８を設けて配線の二重化を行うと、フリップ・フロップ１２のホールド・エラーを解消することができる。
【００４７】
また、バッファ挿入ポイントの第５優先は、配線経路を変更すると、バッファを挿入することができるポイントを確保することができる場合であり、この場合には、当該確保することができるバッファ挿入ポイントを第５優先のバッファ挿入ポイントとする。
【００４８】
図８はバッファ挿入ポイントの第５優先を説明するための図である。図８（Ａ）はバッファ挿入前、図８（Ｂ）はバッファ挿入後を示しており、図８（Ａ）は図１４（Ａ）に示す回路部分と同一の回路部分を示している。
【００４９】
図８（Ａ）に示すレイアウト例の場合において、別配線経路のセル１４を移動させることができる場所がなく、かつ、図７（Ｂ）に示すように配線の二重化を行うことができない場合には、図８（Ｂ）に示すように、ノード５にバッファ１８を挿入し、配線１０の配線経路を変更すると、フリップ・フロップ１２のホールド・エラーを解消することができる。
【００５０】
ここで、第１優先又は第２優先でバッファ挿入ポイントを決定した場合には、その後、ＲＣラダー上の決定したバッファ挿入ポイントにバッファを挿入し、ノード分割を行う。そして、この場合には、既存配線の変更がほとんどないようにバッファを挿入しているので、バッファ挿入前のＲＣ値を使用して遅延計算を行い、ホールド・エラーが改善されることをチェックした後、挿入バッファの配置情報の作成（ステップＳ８）とＥＣＯリストの作成（ステップＳ９）を行う。
【００５１】
また、第３優先でバッファ挿入ポイントを決定した場合には、その後、別配線経路の他のセルの移動先の配置情報の作成（ステップＳ７）を行い、ＲＣラダー上の決定したバッファ挿入ポイントにバッファを挿入し、ノード分割する。そして、この場合には、既存配線の変更がほとんどないようにバッファを挿入しているので、バッファ挿入前のＲＣ値を使用して遅延計算を行い、ホールド・エラーが改善されることをチェックした後、挿入バッファの配置情報の作成（ステップＳ８）とＥＣＯリスト作成（ステップＳ９）を行う。
【００５２】
また、第４優先でバッファ挿入ポイントを決定した場合には、その後、配線の二重化による配線経路情報を作成する（ステップＳ６）。配線経路情報に関するＲＣラダーは、バッファ挿入ポイントにバッファを挿入する前のＲＣラダーとし、そのＲＣ値による遅延値を計算し、セットアップ・タイミングおよびホールド・タイミングにエラーがないかをチェックする。
【００５３】
そして、ＲＣラダー上の決定したバッファ挿入ポイントにバッファを挿入し、ノード分割をする。次に、分岐を移動したノードについては、後述するように遅延計算を行い、その他についてはバッファ挿入前のＲＣ値を使用して遅延計算を行う。次に、ホールド・エラーが改善されることをチェックした後、挿入バッファの配置情報作成（ステップＳ８）、ＥＣＯリスト作成（ステップＳ９）を行う。
【００５４】
また、第５優先でバッファ挿入ポイントを決定した場合には、その後、配線をマンハッタン長ベースで変更した配線経路情報を作成する（ステップＳ６）。配線経路情報に関するＲＣラダーは、バッファ挿入ポイントにバッファを挿入する前のＲＣラダーとし、そのＲＣ値による遅延値を計算し、セットアップ・タイミングおよびホールド・タイミングにエラーがないかをチェックする。
【００５５】
そして、ＲＣラダー上の決定したバッファ挿入ポイントにバッファを挿入し、ノード分割をする。次に、分岐を移動したノードについては、後述するように遅延計算を行い、その他についてはバッファ挿入前のＲＣ値を使用して遅延計算を行う。次に、ホールド・エラーが改善されることをチェックした後、挿入バッファの配置情報の作成（ステップＳ８）とＥＣＯリスト作成（ステップＳ９）を行う。
【００５６】
図９は第１優先、第２優先又は第３優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。図９（Ａ）はバッファ挿入前、図９（Ｂ）はバッファ挿入後を示しており、５０、５１はセル、５２は挿入したバッファ、Ａ、Ｂ、Ｃ、Ｄ、Ｄ１、Ｅはノード、Ｒab、Ｒbc、Ｒcd、Ｒdeは配線抵抗、Ｃa、Ｃb、Ｃc、Ｃd、Ｃd1、Ｃeは各ノードの容量である。
【００５７】
本実施形態では、第１優先、第２優先又は第３優先でバッファ挿入ポイントを決定した場合、バッファの挿入前の既存配線のＲＣ抽出情報（ＲＣラダー）のノードにバッファを挿入することで、バッファ５２を挿入した後の配線修正によるＲＣ値の誤差を低減し、ＲＣ抽出を行わずに、バッファ挿入後の遅延計算を行う。
【００５８】
例えば、第１優先、第２優先又は第３優先でノードＤをバッファ挿入ポイントに決定した場合には、セル５０とバッファ５２との間のＲＣ形状は、バッファ挿入前のノードＡとノードＤとの間のＲＣ形状を反映させる。また、バッファ５２とセル５１との間のＲＣ形状は、バッファ挿入前のノードＤとノードＥとの間のＲＣ形状を反映させる。但し、新たに出来るノードＤ１の容量Ｃd1は０とする。
【００５９】
図１０は第４優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。図１０（Ａ）はバッファ挿入前、図１０（Ｂ）はバッファ挿入後を示しており、５４〜５６はセル、５７は挿入したバッファ、Ａ、Ｂ、Ｂ１、Ｃ、Ｄ、Ｅ、Ｆ、Ｂ´、Ｃ´、Ｄ´はノード、Ｒab、Ｒbc、Ｒcd、Ｒde、Ｒdfは配線抵抗、Ｃa、Ｃb、Ｃb1、Ｃc、Ｃd、Ｃd´、Ｃe、Ｃfは各ノードの容量である。
【００６０】
本実施形態では、第４優先でバッファ挿入ポイントを決定した場合、ＲＣラダー分の配線遅延は、バッファが挿入される前のＲＣラダーとほぼ同じになるように複製するので、それを使用して計算する。
【００６１】
例えば、第４優先でノードＢをバッファ挿入ポイントに決定した場合には、セル５４とセル５６との間のＲＣ形状は、バッファ挿入前のノードＡとノードＦとの間のＲＣ形状を反映させる。また、バッファ５７とセル５５との間のＲＣ形状は、バッファ挿入前のノードＢとノードＥとの間のＲＣ形状を反映させる。但し、新たに出来るノードＢ１の容量Ｃb1は０とする。
【００６２】
また、配線を付け替えたセルへの配線接続が削除されるノードにおいては、元の配線の分岐までを削除して、当該ノードの容量値Ｃ´をＣ´＝Ｃ−Ｃ／ｎで計算する。但し、Ｃは元々の容量値、ｎはノード分岐数である。したがって、図１０のレイアウト例では、バッファ挿入後のノードＤの容量Ｃｄ´は、Ｃｄ´＝Ｃｄ−Ｃｄ／３とする。
【００６３】
図１１は第５優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。図１１（Ａ）はバッファ挿入前、図１１（Ｂ）はバッファ挿入後を示しており、６０〜６２はセル、６３は挿入したバッファ、Ａ、Ｂ、Ｂ１、Ｃ、Ｄ、Ｅ、Ｆはノード、Ｒab、Ｒbc、Ｒcd、Ｒde、Ｒdf、Ｒbf´は配線抵抗、Ｃa、Ｃb、Ｃb1、Ｃc、Ｃd、Ｃd´、Ｃe、Ｃfは各ノードの容量である。
【００６４】
本実施形態では、第５優先でバッファ挿入ポイントを決定した場合、分岐付け替えによる配線経路変更でのＲＣラダー分の配線遅延は、マンハッタン長ベースの遅延にするか、又は、ワイヤ・ロード（wire Load）モデルでの配線遅延を使用して計算する。
【００６５】
例えば、第５優先で、図１１（Ｂ）に示すようにノードＢをバッファ挿入ポイントに決定し、配線経路を変更した場合には、セル６０とバッファ６３との間のＲＣ形状は、バッファ挿入前のノードＡとノードＢとの間のＲＣ形状を反映させる。また、太線６４で示す配線形状を変えた部分については、配線長が短ければ、ＲＣラダーについては、ＲＣ＝０としても問題はないが、実際には長くなる場合もあるので、配線長（マンハッタン）に応じて、マージンを加えるか、または、ワイヤ・ロードモデルを使用する。
【００６６】
また、バッファ６３とセル６１との間のＲＣ形状は、バッファ挿入前のノードＢとノードＥとの間のＲＣ形状を反映させる。但し、新たに出来るノードＢ１の容量Ｃb1は０とする。また、配線を付け替えたセルへの配線接続が削除されるノードにおいては、元の配線の分岐までを削除して、当該ノードの容量値Ｃ´をＣ´＝Ｃ−Ｃ／ｎで計算する。但し、Ｃは元々の容量値、ｎはノード分岐数である。したがって、図１１のレイアウト例では、バッファ挿入後のノードＤの容量Ｃｄ´は、Ｃｄ´＝Ｃｄ−Ｃｄ／３とする。
【００６７】
図１２は本発明の半導体集積回路のレイアウト設計方法の一実施形態を実施するためのコンピュータを示す図である。図１２中、６６はＣＰＵ（central processing unit）、６７はＣＰＵ６６が演算に使用するメモリ、６８は入力装置、６９は表示装置、７０はネットワーク接続装置、７１は外部記憶装置である。
【００６８】
外部記憶装置７１において、７２は本発明の半導体集積回路のレイアウト設計用プログラムが格納されるプログラム格納領域、７３は本発明の半導体集積回路のレイアウト設計方法の一実施形態で作成される各種の情報が格納される情報格納領域である。
【００６９】
プログラム格納領域７２には、初期配置・配線プログラム７４、ＲＣ抽出・遅延計算・ＳＴＡプログラム７５、ホールド・エラー有無判定プログラム７６、ペナルティ情報作成プログラム７７、バッファ挿入ポイント探索・決定・遅延調整プログラム７８、配線経路情報作成プログラム７９、移動セル配置情報作成プログラム８０、挿入バッファ配置情報作成プログラム８１、ＥＣＯリスト作成プログラム８２、ネットリスト・配置・配線修正プログラム８３等が格納される。
【００７０】
また、情報格納領域７３には、ネットリスト２１、レイアウト情報２２、ＲＣ情報２３、ホールド・エラー・パス／スラック情報２４、遅延ライブラリ２５、配線経路情報２６、移動セル配置情報２７、挿入バッファ配置情報２８およびＥＣＯリスト２９等が格納される。
【００７１】
初期配置・配線プログラム７４は、ＣＰＵ６６を初期配置・配線手段として機能させ、ＣＰＵ６６に初期配置・配線工程（ステップＳ１）を実行させるものである。ＲＣ抽出・遅延計算・静的タイミング解析プログラム７５は、ＣＰＵ６６をＲＣ抽出・遅延計算・静的タイミング解析手段として機能させ、ＣＰＵ６６にＲＣ抽出・遅延計算・静的タイミング解析（ステップＳ２）を実行させるものである。
【００７２】
ホールド・エラー有無判定プログラム７６は、ＣＰＵ６６をホールド・エラー有無判定手段として機能させ、ＣＰＵ６６にホールド・エラー判定工程（ステップＳ３）を実行させるものである。ペナルティ情報作成プログラム７７は、ＣＰＵ６６をペナルティ情報作成手段として機能させ、ＣＰＵ６６にペナルティ情報作成工程（ステップＳ４）を実行させるものである。
【００７３】
バッファ挿入ポイント探索・決定・遅延調整プログラム７８は、ＣＰＵ６６をバッファ挿入ポイント探索・決定・遅延調整手段として機能させ、ＣＰＵ６６にバッファ挿入ポイント探索・決定・遅延調整工程（ステップＳ５）を実行させるものである。配線経路情報作成プログラム７９は、ＣＰＵ６６を配線経路情報作成手段として機能させ、ＣＰＵ６６に配線経路情報作成工程（ステップＳ６）を実行させるものである。
【００７４】
移動セル配置情報作成プログラム８０は、ＣＰＵ６６を移動セル配置情報作成手段として機能させ、ＣＰＵ６６に移動セル配置情報作成工程（ステップＳ７）を実行させるものである。挿入バッファ配置情報作成プログラム８１は、ＣＰＵ６６を挿入バッファ配置情報作成手段として機能させ、ＣＰＵ６６に挿入バッファ配置情報作成工程（ステップＳ８）を実行させるものである。
【００７５】
ＥＣＯリスト作成プログラム８２は、ＣＰＵ６６をＥＣＯリスト作成手段として機能させ、ＣＰＵ６６にＥＣＯリスト作成工程（ステップＳ９）を実行させるものである。ネットリスト・配置・配線修正プログラム８３は、ＣＰＵ６６をネットリスト・配置・配線修正手段として機能させ、ＣＰＵ６６にネットリスト・配置・配線修正工程（ステップＳ１０）を実行させるものである。
【００７６】
以上のように、本発明の半導体集積回路のレイアウト設計方法の一実施形態によれば、初期配置・配線の結果、ホールド・エラーが発生している場合、レイアウト情報２２およびホールド・エラー・パス／スラック情報２４に基づいて、ホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成し、このペナルティ情報に基づいて、ホールド・エラーを解消するためのバッファの挿入ポイントの探索が行われる。
【００７７】
そして、ペナルティ情報は、ホールド・エラー・パスのエンド・ポイントからスタート・ポイントまでをインスタンスとノードに分解し、インスタンスについては、インスタンス名に配置座標とホールド・スラックとセットアップ・スラックの情報を付加し、ノードについては、ノード名にノード位置、配線層、挿入面積、別配線経路の他のセル名、その移動可能範囲、分岐数、分岐先のワースト・ホールド・スラック、分岐先のワースト・セットアップ・スラックの各情報を付加したものとしている。
【００７８】
この結果、ホールド・エラー・パス上にホールド・エラー解消のためのバッファの配置スペースがない場合や、ホールド・エラー・パス上にホールド・エラー解消のためのバッファ配置スペースはあるが、セットアップ・エラーを招いてしまう場合には、別配線経路の他のセルの移動や配線の二重化や配線経路の変更を検討することが可能となり、新たにホールド・エラーやセットアップ・エラーを発生させないバッファ挿入ポイントを探索することが可能となる。したがって、ＥＣＯレイアウトの繰り返しを回避することができ、半導体集積回路のレイアウト設計を効率的に行うことができる。
【図面の簡単な説明】
【００７９】
【図１】本発明の半導体集積回路のレイアウト設計方法の一実施形態を示すフローチャートである。
【図２】初期配置・配線された半導体集積回路の一例の一部分のレイアウト例を示す図である。
【図３】本発明の半導体集積回路のレイアウト設計方法の一実施形態で作成するペナルティ情報の記述例を示す図である。
【図４】本発明の半導体集積回路のレイアウト設計方法の一実施形態で実行するバッファの挿入ポイントの決定工程で使用されるバッファ挿入ポイントの優先順位（第１優先）を説明するための図である。
【図５】本発明の半導体集積回路のレイアウト設計方法の一実施形態で実行するバッファの挿入ポイントの決定工程で使用されるバッファ挿入ポイントの優先順位（第２優先）を説明するための図である。
【図６】本発明の半導体集積回路のレイアウト設計方法の一実施形態で実行するバッファの挿入ポイントの決定工程で使用されるバッファ挿入ポイントの優先順位（第３優先）を説明するための図である。
【図７】本発明の半導体集積回路のレイアウト設計方法の一実施形態で実行するバッファの挿入ポイントの決定工程で使用されるバッファ挿入ポイントの優先順位（第４優先）を説明するための図である。
【図８】本発明の半導体集積回路のレイアウト設計方法の一実施形態で実行するバッファの挿入ポイントの決定工程で使用されるバッファ挿入ポイントの優先順位（第５優先）を説明するための図である。
【図９】本発明の半導体集積回路のレイアウト設計方法の一実施形態において、第１優先、第２優先又は第３優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。
【図１０】本発明の半導体集積回路のレイアウト設計方法の一実施形態において、第４優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。
【図１１】本発明の半導体集積回路のレイアウト設計方法の一実施形態において、第５優先でバッファ挿入ポイントを決定した場合のバッファ挿入後の遅延計算を説明するための図である。
【図１２】本発明の半導体集積回路のレイアウト設計方法の一実施形態を実施するためのコンピュータを示す図である。
【図１３】従来の半導体集積回路のレイアウト設計方法の一例を示すフローチャートである。
【図１４】図１３に示す従来の半導体集積回路のレイアウト設計方法が有する問題点を具体的に説明するための図である。
【符号の説明】
【００８０】
１…ネットリスト
２…レイアウト情報
３…ＲＣ情報
４…ホールド・エラー・パス／スラック情報
５…遅延ライブラリ
６…ＥＣＯリスト
９、１０…配線
１１〜１３…フリップ・フロップ
１４…別配線経路のセル
１５、１６…バッファを挿入できない箇所
１７…バッファを挿入できる箇所
１８…バッファ
２１…ネットリスト
２２…レイアウト情報
２３…ＲＣ情報
２４…ホールド・エラー・パス／スラック情報
２５…遅延ライブラリ
２６…配線経路情報
２７…移動セル配置情報
２８…挿入バッファ配置情報
２９…ＥＣＯリスト
３１〜３３…配線
３４、３５…フリップ・フロップ
３６…セル
３７〜４３…別配線経路のセル
４７…別配線経路のセルを移動させることができる箇所
４８…配線
５０、５１…セル
５２…バッファ
５４〜５６…セル
５７…バッファ
６０〜６２…セル
６３…バッファ
【図１】
2008217642.tif 000003
【図２】
2008217642.tif 000004
【図３】
2008217642.tif 000005
【図４】
2008217642.tif 000006
【図５】
2008217642.tif 000007
【図６】
2008217642.tif 000008
【図７】
2008217642.tif 000009
【図８】
2008217642.tif 000010
【図９】
2008217642.tif 000011
【図１０】
2008217642.tif 000012
【図１１】
2008217642.tif 000013
【図１２】
2008217642.tif 000014
【図１３】
2008217642.tif 000015
【図１４】
2008217642.tif 000016