(57)【要約】【課題】セットアップ違反を修正しやすい箇所に遅延素子を挿入することによって、ホールド違反を解消する。【解決手段】コンピュータに、解析対象パスを定義する回路情報、解析対象パスのホールド時間とセットアップ時間とを規定するタイミング制約情報、及び遅延値を定義した遅延情報を記憶領域に格納する情報格納処理（Ｓ０１）、遅延情報の遅延値より小さい見積もり遅延値を生成する見積もり遅延値生成処理（Ｓ０２）、見積もり遅延値を用いて解析対象パスの見積もり遅延量を抽出し、ホールド違反値と、見積もりセットアップ余裕度とを算出して見積もりリストを生成する見積もりリスト生成処理（Ｓ０３）、及び、見積もりリストを用いて、ホールド違反値を解消する遅延素子の挿入箇所を決定する見積もり修正処理（Ｓ０４）、を実行させる。【選択図】図９
2014219838.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のセルからなる解析対象パスを定義する回路情報、前記解析対象パスのホールド時間とセットアップ時間とを少なくとも規定するタイミング制約情報、及び前記複数のセルに対応づける遅延値を定義した遅延情報を記憶領域に格納する情報格納処理と、
前記遅延情報に定義された遅延値より小さい見積もり遅延値を生成する見積もり遅延値生成処理と、
前記見積もり遅延値を用いて前記解析対象パスの見積もり遅延量を抽出し、前記ホールド時間に違反する時間を示すホールド違反値と、前記見積もり遅延量が前記セットアップ時間に到達するまでの見積もりセットアップ余裕度とを算出して見積もりリストを生成する見積もりリスト生成処理と、
前記見積もりリストを用いて、前記ホールド違反値を解消する遅延素子の挿入箇所を決定する見積もり修正処理と、を実行させるタイミング修正プログラム。
【請求項２】
前記情報格納処理は、さらに、前記複数のセルに対する遅延上限値を定義する遅延上限情報を前記記憶領域に格納し、
前記見積もり遅延値生成処理は、前記遅延情報に定義された遅延値の少なくとも一つを前記遅延上限値に変更して見積もり遅延値情報を生成し、
前記見積もりリスト生成処理は、前記見積もり遅延値情報を用いて前記解析対象パスの見積もり遅延量を抽出して前記見積もりセットアップ余裕度を算出する請求項１記載のタイミング修正プログラム。
【請求項３】
前記見積もり遅延値生成処理は、前記解析対象パスをセル毎に解析し、任意のセルの遅延値が前記遅延上限値を超える場合には、前記任意のセルの遅延値を前記遅延上限値に差し替えて前記見積もり遅延値情報を生成し、
前記見積もりリスト生成処理は、前記遅延上限値を少なくとも一つ用いて前記解析対象パスの見積もり遅延量を抽出する請求項２記載のタイミング修正プログラム。
【請求項４】
前記見積もり遅延値生成処理は、前記見積もり遅延値情報を生成するときに、前記回路情報からクロック以外のセルを抽出し、抽出した前記セルの入力ピンから、後段のセルの入力ピンまでに対応づけられた前記遅延値を前記遅延情報から取得し、取得した遅延値が前記遅延上限値より大きい場合には、前記取得した遅延値を前記遅延上限値へ変更する請求項３記載のタイミング修正プログラム。
【請求項５】
コンピュータに、
前記遅延情報を用いて前記解析対象パスの遅延量を抽出し、前記ホールド違反値と、前記解析対象パスの遅延量が前記セットアップ時間に到達するまでの初期セットアップ余裕度とを算出して初期リストを生成する初期リスト生成処理と、
前記初期リストを用いて、前記ホールド違反値を解消する遅延素子の挿入箇所を決定する初期修正処理と、をさらに備え、
前記見積もり修正処理は、前記初期修正処理の後に実施するように構成されている請求項２記載のタイミング修正プログラム。
【請求項６】
前記見積もり修正処理は、前記初期修正処理が前記ホールド違反値を解消できない場合に、前記ホールド違反値を解消する前記遅延素子の挿入箇所を決定する請求項５記載のタイミング修正プログラム。
【請求項７】
前記見積もり修正処理は、前記初期修正処理が前記挿入箇所に決定していない候補箇所のうちから、前記ホールド違反値を解消する前記遅延素子の挿入箇所を決定する請求項６記載のタイミング修正プログラム。
【請求項８】
前記初期修正処理は、決定した前記挿入箇所を記録した遅延挿入リストを生成し、
前記見積もり修正処理は、前記遅延挿入リストを参照して、前記候補箇所を検出し、前記挿入箇所を決定する請求項７記載のタイミング修正プログラム。
【請求項９】
前記初期リスト生成処理は、各セルの入力ピンの前段を前記挿入箇所に決定し、前記遅延挿入リストへ決定した前記挿入箇所と前記セルの入力ピンとを対応づけて記録し、
前記見積もりリスト生成処理は、前記候補箇所を前記遅延挿入リストに記録されていないセルの入力ピンから選択する請求項８記載のタイミング修正プログラム。
【請求項１０】
前記見積もりリスト生成部は、前記解析対象パスを構成する各セルの前記ホールド違反値と前記見積もりセットアップ余裕値とを算出し、当該セルを複数のパスが通過する場合には、各パスの見積もりセットアップ余裕値のうち、最も小さい値を採用する請求項１記載のタイミング修正プログラム。
【請求項１１】
前記遅延上限情報は、前記複数のセルの機能毎に設定した前記遅延上限値を含む請求項２記載のタイミング修正プログラム。
【請求項１２】
コンピュータに、
前記解析対象パスの前記回路情報を検索して、前記複数のセルの配線容量と入力波形鈍りを抽出し、抽出した前記配線容量及び前記入力波形鈍りのチップ内の平均値を算出し、前記複数のセルの機能毎に、算出した平均値をドライブ能力が最も高いセルに適用して算出した値を、前記複数のセルの機能毎に設定した前記遅延上限値として設定する遅延上限値設定処理をさらに実行させる請求項１１記載のタイミング修正プログラム。
【請求項１３】
前記情報格納処理は、さらに、前記複数のセルの配置位置を定義する位置情報を前記記憶領域に格納し、
前記見積もり遅延値生成処理は、前記位置情報を用いて各セルの最短配線容量を見積もり、前記最短配線容量と、前記複数のセルを最速のセルに置き換えたときの遅延量とを用いて見積もり遅延値を生成し、
前記見積もりリスト生成処理は、前記見積もり遅延値を用いて前記解析対象パスの見積もり遅延量を抽出して前記見積もりセットアップ余裕度を算出する請求項１記載のタイミング修正プログラム。
【請求項１４】
前記見積もり遅延値生成処理は、前記位置情報を参照して、各セルの前段のセルの出力ピンから自セルの入力ピンまでの距離が最短となる配線長を求め、前記配線長の配線容量を前記最短配線容量として用いる請求項１３記載のタイミング修正プログラム。
【請求項１５】
コンピュータに、
前記遅延情報を用いて前記解析対象パスの遅延量を抽出し、前記ホールド違反値と、前記解析対象パスの遅延量が前記セットアップ時間に到達するまでの初期セットアップ余裕度とを算出して初期リストを生成する初期リスト生成処理と、
前記初期リストを用いて、前記ホールド違反値を解消する遅延素子の挿入箇所を決定する初期修正処理と、をさらに備え、
前記見積もり修正処理は、前記初期修正処理によって前記遅延素子の挿入箇所を決定していない前記ホールド違反値を解消するように働く請求項１４記載のタイミング修正プログラム。
【請求項１６】
前記見積もり修正処理は、前記初期修正処理が前記ホールド違反値を解消できない場合に、前記ホールド違反値を解消する前記遅延素子の挿入箇所を決定する請求項１５記載のタイミング修正プログラム。
【請求項１７】
複数のセルからなる解析対象パスを定義する回路情報、前記解析対象パスのホールド時間とセットアップ時間とを少なくとも規定するタイミング制約情報、及び前記複数のセルに対応づける遅延値を定義した遅延情報を格納する記憶部と、
前記遅延情報に定義された遅延値より小さい見積もり遅延値を生成する見積もり遅延値生成処理と、前記見積もり遅延値を用いて前記解析対象パスの見積もり遅延量を抽出し、前記ホールド時間に違反する時間を示すホールド違反値と、前記見積もり遅延量が前記セットアップ時間に到達するまでの見積もりセットアップ余裕度とを算出して見積もりリストを生成する見積もりリスト生成処理と、前記見積もりリストを用いて、前記ホールド違反値を解消する遅延素子の挿入箇所を決定する見積もり修正処理と、を実行する処理部と、を備えるタイミング修正装置。
【請求項１８】
複数のセルからなる解析対象パスのホールド違反をタイミング修正装置が修正するタイミング修正方法であって、
前記解析対象パスを定義する回路情報、前記解析対象パスのホールド時間とセットアップ時間とを少なくとも規定するタイミング制約情報、及び前記複数のセルに対応づける遅延値を定義した遅延情報を記憶領域に格納し、
前記遅延情報に定義された遅延値より小さい見積もり遅延値を生成し、
前記見積もり遅延値を用いて前記解析対象パスの見積もり遅延量を抽出し、前記ホールド時間に違反する時間を示すホールド違反値と、前記見積もり遅延量が前記セットアップ時間に到達するまでの見積もりセットアップ余裕度とを算出して見積もりリストを生成し、
前記見積もりリストを用いて、前記ホールド違反値を解消する遅延素子の挿入箇所を決定するタイミング修正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体修正装置の回路設計においてタイミングを修正する手法に関し、例えば、ホールド違反を修正する手法に関する。
【背景技術】
【０００２】
半導体集積装置の回路設計を行うときには、例えば、タイミング解析ツール(ＳＴＡツール)を用いて、タイミング制約を満たすようにタイミングを調整する。ここで、タイミング制約を満たすか否かを解析する解析対象パスが、クロック信号に同期して動作する第１及び第２のフリップフロップ（以降適宜、ＦＦ１、ＦＦ２と記載する）と、第１及び第２のフリップフロップの間に配置される組合せ回路部からなる場合を想定する。ＦＦ１の出力端子から出力される信号は、組合せ回路部を介してＦＦ２のデータ入力端子へ供給される。言い換えると、組合せ回路部は、ＦＦ１の出力端子から信号を受け取り、ＦＦ２のデータ入力端子へ供給する。
【０００３】
この解析対象パスにおいて、組合せ回路部のデータ遅延がクロックサイクル内に収まる場合には、タイミング制約を満たすことになる。例えば、ＦＦ１がクロックＡでデータＡをラッチし、ＦＦ２が、データＡを遅延したデータＢをクロックＢでラッチしたときにタイミング制約を満たすものとする。これに対して、組合せ回路部のデータ遅延が長く、ＦＦ１がクロックＡでラッチしたデータＡを、ＦＦ２がクロックＢでラッチできない場合を、セットアップ違反（セットアップエラー）という。この場合には、ＦＦ１からの信号が、ＦＦ２の入力端子に到達するまでの時間が長くなり、ＦＦ２は、次のクロック信号が到達するまでにＦＦ１からの信号が到達していない状態（または安定していない状態）である。また、組合せ回路のデータ遅延が短く、ＦＦ１がデータＡをクロックＡでラッチし、ＦＦ２がクロックＢより早いクロックＡでデータＢをラッチする場合を、ホールド違反（ホールドエラー）という。ホールド違反を解消するためには、データＢに少なくともホールド違反分の遅延を挿入しなければならない。言い換えると組合せ回路に最低限ホールド違反分の遅延素子を挿入することが必要になる。この場合には、ＦＦ１からの信号がＦＦ２の入力端子に届くまで十分ホールドされなかった状態である。
データＢに対して遅延させることができる遅延量をセットアップ余裕度（セットアップ余裕値）という。セットアップ余裕度は、組合せ回路に挿入可能な遅延素子の遅延値ともいえる。ホールド違反が生じている記憶素子間（フリップフロップ間）のパスをホールド違反パスという。
【０００４】
例えば、特許文献１では、複雑な回路のタイミング調整を効率よく適正に行う技術が開示されている。特許文献１では、クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるデジタル回路のタイミング調整方法として次の３つのステップを実施する技術が開示されている。ステップＳ１は、記憶素子間に介在するパス毎に、該パスのホールド違反値Ｔｈとセットアップ違反になるまでのセットアップ余裕値Ｔｓとを求める。ステップＳ２は、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍを抽出する。ステップＳ３は、前記入出力端子毎に抽出した各最小のセットアップ余裕値のうちの最大のセットアップ余裕値Ｔｓｍ（ｍａｘ）に対応する入出力端子を優先して違反対策適用箇所に決定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１９２１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
タイミング修正は、ホールド違反パスに対して遅延素子を挿入することによって、ホールド違反を修正する。一方、セットアップタイミングが厳しい箇所、言い換えるとセットアップ余裕度が小さい箇所に遅延素子を挿入するとセットアップ違反が生じる。そのため、セットアップ違反とならない箇所に遅延素子を挿入する。特許文献１では、このようなタイミング修正を効率よく実施する。
しかしながら、セットアップ違反が生じるため、ホールド違反を修正できない箇所が残り、ホールド違反の修正をできない箇所が残ってしまうケースが多い。
発明者らは、セットアップ違反を修正しやすい箇所に遅延素子を挿入することによって、ホールド違反を解消することを発見した。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、プログラムの命令群は、コンピュータに、複数のセルからなる解析対象パスを定義する回路情報、解析対象パスのホールド時間とセットアップ時間とを少なくとも規定するタイミング制約情報、及び複数のセルに対応づける遅延値を定義した遅延情報を記憶領域に格納し、これらの情報を用いて、遅延情報に定義する遅延値より小さい見積もり遅延値を生成する見積もり遅延値を生成する処理を実行させる。続いて、プログラムの命令群は、見積もり遅延値を用いて解析対象パスの見積もり遅延量を抽出し、ホールド違反値と、見積もりセットアップ余裕度とを算出して見積もりリストを生成し、見積もりリストを用いて、ホールド違反値を解消する遅延素子の挿入箇所を決定する処理を実行させる。
【０００８】
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本発明の態様としては有効である。
【発明の効果】
【０００９】
一実施の形態によれば、セットアップ違反を修正しやすい箇所に遅延素子を挿入することによって、ホールド違反を解消することができる。
【図面の簡単な説明】
【００１０】
【図１】特許文献１のタイミング修正の手順の一例を説明する図である。
【図２】ホールド違反パスの一例を示す図である。
【図３】図２のホールド違反パスのホールド違反値、セットアップ余裕度の一例を示す図である。
【図４】図２のホールド違反パスのホールド違反値、セットアップ余裕度の他の一例を示す図である。
【図５】一実施形態で修正するホールド違反パスの一例を示す図である。
【図６】図５のホールド違反パスのホールド違反値、セットアップ余裕度の一例を示す図である。
【図７】一実施形態のタイミング修正装置の構成例を示すブロック図である。
【図８】一実施形態のタイミング修正装置が実行する各処理の一例を示す図である。
【図９】一実施形態のタイミング修正の手順の一例を示すフローチャートである。
【図１０】実施形態１のタイミング修正の手順全体の処理例を示すフローチャートである。
【図１１】図１０のホールド違反修正処理の一例を示すフローチャートである。
【図１２】実施形態１で修正するホールド違反パスの一例を示す図である。
【図１３】図１２のホールド違反パスのホールド違反値、初期セットアップ余裕度、及び見積もりセットアップ余裕度の一例を示す図である。
【図１４】実施形態１のタイミング修正装置が実行する各処理の一例を示す図である。
【図１５】図１４のタイミング修正装置が実施するホールド違反修正処理の動作例を示すフローチャートである。
【図１６】図１４に示す初期リスト生成処理の一例を示すフローチャートである。
【図１７】図１４に示す見積もりリスト生成処理の一例を示すフローチャートである。
【図１８】図１４に示す遅延上限情報の一例を示す図である。
【図１９】図１４に示す見積もり遅延値情報の一例を示す図である。
【図２０】図１４に示すホールド違反パスの初期セットアップ余裕度、見積もりセットアップ余裕度の一例を示す図である。
【図２１】実施形態１のホールド違反修正処理を実施する前のホールド違反パスの一例を示す図である。
【図２２】図２１のホールド違反パスを初期セットアップ余裕度リストに基づいて修正した例を示す図である。
【図２３】図２２のホールド違反パスを見積もりセットアップ余裕度リストに基づいて修正した例を示す図である。
【図２４】実施形態２のタイミング修正装置が実行する各処理の一例を示す図である。
【図２５】実施形態２の遅延上限値設定処理の手順の一例を示す図である。
【図２６】実施形態２のタイミング修正装置が実行する各処理の一例を示す図である。
【図２７】実施形態３の初期リスト生成処理の一例を示すフローチャートである。
【図２８】実施形態３の見積もりリスト生成処理の一例を示すフローチャートである。
【図２９】実施形態４のホールド違反修正処理の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
まず、特許文献１に開示されているホールド違反修正処理の手順例に基づいて、一実施形態が解決する問題点について説明し、続いて一実施形態について説明する。
＊  特許文献１のタイミング修正手法
図１に、特許文献１のタイミング修正の手順の一例を説明する図を示す。ホールド違反修正処理は、まず、パス毎のホールド違反値、セットアップ余裕度を算出する（Ｓ９１）。同処理は、ホールド違反値、セットアップ余裕度を用いて、ホールド違反を解消する対策が可能か否かを判定する（Ｓ９２）。違反対策ができない場合には（Ｓ９２、ＮＯ）、処理を終了する。違反対策が可能である場合には（Ｓ９２、ＹＥＳ）、同処理は、入力端子毎に最少セットアップ余裕度、及び違反パス数を抽出する（Ｓ９３）。同処理は、抽出した最少セットアップ余裕度、及び違反パス数を用いて、違反対策適用箇所を決定し（Ｓ９４）、決定した違反対策適用箇所へ遅延素子を挿入する（Ｓ９５）。同処理は、違反対策適用箇所に挿入する遅延素子に関して、デジタル回路パラメータを更新する（Ｓ９６）。
【００１３】
図２に、ホールド違反パスの一例を示す。図２に示す回路は、４つのフリップフロップＦＦ１〜ＦＦ４、一つのＡＮＤ回路、及び複数の遅延素子ＤＥ１〜ＤＥ６をから構成される。図３に、図２のホールド違反パスのホールド違反値、セットアップ余裕度の一例を示す。図３に示す情報は、図１のステップ９１で求められる情報である。図３では、ホールド違反パスおよびホールド違反パスの修正に関係する解析対象パスを示し、フリップフロップ間（ＦＦ間）のパスＦＦ１−ＦＦ２は、フリップフロップＦＦ１を開始、フリップフロップＦＦ２を終了とするパスであり、他のパスも同様に示している。パスＦＦ１−ＦＦ２は、ホールド違反値が−５００ｐｓ、セットアップ余裕度が１０００ｐｓである。パスＦＦ１−ＦＦ４は、ホールド違反がなく（MET）、セットアップ余裕度が３００ｐｓ、パスＦＦ３−ＦＦ２は、ホールド違反がなく、セットアップ余裕度が４００ｐｓである。ここで、図２の回路が図３に示す情報のような、パスＦＦ１−ＦＦ２でホールド違反が生じている場合を説明する。図１に示す手順でホールド違反を解消する場合、フリップフロップＦＦ１とＡＮＤ回路との間に１００ｐｓの遅延素子ＤＥ７を挿入し、ＡＮＤ回路とフリップフロップＦＦ２との間に３００ｐｓの遅延素子ＤＥ８を挿入することが可能であることを検出する（Ｓ９２）。検出した違反対策に応じて、ステップＳ９３からＳ９６の処理が実行される。
上述した解析結果から、パスＦＦ１−ＦＦ２へのホールド違反修正時にＦＦ１からＡＮＤ／Ａ１までのセットアップ余裕度が３００ｐｓ、ＡＮＤ回路／出力からＦＦ２までのセットアップ余裕度が４００ｐｓでホールド違反値−５００ｐｓを一括で挿入することができない。そのためＦＦ２／Ｄの入力に４００ｐｓの遅延素子ＤＥ８、ＡＮＤ／Ａ１の入力に１００ｐｓの遅延素子ＤＥ１１を入れ、合計５００ｐｓの遅延を確保する。このようにして、ホールド違反を解消する。
【００１４】
＊  修正が困難なホールド違反パスの説明及び問題点
例えば図４に示すようなホールド違反パスが存在する場合、パスＦＦ１−ＦＦ２へ、１００ｐｓと３００ｐｓとの合計４００ｐｓの遅延素子ＤＥ７、ＤＥ８を挿入するという違反対策を実施することが可能である。しかしながら、違反対策実施後にも、−１００ｐｓのホールド違反が残る。残った違反に対しては、図１の手順では、違反対策を実施することができない。このように、現在のセットアップ余裕度に基づいてホールド違反対策を実施する場合には、ホールド違反修正を行うための遅延値に相当するセットアップ余裕度を確保できないことがある。その結果、多くのホールド違反パスを修正せずに残してしまう。
一方、図２の回路構成を解析すると、パスＡＮＤ回路−ＦＦ４との間に遅延値３５０ｐｓの遅延素子ＤＥ６が配置されている。例えば、遅延素子ＤＥ６の遅延値を変更するような、改善できる対策が存在していたとしても、図１の手順において、このような対策を検出する手法がない。
【００１５】
＊  一実施形態のホールド違反パスの修正手順の概略
一実施形態では、上述した問題点を考慮して、現在のセットアップ余裕度を大きく（セットアップ改善）することを考慮してホールド修正箇所を提案（検出）する手法を提供する。現在のセットアップ余裕度を大きくする場合、セルの段数１段あたりの遅延値を、プロセス毎に見積もることが可能である。言い換えると、ホールド違反パス及び関係するパスを構成する遅延素子の遅延値をより小さい値に変更し、変更した遅延値を用いてセットアップ余裕度を見積もることができる。そこで、一実施形態では、見積もったセットアップ余裕度を用いて、セットアップ改善可能な箇所を判断する手法を提案する。
【００１６】
図５に、一実施形態で修正するホールド違反パスの一例を示す。遅延素子ＤＥ６について、遅延値３５０ｐｓを１００ｐｓに見積もる場合を示す。図６は、ホールド違反値、セットアップ余裕度に加え、遅延素子ＤＥ６の遅延値を１００ｐｓに見積もった場合の見積もりセットアップ余裕度を示す。これにより、パスＦＦ１−ＦＦ４のセットアップ余裕度は、１００ｐｓから３５０ｐｓ（１００ｐｓ＋２５０ｐｓ）へ増加（改善）する。その結果、遅延素子ＤＥ７の遅延値１００ｐｓを２００ｐｓへ大きくすることができるため、パスＦＦ１−ＦＦ２のホールド違反を解消することが可能になる。
このように、セットアップ余裕度を改善可能な値に見積もることによって、セットアップ違反の修正が容易な箇所を抽出することができる。これにより、セットアップ違反を直しやすい箇所にホールド修正の遅延素子を挿入し、後のタイミング調整（TimingFix、言い換えるとSetup/Hold共にMET）を容易にすることが可能になる。
【００１７】
上述した見積もりセットアップ余裕度を用いる手法は、例えば、以下のホールド違反を解消する手順の中に組み込まれて実施する。具体的には、見積もりセットアップ余裕度を用いる手法は、以下の項目３，４の処理に適用する。
１．ホールド違反パス上のセットアップ余裕度（Setup Slack）を確認する。
２．セットアップ余裕度を違反しない分（遅延値）だけ遅延素子を挿入する。
３．ホールド違反のうち、解消できないホールド違反パス上の見積もりセットアップ余裕度を確認する。
４．見積もりセットアップ余裕度を違反しない分（遅延値）の遅延素子を挿入する。
５．遅延素子挿入後のセットアップ余裕度を確認する。このとき、見積もりセットアップ余裕度を用いてホールド違反を解消する場合には、セットアップ違反が生じるが、遅延素子の遅延値を変更するなどの修正可能な違反である。
６．セットアップ違反、及びホールド違反を解消する（Setup/Hold共にMET）。
以下に一実施形態、及び一実施形態を具体化した各実施形態について説明する。
【００１８】
＊  一実施形態のタイミング修正手法の説明
上述した一実施形態のタイミング修正手法は、例えば、コンピュータに各処理を実行させるプログラムを用いて実現することができる。図７は、一実施形態のタイミング修正装置の構成例を示すブロック図である。タイミング修正装置１００は、記憶部１と処理部２とを備える。タイミング修正装置１００は、パーソナルコンピュータのような一般的な汎用コンピュータである。
記憶部１は、処理部２がアクセス可能な記憶領域である。記憶部１は、例えば、ハードディスクやＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）といった記憶装置で構成される。また、記憶部１は、タイミング修正装置１００へ着脱可能な記憶媒体、例えば、ＣＤ（Compact Disk）を含む場合であってもよい。
処理部２は、ＣＰＵ（Central Processing Unit）で構成され、記憶部１に記憶された、各処理を実現するためのプログラム（実行プログラム）を読み込んで、コンピュータにプログラムの命令群を実行させる。これにより、一実施形態に係るタイミング修正の手法を実現する。
タイミング修正装置１００は、記憶部１及び処理部２の他に通信機能を実現する通信部、外部装置とのインターフェースを制御する入出力部などを備えるが、ここでは説明を省略する。
【００１９】
タイミング修正装置１００において、記憶部１及び処理部２は次の機能を実現するように構成される。
記憶部１は、回路情報、タイミング制約情報、及び遅延情報を、少なくとも記憶する。回路情報は、複数のセルからなる解析対象パスの設計に関する情報である。回路情報は、解析対象パスを構成するセル間（端子間）の接続を定義するネットリストや、解析対象パスのレイアウトを定義するレイアウト情報を含む。加えて、回路情報は、セルや配線の特性を定義するライブラリを含んでいてもよい。タイミング制約情報は、解析対象パスのホールド時間及びセットアップ時間を少なくとも含む、解析対象パスのタイミング制約を規定する。遅延情報は、解析対象回路に含まれる複数のセルそれぞれの遅延値を定義する。
【００２０】
処理部２は、ＣＰＵで構成され、プログラムの命令群によって各種処理を実行する。一実施形態では、処理部２は、複数のセルそれぞれに定義された遅延値の少なくとも一つを、定義された遅延値より小さい見積もり遅延値に変更する。次に、処理部２は、見積もり遅延値を用いてセットアップ余裕度を見積もった見積もりセットアップ余裕度を算出する。そして、処理部２は、見積もりセットアップ余裕度を用いて、ホールド違反を修正する違反対策適用箇所を決定し、修正する。
【００２１】
図８に、タイミング修正装置１００にプログラムが実行させる処理の一例を示す。各処理をタイミング修正装置１００に実行させることにより、一実施形態に係るタイミング修正の手法を実現する。処理部２は、プログラムを記憶部１から読み込んで各処理を実行する。
図８に示すように、プログラムは、タイミング修正装置１００（コンピュータ）に、情報格納処理、見積もり遅延値生成処理、見積もりリスト生成処理、及び見積もり修正処理を少なくとも実行させる。
情報格納処理は、少なくとも、回路情報、タイミング制約情報、及び遅延情報を記憶部１へ格納する。
見積もり遅延値生成処理は、複数のセルそれぞれの遅延値の少なくとも一つを、当該遅延値より小さい値である見積もり遅延値に変更する。見積もり遅延値は例えばあらかじめ値を設定し、記憶部１に格納すること、解析対象パスの特性に基づいて、見積もり遅延値を決定すること、等の処理が考えられる。なお、見積もり遅延値をどのように生成するかについては各実施形態において説明する。
【００２２】
見積もりリスト生成処理は、見積もり遅延値を用いて解析対象パスの見積もり遅延量を抽出し、ホールド違反値とセットアップ余裕度とを算出することによって、遅延値を遅延上限値に変更した場合の見積もりセットアップ余裕度リストを生成する。ホールド違反値は、解析対象パスの見積もり遅延量がホールド時間に満たない時間（ホールド時間に違反する時間）であり、ホールド時間から見積もり遅延量を差し引いて算出する。セットアップ余裕度（見積もりセットアップ余裕値）は、解析対象パスの見積もり遅延量がセットアップ時間に到達するまでの時間である。見積もりセットアップ余裕度リストは、解析対象パス、ホールド違反値、見積もりセットアップ余裕度を少なくとも含む。見積もりセットアップ余裕度リストは、さらに、遅延情報に定義する遅延値を用いて取得したセットアップ余裕度（初期セットアップ余裕度）を含んでいてもよい。解析対象パスは、ホールド違反パス、及びホールド違反パスを修正するときに関係するパスを含む。
見積もり修正処理は、見積もりセットアップ余裕度リストを用いて、ホールド違反値を解消する遅延素子の挿入箇所を決定し、遅延挿入リストを出力する。遅延挿入リストは、ホールド違反を修正する対策、及び対策箇所を示す情報である。
【００２３】
次に、図７，８に示すタイミング修正装置１００の各処理の動作例を説明する。図９は、一実施形態のタイミング修正の手順の一例を示すフローチャートである。最初に、情報格納処理は、回路情報、タイミング制約情報、及び遅延情報を入手すると、記憶部１へ格納する（Ｓ０１）。各情報は、入出力装置、記録媒体、通信手段等により外部から取得される情報である。次に、見積もり遅延値生成処理は、遅延情報に定義する遅延値を当該遅延値より小さい見積もり遅延値へ置き換える（Ｓ０２）。このとき、見積もり遅延値生成処理は、見積もり遅延値を記録する見積もり遅延値情報を遅延情報とは別に生成してもよいし、遅延情報自体を変更してもよい。これらは各処理の設計事項に応じて変更可能である。続いて、見積もりリスト生成処理は、見積もりセットアップ余裕度リストを生成する（Ｓ０３）。例えば、見積もりリスト生成処理は、回路情報、タイミング制約情報、遅延情報、及び見積もり遅延値を記録する見積もり遅延値情報を用いて静的タイミング解析ツール（ＳＴＡツール）に解析対象パスの解析を実行させる。そして、見積もりリスト生成処理は、解析結果から、セットアップ余裕度、セットアップ違反パス、ホールド違反パスなどの情報を取得し、見積もりセットアップ余裕度リストを生成する。あるいは、見積もりリスト生成処理は、遅延情報自体を変更して解析対象パスを解析してもよい。最後に、見積もり修正処理は、見積もりセットアップ余裕度リストを用いて、ホールド違反値を解消する遅延素子の挿入箇所を決定し、遅延挿入リストを生成して出力する（Ｓ０４）。
【００２４】
処理部２は、見積もりリスト生成処理によって、例えば、静的タイミング解析ツールにタイミング解析結果を生成させるが、図７，８において、静的タイミング解析ツールの存在を明記していない。静的タイミング解析ツールを用いる場合、タイミング修正装置１００は、記憶部１に静的タイミング解析ツールの実行プログラムを保存し、処理部２が記憶部１から静的タイミング解析ツールを読み出して実行させてもよい。または、タイミング修正装置１００は、通信機能を用いて、外部のコンピュータ装置が保持する静的タイミング解析ツールを実行させ、通信回線を介して解析結果を受信するように構成してもよい。一実施形態では、処理部２は、静的タイミング解析ツールによって生成される解析結果を取得できるように構成されていればよい。処理部２は、静的タイミング解析ツールの解析結果を取得すると、記憶部１に記憶する。
【００２５】
以降の説明では、次の用語を用いる。
セルは、回路を構成する素子の総称であり、記憶素子（フリップフロップ）、遅延素子、論理回路等を含む。
解析対象パスは、ホールド違反を修正するパスである。以下で説明する実施形態では二つの記憶素子に挟まれているパスを解析対象とすることを前提とする。
遅延値を定義する情報には、遅延情報（初期の遅延情報）、見積もり遅延値情報、遅延上限情報、遅延上限値などの用語を用いるが、次のように区別する。
【００２６】
遅延情報は、セルあるいは入力ピン（入力端子）に対応づけて、各セルまたは入力ピンの遅延値を定義する。実施形態によっては遅延情報に定義する遅延値を、見積もり遅延値に書き換える態様も存在する。このような場合（例えば、実施形態３）、遅延情報を更新するタイミングを明記する、あるいは更新した（書き換えた）遅延情報のように明確に区別して記載する。なお、情報格納処理が遅延情報をタイミング修正装置１００の記憶部１へ格納するタイミングでは、遅延値は書き換えられておらず、当初定義された遅延値の状態（初期遅延値）である。加えて、見積もり遅延値情報、または見積もり遅延値により書き換えられた後の遅延情報と明確に区別するため、「初期の遅延情報」と記載することもある。
見積もり遅延値情報は、遅延情報に定義される遅延値を任意の手法を用いて小さい値に変更した見積もり遅延値を記録する情報である。例えば、見積もり遅延値情報は、見積もり遅延値そのものを記録してもよいし、遅延情報に定義された遅延値の少なくとも一つを、遅延上限値へ変更する命令（指示）を記録してもよい。
初期の遅延情報に定義される遅延値と、見積もり遅延値情報に記録する変更された遅延値とを明確に区別するため、適宜、前者を「初期遅延値」、後者を「見積もり遅延値」と記載することがある。
【００２７】
遅延上限情報は、複数のセルに対応づける複数の遅延値に対して、遅延値の上限を設定する遅延上限値を少なくとも一つ定義（記録）する情報である。遅延上限情報は、複数のセル（全セル）に対して少なくとも一つの遅延上限値を定義し、複数の遅延上限値を定義する場合には、例えば、セルの種類に応じて遅延上限値を定義する。
遅延上限値は、解析対象パス（レイアウト）に含まれるセルまたはネットの遅延値の上限を設定する値である。レイアウト設計者等が、経験上の数値などに基づいて遅延上限値を設定し、遅延上限情報へ記録する。遅延上限値は、複数設定される場合もあり、セルの種類、機能などに基づいて、異なる上限値が設定されてもよい。遅延上限値は、セルまたは入力ピンに対応づけて遅延上限情報へ定義（記録）される。言い換えると、遅延上限値は、セルまたは入力ピンをキーとして検索できるように遅延上限情報へ記録される。
【００２８】
以下の各実施形態では、遅延値は、任意のセルの入力ピンから、後段のセルの入力ピンまでに定義（設定）された時間を用いる。これに応じて、遅延上限値も、遅延値と同様の範囲の遅延時間を定義（設定）される。
しかしながら、遅延値または遅延上限値は、次のように定義してもよい。例えば、遅延値は、セルに対する遅延時間であるセル遅延値と、ネットに対する遅延時間であるネット遅延値とに分けて検討することも可能である。同様に、遅延上限値は、セルに対する遅延値の上限（セル遅延上限値）とネットに対する遅延値の上限（ネット遅延上限値）とに分けて検討することも可能である。セル遅延上限値は、１セルに許容される遅延値の上限を設定する。セル遅延上限値は、複数設定される場合もあり、セルの種類、機能などに基づいて、異なる上限値が設定される。
各実施形態では、遅延上限値を定義するときに、セル遅延上限値とネット遅延上限値とを組み合わせて、セルの入力ピンに応じた遅延上限値を算出することできる。
【００２９】
ホールド違反値は、解析対象パスの遅延量がホールド時間を満たさない時間（ホールド時間を違反する時間）であり、ホールド時間から遅延量を差し引いて算出する。
セットアップ余裕度（セットアップ余裕値）は、解析対象パスの遅延量がセットアップ時間に到達するまでの時間（余裕時間）である。セットアップ余裕度は、セットアップ余裕値と記載する場合もあるが、本明細書では同様であり区別しない。
加えて、本明細書では、解析対象パスの遅延値を抽出するときに、初期遅延値と見積もり遅延値とのいずれを用いるかによって、セットアップ余裕度を次のように区別する。
初期セットアップ余裕度は、初期遅延値（初期の遅延情報）を用いて抽出した解析対象パスの遅延値を用いて算出した値である。見積もりセットアップ余裕度は、見積もり遅延値を用いて抽出した解析対象パスの見積もり遅延値を用いて算出した値である。
「セットアップ余裕度」のように、「初期」または「見積もり」を明記していない場合には、区別が必要なく、初期遅延値または見積もり遅延値のどちらであってもよいことを示す。
【００３０】
初期セットアップ余裕度リスト（初期リスト）は、初期遅延値（初期の遅延情報）を用いて、セルの入力ピンごとに、セットアップ余裕度（初期セットアップ余裕度）を算出し、算出したセットアップ余裕度を、入力ピンと対応づけて記載したリストである。「初期セットアップ余裕度リスト」は、「初期リスト」と記載することもある。
見積もりセットアップ余裕度リスト（見積もりリスト）は、見積もり遅延値を用いて、セルの入力ピンごとに、見積もりセットアップ余裕値を算出し、算出した見積もりセットアップ余裕値を、入力ピンと対応づけて記載したリストである。「見積もりセットアップ余裕度リスト」は、「見積もりリスト」と記載することもある。
【００３１】
遅延挿入リストは、ホールド違反を修正する対策、及び対策箇所を示す情報であり、ホールド違反対策を実施する入力ピンと、挿入する遅延素子に関する情報が対応づけられているリストである。例えば、遅延挿入リストは、ホールド違反を修正するために挿入する遅延素子に関する情報（挿入する位置、遅延値など）を含む。遅延挿入リストは、初期修正処理または見積もり修正処理において、処理部によって作成される。
【００３２】
以下、一実施形態のタイミング修正の手法を実現する各実施態様を、タイミング修正プログラムがタイミング修正装置１００に実行させる処理によって説明する。
【００３３】
実施形態１．
実施形態１では、見積もり遅延値生成処理が遅延上限値を用いて見積もり遅延値を生成する一態様を説明する。まず、タイミング修正手順の流れを説明した後、より具体的な処理例を参照して処理内容を説明する。
＊  実施形態１のタイミング修正手順の流れ
上述した一実施形態のタイミング修正方法を適用する、実施形態１のタイミング修正手順について説明する。実施形態１のタイミング修正手順は、図７に示すタイミング修正装置１００と同様の装置を用いて実現することができる。ただし、処理部２が遅延上限情報を外部から受け取り、情報格納処理によって遅延上限情報を記憶部１へ格納する点が追加される。
まず、図１０、１１を参照して、実施形態１の手順の流れを説明する。図１０は、実施形態１のタイミング修正手順全体の処理例を示すフローチャートである。図１１は、図１０に示すホールド違反修正処理の一例を示すフローチャートである。実際には、図１０、１１の各処理は、図７に示す処理部２がプログラムの命令群を実行することによって実現するものである。以降の説明では、処理部２が実行する図１０に記載のタイミング修正手順を、適宜、「修正手順」と記載する。また、処理部２が実施する図１１に記載のホールド違反修正処理を、適宜、「違反修正処理」と記載する。
実施形態１の修正手順は、まず、タイミング修正処理に必要な情報を記憶領域に格納する（Ｓ１１）。修正手順は、格納した情報を用いてホールド違反修正処理を実施する（Ｓ１２）。
【００３４】
ここで、図１１を参照して、ホールド違反修正処理について説明する。違反修正処理は、ステップＳ１１で格納した情報を用いて、ホールド違反パスを抽出し、ホールド違反パス上のセットアップ余裕度、ホールド違反値等を抽出する（Ｓ２１）。具体的には、違反修正処理は、静的タイミング解析ツールを用いて上述した情報を取得する。ステップＳ２１で抽出するセットアップ余裕度は、初期遅延値（初期の遅延情報）を用いて抽出しているため、初期セットアップ余裕度となる。次に、違反修正処理は、見積もりセットアップ余裕度を算出し、見積もりセットアップ余裕度リストを作成する（Ｓ２２）。見積もりセットアップ余裕度は、初期遅延値の少なくとも一つを遅延上限値へ置き換えた見積もり遅延値を用いて算出する。見積もり遅延値及び見積もりセットアップ余裕度を算出する手順、並びに見積もりセットアップ余裕度リストを作成する手順については、具体的な構成例を用いて後述する。
続いて、初期セットアップ余裕度を違反しない範囲で、挿入可能な遅延素子（違反対策適用箇所）を決定する（Ｓ２３）。この手法は、特許文献１と同様である。違反修正処理は、ステップＳ２３の遅延素子の挿入決定により、ホールド違反を解消するか否かを判定し（Ｓ２４）、ホールド違反を解消する場合には（Ｓ２４、ＹＥＳ）、処理を終了する。一方、ホールド違反を解消しない場合（Ｓ２４、ＮＯ）、違反修正処理は、見積もりセットアップ余裕度を違反しない範囲で、挿入可能な遅延素子（違反対策適用箇所）を決定し、決定した遅延素子の情報を遅延値リストへ記録する（Ｓ２５）。修正手順は、一回のホールド違反修正処理が終了すると、図１０のステップＳ１２へ移行する。
【００３５】
修正手順は、ステップＳ１２のホールド違反修正処理が終了する度に、ホールド違反が解消したか、あるいは指定回数、同処理を実施したかを判定し（Ｓ１３）、判定結果がＮＯ（要件を満たさない）の場合には、要件を満たす判定結果となるまで同処理を繰り返す。一方、判定結果がＹＥＳの場合には、修正手順は、ホールド違反処理によって生成される遅延挿入リストを参照して遅延情報を更新する（Ｓ１４）。具体的には、修正手順は、遅延挿入リストに含まれる、ホールド違反修正処理で挿入すると決定した遅延素子の情報を遅延情報に反映する。ただし、遅延挿入リストには、セル（遅延素子）の遅延値を遅延上限値への変更した情報については記録されていない。そのため、セルの遅延値を遅延上限値へ変更したことについては、遅延情報に反映することができない。従って、セルの遅延値の変更は、セットアップ違反の修正で対応することになる。
修正手順は、図１１のステップＳ２１で用いた初期の遅延情報にかえて、遅延上限値で置き換えた、更新した遅延情報を用いて解析対象パスの解析を実施する（Ｓ１５）。具体的には、修正手順は、静的タイミング解析ツールを用いて、解析対象パスのセットアップ違反を抽出する。ここで抽出されるセットアップ違反は、ホールド違反修正処理において、更新した遅延情報を用いるため、ホールド違反を解消するための遅延素子を挿入したパスで解析する。修正処理は、遅延情報へ挿入する遅延素子の情報が反映されているが、初期遅延値を遅延上限値（見積もり遅延値）に変更していないことから、初期セットアップ余裕度に基づいて解析される。その結果、セットアップ違反が生じる。しかしながら、生じるセットアップ違反は、遅延値を遅延上限値に変更することによって解消され得るため、回路設計をやり直すことなく修正可能であることが予測される。修正手順は、抽出したセットアップ違反を、タイミング制約を満たすように修正し、修正後の回路情報（レイアウト情報）を生成する（Ｓ１６）。
【００３６】
上述した手順によりホールド違反を解消する具体例を、ホールド違反パスの一例を参照して説明する。図１２に、実施形態１で修正するホールド違反パスの一例を示す。図１２に示すホールド違反パスは、４つのフリップフロップＦＦ１〜ＦＦ４、ＡＮＤ回路、及び複数の遅延素子から構成される。図１２に示す回路では、パスＦＦ３−ＡＮＤ回路は、遅延値８０ｐｓの遅延素子１００段からなる遅延素子群ＤＥ１１が配置され、合計した遅延量８０００ｐｓ（８０ｐｓ×１００段）が挿入されている。また、パスＡＮＤ回路−ＦＦ４は、遅延値９０００ｐｓの遅延素子ＤＥ１２が１段配置され、遅延量９０００ｐｓが挿入されている。一つの遅延素子の遅延上限値は、１００ｐｓであることを前提とすると、１段の遅延素子の遅延量１００ｐｓを超えるセル（プロセス）では、改善可能な遅延量が大きい。そのため、ホールド違反の改善が容易になることが予想される。例えば、遅延量９０００ｐｓの遅延素子を、遅延量１００ｐｓの遅延素子に変更すると、８９００ｐｓのセットアップ余裕度を増加させることが可能になり、見積もりセットアップ余裕度は、１０００ｐｓに８９００ｐｓを加えて９９００ｐｓとなる。一方、１段の遅延量１００ｐｓ以下のセルでは、セットアップ改善するには修正箇所が多くなる等の問題がある。
図１３に、図１２のホールド違反パス及びホールド違反の修正に関連するパスについて、ホールド違反値、初期セットアップ余裕度、見積もりセットアップ余裕度の一例を示す。パスＦＦ１−ＦＦ４の見積もりセットアップ余裕度は、パスＡＮＤ回路−ＦＦ４に配置される遅延値９０００ｐｓの遅延素子１段を、遅延値１００ｐｓの遅延素子１段として見積もり、９９００ｐｓ（１０００ｐｓ＋８９００ｐｓ）に改善された例を示す。
遅延情報に定義された遅延値より小さい遅延量として予め定義した遅延上限値を用いることにより、セットアップ余裕度を改善可能な値に容易に見積もることができる。これにより、セットアップ違反の修正が容易な箇所を抽出することができる。
以上が実施形態１のタイミング修正手順の流れである。以降では、実施形態１の具体的な構成例、動作例を説明する。特に、図１０のステップＳ１２のホールド違反修正処理の詳細について説明する。
【００３７】
＊  実施形態１の構成
上述したように、実施形態１のタイミング修正装置のハードウェアの構成については、図７に示す構成例と同様であるが、記憶部１に遅延上限値を格納する点が追加される。図１４を参照して具体的な処理例を説明する。図１４に、実施形態１のタイミング修正装置が実行する各処理の一例を示す。実施形態１のタイミング修正装置１０１は、記憶部１１と処理部２１とを備える。図１４において、記憶部１１は、図７，８の記憶部１に対応し、処理部２１は、図７，８の処理部２に対応する。
記憶部１１は、回路情報、タイミング制約情報、遅延情報、及び遅延上限情報を少なくとも記憶する。また、記憶部１１は、ホールド違反修正処理の工程において、処理部２１が生成する、初期セットアップ余裕度リスト、見積もりセットアップ余裕度リスト、見積もり遅延値情報、及び遅延挿入リストを格納する。
【００３８】
処理部２１は、プログラムを記憶部１１から読み込んで、プログラムの命令群を実行させることによって各処理を実現する。具体的には処理部２１は、情報格納処理、初期リスト生成処理、初期修正処理、見積もり遅延値生成処理、見積もりリスト生成処理、及び見積もり修正処理を少なくとも実行する。
初期リスト生成処理は、初期の遅延情報を用いて解析対象パスの遅延量を抽出し、ホールド違反値と、初期セットアップ余裕値とを算出し、初期セットアップ余裕度リストを生成する。
初期修正処理は、初期セットアップ余裕度リストを用いて、ホールド違反値を解消する遅延素子の挿入箇所を決定し、決定した遅延素子の情報を遅延挿入リストへ記録する。
他の各処理は、図８を参照して説明した内容と同様であるため、説明を省略する。
【００３９】
＊  実施形態１の動作例
図１５は、図１４のタイミング修正装置が実施するホールド違反修正処理の動作例を示すフローチャートである。図１５の動作例は、図１０のホールド違反修正処理（ステップＳ１２）に対応する。タイミング修正装置１０１は、タイミング修正手順の全体の動作を、図１０の動作例に沿って実施し、ホールド違反修正処理（ステップＳ１２）を図１５の動作例に沿って実施する。図１６は、図１４に示す初期リスト生成処理の一例を示すフローチャートである。図１７は、図１４に示す見積もりリスト生成処理の一例を示すフローチャートである。
図１５〜１７の動作例では、ホールド違反の修正を実施する場合に、パスを構成する各セルの入力ピンに着目してホールド違反対策を実施する。以降の説明及び図面において、「ピン」と記載する場合には、入力ピンであることを前提とする。しかしながら、ホールド違反対策を実施する場合に出力ピンを用いて解析・修正が可能であることは言うまでもない。
処理部２１は、初期セットアップ余裕度リストと見積もりセットアップ余裕度リストとを生成する（Ｓ１０１、初期リスト生成処理、見積もりリスト生成処理）。各生成処理の詳細については、図１６、１７を参照して後述する。
処理部２１は、初期セットアップ余裕度リストを生成するときに抽出した情報に基づいて、全ホールド違反パスのレポートを取得する（Ｓ１０２）。
【００４０】
処理部２１は、一つのホールド違反パスを選択し（Ｓ１０３）、遅延挿入済のピンの有無を判定する（Ｓ１０４）。遅延挿入済のピンは、すでに、ホールド違反対策を実施し、遅延素子を挿入する処理を実施した入力ピンである。具体的には、処理部２１は、遅延挿入リストを参照して、挿入する遅延素子の情報が既に記録されているか否かによって判定する。遅延挿入リストは、初期修正処理または見積もり修正処理において、処理部２１が作成するリストである。処理部２１は、遅延挿入リストへ、ホールド違反対策を実施する入力ピンと、挿入する遅延素子に関する情報とを対応づけて記録する。
遅延素子挿入済のピンが存在する場合（Ｓ１０４、ＹＥＳ）、ホールド違反対策を実施しないで、ステップＳ１０８へ移行する。一方、遅延素子挿入済のピンが存在しない場合には（Ｓ１０４、ＮＯ）、処理部２１は、入力ピン毎に、初期セットアップ余裕度リストから情報を抽出する（Ｓ１０５）。具体的には、処理部２１は、少なくとも、最少の初期セットアップ余裕度とホールド違反値とを入力ピン毎に抽出する。処理部２１は、抽出した情報に基づいて、遅延素子を挿入したときの解析対象パスの遅延量がセットアップ余裕度を超えないときに遅延素子の挿入が可能と判定する（Ｓ１０６）。ホールド違反を修正することができる場合には（Ｓ１０６、ＹＥＳ）、処理部２１は、ホールド違反を解消するために挿入する遅延素子を決定し、決定した遅延素子の情報を遅延挿入リストへ記録する（Ｓ１０７）。一方、不可能である場合には（Ｓ１０６、ＮＯ）、処理部２１は、入力ピン毎に見積もりリストから情報を抽出し（Ｓ１０９）、ホールド違反を解消するために挿入する遅延素子を決定し、決定した情報を遅延挿入リストへ記録する（Ｓ１１０）。このとき、ホールド違反を解消する遅延素子を見出せない（決定できない）場合には、処理部２１は、遅延挿入リストへの記録を実施しない。処理部２１は、ホールド違反パスの全部について処理を実施すると（Ｓ１０８、ＹＥＳ）、処理を終了する。一方、まだ処理していないホールド違反パスが存在する場合には（Ｓ１０８、ＮＯ）、処理部２１は、ステップＳ１０３からの処理を繰り返す。
【００４１】
ここで、ステップＳ１０５、Ｓ１０７と、ステップＳ１０９、Ｓ１１０とは、情報と抽出するリストが、初期セットアップ余裕度リストであるか、見積もりセットアップリストであるかの差異があるものの、基本的な処理については同様である。ステップＳ１０７、Ｓ１１０の違反修正は、違反対策適用箇所を決定し、適用箇所に遅延素子を挿入するように、挿入する遅延素子に関する情報を遅延挿入リストを更新する動作を実施する。
図１５の動作例と図１４の各処理との対応は、一例として、ステップＳ１０１、Ｓ１０２を初期リスト生成処理、見積もりリスト生成処理、ステップＳ１０３からＳ１０８を初期修正処理、ステップＳ１０９、Ｓ１１０を見積もり修正処理によって実現するように構成することができる。図１５の動作例を図１４に示すどの処理が実現するかについては設計事項であるため、上述した対応に限られるものではなく、タイミング修正装置１０１全体として図１５の動作例及び図１０の手順を実施できるように構成されていればよい。
【００４２】
次に、図１６を参照して、初期リスト生成処理が初期セットアップ余裕度リストを生成する動作例を説明する。処理部２１は、記憶部１１に保存する回路情報、遅延情報、及びタイミング制約情報を、静的タイミング解析ツールのパラメータへ設定する（Ｓ１２１）。処理部２１は、静的タイミング解析ツールを動作させて、ホールド違反値、初期セットアップ余裕度等の解析情報を取得し、取得した解析情報に含まれる入力ピンの全部を抽出し、全ピンリストを取得する（Ｓ１２２）。処理部２１は、全ピンリストから一つ入力ピン（１ピン）を選択し（Ｓ１２３）、選択した１ピン（言い換えると選択したセル）がクロックであるか否かを判定する（Ｓ１２４）。処理部２１は、選択した１ピンがクロックである場合には（Ｓ１２４、ＹＥＳ）、ホールド違反対策の対象外であるため、処理をしないでステップＳ１２８へ移行する。処理部２１は、選択した１ピンがクロックでない場合には（Ｓ１２４、ＮＯ）、解析情報からセットアップ余裕度を抽出し、初期セットアップ余裕度リストへ記録する（Ｓ１２５）。初期セットアップ余裕度リストへ記録するセットアップ余裕度は、初期の遅延情報を用いて解析した結果であるため、以降の説明では、初期セットアップ余裕度と記載し、見積もりセットアップ余裕度と区別する。
【００４３】
次に、処理部２１は、選択した入力ピンの遅延値及び遅延上限値を取得する。図１８に図１４に示す遅延上限情報の一例を示す。図１８の遅延上限情報は、セルの種類（入力ピンのセルの種類）に応じて遅延上限値を定義した一例である。処理部２１は、入力ピン（セル）の種類に応じて、遅延上限値を取得し、入力ピンの遅延値を比較する。処理部２１は、遅延値が遅延上限値を超えているか否かを判定し（Ｓ１２６）、遅延値が遅延上限値を超えていない場合には（Ｓ１２６、ＮＯ）、ステップＳ１２８へ移行する。一方、遅延値が遅延上限値を超えている場合には（Ｓ１２６、ＹＥＳ）、処理部２１は、遅延値を補正する遅延補正情報を生成し、生成した遅延補正情報を見積もり遅延値情報へ記録する（Ｓ１２７）。図１９に、図１４に示す遅延補正情報の一例を示す。処理部２１は、また、初期セットアップ余裕度を抽出していない入力ピンが存在する場合には（Ｓ１２８、ＮＯ）、ステップＳ１２３から処理を繰り返し、全ピンに対して抽出が完了すると（Ｓ１２８でＹＥＳ）、処理を終了する。
【００４４】
図１７を参照して、見積もりリスト生成処理が見積もりセットアップ余裕度リストを生成する動作例を説明する。処理部２１は、記憶部１１に保存する回路情報、遅延情報、及びタイミング制約情報を、静的タイミング解析ツールのパラメータへ設定し（Ｓ１４１）、さらに、見積もり遅延値情報を設定する（Ｓ１４２）。情報を設定した後、処理部２１は、静的タイミング解析ツールを動作させて、ホールド違反値、見積もりセットアップ余裕度等の解析情報を取得し、取得した解析情報に含まれる入力ピンの全部を抽出し、全ピンリストを取得する（Ｓ１４３）。処理部２１は、全ピンリストから一つ入力ピン（１ピン）を選択し（Ｓ１４４）、選択した１ピンがクロックであるか否かを判定する（Ｓ１４５）。処理部２１は、選択した１ピンがクロックである場合には（Ｓ１４５、ＹＥＳ）、ホールド違反対策の対象外であるため、処理をしないでステップＳ１４７へ移行する。処理部２１は、選択した１ピンがクロックでない場合には（Ｓ１４５、ＮＯ）、解析情報からセットアップ余裕度を抽出し、見積もりセットアップ余裕度リストへ記録する（Ｓ１４６）。見積もりセットアップ余裕度リストへ記録するセットアップ余裕度は、見積もり遅延値情報に記録する遅延補正情報を用いて解析した結果であるため、以降の説明では、見積もりセットアップ余裕度と記載し、初期セットアップ余裕度と区別する。処理部２１は、また、見積もりセットアップ余裕度を抽出していない入力ピンが存在する場合には（Ｓ１４７、ＮＯ）、ステップＳ１４４から処理を繰り返し、全ピンに対して抽出が完了すると（Ｓ１４７でＹＥＳ）、処理を終了する。
【００４５】
図２０に入力ピンに対応する初期セットアップ余裕度、見積もりセットアップ余裕度の一例を示す。図２０では、入力ピン（INS_PIN）に対応づけられる、初期セットアップ余裕度（INITIAL_SETUP_SLACK）と、見積もりセットアップ余裕度（ESTIMATED_SETUP_SLACK）とを並列して示す。初期セットアップ余裕度リストと、見積もりセットアップ余裕度リストとのそれぞれに記録するか、まとめて記録するかは設計事項であり、例えば、図１４などでは説明を容易にするため二つのリストに分けて示している。
【００４６】
＊  実施形態１のメカニズムおよび効果
実施形態１の適用する場合のホールド違反修正処理の具体例を参照して、入力ピンの遅延値を変更してホールド違反を解消できることを説明する。図２１は、実施形態１のホールド違反修正処理を実施する前のホールド違反パスの一例を示す図である。図２２は、図２１のホールド違反パスを初期セットアップ余裕度リストに基づいて修正した例を示す図である。図２３は、図２２のホールド違反パスを見積もりセットアップ余裕度リストに基づいて修正した例を示す図である。図２１〜２３に示す回路構成は、図１２と同様であり、修正前のセットアップ違反及び修正前のホールド違反は図２１に示す通りである。具体的には、パスＦＦ１−ＦＦ２は、セットアップ余裕度（SETUP）３ｎｓ、ホールド違反値（HOLD）−５ｎｓである。パスＦＦ１−ＦＦ４は、セットアップ余裕度１ｎｓ、ホールド違反値４ｎｓである。
【００４７】
図２２に、初期セットアップ余裕度リストを用いて、ホールド違反対策を実施した結果を示す。初期修正処理は、パスＦＦ１−ＡＮＤ回路に遅延値１ｎｓの遅延素子を挿入し、パスＡＮＤ回路−ＦＦ２に遅延値３ｎｓの遅延素子を挿入する対策を決定する。その結果、パスＦＦ１−ＦＦ２は、セットアップ余裕度０ｎｓ、ホールド違反値（HOLD）−１ｎｓとなる。パスＦＦ１−ＦＦ４は、セットアップ余裕度０ｎｓ、ホールド違反値５ｎｓである。パスＦＦ１−ＦＦ２のホールド違反は解消されないため、タイミング修正装置１０１は、さらに見積もりセットアップ余裕度リストを用いてホールド対策を実施する。
図２３に見積もりセットアップ余裕度リストを用いてホールド対策を実施した結果を示す。見積もり修正処理は、パスＦＦ１−ＡＮＤ回路の遅延素子を遅延値２ｎｓに変更する対策を決定する。その結果、パスＦＦ１−ＦＦ２は、セットアップ余裕度０ｎｓ、ホールド違反値（HOLD）０ｎｓとなり、ＭＥＴする。パスＦＦ１−ＦＦ４は、セットアップ余裕度−１ｎｓ、ホールド違反値６ｎｓとなり、ホールド違反は解消するが、セットアップ余裕度が負の値になり、セットアップ違反が残る。パスＦＦ１−ＦＦ４のセットアップ違反は、パスＡＮＤ回路−ＦＦ４の遅延素子の遅延値９ｎｓを変更することにより、解消できる。
【００４８】
以上説明したように、実施形態１のタイミング修正プログラムを実行してセルの遅延値を変更することにより、ホールド違反を解消できる修正箇所を検出することができる。これにより、ホールド違反の修正箇所の検出時間を削減するとともに、当該修正箇所の検出を容易にすることができる。加えて、ホールド違反が修正可能な箇所を増やすことができる。その結果、回路設計のやり直しを削減することが期待できる。
【００４９】
実施形態２．
実施形態２では、実施形態１よりセットアップ余裕度の見積もり精度を高める手法を説明する。
実施形態１では、各セルの入力ピンに対して、同一の遅延上限値を使用して見積もり遅延値情報、及び見積もりセットアップ余裕度を作成した。本実施形態では、各入力ピンの特性に応じて、使用する遅延上限値を設定する。言い換えると、遅延上限値を、セルに応じて見積もる手法の一態様を説明する。実施形態２のタイミング修正装置のハードウェアの構成については、図７に示す構成例と同様であるが、実施形態１と同様に遅延上限情報を追加する。図２４を参照して具体的な処理例を説明する。図２４に、実施形態２のタイミング修正装置が実行する各処理の一例を示す。実施形態２のタイミング修正装置１０２は、記憶部１２と処理部２２とを備える。図２４において、記憶部１２は、図７，８の記憶部１に対応し、処理部２２は、図７，８の処理部２に対応する。
タイミング修正装置１０２は、図１４に示すタイミング修正装置１０１へ遅延上限値設定処理を追加した構成である。
処理部２２は、実施形態１の各処理の実施に加え、遅延上限値設定処理を実施する。遅延上限値設定処理として、処理部２２は、解析対象パスのレイアウト情報を検索して、複数のセルの容量と入力波形鈍りを抽出し、抽出した前記容量と前記入波形鈍りの平均値を算出する。次に処理部２２は、算出した平均値を、前記複数のセルの機能毎にドライブ能力が最も高いセルに適用して算出することによって、遅延上限値を設定し、設定した遅延上限値を記録する見積もり遅延値情報を記憶部１２へ格納する。
【００５０】
処理部２２の動作例は、図１０に示す実施形態１のタイミング修正手順全体の処理例と同様である。処理部２２は、図１０のステップＳ１２のホールド違反修正処理を、図１１または図１５に示すホールド違反修正処理と同様であってよい。ただし、処理部２２は、図１１のステップＳ２１または図１５のステップＳ１０１の処理の前に遅延上限値設定処理を実施する。加えて、図１１または図１５の処理で用いる遅延上限情報は、各セルの特性に応じて異なる値、例えば、セルの種類ごとに異なる値を用いる。例えば、図１５のステップＳ１２７において、遅延値を補正する遅延補正情報を生成する場合に、処理部２２は、図１９に示すセル遅延上限８０ｐｓのみでなく、図２５に示すような機能ごとに異なるセル遅延上限を用いる。
【００５１】
図２５は、実施形態２の遅延上限値設定処理の手順の一例を示す図である。
処理部２２は、解析対象パスのレイアウト情報を記憶部１２から読み出す（Ｓ３１）。レイアウト情報は、タイミング解析の実施前までに生成され、記憶部１２に格納されている。ステップＳ３１の右側の点線の矢印の先に示すリストは、レイアウト情報の一例を示す。
処理部２２は、解析対象回路のレイアウト情報から、複数のセルのＣｌｏａｄ（配線容量）、ＴＲＦ（入力波形鈍り）を抽出し、チップ全体の配線容量及び入力波形鈍りの平均値を算出する（Ｓ３２）。なお、複数のセルのＣｌｏａｄ、ＴＲＦの平均値でなくても、１σ，２σの上限などを用いてもよい。処理部２２は、配線容量及び入力波形鈍りの平均値を記憶部１２へ格納する（Ｓ３３）。ステップＳ３３の右側の点線の矢印の先に示すリストは、配線容量及び入力波形鈍りの平均値の一例を示す。
次に処理部２２は、セルのライブラリから各機能（Function）の最大のドライブ能力のセルを抽出し、抽出したセルへ配線容量、入力波形鈍りの平均値を使用して、セル遅延を抽出する（Ｓ３４）。抽出したセル遅延を、機能毎の遅延上限値を含む遅延上限情報を記憶部１２へ格納する（Ｓ３５）。セルのライブラリは、予めレイアウト設計者などによって生成される情報である。ステップＳ３１の右側の点線の矢印の先に示すリストは、機能毎に設定した上限遅延値の一例を示す。
【００５２】
処理部２２は、例えば、複数のセルのうち、フリップフロップと、フリップフロップ以外の組合せ回路との少なくとも二種類のセルに関する遅延上限値を含む遅延上限情報を生成し、記憶部１２へ格納する。または、処理部２２は、複数のセルの機能毎に定義した遅延上限値を含む遅延上限情報を生成し、記憶部１２へ格納する。
上述した処理によって生成した遅延上限情報を、上述した実施形態の遅延上限値として用いることができる。これにより、遅延上限情報をセル毎に設定することにより精度を上げて確認することが可能となる。
配線遅延も、上述したセル遅延と同様にレイアウト情報から配線遅延の平均値を抽出することで精度を上げることが可能となる。
【００５３】
実施形態１では一律で遅延値を決めていたため、ＡＮＤ回路、ＯＲ回路を使用した複合セルと通常のバッファ、インバータとが同じ遅延値となる。セルにより平均的な遅延値が異なるため、実施形態２ではレイアウト後の情報からデータラインの配線容量と入力波形鈍りの分布を抽出し、配線容量と入力波形鈍りの平均値を算出し、遅延上限値として使用することで精度を向上させることができる。なお、本実施形態では、トランジスタの遅延値が配線容量と入力波形鈍り途に基づいて決まることから、これらの要素を用いて遅延上限値を決定する手法を提案したが、他の要素を用いることを排除するものではない。
【００５４】
実施形態３．
実施形態１，２では、セットアップ余裕度を抽出するときに遅延上限値を使用していたが、実施形態３では、解析対象パスの特性に基づいて、見積もり遅延値を決定して見積もりセットアップ余裕度を算出し、セットアップ余裕度の見積もり精度を高める場合を説明する。実施形態３では、解析対象パスの特性の一例として、セルの位置から計算した配線容量と、最も処理の速いセルに置き換えたときの遅延量を使用する。その結果、セットアップ余裕度を改善したときの値に近いセットアップ余裕度を使用するため、より精度の高いセットアップ余裕度を見積もることが可能となる。
【００５５】
実施形態３のタイミング修正装置のハードウェアの構成については、図７に示す構成例と同様である。図２６を参照して具体的な処理例を説明する。図２４に、実施形態３のタイミング修正装置が実行する各処理の一例を示す。実施形態２のタイミング修正装置１０３は、記憶部１３と処理部２３とを備える。図２６において、記憶部１３は、図７，８の記憶部１と同様であり、処理部２３は、図７，８の処理部２に対応する。
タイミング修正装置１０３は、図１４に示すタイミング修正装置１０１へ見積もりセル情報設定処理を追加し、見積もり遅延値生成処理を削除した構成である。タイミング修正装置１０１は、外部から受け取る情報として、遅延上限情報にかえて最速セル情報を取得する。最速セル情報は、セル毎（例えばセルの種類毎）に一番処理の速いセルの遅延量を保持する。一番処理の速いセルは、例えば、任意のセルについて、適用可能な複数のセルのうち、閾値電圧が最も低いセル、または、ドライブ能力の最も大きいセルである。
図２６では、タイミング修正装置１０３が外部から最速セル情報を受け取る場合を一例として説明する。
【００５６】
処理部２３は、情報格納処理として、回路情報、タイミング制約情報、遅延情報、及び最速セル情報を記憶部１３へ格納する。本実施形態では、回路情報に解析対象パスを構成する各セルの位置情報（レイアウト情報）を含むことを前提として説明する。
処理部２３が実施する見積もり遅延値生成処理は、解析対象パスを構成する各セルの位置情報を回路情報から抽出し、抽出した位置情報を、配線容量を見積もり可能にするツールに設定する。その後、見積もり遅延値生成処理は、隣接するセル間の最短の配線容量を見積もる。また、見積もり遅延値生成処理は、各セルの遅延量を最速セルに置き換えた場合の見積もり遅延量と、見積もった最短配線容量とを用いて、見積もり遅延値を生成する。言い換えると、見積もり遅延値生成処理は、最短配線容量と、最速セルに置き換えたときの遅延量とを用いて見積もり遅延値を生成し、遅延情報に定義する遅延値を見積もり遅延値に置き換える。なお、見積もり遅延値生成処理は、生成した見積もり遅延値を記録する見積もり遅延値情報を生成してもよい。
見積もり遅延値生成処理以外の処理は実施形態１と同様であるため説明を省略する。
【００５７】
図２７は、実施形態３の初期リスト生成処理の一例を示すフローチャートである。図２８は、実施形態３の見積もりリスト生成処理の一例を示すフローチャートである。
図２６に示す実施形態３の初期リスト生成処理は、図１６に示す実施形態１の初期リスト生成処理からステップＳ１２６、Ｓ１２７を除いた処理である。各処理の動作は、実施形態１と同様であるため説明を省略する。
次に、図１７を参照して、実施形態３の処理部２３が実施する見積もりリスト生成処理について説明する。処理部２３は、記憶部１１に保存する回路情報、遅延情報、及びタイミング制約情報を、静的タイミング解析ツールのパラメータへ設定する（Ｓ１６１）。この処理は、図１７のステップＳ１４１と同様である。さらに、処理部２３は、解析対象バスを構成する各セルの位置情報を回路情報から抽出し、抽出した位置情報を、配線容量を見積もり可能にするツール、例えばＳＰＥＦに設定する（Ｓ１６２）。なお、ここで用いるツールはＳＰＥＦに限られることなく、他のツールまたは情報を用いてもよい。
【００５８】
処理部２３は、静的タイミング解析ツールを動作させて、ホールド違反値、見積もりセットアップ余裕度等の解析情報を取得し、取得した解析情報に含まれる入力ピンの全部を抽出し、全ピンリストを取得する（Ｓ１６３）。処理部２３は、全ピンリストから一つ入力ピン（１ピン）を選択し（Ｓ１６３）、選択した１ピンがクロックであるか否かを判定する（Ｓ１６５）。処理部２３は、選択した１ピンがクロックである場合には（Ｓ１６５、ＹＥＳ）、ホールド違反対策の対象外であるため、処理をしないでステップＳ１６７へ移行する。処理部２３は、選択した１ピンがクロックでない場合には（Ｓ１６５、ＮＯ）、位置情報に基づいて最短配線容量を見積もる（Ｓ１６６）。具体的には、処理部２３は、各セルの前段のセルの出力ピンから自セルの入力ピンまでの距離が最短となる配線長を求め、配線長の配線容量を最短配線容量として見積もる。続いて、処理部２３は、選択した１ピンのセルを最速セルに置き換えた場合の最速セル遅延量を最速セル情報から取得し、最速セル遅延帳と最短配線容量とを用いて、見積もり遅延値を算出し、算出した見積もり遅延値を、遅延情報に定義する遅延値と置き換える（Ｓ１６７）。このとき、処理部２３は、ステップＳ１６１で設定した遅延情報を更新するように動作する。なお、ここでは遅延情報に定義する遅延値を見積もり遅延値と置き換えて遅延情報を更新する動作例を説明しているが、遅延情報を見積もり遅延値で更新した見積もり遅延値情報を生成する動作例であってもよい。処理部２３は、また、見積もり遅延値を算出していない入力ピンが存在する場合には（Ｓ１６８、ＮＯ）、ステップＳ１６４から処理を繰り返し、全ピンに対して見積もり遅延値の算出が完了すると（Ｓ１６８でＹＥＳ）、ステップＳ１６９の見積もりリストを生成する処理へ移行する。
【００５９】
見積もりリストを生成する処理は、図１７のステップＳ１４３からＳ１４８と同様であるため、図１７の動作例を参照して説明する。処理部２３は、情報を設定した後、処理部２３は、静的タイミング解析ツールを動作させて、ホールド違反値、見積もりセットアップ余裕度等の解析情報を取得し、取得した解析情報に含まれる入力ピンの全部を抽出し、全ピンリストを取得する（Ｓ１４３）。ステップＳ１６８の処理後において、処理部２３が初期の遅延情報の初期遅延値を見積もり遅延値で置き換えるように働くと、遅延情報として設定されている情報は見積もり遅延値（更新された遅延情報）に変更されていることになる。もし、ステップＳ１６７で処理部２３は、見積もり遅延値情報を生成する場合には、静的タイミング解析ツールが遅延情報に定義する遅延値に替えて見積もり遅延値情報を用いるように設定する必要がある。
【００６０】
処理部２３は、全ピンリストを取得すると、図１７のステップＳ１４４からステップ１４７と同様の処理を実施して、見積もりリストを生成する。
処理部２３は、全ピンリストから一つ入力ピンを選択し（Ｓ１４４）、選択した１ピンがクロックであるか否かを判定する（Ｓ１４５）。処理部２３は、選択した１ピンがクロックである場合には（Ｓ１４５、ＹＥＳ）、ホールド違反対策の対象外であるため、処理をしないでステップＳ１４７へ移行する。処理部２１は、選択した１ピンがクロックでない場合には（Ｓ１４５、ＮＯ）、解析情報からセットアップ余裕度を抽出し、見積もりセットアップ余裕度リストへ記録する（Ｓ１４６）。図２８のステップＳ１６９で実施するステップＳ１４６の処理では、処理部２３は、ステップＳ１６７で生成した見積もり遅延値を用いて解析した解析情報を用いてセットアップ余裕度を抽出する。従って、ここで抽出するセットアップ余裕度は見積もりセットアップ余裕度となる。
見積もりセットアップ余裕度を抽出していない入力ピンが存在する場合には（Ｓ１４７、ＮＯ）、ステップＳ１４４から処理を繰り返し、全ピンに対して抽出が完了すると（Ｓ１４７でＹＥＳ）、処理を終了する。
【００６１】
実施形態１、２では、初期セットアップ余裕度を算出し、初期セットアップ余裕度リストを作成した後、遅延補正情報を作成し、作成した遅延補正情報を見積もり遅延値情報へ記録した。実施形態３では、見積もりセットアップ余裕度の抽出を行うときに、ピン間の距離情報と、セルの遅延ライブラリをもとに再計算を行う。
このとき、実施形態１、２では、セルの遅延量を一律に遅延上限値まで改善できると想定していた。これに対して実施形態３では、信号出力ピンから信号入力ピンまでの距離を求め、最短の配線長となるときの配線容量と、最も処理の速いセルを使用した時の遅延量を見積もる。ここで、隣接する二つのセルのうち、前段セルが信号を出力し、後段セルが信号を入力するとしたときに、信号出力ピンは、前段セルの出力ピンであり、信号入力ピンは後段セルの入力ピンとなる。
【００６２】
本実施形態では、実際の解析対象パスのセルを改善する予測に基づいて見積もり遅延値を算出して見積もりリストを生成する。従って、上述した各実施形態と同様の効果を奏するとともに、上述した各実施形態に比べ、精度が高い見積もりリストを生成することが可能になる。処理時間が増加しても精度が重視される場合には、本実施形態の利用が有効である。
【００６３】
上述した説明において、タイミング修正装置１０３が最速セル情報を外部から受け取る態様を説明した。しかしながら、実施形態３のタイミング修正装置１０３の構成はこれに限られるわけではなく、例えば、最速セル情報をあらかじめ記憶部１３に保持している場合であってもよく、処理部２３が最速セル情報を取得できる構成であれば他の態様であってもよい。加えて、処理部２３は、各セルの位置情報を回路情報から抽出するのではなく、外部から取得するように構成されていてもよく、処理部２３が最短配線容量を見積もることができる情報が取得できるように構成されていればよい。
【００６４】
実施形態４．
実施形態４では、図１４に示すタイミング修正装置１０１と同様の構成を用いて実現することができる。具体的には、図１４において、処理部２１が実施する処理のうち、初期リスト生成処理と初期修正処理とを実施しないように構成する。また、記憶部１１は、初期セットアップ余裕度リストを保持しないように構成する。
図２９は、実施形態４のホールド違反修正処理の動作例を示すフローチャートである。処理部２１は、まず、見積もり遅延値情報を生成し、その後見積もりセットアップ余裕度リストを生成する（Ｓ４０１）。見積もり遅延値情報を生成する手順に関して、例えば、処理部２１は、図１６の動作例のうち、ステップＳ１２５を除く処理を実施する。これらの処理により、処理部２１は、遅延補正情報を作成し、作成した遅延補正情報を見積もり遅延値情報へ記録して、見積もり遅延値情報を生成する。または、記憶部１１に格納する回路情報、タイミング制約情報、及び遅延情報を用いて遅延補正情報を作成してもよい。見積もりセットアップ余裕度リストは、処理部２１が、図１７に示す処理を実施することにより、生成できる。
【００６５】
処理部２１は、見積もりセットアップ余裕度リストを生成するときに抽出した情報に基づいて、全ホールド違反パスのレポートを取得する（Ｓ４０２）。処理部２１は、一つのホールド違反パスを選択し（Ｓ４０３）、処理部２１は、遅延挿入リストへ、ホールド違反対策を実施する入力ピンと、挿入する遅延素子に関する情報とを対応づけて記録する。
遅延素子挿入済のピンが存在する場合（Ｓ４０４、ＹＥＳ）、ホールド違反対策を実施しないで、ステップＳ４０７へ移行する。一方、遅延素子挿入済のピンが存在しない場合には（Ｓ４０４、ＮＯ）、処理部２１は、入力ピン毎に、見積もりセットアップ余裕度リストから情報を抽出する（Ｓ４０５）。具体的には、処理部２１は、少なくとも、最少の見積もりセットアップ余裕度とホールド違反値とを入力ピン毎に抽出する。処理部２１は、抽出した情報に基づいて、遅延素子の挿入が可能か否かを判定し、可能である場合には、ホールド違反を解消するために挿入する遅延素子の情報を遅延挿入リストへ記録する（Ｓ４０６）。処理部２１は、ホールド違反を修正できる遅延素子の挿入を検出できない場合には、遅延挿入リストを更新しない。処理部２１は、ホールド違反パスの全部について処理を実施した場合には（Ｓ４０７、ＹＥＳ）、処理を終了し、まだ処理していないホールド違反パスが存在する場合には（Ｓ４０７、ＮＯ）、ステップＳ４０３からの処理を繰り返す。
【００６６】
実施形態４によれば、初期セットアップ余裕度リストの生成の工程を省くことが可能となるため、処理時間を削減することができる。また、記憶部１１に格納する情報量を削減することができる。加えて、上記実施形態では、実施形態１を用いて本実施形態を実現する例を説明したが、他の実施形態を用いる場合であってもよい。例えば、実施形態２で説明したように、図２４に示すタイミング修正装置１０２により実現することも可能であり、遅延上限値を設定する処理をする場合には、見積もりリストを生成する前に、図２５に示す処理を実施するように構成すればよい。
また、実施形態３で説明したように、図２６に示すタイミング修正装置１０３により実現することもできる。具体的には、図２６において、処理部２３が実施する処理のうち、初期リスト生成処理と初期修正処理とを実施しないように構成する。また、記憶部１３は、初期セットアップ余裕度リストを保持しないように構成する。処理部２３は、図２９のステップＳ４０１において、図２８に示す見積もりリスト生成処理を実施する。実施形態３へ実施形態４を適用する場合には、実施形態３を実施形態１または２に適用する場合に比べ、見積もりセットアップ余裕度リストをより実現性の高い値を用いて生成することができるため、精度が高くなることが期待できる。
【００６７】
その他の実施形態．
上記各実施形態では、タイミング修正プログラムにより、一実施形態のタイミング修正の手法を実現する場合を説明した。上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
加えて、プログラムは、例えば、ＣＤ（Compact Disk）やフラッシュメモリを搭載したＵＳＢ（Universal Serial Bus）メモリといった持ち運び可能な記録媒体に記録されてもよい。この場合、実行プログラムは、これらの持ち運び可能な記録媒体から、コンピュータの備えるＣＤドライブや、ＵＳＢポート等を介して導入される。
【００６８】
上記各実施形態では、一実施形態のタイミング修正の手法をプログラムによって実現する場合を説明したが、これに限られるものではなく、例えば、ハードウェア、ファームウェア、ソフトウェアを組み合わせて実現する場合を排除するものではない。
【００６９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７０】
１、１１、１２、１３  記憶部
２、２１、２２、２３  処理部
１００、１０１、１０２、１０３  タイミング修正装置
【図１】
2014219838.tif 000003
【図２】
2014219838.tif 000004
【図３】
2014219838.tif 000005
【図４】
2014219838.tif 000006
【図５】
2014219838.tif 000007
【図６】
2014219838.tif 000008
【図７】
2014219838.tif 000009
【図８】
2014219838.tif 000010
【図９】
2014219838.tif 000011
【図１０】
2014219838.tif 000012
【図１１】
2014219838.tif 000013
【図１２】
2014219838.tif 000014
【図１３】
2014219838.tif 000015
【図１４】
2014219838.tif 000016
【図１５】
2014219838.tif 000017
【図１６】
2014219838.tif 000018
【図１７】
2014219838.tif 000019
【図１８】
2014219838.tif 000020
【図１９】
2014219838.tif 000021
【図２０】
2014219838.tif 000022
【図２１】
2014219838.tif 000023
【図２２】
2014219838.tif 000024
【図２３】
2014219838.tif 000025
【図２４】
2014219838.tif 000026
【図２５】
2014219838.tif 000027
【図２６】
2014219838.tif 000028
【図２７】
2014219838.tif 000029
【図２８】
2014219838.tif 000030
【図２９】
2014219838.tif 000031