(57)【要約】【課題】集積回路内のＦＦ（フリップフロップ）のタイミングエラーを短時間で効率良く修正できるようにし、高速な集積回路の短期間での開発を可能とするインテンショナルスキュー調整方法を提供する。【解決手段】集積回路内の全てのＦＦの入力に対してセットアップタイムとホールドタイムのスラック値を算出する工程と、該スラック値の算出により判明したセットアップエラーのＦＦを起点とし、セットアップエラーのＦＦのクロックパス遅延変更量の算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける出力側のＦＦのスラック値の修正を、該スラック値の修正によりセットアップエラーが発生したＦＦに対して繰り返し行う工程を実行する。【選択図】    図１
2004310262.tif 000002
【特許請求の範囲】
【請求項１】
集積回路内の全てのフリップフロップの入力に対してセットアップタイム及びホールドタイムのスラック値をスラック値算出手段で算出する工程と、
該スラック値の算出により判明したセットアップエラーのフリップフロップを起点とし、セットアップエラーのフリップフロップのクロックパス遅延変更量のクロックパス遅延算出手段での算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける出力側のフリップフロップのスラック値のスラック値修正手段での修正を、該スラック値の修正によりセットアップエラーが発生したフリップフロップに対して繰り返し行う工程を含むことを特徴とするインテンショナルスキュー調整方法。
【請求項２】
集積回路内の全てのフリップフロップの出力に対してセットアップタイム及びホールドタイムのスラック値をスラック値算出手段で算出する工程と、
該スラック値の算出により判明したセットアップエラーのフリップフロップを起点とし、セットアップエラーのフリップフロップのクロックパス遅延変更量のクロックパス遅延算出手段での算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける入力側のフリップフロップのスラック値のスラック値修正手段での修正を、該スラック値の修正によりセットアップエラーが発生したフリップフロップに対して繰り返し行う工程を含むことを特徴とするインテンショナルスキュー調整方法。
【請求項３】
集積回路内の全てのフリップフロップの入力に対してセットアップタイム及びホールドタイムのスラック値を算出する工程と、
該スラック値の算出により判明したセットアップエラーのフリップフロップを起点とし、セットアップエラーのフリップフロップのクロックパス遅延変更量の算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける出力側のフリップフロップのスラック値の修正を、該スラック値の修正によりセットアップエラーが発生したフリップフロップに対して繰り返し行う工程をコンピュータに実行させるためのプログラム。
【請求項４】
集積回路内の全てのフリップフロップの出力に対してセットアップタイム及びホールドタイムのスラック値を算出する工程と、
該スラック値の算出により判明したセットアップエラーのフリップフロップを起点とし、セットアップエラーのフリップフロップのクロックパス遅延変更量の算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける入力側のフリップフロップのスラック値の修正を、該スラック値の修正によりセットアップエラーが発生したフリップフロップに対して繰り返し行う工程をコンピュータに実行させるためのプログラム。
【請求項５】
前記クロックパス遅延変更量の算出は、セットアップエラーの上限値に制限を設けて行うことを特徴とする請求項３又は４記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路内のフリップフロップに対するインテンショナルスキューを調整する方法及びプログラムに関する。
【０００２】
【従来の技術】
通常の集積回路では、各フリップフロップ（以下、ＦＦと記す）に供給されるクロックのタイミングのずれであるスキューが０となるように、クロックが配線される。しかしながら、この方法では、ＦＦ間に割り当てられる信号転送時間は全て同じとなるため、最も時間のかかる信号パスの遅延時間が律則要因となり、全体の動作周波数を決めてしまう。
【０００３】
そのため、ＦＦ間の信号転送に時間のかかる信号パスについては、始点のＦＦと終点のＦＦに到達するクロックのタイミングに差をつけることにより周波数を上げる手法が導入されている（例えば、特許文献１、２参照）。このように意図的にクロックのタイミングをずらしたスキューをインテンショナルスキューと呼ぶ。
【０００４】
ここで、ある特定のＦＦに到達するクロックのタイミングを遅くすると、そのＦＦに到達する信号パスの遅延時間は長くとることができるが、そのＦＦを始点とする信号パスの遅延時間は短くなってしまう。そのため、複雑なスキュー調整が必要となるが、これまで、インテンショナルスキューの調整を容易に取り扱う手法が確立しておらず、どのＦＦに対して、どのくらいのスキューをつけるかは設計者の経験に依存していた。
【０００５】
【特許文献１】特開２００１―３０６６４６号公報
【特許文献２】特開２００１―１８４３８５号公報
【０００６】
【発明が解決しようとする課題】
従来のインテンショナルスキューの調整方法では、インテンショナルスキューの挿入には手間と時間がかかるため、実際に適用される範囲は限定的であった。しかしながら、集積回路の高速化に伴い、広範囲にわたってインテンショナルスキューを積極的に導入することが必要となっている。また、タイムリーな製品導入には短期間での開発が必要であり、効率的なインテンショナルスキューの取り扱い手法が必要となっている。
【０００７】
本発明は、かかる点に鑑み、集積回路内のＦＦに対して効率的にインテンショナルスキュー値を設定し、集積回路内のＦＦのタイミングエラーを短時間で効率良く修正することができるようにし、高速な集積回路の短期間での開発を可能とするインテンショナルスキュー調整方法及びプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明中、第１の発明は、集積回路内の全てのＦＦの入力に対してセットアップタイム及びホールドタイムのスラック値を算出する工程と、該スラック値の算出により判明したセットアップエラーのＦＦを起点とし、セットアップエラーのＦＦのクロックパス遅延変更量の算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける出力側のＦＦのスラック値の修正を、該スラック値の修正によりセットアップエラーが発生したＦＦに対して繰り返し行う工程を含むというものである。
【０００９】
第１の発明によれば、セットアップタイム及びホールドタイムのスラック値の算出により判明したセットアップエラーのＦＦを起点とし、出力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができる。
【００１０】
本発明中、第２の発明は、集積回路内の全てのＦＦの出力に対してセットアップタイム及びホールドタイムのスラック値を算出する工程と、該スラック値の算出により判明したセットアップエラーのＦＦを起点とし、セットアップエラーのＦＦのクロックパス遅延変更量の算出と、該クロックパス遅延変更量の算出により遅延の影響を受ける入力側のＦＦのスラック値の修正を、該スラック値の修正によりセットアップエラーが発生したＦＦに対して繰り返し行う工程を含むというものである。
【００１１】
第２の発明によれば、セットアップタイム及びホールドタイムのスラック値の算出により判明したセットアップエラーのＦＦを起点とし、入力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができる。
【００１２】
【発明の実施の形態】
図１〜図４は本発明の一実施形態を示すフローチャートである。本発明の一実施形態は、ステップ１（第１の発明の一実施形態）及びステップ２（第２の発明の一実施形態）の２個の工程を有しており、図１はステップ１の内容、図２はステップ１に含まれる処理１の内容、図３はステップ２の内容、図４はステップ２に含まれる処理２の内容を示している。
【００１３】
本発明の一実施形態では、まず、図１に示すステップ１を実行する。ステップ１では、まず、セルライブラリ１０及びネットリスト１１を参照して、スラック値算出手段１２が集積回路内の全てのＦＦの入力に対してセットアップタイムとホールドタイムのスラック値を計算する（ステップＳ１−１）。即ち、集積回路内の全てのＦＦの入力に対して、入力側に接続しているＦＦからの信号パスに対するセットアップタイムのスラック値とホールドタイムのスラック値が計算される。
【００１４】
図５は集積回路の一部分を示す回路図であり、図５中、１３〜２２はＦＦ、２３は論理回路、２４〜２８はＦＦ１３〜１７の出力側とＦＦ２２の入力側との間の信号パスを示しているが、このように、ＦＦ２２の入力側にＦＦ１３〜１７の出力側が接続されている場合、ＦＦ２２の入力に対してはＦＦ１３〜１７からの信号パス２４〜２８に対するセットアップタイムのスラック値とホールドタイムのスラック値を計算する。
【００１５】
以下、ステップ１においては、ラベルｋのＦＦの入力に接続しているＦＦからの信号パスに対するセットアップタイムのスラック値をｔｓ（ｋ）、ホールドタイムのスラック値をｔｈ（ｋ）と記す。
【００１６】
ここに、スラック値算出手段１２は、ステップＳ１−１で算出されるスラック値をスラック値テーブル２９に記録し、セットアップエラー（負スラック値）の発生しているＦＦをＦＦリスト３０内のターゲットＦＦグループＧｔに登録する（ステップＳ１−２）。
【００１７】
次に、クロックパス遅延算出手段３１は、ＦＦリスト３０内のターゲットＦＦグループＧｔから１つのＦＦをターゲットＦＦ（Ｆｋ）として抽出し、実行フラグを設定し（ステップＳ１−３）、処理１を実行する（ステップＳ１−４）。処理１はターゲットＦＦグループＧｔに登録したＦＦの全てについて行われ、これが終了したとき（Ｇｔ＝φ（空集合）になったとき）は、図３に示すステップ２に移行する。
【００１８】
処理１（図２参照）では、まず、クロックパス遅延算出手段３１がターゲットＦＦ（Ｆｋ）のクロックパス遅延変更量を算出する（ステップＳ１−５）。即ち、クロックパス遅延算出手段３１において、ターゲットＦＦ（Ｆｋ）のセットアップエラーをなくすためのクロックパス遅延変更量δｔａ（ｋ）が算出される。
【００１９】
ここで、ｔｓ（ｋ）≧０の場合には、セットアップエラーはないので、そのまま（δｔａ（ｋ）＝０で）終了する。これに対して、ｔｓ（ｋ）＜０の場合には、セットアップエラーがあるため、数１のようにして、ターゲットＦＦ（Ｆｋ）に供給されるクロックパスの遅延時間の変更量δｔａ（ｋ）を決定する。
【００２０】
【数１】
2004310262.tif 000003
【００２１】
したがって、ターゲットＦＦ（Ｆｋ）の入力に対するセットアップタイムのスラック値ｔｓ（ｋ）及びホールドタイムのスラック値ｔｈ（ｋ）は、数２に示すように変更される。
【００２２】
【数２】
2004310262.tif 000004
【００２３】
ここで、ターゲットＦＦ（Ｆｋ）のクロックパス遅延変更量δｔａ（ｋ）＞０の場合には、スラック値修正手段３２は、ターゲットＦＦ（Ｆｋ）から出力されたデータが１クロックで伝わるＦＦのグループをＧｋとし、それらのＦＦに対するスラック値を修正する（ステップＳ１−６）。
【００２４】
具体的には、まず、ターゲットＦＦ（Ｆｋ）から出力された信号が１クロックで伝わるＦＦのラベルを（ｋ，１），・・・，（ｋ，ｎｋ）とする。これらは、前段のターゲットＦＦ（Ｆｋ）のスキュー変更の影響を受けるため、ラベル（ｋ，ｉ）のＦＦのセットアップタイムのスラック値はｔｓ（ｋ，ｉ）−δｔａ（ｋ）、ホールドタイムのスラック値はｔｈ（ｋ，ｉ）＋δｔａ（ｋ）となる。
【００２５】
ここで、ｔｓ（ｋ，ｉ）−δｔａ（ｋ）≧０の場合には、セットアップエラーは発生しないため、そのまま（δｔａ（ｋ，ｉ）＝０で）終了する。これに対して、ｔｓ（ｋ，ｉ）−δｔａ（ｋ）＜０の場合には、数３のようにして、δｔａ（ｋ，ｉ）を決定する。
【００２６】
【数３】
2004310262.tif 000005
【００２７】
したがって、ラベル（ｋ，ｉ）のＦＦの入力に対するセットアップタイムのスラック値ｔｓ（ｋ，ｉ）及びホールドタイムのスラック値ｔｈ（ｋ，ｉ）は、数４に示すように修正される。この処理をラベル（ｋ，１），・・・，（ｋ，ｎｋ）の全てのＦＦに対して実行する。
【００２８】
【数４】
2004310262.tif 000006
【００２９】
そして、スラック値修正手段３２は、グループＧｋからセットアップエラーのＦＦをリストアップし、ターゲットＦＦグループＧｔに追加する（ステップＳ１−７）。次に、クロックパス遅延算出手段３１は、ターゲットＦＦグループＧｔに新規追加したＦＦの中からターゲットＦＦ（Ｆｋ）を抽出し、実行フラグを設定し（ステップＳ１−８）、処理１の実行を開始する（ステップＳ１−９）。
【００３０】
以下、クロックパス遅延変更量の算出（ステップＳ１−５）と、それによって遅延の影響を受ける出力側のＦＦのスラック値の修正（ステップＳ１−６）とを、スラック値の修正（ステップＳ１−６）によりセットアップエラーが発生したＦＦに対して繰り返し実行することにより、セットアップエラーを修正する。
【００３１】
そして、ターゲットＦＦグループＧｔに追加した全てのＦＦについて処理１が終了したとき（Ｇｔ＝φになったとき）は、ターゲットＦＦの実行フラグを解除して（ステップＳ１−１０）、処理１を終了する。なお、ステップＳ１−５によるクロックパス遅延変更量の計算の結果、クロックパス遅延変更量＝０の場合には、ターゲットＦＦの実行フラグを解除して（ステップＳ１−１０）、処理１を終了する。
【００３２】
なお、本発明の一実施形態では、以下の条件のいずれかを満たした場合に、ステップ１は終了となる。（１）全てのＦＦにセットアップエラーが発生していない。（２）いずれかのＦＦにセットアップエラーが発生しているが、ホールドタイム条件によりクロックパス遅延を変更できない。（３）いずれかのＦＦにセットアップエラーが発生しているが、その原因が、回路中のループを介した自身のクロックパス遅延を変更したことに起因している。
【００３３】
ここで、条件（３）について図６を用いて説明する。ＦＦ３３とＦＦ３５との間でセットアップエラーが発生しているとする。その場合、ＦＦ３５のクロックパス遅延を長くなるようにシフトする。その結果、ＦＦ３５を起点として出力側に接続しているＦＦとの間で信号パス遅延が短くなるため、新たなセットアップエラーが発生する場合がある。
【００３４】
このような場合には、セットアップエラーの発生した信号パスの出力側のＦＦのクロックパス遅延を調整することになる。この作業を繰り返していった結果、回路中のループを介してＦＦ３３にセットアップエラーが発生し、そのクロックパス遅延を遅くしなければならないケースが発生する。この場合、ＦＦ３３のクロックパス遅延を遅くすると、ＦＦ３３とＦＦ３５の間で一度は解消したセットアップエラーが再度発生することになる。このようなケースが、先の条件（３）に該当する。
【００３５】
但し、ＦＦ３３のクロックパス遅延のシフトがＦＦ３５のクロックパス遅延を遅くしたことにより発生したセットアップエラーを修正する過程ではなく、因果関係のないＦＦのセットアップエラーの解消に起因したものである場合には、処理を続行する。
【００３６】
また、ＦＦ３５のクロックパス遅延のシフトが、ＦＦ３３とＦＦ３５との間のセットアップエラーの解消のためではなく、例えば、ＦＦ３４とＦＦ３５との間のセットアップエラーの解消のためであった場合にも、処理を続行する。
【００３７】
ここで、ステップ１が終了した時点で、セットアップエラーが解消した場合には、ステップ１でスキュー調整処理を終了する。これに対して、セットアップエラーが解消できていない場合には、出力側から入力方向へのスキュー調整処理工程（ステップ２）に進む。
【００３８】
ステップ１とステップ２の大きな違いは、スラック値の計算方法である。ステップ１では、ＦＦの入力につながっているＦＦとの間のタイミング情報からスラック値を計算したが、ステップ２では、ＦＦの出力につながっているＦＦとの間のタイミング情報からスラック値を計算する。後は、出力方向にスキュー値を調整するか、入力方向にスキュー値を調整するかの違いとなる。
【００３９】
ステップ２（図３参照）では、まず、セルライブラリ１０及びネットリスト１１を参照し、スラック値算出手段３７が集積回路内の全てのＦＦの出力に対してセットアップタイムとホールドタイムのスラック値を計算する（ステップＳ２−１）。即ち、集積回路内の全てのＦＦの出力に対して、出力側に接続しているＦＦへの信号パスに対するセットアップタイムのスラック値とホールドタイムのスラック値が計算される。
【００４０】
図７は集積回路の一部分を示す回路図であり、図７中、３８〜４７はＦＦ、４８は論理回路、４９〜５３はＦＦ４２の出力側とＦＦ４３〜４７の入力側との間の信号パスを示しているが、このように、ＦＦ４２の出力側にＦＦ４３〜４７の入力側が接続されている場合、ＦＦ４２の出力に対しては、ＦＦ４３〜４７への信号パス４９〜５３に対するセットアップタイムのスラック値とホールドタイムのスラック値を計算する。
【００４１】
以下、ステップ２においては、ラベルｋのＦＦの出力に接続しているＦＦへの信号パスに対するセットアップタイムのスラック値をｔｓ（ｋ）、ホールドタイムのスラック値をｔｈ（ｋ）と記す。
【００４２】
ここに、スラック値算出手段３７は、ステップＳ２−１で算出されたスラック値をスラック値テーブル２９に記録し、セットアップエラー（負スラック値）の発生しているＦＦをＦＦリスト３０内のターゲットＦＦグループＧｔに登録する（ステップＳ２−２）。
【００４３】
次に、クロックパス遅延算出手段５４は、ＦＦリスト３０内のターゲットＦＦグループＧｔから１つのＦＦをターゲットＦＦ（Ｆｋ）として抽出して実行フラグを設定し（ステップＳ２−３）、処理２を実行する（ステップＳ２−４）。処理２はターゲットＦＦグループＧｔに登録したＦＦの全てについて行われ、これが終了したとき（Ｇｔ＝φになったとき）は、ステップ２を終了する。
【００４４】
処理２（図４参照）では、まず、クロックパス遅延算出手段５４がターゲットＦＦ（Ｆｋ）のクロックパス遅延変更量を算出する（ステップＳ２−５）。即ち、クロックパス遅延算出手段５４において、ターゲットＦＦ（Ｆｋ）のセットアップエラーをなくすためのクロックパス遅延変更量δｔａ（ｋ）が計算される。
【００４５】
ここで、ｔｓ（ｋ）≧０の場合には、セットアップエラーはないので、そのまま（δｔａ（ｋ）＝０で）終了する。これに対して、ｔｓ（ｋ）＜０の場合には、セットアップエラーがあるため、数５のようにして、ターゲットＦＦ（Ｆｋ）に供給されるクロックの遅延時間の変更量δｔａ（ｋ）を決定する。ステップ１とは逆にクロックパス遅延を短くする方向に変更するため、δｔａ（ｋ）の符号が逆になる。
【００４６】
【数５】
2004310262.tif 000007
【００４７】
したがって、ターゲットＦＦ（Ｆｋ）の出力に対するセットアップタイムのスラック値ｔｓ（ｋ）及びホールドタイムのスラック値ｔｈ（ｋ）は、数６に示すように変更される。
【００４８】
【数６】
2004310262.tif 000008
【００４９】
ここで、ターゲットＦＦ（Ｆｋ）のクロックパス遅延変更量δｔａ（ｋ）＞０の場合には、スラック値修正手段５５は、ターゲットＦＦ（Ｆｋ）の入力に１クロックで信号が伝わるＦＦのグループをＧｋとし、それらのＦＦに対するスラック値を修正する（ステップＳ２−６）。
【００５０】
具体的には、まず、ターゲットＦＦ（Ｆｋ）に１クロックで信号が伝わるＦＦのラベルを（１，ｋ），・・・，（ｎｋ，ｋ）とする。これらは、後段のターゲットＦＦ（Ｆｋ）のスキュー変更の影響を受けるため、ラベル（ｉ，ｋ）のＦＦのセットアップタイムのスラック値はｔｓ（ｉ，ｋ）＋δｔａ（ｋ）、ホールドタイムのスラック値はｔｈ（ｉ，ｋ）−δｔａ（ｋ）となる。
【００５１】
ここで、ｔｓ（ｉ，ｋ）＋δｔａ（ｋ）≧０の場合には、セットアップエラーは発生しないため、そのまま（δｔａ（ｉ，ｋ）＝０で）終了する。これに対して、ｔｓ（ｉ，ｋ）＋δｔａ（ｋ）＜０の場合には、数７のようにして、δｔａ（ｉ，ｋ）を決定する。
【００５２】
【数７】
2004310262.tif 000009
【００５３】
したがって、ラベル（ｉ，ｋ）のＦＦの入力に対するセットアップタイムのスラック値ｔｓ（ｉ，ｋ）及びホールドタイムのスラック値ｔｈ（ｉ，ｋ）は、数８に示すように修正される。この処理をラベル（１，ｋ），・・・，（ｎｋ，ｋ）の全てのＦＦに対して実行する。
【００５４】
【数８】
2004310262.tif 000010
【００５５】
そして、スラック値修正手段５５は、グループＧｋからセットアップエラーのＦＦをリストアップし、ターゲットＦＦグループＧｔに追加する（ステップＳ２−７）。次に、クロックパス遅延算出手段５４は、ターゲットＦＦグループＧｔに新規追加したＦＦの中からターゲットＦＦ（Ｆｋ）を抽出し、実行フラグを設定し（ステップＳ２−８）、処理２の実行を開始する（ステップＳ２−９）。
【００５６】
以下、クロックパス遅延変更量の計算（ステップＳ２−５）と、それによって遅延の影響を受ける入力側のＦＦのスラック値の修正（ステップＳ２−６）とを、スラック値の修正（ステップＳ２−６）によりセットアップエラーが発生したＦＦに対して繰り返し実行することにより、セットアップエラーを修正する。
【００５７】
そして、ターゲットＦＦグループＧｔに追加した全てのＦＦについて処理２が終了したとき（Ｇｔ＝φになったとき）は、ターゲットＦＦの実行フラグを解除して（ステップＳ２−１０）、処理２を終了する。なお、ステップＳ２−５によるクロックパス遅延変更量の計算の結果、クロックパス遅延変更量＝０の場合には、ターゲットＦＦの実行フラグを解除して（ステップＳ２−１０）、処理２を終了する。
【００５８】
なお、本発明の一実施形態では、以下の条件のいずれかを満たした場合に、ステップ２は終了となる。（４）全てのＦＦにセットアップエラーが発生していない。（５）いずれかのＦＦにセットアップエラーが発生しているが、ホールドタイム条件によりクロックパス遅延を変更できない。（６）いずれかのＦＦにセットアップエラーが発生しているが、その原因が、回路中のループを介した自身のクロックパス遅延を変更したことに起因している。
【００５９】
以上の処理により、全てのＦＦにおけるスラック値が正又は０となったら、全てのＦＦにセットアップエラーがないことになる。これに対して、セットアップタイムのスラック値が負のＦＦが存在した場合には、そのＦＦのセットアップエラーは解消されていないことになる。
【００６０】
このように、セットアップエラーが解消されていない場合には、最後に残ったスラック値は、他のセットアップエラーの累積値になるため、本発明の一実施形態を実行する前のセットアップエラー値と比較して最大値が増大している可能性がある。
【００６１】
そこで、セットアップエラー値の増大を防ぐ方法として、セットアップエラーの上限値をδＥとし、数１〜数８の処理において、ｔｓ（ｋ）の代わりにｔｓ（ｋ）＋δＥを使用し、ｔｓ（ｋ，ｉ）の代わりにｔｓ（ｋ，ｉ）＋δＥを使用し、ｔｓ（ｉ，ｋ）の代わりにｔｓ（ｉ，ｋ）＋δＥを使用する。
【００６２】
これにより、セットアップエラーの上限に制限を加えて処理することが可能となる。但し、δＥの設定値が小さ過ぎる場合には、セットアップエラーをδＥ以下で解決することができず、処理終了時点において、δＥを超過するセットアップエラーが残る可能性がある。このようなケースを回避するためには、δＥを適切な値に設定する必要がある。
【００６３】
δＥの設定方法としては、入力端子から順に出力端子まで信号パスを辿っていき、その途中にあるＦＦのスラック値をすべて積算し、積算値を通過したＦＦの段数Ｎｆｆで割り、数９に示すように、積算値が正の場合にはδＥは０、負の場合には、その値をδＥとする方法が好適であり、このようにすることで、適切なδＥを設定することが可能である。
【００６４】
【数９】
2004310262.tif 000011
【００６５】
以上のように、本発明の一実施形態によれば、ステップ１によるセットアップタイムとホールドタイムのスラック値の計算により判明したセットアップエラーのＦＦを起点とし、出力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができる。
【００６６】
また、ステップ２によるセットアップタイムとホールドタイムのスラック値の計算により判明したセットアップエラーのＦＦを起点とし、入力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができる。
【００６７】
したがって、本発明の一実施形態によれば、集積回路内のＦＦに対して効率的にインテンショナルスキュー値を設定し、集積回路内のＦＦのタイミングエラーを短時間で効率良く修正することができるので、高速な集積回路の短期間での開発が可能となる。
【００６８】
なお、本発明の一実施形態では、スラック値算出手段１２、３７、クロックパス遅延算出手段３１、５４及びスラック値修正手段３２、５５を用いているが、これらの動作は、ＣＰＵ及びメモリ等を有するコンピュータをハードウエア資源としてソフトウエア（プログラム）で達成することができる。
【００６９】
また、本発明の一実施形態では、ステップ１、ステップ２の順で行うようにしているが、ステップ２、ステップ１の順で行うようにしても良い。また、図１〜図４に示す内容は、図８〜図１１に示すように記述することもできる。
【００７０】
【発明の効果】
以上のように、本発明中、第１の発明によれば、セットアップタイム及びホールドタイムのスラック値の算出により判明したセットアップエラーのＦＦを起点とし、出力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができるので、集積回路内のＦＦに対して効率的にインテンショナルスキュー値を設定し、集積回路内のＦＦのタイミングエラーを短期間で効率良く修正することができ、高速な集積回路の短期間での開発が可能となる。
【００７１】
本発明中、第２の発明によれば、セットアップタイム及びホールドタイムのスラック値の計算により判明したセットアップエラーのＦＦを起点とし、入力側のＦＦに対して再帰的にインテンショナルスキュー値を設定することができるので、集積回路内のＦＦに対して効率的にインテンショナルスキュー値を設定し、集積回路内のＦＦのタイミングエラーを短期間で効率良く修正することができ、高速な集積回路の短期間での開発が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すフローチャートである。
【図２】本発明の一実施形態を示すフローチャートである。
【図３】本発明の一実施形態を示すフローチャートである。
【図４】本発明の一実施形態を示すフローチャートである。
【図５】本発明の一実施形態を説明するための図である。
【図６】本発明の一実施形態を説明するための図である。
【図７】本発明の一実施形態を説明するための図である。
【図８】本発明の一実施形態を示すフローチャートである。
【図９】本発明の一実施形態を示すフローチャートである。
【図１０】本発明の一実施形態を示すフローチャートである。
【図１１】本発明の一実施形態を示すフローチャートである。
【符号の説明】
１０…セルライブラリ
１１…ネットリスト
１２…スラック値算出手段
１３〜２２…フリップフロップ
２３…論理回路
２４〜２８…信号パス
２９…スラック値テーブル
３０…ＦＦリスト
３１…クロックパス遅延算出手段
３２…スラック値修正手段
３３〜３５…フリップフロップ
３６…順序回路
３７…スラック値算出手段
３８〜４７…フリップフロップ
４８…論理回路
４９〜５３…信号パス
５４…クロックパス遅延算出手段
５５…スラック値修正手段
【図１】
2004310262.tif 000012
【図２】
2004310262.tif 000013
【図３】
2004310262.tif 000014
【図４】
2004310262.tif 000015
【図５】
2004310262.tif 000016
【図６】
2004310262.tif 000017
【図７】
2004310262.tif 000018
【図８】
2004310262.tif 000019
【図９】
2004310262.tif 000020
【図１０】
2004310262.tif 000021
【図１１】
2004310262.tif 000022