(57)【要約】【課題】設計回路に含まれるクロックライン上の再収斂パスを高速に検出すること。【解決手段】再収斂パス検出方法は、（Ａ）設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出することと、（Ｂ）算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。【選択図】図４
2009128977.tif 000002
【特許請求の範囲】
【請求項１】
設計回路に含まれるクロックライン上の再収斂パスを検出する方法であって、
（Ａ）前記設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出することと、
（Ｂ）前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定することと
を含む
再収斂パス検出方法。
【請求項２】
請求項１に記載の再収斂パス検出方法であって、
（Ｃ）前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出すること
を更に含む
再収斂パス検出方法。
【請求項３】
請求項２に記載の再収斂パス検出方法であって、
（Ｄ）前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出すること
を更に含む
再収斂パス検出方法。
【請求項４】
請求項１乃至３のいずれかに記載の再収斂パス検出方法であって、
（Ｅ）静的タイミング解析において前記クロック端子から前記レジスタへのクロックパスが１つに特定されるように、前記クロックラインの制御信号を所定の論理値に固定した状態で、前記（Ａ）及び（Ｂ）ステップを再度実行すること
を更に含む
再収斂パス検出方法。
【請求項５】
設計回路に含まれるクロックライン上の再収斂パスの検出処理をコンピュータに実行させる再収斂パス検出プログラムであって、
前記検出処理は、
（ａ）前記設計回路に含まれるクロック端子とレジスタのペアに関して、静的タイミング解析ツールに、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出させることと、
（ｂ）前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定することと
を含む
再収斂パス検出プログラム。
【請求項６】
請求項５に記載の再収斂パス検出プログラムであって、
前記検出処理は、
（ｃ）前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記静的タイミング解析ツールに、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出させること
を更に含む
再収斂パス検出プログラム。
【請求項７】
請求項６に記載の再収斂パス検出プログラムであって、
前記検出処理は、
（ｄ）前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出すること
を更に含む
再収斂パス検出プログラム。
【請求項８】
設計回路に含まれるクロックライン上の再収斂パスを検出するシステムであって、
前記設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出する静的タイミング解析ツールと、
前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定する再収斂パス検出ツールと
を備える
再収斂パス検出システム。
【請求項９】
請求項８に記載の再収斂パス検出システムであって、
前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記静的タイミング解析ツールは、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出する
再収斂パス検出システム。
【請求項１０】
請求項９に記載の再収斂パス検出システムであって、
前記再収斂パス検出ツールは、前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出する
再収斂パス検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計技術に関する。特に、本発明は、設計回路に含まれるクロックライン上の再収斂パスを検出するための技術に関する。
【背景技術】
【０００２】
論理回路において、２つの端子の間に複数本のパスが存在する場合がある（特許文献１参照）。この場合、入力側の端子から出た１つのパスが、ある点で複数のパスに分岐し、それら複数のパスが、出力側の端子に近い別の点で再収斂する。そのようなパスは、「再収斂パス（reconvergence path）」と呼ばれる。１つのパスが複数のパスに分岐する点は、「分岐ポイント（branch point）」と呼ばれ、複数のパスが再収斂する点は、「再収斂ポイント（reconvergence point）」と呼ばれる。
【０００３】
再収斂パスは、設計段階から存在する場合もあるし、設計回路の最適化処理時に意図せずに生成される場合もある。例えば、論理合成段階やレイアウト設計段階で最適化処理が実施されると、意図しない再収斂パスが勝手に生成される場合がある。
【０００４】
特許文献１には、クリティカルパスが再収斂パスである場合にも、そのクリティカルパス中の素子段数を削減し、遅延時間を削減するための技術が記載されている。
【０００５】
【特許文献１】特開２００２−８３００１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本願発明者は、クロックライン上の再収斂パスに着目した。クロックライン上の再収斂パスは、意図しない回路動作を引き起こす可能性がある。特に、最適化処理等により再収斂パスが意図せず生成された場合、その再収斂パスは意図しない回路動作を引き起こす可能性がある。図１及び図２を参照して、意図しない回路動作の一例を説明する。
【０００７】
図１には、マルチプレクサ（ＭＵＸ）が、テストモード信号（ＴＥＳＴ  ＭＯＤＥ）に応じてノーマルクロック（Ｎｏｒｍａｌ  ＣＬＫ）かスキャンクロック（Ｓｃａｎ  ＣＬＫ）のいずれか一方を選択し、選択した一方をフリップフロップ（ＦＦ）に供給する回路が示されている。最適化処理の結果、図１の下部に示される回路構成が得られたとする。ＮＡＮＤゲートの入力はノードＮＡ、ＮＢにつながり、その出力はノードＮＣにつながっている。ノードＮＣは、フリップフロップのクロック入力端子につながっている。
【０００８】
通常動作時、テストモード信号は「０」に設定される。この場合、ノードＮＡにはノーマルクロックの反転信号が現れ、ノードＮＢには論理値「１」が現れる。従って、ノードＮＣにはノーマルクロックが現れる。
【０００９】
一方、スキャンテスト時、テストモード信号は「１」に設定される。この場合、ノードＮＢにはスキャンクロックの反転信号が現れる。ノードＮＡにはスキャンクロックの反転信号あるいは論理値「１」が現れ、どちらが現れるかは、前段のノードＮＤの論理値、すなわち、ノーマルクロックの状態に依存する。いずれの場合であっても、ノードＮＣにはスキャンクロックが現れる。
【００１０】
このように、論理的には、ノーマルクロックかスキャンクロックのいずれか一方の選択が実現されている。但し、ここで注意すべきことは、最適化処理の結果、スキャンクロックのライン上に再収斂パスが生成されていることである。具体的には、図１に示されるように、スキャンクロック端子からＮＡＮＤゲートまでには、２つの異なるクロックパスＰ１とＰ２が存在している。これらクロックパスＰ１、Ｐ２が再収斂パスを構成している。クロックパスＰ１とＰ２との間で遅延値が異なる場合、次のような問題が発生する可能性がある。
【００１１】
図２は、スキャンテスト時の動作例を示すタイミングチャートである。クロックパスＰ２の遅延値は、クロックパスＰ１の遅延値より大きいとする。時刻ｔ１において、スキャンクロックが「０」から「１」へ変化する。時刻ｔ２において、ノードＮＤの状態によっては、ノードＮＡの論理値が「０」に変化し、ノードＮＣの論理値が「１」に変化する。時刻ｔ２より遅い時刻ｔ３において、スキャンクロックの変化がノードＮＢに伝わり、ノードＮＢの論理値が「０」に変化する。その結果、ノードＮＣの論理値が「１」に確定する。このように、ノードＮＣの状態は、時刻ｔ２〜ｔ３の期間はノードＮＤの状態に依存するが、時刻ｔ３におけるノードＮＢの変化によって最終的に確定する。
【００１２】
ここで、ノードＮＣの状態の確定前に、ノードＮＤの状態が変化する場合を考える。つまり、時刻ｔ２〜ｔ３の期間に、ノーマルクロックが変化し、ノードＮＤの論理値が変化する場合である。例えば図２に示されるように、ノードＮＤの論理値が、時刻ｔ２において「０」であり、時刻ｔ２〜ｔ３の間の時刻ｔｘにおいて「０」から「１」に変化する。この場合、ノードＮＡの論理値は、時刻ｔ２において「１」から「０」に変化し、その後、時刻ｔｘにおいて「０」から「１」へ変化する。結果として、ノードＮＣの論理値は、時刻ｔ２において「０」から「１」に変化し、時刻ｔｘにおいて「１」から「０」に変化し、時刻ｔ３において「１」に確定する。すなわち、ノードＮＣに、グリッチ（glitch）が発生する。このグリッチが、フリップフロップの予期せぬ誤動作を引き起こす。
【００１３】
以上に例示されたように、クロックライン上の再収斂パスは、回路の誤動作の原因となり得る。従って、設計段階において、設計回路に含まれるクロックライン上の再収斂パスを検出することが望まれる。
【課題を解決するための手段】
【００１４】
本発明の第１の観点において、設計回路に含まれるクロックライン上の再収斂パスを検出する方法が提供される。その方法は、（Ａ）設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出することと、（Ｂ）算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
【００１５】
本発明の第２の観点において、設計回路に含まれるクロックライン上の再収斂パスの検出処理をコンピュータに実行させるプログラムが提供される。その検出処理は、（ａ）設計回路に含まれるクロック端子とレジスタのペアに関して、静的タイミング解析ツールに、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出させることと、（ｂ）算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
【００１６】
本発明の第３の観点において、設計回路に含まれるクロックライン上の再収斂パスを検出するシステムが提供される。そのシステムは、静的タイミング解析ツールと再収斂パス検出ツールとを備える。静的タイミング解析ツールは、設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出する。再収斂パス検出ツールは、算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定する。
【発明の効果】
【００１７】
本発明によれば、クロックライン上の再収斂パスを検出するために、まずは、クロック端子とレジスタのペアに関して、クロック遅延の最小値と最大値が算出される。そして、それら最小値と最大値が互いに異なる場合に、クロック端子とレジスタの間に再収斂パスが存在すると判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。クロック遅延の最小値と最大値が単純に比較されるだけなので、クロックライン上の再収斂パスを高速に検出することが可能となる。
【発明を実施するための最良の形態】
【００１８】
添付図面を参照して、本発明の一実施の形態を説明する。
【００１９】
１．再収斂パス
図３は、クロックライン上に再収斂パスを有する設計回路の一例を示している。設計回路には、クロック信号が入力されるクロック端子と、そのクロック信号が分配されるレジスタ（フリップフロップ）が含まれる。図３で示される例では、設計回路は、クロック端子ｃｌｋ１と２つのフリップフロップｆｆ１、ｆｆ２を含んでいる。以下の説明において、符号“ｃｌｋ１”は、クロック端子だけでなく、クロック信号を指す場合にも用いられる。フリップフロップｆｆ１、ｆｆ２は共に、クロック信号ｃｌｋ１に基づいて動作する。
【００２０】
クロック端子ｃｌｋ１からフリップフロップｆｆ１のクロック入力端子へのクロックラインは、２つのクロックパスＰ１（ｍｉｎ）、Ｐ１（ｍａｘ）を含んでいる。具体的には、クロックパスＰ１（ｍｉｎ）は、クロック端子ｃｌｋ１、バッファｂｕｆ１、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ１のクロック入力端子を、構成要素として含んでいる。一方、クロックパスＰ１（ｍａｘ）は、クロック端子ｃｌｋ１、バッファｂｕｆ２、バッファｂｕｆ３、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ１のクロック入力端子を、構成要素として含んでいる。これらクロックパスＰ１（ｍｉｎ）、Ｐ１（ｍａｘ）が、クロックライン上の再収斂パスを構成している。クロックパスＰ１（ｍａｘ）のクロック遅延は、クロックパスＰ１（ｍｉｎ）のクロック遅延より大きい。
【００２１】
同様に、クロック端子ｃｌｋ１からフリップフロップｆｆ２のクロック入力端子へのクロックラインは、２つのクロックパスＰ２（ｍｉｎ）、Ｐ２（ｍａｘ）を含んでいる。具体的には、クロックパスＰ２（ｍｉｎ）は、クロック端子ｃｌｋ１、バッファｂｕｆ１、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ２のクロック入力端子を、構成要素として含んでいる。一方、クロックパスＰ２（ｍａｘ）は、クロック端子ｃｌｋ１、バッファｂｕｆ２、バッファｂｕｆ３、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ２のクロック入力端子を、構成要素として含んでいる。これらクロックパスＰ２（ｍｉｎ）、Ｐ２（ｍａｘ）が、クロックライン上の再収斂パスを構成している。クロックパスＰ２（ｍａｘ）のクロック遅延は、クロックパスＰ２（ｍｉｎ）のクロック遅延より大きい。
【００２２】
尚、マルチプレクサｍｕｘ１は、バッファｂｕｆ１経由のクロック信号ｃｌｋ１と、バッファｂｕｆ２、ｂｕｆ３経由のクロック信号ｃｌｋ１とを、入力信号として受け取る。このマルチプレクサｍｕｘ１は、クロック選択信号ｃｌｋｓｅｌに応じてそれら入力信号のいずれか一方を選択し、選択された一方を出力する機能を有する。また、フリップフロップｆｆ１のデータ出力端子は、バッファｂｕｆ５を通して、フリップフロップｆｆ２のデータ入力端子に接続されている。
【００２３】
本実施の形態によれば、設計段階において、設計回路に含まれるクロックライン上の再収斂パスを検出するための技術が提供される。以下、図３で例示された設計回路を適宜参照しながら、本実施の形態を詳細に説明する。尚、図３で示される例では、クロック信号は１種類であるが、クロック信号の種類が複数の場合であっても、同じ議論が適用され得る。
【００２４】
２．再収斂パス検出システム
図４は、本実施の形態に係る再収斂パス検出システム１の構成例を示すブロック図である。この再収斂パス検出システム１は、クロックライン上の再収斂パスを検出するためのコンピュータシステムである。具体的には、再収斂パス検出システム１は、記憶装置２、処理装置３、入力装置４、及び出力装置５を備えている。記憶装置２としては、ＲＡＭやＨＤＤが例示される。処理装置３は、ＣＰＵを含んでいる。入力装置４としては、キーボードやマウス、メディアドライブ、ネットワークインターフェース等が例示される。出力装置５としては、ディスプレイ、メディアドライブ、ネットワークインターフェース等が例示される。
【００２５】
記憶装置２には、ネットリストＮＥＴ、遅延ファイルＳＤＦ、クロック制約ファイルＣＯＮ、及びライブラリＬＩＢが格納される。ネットリストＮＥＴは、設計回路のセル間の接続を示す。遅延ファイルＳＤＦは、セル遅延と配線遅延を示し、典型的には、ＳＤＦ（Standard Delay Format）で記述される。クロック制約ファイルＣＯＮは、クロック周期や、クロック制御信号の論理固定の設定等を示す。ライブラリＬＩＢは、セル等のライブラリである。これらネットリストＮＥＴ、遅延ファイルＳＤＦ、クロック制約ファイルＣＯＮ及びライブラリＬＩＢは、「静的タイミング解析（STA: Static Timing Analysis）」において一般的に用いられるデータである。
【００２６】
また、記憶装置２には、遅延レポートデータＤＤ、パスレポートデータＤＰ、及び再収斂レポートデータＤＲが格納される。これらのデータＤＤ、ＤＰ及びＤＲは、後に示される処理によって生成される中間データあるいは結果データである。
【００２７】
処理装置３は、再収斂パス検出ツール１０とＳＴＡツール２０を備えている。再収斂パス検出ツール１０は、処理装置３が再収斂パス検出プログラムＰＲＯＧ１０を実行することによって実現されるモジュールである。再収斂パス検出プログラムＰＲＯＧ１０は、処理装置３によって実行されるソフトウェアであり、再収斂パスの検出機能を提供する。一方、ＳＴＡツール２０は、処理装置３がＳＴＡプログラムＰＲＯＧ２０を実行することによって実現されるモジュールである。ＳＴＡプログラムＰＲＯＧ２０は、処理装置３によって実行される一般的なソフトウェアであり、ＳＴＡ機能を提供する。再収斂パス検出プログラムＰＲＯＧ１０やＳＴＡプログラムＰＲＯＧ２０は、例えば、コンピュータ読み取り可能な記録媒体に記録されており、処理装置３によって読み込まれ、実行される。あるいは、再収斂パス検出プログラムＰＲＯＧ１０やＳＴＡプログラムＰＲＯＧ２０は、ネットワークを介して提供されてもよい。
【００２８】
再収斂パス検出ツール１０及びＳＴＡツール２０により、次に説明される再収斂パス検出処理が実現される。
【００２９】
３．処理フロー
図５は、本実施の形態に係る再収斂パス検出処理を示すフローチャートである。
【００３０】
（ステップＳ１０）
設計回路には、クロック端子とそれにつながるフリップフロップ（レジスタ）の複数のペアが含まれている。例えば図３で示された設計回路には、クロック端子ｃｌｋ１とフリップフロップｆｆ１のペアと、クロック端子ｃｌｋ１とフリップフロップｆｆ２のペアが含まれている。ステップＳ１０では、それらペアの各々に関して、クロック端子からフリップフロップへのクロック遅延の最小値及び最大値が算出される。そのために、ＳＴＡツール２０が提供するパス遅延算出機能が利用される。
【００３１】
具体的には、まず、再収斂パス検出ツール１０は、ＳＴＡツール２０を起動する。ＳＴＡツール２０は、記憶装置２から、ネットリストＮＥＴ、遅延ファイルＳＤＦ、クロック制約ファイルＣＯＮ及びライブラリＬＩＢを読み込む。尚、遅延ファイルＳＤＦは、典型的には、セル遅延や配線遅延の各々に関して、コーナー値（最大値、最小値）を与えている。ここでは、ＳＴＡツール２０は、各セル毎あるいは各配線毎に、ある一定の遅延値だけを読み込む。例えば、ＳＴＡツール２０は、遅延ファイルＳＤＦが与える遅延の最大値だけを用いる。
【００３２】
続いて、再収斂パス検出ツール１０は、クロック端子とフリップフロップの各ペアに関して、ＳＴＡツール２０に、クロック遅延の最大値と最小値を算出させる。そのために、再収斂パス検出ツール１０は、“ｒｅｐｏｒｔ＿ｃｌｏｃｋ_ｔｉｍｉｎｇ”や“ｇｅｔ＿ａｔｔｒｉｂｕｔｅ”といったコマンドを、ＳＴＡツール２０に入力する。入力されたコマンドに応答して、ＳＴＡツール２０はＳＴＡを実行し、パス遅延算出機能により、クロック端子からフリップフロップへのクロック遅延の最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）を算出する。設計回路中の全てのペアに関して、同様の処理が実施される。
【００３３】
図６は、図３で示された設計回路の場合に算出される最大値ｔｄ（ｍａｘ）及び最小値ｔｄ（ｍｉｎ）の例を示している。図６の例では、クロック端子ｃｌｋ１とフリップフロップｆｆ１のペアに関して、クロック遅延の最大値ｔｄ（ｍａｘ）は５．２ｎｓであり、最小値ｔｄ（ｍｉｎ）は３．３ｎｓである。同様に、クロック端子ｃｌｋ１とフリップフロップｆｆ２のペアに関して、クロック遅延の最大値ｔｄ（ｍａｘ）は５．２ｎｓであり、最小値ｔｄ（ｍｉｎ）は３．３ｎｓである。このように、最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）は、ＳＴＡツール２０の機能により容易に取得できる。
【００３４】
ＳＴＡツール２０は、算出された最大値ｔｄ（ｍａｘ）及び最小値ｔｄ（ｍｉｎ）を出力する。設計回路中の全てのペアに関して最大値ｔｄ（ｍａｘ）及び最小値ｔｄ（ｍｉｎ）を示すデータが、遅延レポートデータＤＤである。遅延レポートデータＤＤは、ＳＴＡツール２０によって作成されてもよいし、ＳＴＡツール２０の出力に基づいて再収斂パス検出ツール１０によって作成されてもよい。作成された遅延レポートデータＤＤは、記憶装置２に格納される。また、遅延レポートデータＤＤは、出力装置５を通して出力されてもよい。例えば、遅延レポートデータＤＤは、ディスプレイに表示される。ユーザーは、その表示を参照して、各ペアに関するクロック遅延の最大値ｔｄ（ｍａｘ）及び最小値ｔｄ（ｍｉｎ）を把握することができる。
【００３５】
（ステップＳ２０）
次に、再収斂パス検出ツール１０は、記憶装置２から遅延レポートデータＤＤを読み出し、その遅延レポートデータＤＤを参照して再収斂パスの検出を行う。具体的には、再収斂パス検出ツール１０は、各ペアに関して、クロック遅延の最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）を比較することにより、再収斂パスの有無を判定する。最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）が同じであれば、当該ペアのクロック端子とフリップフロップとの間のクロックラインには再収斂パスは存在しないと判定される。一方、最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）が互いに異なっている場合、当該ペアのクロック端子とフリップフロップとの間のクロックラインに再収斂パスが存在すると判定される。
【００３６】
図６で示された例の場合、クロック端子ｃｌｋ１とフリップフロップｆｆ１のペアに関して、クロック遅延の最大値ｔｄ（ｍａｘ）は５．２ｎｓであり、最小値ｔｄ（ｍｉｎ）は３．３ｎｓである。従って、クロック端子ｃｌｋ１とフリップフロップｆｆ１との間に再収斂パスが存在すると判定される。同様に、クロック端子ｃｌｋ１とフリップフロップｆｆ２との間に再収斂パスが存在すると判定される。
【００３７】
このように、本実施の形態によれば、クロック遅延の最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）との比較を行うことにより、まずは再収斂パスの有無が判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）とが単純に比較されるだけなので、再収斂パスを高速且つ容易に検出することが可能となる。
【００３８】
（ステップＳ３０）
ステップＳ２０の結果に基づいて、再収斂パス検出ツール１０は、設計回路に含まれる全てのペアの中から、再収斂パスが存在するペアを抽出することができる。これにより、再収斂パスに関連するクロック信号及びそのクロック信号に駆動されるフリップフロップの情報を取得することができる。図６で示された例の場合、クロック端子ｃｌｋ１とフリップフロップｆｆ１のペアと、クロック端子ｃｌｋ１とフリップフロップｆｆ２のペアが抽出される。ペアが１つでも抽出されると、設計回路中に再収斂パスが存在することを意味する。その場合、処理は次のステップＳ４０へ進む。
【００３９】
（ステップＳ４０）
ステップＳ３０で抽出されたペアの各々に関して、クロック遅延の最大値ｔｄ（ｍａｘ）と最小値ｔｄ（ｍｉｎ）とは互いに異なっている。最大値ｔｄ（ｍａｘ）のクロック遅延を有するパスは、以下「最長パス」と参照される。一方、最小値ｔｄ（ｍｉｎ）のクロック遅延を有するパスは、以下「最短パス」と参照される。図３で示された設計回路の場合、クロックパスＰ１（ｍａｘ）が最長パスであり、クロックパスＰ１（ｍｉｎ）が最短パスである。また、クロックパスＰ２（ｍａｘ）が最長パスであり、クロックパスＰ２（ｍｉｎ）が最短パスである。ステップＳ４０では、ステップＳ３０で抽出されたペアの各々に関して、最長パスと最短パスのそれぞれの構成が抽出される。そのために、ＳＴＡツール２０が提供するトレース機能が利用される。
【００４０】
具体的には、再収斂パス検出ツール１０は、各ペアに関して、ＳＴＡツール２０に、最長パスと最短パスのそれぞれの構成を抽出させる。そのために、再収斂パス検出ツール１０は、“ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ”や“ｇｅｔ＿ｔｉｍｉｎｇ＿ｐａｔｈｓ”といったコマンドを、ＳＴＡツール２０に入力する。入力されたコマンドに応答して、ＳＴＡツール２０は、クロック遅延が最大値ｔｄ（ｍａｘ）となるパスのトレースと、クロック遅延が最小値ｔｄ（ｍｉｎ）となるパスのトレースを実行する。これにより、ＳＴＡツール２０は、最長パスと最短パスのそれぞれの構成を抽出することができる。ステップＳ３０で抽出された全てのペアに関して、同様の処理が実施される。
【００４１】
図７は、クロック端子ｃｌｋ１とフリップフロップｆｆ１のペアの場合に抽出される最長パスＰ１（ｍａｘ）の構成と最短パスＰ１（ｍｉｎ）の構成を示している。図７に示されるように、最長パスＰ１（ｍａｘ）は、クロック端子ｃｌｋ１、バッファｂｕｆ２、バッファｂｕｆ３、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ１のクロック入力端子を含んでいる（図３参照）。一方、最短パスＰ１（ｍｉｎ）は、クロック端子ｃｌｋ１、バッファｂｕｆ１、マルチプレクサｍｕｘ１、バッファｂｕｆ４、及びフリップフロップｆｆ１のクロック入力端子を含んでいる（図３参照）。このように、最長パスの構成や最短パスの構成も、ＳＴＡツール２０の機能により容易に取得できる。
【００４２】
ＳＴＡツール２０は、抽出された最長パスと最短パスのそれぞれの構成を出力する。ステップＳ３０で抽出された各ペアに関して最長パス構成と最短パス構成を示すデータが、パスレポートデータＤＰである。パスレポートデータＤＰは、ＳＴＡツール２０によって作成されてもよいし、ＳＴＡツール２０の出力に基づいて再収斂パス検出ツール１０によって作成されてもよい。作成されたパスレポートデータＤＰは、記憶装置２に格納される。また、パスレポートデータＤＰは、出力装置５を通して出力されてもよい。例えば、パスレポートデータＤＰは、ディスプレイに表示される。ユーザーは、その表示を参照して、最長パス構成と最短パス構成を比較することができる。
【００４３】
（ステップＳ５０）
次に、再収斂パス検出ツール１０は、記憶装置２からパスレポートデータＤＰを読み出し、そのパスレポートデータＤＰを参照して「分岐ポイント」と「再収斂ポイント」を抽出する。具体的には、再収斂パス検出ツール１０は、各ペアに関して、最長パスの構成と最短パスの構成の比較を行い、それら構成間の差異を抽出する。クロック端子からフリップフロップへ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスとの「分岐ポイント」と特定される。逆に、フリップフロップからクロック端子へ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスの「再収斂ポイント」と特定される。
【００４４】
図７で示された例の場合、最長パスＰ１（ｍａｘ）と最短パスＰ１（ｍｉｎ）をクロック端子ｃｌｋ１からフリップフロップｆｆ１へ向かって構成を比較すると、最長パスＰ１
（ｍａｘ）中のバッファｂｕｆ２と最短パスＰ１（ｍｉｎ）中のバッファｂｕｆ１とが最初に構成が不一致となっている。従って、分岐ポイントは不一致箇所の前段の「クロック端子ｃｌｋ１」であることが容易に分かる。一方、最長パスＰ１（ｍａｘ）と最短パスＰ１（ｍｉｎ）をフリップフロップｆｆ１からクロック端子ｃｌｋ１へ向かって構成を比較すると、最長パスＰ１（ｍａｘ）中のバッファｂｕｆ３と、最短パスＰ１（ｍｉｎ）中のバッファｂｕｆ１とが最初に不一致となっている。従って、再収斂ポイントは不一致箇所の後段の「マルチプレクサｍｕｘ１」であることが容易に分かる。
【００４５】
このように、本実施の形態によれば、クロックパス構成を解析することによって、クロックラインの分岐ポイント及び再収斂ポイントが抽出される。ここで、解析対象のクロックパスは、ステップＳ３０で抽出された各ペアに関する最長パスと最短パスだけであることに留意されたい。すなわち、ステップＳ１０〜Ｓ３０においてまずは再収斂パスの有無が判定され、その後ステップＳ４０〜Ｓ５０において、再収斂パスが存在するペアに関して、最長パスと最短パスの２本だけが詳細に解析される。再収斂パスが存在すると判明した部分に対してだけ探索を行えばよく、設計回路中の全てのパスを探索する必要はない。従って、分岐ポイントと再収斂ポイントを高速且つ容易に特定することが可能である。
【００４６】
（ステップＳ６０）
再収斂パス検出ツール１０は、再収斂レポートデータＤＲを作成する。再収斂レポートデータＤＲは、再収斂パスの有無、検出された再収斂パス、分岐ポイント及び再収斂ポイント等を示す。図８は、再収斂レポートデータＤＲの一例を示している。クロック信号ｃｌｋ１の他にも異なるクロック信号があれば、それに関するレポートも含まれる。作成された再収斂レポートデータＤＲは、記憶装置２に格納され、また、出力装置５を通して出力される。例えば、再収斂レポートデータＤＲは、ディスプレイに表示される。
【００４７】
（ステップＳ７０）
上述の通り、クロックライン上の再収斂パスは、回路の誤動作の原因となり得る。従って、検出された再収斂パスに対して対策が施される。これにより、誤動作が未然に防止される。対策の詳細は、次の第４節でまとめて説明される。
【００４８】
（ステップＳ８０）
ＳＴＡツール２０は、通常通りの静的タイミング解析（ＳＴＡ）を実行する。例えば、設計回路がセットアップ制約やホールド制約を満たしているか否かが解析される。
【００４９】
４．対策（ステップＳ７０）
図９は、再収斂パスが検出された後の対策を示すフローチャートである。設計回路中に再収斂パスが検出された場合、例えば次のような対策が考えられる。
【００５０】
まず、再収斂パスが無くなるように、設計回路の構成を変更することが考えられる（ステップＳ７１）。特に、グリッチ等により誤動作が発生する可能性が高い場合には、再収斂パスを無くすことが好ましい。例えば、設計者は、手修正で設計回路の構成を変更する。あるいは、論理合成時やレイアウト設計時における最適化処理を抑制してもよい。また、設計回路の変更後、上述のステップＳ１０、Ｓ２０が再度実施されてもよい（ステップＳ７２）。これにより、本当に再収斂パスが無くなったかどうか確認することができる。もし、再収斂パスが依然として存在するようであれば、再度、設計回路が変更される。
【００５１】
但し、設計回路の変更は、設計ＴＡＴの増大を招く。回路誤動作の恐れがなければ、必ずしも設計回路を変更する必要はない。
【００５２】
設計回路の変更が不要な場合であっても、ＳＴＡ（ステップＳ８０）において効果的な他の対策が考えられる。その有用な対策を説明するために、まず、ＳＴＡにおけるセットアップ解析を考える。図１０は、既出の図３で示された回路構成に対するセットアップ解析の一例を説明するための図である。図１１は、同じ回路構成に対するセットアップ解析の他の例を説明するための図である。図１２は、図１０と図１１の場合におけるセットアップマージンを説明するための図である。
【００５３】
図１２に示されるように、フリップフロップｆｆ１は、１つ目のクロック信号の立ち上がりに応答してデータをラッチする。そして、フリップフロップｆｆ１のデータ出力端子ｆｆ１／Ｑから出力されるデータが、次段のフリップフロップｆｆ２のデータ入力端子ｆｆ２／Ｄに入力される。フリップフロップｆｆ２は、２つ目のクロック信号の立ち上がりに応答して、データ入力端子ｆｆ２／Ｄに入力されているデータをラッチする。データ入力端子ｆｆ２／Ｄにおけるデータ遷移のタイミングから、クロック入力端子ｆｆ２／ＣＬＫにおけるクロック遷移のタイミングまでの時間が、フリップフロップｆｆ２でのセットアップマージンである。フリップフロップｆｆ２が安定してデータをラッチするためには、所定値以上のセットアップマージンが必要である。
【００５４】
図１０は、再収斂パスを有する回路構成に対して何も対策が施されなかった場合の、ＳＴＡツールによるＳｅｔｕｐ解析を示している。この場合、データ入力端子ｆｆ２／Ｄにおけるデータ遷移のタイミングは、遅いパスＰＤ（ｌａｔｅ）に基づいて算出される。一方、クロック入力端子ｆｆ２／ＣＬＫにおけるクロック遷移のタイミングは早いパスＰＣ（ｅａｒｌｙ）に基づいて算出される。このケースは、セットアップマージンが最小となるワーストケースに相当する。
【００５５】
しかしながら、実際の回路動作において、マルチプレクサｍｕｘ１は、クロック選択信号ｃｌｋｓｅｌに応じて、入力信号のいずれか１つだけを選択的に出力する。すなわち、マルチプレクサｍｕｘ１は、バッファｂｕｆ１経由の早いクロック信号か、バッファｂｕｆ２、ｂｕｆ３経由の遅いクロック信号のいずれか１つを出力する。例えば図１１に示されるように、マルチプレクサｍｕｘ１は、遅い方のクロック信号を出力する。この場合、クロック入力端子ｆｆ２／ＣＬＫにおけるクロック遷移のタイミングは、次に早いパスＰＣ２（ｅａｒｌｙ）に依存することになる。
【００５６】
従って、図１２に示されるように、図１１の場合のセットアップマージンは、図１０の場合のセットアップマージンよりも大きくなる。実際の回路動作を考慮すると、図１１の場合のセットアップマージンを解析すれば十分である。逆に言えば、図１０の場合のセットアップマージンは“悲観的”過ぎる。
【００５７】
上述の通り、セットアップマージンは所定値以上である必要がある。しかしながら、図１０の場合の悲観的なセットアップマージンは、その所定値を満足する可能性が低い。セットアップマージンが所定値を満足しない場合、それを解消するために設計回路の変更が必要となる。しかしながら、設計回路の変更は設計ＴＡＴの増大を招く。また、悲観的なセットアップマージンを所定値以上にするためには、冗長な回路を追加的に挿入する必要もでてくる。このことは、チップ面積の増大を招く。このように、再収斂パスに対して何も対策を施さないことは、回路設計において多大な問題を引き起こす。
【００５８】
そこで、本実施の形態によれば、ＳＴＡにおいてクロックパスが１本に特定されるように、クロック制約が追加される（ステップＳ７３）。具体的には、クロックラインの制御信号が所定の論理値に固定される。図３で示された例の場合、クロック選択信号ｃｌｋｓｅｌの論理値が、“０”か“１”のいずれかに固定される。このようなクロック選択信号ｃｌｋｓｅｌの論理固定の設定は、クロック制約ファイルＣＯＮに追加的に記述される。その結果、例えば図１１で示されたように、ＳＴＡにおいてマルチプレクサｍｕｘ１は、遅い方のクロック信号を固定的に出力するようになる。言い換えれば、ＳＴＡにおいて、一方の最短パスＰＣ（ｅａｒｌｙ）が不活性化される。
【００５９】
ステップＳ７３でクロック制約が追加された後、上述のステップＳ１０、Ｓ２０が再度実施されてもよい（ステップＳ７４）。これにより、本当にクロックパスが１本に特定され、再収斂パスが検出されなくなるかを確認することができる。尚、このようにクロックラインの制御信号が固定値に設定された状態での解析は、「ケース解析」と呼ばれることもある。本実施の形態に係る再収斂パス検出処理は、このようなケース解析にも適用可能であると言える。
【００６０】
再収斂パスが検出されなくなることが確認されると、実際にＳＴＡが実行され、セットアップ解析やホールド解析が行われる（ステップＳ８０）。クロック制約ファイルＣＯＮにクロック制約が追加されているため、このＳＴＡもケース解析となる。このとき、例えば図１１で示されたように、データ遷移のタイミングとクロック遷移のタイミングは、実際の回路動作に適合するように算出される。従って、悲観的過ぎず、実動作の観点からも十分精度が高いセットアップマージンが算出される。結果として、設計回路の変更が必要となる確率が減り、設計ＴＡＴの増大が防止される。また、冗長な回路を追加する必要も減り、チップ面積の増大が防止される。
【００６１】
５．効果
本実施の形態によれば、クロックライン上の再収斂パスを検出するために、まずは、クロック端子とフリップフロップのペアに関して、クロック遅延の最小値と最大値が算出される。そして、それら最小値と最大値が互いに異なる場合に、クロック端子とフリップフロップの間に再収斂パスが存在すると判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。クロック遅延の最小値と最大値が単純に比較されるだけなので、クロックライン上の再収斂パスを高速且つ容易に検出することが可能となる。
【００６２】
そして、再収斂パスの存在が検出された後に、詳細な解析が行われ、分岐ポイント及び再収斂ポイントが特定される。このときの解析対象は、再収斂パスが存在するペアだけであり、更に、そのペアに関する最長パスと最短パスの２本だけである。すなわち、まずは再収斂パスの有無を判定することにより解析対象が絞り込まれ、その後、最長パスと最短パスだけが詳細に解析される。設計回路中の全てのパスを探索する必要はない。従って、分岐ポイントと再収斂ポイントを高速且つ容易に特定することが可能である。
【図面の簡単な説明】
【００６３】
【図１】図１は、クロックライン上に再収斂パスを有する論理回路の一例を示す回路図である。
【図２】図２は、図１で示された論理回路の動作を示すタイミングチャートである。
【図３】図３は、クロックライン上に再収斂パスを有する設計回路の一例を示す回路図である。
【図４】図４は、本発明の実施の形態に係る再収斂パス検出システムの構成例を示すブロック図である。
【図５】図５は、本発明の実施の形態に係る再収斂パス検出処理を示すフローチャートである。
【図６】図６は、遅延レポートデータの一例を示す概念図である。
【図７】図７は、パスレポートデータの一例を示す概念図である。
【図８】図８は、再収斂レポートデータの一例を示す概念図である。
【図９】図９は、再収斂パスが検出された後の対策を示すフローチャートである。
【図１０】図１０は、セットアップ解析の一例を説明するための図である。
【図１１】図１１は、セットアップ解析の他の例を説明するための図である。
【図１２】図１２は、図１０と図１１の場合におけるセットアップマージンを説明するための図である。
【符号の説明】
【００６４】
１    再収斂パス検出システム
２    記憶装置
３    処理装置
４    入力装置
５    出力装置
１０    再収斂パス検出ツール
２０    ＳＴＡツール
ＮＥＴ  ネットリスト
ＳＤＦ  遅延ファイル
ＣＯＮ  クロック制約ファイル
ＬＩＢ  ライブラリ
ＤＤ    遅延レポートデータ
ＤＰ    パスレポートデータ
ＤＲ    再収斂レポートデータ
ＰＲＯＧ１０  再収斂パス検出プログラム
ＰＲＯＧ２０  ＳＴＡプログラム
【図１】
2009128977.tif 000003
【図２】
2009128977.tif 000004
【図３】
2009128977.tif 000005
【図４】
2009128977.tif 000006
【図５】
2009128977.tif 000007
【図６】
2009128977.tif 000008
【図７】
2009128977.tif 000009
【図８】
2009128977.tif 000010
【図９】
2009128977.tif 000011
【図１０】
2009128977.tif 000012
【図１１】
2009128977.tif 000013
【図１２】
2009128977.tif 000014