(57)【要約】【課題】ホールドエラーの修正において冗長なセルの挿入を軽減するとともに設計の後戻りを軽減する半導体集積回路装置の設計支援システム及び設計支援プログラムを提供すること。【解決手段】ネットリスト１２４のレイアウト情報を用いて作成された遅延情報１６２に基づいて、ネットリスト１２４に含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブル２０２を生成する。ネットリスト１２４に対して遅延情報１６２とタイミング制約情報１７０−１〜ｎを用いて行われた静的タイミング解析により得られるタイミング解析情報１９２−１〜ｎに基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報２２２を生成する。バッファテーブル２０２とホールドエラー解析情報２２２とに基づいて、ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定する。【選択図】図３
2012168624.tif 000002
【特許請求の範囲】
【請求項１】
ネットリストのレイアウト情報を用いて作成された遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブルを生成するバッファテーブル生成部と、
前記ネットリストに対して前記遅延情報と所与のタイミング制約情報を用いて行われた静的タイミング解析により得られるタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報を生成するホールドエラー解析情報生成部と、
前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するバッファ挿入方針決定部と、を含む、半導体集積回路の設計支援システム。
【請求項２】
請求項１において、
前記ホールドエラー解析情報生成部は、
前記ネットリストに対する複数の前記静的タイミング解析により得られる複数のタイミング解析情報に基づいて前記ホールドエラー解析情報を生成し、当該複数のタイミング解析情報においてホールドエラーの同じ発生位置に対して複数のエラー量が得られた場合は、当該複数のエラー量に基づいて当該ホールドエラーの発生位置のエラー量を決定する、半導体集積回路の設計支援システム。
【請求項３】
請求項２において、
前記ホールドエラー解析情報生成部は、
前記複数のタイミング解析情報においてホールドエラーの同じ発生位置に対して複数のエラー量が得られた場合は、当該複数のエラー量のうちの最大のエラー量を選択し、当該ホールドエラーの発生位置のエラー量とする、半導体集積回路の設計支援システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記バッファテーブル生成部は、
前記遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に複数の遅延条件に対する遅延時間を算出し、バッファの種類と前記複数の遅延条件に対する遅延時間との対応関係を表す前記バッファテーブルを生成し、
前記ホールドエラー解析情報生成部は、
前記複数の遅延条件に対する静的タイミング解析により得られる前記タイミング解析情報に基づいて、前記ホールドエラーの発生位置とエラー量との対応関係毎に、当該ホールドエラーが発生した遅延条件を属性として追加して前記ホールドエラー解析情報を生成し、
前記バッファ挿入方針決定部は、
前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記複数の遅延条件に対するホールドエラーが修正されるように、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定する、半導体集積回路の設計支援システム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記バッファ挿入方針決定部は、
指定されたバッファ挿入条件に応じて、前記挿入するバッファの種類及び数を決定する、半導体集積回路の設計支援システム。
【請求項６】
請求項１乃至５のいずれかにおいて、
バッファ挿入コマンドに応じて、前記ネットリストに対してバッファを挿入した新たなネットリストを生成するネットリスト修正部をさらに含み、
前記バッファセル挿入方針決定部は、
前記バッファ挿入コマンドとして、前記ホールドエラーの各発生位置に、決定した種類のバッファを決定した数だけ挿入するためのコマンドを生成する、半導体集積回路の設計支援システム。
【請求項７】
請求項６において、
前記バッファ挿入方針決定部は、
前記バッファの挿入位置及び挿入するバッファの種類と数を記述したテキスト情報をさらに生成する、半導体集積回路の設計支援システム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記ホールドエラー解析情報に、前記ホールドエラーの発生位置とエラー量との対応関係と同じフォーマットで、バッファを挿入する位置と挿入するバッファの遅延時間との対応関係を追加するホールドエラー解析情報変更部をさらに含む、半導体集積回路の設計支援システム。
【請求項９】
ネットリストのレイアウト情報から抽出された寄生パラメーターを用いて作成された遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブルを生成するバッファテーブル生成部と、
前記ネットリストに対して前記遅延情報と所与のタイミング制約情報を用いて行われた静的タイミング解析により得られるタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報を生成するホールドエラー解析情報生成部と、
前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するバッファ挿入方針決定部としてコンピューターを機能させる、半導体集積回路の設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置の設計支援システム及び設計支援プログラムに関する。
【背景技術】
【０００２】
大規模ＬＳＩが設計開発されている現在において、一般に、デジタルブロックのレイアウト作業は自動配置配線システムを用いて自動化されている。そして、最終的なサインオフの段階で、自動配置配線システムによる配置配線後のネットリストとレイアウトに対してＲＣ抽出を行い、抽出結果に基づく遅延計算により得られる遅延情報を用いて厳密な静的タイミング検証が行われる。検証結果にタイミングエラーがあれば、ネットリストとレイアウトを修正して静的タイミング検証を再度行わなければならず、タイミングエラーがなくなるまでこの作業を繰り返すことになる。この繰り返しの回数を減らすために、タイミング制約を与えてタイミングドリブンによる配置配線を行う自動配置配線システムが開発されており、広く利用されている。
【０００３】
この自動配置配線システムを用いて、例えば、セットアップタイムに対するタイミング制約を与えてタイミングドリブンによる配置配線を行うことで、セットアップエラーをなくすことは可能である。しかしながら、セットアップタイムに対するタイミング制約を与えて配置配線をした場合、ホールドタイムが満たされる保証がなく、サインオフ時の静的タイミング検証においてホールドエラーが発生する可能性がある。この問題を解決するために、例えば、特許文献１では、複数の配線遅延制約を全て満足するまで論理セルの配置や配線の改善を繰り返すタイミングドリブン配置配線による自動配置配線手法が提案されている。この配置配線手法によれば、理想的には、セットアップエラーもホールドエラーもないレイアウトを生成することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−５６０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、サインオフ時の静的タイミング検証では、配置配線後のネットリストとレイアウトに対するＲＣ抽出結果に基づく高精度の遅延情報を用いるのに対して、実用化されている自動配置配線システムでは、遅延情報の精度が相対的に低く、微小なホールドエラーもすべて排除したレイアウトを生成できるとは限らない。配置配線システムに与えるホールドタイムのタイミング制約を厳しく設定することで、ホールドエラーをすべて排除したレイアウトを生成することも可能ではあるが、冗長なバッファが追加されることになる。そのため、例えば、レイアウトサイズの制約が厳しい設計では、ホールドタイムのタイミング制約を厳しく設定して配置配線させることができず、サインオフ時の静的タイミング検証でホールドエラーが発見され、ホールドエラーを修正する必要が生じる場合がある。あるいは、最初から自動配置配線システムではホールドエラーの修正を行わず、サインオフの段階でホールドエラーを修正する場合もある。
【０００６】
ホールドエラーの修正は、ホールドエラーが発生した位置にバッファを挿入することで行うのが一般的であるが、挿入するバッファの種類と数は設計者の経験に基づいて決定される場合が多い。この場合、挿入するバッファの種類と数を誤ると、過大又は過小なホールドエラー修正になる恐れがある。修正が過大の場合は冗長なバッファが追加されるためレイアウトサイズが無駄に大きくなり、修正が過小の場合は静的タイミング検証結果にホールドエラーが再度発生することになる。また、簡単な修正の場合は、設計者がネットリストを手修正してバッファを挿入する場合もあり、デザインルールに違反する類のエラー（ショートやオープンなど）はチェッカーで排除できるが、バッファの挿入位置を間違えた場合は、再配置配線後の静的タイミング検証で初めて気付くことになる。
【０００７】
また、サインオフ時の静的タイミング検証では、複数の動作モード（ノーマルモード、ＳＣＡＮモード、ＪＴＡＧモード、ＭＢＩＳＴモード等）に対してタイミングエラーの有無を検証するため、これら複数モードの検証結果において、ホールドエラーの発生位置が異なる場合や、ホールドエラーの発生位置が同じでもエラー量が異なる場合がある。また、各モードに対して、温度、電源電圧、プロセス条件等が異なる複数の遅延条件（ｍｉｎ，ｔｙｐ，ｍａｘ等）を設定して静的タイミング検証が行われるため、１つのモードでも、ホールドエラーの発生位置やエラー量が異なる場合もある。そのため、遅延条件毎に複数のモードに対応する複数の検証結果をマージし、最適な遅延条件を選択してホールドエラーの修正に適用する必要があるが、人マニュアルによる判断や作業には限界があった。
【０００８】
本発明は、以上のような問題点に鑑みてなされたものであり、本発明のいくつかの態様によれば、ホールドエラーの修正において冗長なバッファの挿入を軽減するとともに設計の後戻りを軽減する半導体集積回路装置の設計支援システム及び設計支援プログラムを提供することができる。
【課題を解決するための手段】
【０００９】
（１）本発明は、ネットリストのレイアウト情報から抽出された寄生パラメーターを用いて作成された遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブルを生成するバッファテーブル生成部と、前記ネットリストに対して前記遅延情報と所与のタイミング制約情報を用いて行われた静的タイミング解析により得られるタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報を生成するホールドエラー解析情報生成部と、前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するバッファ挿入方針決定部と、を含む、半導体集積回路の設計支援システムである。
【００１０】
本発明では、ネットリストのレイアウト情報から抽出された寄生パラメーター（寄生抵抗値や寄生容量値等）を用いて作成された遅延情報に基づいて、当該ネットリストに含まれる各バッファの遅延時間を計算し、バッファテーブルを生成する。つまり、バッファテーブルに含まれる各バッファの遅延時間は、ライブラリーに用意された一般的な遅延時間ではなく、レイアウト領域のサイズや形状に応じて決まる実際のレイアウト情報に特化した精度の高い遅延時間である。本発明によれば、この精度の高い遅延時間に基づいてホールドエラー修正のために挿入するバッファの種類と数を適切に決定することができるので、冗長なバッファの挿入を軽減するとともに設計の後戻りを軽減することができる。
【００１１】
（２）この設計支援システムにおいて、前記ホールドエラー解析情報生成部は、前記ネットリストに対する複数の前記静的タイミング解析により得られる複数のタイミング解析情報に基づいて前記ホールドエラー解析情報を生成し、当該複数のタイミング解析情報においてホールドエラーの同じ発生位置に対して複数のエラー量が得られた場合は、当該複数のエラー量に基づいて当該ホールドエラーの発生位置のエラー量を決定するようにしてもよい。
【００１２】
このようにすれば、複数の静的タイミング解析の結果、同じ位置に異なるエラー量のホールドエラーが重複して発生した場合でも、ホールドエラーの発生位置毎に適切なエラー量を決定することができる。
【００１３】
（３）この設計支援システムにおいて、前記ホールドエラー解析情報生成部は、前記複数のタイミング解析情報においてホールドエラーの同じ発生位置に対して複数のエラー量が得られた場合は、当該複数のエラー量のうちの最大のエラー量を選択し、当該ホールドエラーの発生位置のエラー量とするようにしてもよい。
【００１４】
このようにすれば、複数の静的タイミング解析の結果、同じ位置に異なるエラー量のホールドエラーが重複して発生した場合でも、すべてのホールドエラーを解消させることができる。
【００１５】
（４）この設計支援システムにおいて、前記バッファテーブル生成部は、前記遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に複数の遅延条件に対する遅延時間を算出し、バッファの種類と前記複数の遅延条件に対する遅延時間との対応関係を表す前記バッファテーブルを生成し、前記ホールドエラー解析情報生成部は、前記複数の遅延条件に対する静的タイミング解析により得られる前記タイミング解析情報に基づいて、前記ホールドエラーの発生位置とエラー量との対応関係毎に、当該ホールドエラーが発生した遅延条件を属性として追加して前記ホールドエラー解析情報を生成し、前記バッファ挿入方針決定部は、前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記複数の遅延条件に対するホールドエラーが修正されるように、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するようにしてもよい。
【００１６】
このようにすれば、複数の遅延条件に対するホールドエラーを同時に解消することができる適切なバッファの種類と数を決定することができる。
【００１７】
（５）この設計支援システムにおいて、前記バッファ挿入方針決定部は、指定されたバッファ挿入条件に応じて、前記挿入するバッファの種類及び数を決定するようにしてもよい。
【００１８】
このようにすれば、バッファ挿入条件の指定を変更することで、挿入されるバッファの種類や数を目的に応じて変更することができる。
【００１９】
（６）この設計支援システムは、バッファ挿入コマンドに応じて、前記ネットリストに対してバッファを挿入した新たなネットリストを生成するネットリスト修正部をさらに含み、前記バッファセル挿入方針決定部は、前記バッファ挿入コマンドとして、前記ホールドエラーの各発生位置に、決定した種類のバッファを決定した数だけ挿入するためのコマンドを生成するようにしてもよい。
【００２０】
このようにすれば、冗長なバッファを挿入することなくホールドエラーが修正された適切なネットリストを得ることができる。
【００２１】
（７）この設計支援システムにおいて、前記バッファ挿入方針決定部は、前記バッファの挿入位置及び挿入するバッファの種類と数を記述したテキスト情報をさらに生成するようにしてもよい。
【００２２】
このようにすれば、ユーザーは、このテキスト情報を見ることで、バッファ挿入コマンドを直接見てもわかりにくいバッファの挿入位置と挿入するバッファの種類・数の対応関係を容易に認識することができる。
【００２３】
（８）この設計支援システムは、前記ホールドエラー解析情報に、前記ホールドエラーの発生位置とエラー量との対応関係と同じフォーマットで、バッファを挿入する位置と挿入するバッファの遅延時間との対応関係を追加するホールドエラー解析情報変更部をさらに含むようにしてもよい。
【００２４】
このようにすれば、ユーザーがバッファを挿入したい任意の位置に、擬似的にホールドエラーが発生しているものとして、適切なバッファを挿入させることができる。
【００２５】
（９）本発明は、ネットリストのレイアウト情報から抽出された寄生パラメーターを用いて作成された遅延情報に基づいて、前記ネットリストに含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブルを生成するバッファテーブル生成部と、前記ネットリストに対して前記遅延情報と所与のタイミング制約情報を用いて行われた静的タイミング解析により得られるタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報を生成するホールドエラー解析情報生成部と、前記バッファテーブルと前記ホールドエラー解析情報とに基づいて、前記ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するバッファ挿入方針決定部としてコンピューターを機能させる、半導体集積回路の設計支援プログラムである。
【図面の簡単な説明】
【００２６】
【図１】本実施形態の設計支援システムの構成例を示す図。
【図２】本実施形態の設計支援システムの処理について説明するための図。
【図３】ホールドエラー修正処理の詳細について説明するための図。
【図４】バッファテーブル生成処理の一例を示すフローチャート図。
【図５】ホールドエラー解析情報生成処理の一例を示すフローチャート図。
【図６】バッファ挿入方針決定処理の一例を示すフローチャート図。
【図７】ホールドエラー修正処理が適用されるネットリストに対応する回路図。
【図８】遅延情報（ＳＤＦファイル）の一部を示す図。
【図９】バッファテーブルの一部を示す図。
【図１０】動作モード１に対するタイミング解析情報の一部を示す図。
【図１１】動作モード２に対するタイミング解析情報の一部を示す図。
【図１２】ホールドエラー解析情報（マージファイル）の一部を示す図。
【図１３】変更されたホールドエラー解析情報（マージファイル）の一部を示す図。
【図１４】バッファ挿入テキスト情報（テキストファイル）の一部を示す図。
【図１５】ホールドエラーが修正されたネットリストに対応する回路図。
【発明を実施するための形態】
【００２７】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００２８】
１．設計支援システムの構成
図１は、本実施形態の半導体集積回路装置の設計支援システムの構成例を示す図である。本実施形態の半導体集積回路装置の設計支援システム１は、当該構成要素（各部）の一部を省略した構成としてもよい。
【００２９】
操作部３０は、ユーザーの操作等をデータとして入力するためのものであり、その機能は、例えばキーボードやマウス等のハードウェアにより実現できる。
【００３０】
記憶部４０は、処理部１０や通信部７０などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３１】
記憶部４０は、ライブラリー情報記憶部４２を含む。ライブラリー情報記憶部４２は、設計データにより得られたライブラリー情報（論理回路情報、レイアウト情報、接続情報）等が記憶されている。
【００３２】
情報記憶媒体５０（コンピューターにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ等）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリー（ＲＯＭ）などのハードウェアにより実現できる。
【００３３】
また情報記憶媒体５０には、本実施形態の各手段としてコンピューターを機能させるプログラムや補助データ（付加データ）が記憶される。
【００３４】
処理部１０は、この情報記憶媒体５０に格納されるプログラム（設計支援プログラム）や情報記憶媒体５０から読み出されたデータなどに基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体５０には、本実施形態の各手段としてコンピューターを機能させるためのプログラム（各手段の処理をコンピューターに実行させるためのプログラム）が記憶される。
【００３５】
表示部６０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴディスプレイ、ＬＣＤ（液晶ディスプレイ）、ＯＥＬＤ（有機ＥＬディスプレイ）、ＰＤＰ（プラズマディスプレイパネル）、タッチパネル型ディスプレイなどのハードウェアにより実現できる。
【００３６】
通信部７０は、外部（例えばサーバ装置や他の端末機）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３７】
処理部１０（プロセッサ）は、操作部３０からの操作データやプログラムなどに基づいて、各種処理などを行う。この処理部１０は記憶部４０をワーク領域として各種処理を行う。処理部１０の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、アプリケーションプログラム、ＯＳ（例えば汎用ＯＳ等）により実現できる。
【００３８】
処理部１０は、配置配線部１２、ＲＣ抽出部１４、遅延計算部１６、ホールドエラー修正部１８を含む。ただし、処理部１０は、当該構成要素（各部）の一部を省略した構成としてもよい。
【００３９】
配置配線部１２は、セルのライブラリー情報とタイミング制約情報に基づいて、設計対象ブロックのネットリストに含まれるセルの配置処理とネットの配線処理を行い、配置配線後のレイアウト情報とネットリストを生成する。
【００４０】
ＲＣ抽出部１４は、配置配線部１２が生成したレイアウト情報に基づいて、配置配線部１２が生成したネットリストに含まれる各ネットの寄生抵抗や寄生容量を抽出する処理を行い、ＲＣ情報（寄生抵抗と寄生容量の情報）を生成する。
【００４１】
遅延計算部１６は、ＲＣ抽出部１４が生成したＲＣ情報に基づいて、配置配線部１２が生成したネットリストに含まれる各セルのセル遅延や各ネットの配線遅延を算出する処理を行い、遅延情報を生成する。
【００４２】
ホールドエラー修正部１８は、配置配線部１２が生成したネットリストに対してホールドエラーの有無を解析し、ホールドエラーがある場合は、遅延計算部１６が生成した遅延情報に基づいてホールドエラーを修正したネットリストを生成する。
【００４３】
ホールドエラー修正部１８は、静的タイミング解析部１９、バッファテーブル生成部２０、ホールドエラー解析情報生成部２２、バッファ挿入方針決定部２４、ネットリスト修正部２６、ホールドエラー解析情報変更部２８を含む。ただし、ホールドエラー修正部１８は、当該構成要素（各部）の一部を省略した構成としてもよい。
【００４４】
静的タイミング解析部１９は、遅延計算部１６が生成した遅延情報とタイミング制約情報に基づいて、配置配線部１２が生成したネットリストに対して静的タイミング解析（ＳＴＡ：Static Timing Analysis）を行い、タイミング解析情報を生成する処理を行う。
【００４５】
バッファテーブル生成部２０は、遅延計算部１６が生成した遅延情報に基づいて、配置配線部１２が生成したネットリストに含まれるバッファの種類毎に遅延時間を算出し、バッファの種類と遅延時間との対応関係を表すバッファテーブルを生成する処理を行う。
【００４６】
ホールドエラー解析情報生成部２２は、配置配線部１２が生成したネットリストに対して、静的タイミング解析部１９が生成したタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係を含むホールドエラー解析情報を生成する処理を行う。
【００４７】
ホールドエラー解析情報生成部２２は、配置配線部１２が生成したネットリストに対する複数の静的タイミング解析により得られる複数のタイミング解析情報に基づいてホールドエラー解析情報を生成し、当該複数のタイミング解析情報においてホールドエラーの同じ発生位置に対して複数のエラー量が得られた場合は、当該複数のエラー量に基づいて当該ホールドエラーの発生位置のエラー量を決定するようにしてもよい。この場合、当該複数のエラー量のうちの最大のエラー量を選択し、当該ホールドエラーの発生位置のエラー量としてもよい。
【００４８】
バッファ挿入方針決定部２４は、バッファテーブル生成部２０が生成したバッファテーブルとホールドエラー解析情報生成部２２が生成したホールドエラー解析情報とに基づいて、ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定する処理を行う。
【００４９】
バッファ挿入方針決定部２４は、指定されたバッファ挿入条件に応じて、挿入するバッファの種類及び数を決定するようにしてもよい。
【００５０】
また、バッファテーブル生成部２０は、遅延計算部１６が生成した遅延情報に基づいて、配置配線部１２が生成したネットリストに含まれるバッファの種類毎に複数の遅延条件に対する遅延時間を算出し、バッファの種類と当該複数の遅延条件に対する遅延時間との対応関係を表すバッファテーブルを生成するようにしてもよい。この場合、ホールドエラー解析情報生成部２２は、当該複数の遅延条件に対する静的タイミング解析により得られるタイミング解析情報に基づいて、ホールドエラーの発生位置とエラー量との対応関係毎に、当該ホールドエラーが発生した遅延条件を属性として追加してホールドエラー解析情報を生成するようにしてもよい。そして、バッファ挿入方針決定部２４は、バッファテーブル生成部２０が生成したバッファテーブルとホールドエラー解析情報生成部２２が生成したホールドエラー解析情報とに基づいて、当該複数の遅延条件に対するホールドエラーが修正されるように、ホールドエラーの各発生位置に挿入するバッファの種類及び数を決定するようにしてもよい。
【００５１】
ネットリスト修正部２６は、バッファ挿入コマンドに応じて、配置配線部１２が生成したネットリストに対してバッファを挿入した新たなネットリストを生成する。バッファセル挿入方針決定部２４は、このバッファ挿入コマンドとして、ホールドエラーの各発生位置に、決定した種類のバッファを決定した数だけ挿入するためのコマンドを生成する処理を行う。この場合、バッファ挿入方針決定部２４は、バッファの挿入位置及び挿入するバッファの種類と数を記述したテキスト情報をさらに生成するようにしてもよい。
【００５２】
ホールドエラー解析情報変更部２８は、ホールドエラー解析情報生成部２２が生成したホールドエラー解析情報に、ホールドエラーの発生位置とエラー量との対応関係と同じフォーマットで、バッファを挿入する位置と挿入するバッファの遅延時間との対応関係を追加する処理を行う。
【００５３】
なお、本実施形態の各手段としてコンピューターを機能させるためのプログラム（設計支援プログラム）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部７０を介して情報記憶媒体５０（記憶部４０）に配信してもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００５４】
２．設計支援システムの処理
図２は、本実施形態の設計支援システム１の処理について説明するための図である。ただし、本実施形態の設計支援システム１は、以下に説明する処理の一部を省略してもよい。
【００５５】
図２に示すように、本実施形態の設計支援システム１は、まず、処理部１０が情報記憶媒体５０に記憶された配置配線プログラムを実行することで配置配線部１２として機能し、タイミング制約情報１１２と設計対象ブロックのネットリスト１１４を用いて配置配線処理１２０を行う。
【００５６】
タイミング制約情報１１２は、遅延条件（温度、電源電圧、プロセス条件等）の定義情報、動作クロックの定義情報、クロックツリーのルートの定義情報等を含み、ネットリスト１１４は、セルの定義情報やセル間を接続するネットの定義情報等を含む。具体的には、配置配線処理１２０では、タイミング制約情報１１２に含まれるクロックツリーのルートの定義情報に基づいてクロックツリーの自動配置配線を優先的に行った後、ネットリスト１１２に含まれる各セルを自動配置し、ネットリスト１１２で定義されたセル間の接続関係を満たすようにセル間のネットの自動配線を行う。セル配置やネット配線は、タイミング制約情報１１２に基づいてタイミングドリブンで行い、セットアップエラーがなくなるまで、セル配置やネット配線の変更を繰り返し行う。
【００５７】
この配置配線処理１２０により、レイアウト情報（配置配線情報）１２２とネットリスト１２４が生成される。レイアウト情報（配置配線情報）１２２は、例えばＤＥＦ（Design Exchange Format）で記述されたファイル（ＤＥＦファイル）であり、ネットリスト１１４や１２４は、例えばＶｅｒｉｌｏｇ言語で記述されたファイル（Ｖｅｒｉｌｏｇファイル）である。
【００５８】
なお、本実施形態では、配置配線処理１２０においてホールドエラーの修正は行われないが、配置配線処理１２０でホールドエラーの修正を行ってもよい。
【００５９】
次に、処理部１０が情報記憶媒体５０に記憶されたＲＣ抽出プログラムを実行することでＲＣ抽出部１４として機能し、レイアウト情報１２２を用いてＲＣ抽出処理１４０を行う。具体的には、ＲＣ抽出処理１４０では、レイアウト情報１２２を用いて、ネットリスト１２４に含まれる各ネットの寄生抵抗と寄生容量を抽出する。
【００６０】
このＲＣ抽出処理１４０により、ＲＣ情報１４２が生成される。ＲＣ情報１４２は、例えばＤＳＰＦ（Detailed Standard Parasitic Format）やＳＰＥＦ（Standard Parasitic Exchange Format）で記述されたファイルである。
【００６１】
次に、処理部１０が情報記憶媒体５０に記憶された遅延計算プログラムを実行することで遅延計算部１６として機能し、ＲＣ情報１４２を用いて遅延計算処理１６０を行う。具体的には、遅延計算処理１６０では、ＲＣ情報１４２を用いて、ネットリスト１２４に含まれる各セルの遅延時間（セル遅延）や各ネットの遅延時間（配線遅延）を計算する。
【００６２】
この遅延計算処理１６０により、遅延情報１６２（セル遅延と配線遅延の情報）が生成される。遅延情報１６２は、複数の遅延条件（温度、電源電圧、プロセス条件等）（例えばｍｉｎ条件（最小遅延条件）とｍａｘ条件（最大遅延条件））でのセル遅延や配線遅延の情報を含むようにしてもよい。遅延情報１６２は、例えばＳＤＦ（Standard Delay Format）で記述されたファイル（ＳＤＦファイル）である。
【００６３】
次に、処理部１０が情報記憶媒体５０に記憶されたホールドエラー修正プログラムを実行することでホールドエラー修正部１８として機能し、ネットリスト１２４、遅延情報１６２、ｎ個のタイミング制約情報１７０−１〜１７０−ｎを用いてホールドエラー修正処理１８０を行う。
【００６４】
各々のタイミング制約情報１７０−ｋ（ｋ＝１〜ｎ）は、それぞれ、例えば動作モードｋに対するタイミング制約の定義情報（遅延条件の定義情報、動作クロックの定義情報等）を含む。例えば、タイミング制約情報１７０−ｋ（ｋ＝１〜ｎ）は、動作モードｋに対するタイミング制約を記述したファイルであってもよい。各々のタイミング制約情報１７０−ｋ（ｋ＝１〜ｎ）は、複数の遅延条件（ｍｉｎ条件、ｍａｘ条件等）の定義情報を含んでいてもよい。
【００６５】
ホールドエラー修正処理１８０では、ネットリスト１２４に対してタイミング制約情報１７０−１〜１７０−ｎを適用してタイミング解析を行い、ホールドエラーの発生位置に対して遅延情報１６２で遅延時間が定義されたいずれかの種類のバッファを挿入することでホールドエラーを修正する。
【００６６】
このホールドエラー修正処理１８０により、ホールドエラーが修正されたネットリスト１８２が生成される。ネットリスト１８２は、例えばＶｅｒｉｌｏｇ言語で記述されたファイルである。
【００６７】
本実施形態の設計支援システム１は、特に、ホールドエラー修正処理１８０に特徴を有する。図３は、ホールドエラー修正処理１８０の詳細について説明するための図である。ただし、本実施形態の設計支援システム１は、以下に説明する処理の一部を省略してもよい。
【００６８】
図３に示すように、ホールドエラー修正処理１８０では、まず、処理部１０が静的タイミング解析部１９として機能し、ネットリスト１２４、タイミング制約情報１７０−１〜１７０−ｎ、遅延情報１６２を用いて静的タイミング解析（ＳＴＡ）処理１９０を行う。具体的には、静的タイミング解析（ＳＴＡ）処理１９０では、ネットリスト１２４に対してタイミング制約情報１７０−ｋ（ｋ＝１〜ｎ）と遅延情報１６２を適用して静的タイミング解析を行い、解析結果であるタイミング解析情報１９２−ｋ（ｋ＝１〜ｎ）を生成する。
【００６９】
静的タイミング解析（ＳＴＡ）処理１９０では、各々のタイミング制約情報１７０−ｋを用いて、動作モードｋに対する静的タイミング解析を行う。各々のタイミング制約情報１７０−ｋが複数の遅延条件（ｍｉｎ条件、ｍａｘ条件等）の定義情報を含む場合、静的タイミング解析（ＳＴＡ）処理１９０では、各動作モードｋについて複数の遅延条件での静的タイミング解析が行われる。
【００７０】
タイミング解析情報１９２−ｋ（ｋ＝１〜ｎ）は、動作モードｋに対する静的タイミング解析の結果情報であり、セットアップエラーやホールドエラー等のタイミング違反の有無やその発生位置の情報を含む。例えば、各々のタイミング解析情報１９２−ｋは、動作モードｋに対する解析結果を記述したレポートファイルである。タイミング制約情報１７０−ｋが複数の遅延条件の定義情報を含む場合には、タイミング解析情報１９２−ｋは、動作モードｋに対する複数の遅延条件での解析結果を記述した１つのレポートファイルでもよいし、各々の遅延条件での解析結果のみをそれぞれ記述した複数のレポートファイルに分割されていてもよい。
【００７１】
次に、処理部１０がバッファテーブル生成部２０として機能し、遅延情報１６２を用いてバッファテーブル生成処理２００を行う。具体的には、バッファテーブル生成処理２００では、遅延情報１６２で遅延情報が定義されたすべてのバッファのセル遅延を抽出してバッファの種類毎にセル遅延を算出し、バッファの種類とセル遅延の対応関係を定義したバッファテーブル２０２を生成する。
【００７２】
例えば、バッファテーブル２０２は、バッファの種類とセル遅延の対応関係を記述したファイルである。遅延情報１６２が複数の遅延条件での遅延情報を含む場合、バッファテーブル生成処理２００では、各々のバッファに対応づけて複数の遅延条件の各々でのセル遅延を定義したバッファテーブル２０２を生成する。
【００７３】
次に、処理部１０がホールドエラー解析情報生成部２２として機能し、タイミング解析情報１９２−１〜１９２−ｎを用いてホールドエラー解析情報生成処理２２０を行う。具体的には、ホールドエラー解析情報生成処理２２０では、タイミング解析情報１９２−１〜１９２−ｎに含まれるホールドエラーの情報を抽出し、ホールドエラーの発生位置毎に最大のエラー量を選択し、すべてのホールドエラーの発生位置とその最大エラー量との対応関係を含むホールドエラー解析情報２２２を生成する。
【００７４】
例えば、ホールドエラー解析情報２２２は、ホールドエラーの発生位置とその最大エラー量との対応関係を記述したマージファイルである。タイミング解析情報１９２−ｋ（ｋ＝１〜ｎ）が複数の遅延条件（ｍｉｎ条件、ｍａｘ条件等）に対する解析結果を含む場合、ホールドエラー解析情報生成処理２２０では、各々の遅延条件に対するホールドエラーの発生位置とその最大エラー量との対応関係を含むホールドエラー解析情報２２２を生成する。
【００７５】
また、処理部１０がホールドエラー解析情報変更部２８として機能し、ホールドエラー解析情報変更処理２８０を行ってもよい。具体的には、ホールドエラー解析情報変更処理２８０では、バッファを挿入する位置と遅延時間の対応関係の指定に応じて、ホールドエラーの発生位置とその最大エラー量との対応関係の記述と同じフォーマットで、バッファ挿入位置と遅延時間の対応関係の記述を作成してホールドエラー解析情報２２２に追加する。このようにすれば、バッファを挿入したい任意の位置に、擬似的にホールドエラーが発生しているものとして、後述のバッファ挿入方針決定処理２４０において、適切なバッファを挿入させることができる。
【００７６】
次に、処理部１０がバッファ挿入方針決定部２４として機能し、ホールドエラー解析情報２２２を用いてバッファ挿入方針決定処理２４０を行う。具体的には、バッファ挿入方針決定処理２４０では、ホールドエラー解析情報２２２に含まれるホールドエラーの発生位置毎に、指定されたバッファ挿入条件に従って、バッファテーブル２０２で定義されたバッファの中から挿入するバッファの種類と数を決定する。
【００７７】
バッファ挿入方針決定処理２４０では、１種類のバッファを１又は複数個挿入するように決定してもよいし、複数種類のバッファをそれぞれ１又は複数個ずつ挿入するように決定してもよい。
【００７８】
また、バッファ挿入条件としては、ホールドエラーの発生位置毎に挿入するバッファの遅延時間の総和を最小にする、ホールドエラーの発生位置毎に挿入するバッファの数を最小にする、ホールドエラーの発生位置毎に挿入するバッファの総面積を最小にする、などの条件が考えられる。ユーザーがこれら複数のバッファ挿入条件から１つのバッファ挿入条件を指定し、指定されたバッファ挿入条件に応じて、挿入するバッファの種類と数を決定するようにしてもよい。このようにすれば、ユーザーがバッファ挿入条件の指定を変更することで、挿入されるバッファの種類や数を目的に応じて変更することができる。
【００７９】
そして、バッファ挿入方針決定処理２４０では、ホールドエラーの発生位置毎に決定したバッファを決定した数だけ挿入するためのバッファ挿入コマンド２４２を生成する。例えば、バッファ挿入コマンド２４２は、ホールドエラーの発生位置毎に挿入するバッファの種類と数を指定するコマンドファイルである。
【００８０】
また、バッファ挿入方針決定処理２４０では、ユーザーが理解しやすいように、挿入するバッファの種類や数、挿入位置等をテキスト形式で表したバッファ挿入テキスト情報２４４を生成するようにしてもよい。例えば、バッファ挿入テキスト情報２４４は、挿入するバッファの種類や数、挿入位置等を記述したテキストファイルである。ユーザーは、バッファ挿入テキスト情報２４４により、最適なバッファの挿入が行われるか否かを容易に確認することができ、挿入するバッファの種類や数、挿入位置等を変更するために、バッファ挿入コマンド２４２を修正することもできる。
【００８１】
次に、処理部１０がネットリスト修正部２６として機能し、ネットリスト１２４とバッファ挿入コマンド２４２を用いてネットリスト修正処理２６０を行う。具体的には、ネットリスト修正処理２６０では、バッファ挿入コマンド２４２に従ってネットリスト１２４にバッファを挿入し、新たなネットリスト１８２を生成する。すなわち、ネットリスト１２４に対して、ホールドエラーの発生位置毎に、バッファ挿入コマンド２４２で指定されたバッファが指定された数だけ挿入されたネットリスト１８２が生成される。
【００８２】
このネットリスト修正処理２６０は、広く使用されている様々な論理合成エンジンを用いて実現することができる。前述のバッファ挿入方針決定処理２４０では、この論理合成エンジンが解釈できるコマンドフォーマットで記述されたバッファ挿入コマンド２４２が生成される。
【００８３】
そして、図２に示すように、本実施形態の設計支援システム１は、再び、配置配線部１２として機能し、ホールドエラーが修正されたネットリスト１８２を用いて配置配線処理１２０を行う。この配置配線処理１２０では、タイミング制約１１２に基づいたタイミングドリブンは行わずに配置配線のみ行い、最終のレイアウト情報を生成する。サインオフ検証では、この最終のレイアウト情報とネットリスト１８２を用いて静的タイミング解析（ＳＴＡ）が行われる。
【００８４】
なお、図３のホールドエラー修正処理１８０はすべて自動化されているが、一部の処理を人手で行うようにしてもよい。
【００８５】
図４は、バッファテーブル生成処理２００の一例を示すフローチャート図である。
【００８６】
まず、遅延情報１６２（例えばＳＤＦファイル）を読み込み（Ｓ１０）、新たなバッファインスタンスの遅延値を抽出する（Ｓ１２）。
【００８７】
Ｓ１２のバッファインスタンスを有するバッファの種類が既登録のバッファ（後述のＳ１８で登録されたバッファ）であれば（Ｓ１４のＹ）、当該バッファに対して、遅延条件毎に遅延値の平均を計算し、各遅延条件での遅延値を更新する（Ｓ１６）。一方、Ｓ１２のバッファインスタンスを有するバッファの種類が既登録のバッファでなければ（Ｓ１４のＮ）、当該バッファと各遅延条件での遅延値を対応づけて登録する（Ｓ１８）。
【００８８】
そして、遅延情報１６２においてＳ１２〜Ｓ１８が未処理のバッファインスタンスがなくなるまで（Ｓ２０のＮになるまで）、Ｓ１２〜Ｓ１８の処理を繰り返し行う。
【００８９】
最後に、Ｓ１８で登録された又はＳ１６で更新されたバッファと各遅延条件での遅延値を対応付けて記述し、バッファテーブル２０２を生成する（Ｓ２２）。
【００９０】
図５は、ホールドエラー解析情報生成処理２２０の一例を示すフローチャート図である。
【００９１】
まず、ｉを１に初期化し（Ｓ１００）、タイミング解析情報１９２−ｉ（動作モードｉに対するレポートファイル）を読み込む（Ｓ１０２）。
【００９２】
次に、ｊを１に初期化し（Ｓ１０４）、ｊ番目の遅延条件（遅延条件ｊ）（ｍｉｎ条件やｍａｘ条件等）に対して、タイミング解析情報１９２−ｉにおいて未処理のホールドエラーがあれば（Ｓ１０６）、新たなホールドエラーを抽出する（Ｓ１０８）。
【００９３】
Ｓ１０８のホールドエラーが既登録（後述のＳ１１６で登録されたホールドエラー）であれば（Ｓ１１０のＹ）、Ｓ１０８のホールドエラーのエラー量が既登録のエラー量よりも大きい場合（Ｓ１１２のＹ）のみ、遅延条件ｊに対応づけて、当該ホールドエラー発生位置のエラー量をＳ１０８のホールドエラーのエラー量に更新する（Ｓ１１４）。一方、Ｓ１０８のホールドエラーが既登録でなければ（Ｓ１１０のＮ）、遅延条件ｊに対応づけて、当該ホールドエラー発生位置とエラー量を登録する（Ｓ１１６）。
【００９４】
そして、タイミング解析情報１９２−ｉにおいてＳ１０８〜Ｓ１１６が未処理のホールドエラーがなくなるまで（Ｓ１０６のＮになるまで）、Ｓ１０８〜Ｓ１１６の処理を繰り返し行う。
【００９５】
また、タイミング解析情報１９２−ｉにおいて未処理の遅延条件がなくなるまで（Ｓ１１８のＮになるまで）、ｊを１だけ増やして次の遅延条件ｊに対してＳ１０６〜Ｓ１１６の処理を繰り返し行う。タイミング解析情報１９２−ｉにおいて未処理の遅延条件がなくなれば（Ｓ１１８のＮ）、ｉ＝ｎ（タイミング解析情報１９２−１〜１９２−ｎに対する処理がすべて終了）でなければ（Ｓ１２２のＮ）、ｉを１だけ増やして次のタイミング解析情報１９２−ｉに対してＳ１０６〜Ｓ１２０の処理を繰り返し行う。そして、すべてのタイミング解析情報１９２−１〜１９２−ｎに対する処理が終了すると（Ｓ１２２のＹ）、Ｓ１１６で登録された又はＳ１１４で更新されたホールドエラー発生位置とエラー量を遅延条件と対応付けて記述し、ホールドエラー解析情報２２２（マージファイル）を生成する（Ｓ１２６）。
【００９６】
図６は、バッファ挿入方針決定処理２４０の一例を示すフローチャート図である。
【００９７】
まず、ホールドエラー解析情報２２２（マージファイル）を読み込み（Ｓ２００）、ｊを１に初期化し（Ｓ２０２）、ホールドエラー解析情報２２２において、遅延条件ｊに対してＳ２０６〜Ｓ２１２が未処理のホールドエラーがあれば（Ｓ２０４のＹ）、未処理の新たなホールドエラーを抽出する（Ｓ２０６）。
【００９８】
Ｓ２０６のホールドエラーを修正するためのバッファが既登録（後述のＳ２１２で登録されている）の場合（Ｓ２０８のＹ）、既登録のバッファで当該ホールドエラーが解消するか否か判定する。ホールドエラーが解消しない場合（Ｓ２１０のＮ）、バッファテーブル２０２を参照し、遅延条件ｊでの遅延時間の総和がホールドエラー量以上の最小値となるバッファの種類と数を決定し、当該ホールドエラーに対応づけて更新する（Ｓ２１２）。
【００９９】
一方、Ｓ２０６のホールドエラーを修正するためのバッファが未登録の場合（Ｓ２０８のＮ）は、バッファテーブル２０２を参照し、遅延条件ｊでの遅延時間の総和がホールドエラー量以上の最小値となるバッファの種類と数を決定し、当該ホールドエラーに対応づけて登録する（Ｓ２１２）。
【０１００】
そして、ホールドエラー解析情報２２２においてＳ２０６〜Ｓ２１２が未処理のホールドエラーがなくなるまで（Ｓ２０４のＮになるまで）、Ｓ２０６〜Ｓ２１２の処理を繰り返し行う。
【０１０１】
また、ホールドエラー解析情報２２２において未処理の遅延条件がなくなるまで（Ｓ２１４のＮになるまで）、ｊを１だけ増やして次の遅延条件ｊに対してＳ２０４〜Ｓ２１２の処理を繰り返し行う。ホールドエラー解析情報２２２において未処理の遅延条件がなくなれば（Ｓ２１４のＮ）、ホールドエラーの発生位置毎にＳ２１２で登録・更新されたバッファを挿入するコマンドを記述し、バッファ挿入コマンド２４２（コマンドファイル）とバッファ挿テキスト情報２４４（テキストファイル）を生成する（Ｓ２１８）。
【０１０２】
次に、本実施形態のホールドエラー修正処理の適用例について、図７〜図１４を用いて説明する。図７は、本実施形態のホールドエラー修正処理が適用されるネットリスト１２４の一例に対応する回路図である。図７では、ネットリスト１２４に含まれる一部の回路のみ表記されている。
【０１０３】
図７に示すように、ネットリスト１２４では、ＴＯＰレベル（インスタンス名：ＴＯＰ）のブロックが、インスタンス名Ｘ１のバッファセル４（ＢＦＸ４）、インスタンス名Ｘ２のＤフリップフロップセル（ＤＦＦ）、インスタンス名Ｉ１のブロックを含んでいる。そして、インスタンス名Ｉ１のブロックは、インスタンス名がそれぞれＸ１、Ｘ２、Ｘ３の３つのＤフリップフロップセル（ＤＦＦ）、インスタンス名がそれぞれＸ４，Ｘ５の２つのバッファセル１（ＢＦＸ１）、インスタンス名がそれぞれＸ６，Ｘ７の２つのバッファセル２（ＢＦＸ２）、インスタンス名がＸ８のバッファセル４（ＢＦＸ４）を含んでいる。
【０１０４】
図８は、図７の回路図に対応するネットリスト１２４に対する遅延情報１６２（ＳＤＦファイル）の一部を示す図である。図８では、図７の一部のバッファセルのセル遅延に関する記述のみ示されている。例えば、インスタンス名がＴＯＰ／Ｘ１のバッファセル４（ＢＦＸ４）は、立ち上がり遅延時間（バッファセル４の入力信号がローレベルからハイレベルに変化してから出力信号がローレベルからハイレベルに変化するまでの遅延時間）がｍｉｎ条件では０．３０５ｎｓ、ｔｙｐ条件では０．５５０ｎｓ、ｍａｘ条件では１．０１０ｎｓであり、立ち下がり遅延時間（バッファセル４の入力信号がハイレベルからローレベルに変化してから出力信号がハイレベルからローレベルに変化するまでの遅延時間）がｍｉｎ条件では０．２５０ｎｓ、ｔｙｐ条件では０．４３０ｎｓ、ｍａｘ条件では０．８４０ｎｓである。また、例えば、インスタンス名がＴＯＰ／Ｉ１／Ｘ４のバッファセル１（ＢＦＸ１）は、立ち上がり遅延時間がｍｉｎ条件では０．１００ｎｓ、ｔｙｐ条件では０．２００ｎｓ、ｍａｘ条件では０．４００ｎｓであり、立ち下がり遅延時間がｍｉｎ条件では０．０８０ｎｓ、ｔｙｐ条件では０．１５０ｎｓ、ｍａｘ条件では０．３００ｎｓである。
【０１０５】
本実施形態のホールドエラー修正処理１８０では、まず、図８の遅延情報１６２を用いて図４のフローチャートによるバッファテーブル生成処理２００を行い、バッファテーブル２０２を生成する。具体的には、ネットリスト１２４には、図７に示されるインスタンス名がＴＯＰ／Ｉ１／Ｘ４とＴＯＰ／Ｉ１／Ｘ５の２つのバッファセル１（ＢＦＸ１）や図示されていないその他のバッファセル１（ＢＦＸ１）が含まれており、これらすべてのバッファセル１（ＢＦＸ１）の遅延時間をもとにバッファセル１（ＢＦＸ１）の平均遅延時間を算出する。
【０１０６】
例えば、すべてのバッファセル１（ＢＦＸ１）の立ち上がり遅延時間と立ち下り遅延時間の各々に対して、ｍｉｎ条件での遅延時間とｍａｘ条件での遅延時間をそれぞれ昇順又は降順に並べ、上下それぞれ１０％の範囲は対象外として８０％の範囲の遅延時間の平均値を算出する。そして、算出したｍｉｎ条件での立ち上がり遅延時間の平均値と立ち下り遅延時間の平均値のうちの大きい方がバッファセル１（ＢＦＸ１）のｍｉｎ条件での平均遅延時間として選択され、バッファテーブル２０２に記述される。同様に、算出したｍａｘ件での立ち上がり遅延時間の平均値と立ち下り遅延時間の平均値のうちの大きい方がバッファセル１（ＢＦＸ１）のｍａｘ条件での平均遅延時間として選択され、バッファテーブル２０２に記述される。バッファセル２（ＢＦＸ２）やバッファセル４（ＢＦＸ４）等のその他のすべてのバッファセルについて、同様に平均遅延時間が算出されてバッファテーブル２０２に記述される。
【０１０７】
図９は、バッファテーブル生成処理２００により得られるバッファテーブル２０２の一部を示す図である。図９の例では、バッファセル１（ＢＦＸ１）は、ｍｉｎ条件での平均遅延時間が１００ｐｓであり、ｍａｘ条件での平均遅延時間が４００ｐｓである。また、バッファセル２（ＢＦＸ２）は、ｍｉｎ条件での平均遅延時間が２２０ｐｓであり、ｍａｘ条件での平均遅延時間が９００ｐｓである。また、バッファセル４（ＢＦＸ４）は、ｍｉｎ条件での平均遅延時間が３００ｐｓであり、ｍａｘ条件での平均遅延時間が１０００ｐｓである。
【０１０８】
また、本実施形態のホールドエラー修正処理１８０では、図７の回路図に対応するネットリスト１２４に対して、動作モード１でのタイミング制約を定義したタイミング制約情報１７０−１と図８の遅延情報１６２を用いて静的タイミング解析処理１９０を行い、タイミング解析情報１９２−１を生成する。同様に、図７の回路図に対応するネットリスト１２４に対して、動作モード２でのタイミング制約を定義したタイミング制約情報１７０−２と図８の遅延情報１６２を用いて静的タイミング解析処理１９０を行い、タイミング解析情報１９２−２を生成する。
【０１０９】
図１０（Ａ）及び図１０（Ｂ）は、動作モード１に対する静的タイミング解析処理１９０により得られるタイミング解析情報１９２−１の一部を示す図である。図１０（Ａ）はｍｉｎ条件に対するタイミング解析情報１９２−１に対応するレポートファイルの一部を示し、図１０（Ｂ）はｍａｘ条件に対するタイミング解析情報１９２−１に対応するレポートファイルの一部を示している。
【０１１０】
図１０（Ａ）のレポートファイルでは、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力とインスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にホールドエラーが発生し、エラー量がそれぞれ２００ｐｓと１９０ｐｓであることを示している。なお、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にはホールドエラーが発生していない。また、図１０（Ｂ）のレポートファイルでは、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にホールドエラーが発生し、エラー量がそれぞれ１００ｐｓ、３３０ｐｓ、３１０ｐｓであることを示している。
【０１１１】
一方、図１１（Ａ）及び図１１（Ｂ）は、動作モード２に対する静的タイミング解析処理１９０により得られるタイミング解析情報１９２−２の一部を示す図である。図１１（Ａ）はｍｉｎ条件に対するタイミング解析情報１９２−２に対応するレポートファイルの一部を示し、図１１（Ｂ）はｍａｘ条件に対するタイミング解析情報１９２−２に対応するレポートファイルの一部を示している。
【０１１２】
図１１（Ａ）のレポートファイルでは、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力とインスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にホールドエラーが発生し、エラー量がそれぞれ２１０ｐｓと１８０ｐｓであることを示している。なお、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にはホールドエラーが発生していない。また、図１１（Ｂ）のレポートファイルでは、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にホールドエラーが発生し、エラー量がそれぞれ１５０ｐｓ、４００ｐｓ、２７０ｐｓであることを示している。
【０１１３】
次に、本実施形態のホールドエラー修正処理１８０では、図１０（Ａ）及び図１０（Ｂ）のタイミング解析情報１９２−１と図１１（Ａ）及び図１１（Ｂ）のタイミング解析情報１９２−２に対して、図５のフローチャートによるホールドエラー解析情報生成処理２２０を行い、ホールドエラー解析情報２２２を生成する。具体的には、ｍｉｎ条件に対するタイミング解析情報１９２−１（図１０（Ａ））と１９２−２（図１１（Ａ））を比較し、ホールドエラーの発生位置毎に最大のエラー量を選択し、ホールドエラー解析情報２２２（マージファイル）に記述する。同様に、ｍａｘ条件に対するタイミング解析情報１９２−１（図１０（Ｂ））と１９２−２（図１１（Ｂ））を比較し、ホールドエラーの発生位置毎に最大のエラー量を選択し、ホールドエラー解析情報２２２（マージファイル）に記述する。
【０１１４】
図１２は、ホールドエラー解析情報生成処理２２０により得られるホールドエラー解析情報２２２（マージファイル）の一部を示す図である。図１２の例では、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生するホールドエラーのｍｉｎ条件での最大エラー量は２１０ｐｓであり、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生するホールドエラーのｍｉｎ条件での最大エラー量は１９０ｐｓであることが記述されている。また、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生するホールドエラーのｍａｘ条件での最大エラー量は１５０ｐｓであり、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生するホールドエラーのｍａｘ条件での最大エラー量は４００ｐｓであり、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生するホールドエラーのｍａｘ条件での最大エラー量は３１０ｐｓであることが記述されている。
【０１１５】
なお、本実施形態のホールドエラー修正処理１８０では、ホールドエラー解析情報変更処理２８０により、図１２のホールドエラー解析情報２２２を変更してもよい。具体的には、ユーザーがバッファセルを挿入する位置と遅延時間を指定すると、ホールドエラー解析情報変更処理２８０により、指定された位置に指定された遅延時間に相当するエラー量のホールドエラーが擬似的に発生したものとする記述がホールドエラー解析情報２２２に追加される。
【０１１６】
図１３は、図１２のホールドエラー解析情報２２２に対して、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置と遅延時間１００ｐｓを指定してホールドエラー解析情報変更処理２８０を行うことで変更されたホールドエラー解析情報２２２（マージファイル）の一部を示す図である。図１３の例では、図１２のホールドエラー解析情報２２２に対して、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に１００ｐｓのホールドエラーが擬似的に発生したものとする記述が追加されている。
【０１１７】
次に、本実施形態のホールドエラー修正処理１８０では、図１３のホールドエラー解析情報２２２と図９のバッファテーブル２０２を用いて、図６のフローチャートによるバッファ挿入方針決定処理２４０を行い、バッファ挿入コマンド２４２を生成する。具体的には、まず、図１３のホールドエラー解析情報２２２に記述されるｍｉｎ条件でのホールドエラーの発生位置毎に、図９のバッファテーブル２０２に記述されたバッファセルの中から、ｍｉｎ条件での遅延時間の総和がエラー量以上の最小値となる１又は複数のバッファセルを選択する。次に、図１３のホールドエラー解析情報２２２に記述されるｍａｘ条件でのホールドエラーの発生位置毎に、ｍｉｎ条件でホールドエラーが発生していない場合は、図９のバッファテーブル２０２に記述されたバッファセルの中から、バッファセルのｍａｘ条件での遅延時間の総和がエラー量以上の最小値となる１又は複数のバッファセルを選択する。一方、ｍｉｎ条件でもホールドエラーが発生している場合は、ｍｉｎ条件でのホールドエラーの修正用に既にバッファセルが選択されているので、この選択されたバッファセルでｍａｘ条件でのホールドエラーも解消するか否か判定する。そして、解消しない場合に限り、図９のバッファテーブル２０２に記述されたバッファセルの中から、バッファセルのｍａｘ条件での遅延時間の総和がエラー量以上の最小値となる１又は複数のバッファセルを選択する。このようにして最後に選択した１又は複数のバッファセルを各ホールドエラーの発生位置に挿入するバッファとして、バッファ挿入コマンド２４２を生成する。
【０１１８】
図１３のホールドエラー解析情報２２２では、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生したホールドエラーのｍｉｎ条件での最大エラー量は２１０ｐｓである。従って、図９のバッファテーブル２０２より、バッファセル２（ＢＦＸ２）を１つ選択するのが、ｍｉｎ条件での遅延時間の総和がエラー量以上の最小値（２２０ｐｓ）となる最適な選択である。そして、図９のバッファテーブル２０２より、バッファセル２（ＢＦＸ２）のｍａｘ条件での遅延時間は９００ｐｓなので、１つのバッファセル２（ＢＦＸ２）を選択することでｍａｘ条件でのホールドエラー（最大エラー量が４００ｐｓ）も解消する。従って、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前に１つのバッファセル２（ＢＦＸ２）を挿入するコマンドがバッファ挿入コマンド２４２（コマンドファイル）に記述される。
【０１１９】
また、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置に発生したホールドエラーのｍｉｎ条件での最大エラー量は１９０ｐｓである。従って、図９のバッファテーブル２０２より、バッファセル１（ＢＦＸ１）を２つ選択するのが、ｍｉｎ条件での遅延時間の総和がエラー量以上の最小値（２００ｐｓ）となる最適な選択である。そして、図９のバッファテーブル２０２より、バッファセル１（ＢＦＸ１）のｍａｘ条件での遅延時間は４００ｐｓなので、２つのバッファセル１（ＢＦＸ１）を選択することでｍａｘ条件でのホールドエラー（最大エラー量が３１０ｐｓ）も解消する。従って、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の前に２つのバッファセル１（ＢＦＸ１）を挿入するコマンドがバッファ挿入コマンド２４２（コマンドファイル）に記述される。
【０１２０】
一方、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にはｍａｘ条件でのみホールドエラーが発生している。従って、図９のバッファテーブル２０２より、バッファセル１（ＢＦＸ１）を１つ選択するのが、ｍａｘ条件での遅延時間の総和がエラー量以上の最小値（４００ｐｓ）となる最適な選択であり、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の前に１つのバッファセル１（ＢＦＸ１）を挿入するコマンドがバッファ挿入コマンド２４２（コマンドファイル）に記述される。
【０１２１】
また、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の位置にはｍｉｎ条件でのホールドエラー（ユーザーの指定により追加された擬似的なホールドエラー）が発生している。従って、図９のバッファテーブル２０２より、バッファセル１（ＢＦＸ１）を１つ選択するのが、ｍｉｎ条件での遅延時間の総和がエラー量以上の最小値（１００ｐｓ）となる最適な選択であり、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前に１つのバッファセル１（ＢＦＸ１）を挿入するコマンドがバッファ挿入コマンド２４２（コマンドファイル）に記述される。
【０１２２】
ただし、バッファ挿入コマンド２４２（コマンドファイル）はネットリスト修正処理２６０で用いられる論理合成エンジンに対応するフォーマットで記述されており、ユーザーにとってバッファセルの挿入位置と個数がわかりにくい場合もある。そこで、本実施形態のバッファ挿入方針決定処理２４０では、バッファセルの挿入位置と個数を記述したバッファ挿入テキスト情報２４４（テキストファイル）がさらに生成される。
【０１２３】
図１４は、図１３のホールドエラー解析情報２２２と図９のバッファテーブル２０２を用いたバッファ挿入方針決定処理２４０により生成されたバッファ挿入テキスト情報２４４（テキストファイル）の一部を示す図である。図１４の例では、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が１個挿入され、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル２（ＢＦＸ２）が１個挿入され、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が２個挿入され、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が１個挿入されることが明確に示されている。ユーザーは、このバッファ挿入テキスト情報２４４（テキストファイル）を確認し、必要に応じて、挿入するバッファの種類や数を修正することも可能である。この場合、修正対象となるのは、バッファ挿入コマンド２４２（コマンドファイル）である。
【０１２４】
最後に、本実施形態のホールドエラー修正処理１８０では、図７の回路図に対応するネットリスト１２４に対して、バッファ挿入コマンド２４２（コマンドファイル）を用いてネットリスト修正処理２６０を行い、ホールドエラーが修正されたネットリスト１８２を生成する。
【０１２５】
図１５は、ネットリスト修正処理２６０により、図７の回路図に対応するネットリスト１２４に対してホールドエラーが修正されたネットリスト１８２に対応する回路図である。図１５では、ネットリスト１８２に含まれる一部の回路のみ表記されている。図１５の例では、図７の回路図に対して、インスタンス名がＴＯＰ／Ｉ１／Ｘ１のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が１個挿入され、インスタンス名がＴＯＰ／Ｉ１／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル２（ＢＦＸ２）が１個挿入され、インスタンス名がＴＯＰ／Ｉ１／Ｘ３のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が２個挿入され、インスタンス名がＴＯＰ／Ｘ２のＤフリップフロップセル（ＤＦＦ）のＤ入力の前にバッファセル１（ＢＦＸ１）が１個挿入されている。
【０１２６】
このようなホールドエラー修正処理１８０により、最適なホールドエラー修正が行われたネットリスト１８２を得ることができる。
【０１２７】
以上に説明した本実施形態の設計支援システムによれば、図４のフローチャートに従って生成されるバッファテーブル２０２に含まれる各バッファの遅延時間は、ライブラリーに用意された一般的な遅延時間ではなく、レイアウト領域のサイズや形状に応じて決まる実際のレイアウト情報に特化した精度の高い遅延時間である。このバッファテーブル２０２を用いることで、図５や図６のフローチャートに従い、ホールドエラー修正のために挿入するバッファの種類と数を適切に決定することができるので、冗長なバッファの挿入を軽減することができるとともに設計の後戻りを軽減することができる。
【０１２８】
また、本実施形態の設計支援システムによれば、タイミング解析情報１９２−１〜１９２−ｎからホールドエラー解析情報２２２を作成する作業、挿入するバッファの種類や数を決定する作業、バッファを挿入したネットリスト１８２を作成する作業をすべてシステム化することで、これらの作業における人為的ミスを防止することができ、設計工数を短縮することができる。
【０１２９】
また、本実施形態の設計支援システムによれば、複数の動作モードに対応する複数の静的タイミング解析の結果、同じ位置に異なるエラー量のホールドエラーが重複して発生した場合、図５に示したフローチャートに従い、最大のエラー量が選択されたホールドエラー解析情報２２２が生成され、図６のフローチャートに従い、このホールドエラー解析情報２２２を用いて挿入するバッファの種類と数を決定するので、すべての動作モードでのホールドエラーを解消させることができる。
【０１３０】
また、本実施形態の設計支援システムによれば、複数の遅延条件に対して同じ位置にホールドエラーが発生した場合、図６のフローチャートに従い、必要に応じて挿入するバッファの種類と数が更新されるので、すべての遅延条件に対するホールドエラーを解消させることができる。
【０１３１】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１３２】
例えば、本実施形態では、ホールドエラー修正処理１８０のネットリスト修正処理２６０によりホールドエラーが修正されたネットリスト１８２を生成し、このネットリスト１８２を用いて配置配線処理１２０を行うことで最終的なレイアウト情報を生成しているが、ネットリスト修正処理２６０を、ホールドエラー修正前のレイアウト情報１２４（ＤＥＦファイル）を修正することで配置配線処理１２０を介さずに最終的なレイアウト情報を直接的に生成する処理（レイアウト情報修正処理）に置き換えてもよい。
【０１３３】
また、例えば、本実施形態では、ホールドエラーの発生位置毎にホールドエラー量以上の最小の遅延時間となるバッファの種類と数を決定する例を挙げたが、マージンを見てホールドエラー量＋Δ（所定のオフセット量）以上の最小の遅延時間となるバッファの種類と数を決定するようにしてもよい。
【０１３４】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【０１３５】
１  設計支援システム、１０  処理部、１２  配置配線部、１４  ＲＣ抽出部、１６  遅延計算部、１８  ホールドエラー修正部、１９  静的タイミング解析部、２０  バッファテーブル生成部、２２  ホールドエラー解析情報生成部、２４  バッファ挿入方針決定部、２６  ネットリスト修正部、２８  ホールドエラー解析情報変更部、３０  操作部、４０  記憶部、４２  ライブラリー情報記憶部、５０  情報記憶媒体、６０  表示部、７０  通信部、１１２  タイミング制約情報、１１４  ネットリスト、１２０  配置配線処理、１２２  レイアウト情報、１２４  ネットリスト、１４０  ＲＣ抽出処理、１４２  ＲＣ情報、１６０  遅延計算処理、１６２  遅延情報、１７０−１〜１７０−ｎ  タイミング制約情報、１８０  ホールドエラー修正処理、１８２  ネットリスト、１９０  静的タイミング解析処理、１９２−１〜１９２−ｎ  タイミング解析情報、２００  バッファテーブル生成処理、２０２  バッファテーブル、２２０  ホールドエラー解析情報生成処理、２２２  ホールドエラー解析情報、２４０  バッファ挿入方針決定処理、２４２  バッファ挿入コマンド、２４４  バッファ挿入テキスト情報、２６０  ネットリスト修正処理、２８０  ホールドエラー解析情報変更処理
【図１】
2012168624.tif 000003
【図２】
2012168624.tif 000004
【図３】
2012168624.tif 000005
【図４】
2012168624.tif 000006
【図５】
2012168624.tif 000007
【図６】
2012168624.tif 000008
【図７】
2012168624.tif 000009
【図８】
2012168624.tif 000010
【図９】
2012168624.tif 000011
【図１０】
2012168624.tif 000012
【図１１】
2012168624.tif 000013
【図１２】
2012168624.tif 000014
【図１３】
2012168624.tif 000015
【図１４】
2012168624.tif 000016
【図１５】
2012168624.tif 000017