(57)【要約】【目的】複雑な回路のタイミング調整を効率よく適正に行えることを課題とする。【構成】クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、記憶素子間に介在するパス毎に、該パスのホールド違反値Ｔｈとセットアップ違反になるまでのセットアップ余裕値Ｔｓとを求めるステップＳ１と、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍを抽出するステップＳ２と、前記入出力端子毎に抽出した各最小のセットアップ余裕値のうちの最大のセットアップ余裕値Ｔｓｍ（ｍａｘ）に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備える。【選択図】　　図１
2004038383.tif 000002
【特許請求の範囲】
【請求項１】
クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、
記憶素子間に介在するパス毎に、該パスのホールド違反値とセットアップ違反になるまでのセットアップ余裕値とを求めるステップＳ１と、
ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値を抽出するステップＳ２と、
前記入出力端子毎に抽出した各最小のセットアップ余裕値のうちの最大のセットアップ余裕値に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えることを特徴とするタイミング調整方法。
【請求項２】
クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、
記憶素子間に介在するパス毎に、該パスのホールド違反値とセットアップ違反になるまでのセットアップ余裕値とを求めるステップＳ１と、
ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値と違反パス数とを抽出するステップＳ２と、
前記入出力端子毎に抽出した各違反パス数のうちの最大のパス数に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えることを特徴とするタイミング調整方法。
【請求項３】
ディジタル回路のホールド違反対策は、最大のホールド違反値を有する違反パスから優先的に行うことを特徴とする請求項１又は２に記載のタイミング調整方法。
【請求項４】
違反パスのホールド違反値が前記決定されや違反対策適用箇所のセットアップ余裕値よりも大きいことにより、前記違反対策適用個所に前記セットアップ余裕値分の遅延素子を挿入するステップＳ４を備えることを特徴とする請求項１又は２に記載のタイミング調整方法。
【請求項５】
遅延素子挿入後のディジタル回路につき記憶素子間に介在するパス毎のホールド違反値とセットアップ余裕値とを更新するステップＳ５と、ホールド違反対策が可能な範囲内で、前記ステップＳ２〜ステップＳ５の処理を繰り返すステップＳ６とを備えることを特徴とする請求項４に記載のタイミング調整方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディジタル回路のタイミング調整方法に関し、更に詳しくはクロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法に関する。
【０００２】
【従来の技術】
図２２〜　図２４は従来技術を説明する図（１）〜（３）で、図２２（Ａ）にタイミング調整を説明するためのディジタル回路を示す。図において、ＦＦ１，ＦＦ２はクロック信号ＣＬＯＫに同期して動作する第１，第２の記憶素子（フリップフロップ）であり、ＦＦ１の出力端子Ｑの信号が中間の組合せ回路（ＬＯＧＩＣ）部を介してＦＦ２のデータ入力端子Ｄに供給される。
【０００３】
図２２（Ｂ）に回路動作のタイミングチャートを示す。このディジタル回路の正常な動作は、ＬＯＧＩＣ部のデータ遅延がクロックサイクル内に収まるものである。即ち、クロックαでＦＦ１にラッチしたＤＡＴＡ１の遅延ＤＡＴＡ２をクロックβでＦＦ２にラッチできるものである。これに対して、ＬＯＧＩＣ部のデータ遅延が長く、クロックαでラッチしたＤＡＴＡ１の遅延ＤＡＴＡ２をクロックβでＦＦ２にラッチできない場合をセットアップ違反と呼ぶ。また、ＬＯＧＩＣ部のデータ遅延が短く、ＤＡＴＡ１，ＤＡＴＡ２の双方ともクロックαでラッチしてしまう場合をホールド違反と呼ぶ。このホールド違反を解消するためには、ＤＡＴＡ２に対して最低限Ｔｈ（ホールド違反）分のディレイを挿入しなければならない。一方、ＤＡＴＡ２に対して挿入可能なディレイの限度値はＴｓ（セットアップ余裕値）である。
【０００４】
従来は、ホールド違反が発生している記憶素子間の経路（ホールド違反パス）につき、フォワード・トレース又はバック・トレースを行いつつ、他のパス中にセットアップ違反が発生しないような箇所を検索し、該個所にホールド違反Ｔｈ分の遅延バッファ（ＤＢ）を挿入するものであった。以下、具体的に説明する。
【０００５】
図２３はその一具体例を示しており、図２３（Ａ）に回路図、図２３（Ｂ）にＦＦ間（パス）毎のホールド違反値Ｔｈとセットアップ余裕値Ｔｓとをリストした表を示す。この表によれば、ＦＦ１．Ｑ−ＦＦ２．Ｄ間にはホールド違反Ｔｈ＝５ｎＳが存在しており、これを解消するためには、上記従来方法によると、５ｎＳのＤＢをＦＦ１．Ｑ−ＡＮＤ．Ａ１間又はＡＮＤ．Ｘ〜ＦＦ２．Ｄ間に挿入することになる。
【０００６】
しかし、もしＦＦ１．Ｑ〜ＡＮＤ．Ａ１間に５ｎＳのＤＢを挿入するとすると、他のパス（ＦＦ１．Ｑ−ＦＦ４．Ｄ間）のセットアップ余裕値Ｔｓ＝３ｎＳであるために、ＦＦ１．Ｑ−ＦＦ４．Ｄ間では２ｎＳのセットアップ違反となってしまい、よってＦＦ１．Ｑ〜ＡＮＤ．Ａ１間には５ｎＳのＤＢを挿入できない。また、もしＡＮＤ．Ｘ〜ＦＦ２．Ｄ間（又はＦＦ２．Ｄの直前）に５ｎＳのＤＢを挿入するとすると、他のパス（ＦＦ３．Ｑ−ＦＦ２．Ｄ間）のセットアップ余裕値Ｔｓ＝４ｎＳであるために、ＦＦ３．Ｑ−ＦＦ２．Ｄ間で１ｎＳのセットアップ違反となってしまい、よってＡＮＤ．Ｘ−ＦＦ２．Ｄ間にも５ｎＳのＤＢを挿入できない。このように、図２３のケース（即ち、ホールド違反パス上にホールド違反Ｔｈ分以上のセットアップ余裕値Ｔｓが無いケース）では、ＦＦ１．Ｑ−Ｆ２．Ｄ間のホールド違反Ｔｈ＝５ｎＳを解消できなかった。
【０００７】
また、上記従来方法では、バック・トレース又はフォワード・トレースを行いつつ、他のパスにセットアップ違反が起きない箇所を検索し、ここにホールド違反分のＤＢを挿入するため、最も適切な位置にＤＢを挿入できない場合があった。以下、具体的に説明する。
【０００８】
図２４はその一具体例を示しており、図２４（Ａ）に回路図、図２４（Ｂ）にパス毎のホールド違反値Ｔｈとセットアップ余裕値Ｔｓとをリストした表を示す。この表によれば、ＦＦ１．Ｑ−ＦＦ２．Ｄ間及びＦＦ１．Ｑ−ＦＦ４．Ｄ間で共にホールド違反Ｔｈ＝５ｎＳが発生している。また、ＦＦ３．Ｑ−ＦＦ２．Ｄ間及びＦＦ３．Ｑ−ＦＦ４．Ｄ間のセットアップ余裕値Ｔｓ＝５．１ｎＳである。このホールド違反解消のために、もしバック・トレースによるＤＢ挿入位置決定を行った場合は、図２４（Ｃ）に示す如く、ＦＦ２．Ｄの直前及びＦＦ４．Ｄの直前に、夫々５ｎＳのＤＢを挿入することになる。
【０００９】
しかし、こうするとＦＦ３．Ｑ−ＦＦ２．Ｄ間及びＦＦ３．Ｑ−ＦＦ４．Ｄ間では共にセットアップ余裕値Ｔｓ＝０．１ｎＳしか無くなってしまい、実配線した場合には、セットアップ違反になり兼ねない。また、ホールド違反を起こしている２つのパスにつき、共通の経路（ＦＦ１．Ｑ−ＡＮＤ．Ａ１）が存在するにも関わらず、異る２箇所にＤＢ１，ＤＢ２を挿入することになるため、ゲート面積（スペースファクタ）についても効率が悪かった。
【００１０】
【発明が解決しようとする課題】
本発明は上記従来技術の問題点に鑑みなされたもので、その目的とする所は、複雑な回路のタイミング調整を効率よく適正に行えるディジタル回路のタイミング調整方法を提供することにある。
【００１１】
【課題を解決するための手段】
上記の課題は例えば図１（Ａ）の構成により解決される。即ち、本発明（１）のタイミング調整方法は、クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、記憶素子間に介在するパス毎に、該パスのホールド違反値Ｔｈとセットアップ違反になるまでのセットアップ余裕値Ｔｓとを求めるステップＳ１と、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍを抽出するステップＳ２と、前記入出力端子毎に抽出した各最小のセットアップ余裕値のうちの最大のセットアップ余裕値Ｔｓｍ（ｍａｘ）に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えるものである。
【００１２】
図１（Ｂ）〜（Ｄ）に従って本発明（１）のタイミング調整方法を具体的に説明する。図１（Ｂ）に一例のディジタル回路（上記図２３と同様）を示す。
【００１３】
図１（Ｃ）には、上記ステップＳ１で、パス（ＦＦ間）毎に求めたホールド違反値Ｔｈとセットアップ余裕値Ｔｓとのテーブルを示す。このテーブルによれば、ＦＦ１−ＦＦ２間にホールド違反Ｔｈ＝５ｎｓが発生しており、他のパス（ＦＦ１−ＦＦ４，ＦＦ３−ＦＦ２）のセットアップ余裕値Ｔｓは夫々３ｎｓ，４ｎｓである。
【００１４】
図１（Ｄ）には、上記ステップＳ２で、違反パス（ＦＦ１−ＦＦ２）に介在する記憶素子（ＦＦ１，ＦＦ２）及び論理ゲート（ＡＮＤ）の入出力端子毎に抽出した、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍの表を示す。以下、Ｔｓｍの抽出方法を具体的に説明する。
【００１５】
ＡＮＤゲートの入力端子ＡＮＤ．Ａ１に着目すると、この端子Ａ１には２つのパス（ＦＦ１−ＦＦ２，ＦＦ１−ＦＦ４）が通過（関係）しており、図１（Ｃ）によれば各パスのセットアップ余裕値Ｔｓ＝１５ｎｓ，３ｎｓであるから、これらのうちの最小のセットアップ余裕値Ｔｓｍ＝３ｎｓとなる。またＦＦ２の入力端子ＦＦ２．Ｄに着目すると、この端子Ｄには２つのパス（ＦＦ１−ＦＦ２，ＦＦ３−ＦＦ２）が通過しており、各パスのセットアップ余裕値Ｔｓ＝１５ｎｓ，４ｎｓであるから、これらのうちの最小のセットアップ余裕値Ｔｓｍ＝４ｎｓとなる。他の入出力端子についても同様である。
【００１６】
こうして、少なくとも違反パス（ＦＦ１−ＦＦ２）に介在するような、記憶素子（ＦＦ１，ＦＦ２）及び論理ゲート（ＡＮＤ）の入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍの系列｛ＦＦ１．Ｑ（３ｎｓ）−ＡＮＤ．Ａ１（３ｎｓ）−ＡＮＤ．Ｘ（３ｎｓ）−ＦＦ２．Ｄ（４ｎｓ）｝を抽出できる。これを図１（Ｃ）のテーブルのＰＡＴＨ欄に示す。
【００１７】
そして、上記ステップＳ３では、前記入出力端子毎に抽出した各最小のセットアップ余裕値Ｔｓｍ（３，３，３，４ｎｓ）のうちの最大のセットアップ余裕値Ｔｓｍ（ｍａｘ）（４ｎｓ）に対応する入出力端子（ＦＦ２．Ｄ）を優先して違反対策適用箇所に決定する。
【００１８】
本発明（１）によれば、Ｔｓｍ（ｍａｘ）に対応する入出力端子を優先して違反対策適用箇所に決定するので、１回分の対策（遅延素子挿入）で、ホールド違反値Ｔｈ中のより大きな部分を効率よく解消できる。また、この１回分の対策によって、該対策個所を通る他の１又は２以上のパスに存在するようなホールド違反の一部又は全部を同時に解消できてしまう機会も大きい。
【００１９】
また本発明（２）のタイミング調整方法は、クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、記憶素子間に介在するパス毎に、該パスのホールド違反値とセットアップ違反になるまでのセットアップ余裕値とを求めるステップＳ１と、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値と違反パス数とを抽出するステップＳ２と、前記入出力端子毎に抽出した各違反パス数のうちの最大のパス数に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えるものである。
【００２０】
本発明（２）のステップＳ２では、少なくとも違反パス（ＦＦ１−ＦＦ２）に介在する記憶素子（ＦＦ１，ＦＦ２）及び論理ゲート（ＡＮＤ）の入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値Ｔｓｍと違反パス数Ｅｐの系列｛ＦＦ１．Ｑ（３ｎｓ−１パス）−ＡＮＤ．Ａ１（３ｎｓ−１パス）−ＡＮＤ．Ｘ（３ｎｓ−１パス）−ＦＦ２．Ｄ（４ｎｓ−１パス）｝とを抽出する。これを図１（Ｃ）のテーブルのＰＡＴＨ欄に示す。
【００２１】
そして、このステップＳ３では、前記入出力端子毎に抽出した各違反パス数Ｅｐ（１，１，１，１パス）のうちの最大のパス数Ｅｐ（ｍａｘ）（１パス）に対応する入出力端子（例えばＦＦ１．Ｑ）を優先して違反対策適用箇所に決定するものである。
【００２２】
本発明（２）によれば、Ｅｐ（ｍａｘ）に対応する入出力端子を優先して違反対策適用箇所に決定するので、一般に複雑なディジタル回路の全体に発生しているような、より多くの違反パスを、これらが通過する共通の入出力端子に対する１回分の対策により、それらの一部又は全部を効率よく解消できる。
【００２３】
本発明（３）では、上記本発明（１）又は（２）において、ディジタル回路のホールド違反対策は、最大のホールド違反値を有する違反パスから優先的に行うものである。
【００２４】
本発明（３）によれば、ホールド違反値の大きい違反パスから優先的に違反対策を行うため、１パス分の違反対策によって、該パスを共有するような他の１又は２以上の違反パスの一部又は全部を同時に解消できる可能性が高い。
【００２５】
本発明（４）では、上記本発明（１）又は（２）において、違反パスのホールド違反値が前記決定されや違反対策適用箇所のセットアップ余裕値よりも大きいことにより、前記違反対策適用個所に前記セットアップ余裕値分の遅延素子ＤＢを挿入するステップＳ４を備えるものである。
【００２６】
図１（Ｂ）を参照すると、例えば上記本発明（１），（４）に従って、１回目の対策ではＦＦ２．Ｄの直前にＤＢ１（４ｎｓ）が挿入され、また２回目の対策ではＦＦ１．Ｑの直後にＤＢ２（１ｎｓ）が挿入されることになる。こうして、各対策のトータルによって違反パス全体にわたるような大きなホールド違反値５ｎｓを効率よく解消できる。
【００２７】
本発明（５）では、上記本発明（４）において、遅延素子挿入後のディジタル回路につき記憶素子間に介在するパス毎のホールド違反値とセットアップ余裕値とを更新するステップＳ５と、ホールド違反対策が可能な範囲内で、前記ステップＳ２〜ステップＳ５の処理を繰り返すステップＳ６とを備えるものである。従って、複雑でかつ大きなホールド違反値を含むようなディジタル回路のタイミング調整を効率よく的確に行える。
【００２８】
【発明の実施の形態】
以下、添付図面に従って本発明に好適なる実施の形態を詳細に説明する。なお、全図を通して同一符号は同一又は相当部分を示すものとする。
【００２９】
図２は実施の形態によるホールド違反調整（メイン）処理のフローチャート、図３，図４はそのイメージ図（１），（２）であり、以下、これらの図に従ってホールド違反調整処理の概要をまず説明する。なお、図２中のステップＳ１２の処理の詳細を図６に示し、また、図２中のステップＳ１３及びＳ１４の処理の詳細を図１２又は図１７に示す。
【００３０】
図２において、ステップＳ１１では、公知のスタティックタイミング解析（ＳＴＡ）ツールを用いてディジタル回路のタイミング解析処理を行い、解析した全ゲートのパス（記憶素子間経路）及び遅延情報等をデータベースＳＤＢに保存する。ステップＳ１２では、データベースＳＤＢよりタイミング違反のパスを１つずつ抽出し、そのパス情報、ホールド違反時間Ｔｈ、セットアップ余裕値Ｔｓ、ゲートの名称とその入出力端子の情報、タイミングデータ等を接続依存のある他のパスの情報と共にテーブル化する。以下、テーブル化処理を具体的に説明する。
【００３１】
図３（Ａ）において、ＦＦ１‐ＦＦ３間が最初に抽出したホールド違反パスであるとすると、論理ゲート１０のタイプ（端子）を抽出し、２入力論理ゲートの場合は、他方の入力端子に接続しているパスを検索し、ＦＦ２の存在を抽出する。更に、クロックサイクルをＴとし、ＦＦ１‐ＦＦ３間，ＦＦ２‐ＦＦ３間の各ホールド違反時間ｎ，ｍとすると、（Ｔ＋ｎ），（Ｔ＋ｍ）のうちの小さい方の値を論理ゲートの出力端子のセットアップ余裕値Ｔｓとする。その結果として、論理ゲート１０に対しては、少なくとも、
ＦＦ１‐ＦＦ３，ＦＦ２‐ＦＦ３の各パス情報
解消すべき最大のホールド違反時間（ｎ，ｍのうち大きい値）
各端子のセットアップ余裕値Ｔｓ
をテーブル化するデータとする。
【００３２】
また、図３（Ｂ）に示す如く、ＦＦ２の出力がＦＦ４にも接続しいる場合は、上記ＦＦ２の抽出後、該ＦＦ２を基点として検索し、ＦＦ４を抽出する。ＦＦ４は、ＦＦ１‐ＦＦ３間及びＦＦ２‐ＦＦ３間のタイミング違反には直接は関与しないが、論理ゲート１０の前後への遅延バッファＤＢの挿入方法（例えばＦＦ２の直後にＤＢを挿入）によっては、ＦＦ２‐ＦＦ４間のタイミングにも影響を与えるため、論理ゲート１０に対してＦＦ２‐ＦＦ４間のパス情報を追加する。
【００３３】
これらの情報は後述の図４（Ｂ），（Ｄ）に示すようなテーブル情報として保存する。また、タイミング違反を起こしているパスの追い番を管理番号として、
論理ゲート→パスの種類
パス毎→ディレイ時間
管理番号→最大ホールド違反時間
等の関係を用いてＤＢＭＳ等を使用する事も容易である。
【００３４】
ステップＳ１３ではテーブル内に対策可能なホールド違反パスが存在するか否かを判別し、存在する場合は、ステップＳ１４で遅延バッファＤＢの挿入位置と必要な遅延値を決定する。以下、これを具体的に説明する。
【００３５】
図３（Ａ）にＤＢの挿入位置とタイプの決定方法の例を示す。ＤＢの挿入位置は、あるパス（ＦＦ１‐ＦＦ３）のホールド違反時間Ｔｈ＝Ｘ（＝ｎ）と、論理ゲート１０を共有する他の全パス（ＦＦ２‐ＦＦ３）のセットアップ余裕値Ｔｓ＝Ｓ２とを比較し、論理ゲート１０の入／出力側のどの位置が最適かを決定する。ＦＦ１‐ＦＦ３間に挿入すべき遅延＝Ｘ（＜Ｓ１：ＦＦ１‐ＦＦ３間のセットアップ余裕値）とすると、ＸとＳ２の比較においては次の２つのケースが考えられる。
【００３６】
▲１▼　Ｘ＞Ｓ２
▲２▼　Ｘ≦Ｓ２
ケース▲２▼では、遅延ＸをＳ２でカバーできるため、ＤＢを論理ゲート１０の入／出力のいずれに挿入しても問題はないが、ケース▲１▼では、遅延Ｘを論理ゲート１０の出力側に挿入すると、ＦＦ２‐ＦＦ３のパスでセットアップ違反を起こしてしまう。そこで、この場合は、遅延Ｘを遅延Ｓ２と遅延（Ｘ−Ｓ２）とに分割し、遅延Ｓ２を論理ゲート１０とＦＦ３間に挿入し、かつ遅延（Ｘ−Ｓ２）をＦＦ１と論理ゲート１０間に挿入することで、他のパスには悪影響を与えない。又は、遅延ＸをＦＦ１と論理ゲート１０間に挿入してもよい。論理ゲート１０を共有するパスが複数存在する場合は、全パス中、最小のセットアップ余裕値の遅延を挿入する事を繰り返す。
【００３７】
このように、ホールド違反分に対してＤＢを分割して挿入すれば、セットアップ違反を起こすこと無くホールド違反を解消できる。また、ホールド違反を解消するためにＤＢを挿入する際、論理ゲート１０に対してホールド違反を起こしているパス数を調べれば、違反パスが集中している最適な位置にＤＢを挿入することも可能である。
【００３８】
図２に戻り、ステップＳ１５では対処した遅延値を違反パスを含む全関連パスに挿入してテーブルを更新し、ステップＳ１３に戻る。そして，上記処理を対処可能な違反パスがなくなるまで繰り返し、やがて、ステップＳ１３の判別で対策可能なホールド違反が存在しない場合は、この処理を終了する。そして、前述の決定された情報（回路情報）は記憶媒体に保存され、配線ツールの入力データとなる。
【００３９】
図４（Ａ）に上記図２３（Ａ）の課題に対する解決策の例を示す。５ｎＳのＤＢを２ｎＳ（ＤＢ１）と３ｎＳ（ＤＢ２）とに分割すると共に、ＦＦ１．Ｑ−ＡＮＤ．Ａ１間にはＤＢ１を挿入し、かつＡＮＤ．Ｘ−ＦＦ２．Ｄ間（又はＦＦ２．Ｄの直前）にはＤＢ２を挿入すれば、セットアップ違反無くＦＦ１‐ＦＦ２間のホールド違反５ｎＳを解消できる。図４（Ｂ）にＤＢ１，ＤＢ２挿入後のテーブルを示す。
【００４０】
図４（Ｃ）に上記図２４（Ａ）の課題に対する解決策の例を示す。ここではゲート回路の全入出力端子に対して、セットアップ余裕値を調べ、セットアップ余裕値が一番大きい箇所にＤＢを挿入する。図２４（Ａ）では、ＦＦ１．Ｑ又はＡＮＤ．Ａ１がセットアップ余裕値が一番大きいので、図４（Ｃ）のようにＦＦ１．Ｑの直後又はＡＮＤ．Ａ１の直前（ここでは同じ箇所）にＤＢ（５ｎＳ）を挿入する。図４（Ｄ）にＤＢ挿入後のテーブルを示す。
【００４１】
又は、ゲート回路の全入出力端子に対して、ホールド違反パス数を調べ、最も違反パス数が重なる箇所にＤＢを挿入する。図２４（Ａ）では、２つのパス（ＦＦ１．Ｑ−ＦＦ２．Ｄ，ＦＦ１．Ｑ−ＦＦ４．Ｄ）がホールド違反を起こしているので、ＦＦ１．Ｑ又はＡＮＤ．Ａ１が最も違反パス数が重なる箇所となる。そこで、図４（Ｃ）のようにＦＦ１．Ｑの直後又はＡＮＤ．Ａ１の直前（ここでは同じ箇所）にＤＢ（５ｎＳ）を挿入する。
【００４２】
図５は実施の形態におけるホールド違反調整対象のディジタル回路図で、以下，本回路に対するホールド違反調整処理を詳細に説明する。本処理の流れは上記図２のフローチャートに従う。即ち、まず図５の回路に対してスタティックタイミング解析を行う。次に、このタイミングの解析結果より、パス内の記憶素子（ＦＦ）及び論理ゲートの各入出力端子に対してタイミング調整に必要なテーブルを作成する。このテーブル作成は、タイミング調整の判断に必要な情報のみをリストすることで、処理の簡略化、高速化を図る。
【００４３】
図６にテーブル作成処理（図２のステップＳ１２に相当）のフローチャート、図７，図８にテーブル作成処理のイメージ図（１），（２）を示す。図６において、ステップＳ２１ではテーブル化しないゲート端子を削除する。図７にその削除例を示す。図７（Ａ）において、１対１接続（分岐を有しない接続）となっている論理ゲート及び記憶素子の入力端子（又は出力端子）はテーブル化しない。ＯＲ．Ｘの直後にＤＢを入れてもＡＮＤ．Ａ１の直前にＤＢを入れても同じ意味を表しているので、この場合のＡＮＤ．Ａ１をテーブル化しない。
【００４４】
図７（Ｂ）において、ＡＮＤ．Ａ１の直前（分岐後）にＤＢを入れば、ＮＯＲのパスには影響しないが、ＯＲ．Ｘの直後（分岐前）にＤＢを入れると、ＮＯＲのパスにも影響するので、この場合のＡＮＤ．Ａ１はテーブル化する。
【００４５】
図７（Ｃ）において、バッファＢＦや反転バッファＩＶが、入出力端子共に１対１接続の場合、又は全段の論理ゲートが枝分岐していない場合は、論理ゲート自体をテーブルより削除する。又は、その入力端子（又は出力端子）をテーブル化しない。ＢＦ１．Ａ−ＩＶ１．Ｘ間の何処にＤＢを入れても、他のパスに影響を及ばさないため、これらのポイントはテーブル化しない。
【００４６】
図８において、ホールド違反に関係しないパスはテーブル化しない。今、ＦＦ１‐ＦＦ３間にホールド違反が発生しているとすると、ＤＢ挿入ポイントの候補はＦＦ１．Ｑ及びＦＦ３．Ｄである。この時、どちらにＤＢを挿入したとしても、ＦＦ２−ＦＦ４間のパスには影響が及ばないから、ＦＦ２‐ＦＦ４間のパスはテーブル化しない。
【００４７】
図６に戻り、ステップＳ２２では、上記タイミング解析結果より、記憶素子間（パス）毎のホールド違反値Ｔｈ、セットアップ余裕値Ｔｓをリストする。図９にそのテーブル３を示す。このテーブル３を参照すると、番号１，３，５，６，８，１３の各パスでホールド違反が起きている。今、番号１（ＦＦ１−ＦＦ３）のパスに注目すると、該パスはＦＦ１．Ｑ−ＯＲ１．Ａ１−ＯＲ１．Ｘ−ＦＦ３．Ｄの経路からなっており、そのホールド違反値Ｔｈ＝３ｎｓ，セットアップ余裕値Ｔｓ＝８ｎｓである。上記図５ではこのエラーパスに対応する経路を太線で示している。また番号２（ＦＦ１−ＦＦ３）のパスは、ＦＦ１．Ｑ−ＮＯＲ．Ａ１−ＮＯＲ．Ｘ−ＯＲ２．Ａ１−ＯＲ２．Ｘ−ＯＲ１．Ｘ−ＦＦ３．Ｄの経路からなっている。このパスにはホールド違反は無く（−で示す）、そのセットアップ余裕値Ｔｓ＝２ｎｓとなっている。上記図５ではこのエラー無しのパスを細線で示している。以下の各パスについても同様に理解できる。
【００４８】
図６に戻り、ステップＳ２３では、記憶素子（ＦＦ）及び論理ゲートの端子毎に最小のセットアップ余裕値Ｔｓｍ、ホールド違反パス数Ｅｐをリストする。図１０にそのテーブル４を示す。このテーブル４を参照すると、左欄にはタイミング解析に関係するＦＦ及び論理ゲートの各入出力端子がリストされている。例えば入力端子ＡＮＤ．Ａ１に注目すると、該端子には４つのパス（ＦＦ１−ＦＦ５，ＦＦ１−ＦＦ７，ＦＦ２−ＦＦ５，ＦＦ２−ＦＦ７）が関与（通過）している。
【００４９】
このパスの情報で、図９のテーブル３から各パスのセットアップ余裕値Ｔｓ（ａｌｌ）を抽出すると、６，３，１，２（ｎｓ）となる。また、このパスの情報で、図９のテーブル３からホールド違反が発生しているパスを抽出すると、該当パスはＦＦ１−ＦＦ５の一つである。従って、入力端子ＡＮＤ．Ａ１の最小のセットアップ余裕値Ｔｓｍ＝１ｎｓ、エラーパス数Ｅｐ＝１となる。以下の各入出力端子についても同様にしてＴｓｍ，Ｅｐを抽出できる。
【００５０】
図６のステップＳ２４では、上記図９のテーブル３をホールド違反値Ｔｈの大きい方から順に並び換える。図１１にそのテーブル５を示す。このテーブル５を参照すると、上記図９のテーブル３がパス毎にホールド違反値Ｔｈの大きい方から順に並び換えられている。なお、図１１のテーブル５の右欄（ＰＡＴＨ）には、当該パスに関与するＦＦ及び論理ゲートの入出力端子毎に最小のセットアップ余裕値Ｔｓｍとホールド違反パス数Ｅｐとが（Ｔｓｍ−Ｅｐ）の形で付記されている。
【００５１】
次に、図１１のテーブル５中に存在するホールド違反を解消すべく、遅延バッファＤＢの挿入位置とタイプを決定（図２のステップＳ１４に相当）する。この決定方法には、以下に述べるタイミング重視によるものと、面積重視によるものとが考えられる。
【００５２】
図１２はタイミング重視による遅延挿入判定処理（図２のステップＳ１３，Ｓ１４に相当）のフローチャートである。ステップＳ３１では、図１１のテーブル５を参照し、ホールド違反値Ｔｈが最大のパスについて、該パスのセットアップ余裕値Ｔｓｍの総和（ΣＴｓｍ）を求める。なお、最大のＴｈが複数存在する場合は最初に検索したパスを対象とする。ステップＳ３２ではＴｈ＜ΣＴｓｍか否かを判別し、Ｔｈ＜ΣＴｓｍでない場合はホールド違反調整不可と判断し、ステップＳ４１でホールド違反調整不可フラグＨｆ＝１にセットして処理終了する。
【００５３】
また、Ｔｈ＜ΣＴｓｍの場合は、ホールド違反調整可能と判断し、ステップＳ３３では図１１のテーブル５より当該パス中のＴｓｍが最大（Ｔｓｍ（ｍａｘ））のゲート端子を検索する。ステップＳ３４ではＴｓｍ（ｍａｘ）は１箇所か否かを判別し、複数個所の場合はステップＳ３５でその中からホールド違反パス数Ｅｐが最大（Ｅｐ（ｍａｘ））のゲート端子を検索し、これを最大のセットアップ余裕値Ｔｓｍ（ｍａｘ）とする。なお、Ｅｐ（ｍａｘ）も複数存在する場合は、最初に検索したゲート端子のＴｓｍをＴｓｍ（ｍａｘ）とする。また、Ｔｓｍ（ｍａｘ）が１箇所の場合は、上記ステップＳ３５の処理をスキップする。
【００５４】
ステップＳ３６では、Ｔｈ＜Ｔｓｍ（ｍａｘ）か否かを判別し、Ｔｈ＜Ｔｓｍ（ｍａｘ）の場合は、ステップＳ３７でＴｓｍ（ｍａｘ）のポイントにＴｈ分のＤＢを挿入する。ステップＳ３８ではＴｈをＴｈ−Ｔｈ（＝０）により更新して処理終了する。また上記ステップＳ３６の判別でＴｈ＜Ｔｓｍ（ｍａｘ）でない場合は、ステップＳ３９でＴｓｍ（ｍａｘ）のポイントに該Ｔｓｍ（ｍａｘ）分のＤＢを挿入する。ステップＳ４０ではＴｈをＴｈ−Ｔｓｍ（ｍａｘ）により更新して処理終了する。そして、挿入したＤＢにより図９のテーブル３を更新し、こうして、ホ−ルド違反パスが無くなるまで、上記の処理を繰り返す。
【００５５】
次に、上記図１１のテーブル５を参照して、タイミング重視に基づく最初のＤＢ挿入ポイントを求めてみる。ホールド違反値Ｔｈが最大のパスはＦＦ１‐ＦＦ３間であり、該パス中でＴｓｍ（ｍａｘ）となる入出力端子はＦＦ１．ＱとＯＲ１，Ａ１（共にＴｓｍ＝２ｎｓ）である。Ｔｓｍ（ｍａｘ）が複数存在するので、エラーパス数Ｅｐを比べてみると、ＦＦ１．Ｑの方が大きいので、ここにＤＢを挿入すれば、１回分の対策でより多くのエラーパスの調整（解消）に貢献できる。こうして、最初のＤＢ挿入ポイントＦＦ１．Ｑが求まる。また、このポイントに挿入するディレイ値は、パスのホールド違反値Ｔｈ（＝３ｎＳ）＞Ｔｓｍ（ｍａｘ）（＝２ｎＳ）であるため、Ｔｓｍ（ｍａｘ）＝２ｎＳを挿入することになる。
【００５６】
ＦＦ１．Ｑに２ｎＳのＤＢを挿入すると、図９のテーブル３の情報は図１３のテ−ブル６ように更新される。このテ−ブル６を参照すると、ＦＦ１．Ｑが存在（関係）する各パス中のＴｈ値、及びＴｓ値が夫々２ｎＳづつ減っているのが分かる。
【００５７】
この情報を元にテーブル６を更新すると図１４のテーブル７が得られる。このテーブル７に基づき、上記同様にして、Ｔｈが最大のエラーパスにつき、Ｔｓｍが最大の入出力端子にＤＢを挿入し、該テーブルを更新する。このような作業を、ホールド違反がなくなるか、又はホールド違反調整不可フラグが立っているパスのみになるまで繰り返す。
【００５８】
こうして、タイミング調整に基づく調整後の最終的なテーブル８は図１５のようになる。なお、この例では，ＦＦ１‐ＦＦ３間のパスは最終的にＴｈ＝１で、かつ該パスのΣＴｓｍ＝０となるため、これ以上のＤＢ挿入の余地は無い。従って、調整不可能となり、Ｈｆ＝１（ＮＧ）となっている。
【００５９】
図１６にタイミング重視に基づくＤＢの挿入例を示す。図において、ＤＢ１（２ｎｓ），ＤＢ２（２ｎｓ），ＤＢ３（１ｎｓ）が挿入されている。
【００６０】
図１７は面積重視による遅延挿入判定処理（図２のステップＳ１３，Ｓ１４に相当）のフローチャートである。ステップＳ３１では、図１１のテーブル５を参照し、ホールド違反値Ｔｈが最大のパスについて、該パスのセットアップ余裕値Ｔｓｍの総和（ΣＴｓｍ）を求める。なお、最大のＴｈが複数存在する場合は最初に検索したパスを対象とする。ステップＳ３２ではＴｈ＜ΣＴｓｍか否かを判別し、Ｔｈ＜ΣＴｓｍでない場合はホールド違反調整不可と判断し、ステップＳ４１でホールド違反調整不可フラグＨｆ＝１にセットして処理終了する。
【００６１】
また、Ｔｈ＜ΣＴｓｍの場合は、ホールド違反調整可能と判断し、ステップＳ５３では図１１のテーブル５より当該パス中のエラーパス数Ｅｐが最大（Ｅｐ（ｍａｘ））の入出力端子を検索する。
【００６２】
ステップＳ５４ではＥｐ（ｍａｘ）は１箇所か否かを判別し，複数個所の場合はステップＳ５５でその中からセットアップ余裕値Ｔｓｍが最大（Ｔｓｍ（ｍａｘ））のゲート端子を検索し、Ｔｓｍ（ｍａｘ）とする。Ｅｐ（ｍａｘ）が同一なら、Ｔｓｍの大きい方を選択した方が対策効率が良い。なお、Ｔｓｍ（ｍａｘ）も複数存在する場合は最初に検索した入出力端子のＴｓｍをＴｓｍ（ｍａｘ）とする。また、Ｅｐ（ｍａｘ）が１箇所の場合は上記ステップＳ５５の処理をスキップする。
【００６３】
ステップＳ５６では、Ｔｈ＜Ｔｓｍ（Ｅｐ）（正確にはＴｓｍ｛Ｅｐ（ｍａｘ）｝）か否かを判別し、Ｔｈ＜Ｔｓｍ（Ｅｐ）の場合は、ステップＳ５７でＴｓｍ（Ｅｐ）のポイントにＴｈ分のＤＢを挿入する。ステップＳ３８ではＴｈをＴｈ−Ｔｈ（＝０）により更新して処理終了する。また上記ステップＳ５６の判別でＴｈ＜Ｔｓｍ（Ｅｐ）でない場合は、ステップＳ５９でＴｓｍ（Ｅｐ）のポイントに該Ｔｓｍ（Ｅｐ）分のＤＢを挿入する。ステップＳ６０ではＴｈをＴｈ−Ｔｓｍ（Ｅｐ）により更新して処理終了する。そして、挿入したＤＢにより図９のテーブル３を更新し、こうして、ホ−ルド違反パスが無くなるまで、上記の処理を繰り返す。
【００６４】
次に、上記図１１のテーブル５を参照して、面積重視に基づく最初のＤＢ挿入ポイントを求めてみる。ホールド違反値Ｔｈが最大のパスはＦＦ１‐ＦＦ３間であり、該パス中でＥｐ（ｍａｘ）となる入出力端子はＦＦ１．Ｑ（Ｅｐ＝４）である。こうして、最初のＤＢ挿入ポイントＦＦ１．Ｑが求まる。また、このポイントに挿入するディレイ値は、Ｔｈ（＝３ｎＳ）＞Ｔｓｍ（Ｅｐ）（＝２ｎＳ）であるため、Ｔｓｍ（Ｅｐ）＝２ｎＳのＤＢを挿入することになる。この例では、上記タイミング重視による場合と同じ挿入ポイント及び挿入ディレイ値なのでテーブルを更新すると、同じく図１４のテーブル７が得られる。
【００６５】
図１４のテーブル７より、次の挿入ポイントを求めると、タイミング重視の場合がＦＦ５．Ｄであったに対して、面積重視の場合はＦＦ２．Ｑ（Ｅｐ＝２）であるところに注目されたい。ＦＦ２．Ｑに２ｎＳのＤＢを挿入すると、上記図１３に対応するテーブル６は、図１８のテーブル９のように更新される。このテーブル９を参照すると、ＰＡＴＨ欄中のＦＦ２．Ｑが存在する各パス中のＴｈ値、及びＴｓ値が夫々１ｎＳづつ減っているのが分かる。
【００６６】
この情報を元にテーブル９を更新すると図１９のテーブル１０が得られる。
続いて挿入ポイント及び挿入ディレイ値を求めていくと、最終的なテーブルは図２０のテーブル１１のようになる。なお、この例では，ＦＦ１‐ＦＦ３間のパスは最終的にＴｈ＝１で、かつ該パスのΣＴｓｍ＝０となるため、調整不可能となり、Ｈｆ＝１（ＮＧ）となっている。
【００６７】
図２１に面積重視によりＤＢを挿入した場合の回路例を示す。ＤＢの挿入箇所数は上記タイミング重視による場合と同様に３個所であるが、総挿入ディレイ値は４ｎＳであり、タイミング重視による場合と比べると１ｎＳ少ないことが解る。
【００６８】
なお、上記実施の形態では、計算簡略化のためにセットアップ余裕値及び挿入ディレイ値を１ｎｓ単位（マージンなし）で扱っているが、これに限らない。予めセットアップ余裕値にマージンを持たせておくか、または挿入ディレイ値にマージンを持たせることで、実配線後のセットアップ違反を防ぐことが可能である。
【００６９】
また、図示しないが、本発明によるディジタル回路のタイミング調整方法は、上記の各プログラムを実行するＣＰＵを含むコンピュータにより、ディジタル回路のタイミング調整装置として実現できることは明らかである。
【００７０】
また、上記本発明に好適なる実施の形態を述べたが、本発明思想を逸脱しない範囲内で各部の構成、制御、処理及びこれらの組み合わせの様々な変更が行えることは言うまでも無い。
【００７１】
（付記１）　クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、
記憶素子間に介在するパス毎に、該パスのホールド違反値とセットアップ違反になるまでのセットアップ余裕値とを求めるステップＳ１と、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値を抽出するステップＳ２と、前記入出力端子毎に抽出した各最小のセットアップ余裕値のうちの最大のセットアップ余裕値に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えることを特徴とするタイミング調整方法。
【００７２】
（付記２）　クロックに同期して動作する複数の記憶素子が中間の組合せ回路を介して接続されるディジタル回路のタイミング調整方法であって、
記憶素子間に介在するパス毎に、該パスのホールド違反値とセットアップ違反になるまでのセットアップ余裕値とを求めるステップＳ１と、ホールド違反を起こしている違反パスに介在する記憶素子及び論理ゲートの入出力端子毎に、該端子を通過するパスのうちの最小のセットアップ余裕値と違反パス数とを抽出するステップＳ２と、前記入出力端子毎に抽出した各違反パス数のうちの最大のパス数に対応する入出力端子を優先して違反対策適用箇所に決定するステップＳ３とを備えることを特徴とするタイミング調整方法。
【００７３】
（付記３）　ディジタル回路のホールド違反対策は、最大のホールド違反値を有する違反パスから優先的に行うことを特徴とする付記１又は２に記載のタイミング調整方法。
【００７４】
（付記４）　違反パスのホールド違反値が前記決定されや違反対策適用箇所のセットアップ余裕値よりも大きいことにより、前記違反対策適用個所に前記セットアップ余裕値分の遅延素子を挿入するステップＳ４を備えることを特徴とする付記１又は２に記載のタイミング調整方法。
【００７５】
（付記５）　遅延素子挿入後のディジタル回路につき記憶素子間に介在するパス毎のホールド違反値とセットアップ余裕値とを更新するステップＳ５と、ホールド違反対策が可能な範囲内で、前記ステップＳ２〜ステップＳ５の処理を繰り返すステップＳ６とを備えることを特徴とする付記４に記載のタイミング調整方法。
【００７６】
（付記６）　付記１乃至５の何れか１に記載のタイミング調整方法をコンピュータに実行させるためのコンピュータ実行可能なプログラム。
【００７７】
【発明の効果】
以上述べた如く本発明によれば、複雑な回路のタイミング調整を効率よく適正に行えるため、信頼性の高いディジタル回路の開発／設計の支援に寄与するところが極めて大きい、
【図面の簡単な説明】
【図１】本発明の原理を説明する図である。
【図２】実施の形態によるホールド違反調整処理のフローチャートである。
【図３】実施の形態によるホールド違反調整処理のイメージ図（１）である。
【図４】実施の形態によるホールド違反調整処理のイメージ図（２）である。
【図５】実施の形態におけるホールド違反調整対象のディジタル回路図である。
【図６】実施の形態によるテーブル作成処理のフローチャートである。
【図７】実施の形態によるテーブル作成処理のイメージ図（１）である。
【図８】実施の形態によるテーブル作成処理のイメージ図（２）である。
【図９】記憶素子間毎のホールド違反値及びセットアップ余裕値をリストしたテーブル３を示す図である。
【図１０】記憶素子及び論理ゲートの入出力端子毎の最小のセットアップ余裕値及びホールド違反パス数をリストしたテーブル４を示す図である。
【図１１】図９のテーブル３をホールド違反値の大きい順に並べ換えたテーブル５を示す図である。
【図１２】タイミング重視による遅延挿入判定処理のフローチャートである。
【図１３】図９のＦＦ１．Ｑに２ｎｓのＤＢを挿入した後の状態を表すテーブル６を示す図である。
【図１４】図１３のテーブル６をホールド違反値の大きい順に並べ換えた状態のテーブル７を示す図である。
【図１５】タイミング重視に基づく調整後の最終のテーブル８を示す図である。
【図１６】タイミング重視に基づく調整後の回路図である。
【図１７】面積重視による遅延挿入判定処理のフローチャートである。
【図１８】図９のＦＦ１．Ｑに２ｎｓ、ＦＦ２．Ｑに１ｎｓのＤＢを挿入した後の状態を表すテーブル９を示す図である
【図１９】図１８のテーブル９をホールド違反値の大きい順に並べ換えた状態のテーブル１０を示す図である。
【図２０】面積重視に基づく調整後の最終のテーブル１１を示す図である。
【図２１】面積重視に基づく調整後の回路図である。
【図２２】従来技術を説明する図（１）である。
【図２３】従来技術を説明する図（２）である。
【図２４】従来技術を説明する図（３）である。
【符号の説明】
１０　論理ゲート
ＤＢ　遅延バッファ
ＦＦ　フリップフロップ（記憶素子）
ＬＯＧＩＣ　組合せ回路
ＳＤＢ　データベース
【図１】
2004038383.tif 000003
【図２】
2004038383.tif 000004
【図３】
2004038383.tif 000005
【図４】
2004038383.tif 000006
【図５】
2004038383.tif 000007
【図６】
2004038383.tif 000008
【図７】
2004038383.tif 000009
【図８】
2004038383.tif 000010
【図９】
2004038383.tif 000011
【図１０】
2004038383.tif 000012
【図１１】
2004038383.tif 000013
【図１２】
2004038383.tif 000014
【図１３】
2004038383.tif 000015
【図１４】
2004038383.tif 000016
【図１５】
2004038383.tif 000017
【図１６】
2004038383.tif 000018
【図１７】
2004038383.tif 000019
【図１８】
2004038383.tif 000020
【図１９】
2004038383.tif 000021
【図２０】
2004038383.tif 000022
【図２１】
2004038383.tif 000023
【図２２】
2004038383.tif 000024
【図２３】
2004038383.tif 000025
【図２４】
2004038383.tif 000026