(57)【特許請求の範囲】
【請求項１】
設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する取得工程と、
前記取得工程によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する検出工程と、
前記検出工程によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、当該配線とは異なる他の配線の配線幅よりも太くする配線に決定する決定工程と、
前記決定工程によって決定された配線を、前記他の配線の配線幅よりも太い配線幅に変更する変更工程と、
をコンピュータに実行させることを特徴とする設計支援プログラム。
【請求項２】
前記検出工程は、
前記クロックツリーのうちセットアップエラーと競合するホールドエラーが発生しているクロックネットを検出することを特徴とする請求項１に記載の設計支援プログラム。
【請求項３】
前記検出工程は、
さらに、前記ホールドエラーと前記セットアップエラーとが競合するクロックネットのうち、当該クロックネットのリーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネットを検出することを特徴とする請求項２に記載の設計支援プログラム。
【請求項４】
前記決定工程は、
前記検出工程によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端よりも一つ前段の回路素子までの配線を、前記他の配線の配線幅よりも太くする配線に決定することを特徴とする請求項１〜３のいずれか一つに記載の設計支援プログラム。
【請求項５】
設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する取得手段と、
前記取得手段によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する検出手段と、
前記検出手段によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、当該配線とは異なる他の配線の配線幅よりも太くする配線に決定する決定手段と、
前記決定手段によって決定された配線を、前記他の配線の配線幅よりも太い配線幅に変更する変更手段と、
を備えたことを特徴とする設計支援装置。
【請求項６】
コンピュータが、
設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する取得工程と、
前記取得工程によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する検出工程と、
前記検出工程によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、当該配線とは異なる他の配線の配線幅よりも太くする配線に決定する決定工程と、
前記決定工程によって決定された配線を、前記他の配線の配線幅よりも太い配線幅に変更する変更工程と、
を実行することを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体プロセスのばらつきを考慮したＬＳＩ設計を支援する設計支援プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、設計支援装置、および設計支援方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩの微細化、高集積化にともない、プロセスのばらつき、電源電圧の低下、クロストークなどの影響が大きくなってきており、回路遅延の変動が増大している。特に、テクノロジの微細化にともない回路全体の遅延に占める配線遅延の割合が増大しており、配線プロセスのばらつきを考慮したタイミング検証が重要となってきている。
【０００３】
従来より、プロセスのばらつきを考慮したタイミング検証を実現する手法が開示されている（たとえば、下記特許文献１〜４参照。）。具体的には、たとえば、配線長と配線間隔との２要素に依存する係数として、ワースト条件、ベスト条件それぞれの配線容量係数および配線抵抗係数を算出して遅延時間を計算することにより、プロセス変動要因の変動量を考慮したタイミング検証をおこなう手法が開示されている。
【０００４】
【特許文献１】特開平１０−２０７９３７号公報
【特許文献２】特開２００６−３３８２５３号公報
【特許文献３】特開２００４−３６２２０２号公報
【特許文献４】特開平７−１８２３８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、微細化にともなう配線抵抗の増大を考慮したタイミング検証がおこなわれていなかった。このため、６５ｎｍ以降のプロセスでの配線抵抗のばらつき影響が顕著となってしまい、時定数が最大となるＲＣｗｏｒｓｔコーナーでのセットアップエラーと競合するホールドエラーが多発している。この結果、レイアウト後の配置最適化、配線経路最適化など回路設計の手戻り作業が多発してしまい、検証期間の長期化、ひいては設計期間の長期化を招くという問題があった。
【０００６】
このプログラム、該プログラムを記録した記録媒体、装置、および方法は、セットアップエラーと競合するホールドエラーの発生原因となる配線の配線幅を太幅にして配線抵抗のばらつき影響を低減させることにより、効率的かつ高精度なタイミング検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、プログラム、該プログラムを記録した記録媒体、装置、および方法は、設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得し、そのタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出し、そのクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更することを要件とする。
【０００８】
これによれば、ホールドエラーの発生原因となるクロックネット内の配線の配線幅を太幅にして配線遅延の絶対値を低下させることにより、配線抵抗のばらつき影響を低減させることができる。
【０００９】
また、上記プログラム、該プログラムを記録した記録媒体、装置、および方法において、前記クロックツリーのうちセットアップエラーと競合するホールドエラーが発生しているクロックネットを検出することとしてもよい。
【００１０】
これによれば、セットアップエラーと競合するホールドエラーの発生原因となるクロックネット内の配線の配線幅を太幅にすることができる。
【００１１】
また、上記プログラム、該プログラムを記録した記録媒体、装置、および方法において、さらに、前記ホールドエラーと前記セットアップエラーとが競合するクロックネットのうち、当該クロックネットのリーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネットを検出することとしてもよい。
【００１２】
これによれば、セットアップエラーと競合するホールドエラーの発生原因となるクロックネットのうち、リーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネット内の配線の配線幅を太幅にすることができる。
【００１３】
また、上記プログラム、該プログラムを記録した記録媒体、装置、および方法において、前記クロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、前記他の配線の配線幅よりも太くする配線に決定し、その配線の配線幅を、前記他の配線の配線幅よりも太い配線幅に変更することとしてもよい。
【００１４】
これによれば、クロックネット内の配線のうち、複数のクロックパスにおいて配線遅延のばらつきが共通する部分を除く残余の配線だけを太幅にすることができる。
【００１５】
また、上記プログラム、該プログラムを記録した記録媒体、装置、および方法において、前記クロックネット内の配線のうち、クロックの分岐点となる回路素子から末端よりも一つ前段の回路素子までの配線を、前記他の配線の配線幅よりも太くする配線に決定することとしてもよい。
【００１６】
これによれば、末端の回路素子での配線混雑を想定して、末端よりも一つ前段の回路素子までの配線の配線幅を太幅にすることができる。
【００１７】
また、上記プログラム、該プログラムを記録した記録媒体、装置、および方法において、デザインルールに従って、変更対象となる配線と当該配線に隣接する配線との間の最小間隔が配線トラックのトラック間隔となるように変更することとしてもよい。
【００１８】
これによれば、ダブルスペースで太幅配線をおこなうことにより、隣接する配線とのクロストークを防止することができる。
【００１９】
また、この設計データは、一部の配線の配線幅を、当該一部の配線とは異なる他の配線の配線幅よりも太幅にすることにより、一部の配線を辿るクロックのタイミングが補償された設計対象回路に関することを要件とする。
【００２０】
また、この半導体集積回路は、一部の配線の配線幅を、当該一部の配線とは異なる他の配線の配線幅よりも太幅にすることにより、一部の配線を辿るクロックのタイミングが補償されていることを要件とする。
【００２１】
これらによれば、高品質の半導体集積回路を早期に市場に提供することができる。
【発明の効果】
【００２２】
このプログラム、該プログラムを記録した記録媒体、装置、および方法によれば、セットアップエラーと競合するホールドエラーの発生原因となる配線の配線幅を太幅にして配線抵抗のばらつき影響を低減させることにより、効率的かつ高精度なタイミング検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明にかかる設計支援プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。
【００２４】
（設計支援装置のハードウェア構成）
まず、設計支援装置のハードウェア構成について説明する。図１は、本実施の形態にかかる設計支援装置のハードウェア構成を示すブロック図である。
【００２５】
図１において、設計支援装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３とを備えている。また、各構成部は、バス１２０によってそれぞれ接続されている。
【００２６】
ここで、ＣＰＵ１０１は、設計支援装置１００の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記録している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００２７】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを設計支援装置１００に読み取らせたりする。
【００２８】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８には、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２９】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３０】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３１】
スキャナ１１２は、画像を光学的に読み取り、装置内に画像データを読み込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタなどを採用することができる。
【００３２】
（本実施の形態の概要）
つぎに、本実施の形態の概要について説明する。図２は、本実施の形態の概要を示す説明図である。図２において、設計対象回路２００は、クロックソースＣＳと複数の回路素子（たとえば、クロックバッファ、フリップフロップＦＦ１，ＦＦ２など）とから構成されている。なお、図面では、設計対象回路の一部を抜粋して表わしている。
【００３３】
また、クロックソースＣＳからフリップフロップＦＦ１までのクロック信号線をクロックパスＰ１（図２中、太線）、クロックソースＣＳからフリップフロップＦＦ２までのクロック信号線をクロックパスＰ２（図２中、太線）、フリップフロップＦＦ１からフリップフロップＦＦ２までのデータ信号線をデータパスＰ３（図２中、点線矢印）とする。
【００３４】
ここでは、配線のコーナー条件として配線容量（Ｃ）が最大となるＣｗｏｒｓｔコーナーに着目し、クロックソースＣＳからのクロックが、フリップフロップＦＦ１およびフリップフロップＦＦ２に同一時刻に到達するようにスキューが調整されている。ここで、配線コーナーについて説明する。
【００３５】
図３は、配線コーナーを示す説明図である。図３に示すように、配線幅が９０ｎｍ以前のプロセスにおいては、Ｃｗｏｒｓｔコーナーに着目し、論理最適化、配置最適化および配線経路最適化により、セットアップエラーの調整をおこなっていた。なぜなら、回路全体の遅延時間に占める配線の遅延時間の割合が小さいため、Ｃｗｏｒｓｔコーナーを考慮するだけで十分にタイミング調整をおこなうことができたからである。
【００３６】
一方で、配線幅が６５ｎｍ以降のプロセスにおいては、配線抵抗（Ｒ）が大きくなり配線遅延が増大するため、ＲＣｗｏｒｓｔコーナー（時定数ｗｏｒｓｔ）での配線遅延に占める配線抵抗（Ｒ）成分の影響が非常に大きくなり、従来のＣｗｏｒｓｔコーナーに着目したセットアップエラーの調整後にＲｗｏｒｓｔコーナーでタイミング検証をするとセットアップエラーと競合するホールドエラーが発生しやすい回路構成になりやすくなってしまう。図２においては、配線遅延（Ｒ）が増大し、ＲＣｗｏｒｓｔコーナーでの配線遅延値がＣｗｏｒｓｔコーナーに比べて２倍になっている（図２中、２１０，２２０）。
【００３７】
具体的には、たとえば、ＯＣＶ（Ｏｎ  Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎ）が『Ｍｉｎ＝０．９５、Ｍａｘ＝１』で、クロックパスＰ１，Ｐ２の分岐点（クロックバッファ２３０）からの配線段数５のＭｉｎ配線遅延が４７５［ｐｓ］、Ｍａｘ配線遅延が５００［ｐｓ］のケースでは、配線抵抗の絶対値が２倍になると、スキュー差が２５［ｐｓ］から５０［ｐｓ］となる。この結果、データパスＰ３において、セットアップエラーと競合するホールドエラーが発生している。
【００３８】
このため、本実施の形態では、ＲＣｗｏｒｓｔコーナーを考慮したＲＣ抽出、遅延計算、ＳＴＡ（静的遅延解析）をおこない、ホールドエラーとセットアップエラーとが競合する箇所の配線を通常の配線幅よりも太幅にすることにより、配線遅延による影響を低減させる。なお、配線抵抗（Ｒ）は温度上昇に応じて大きくなることを考慮して、検証コーナーをＲＣｗｏｒｓｔでかつ高温とする。
【００３９】
また、各コーナー条件における配線構造を以下に定義する。図４−１は、配線の構造定義を示す説明図である。図４−２は、配線断面構造イメージを示す説明図である。図４−１において、配線構造テーブル４１０には、各コーナー条件における配線構造（幅、厚さ、高さ、ビア抵抗）が定義されている。ただし、「＋」は標準の配線構造に比べて大きいことを表わし、「−」は標準の配線構造に比べて小さいことを表わしている。
【００４０】
図４−２において、配線断面構造のイメージが示されており、４２０は層間絶縁膜、４３０は配線メタルである。ここで、ＲＣｗｏｒｓｔを例に挙げると、ＲＣｗｏｒｓｔコーナー条件における配線構造は、幅、厚さ、高さがいずれも標準値よりも小さく、ビア抵抗が標準値よりも大きくなっている。
【００４１】
（設計支援装置の機能的構成）
つぎに、本実施の形態にかかる設計支援装置１００の機能的構成について説明する。図５は、本実施の形態にかかる設計支援装置の機能的構成を示すブロック図である。図５において、設計支援装置１００は、取得部５０１と、検出部５０２と、変更部５０３と、決定部５０４と、から構成されている。
【００４２】
これら各機能５０１〜５０４は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能５０１〜５０４からの出力データはメモリに保持される。また、図５中矢印で示した接続先の機能的構成は、接続元の機能からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００４３】
まず、取得部５０１は、設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する機能を有する。ここで扱う設計対象回路は、たとえば、配線幅が６５ｎｍ以降のプロセスで製造される電子回路である。また、時定数とは、設計対象回路の応答の速さを示す指標であり、配線の配線容量（Ｃ）と配線抵抗（Ｒ）との乗算値『ＲＣ』によって表わされる。
【００４４】
つまり、タイミング解析結果は、配線容量（Ｃ）と配線抵抗（Ｒ）との乗算値が最大となるＲＣｗｏｒｓｔコーナー（図３参照）を考慮したタイミング検証の解析結果である。また、タイミング検証とは、設計対象回路の回路遅延を見積もり、最適化をおこなって、遅延が設計対象回路の正常動作に必要な範囲内にあることを確認する工程のことである。
【００４５】
ここでは、ＤＲＣ（Ｄｅｓｉｇｎ  Ｒｕｌｅ  Ｃｈｅｃｋ）を考慮することなく仮配線されたクロックツリーに対して、簡易的なＳＴＡ（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）を実行することによってタイミング検証をおこない、そのタイミング解析結果を取得する。
【００４６】
検出部５０２は、取得部５０１によって取得されたタイミング解析結果に基づいて、設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する。クロックツリーは、クロックを生成するクロックソースをルートとし、末端の回路素子群（たとえば、フリップフロップ）にまでクロックを伝搬する電子回路である。
【００４７】
このクロックツリーは、たとえば、同一クロックネット内の全フリップフロップ（ＦＦ）が同一時刻にクロックを受けるものと仮定してＦＦ間のタイミング制約を導き出し、タイミング最適化配置をおこなったあと、スキュー（ＦＦ間のクロック到達時刻の差）を最小化するように構築されたものである。また、クロックネットとは、クロックソースから同一時刻にクロックを受ける回路素子の集合である。
【００４８】
具体的には、たとえば、設計対象回路に関するネットリスト、およびクロックソース、回路素子の配置・配線情報に基づいてクロックツリーを生成することができる。なお、クロックソースから回路素子群までのクロックパスの途中には、クロック制御回路やクロックゲートなどが接続されていてもよい。クロック制御回路は、クロックソースからのクロックに応じてクロックゲートを制御する。
【００４９】
上述したクロックツリー、ネットリスト、配置・配線情報は、図示しない外部装置から取得することとしてもよく、また、ユーザの操作入力、図示しないデータベースやライブラリからの抽出によって取得することとしてもよい。
【００５０】
ここで、設計対象回路がターゲット周波数で動作するために満たすべき２種類のタイミング制約について説明する。通常、送り側（クロックソース、ＦＦ）から出た信号が、受け側のＦＦに到達するタイミングは、現クロックのあと、つぎのクロックの前になければならない。信号の到達が現在のクロックよりもあとに届くことを保証するのがホールド制約、つぎのクロックよりも前に届くことを保証するのがセットアップ制約である。
【００５１】
より具体的には、クロック・エッジの前にデータが変化してはいけない時間をセットアップ時間、クロック・エッジのあとにデータが変化してはいけない時間をホールド時間という。これらのタイミング制約を満たしていない場合、クロックが、データが変化する前の値か、変化したあとの値か、どちらの値を読み込むのか分からず、ホールドエラーまたはセットアップエラーが発生してしまう。
【００５２】
つまり、検出部５０２は、ホールド制約に違反して信号の到達が現在のクロックよりも先に届いてしまい、ホールドエラーが発生しているクロックネットを検出する。上述した図２の例では、データパスＰ３でホールドエラーが発生しており、クロックソースＣＳから末端のＦＦ１，ＦＦ２までのクロックネットを検出することとなる。
【００５３】
また、検出部５０２は、クロックツリーのうち、セットアップエラーと競合するホールドエラーが発生しているクロックネットを検出することとしてもよい。具体的には、セットアップ時間に余裕がないため、ホールドエラーを解消するための修正をおこなうと、その修正にともなうセットアップエラーが発生してしまうクロックネットを検出する。
【００５４】
すなわち、ホールドエラーが発生しているデータパス（たとえば、図２に示したデータパスＰ３）上にクロックバッファを挿入するなどの修正をおこなった場合に、セットアップ時間に余裕がないため、修正にともなうゲート遅延によってセットアップエラーが発生するクロックネットを検出する。
【００５５】
また、検出部５０２は、ホールドエラーとセットアップエラーとが競合するクロックネットのうち、当該クロックネットのリーフ数、クロック周波数およびゲート段数の少なくともいずれかが最大となるクロックネットを検出することとしてもよい。リーフ数は、クロックネットのフリップフロップの総数である。クロック周波数は、クロックネットの動作周波数である。ゲート段数は、クロックネットの論理ゲートの総数である。
【００５６】
たとえば、ホールドエラーとセットアップエラーとが競合するクロックネットが複数存在し、リーフ数が最大のクロックネットを検出する場合、検出部５０２は、複数のクロックネットのうちフリップフロップ数が最も多いクロックネットを検出することとなる。
【００５７】
変更部５０３は、検出部５０２によって検出されたクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更する。具体的には、仮配線または詳細配線に通常使用される配線の配線幅（以下、「通常幅」という）よりも太い配線幅に変更する。これは、配線幅を太くすることで配線抵抗を小さくし、配線遅延の絶対値を低減させるためにおこなう。
【００５８】
なお、太い配線幅の具体的数値は、ＲＯＭ１０２やＲＡＭ１０３などの記憶領域に予め保持されている。この具体的数値は、配線幅を太幅にすることによる配線容量の増加、および配線抵抗の減少のバランスを考慮して設定される数値である。具体的には、たとえば、簡易モデルを使用して配線抵抗のばらつきを測定する実験結果から適切な数値を導き出すこととしてもよい。
【００５９】
決定部５０４は、検出部５０２によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、他の配線の配線幅よりも太くする配線に決定する。複数のクロックパス間で共通する部分（配線）は、配線遅延のばらつきが共通となる。このため、クロックネット内の配線のうち、共通部分を除く残余の配線だけを太幅にする。
【００６０】
また、決定部５０４は、検出部５０２によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端よりも一つ前段の回路素子までの配線を、他の配線の配線幅よりも太くする配線に決定することとしてもよい。すなわち、末端の回路素子（フリップフロップなど）の配線混雑を想定して、一つ前段の回路素子までの配線を太幅にする。
【００６１】
具体的には、たとえば、末端の回路素子での配線混雑度が高く、隣接する配線間でダブルスペースを確保することができない場合などに、一つ前段の回路素子までの配線を太幅にすることとしてもよい。これにより、末端の回路素子における、配線間のクロストークを防止することができる。
【００６２】
変更部５０３は、決定部５０４によって決定された配線を、他の配線の配線幅よりも太い配線幅に変更することとしてもよい。このとき、変更部５０３は、デザインルール（ＤＲＣ）に従って、変更対象となる配線と当該配線に隣接する配線との間の最小間隔が配線トラックのトラック間隔となるように変更することとしてもよい。つまり、太幅にすることによる配線容量の増大、隣接する配線との間のクロストークを考慮したダブルスペースによる配線をおこなう。
【００６３】
具体的には、変更部５０３は、ＲＯＭ１０２やＲＡＭ１０３などの記憶領域から配線幅の具体的数値を読み出して、その具体的数値に従って、変更対象となる配線の配線幅を変更する。なお、変更対象となる配線を除く残余の配線は、ＤＲＣを考慮した通常幅の配線をおこなうこととなる。変更部５０３による変更処理は、自動的に実行されてもよく、また、ユーザの操作入力を受け付けることで実行することとしてもよい。
【００６４】
上記検出部５０２、変更部５０３および決定部５０４による一連の処理は、クロックツリー内のホールドエラーが解消されるまで繰り返し実行されることとしてもよい。具体的には、たとえば、セットアップエラーと競合するホールドエラーがすべて解消されるまで一連の処理を繰り返すこととしてもよい。
【００６５】
また、より深刻なホールドエラーが発生している箇所（たとえば、セットアップ時間がより厳しい箇所）を優先的に太幅にしていき、ホールドエラーの発生箇所に対する修正箇所の割合が予め設定された閾値を超えた場合に、上記検出部５０２、変更部５０３および決定部５０４による一連の処理を終了することとしてもよい。
【００６６】
具体的には、たとえば、閾値を「１０％」と設定した場合、より深刻なホールドエラーが発生している箇所を優先して修正していき、全体の１０％のホールドエラーが解消された場合に一連の処理を終了する。閾値の値は、図１に示したキーボード１１０やマウス１１１などをユーザが操作することで、予め任意の値を設定することができる。
【００６７】
なお、上述した取得部５０１、検出部５０２、変更部５０４、および決定部５０３は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、またはＩ／Ｆ１０９によって、その機能を実現する。
【００６８】
（設計支援装置の設計支援処理手順）
つぎに、本実施の形態にかかる設計支援装置１００の設計支援処理手順について説明する。図６は、本実施の形態にかかる設計支援装置の設計支援処理手順を示すフローチャートである。図６のフローチャートにおいて、まず、取得部５０１により、設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得したか否かを判断する（ステップＳ６０１）。
【００６９】
ここで、タイミング解析結果を取得するのを待って（ステップＳ６０１：Ｎｏ）、取得した場合（ステップＳ６０１：Ｙｅｓ）、検出部５０２により、取得部５０１によって取得されたタイミング解析結果に基づいて、設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する（ステップＳ６０２）。
【００７０】
このあと、変更部５０３により、検出部５０２によって検出されたクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更して（ステップＳ６０３）、本フローチャートによる一連の処理を終了する。
【００７１】
また、ステップＳ６０２において、クロックツリーのうちセットアップエラーと競合するホールドエラーが発生しているクロックネットを検出することとしてもよい。さらに、ホールドエラーとセットアップエラーとが競合するクロックネットのうち、リーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネットを検出することとしてもよい。
【００７２】
また、ステップＳ６０３における変更処理の前に、決定部５０４により、検出部５０２によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、他の配線の配線幅よりも太くする配線に決定することとしてもよい。この場合、変更部５０３による変更処理は、決定部５０４によって決定された決定結果に基づいて実行される。
【００７３】
また、ステップＳ６０３において、デザインルールに従って、変更対象となる配線と当該配線に隣接する配線との間の最小間隔が配線トラックのトラック間隔となるように変更することとしてもよい。
【００７４】
以上説明した本実施の形態によれば、ホールドエラーの発生原因となるクロックネット内の配線の配線幅を太幅にして配線遅延の絶対値を低下させることにより、配線抵抗のばらつき影響を低減させることができる。このとき、セットアップエラーと競合するホールドエラーの発生原因となるクロックネット内の配線の配線幅を太幅にすることができる。
【００７５】
さらに、セットアップエラーと競合するホールドエラーの発生原因となるクロックネットのうち、リーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネット内の配線の配線幅を太幅にすることができる。
【００７６】
また、クロックネット内の配線のうち、複数のクロックパスにおいて配線遅延のばらつきが共通する部分を除く残余の配線だけを太幅にすることができる。これにより、不要な配線変更による配線率の低下を防ぐとともに、配線変更にかかる無駄な処理を削減することができる。
【００７７】
また、末端の回路素子での配線混雑を想定して、末端よりも一つ前段の回路素子までの配線の配線幅を太幅にすることができる。これにより、末端の回路素子における配線混雑度が高くなり、隣接する配線間でダブルスペースを確保することができない場合などに発生するクロストークを防止することができる。
【００７８】
さらに、デザインルールに従って、変更対象となる配線と当該配線に隣接する配線との間の最小間隔が配線トラックのトラック間隔となるように変更することができる。これにより、デザインルールで定められた配線間の最小間隔を確保することができ、太幅配線された配線と隣接する配線との間のクロストークを防止することができる。
【００７９】
また、本実施の形態で説明した一部の配線の配線幅を、当該一部の配線とは異なる他の配線の配線幅よりも太幅にすることにより、一部の配線を辿るクロックのタイミングが補償された設計対象回路に関する設計データは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって利用される。この結果、高品質な半導体集積回路を早期に市場に提供することができる。
【実施例】
【００８０】
つぎに、上述した実施の形態の実施例について説明する。ここで、設計対象回路２００のクロックツリーの生成手法について説明する。図７−１，図７−２は、クロックツリーの生成手法の概要を示す説明図である。なお、設計対象回路７００は、クロックが同期するグループごとに、４つのクロックグループＡ〜Ｄに分かれている。また、図面では一部を抜粋して表わしている。
【００８１】
（１）において、まず、設計対象回路７００を構成する回路素子群（クロックソースＣＳ、回路素子７０１〜７０４）の初期配置をおこなう。（２）において、全ＦＦ（回路素子７０１〜７０３）が同一時刻にクロックを受けるものと仮定してＦＦ間のタイミング制約を導き出し、タイミング最適化配置をおこなう。そして、クロックバッファを挿入し、スキューを最小化するようにクロックツリー７１０を生成する。
【００８２】
（３）において、ＤＲＣを考慮することなくクロックツリー７１０の仮配線をおこなう。さらに、クロック配線以外の配線についてもＤＲＣを考慮することなく仮配線をおこなう。このあと、仮配線されたクロックツリー７１０を用いて、ＲＣｗｏｒｓｔコーナーおよび高温条件でのＲＣ抽出、遅延計算、ＳＴＡを実行する。
【００８３】
ここで、上記取得部５０１によって取得されるタイミング解析結果について説明する。図８は、タイミング解析結果の一例を示す説明図である。図８において、タイミング解析結果８００は、クロックグループＡ〜Ｄごとに、リーフ数、クロック周波数、ゲート段数、およびホールドエラーの発生の有無に関する解析結果８００−１〜８００−４を有している。
【００８４】
リーフ数は、各クロックグループＡ〜Ｄ内に存在するＦＦの数である。また、クロック周波数は、各クロックグループＡ〜Ｄの動作周波数である。また、ゲート段数は、各クロックグループＡ〜Ｄ内に存在する論理ゲートの数である。
【００８５】
ここで、解析結果８００−２を例に挙げると、クロックグループＢについて、リーフ数が５００００［個］、クロック周波数が１００［Ｍｈｚ］、ゲート段数が３０［個］であり、ホールドエラーが発生していることを表わしている。つぎに、このタイミング解析結果８００を参照することにより、ホールドエラーが発生しているクロックグループＢ〜Ｄを絞り込む。
【００８６】
さらに、評価関数Ｆを用いて、ホールドエラーが発生しているクロックグループＢ〜Ｄのうち、配線変更対象となるクロックグループの絞り込みをおこなう。ここでは、評価関数Ｆを『Ｆ：ｔａｒｇｅｔ（リーフ数｜クロック周波数｜ゲート段数）』とする。これは、ｔａｒｇｅｔとして与えた項目（リーフ数、クロック周波数、ゲート段数）が最大となるクロックグループを選択することを意味している。
【００８７】
たとえば、リーフ数をｔａｒｇｅｔとした場合、複数のクロックグループ名を与えて最大のリーフ数のクロックグループ名を返す引数を設定する。ここでは、クロックグループＢのリーフ数が最大となっているため、クロックグループＢのクロックグループ名が返される。この結果、検出部５０２は、クロックツリー７１０のうち、クロックグループＢのクロックネットを検出することとなる。
【００８８】
また、クロック周波数をｔａｒｇｅｔとした場合、複数のクロックグループ名を与えて最大のクロック周波数のクロックグループ名を返す引数を設定する。ここでは、クロックグループＣのクロック周波数が最大となっているため、クロックグループＣのクロックグループ名が返される。この結果、検出部５０２は、クロックツリー７１０のうち、クロックグループＣのクロックネットを検出することとなる。
【００８９】
また、ゲート段数をｔａｒｇｅｔとした場合、複数のクロックグループ名を与えて最大のゲート段数のクロックグループ名を返す引数を設定する。ここでは、クロックグループＤのゲート段数が最大となっているため、クロックグループＤのクロックグループ名が返される。この結果、検出部５０２は、クロックツリー７１０のうち、クロックグループＤのクロックネットを検出することとなる。ここでは、ゲート段数をｔａｒｇｅｔとし、検出部５０２によってクロックグループＤのクロックネットが検出された場合を例に挙げて説明する。
【００９０】
図９は、配線変更対象のクロックネットを示す説明図である。図９において、クロックネット９００は、クロックソースＣＳと、クロックバッファＣＢ１〜ＣＢ１１と、フリップフロップＦＦ１，ＦＦ２とから構成されている。なお、図面では、クロックネットの一部を抜粋して表わしている。ここでは、フリップフロップＦＦ１からフリップフロップＦＦ２までのデータ信号線においてホールドエラーが発生している。
【００９１】
まず、検出部５０２によってクロックネット９００が検出されると、仮配線されたクロックネット９００内の配線を消去する。このあと、決定部５０４により、そのクロックネット内の配線のうち、クロックの分岐点となるクロックバッファＣＢ３から末端のフリップフロップＦＦ１，ＦＦ２までの配線（図９中９１０，９２０）を、通常幅よりも太くする配線に決定する。
【００９２】
このあと、変更部５０３により、決定部５０４によって決定された配線について、ＤＲＣを考慮した通常幅よりも太い配線幅での詳細配線をおこなう。さらに、決定部５０４によって決定された配線を除く残余の配線について、ＤＲＣを考慮した通常幅での詳細配線をおこなう。このとき、配線トラックのトラック間隔分確保して、配線幅の変更をおこなうことより、太幅配線された配線と隣接する配線との間のクロストークを防止する。
【００９３】
つぎに、実施例における設計支援処理手順について説明する。図１０は、実施例における設計支援処理手順を示すフローチャートである。図１０のフローチャートにおいて、まず、設計対象回路７００を構成する回路素子群の初期配置を実行する（ステップＳ１００１）。このあと、全ＦＦが同一時刻にクロックを受けるものと仮定してＦＦ間のタイミング制約を導き出し、タイミング最適化配置を実行する（ステップＳ１００２）。
【００９４】
そして、クロックバッファを挿入し、スキューを最小化するようにクロックツリー７１０を生成する（ステップＳ１００３）。このあと、ＤＲＣを考慮することなくクロックツリー７１０、およびクロック配線以外の配線の仮配線を実行する（ステップＳ１００４）。つぎに、取得部５０１により、クロックツリー７１０に関するタイミング解析結果８００を取得する（ステップＳ１００５）。
【００９５】
このあと、検出部５０２により、ホールドエラーとセットアップエラーとが競合するクロックグループＢ〜Ｄのクロックネットを検出し（ステップＳ１００６）、さらに、クロックグループＢ〜Ｄのクロックネットのうちゲート段数が最大のクロックグループＤのクロックネット９００を検出する（ステップＳ１００７）。
【００９６】
そして、クロックネット９００内の配線を消去し（ステップＳ１００８）、決定部５０４により、クロックネット９００内の配線のうち、クロックの分岐点となるクロックバッファＣＢ３から末端のフリップフロップＦＦ１，ＦＦ２までの配線を、通常幅よりも太くする配線に決定する（ステップＳ１００９）。
【００９７】
最後に、変更部５０３により、決定部５０４によって決定された配線について、ＤＲＣを考慮した通常幅よりも太い配線幅での詳細配線を実行するとともに、決定部５０４によって決定された配線を除く残余の配線について、ＤＲＣを考慮した通常幅での詳細配線を実行する（ステップＳ１０１０）。
【００９８】
以上説明した実施例によれば、セットアップエラーと競合するホールドエラーの発生原因となるクロックネット９００内の配線の配線幅を太幅にして配線遅延の絶対値を低下させることにより、配線抵抗のばらつき影響を低減させることができる。これにより、設計対象回路７００内で発生するホールドエラーと競合するセットアップエラーを解消することができる。
【００９９】
また、クロックネット９００内の配線のうち、複数のクロックパスにおいて配線遅延のばらつきが共通する部分（クロックソースＣＳからクロックバッファＣＢ３までの配線）を除く残余の配線だけを太幅にすることができる。これにより、不要な配線変更による配線率の低下を防ぐとともに、配線変更にかかる無駄な処理を削減することができる。
【０１００】
以上説明したように、プログラム、該プログラムを記録した記録媒体、装置、および方法によれば、セットアップエラーと競合するホールドエラーの発生原因となる配線の配線幅を太幅にして配線抵抗のばらつき影響を低減させることにより、効率的かつ高精度なタイミング検証を実現し、設計者の負担軽減および設計期間の短縮化を図ることができる。
【０１０１】
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１０２】
また、本実施の形態で説明した設計支援装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した設計支援装置１００の機能的構成５０１〜５０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、設計支援装置１００を製造することができる。
【０１０３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０４】
（付記１）設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得させる取得工程と、
前記取得工程によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出させる検出工程と、
前記検出工程によって検出されたクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更させる変更工程と、
をコンピュータに実行させることを特徴とする設計支援プログラム。
【０１０５】
（付記２）前記検出工程は、
前記クロックツリーのうちセットアップエラーと競合するホールドエラーが発生しているクロックネットを検出させることを特徴とする付記１に記載の設計支援プログラム。
【０１０６】
（付記３）前記検出工程は、
さらに、前記ホールドエラーと前記セットアップエラーとが競合するクロックネットのうち、当該クロックネットのリーフ数、クロック周波数およびゲート段数の少なくともいずれか一つが最大となるクロックネットを検出させることを特徴とする付記２に記載の設計支援プログラム。
【０１０７】
（付記４）前記検出工程によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端の回路素子までの配線を、前記他の配線の配線幅よりも太くする配線に決定させる決定工程を前記コンピュータに実行させ、
前記変更工程は、
前記決定工程によって決定された配線を、前記他の配線の配線幅よりも太い配線幅に変更させることを特徴とする付記１〜３のいずれか一つに記載の設計支援プログラム。
【０１０８】
（付記５）前記決定工程は、
前記検出工程によって検出されたクロックネット内の配線のうち、クロックの分岐点となる回路素子から末端よりも一つ前段の回路素子までの配線を、前記他の配線の配線幅よりも太くする配線に決定させることを特徴とする付記４に記載の設計支援プログラム。
【０１０９】
（付記６）前記変更工程は、
デザインルールに従って、変更対象となる配線と当該配線に隣接する配線との間の最小間隔が配線トラックのトラック間隔となるように変更させることを特徴とする付記１〜５のいずれか一つに記載の設計支援プログラム。
【０１１０】
（付記７）付記１〜６のいずれか一つに記載の設計支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１１１】
（付記８）一部の配線の配線幅を、当該一部の配線とは異なる他の配線の配線幅よりも太幅にすることにより、前記一部の配線を辿るクロックのタイミングが補償された設計対象回路に関する設計データを記録したコンピュータに読み取り可能な記録媒体。
【０１１２】
（付記９）一部の配線の配線幅を、当該一部の配線とは異なる他の配線の配線幅よりも太幅にすることにより、前記一部の配線を辿るクロックのタイミングが補償されていることを特徴とする半導体集積回路。
【０１１３】
（付記１０）設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する取得手段と、
前記取得手段によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する検出手段と、
前記検出手段によって検出されたクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更する変更手段と、
を備えたことを特徴とする設計支援装置。
【０１１４】
（付記１１）設計対象回路の時定数が最大となるコーナー条件を用いて解析されたタイミング解析結果を取得する取得工程と、
前記取得工程によって取得されたタイミング解析結果に基づいて、前記設計対象回路に関するクロックツリーのうち、ホールドエラーが発生しているクロックネットを検出する検出工程と、
前記検出工程によって検出されたクロックネット内の配線の配線幅を、当該配線とは異なる他の配線の配線幅よりも太い配線幅に変更する変更工程と、
を含んだことを特徴とする設計支援方法。
【図面の簡単な説明】
【０１１５】
【図１】本実施の形態にかかる設計支援装置のハードウェア構成を示すブロック図である。
【図２】本実施の形態の概要を示す説明図である。
【図３】配線コーナーを示す説明図である。
【図４−１】配線の構造定義を示す説明図である。
【図４−２】配線断面構造イメージを示す説明図である。
【図５】本実施の形態にかかる設計支援装置の機能的構成を示すブロック図である。
【図６】本実施の形態にかかる設計支援装置の設計支援処理手順を示すフローチャートである。
【図７−１】クロックツリーの生成手法の概要を示す説明図（その１）である。
【図７−２】クロックツリーの生成手法の概要を示す説明図（その２）である。
【図８】タイミング解析結果の一例を示す説明図である。
【図９】配線変更対象のクロックネットを示す説明図である。
【図１０】実施例における設計支援処理手順を示すフローチャートである。
【符号の説明】
【０１１６】
１００  設計支援装置
２００，７００  設計対象回路
４１０  配線構造テーブル
４２０  層間絶縁膜
４３０  配線メタル
５０１  取得部
５０２  検出部
５０３  変更部
５０４  決定部
７０１〜７０４  回路素子
７１０  クロックツリー
８００  タイミング解析結果
９００  クロックネット
【図１】
0005167740.tif 000002
【図２】
0005167740.tif 000003
【図３】
0005167740.tif 000004
【図４−１】
0005167740.tif 000005
【図４−２】
0005167740.tif 000006
【図５】
0005167740.tif 000007
【図６】
0005167740.tif 000008
【図７−１】
0005167740.tif 000009
【図７−２】
0005167740.tif 000010
【図８】
0005167740.tif 000011
【図９】
0005167740.tif 000012
【図１０】
0005167740.tif 000013