(57)【要約】【課題】  素子を新たに追加することなくホールドタイムのエラーを解消することで、レイアウト設計の効率を向上し、半導体集積回路のレイアウトサイズを削減する。【解決手段】  同期回路のホールドタイムの余裕度を算出し、ホールドタイムが不足している同期回路であるエラー素子、エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録し、ホールドタイムに余裕のある同期回路の入力に接続される第２信号経路から削除可能な素子をマージン素子としてマージンリストに登録し、不足時間を超える伝搬遅延時間を有するマージン素子をマージンリストから選択し、選択したマージン素子を、第２信号経路から切り離して第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する。【選択図】    図１
2013175029.tif 000002
【特許請求の範囲】
【請求項１】
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する算出部と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する第１処理部と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する第２処理部と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する再配置部と
を備えていることを特徴とする半導体集積回路のレイアウト設計装置。
【請求項２】
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
前記再配置部は、
前記第１信号経路に最も近い前記マージン素子を、前記第１信号経路上の第１素子と第２素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第２素子までの新たな配線の負荷および前記第２素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第１素子の出力駆動能力が、前記第１素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第１信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする請求項１に記載の半導体集積回路のレイアウト設計装置。
【請求項３】
前記再配置部は、
前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第１信号経路に接続すること
を特徴とする請求項１または請求項２に記載の半導体集積回路のレイアウト設計装置。
【請求項４】
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
を備えていることを特徴とする半導体集積回路のレイアウト設計方法。
【請求項５】
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
をコンピュータに実行させるための半導体集積回路のレイアウト設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のレイアウト設計装置、レイアウト設計方法およびレイアウト設計プログラムに関する。
【背景技術】
【０００２】
半導体集積回路が設計される場合、論理回路が設計された後、素子の配置情報や配線情報を含むレイアウトデータが作成される。さらに、レイアウトデータから素子および配線の情報が抽出され、抽出された情報を用いてタイミング検証が実施される。例えば、検証されるタイミングとして、セットアップタイムおよびホールドタイムがある。セットアップタイムは、クロック信号等のトリガ信号のエッジより前に入力信号の論理を確定すべき時間である。ホールドタイムは、トリガ信号のエッジより後に入力信号の論理を保持すべき時間である。レイアウト検証において、ホールドタイムが足りない信号経路が検出された場合、ホールドタイムを満足させるためにこの信号経路の伝搬遅延時間を増やす必要がある。
【０００３】
従来、ホールドタイムのエラーを解消するために、様々な手法が提案されている。例えば、回路の接続関係を示すネットリストを用いて、ホールドタイムが足りない可能性のある信号経路が検出され、この信号経路に配線セルが追加される。次に、配線セルを含んだネットリストを用いてレイアウトデータが作成され、レイアウトデータを用いてホールドタイムが足りない信号経路が検出される。そして、ホールドタイムが足りない信号経路上の配線セルが遅延素子を含む遅延セルに置き換えられ、ホールドタイムを満足するレイアウトデータが作成される。また、レイアウトデータを用いてホールドタイムが十分にある信号経路が検出されたときに、信号経路上の遅延セルが配線セルに置き換えられる（例えば、特許文献１参照。）。
【０００４】
ホールドタイムが足りない複数の信号経路を、所定の規則によりグループ化し、グループ毎に、信号経路の始点または終点のうちコストが最も小さい箇所に遅延バッファが挿入される（例えば、特許文献２参照。）。また、セットアップタイムの余裕を考慮しながら、セットアップタイムのエラーを新たに発生することのない信号経路に、ホールドタイムのエラーを解消するために遅延バッファが挿入される（例えば、特許文献３参照。）。さらに、２つのフリップフロップ間の信号経路の遅延時間から、これ等フリップフロップのクロックスキューを引いた実質的な遅延時間を求め、求めた遅延時間が許容される最小値より小さい場合に、遅延ゲートがフリップフロップ間に挿入される（例えば、特許文献４参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１１１６７２号公報
【特許文献２】特開２０１０−１６０５８０号公報
【特許文献３】特開２００３−１６２５５６号公報
【特許文献４】特開平９−２１８８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ホールドタイムが足りない信号経路に遅延セルを追加する場合、レイアウト面積の増加により半導体集積回路のチップサイズが増加する。また、遅延セルを追加し、あるいは配線セルを遅延セルに置き換える場合、セルの配置工程からやり直す必要があり、レイアウト設計効率が低下する。
【０００７】
本発明の目的は、素子を新たに追加することなく、ホールドタイムのエラーを解消することで、レイアウト設計の効率を向上し、半導体集積回路のレイアウトサイズを削減することである。
【課題を解決するための手段】
【０００８】
本発明の一形態では、同期回路を含む素子および配線の電気的特性データを用いて、同期回路のホールドタイムの余裕度を算出する処理と、ホールドタイムが不足している同期回路であるエラー素子、エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、ホールドタイムに余裕のある同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、不足時間を超える伝搬遅延時間を有するマージン素子をマージンリストから選択し、選択したマージン素子を、第２信号経路から切り離して第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理とが実施される。
【発明の効果】
【０００９】
素子を新たに追加することなく、ホールドタイムのエラーを解消できる。この結果、レイアウト設計の効率を向上でき、半導体集積回路のレイアウトサイズを削減できる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態におけるレイアウト設計装置の例を示している。
【図２】別の実施形態におけるレイアウト設計装置の例を示している。
【図３】図２に示したレイアウト設計装置により実施されるレイアウト設計方法の例を示している。
【図４】図３に示したレイアウト設計方法によりレイアウトされる回路の一部の例を示している。
【図５】図３に示した処理により生成されるレイアウト基本情報の例を示している。
【図６】図３に示したステップＳ３０によるタイミング解析の例を示している。
【図７】図６に示した処理により生成されるマージンリストおよびホールドエラーリストの例を示している。
【図８】図３に示したステップＳ４０による配線変更の例を示している。
【図９】図８に示したステップＳ４１０による配線切り換えの例を示している。
【図１０】図８に示したステップＳ４１０による配線切り換えの別の例を示している。
【図１１】図８に示したステップＳ５００による処理の例を示している。
【図１２】回路設計後のホールドタイム解析により検出されるホールドエラーの例を示している。
【図１３】図３に示したレイアウト設計手法によりホールドエラーが解消される例を示している。
【図１４】図３に示したレイアウト設計手法により、ホールドエラーを有する回路をホールドエラーのない回路に修正する例を示している。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、一実施形態における半導体集積回路のレイアウト設計装置の例を示している。レイアウト設計装置は、算出部１０、第１処理部２０、第２処理部３０および再配置部４０を有している。例えば、レイアウト設計装置は、ＡＳＩＣ（Application Specific Integrated Circuit）等の専用のロジック回路を用いて形成され、半導体集積回路のレイアウト設計方法を実施する。なお、レイアウト設計装置は、半導体集積回路のレイアウト設計プログラムを実行することにより半導体集積回路のレイアウト設計方法を実施するＣＰＵ等のコンピュータを用いて形成されてもよい。
【００１３】
算出部１０は、フリップフロップ等のホールドタイムの定義が必要な同期回路を含む素子と、素子間を接続する配線との電気的特性データを用いて、各同期回路のホールドタイムの余裕度ＨＬＤＭを算出する。例えば、余裕度ＨＬＤＭは、ホールドタイムに余裕があるときに正の値で示され、ホールドタイムが足りないとき負の値（不足時間ＥＲＲＴ）で示される。例えば、算出部１０は、回路をレイアウトするときの最小単位であるセルを１つの素子として扱う。
【００１４】
例えば、電気的特性データは、素子の伝搬遅延時間のデータ、素子の駆動能力のデータ、および配線の伝搬遅延時間のデータを含み、半導体集積回路の素子および配線の配置情報を含むレイアウトデータから予め抽出される。レイアウトデータは、論理設計された半導体集積回路内の素子の接続関係を示す回路接続データを用いて生成される。回路接続データは、ネットリストとも称される。なお、レイアウトデータが上述した電気的特性データを含むとき、算出部１０は、レイアウトデータから電気的特性データを直接読んでもよい。
【００１５】
第１処理部２０は、算出部１０により算出されたホールドタイムの余裕度ＨＬＤＭに基づいて、ホールドタイムが不足している同期回路を抽出する。第１処理部２０は、抽出した同期回路をエラー素子ＥＲＲＥとして、ホールドタイムの不足時間ＥＲＲＴとともにホールドエラーリストに登録する。以下、ホールドタイムが不足していることをホールドエラーとも称する。
【００１６】
また、第１処理部２０は、エラー素子ＥＲＲＥの入力に接続される第１信号経路上の素子ＥＬＭ１を抽出し、抽出した素子ＥＬＭ１をホールドエラーリストに登録する。例えば、第１信号経路は、エラー素子ＥＲＲＥの入力に接続される最初の同期回路からエラー素子ＥＲＲＥまでの信号経路であり、図４に示す回路ブロックＣＢ２０のノードＮ０２１、Ｎ０２２、Ｎ０２３、Ｎ０２４、Ｎ０２５を含む信号経路である。図４に示す例では、ホールドエラーリストに登録される素子ＥＬＭ１は、回路ブロックＣＢ２０のセルＣ０２１、Ｃ０２２、Ｃ０２３、Ｃ０２４、Ｃ０２５であり、ホールドエラーリストに登録されるエラー素子ＥＲＲＥは、セルＣ０２７である。あるいは、第１信号経路は、図１２に示すノードＮ４であり、素子ＥＬＭ１は図１２に示すフリップフロップＦＦ３であり、エラー素子ＥＲＲＥは図１２に示すフリップフロップＦＦ４である。
【００１７】
図１に示す第２処理部３０は、算出部１０により算出されたホールドタイムの余裕度ＨＬＤＭに基づいて、ホールドタイムに余裕のある同期回路を抽出する。第２処理部３０は、抽出した同期回路の入力に接続される第２信号経路上の素子を選択する。この際、後述する配線の付け替えによるホールドエラーの解消効率を向上するために、ホールドタイムに余裕のある全ての同期回路を抽出することが望ましい。
【００１８】
例えば、第２信号経路は、ホールドタイムに余裕のある同期回路の入力に接続される最初の同期回路からホールドタイムに余裕のある同期回路までの信号経路である。第２信号経路は、図４に示す回路ブロックＣＢ１０のノードＮ０１１、Ｎ０１２、Ｎ０１３、Ｎ０１４、Ｎ０１５、Ｎ０１６を含む信号経路である。あるいは、第２信号経路は、図１２に示すノードＮ１、Ｎ２、Ｎ３を含む信号経路である。
【００１９】
第２処理部３０は、抽出した同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子ＭＲＧＥとしてマージンリストに登録する。例えば、マージン素子ＭＲＧＥは、図４に示すセルＣ０１６であり、図１２に示すバッファＢＵＦ２である。
【００２０】
第２処理部３０は、例えば、次の３つの条件（ａ）、（ｂ）、（ｃ）を全て満足するときに、削除が可能なマージン素子ＭＲＧＥと判断する。
（ａ）素子が削除されたときに、第２信号経路内の各ノードの論理が変わらない。
（ｂ）素子が削除されたときに、第２信号経路の末端の同期回路（すなわち、エラー素子ＥＲＲＥ）において、セットアップタイムのエラー等のタイミングエラーが発生しない。
（ｃ）素子が削除されたときに、削除する素子の入力に接続された素子（入力側素子）が、削除する素子の出力に接続された素子（出力側素子）を正常に駆動できる。すなわち、入力側素子の駆動力の不足によるレイアウトエラーが発生しない。ここで、レイアウトエラーは、入力側素子が、入力側素子を出力側素子に接続する新たな配線の負荷と出力側素子の入力負荷とを駆動できないときに発生する。
【００２１】
再配置部４０は、エラー素子ＥＲＲＥ毎に、ホールドタイムの不足時間ＥＲＲＴを超える伝搬遅延時間を有するマージン素子ＭＲＧＥをマージンリストから選択する。例えば、再配置部４０は、エラー素子ＥＲＲＥ毎に、第１信号経路に最も近いマージン素子ＭＲＧＥを選択する。再配置部４０は、選択したマージン素子ＭＲＧＥを、第２信号経路から切り離して第１信号経路に接続するために、データ上で配線を再配置する。そして、再配置部４０は、再配置された配線を含む回路の接続関係を示す回路接続データを生成する。
【００２２】
これにより、新たな素子の挿入や素子の置換を行うことなく、配線の切り換えにより、ホールドエラーを解消できる。換言すれば、レイアウトされたセルの配置を換えることなく、ホールドエラーを解消できる。この後、例えば、生成された回路接続データを用いて、半導体集積回路のレイアウトデータが生成される。
【００２３】
なお、図１では、ホールドエラーリストおよびマージンリストは、レイアウト設計装置の外部に設けられているが、ホールドエラーリストおよびマージンリストの少なくともいずれかは、レイアウト設計装置内のレジスタや内部メモリ等の記憶部に設けられてもよい。
【００２４】
以上、この実施形態では、素子を新たに追加することなく、ホールドタイムのエラーを解消できる。この結果、レイアウト設計の効率を向上でき、半導体集積回路のレイアウトサイズを削減できる。
【００２５】
図２は、別の実施形態における半導体集積回路のレイアウト設計装置の例を示している。例えば、レイアウト設計装置は、ＣＡＤ（Computer Aided Design）システム等のコンピュータシステムにより実現される。レイアウト設計装置は、プロセッサＣＰＵ、メモリＲＯＭ、ＲＡＭ、ハードディスクドライブ装置ＨＤＤ、メディアドライブ装置ＭＤ、入出力インタフェースＩＩＦ、通信インタフェースＣＭＩＦ、出力インタフェースＯＩＦおよびグラフィック処理部ＧＲを有している。
【００２６】
プロセッサＣＰＵは、メモリＲＯＭまたはＲＡＭに格納されている半導体集積回路のレイアウト設計プログラムを実行することにより、半導体集積回路のレイアウト設計方法を実施し、半導体集積回路に形成される素子および配線の物理的な配置を示すレイアウトデータを生成する。生成されたレイアウトデータは、半導体集積回路を製造するために必要なフォトマスクを製作するために使用される。なお、図１に示した算出部１０、第１処理部２０、第２処理部３０および再配置部４０は、レイアウト設計プログラムを実行するＣＰＵにより実現されてもよい。
【００２７】
例えば、メモリＲＯＭはリードオンリーメモリであり、メモリＲＡＭはランダムアクセスメモリである。ハードディスクドライブ装置ＨＤＤは、レイアウト設計プログラム、半導体集積回路のネットリストおよび半導体集積回路のレイアウトデータ等を記憶する。メディアドライブ装置ＭＤは、光ディスク等の記録媒体ＳＭに格納されているレイアウト設計プログラムやネットリストを読み出し、あるいは、設計されたレイアウトデータを記録媒体ＳＭに格納するために使用される。なお、メディアドライブ装置ＭＤは、メモリカード等のシリコンディスクや磁気テープ等に接続されてもよい。
【００２８】
ＣＰＵがメモリＲＡＭに格納されたレイアウト設計プログラムを実行する場合、レイアウト設計プログラムは、ハードディスクドライブ装置ＨＤＤからメモリＲＡＭに転送され、あるいは、光ディスク等の記録メディアからメモリＲＡＭに転送される。メモリＲＡＭは、レイアウト設計方法の実施時に生成される中間データを記憶してもよい。
【００２９】
入力インタフェースＩＩＦは、キーボードやマウス等の入力装置に接続される。通信インタフェースＣＩＦは、ローカルエリアネットワーク等の通信回線に接続される。レイアウト設計プログラムおよびネットリストは、通信インタフェースＣＩＦを介してレイアウト設計装置の外部から供給されてもよい。レイアウト設計プログラムの実行により生成されたレイアウトデータは、通信インタフェースＣＩＦを介してレイアウト設計装置の外部に出力されてもよい。
【００３０】
出力インタフェースＯＩＦは、設計する半導体集積回路の論理図、ネットリスト、レイアウト図等を紙媒体に出力するプリンタ等の出力装置に接続される。グラフィック処理部ＧＲは、液晶モニタ等の表示装置に接続される。表示装置は、入力装置から入力された情報や、半導体集積回路の論理図やネットリストを表示し、レイアウト設計プログラムの実行により生成されたレイアウトデータを視覚的に示したレイアウト図等を表示する。あるいは、表示装置は、レイアウト設計プログラムの実行結果を表示する。
【００３１】
図２に示したレイアウト設計装置において、プロセッサＣＰＵがレイアウト設計プログラムを実行することにより、図３以降で説明する半導体集積回路のレイアウト設計方法が実施される。なお、レイアウト設計方法を実施するために必要なレイアウト設計装置の最小構成は、レイアウト設計プログラム、ネットリストおよびレイアウトデータが格納される記憶媒体、およびレイアウト設計プログラムを実行するプロセッサＣＰＵである。
【００３２】
図３は、図２に示したレイアウト設計装置により実施されるレイアウト設計方法の例を示している。図３に示すフローは、プロセッサＣＰＵがレイアウト設計プログラムを実行することにより実施される。図中に破線で示した矢印は、ファイルから読み出されるデータまたはファイルに書き込まれるデータの流れを示している。
【００３３】
先ず、ステップＳ１０において、プロセッサＣＰＵは、半導体集積回路の論理設計により得られた回路の接続データであるネットリストをハードディスクドライブ装置ＨＤＤ等から読み出す。プロセッサＣＰＵは、読み出したネットリストにより示される回路素子の接続順にしたがってセルを配置する位置を決め、セルの配置データを生成する。ここで、セルは、アンド回路、フリップフロップ回路、バッファ回路などの論理素子の基本部品であり、上述したように回路をレイアウトするときの最小単位である。ステップＳ１０では、レイアウト平面上での各セルの位置を示す座標が求められる。ここで、レイアウト平面は、レイアウト設計方法を実施するための仮想平面である。
【００３４】
ステップＳ１２において、プロセッサＣＰＵは、セルの配置データおよびネットリストを用いて、レイアウト平面上に配置されたセル間を接続する配線の位置を決め、配線の配置データを生成する。そして、プロセッサＣＰＵは、ステップＳ１０、Ｓ１２の実行により得られるセルおよび配線の配置データに基づいて、レイアウトデータを生成し、生成したレイアウトデータをハードディスクドライブ装置ＨＤＤ等に格納する。
【００３５】
次に、ステップＳ１４において、プロセッサＣＰＵは、レイアウトデータに含まれるセルおよび配線の電気的特性データを抽出し、レイアウト基本情報として、ハードディスクドライブ装置ＨＤＤ等に記憶する。レイアウト基本情報は、各セルの伝搬遅延時間を示すセル遅延情報、レイアウト平面上での各セルの位置を示すセル配置情報、各セルの出力駆動能力を示すセル駆動能力情報、およびセル間を接続する各配線の伝搬遅延時間を示す配線遅延情報を含む。
【００３６】
レイアウト基本情報の例は、図５に示す。なお、後述するステップＳ３０、Ｓ４０の処理において、プロセッサＣＰＵがレイアウトデータからレイアウト基本情報を直接参照できる場合、ステップＳ１４によるレイアウト基本情報のファイル化は不要である。
【００３７】
次に、ステップＳ１６において、プロセッサＣＰＵは、フリップフロップ回路やラッチ回路等の同期回路を含む各セルの入力端子に供給される信号のセットアップタイムを解析する。セットアップタイムは、クロック信号等のトリガ信号のエッジより前に入力信号の論理を確定すべき時間の最小値である。例えば、セットアップタイムの解析は、レイアウトデータを用いてＳＴＡ（Static Timing Analysis）手法等を用いて実施される。
【００３８】
ステップＳ１８において、プロセッサＣＰＵは、同期回路を含むセルのいずれかのセットアップタイムがタイミング仕様を満足しない場合（セットアップエラー）、処理をステップＳ２０に移行する。全ての同期回路を含むセルのセットアップタイムがタイミング仕様を満足する場合、プロセッサＣＰＵは、処理をステップＳ２２に移行する。
【００３９】
ステップＳ２０では、プロセッサＣＰＵは、セットアップエラーを解消するために、セットアップエラーが発生した同期回路の入力端子への信号の到達タイミングを早くするためのタイミング修正を実施する。例えば、プロセッサＣＰＵは、データ上で、セットアップエラーが発生した同期回路の入力端子に信号を出力するセルを、出力駆動能力が高いセルに変更する。あるいは、プロセッサＣＰＵは、データ上で、セットアップエラーが発生した駆動回路の入力端子に接続された信号経路に含まれるセルのうち、信号経路に伝達される信号の論理を変更することなく削除できるセルを削除する。
【００４０】
そして、プロセッサＣＰＵは、セットアップエラーを解消するためのセルの置き換え、またはセルの削除をするために、ネットリストを変更する。ステップＳ２０の実施後、プロセッサＣＰＵは、セットアップエラーが解消されるまで、ステップＳ２０、Ｓ１０、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８の処理を繰り返し実施する。
【００４１】
セットアップエラーの解消後、ステップＳ２２において、プロセッサＣＰＵは、同期回路を含む各セルの入力端子に供給される信号のホールドタイムを解析する。ホールドタイムは、クロック信号等のトリガ信号のエッジより後に入力信号の論理を保持すべき時間の最小値である。例えば、ホールドタイム解析は、レイアウト基本情報のセル遅延情報、セル駆動能力情報および配線遅延情報を用いて実施される。なお、ホールドタイム解析は、レイアウトデータに含まれるセル遅延情報、セル駆動能力情報および配線遅延情報を用いてＳＴＡ手法等を用いて実施されてもよい。
【００４２】
ステップＳ２４において、プロセッサＣＰＵは、同期回路を含むセルのいずれかのホールドタイムがタイミング仕様を満足しない場合（ホールドエラー）、処理をステップＳ３０に移行する。全ての同期回路を含むセルのホールドタイムがタイミング仕様を満足する場合、プロセッサＣＰＵは、現在のレイアウトデータを、ハードディスクドライブ装置ＨＤＤ等に完成レイアウトデータとして保存して処理を終了する。この後、完成レイアウトデータを用いてフォトマスクが設計される。
【００４３】
ステップＳ３０において、プロセッサＣＰＵは、レイアウト基本情報またはレイアウトデータを用いて、ホールドタイムの余裕度を算出する処理と、ホールドエラーリストおよびマージンリストに情報を登録する処理とを含むタイミング解析を実施する。タイミング解析では、図１の第１処理部２０による処理と同様に、ホールドタイムが不足しているエラーセル（エラー素子）と、エラーセルの入力端子に接続される第１信号経路に含まれるセルと、ホールドタイムの不足時間とが、ホールドエラーリストに登録される。また、タイミング解析では、図１の第２処理部３０による処理と同様に、ホールドタイムに余裕のある同期回路の入力に接続される第２信号経路上のセルの中から、削除可能なセルが抽出され、マージンセル（マージン素子）としてマージンリストに登録される。ステップＳ３０のタイミング解析の処理の例については、図６で説明する。第１信号経路および第２信号経路については、図１の説明と同様であり、図４および図１２で改めて説明する。
【００４４】
ステップＳ４０において、プロセッサＣＰＵは、エラーセル毎に、マージンリストに登録されているマージンセルの中から、第１信号経路に挿入可能なマージンセルを探す。そして、プロセッサＣＰＵは、第１信号経路に挿入可能なマージンセルが存在する場合、データ上で、そのマージンセルを第２信号経路から切り離して第１信号経路に接続するために配線を再配置する。すなわち、ホールドタイムを満足する第２信号経路に接続されたセルを、ホールドタイムを満足しない第１信号経路に接続するために、配線の変更処理がデータ上で実施される。
【００４５】
一方、プロセッサＣＰＵは、第１信号経路に挿入可能なマージンセルが、マージンリストに存在しない場合、第１信号経路上に新たなセルを追加する処理を、データ上で実施する。例えば、新たなセルは、挿入によっても論理が変更されないバッファセルである。プロセッサＣＰＵは、配線の変更処理または新たなセルの追加をレイアウトデータに反映し、反映したレイアウトデータからネットリストを抽出する。
【００４６】
なお、ネットリストの抽出は、全てのレイアウトデータを用いることなく、配線が変更されたレイアウトデータの一部または新たなセルが追加された一部のレイアウトデータを用いて実施されてもよい。ステップＳ４０の配線の変更処理の例については、図８から図１１で説明する。
【００４７】
次に、ステップＳ５０において、プロセッサＣＰＵは、ステップＳ４０の配線の変更処理で新たなセルが追加されたか否かを判定する。新たなセルが追加された場合、セルの配置をやり直す必要があるため、処理はステップＳ１０に移行する。新たなセルが追加されず、配線の変更のみが実施された場合、セルの配置は変更されていないため、処理はステップＳ１２に移行する。そして、プロセッサＣＰＵは、ステップＳ２４において、ホールドエラーがなくなるまで、ステップＳ３０、Ｓ４０、Ｓ５０、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２２の処理および必要に応じてステップＳ１０の処理が繰り返し実施される。
【００４８】
この実施形態においても、新たなセルを追加せずにホールドエラーを解消可能なとき、セルの再配置は不要であり、配線の再配置のみが実施される。このため、レイアウトデータを作成するための処理量を少なくでき、レイアウトデータの作成時間を短縮できる。
【００４９】
また、セル間の配線は、半導体基板の上方に設けられる金属配線層を用いて形成される。このため、半導体集積回路の設計後に、製造条件の変動等によりホールドタイムの余裕がなくなったときにも、ステップＳ４０の処理により得られるレイアウトデータを用いて金属配線層のフォトマスクを作り直すことで、ホールドタイムの余裕を確保できる。半導体基板の拡散領域用のフォトマスクやトランジスタのゲート用のフォトマスクは、配線を再配置する場合にも変更する必要がない。このため、金属配線層の配線工程の手前まで製造された半導体集積回路のストックは、廃棄することなく、新しいフォトマスクを使用して製造を継続できる。これにより、フォトマスクを作り直す場合の製造コストおよび製造期間を削減できる。
【００５０】
図４は、図３に示したレイアウト設計方法により最初にレイアウトされる回路ブロックＣＢ１０、ＣＢ２０の例を示している。すなわち、図４に示す回路ブロックＣＢ１０、ＣＢ２０は、図３に示したステップＳ３０、Ｓ４０の処理が一度も実施されていない。なお、回路ブロックＣＢ２０は、図３に示したステップＳ２４で、ホールドエラーが検出されるブロックである。
【００５１】
図４では、説明を簡単にするために、セルＣ０１１、Ｃ０１７間の信号経路およびセルＣ０２１、Ｃ０２７間の信号経路に存在する信号線を示し、他の信号線の記載は省略している。実際の回路では、例えば、セルＣ０１３において、信号線が接続されていない入力端子に他の信号線が接続される。また、セルＣ０１３の出力端子に接続されたノードＮ０１３から他の信号線が分岐する場合がある。
【００５２】
さらに、図４では、クロック信号等のトリガ信号の配線を省略している。回路ブロックＣＢ１０において、トリガ信号は、セルＣ０１１、Ｃ０１７のクロック入力（三角印）に供給される。回路ブロックＣＢ２０において、トリガ信号は、セルＣ０２１、Ｃ０２７のクロック入力（三角印）に供給される。
【００５３】
回路ブロックＣＢ１０は、フリップフロップＦＦのセルＣ０１１のデータ出力ＱとフリップフロップＦＦのセルＣ０１７のデータ入力Ｄとの間に、セルＣ０１２、Ｃ０１３、Ｃ０１４、Ｃ０１５、Ｃ０１６を有している。セルＣ０１２の入力は、ノードＮ０１１を介してセルＣ０１１のデータ出力Ｑに接続され、セルＣ０１３の入力は、ノードＮ０１２を介してセルＣ０１２の出力に接続され、セルＣ０１４の入力は、ノードＮ０１３を介してセルＣ０１３の出力に接続されている。セルＣ０１５の入力は、ノードＮ０１４を介してセルＣ０１４の出力に接続され、セルＣ０１６の入力は、ノードＮ０１５を介してセルＣ０１５の出力に接続され、セルＣ０１７のデータ入力Ｄは、ノードＮ０１６を介してセルＣ０１６の出力に接続されている。
【００５４】
回路ブロックＣＢ２０は、フリップフロップＦＦのセルＣ０２１のデータ出力ＱとフリップフロップＦＦのセルＣ０２７のデータ入力Ｄとの間に、セルＣ０２２、Ｃ０２３、Ｃ０２４、Ｃ０２５を有している。セルＣ０２２の入力は、ノードＮ０２１を介してセルＣ０２１のデータ出力Ｑに接続され、セルＣ０２３の入力は、ノードＮ０２２を介してセルＣ０２２の出力に接続され、セルＣ０２４の入力は、ノードＮ０２３を介してセルＣ０２３の出力に接続されている。セルＣ０２５の入力は、ノードＮ０２４を介してセルＣ０２４の出力に接続され、セルＣ０２７のデータ入力Ｄは、ノードＮ０２５を介してセルＣ０２５の出力に接続されている。
【００５５】
後述するように、例えば、回路ブロックＣＢ１０は、ホールドタイムのマージンが大きく、セルＣ０１６は、削除可能なマージンセルである。回路ブロックＣＢ１０のノードＮ０１１、Ｎ０１２、Ｎ０１３、Ｎ０１４、Ｎ０１５、Ｎ０１６は、ホールドタイムに余裕のあるセルＣ０１７のデータ入力Ｄに接続される第２信号経路である。第２信号経路は、ホールドタイムに余裕のあるセルＣ０１７のデータ入力Ｄに接続される最初の同期回路であるセルＣ０２１のデータ出力ＱからセルＣ０１７のデータ入力Ｄまでの信号経路である。
【００５６】
例えば、回路ブロックＣＢ２０のセルＣ０２７は、ホールドタイムがタイミング仕様に対して不足しているエラーセルである。回路ブロックＣＢ２０のノードＮ０２１、Ｎ０１２２、Ｎ０２３、Ｎ０２４、Ｎ０２５は、エラーセルＣ０２７のデータ入力Ｄに接続される第１信号経路に含まれる。第１信号経路は、エラーセルＣ０２７のデータ入力Ｄに接続される最初の同期回路であるセルＣ０２１のデータ出力ＱからエラーセルＣ０２７のデータ入力Ｄまでの信号経路である。
【００５７】
図５は、図３に示したステップＳ１４の処理により生成されるレイアウト基本情報の例を示している。図５では、図４に示した回路ブロックＣＢ１０、ＣＢ２０に含まれるセルのレイアウト基本情報を示している。
【００５８】
セル遅延情報は、各セルの伝搬遅延時間のデータを含んでいる。セル配置情報は、レイアウト平面上での各セルの原点のＸ座標とＹ座標を含んでいる。セル駆動能力情報は、各セルの出力駆動能力のデータを含んでいる。出力駆動能力は、各セルの最終段の出力回路の駆動能力である。例えば、セル駆動能力情報の数値は、出力端子に接続される入力端子（ゲート）の最大数であるファンアウト数を示している。なお、セル駆動能力情報の数値は、ファンアウト数とともに、出力端子に接続される配線の長さ（配線負荷）を考慮して決められてもよい。配線遅延情報は、セル間の各ノードに信号を伝達する配線の伝搬遅延時間のデータを含んでいる。
【００５９】
図６は、図３に示したステップＳ３０によるタイミング解析の例を示している。
【００６０】
先ず、ステップＳ３００において、プロセッサＣＰＵは、ホールドエラーを解析するために信号経路の１つを選択する。例えば、図４に示した回路ブロックＣＢ１０のセルＣ０１１からセルＣ０１７の間の信号経路が選択され、あるいは、図４に示した回路ブロックＣＢ２０のセルＣ０２１からセルＣ０２７の間の信号経路が選択される。プロセッサＣＰＵは、レイアウト基本情報またはレイアウトデータのセル遅延情報、セル駆動能力情報および配線遅延情報を用いて、選択した信号経路に含まれる同期回路を含むセルのホールドタイムを解析する。なお、ステップＳ３０のタイミング解析は、図３に示したステップＳ２２のホールドタイム解析の結果を利用して実施されてもよい。
【００６１】
例えば、図４に示した回路ブロックＣＢ１０では、同期回路であるセルＣ０１７において、クロック端子で受けるトリガ信号に対して、入力端子Ｄで受ける信号のホールドタイムが解析される。図４に示した回路ブロックＣＢ２０では、同期回路であるセルＣ０２７において、クロック端子で受けるトリガ信号に対して、入力端子Ｄで受ける信号のホールドタイムが解析される。ステップＳ３００による処理は、図１に示した算出部１０が実施する処理に対応している。
【００６２】
次に、ステップＳ３１０において、プロセッサＣＰＵは、選択した信号経路の末端に位置する同期回路のホールドタイムがタイミング仕様に対して不足している場合（ホールドエラー）、処理をステップＳ３２０に移行する。例えば、図４に示した回路ブロックＣＢ２０のセルＣ０２７は、ホールドエラーを有している。選択した信号経路の末端に位置する同期回路のホールドタイムがタイミング仕様を満足する場合、プロセッサＣＰＵは、処理をステップＳ３３０に移行する。例えば、図４に示した回路ブロックＣＢ１０のセルＣ０１７は、ホールドエラーを有していない。
【００６３】
ステップＳ３２０において、プロセッサＣＰＵは、ホールドエラーを有するセルの入力端子Ｄに接続される信号経路（第１信号経路）に含まれるセル名と、ホールドタイムの不足時間をホールドエラーリストに登録する。例えば、図４に示した回路ブロックＣＢ２０において、セル名Ｃ０２１、Ｃ０２２、Ｃ０２３、Ｃ０２４、Ｃ０２５、Ｃ０２７と、不足時間（例えば、−１０ｐｓ）とが、ホールドエラーリストに登録される。ステップＳ３１０、Ｓ３２０による処理は、図１に示した第１処理部２０が実施する処理に対応している。
【００６４】
一方、ステップＳ３３０において、プロセッサＣＰＵは、ホールドエラーを有していない同期回路を含む信号経路に、論理的に削除可能なセルがあるか否かを判定する。論理的に削除可能なセルは、図１で説明した条件（ａ）を満足するセルであり、入力信号と出力信号の論理が同じで、出力信号の論理が、他の入力端子で受ける入力信号の論理の影響を受けないセルである。例えば、図４に示した回路ブロックＣＢ１０のセルＣ０１６は、バッファ回路であり、論理的に削除可能なセルである。プロセッサＣＰＵは、論理的に削除可能なセルがある場合、処理をステップＳ３４０に移行し、論理的に削除可能なセルがない場合、処理をステップＳ３７０に移行する。
【００６５】
ステップＳ３４０において、プロセッサＣＰＵは、ステップＳ３３０で検出した論理的に削除可能なセルを削除したときに、タイミングエラーが発生するか否かを判定する。すなわち、図１で説明した条件（ｂ）を満足するか否かが判定される。例えば、セルの削除により、セットアップタイムがタイミング仕様を満足できなくなる場合、セルは削除できない。プロセッサＣＰＵは、セルを削除してもタイミングエラーが発生しない場合、処理をステップＳ３５０に移し、セルの削除によりタイミングエラーが発生する場合、処理をステップＳ３７０に移行する。
【００６６】
ステップＳ３５０において、プロセッサＣＰＵは、ステップＳ３３０で検出した論理的に削除可能なセルを削除したときに、レイアウトエラーが発生するか否かを判定する。すなわち、図１で説明した条件（ｃ）を満足するか否かが判定される。例えば、図４の回路ブロックＣＢ１０において、セルＣ０１６の削除により、セルＣ０１５の出力からセルＣ０１７の入力までの配線が長くなり、セルＣ０１５の駆動能力が不足する場合、レイアウトエラーと判定される。プロセッサＣＰＵは、セルを削除してもレイアウトエラーが発生しない場合、処理をステップＳ３６０に移し、セルの削除によりレイアウトエラーが発生する場合、処理をステップＳ３７０に移行する。
【００６７】
ステップＳ３６０において、プロセッサＣＰＵは、ステップＳ３３０、Ｓ３４０、Ｓ３５０により削除可能とされたセル、すなわち、図１で説明した条件（ａ）、（ｂ）、（ｃ）を満足するセルをマージンセルとしてマージンリストに登録する。例えば、図４の回路ブロックＣＢ１０において、セルＣ０１６がマージンリストに登録される。ステップＳ３１０、Ｓ３３０、Ｓ３４０、Ｓ３５０、Ｓ３６０による処理は、図１に示した第２処理部３０が実施する処理に対応している。この後、処理はステップＳ３７０に移行される。
【００６８】
ステップＳ３７０において、プロセッサＣＰＵは、全ての信号経路を選択したか否かを判定する。すなわち、全ての信号経路について、ホールドエラーの有無と、削除可能なマージンセルの有無とをチェックしたか否かが判定される。チェックしていない信号経路が存在する場合、処理はステップＳ３００に戻る。全ての信号経路がチェックされた場合、タイミング解析の処理は終了する。
【００６９】
図７は、図６に示した処理により生成されるマージンリストおよびホールドエラーリストの例を示している。この例では、図４の回路ブロックＣＢ１０のセルＣ０１６がマージンリストに登録されている。また、図４の回路ブロックＣＢ２０のセルＣ０２１、Ｃ０２２、Ｃ０２３、Ｃ０２４、Ｃ０２５、Ｃ０２６がエラー経路としてホールドエラーリストのエラー番号Ｅ００１に対応して登録されている。不足時間の”−１０”は、セルＣ０２７のホールドタイムが、タイミング仕様に対して、例えば、”−１０ｐｓ”不足していることを示している。
【００７０】
図８は、図３に示したステップＳ４０による配線変更の例を示している。
【００７１】
先ず、ステップＳ４００において、プロセッサＣＰＵは、ホールドエラーリストからホールドエラーを含む信号経路の１つを選択する。例えば、図７に示したエラー番号Ｅ００１に対応する回路ブロックＣＢ２０のセルＣ０２１からセルＣ０２７が選択される。
【００７２】
次に、ステップＳ４１０において、プロセッサＣＰＵは、レイアウト基本情報またはレイアウトデータを参照しながら、マージンリストに登録されたセルを用いて、選択している信号経路のホールドエラーを解消するための処理を実施する。例えば、プロセッサＣＰＵは、図４に示した回路ブロックＣＢ２０のセルＣ０２７のホールドエラーを解消するために、回路ブロックＣＢ２０に挿入可能なマージンセルをマージンリストから探す。
【００７３】
この際、セル配置情報に基づいて、回路ブロックＣＢ２０に近い順にマージンセルが順次選択される。そして、プロセッサＣＰＵは、セル駆動能力情報に基づいて、挿入するマージンセルが必要な駆動能力を有するか否かを判定する。また、プロセッサＣＰＵは、マージンセルのセル遅延情報とマージンセルを挿入するノードの配線遅延情報とに基づいて、マージンセルの挿入によりホールドエラーが解消するか否かを判定する。
【００７４】
そして、プロセッサＣＰＵは、ホールドエラーが解消すると判断したときに、回路ブロックＣＢ２０にマージンセルを挿入するために、データ上で配線を切り換える。例えば、配線の切り換えにより、図４に示した回路ブロックＣＢ１０のセルＣ０１６（マージンセル）が、回路ブロックＣＢ２０のノードＮ０２５に挿入される。このとき、回路ブロックＣＢ１０において、ノードＮ０１５とノードＮ０１６とが互いに接続され、セルＣ０１５の出力は、セルＣ０１７のデータ入力Ｄに直接接続される。
【００７５】
次に、ステップＳ４２０において、プロセッサＣＰＵは、配線の切り換えを実施してもホールドエラーが解消できないときに、レイアウトエラーの発生を判断し、処理をステップＳ４３０に移行する。例えば、挿入されるマージンセルの入力に接続されるセルの駆動能力が、配線の切り換えのために新たに追加される配線の負荷により不足する場合、レイアウトエラーの発生が判断される。レイアウトエラーが発生しない場合、処理はステップＳ４４０に移行される。
【００７６】
ステップＳ４３０において、プロセッサＣＰＵは、レイアウトエラーが発生する信号経路を固定エラー経路として記憶し、処理をステップＳ４４０に移行する。ステップＳ４４０において、プロセッサＣＰＵは、ホールドエラーを含む全ての信号経路を選択したか否かを判定する。配線の切り換えを試みていない信号経路が存在する場合、処理はステップＳ４００に戻る。全ての信号経路の配線の切り換えを試みた場合、処理はステップＳ４５０に移行される。
【００７７】
ステップＳ４５０において、プロセッサＣＰＵは、配線の切り換えに使用していないマージンセルをレイアウトデータから削除する。次に、ステップＳ４６０において、プロセッサＣＰＵは、ステップＳ４３０で記憶した固定エラー経路が存在するか否かを判定する。固定エラー経路が存在する場合、処理はステップＳ５００に移行する。固定エラー経路が存在しない場合、処理はステップＳ４７０に移行する。
【００７８】
ステップＳ４７０において、プロセッサＣＰＵは、配線を切り換えたレイアウトデータを用いてネットリストを抽出する。ステップＳ４２０、Ｓ４７０による処理は、図１に示した再配置部４０が実施する処理に対応している。
【００７９】
ステップＳ５００において、プロセッサＣＰＵは、固定エラー経路を解消するための処理を実施する。ステップＳ５００の処理の例は、図１１で説明する。
【００８０】
図９は、図８に示したステップＳ４１０による配線切り換えの例を示している。
【００８１】
先ず、ステップＳ４１００において、プロセッサＣＰＵは、エラーセルの入力端子に接続される第１信号経路上からマージンセルを接続する接続位置を決める。マージンセルは、第１信号経路上に直列に接続される第１セル（第１素子）と第２セル（第２素子）との間のノードに接続される。例えば、図３に示した回路ブロックＣＢ２０において、マージンセルはセルＣ０２５とエラーセルＣ０２７との間のノードＮ２５に接続される。
【００８２】
次にステップＳ４１０２において、プロセッサＣＰＵは、ステップＳ４１００で決定した接続位置に最も近いマージンセルを、マージンリストから選択する。次に、ステップＳ４１０４において、プロセッサＣＰＵは、第１信号経路上にマージンセルを接続するために配置される配線の負荷を算出する。配線の負荷は、第１信号経路上のセルの出力からマージンセルの入力までを接続する新たな配線の負荷と、マージンセルの出力から第１信号経路上のセルの入力までを接続する新たな配線の負荷とを含む。
【００８３】
次に、ステップＳ４１０６において、プロセッサＣＰＵは、選択したマージンセルの伝搬遅延時間がエラーセルのホールドタイムの不足時間より長いか否かを判定する。ここで、マージンセルの伝搬遅延時間に、マージンセルを第１信号経路上に接続するための新たな配線の負荷による伝搬遅延時間を加えた値を、不足時間と比較してもよい。この場合、ホールドタイムをより正確に算出できる。伝搬遅延時間が不足時間より長いとき、処理はステップＳ４１０８に移行され、伝搬遅延時間が不足時間以下のとき、処理はステップＳ４１１０に移行される。
【００８４】
ステップＳ４１０８において、プロセッサＣＰＵは、マージンセルを駆動するセルの出力駆動能力と、マージンセルの出力駆動能力とを判断する。ステップＳ４１００で決定した接続位置とマージンセルとの位置が離れている場合、マージンセルを接続するために新たに配置される配線は長くなり、配線負荷は大きくなる。このため、選択するマージンセルの位置に応じて、マージンセルを駆動するセルおよびマージンセルの出力駆動能力の判断が必要になる。
【００８５】
この実施形態では、選択するマージンセルの位置に応じて、出力駆動能力が十分か否かを判断できるため、半導体集積回路の性能を損なうことなく、配線の切り換えによりホールドエラーを解消できる。両方の出力駆動能力が十分な場合、処理はステップＳ４１１６に移行され、どちらか一方の出力駆動能力が不足する場合、処理はステップＳ３１１０に移行される。
【００８６】
次に、ステップＳ４１１０において、プロセッサＣＰＵは、選択していないマージンセルがあるか否かを判断する。選択していないマージンセルがある場合、処理はステップＳ４１１２に移行され、全てのマージンセルが選択されている場合、処理はステップＳ４１１４に移行される。
【００８７】
なお、マージンセルを接続する第１信号経路上の接続位置からマージンセルまでの距離が所定値を超えるとき、選択していないマージンセルがある場合にも、処理をステップＳ４１１０からステップＳ４１１４に移行してもよい。これは、マージンセルを接続するために新たに配置される配線の負荷が大きいと、ホールドタイムは改善されるが、駆動能力が不足する可能性が高くなるためである。
【００８８】
また、マージンセルを駆動するセルの出力駆動能力が不足する場合、選択していないマージンセルがある場合にも、処理をステップＳ４１１０からステップＳ４１１４に移行してもよい。これは、ステップＳ４１１２により選択される新たなマージンセルと、第１信号経路上の接続位置との距離は、徐々に大きくなるため、マージンセルを駆動するセルの出力駆動能力の不足が解消しない可能性が高いためである。
【００８９】
次に、ステップＳ４１１２において、プロセッサＣＰＵは、選択していないマージンセルの中から、第１信号経路上の接続位置から次に近いマージンセルを選択する。この後、処理はステップＳ４１０４に戻る。
【００９０】
一方、ステップＳ４１１４において、プロセッサＣＰＵは、レイアウトエラーが発生したことを記憶し（例えば、エラーフラグを立てる）、処理を終了する。すなわち、プロセッサＣＰＵは、第１信号経路上の接続位置に接続できるマージンセルが存在しないと判断したとき、図８に示したステップＳ４３０、Ｓ５００を実施する。
【００９１】
ステップＳ４１１６では、プロセッサＣＰＵは、第１信号経路上の接続位置にマージンセルを接続するために、レイアウトデータ上の配線を切り換える。なお、マージンセルの周辺に配線が高い密度でレイアウトされている場合、切り換えに必要な配線を配置できない。しかしながら、この実施形態では、図８に示したステップＳ４７０により、配線が切り換えられたレイアウトデータを用いてネットリストが抽出される。そして、図３に示したステップＳ１２により、抽出されたネットリストを用いて、配線の再レイアウトが実施され、新たなレイアウトデータが生成される。この際、マージンセルの周辺の配線も再レイアウトされるため、切り換えられた配線が、ステップＳ１２の処理でレイアウトできないという問題は生じない。なお、配線を切り換える例は、図１２から図１４で説明する。
【００９２】
図１０は、図８に示したステップＳ４１０による配線切り換えの別の例を示している。図９と同じ処理については、詳細な説明は省略する。この例では、図９のステップＳ４１０４、Ｓ４１０６、Ｓ４１０８、Ｓ４１１２の代わりに、ステップＳ４１０４Ａ、Ｓ４１０６Ａ、Ｓ４１０８Ａ、Ｓ４１１２Ａが設けられている。その他の処理は、図９と同様である。
【００９３】
この例では、マージンセルの伝搬遅延時間が不足時間以下のときに、伝搬遅延時間を増加するために、ステップＳ４１１２Ａにおいて、既に選択しているマージンセルに新たなマージンセルが追加で選択され、複数のマージンセルが直列に接続される。このため、ステップＳ４１０４Ａでは、ステップＳ４１０４の処理に加えて、マージンセル間の配線の負荷も算出される。
【００９４】
複数のマージンセルを選択可能にすることで、第１信号経路に近いマージンセルをホールドエラーを解消するために用いることができる。この結果、第１信号経路とマージンセルとを接続する配線の負荷を小さくでき、出力駆動能力の不足によるレイアウトエラーの発生の可能性を低くできる。すなわち、配線の置き換えによるレイアウトエラーの解消効率を向上でき、レイアウト設計の効率を向上できる。この結果、半導体集積回路のレイアウトサイズを削減できる。
【００９５】
ステップＳ４１０６Ａでは、プロセッサＣＰＵは、選択された１つまたは複数のマージンセルの伝搬遅延時間がエラーセルのホールドタイムの不足時間より長いか否かを判定する。なお、図９と同様に、マージンセルの伝搬遅延時間に、マージンセルを第１信号経路上に接続するための新たな配線の負荷による伝搬遅延時間およびマージンセル間を接続するための新たな配線の負荷による伝搬遅延時間を加えた値を、不足時間と比較してもよい。
【００９６】
ステップＳ４１０８Ａでは、プロセッサＣＰＵは、図９に示したステップＳ４１０８の処理に加えて、マージンセルを駆動するマージンセルの出力駆動能力を判断する。なお、複数のマージンセルが選択されるとき、ステップＳ４１０８Ａにおいて、出力駆動能力の不足が解消される可能性は低い。このため、プロセッサＣＰＵは、ステップＳ４１０８Ａにおいて、第１セルの出力駆動能力またはマージンセルの出力駆動能力のどちらか一方が不足する場合、新たなマージンセルの追加の選択を実施せずに、処理をステップＳ４１１４に移行してもよい。第１セルは、図９で説明したように、マージンセルの入力に接続され、マージンセルを駆動する第１信号経路上のセルである。
【００９７】
さらに、図９の説明と同様に、ステップＳ４１１０において、マージンセルを接続する第１信号経路上の接続位置からマージンセルまでの距離が所定値を超えるとき、選択していないマージンセルがある場合にも、処理をステップＳ４１１４に移行してもよい。また、選択されているマージンセルの数が所定数を超えたときに、ステップＳ４１１０に移行せず、ステップＳ４１１４に移行するステップを、ステップＳ４１０６ＡとＳ４１１０との間に設けてもよい。
【００９８】
図１１は、図８に示したステップＳ５００による処理の例を示している。
【００９９】
先ず、ステップＳ５１０において、プロセッサＣＰＵは、配線の切り換えにより解消できないホールドエラーが発生した信号経路である固定エラー経路の１つを選択する。次に、ステップＳ５２０において、プロセッサＣＰＵは、データ上において、選択した固定エラー経路にバッファを追加することでホールドエラーを解消する。
【０１００】
次に、ステップＳ５３０において、プロセッサＣＰＵは、全ての固定エラー経路を選択したか否かを判定する。全ての固定エラー経路が選択されていない場合、処理はステップＳ５１０に戻る。全ての固定エラー経路が選択された場合、処理はステップＳ５４０に移行される。
【０１０１】
ステップＳ５４０において、プロセッサＣＰＵは、バッファを追加したレイアウトデータを用いてネットリストを抽出する。なお、ステップＳ５４０による処理は、ホールドエラーを解消するために配線を切り換えた信号経路のレイアウトデータも含まれる。すなわち、ステップＳ５４０では、ホールドエラーを解消するために、配線が切り換えられ、バッファが追加されたレイアウトデータを用いて、ネットリストが抽出される。
【０１０２】
図１２は、回路設計後のホールドタイム解析により検出されるホールドエラーの例を示している。この例では、説明を簡単にするために、解析の対象となる回路ブロックは、４つのフリップフロップＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４およびバッファＢＵＦ１、ＢＵＦ２、ＢＵＦ３、ＢＵＦ４を有するとする。また、説明を簡単にするために、各フリップフロップＦＦ１−ＦＦ４および各バッファＢＵＦ１−ＢＵＦ４の伝搬遅延時間は”２００”とし、信号線の伝搬遅延時間は、素子の伝搬遅延時間に対して無視できるものとする。フリップフロップＦＦ２、ＦＦ４のセットアップタイムの最小値ｔＳおよびホールドタイムの最小値ｔＨは、それぞれ”１００”とする。
【０１０３】
フリップフロップＦＦ１は、データ入力Ｄで入力信号ＩＮ１を受けている。フリップフロップＦＦ１のデータ出力Ｑは、ノードＮ１、バッファＢＵＦ１、ノードＮ２、バッファＢＵＦ２、ノードＮ３を介してフリップフロップＦＦ２のデータ入力Ｄに接続されている。フリップフロップＦＦ２のデータ出力Ｑは、出力端子ＯＵＴ１に接続されている。
【０１０４】
フリップフロップＦＦ３は、データ入力Ｄで入力信号ＩＮ２を受けている。フリップフロップＦＦ３のデータ出力Ｑは、ノードＮ４を介してフリップフロップＦＦ４のデータ入力Ｄに接続されている。フリップフロップＦＦ４のデータ出力Ｑは、出力端子ＯＵＴ２に接続されている。
【０１０５】
フリップフロップＦＦ１、ＦＦ２は、クロック入力（三角印）でバッファＢＵＦ３を介して供給されるクロック信号ＣＫを受ける。バッファＢＵＦ３の出力は、ノードＮ５、バッファＢＵＦ４、ノードＮ６を介して、フリップフロップＦＦ２、ＦＦ４のクロック入力に接続されている。
【０１０６】
この例では、フリップフロップＦＦ１、ＦＦ３は、ノードＮ５に伝達されるクロック信号ＣＫの立ち上がりエッジに同期して、入力信号ＩＮ１、ＩＮ２の論理をラッチし、ラッチした論理をフリップフロップＦＦ１、ＦＦ３の伝搬遅延時間（＝２００）後に、ノードＮ１、Ｎ４に出力する（図１２（ａ、ｂ））。ノードＮ１に現れた信号は、バッファＢＵＦ１、ＢＵＦ２の伝搬遅延時間（＝２００＋２００）後に、フリップフロップＦＦ２のデータ入力ＤであるノードＮ３に伝達される（図１２（ｃ））。ノードＮ４に現れた信号は、フリップフロップＦＦ４のデータ入力Ｄに直接伝達される（図１２（ｄ））。
【０１０７】
バッファＢＵＦ４は、ノードＮ５上のクロック信号ＣＫを時間”２００”遅らせて、ノードＮ６に出力する（図１２（ｅ））。フリップフロップＦＦ２、ＦＦ４は、ノードＮ６に伝達されるクロック信号ＣＫの立ち上がりエッジに同期して、ノードＮ３、Ｎ４の論理をラッチする。フリップフロップＦＦ２、ＦＦ４は、ラッチした論理をフリップフロップＦＦ２、ＦＦ４の伝搬遅延時間（＝２００）後に、出力端子ＯＵＴ１、ＯＵＴ２に出力する（図１２（ｆ、ｇ））。
【０１０８】
このとき、フリップフロップＦＦ３がノードＮ４に信号を出力するタイミングと、バッファＢＵＦ４がノードＮ６にクロック信号ＣＫを出力するタイミングとは、ほとんど同じである。すなわち、フリップフロップＦＦ４において、クロック信号ＣＫの立ち上がりエッジ（Ｎ６）に対する入力信号（Ｎ４）のホールドタイムに余裕がない。このため、フリップフロップＦＦ４は、正しい論理をラッチできず、誤った論理（ｉｎｖａｌｉｄ）を出力する。図３に示したステップＳ２２、Ｓ３０では、フリップフロップＦＦ４のホールドエラーが検出される。
【０１０９】
フリップフロップＦＦ４は、ホールドタイムが不足しているエラーセル（エラー素子）であり、エラーセルの入力に接続される第１信号経路はノードＮ４である。ホールドエラーリストには、第１信号経路上の素子として、フリップフロップＦＦ３、ＦＦ４が登録される。
【０１１０】
これに対して、フリップフロップＦＦ２では、クロック信号ＣＫの立ち上がりエッジ（Ｎ６）に対する入力信号（Ｎ３）のホールドタイム（＝４００）は、仕様（＝１００）に対して十分な余裕がある。フリップフロップＦＦ２は、正しい論理をラッチし、正しい論理（ｖａｌｉｄ）を出力する。例えば、ホールドタイム解析後のタイミング解析（図３のステップＳ３０）において、ホールドタイムに余裕があるフリップフロップＦＦ２のデータ入力Ｄに最も近いバッファＢＵＦ２がマージンリストとして登録される。ホールドタイムに余裕があるフリップフロップＦＦ２のデータ入力Ｄに接続される第２信号経路はノードＮ１、Ｎ２、Ｎ３である。
【０１１１】
なお、ノードＮ２が他のバッファを介して他のフリップフロップのデータ入力に接続され、このフリップフロップのホールドタイムにも余裕がある場合、バッファＢＵＦ１と上記他のバッファの両方がマージンリストとして登録されてもよい。マージンリストの登録数を増やすことで、ホールドエラーを解消するための配線の切り換え（図８のステップＳ４１０）に使用できるセルを増やすことができ、切り換え効率を向上できる。
【０１１２】
図１３は、図３に示したレイアウト設計手法によりホールドエラーが解消される例を示している。この例では、図１２に示したフリップフロップＦＦ４のホールドエラーを解消するために、マージンリストに登録されているバッファＢＵＦ２と図１２の第２信号経路（ノードＮ２、Ｎ３）との接続が解除される。そして、バッファＢＵＦ２は、第１信号経路（ノードＮ４）に接続される。
【０１１３】
これにより、フリップフロップＦＦ４において、クロック信号ＣＫの立ち上がりエッジ（Ｎ６）に対する入力信号（Ｎ７）のホールドタイム（＝２００）は、仕様（＝１００）に対して余裕のある値になる（図１３（ａ））。マージンセルであるバッファＢＵＦ２を信号経路から削除することにより、フリップフロップＦＦ２のホールドタイムは、図１２の”４００”から”２００”に減少するが、仕様（＝１００）に対して余裕がある（図１３（ｂ））。換言すれば、削除してもホールドタイムを保証できるセルが、マージンセルとして登録される。
【０１１４】
以上より、フリップフロップＦＦ２、ＦＦ４は、ともに正しい論理をラッチし、正しい論理（ｖａｌｉｄ）を出力することができる。すなわち、ホールドエラーが解消される（図１３（ｃ、ｄ））。
【０１１５】
図１４は、図３に示したレイアウト設計手法により、ホールドエラーを有する回路（図１２）をホールドエラーのない回路（図１３）に修正する例を示している。実線の矩形は、セルのレイアウト領域を示し、太い実線はセル間を接続する信号線（配線）を示している。バッファＢＵＦ１、ＢＵＦ２のセルにおいて、端子Ａは入力端子を示し、端子Ｘは出力端子を示している。図１２および図１３に示したクロック信号ＣＫの信号経路は、記載を省略している。
【０１１６】
この例では、図３のステップＳ４０の処理により、バッファＢＵＦ２（マージンセル）は、バッファＢＵＦ１およびフリップフロップＦＦ２から切り離され、フリップフロップＦＦ３、ＦＦ４の間に接続される。図１４に示すように、バッファＢＵＦ２の置き換えは、セルの配置を変更することなく、配線の変更のみで行われる。したがって、バッファＢＵＦ２の置き換え後に、図３に示したステップＳ１０の処理を不要にできる。この結果、レイアウト設計時間を短縮でき、レイアウト設計コストを削減できる。
【０１１７】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、マージンセルを第１信号経路に近い順に選択する場合に、選択するマージンセルの位置に応じて、出力駆動能力が十分か否かを判断することで、半導体集積回路の性能を損なうことなく、配線の切り換えによりホールドエラーを解消できる。
【０１１８】
また、複数のマージンセルを選択可能にすることで、第１信号経路とマージンセルとを接続する配線の負荷を小さくでき、出力駆動能力の不足によるレイアウトエラーの発生の可能性を低くできる。すなわち、配線の置き換えによるレイアウトエラーの解消効率を向上でき、レイアウト設計の効率を向上できる。この結果、半導体集積回路のレイアウトサイズを削減できる。
【０１１９】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する算出部と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する第１処理部と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する第２処理部と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する再配置部と
を備えていることを特徴とする半導体集積回路のレイアウト設計装置。
（付記２）
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
前記再配置部は、
前記第１信号経路に最も近い前記マージン素子を、前記第１信号経路上の第１素子と第２素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第２素子までの新たな配線の負荷および前記第２素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第１素子の出力駆動能力が、前記第１素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第１信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記１に記載の半導体集積回路のレイアウト設計装置。
（付記３）
前記再配置部は、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第１信号経路に接続すること
を特徴とする付記１または付記２に記載の半導体集積回路のレイアウト設計装置。
（付記４）
前記第１信号経路は、前記エラー素子の入力に接続される最初の前記同期回路から前記エラー素子までの信号経路であり、
前記第２信号経路は、ホールドタイムに余裕のある前記同期回路の入力に接続される最初の前記同期回路からホールドタイムに余裕のある前記同期回路までの信号経路であること
を特徴とする付記１ないし付記３のいずれか１項に記載の半導体集積回路のレイアウト設計装置。
（付記５）
前記電気的特性データは、前記素子の伝搬遅延時間、前記素子の出力駆動能力、および前記配線の伝搬遅延時間を含むこと
を特徴とする付記１ないし付記４のいずれか１項に記載の半導体集積回路のレイアウト設計装置。
（付記６）
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
を備えていることを特徴とする半導体集積回路のレイアウト設計方法。
（付記７）
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
配線を再配置するときに、
前記第１信号経路に最も近い前記マージン素子を、前記第１信号経路上の第１素子と第２素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第２素子までの新たな配線の負荷および前記第２素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第１素子の出力駆動能力が、前記第１素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第１信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記６に記載の半導体集積回路のレイアウト設計方法。
（付記８）
配線を再配置するときに、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第１信号経路に接続すること
を特徴とする付記６または付記７に記載の半導体集積回路のレイアウト設計方法。
（付記９）
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第１信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第２信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第２信号経路から切り離して前記第１信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
をコンピュータに実行させるための半導体集積回路のレイアウト設計プログラム。
（付記１０）
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
配線を再配置するときに、
前記第１信号経路に最も近い前記マージン素子を、前記第１信号経路上の第１素子と第２素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第２素子までの新たな配線の負荷および前記第２素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第１素子の出力駆動能力が、前記第１素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第１信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記９に記載の半導体集積回路のレイアウト設計プログラム。
（付記１１）
配線を再配置するときに、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第１信号経路に接続すること
を特徴とする付記９または付記１０に記載の半導体集積回路のレイアウト設計プログラム。
【０１２０】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２１】
１０‥算出部；２０‥第１処理部；３０‥第２処理部；４０‥再配置部；ＣＢ１０、ＣＢ２０‥回路ブロック；ＣＭＩＦ‥通信インタフェース；ＣＰＵ‥プロセッサ；ＥＬＭ１‥素子；ＥＲＲＥ‥エラー素子；ＧＲ‥グラフィック処理部；ＨＤＤ‥ハードディスクドライブ装置；ＨＬＤＭ‥余裕度；ＩＩＦ‥入出力インタフェース；ＭＤ‥メディアドライブ装置；ＯＩＦ‥出力インタフェース；ＲＡＭ‥メモリ；ＲＯＭ‥メモリ
【図１】
2013175029.tif 000003
【図２】
2013175029.tif 000004
【図３】
2013175029.tif 000005
【図４】
2013175029.tif 000006
【図５】
2013175029.tif 000007
【図６】
2013175029.tif 000008
【図７】
2013175029.tif 000009
【図８】
2013175029.tif 000010
【図９】
2013175029.tif 000011
【図１０】
2013175029.tif 000012
【図１１】
2013175029.tif 000013
【図１２】
2013175029.tif 000014
【図１３】
2013175029.tif 000015
【図１４】
2013175029.tif 000016