(57)【要約】【課題】高駆動素子が含まれている論理素子経路に遅延素子を挿入してホールドタイム違反を解消する際に、セットアップタイム違反が新たに発生することを防止する。【解決手段】レイアウト設計方法が、第１フリップフロップ１０１と、第２フリップフロップ１０２と、第１フリップフロップ１０１の出力と第２フリップフロップ１０２の入力の間の論理回路とを含む集積回路について配置及び配線を行うステップと、ホールドタイム違反を検出するステップと、遅延素子３０２をホールドタイム違反を解消するように挿入するステップとを備えている。遅延素子３０２を挿入するステップでは、第１フリップフロップ１０１と第２フリップフロップ１０２間の論理素子経路に高駆動素子１０５が配置されているかが確認され、高駆動素子１０５が配置されている場合、高駆動素子１０５の出力に直接に接続されないように遅延素子３０２が配置される。【選択図】図６Ｂ
2012137890.tif 000002
【特許請求の範囲】
【請求項１】
配置・配線手段と、ホールドタイム違反検出手段と、遅延素子挿入手段とを備えるレイアウト設計装置によって行われるレイアウト設計方法であって、
前記配置・配線手段が、第１フリップフロップと、第２フリップフロップと、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行うステップと、
前記ホールドタイム違反検出手段が、前記集積回路のホールドタイム違反を検出するステップと、
前記遅延素子挿入手段が、前記第２フリップフロップについてホールドタイム違反を検出した場合に、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を前記第２フリップフロップのホールドタイム違反を解消するように挿入するステップ
とを備え、
前記遅延素子を挿入するステップでは、前記第１フリップフロップと前記第２フリップフロップ間の論理素子経路に前記標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかが確認され、前記高駆動素子が配置されている場合、前記高駆動素子の出力に直接に接続されないように前記遅延素子が配置される
集積回路のレイアウト設計方法。
【請求項２】
請求項１に記載の集積回路のレイアウト設計方法であって、
前記遅延素子を挿入するステップでは、前記高駆動素子が配置されている場合に前記高駆動素子の出力に直接に接続される配線が配置禁止配線と定められ、前記遅延素子が前記高駆動素子と前記第２フリップフロップとの間の前記配置禁止配線以外の配線に設けられる
集積回路のレイアウト方法。
【請求項３】
請求項２に記載の集積回路のレイアウト方法であって、
前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されている場合、前記第２フリップフロップの入力に近接してダミー素子が配置され、前記遅延素子が、前記ダミー素子と前記第２フリップフロップの入力の間の配線に配置される
集積回路のレイアウト方法。
【請求項４】
請求項１に記載の集積回路のレイアウト方法であって、
前記遅延素子を挿入するステップでは、前記高駆動素子が配置され、且つ、前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されていない場合、前記第２フリップフロップと、その入力に最近接する素子の間に前記遅延素子が配置され、
前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されている場合、前記第２フリップフロップの入力に近接してダミー素子が配置され、前記遅延素子が、前記ダミー素子と前記第２フリップフロップの入力の間の配線に配置される
集積回路のレイアウト方法。
【請求項５】
第１フリップフロップと、第２フリップフロップと、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行う配置・配線手段と、
前記集積回路のホールドタイム違反を検出するホールドタイム違反検出手段と、
前記第２フリップフロップについてホールドタイム違反が発生する場合、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を、前記第２フリップフロップのホールドタイム違反を解消するように挿入する遅延素子挿入手段
とを備え、
前記遅延素子挿入手段は、前記第１フリップフロップと前記第２フリップフロップ間の論理素子経路に前記標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかを確認し、前記高駆動素子が配置されている場合、前記高駆動素子の出力に直接に接続されないように前記遅延素子を配置する
集積回路のレイアウト設計装置。
【請求項６】
請求項５に記載の集積回路のレイアウト設計装置であって、
前記遅延素子挿入手段は、前記高駆動素子が配置されている場合に前記高駆動素子の出力に直接に接続される配線を配置禁止配線と定め、前記遅延素子を前記高駆動素子と前記第２フリップフロップとの間の前記配置禁止配線以外の配線に設ける
集積回路のレイアウト設計装置。
【請求項７】
請求項６に記載の集積回路のレイアウト設計装置であって、
前記遅延素子挿入手段は、前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されている場合、前記第２フリップフロップの入力に近接してダミー素子を配置し、前記遅延素子を前記ダミー素子と前記第２フリップフロップの入力の間の配線に配置する
集積回路のレイアウト設計装置。
【請求項８】
請求項５に記載の集積回路のレイアウト設計装置であって、
前記高駆動素子が配置され、且つ、前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されていない場合、前記遅延素子挿入手段は、前記第２フリップフロップと、その入力に最近接する素子の間に前記遅延素子を配置し、
前記高駆動素子の出力が前記第２フリップフロップの入力に直接に接続されている場合、前記遅延素子挿入手段は、前記第２フリップフロップの入力に近接してダミー素子を配置し、前記遅延素子を前記ダミー素子と前記第２フリップフロップの入力の間の配線に配置する
集積回路のレイアウト設計装置。
【請求項９】
コンピュータを、
第１フリップフロップと、第２フリップフロップと、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行う配置・配線手段と、
前記集積回路のホールドタイム違反を検出するホールドタイム違反検出手段と、
前記第２フリップフロップについてホールドタイム違反が発生する場合、前記第１フリップフロップの出力と前記第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を、前記第２フリップフロップのホールドタイム違反を解消するように挿入する遅延素子挿入手段
として機能させるプログラムであって、
前記遅延素子挿入手段が、前記第１フリップフロップと前記第２フリップフロップ間の論理素子経路に前記標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかを確認し、前記高駆動素子が配置されている場合、前記高駆動素子の出力に直接に接続されないように前記遅延素子を配置する
レイアウト設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のレイアウト設計方法、レイアウト設計装置、及び設計プログラムに関し、特に、レイアウト設計においてフリップフロップのホールドタイム違反を解消するための技術に関する。
【背景技術】
【０００２】
大容量メモリ製品のチップレイアウト設計の分野において、大規模設計、短ＴＡＴ設計、および高品質設計を実現するに当たり、ロジック製品のチップ自動レイアウト設計と同じようにマニュアル設計から自動設計への要求（必要性）が高まってきている。
【０００３】
集積回路の自動設計を実現する上で重要な技術の一つは、フリップフロップのセットアップタイム違反及びホールドタイム違反を設計段階で検出し、必要な場合にレイアウト変更によって違反を解消する技術である。このような技術は、例えば、特開２００６−３１０４６９号公報（特許文献１）に開示されている。
【０００４】
図１は、この公報に開示されているレイアウト設計方法を示すフローチャートである。図１のレイアウト設計方法では、フリップフロップ及び論理素子の配置（ステップＳ０１）及び配線（ステップＳ０２）の後、論理素子を介して互いに接続されたフリップフロップ間の信号伝播遅延時間が算出される（ステップＳ０３）。更に、信号伝播遅延時間がフリップフロップのセットアップ時間を満たすか否かが判定され（ステップＳ０４）、当該セットアップ時間を満たす場合には、セットアップマージンが算出される（ステップＳ０５）。続いて、算出されたセットアップマージンが予め設定された値以上か否かが判定され（ステップＳ０６）、該予め設定された値以上の場合には、関連するフリップフロップがセットアップマージンが、該予め設定された値になるような位置に移動される（ステップＳ０７）。その後、ホールドタイム違反がある場合には（ステップＳ０８）、遅延素子が追加され（ステップＳ０９）、当該遅延素子について配線が行われる（ステップＳ１０）。
【０００５】
図２は、該従来技術における論理モジュールの修正前のレイアウトの例を示す図であり、図３は、論理モジュールの修正後のレイアウトの例を示す図である。図２、図３において、符号１５、１６、１７は素子配置領域を示しており、ＶＤＤ１、ＶＤＤ２は電源ラインを示しており、ＧＮＤ１、ＧＮＤ２は接地ラインを示している。
【０００６】
図２を参照して、修正前のレイアウト（配置（ステップＳ０１）及び配線（ステップＳ０２）の直後のレイアウト）では、論理モジュール１０が第１フリップフロップ１１、論理素子１２、１３、第２フリップフロップ１４を備えており、これらの素子が配線１７、１８、１９によって接続されている。一方、図３に示されているように、修正後のレイアウト（ステップＳ０７の後のレイアウト）では、第１フリップフロップ１１がセットアップマージンが予め設定された値になるような位置に移動される。移動後の第１フリップフロップは、符号２９で図示されている。更に、第１フリップフロップ２９と論理素子１２が配線２８によって接続される。修正後の論理モジュールは、符号３０で図示されている。
【０００７】
この技術では、フリップフロップが最初のフロアプランで定めた所定の位置からセットアップマージンが予め定めた値になる位置に移動されるので、配線経路の途中に遅延素子を挿入してホールドタイム違反を解消する作業が最小限に抑制される。これにより、当該技術は、半導体集積回路装置のレイアウト設計時間を短縮することができる。タイミング違反の解消のための技術は、他にも、例えば特開２０００−１８８３３４号公報（特許文献２）、特開２００２−３１３９２０号公報（特許文献３）、及び、特開２００８−３０５１３２号公報（特許文献４）に開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３１０４６９号公報
【特許文献２】特開２０００−１８８３３４号公報
【特許文献３】特開２００２−３１３９２０号公報
【特許文献４】特開２００８−３０５１３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特開２００６−３１０４６９号公報に開示されている技術では、長距離配線とその長距離配線を駆動する高駆動素子とを含む集積回路（例えばメモリ製品）においては、ホールドタイム違反の解消のために遅延素子を挿入すると、セットアップタイム違反が新たに発生する可能性がある。一般的なロジック製品におけるバッファとしては、標準で用意されている標準の駆動能力を有する標準素子（ここでいう標準素子とは、対象のプロセスで最も多く使用されるバッファサイズ群で構成される素子）が多用される。一方、大容量メモリ製品は、標準素子とは異なる高駆動能力を有する高駆動素子が使用される場合がある。これは、大容量メモリ製品では、メモリセルのロウ／カラムの数が増加するため、横長形状や十字形状といった特殊な形状となるからである。メモリ製品のメタル配線は、一般のロジック製品に比べて長距離配線となり、かつ、長距離配線を介して高速でデータ信号を伝播させる必要がある。長距離配線を駆動するバッファは、標準素子だけで高速化を実現することができず、標準素子とは異なる高駆動能力を有する高駆動素子が必要になる。例えば、一般的な標準素子のバッファに比べて、チャネル幅が数倍〜数十倍（例えば６４倍）のものが高駆動素子として使用される。このような高駆動素子をバッファとして用いた場合でも、半導体集積回路は、セットアップタイム違反及びホールドタイム違反が無いように設計される必要がある。
【００１０】
そして、従来技術においては、前段フリップフロップと後段フリップフロップの間に接続される長距離配線を高駆動素子で駆動する回路構成の場合、遅延素子の挿入によって後段フリップフロップのホールドタイムの仕様を満たすことはできても、セットアップタイム違反が新たに発生する可能性がある。それは、従来技術では、遅延素子が論理素子経路の適した位置に配置されるとは限らないからである。以下、この問題について詳細に議論する。
【００１１】
ホールドタイムの改善においては、挿入する遅延素子の数を減少させることが有用である。このため、遅延素子がフリップフロップ間の論理素子経路内に挿入される場合には、一般に、複数の論理素子経路の共有部分に共通の遅延量を与える遅延素子が挿入される。そして、当該共通の遅延量だけでは遅延量が足りない個々の論理素子経路内には、不足分の遅延素子を後段のフリップフロップと、後段フリップフロップの直前の素子間の位置へ挿入するのが一般的である。
【００１２】
しかしながら、発明者の検討によれば、このような手法は高駆動素子が用いられる場合には必ずしも適切ではなく、却って、セットアップタイムの仕様を満足できないことがある。図４Ａ、図４Ｂは、ホールドタイムの仕様を満たせない回路の２つの例を図示している。図４Ａに図示される回路では、第１フリップフロップ１０１と第３フリップフロップ１０３の出力が、論理素子１１１、１１２及び１１３を介して高駆動素子１０５の入力に接続される。高駆動素子１０５の出力は論理素子経路分岐点３１２に接続されており、その論理素子経路分岐点３１２が論理素子１１４を介して第２フリップフロップ１０２の入力に接続されると共に、論理素子１１５を介して第４フリップフロップ１０４の入力に接続される。即ち、高駆動素子１０５の出力と論理素子経路分岐点３１２との間の経路は、高駆動素子１０５と第２フリップフロップ１０２、第４フリップフロップ１０４との間の２つの論理素子経路に共有されている。高駆動素子１０５の出力に接続される配線は、相当な長さ（例えば、数百μｍ以上）を有しており、以下では、長距離配線２０６として参照される。一方、図４Ｂに図示される回路では、論理素子１１５が配置されず、高駆動素子１０５と第４フリップフロップ１０４とが直接に接続されている。即ち、論理素子経路分岐点３１２と第４フリップフロップ１０４とが直接に接続されている。
【００１３】
図４Ａ、図４Ｂにおいて高駆動素子１０５と第２フリップフロップ１０２及び第４フリップフロップ１０４との間の論理素子経路に遅延素子を配置する場合、遅延素子は、以下のような位置に置くことが考えられる。まず、共通の論理素子経路上の位置（即ち、図４Ａ、図４Ｂの高駆動素子１０５と論理素子経路分岐点３１２との間の位置）に遅延素子を配置することが考えられる。この位置に配置された遅延素子は、図４Ａ、図４Ｂでは、符号３０１で示されている。加えて、共通の論理素子経路に設けられた遅延素子３０１だけでは遅延時間が不足する場合、第２フリップフロップ１０２及び第４フリップフロップ１０４と、その入力に接続される素子の間の位置に遅延素子を置くことが考えられる。（図４Ａ、図４Ｂの遅延素子３０２）。
【００１４】
図４Ａ、図４Ｂの回路構成では、遅延素子３０１が論理素子経路分岐点３１２と高駆動素子１０５の間に配置される。遅延素子３０１により、高駆動素子１０５の出力と論理素子経路分岐点３１２の間の論理素子経路と、高駆動素子１０５と第２フリップフロップ１０２の間の論理素子経路に共通の遅延時間が与えられる。更に、高駆動素子１０５と第２フリップフロップ１０２の間の論理素子経路については遅延素子３０１の遅延時間だけでは不足する遅延時間を補うために、第２フリップフロップ１０２と論理素子１１４の間に遅延素子３０２が配置される。なお、図４Ｂに示されているように、高駆動素子１０５の出力と第４フリップフロップ１０４の入力とが直接接続されている場合には、遅延素子３０１が高駆動素子１０５と第４フリップフロップ１０４との間の配線経路上のどこに配置されるかは確定しない。遅延素子３０１が高駆動素子１０５の直後に配置される場合もある。
【００１５】
しかしながら、図４Ａ、図４Ｂに図示されているように高駆動素子１０５の出力に隣接して遅延素子３０１が配置されると、長距離配線２０６が遅延素子３０１の出力に接続されることになるため、標準素子を使用したバッファで構成される遅延素子３０１では長距離配線２０６を高速で伝播できなくなる。これは、信号遅延を招き、第２フリップフロップ１０２及び／又は第４フリップフロップ１０４のセットアップタイム違反を生じさせる可能性がある。
【課題を解決するための手段】
【００１６】
本発明の一の観点では、配置・配線手段と、ホールドタイム違反検出手段と、遅延素子挿入手段とを備えるレイアウト設計装置によって行われるレイアウト設計方法が提供される。当該レイアウト設計方法では、該配置・配線手段が、第１フリップフロップと、第２フリップフロップと、第１フリップフロップの出力と第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行うステップと、該ホールドタイム違反検出手段が、集積回路のホールドタイム違反を検出するステップと、該遅延素子挿入手段が、第２フリップフロップについてホールドタイム違反が発生する場合に、第１フリップフロップの出力と第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を第２フリップフロップのホールドタイム違反を解消するように挿入するステップとを備えている。遅延素子を挿入するステップでは、第１フリップフロップと第２フリップフロップ間の論理素子経路に標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかが確認され、高駆動素子が配置されている場合、高駆動素子の出力に直接に接続されないように遅延素子が配置される。
【００１７】
本発明の他の観点では、集積回路のレイアウト設計装置が、第１フリップフロップと、第２フリップフロップと、第１フリップフロップの出力と第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行う配置・配線手段と、集積回路のホールドタイム違反を検出するホールドタイム違反検出手段と、第２フリップフロップについてホールドタイム違反が発生する場合、第１フリップフロップの出力と第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を、第２フリップフロップのホールドタイム違反を解消するように挿入する遅延素子挿入手段とを備えている。遅延素子挿入手段は、第１フリップフロップと第２フリップフロップ間の論理素子経路に標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかを確認し、高駆動素子が配置されている場合、高駆動素子の出力に直接に接続されないように遅延素子を配置する。
【００１８】
本発明の他の観点では、プログラムが、コンピュータを、第１フリップフロップと、第２フリップフロップと、第１フリップフロップの出力と第２フリップフロップの入力の間に接続された論理回路とを含む集積回路について配置及び配線を行う配置・配線手段と、集積回路のホールドタイム違反を検出するホールドタイム違反検出手段と、第２フリップフロップについてホールドタイム違反が発生する場合、第１フリップフロップの出力と第２フリップフロップの入力の間に、標準駆動能力を有する標準素子で構成された遅延素子を、第２フリップフロップのホールドタイム違反を解消するように挿入する遅延素子挿入手段として機能させる。ここで、遅延素子挿入手段は、第１フリップフロップと第２フリップフロップ間の論理素子経路に標準駆動能力よりも高く規定された特定駆動能力以上の駆動能力を有する高駆動素子が配置されているかを確認し、高駆動素子が配置されている場合、高駆動素子の出力に直接に接続されないように遅延素子を配置するものである。
【発明の効果】
【００１９】
本発明によれば、高駆動素子が含まれている論理素子経路に遅延素子を挿入することによってホールドタイム違反を解消する際に、セットアップタイム違反が新たに発生することを防止することができる。
【図面の簡単な説明】
【００２０】
【図１】従来のレイアウト設計方法を示すフローチャートである。
【図２】従来のレイアウト設計方法におけるフリップフロップの移動前のレイアウトを示すレイアウト図である。
【図３】従来のレイアウト設計方法におけるフリップフロップの移動後のレイアウトを示すレイアウト図である。
【図４Ａ】高駆動素子を含む論理素子経路に不適切に遅延素子が挿入された集積回路の回路構成の一例を示す回路図である。
【図４Ｂ】高駆動素子を含む論理素子経路に不適切に遅延素子が挿入された集積回路の回路構成の他の例を示す回路図である。
【図５】本発明の一実施形態における設計システムの構成を示すブロック図である。
【図６Ａ】本発明の第１の実施形態における設計手順を示すフローチャートである。
【図６Ｂ】第１の実施形態における設計手順を示すフローチャートである。
【図７Ａ】第１の実施形態における遅延素子の挿入前の集積回路の回路構成の一例を示す回路図である。
【図７Ｂ】第１の実施形態における、遅延素子の挿入前の集積回路の回路構成の他の例を示す回路図である。
【図８Ａ】第１の実施形態において、図７Ａの集積回路に遅延素子を挿入した後の回路構成を示す回路図である。
【図８Ｂ】第１の実施形態において、図７Ｂの集積回路に遅延素子を挿入した後の回路構成を示す回路図である。
【図９Ａ】本発明の第２の実施形態における設計手順を示すフローチャートである。
【図９Ｂ】第２の実施形態における設計手順を示すフローチャートである。
【発明を実施するための形態】
【００２１】
図５は、本発明の実施をするための設計システムの構成の一例を示すブロック図であり、当該設計システムは、コンピュータ装置５０は、例えば、レイアウト設計を行うエンジニアによって操作されるエンジニアリングワークステーションであり、ネットワーク５３（例えば、インターネット）を介してサーバ５１に接続されている。サーバ５１は、レイアウト設計の際に使用される実行プログラムを格納する記憶媒体５２を備えている。記憶媒体５２に格納されている実行プログラムは、ネットワーク５３を介してコンピュータ装置５０にダウンロードされる。ダウンロードされた実行プログラムは、コンピュータ装置５０のローカルなハードディスク又はメモリなどにストアされて実行される。
【００２２】
図６Ａ、図６Ｂは、本発明の第１の実施形態における設計手順を示すフローチャートである。記憶媒体５２に格納されている実行プログラムは、図６Ａ、図６Ｂに図示された処理を行うようにプログラムされており、下記の各々の処理がコンピュータ装置５０で行われる。
【００２３】
図６Ａを参照して、本実施形態の集積回路の設計手順では、まず、素子配置情報（例えば、フロアプランデータ）に従って素子の配置が行われ（ステップＳ７１）、更に、配線経路情報（例えば、ネットリスト）に従って素子間の配線が行われる（ステップＳ７２）。ここでいう「素子」とは、フリップフロップと、組み合わせ回路として構成された論理素子とを含んでいる。本実施形態では、配置される論理素子に「高駆動素子」が含まれている。ここでいう高駆動素子とは、設計ライブラリに標準で用意されている標準素子（即ち、対象のプロセスで最も多く使用されるサイズの素子）の駆動能力（以下、「標準駆動能力」という。）よりも大きいように規定された特定駆動能力以上の駆動能力を有する素子である。一実施形態では、高駆動素子は、標準素子に比べて数倍〜数十倍（例えば６４倍）のチャネル幅を有している。高駆動素子は、チャネル幅が（標準素子のチャネル幅より広い）所定値以上である素子として定義してもよい。
【００２４】
図７Ａ、図７Ｂは、ステップＳ７１、７２における配置／配線直後の集積回路の回路構成の例を模式的に示す回路図である。図７Ａの集積回路は、第１フリップフロップ１０１乃至第４フリップフロップ１０１〜１０４と、高駆動素子１０５と、論理素子１１１〜１１５とを備えている。第１フリップフロップ１０１の出力が論理素子１１１の入力に接続され、第２フリップフロップ１０２の出力が論理素子１１２の入力に接続され、論理素子１１１、１１２の出力が論理素子１１３の入力に接続される。論理素子１１３の出力は高駆動素子１０５の入力に接続されている。高駆動素子１０５の出力には、論理素子経路分岐点３１２において分岐する長距離配線２０６が接続されている。長距離配線２０６の配線長は、例えば、いずれの枝配線に沿って算出した場合でも２〜３ｍｍ又はそれ以上である。長距離配線２０６の一方の枝配線は、論理素子１１４に接続されており、他方の枝配線は論理素子１１５に接続されている。論理素子１１４の出力は第２フリップフロップ１０２の入力に接続され、論理素子１１５の出力は第４フリップフロップ１０４に接続されている。
【００２５】
図７Ｂの集積回路の構成は、図７Ａの集積回路の構成とほぼ同じであるが、高駆動素子１０５の出力が直接に第４フリップフロップ１０４の入力に接続されている点で相違している。即ち、長距離配線２０６の一方の枝配線が直接に第４フリップフロップ１０４に接続されている。以下では、配置・配線の直後のレイアウトが図７Ａ、図７Ｂに図示されているようになっている集積回路について説明を行う。ただし、これは、本発明のレイアウト設計方法が図７Ａ、図７Ｂに図示されている集積回路にしか適用できないことを意味するものではない。
【００２６】
続いて、フリップフロップ間の各論理素子経路における信号伝播遅延時間が算出される（ステップＳ７３）。本実施形態では、第１フリップフロップ１０１及び第３フリップフロップ１０３から、第２フリップフロップ１０２及び第４フリップフロップ１０４までの信号伝播遅延時間が算出される。
【００２７】
更に、タイミング制約情報を用いて各論理素子経路の信号伝播遅延時間から各フリップフロップにセットアップタイム違反が発生しているか（即ち、セットアップタイムが所定の仕様を満たすか）否かが判定される（ステップＳ７４）。図７Ａ、図７Ｂの例では、第２フリップフロップ１０２及び第４フリップフロップ１０４についてセットアップタイム違反の検出が行われる。
【００２８】
セットアップタイム違反が検出された場合には、素子の配置や配線長などを考慮して素子配置情報に記述されたフロアプランが修正され、配置（ステップＳ７１）、配線（ステップＳ７２）のやり直しが行われる。
【００２９】
一方、ステップＳ７４においてセットアップタイム違反が検出されなかった場合、各論理素子経路の信号伝播遅延時間から、各フリップフロップにホールドタイム違反が発生しているか（即ち、ホールドタイムが所定の仕様を満たすか）否かが判定される（ステップＳ７５）。ホールドタイム違反が発生していない場合は、集積回路のレイアウト設計が完了する。上述の設計手順で得られたレイアウト設計データは、コンピュータ装置５０の記憶装置（図示されない）に格納される。
【００３０】
以下では、ステップＳ７４において図７Ａ、図７Ｂの第２フリップフロップ１０２及び第４フリップフロップ１０４の両方にホールドタイム違反が発生したと判断されているとして説明を行う。また、ホールドタイム違反が発生しているフリップフロップを「ホールドタイム違反フリップフロップ」と記載することにする。
【００３１】
ステップＳ７５においてホールドタイム違反が検出された場合、ホールドタイム違反フリップフロップのセットアップタイムのマージン時間がタイミング制約情報を用いて算出され、算出されたマージン時間に相当する遅延時間を持つ遅延素子が決定される（ステップＳ７７）。本実施形態では、第２フリップフロップ１０２及び第４フリップフロップ１０４のセットアップタイムのマージン時間が算出され、そのマージン時間に相当する遅延時間を持つ遅延素子が決定される。本実施形態では、遅延素子は、標準の駆動能力を有する標準素子で構成される。大きな遅延時間が必要な場合には、複数の標準素子を直列に接続した遅延素子が用いられる。
【００３２】
続いて、図６Ｂに図示されているように、ホールドタイム違反フリップフロップの入力に接続された論理素子経路に高駆動素子が存在するか否かが判断される（ステップＳ７８）。一実施形態では、ホールドタイム違反フリップフロップの入力に接続されている論理素子経路についてバックトレースが行われ、当該論理素子経路における高駆動素子の有無が判断される。例えば、本実施形態では、ホールドタイム違反が発生した第２フリップフロップ１０２及び第４フリップフロップ１０４の入力に接続されている論理素子経路について高駆動素子の検出が行われ、その結果、長距離配線２０６を駆動する高駆動素子１０５が検出される。その代わりに、高駆動素子１０５の出力に接続されている論理素子経路についてフォワードトレースが行われ、該論理素子経路に接続されたフリップフロップ（本実施形態では、第２フリップフロップ１０２及び第４フリップフロップ１０４）にホールドタイム違反が発生しているかを判断してもよい。
【００３３】
高駆動素子が存在しないと判断された場合には、設計手順がステップＳ８２に進み、ステップＳ７７で選択されていた遅延素子が配置される（ステップＳ７２）。
【００３４】
一方、ステップＳ７８で高駆動素子が存在すると判断された場合、当該高駆動素子の出力がホールドタイム違反フリップフロップの入力に直接に接続されているか否かが判断される（ステップＳ７９）。本実施形態では、図７Ａの回路構成については高駆動素子１０５の出力が第２フリップフロップ１０２、第４フリップフロップ１０４の入力に直接に接続されていないと判断される。一方、図７Ｂの回路構成については高駆動素子１０５の出力が第４フリップフロップ１０４の入力に直接に接続されていると判断される。
【００３５】
高駆動素子の出力がホールドタイム違反フリップフロップの入力に直接に接続されていない場合には、高出力素子の出力が接続されている配線に遅延素子を直接に接続することを禁止する配置制限が行われる（ステップＳ８１）。即ち、高駆動素子の出力と当該高駆動素子と直接に接続されている論理素子との間の配線が配置禁止配線と設定される。更に、当該高駆動素子とホールドタイム違反が発生しているフリップフロップの間の配線のうち、配置禁止配線以外の配線に遅延素子が配置され（ステップＳ８２）、設計手順がステップＳ７２に戻る。
【００３６】
一方、高駆動素子の出力がホールドタイム違反フリップフロップの入力に直接に接続されている場合、ホールドタイム違反フリップフロップの入力に近接してダミー素子２０９が配置される（ステップＳ８０）。一実施形態では、ダミー素子２０９は、ダミー素子２０９の出力とホールドタイム違反フリップフロップの入力との間の配線長が所定値以下になるような位置に配置される。更に、高駆動素子の出力と当該高駆動素子と直接に接続されている論理素子との間の配線が配置禁止配線と設定される（ステップＳ８１）続いて、当該高駆動素子とホールドタイム違反が発生しているフリップフロップの間の配線のうち、配置禁止配線以外の配線に遅延素子が配置され（ステップＳ８２）、設計手順がステップＳ７２に戻る。
【００３７】
図８Ａは、図７Ａに図示された集積回路にホールドタイム違反を解消するための遅延素子３０２、３０３が挿入された集積回路の回路構成を示す回路図である。上述の設計手順では、高駆動素子１０５の出力に遅延素子３０２、３０３が直接に接続されることが禁止された上で遅延素子３０２、３０３の配置・配線が行われる。具体的には、高駆動素子１０５の出力に直接に接続された長距離配線２０６以外の配線に遅延素子３０２、３０３が接続されて、ホールドタイム違反が解消される。したがって、本実施形態の設計手順では、図４Ａ、図４Ｂに図示されているような、高駆動素子１０５の出力に近接して遅延素子３０１が接続されることによってセットアップタイム違反が発生する事態を有効に防ぐことができる。
【００３８】
一方、図８Ｂは、図７Ｂに図示された集積回路にホールドタイム違反を解消するための遅延素子３０２、３０３が挿入された集積回路の回路構成を示す回路図である。高駆動素子１０５の出力に直接に接続されていた第４フリップフロップ１０４の入力の近傍にダミー素子２０９が配置され、その後、高駆動素子１０５の出力に遅延素子３０２、３０３が直接に接続されることが禁止された上で遅延素子３０２、３０３の配置・配線が行われる。その結果、図８Ａと同様に、高駆動素子１０５の出力に直接に接続された長距離配線２０６以外の配線に遅延素子３０２、３０３が接続される。したがって、図８Ｂの場合についても同様に、図５Ａに図示されているような、高駆動素子１０５の出力に近接して遅延素子３０１が接続されることによってセットアップタイム違反が発生する事態を有効に防ぐことができる。
【００３９】
このように、本実施形態の設計手順によれば、高駆動素子１０５に直接に遅延素子を接続する配置制限を設定することで、遅延素子が高駆動素子１０５の直後に配置されず、それ以外の適切な場所へ配置される。これにより、論理素子経路内に高駆動素子１０５が配置された場合でも、セットアップタイムを改悪することなくセットアップタイムとホールドタイムの両方の仕様を満たすことができる。高駆動素子１０５がホールドタイム違反フリップフロップと直結している場合においても、ダミー素子２０９がホールドタイム違反フリップフロップに近接して配置され、且つ、高駆動素子１０５へ遅延素子を直結しない配置制限が設定される。これにより、遅延素子は高駆動素子１０５の直後には配置されず、それ以外の適切な場所へ配置される。したがって、セットアップを改悪することなく、セットアップタイムとホールドタイムの両方を満たすことができる。
【００４０】
図９Ａ、図９Ｂは、本発明の第２の実施形態における設計手順を示すフローチャートである。図９Ａ、図９Ｂに図示されている設計手順は、概ね、図６Ａ、図６Ｂに図示されている設計手順と同じであるが、ホールドタイム違反フリップフロップの入力に接続されている論理素子経路に高駆動素子が含まれている場合の処理が相違する。
【００４１】
図９Ｂを参照して、第２の実施形態でも、第１の実施形態と同様に、ホールドタイム違反フリップフロップの入力に接続されている論理素子経路に高駆動素子が含まれているかが判断される（ステップＳ７８）。更に、当該高駆動素子がホールドタイム違反フリップフロップの入力に直接に接続されているか否かが判断される（ステップＳ７９）。
【００４２】
高駆動素子がホールドタイム違反フリップフロップの入力に直接に接続されていない場合には、ホールドタイム違反フリップフロップと、その入力に最近接する素子の配線に遅延素子が設けられ（ステップＳ８２）、ホールドタイム違反が解消される。その後、設計手順がステップＳ７２に戻される。
【００４３】
一方、高駆動素子がホールドタイム違反フリップフロップの入力に直接に接続されている場合には、ダミー素子がホールドタイム違反フリップフロップに近接して配置され（ステップＳ８０）、更に、ホールドタイム違反フリップフロップと、その入力に最近接する素子の配線に遅延素子が設けられる（ステップＳ８３）。これにより、ホールドタイム違反が解消される。その後、設計手順がステップＳ７２に戻される。
【００４４】
例えば、図７Ａの回路構成では、高駆動素子１０５がホールドタイム違反フリップフロップである第２、第４フリップフロップ１０２、１０４の入力に直接に接続されていない。この場合、図８Ａに図示されているように、第２、第４フリップフロップ１０２、１０４と、それらの入力に最近接する素子（即ち、論理素子１１４、１１５）との間に遅延素子３０２、３０３が挿入されてホールドタイム違反が解消される。
【００４５】
一方、図７Ｂの回路構成では、第４フリップフロップ１０４の入力が高駆動素子１０５の出力に直接に接続されている。この場合、第４フリップフロップ１０４の入力に近接してダミー素子２０９が配置される。その後、図８Ａに図示されているように、第２、第４フリップフロップ１０２、１０４と、それらの入力に最近接する素子（即ち、論理素子１１４、ダミー素子２０９）との間に遅延素子３０２、３０３が挿入されてホールドタイム違反が解消される。
【００４６】
第２の実施形態では、高駆動素子１０５の出力に接続されている長距離配線２０６を配置禁止配線に設定するステップは存在しない。しかしながら、必要な場合にダミー素子を挿入した上で、ホールドタイム違反フリップフロップとそれに最近接する素子の間の配線に遅延素子が設けられることにより、やはり、高駆動素子１０５の出力に直接に遅延素子が接続されることが回避される。このように、第２の実施形態では、高駆動素子１０５に遅延素子を直結することを禁止する配置制限を設定しなくても第１の実施形態と同様の効果が得られる。
【符号の説明】
【００４７】
５０：コンピュータ装置
５１：サーバ
５２：記憶媒体
５３：ネットワーク
１０１：第１フリップフロップ
１０２：第２フリップフロップ
１０３：第３フリップフロップ
１０４：第４フリップフロップ
１０５：高駆動素子
２０６：長距離配線
３０１、３０２、３０３、３０４：遅延素子
２０９：ダミー素子
１１１、１１２、１１３、１１４、１１５、１２、１３：論理素子
３１２：論理素子経路分岐点
１０、３０：論理モジュール
１５、１６、２７：素子配置領域
１７、１８、１９、２８：配線
２９：（移動後の）第１フリップフロップ
【図１】
2012137890.tif 000003
【図２】
2012137890.tif 000004
【図３】
2012137890.tif 000005
【図４Ａ】
2012137890.tif 000006
【図４Ｂ】
2012137890.tif 000007
【図５】
2012137890.tif 000008
【図６Ａ】
2012137890.tif 000009
【図６Ｂ】
2012137890.tif 000010
【図７Ａ】
2012137890.tif 000011
【図７Ｂ】
2012137890.tif 000012
【図８Ａ】
2012137890.tif 000013
【図８Ｂ】
2012137890.tif 000014
【図９Ａ】
2012137890.tif 000015
【図９Ｂ】
2012137890.tif 000016