JP2009128977A - 再収斂パス検出方法、プログラム、及びシステム - Google Patents
再収斂パス検出方法、プログラム、及びシステム Download PDFInfo
- Publication number
- JP2009128977A JP2009128977A JP2007300267A JP2007300267A JP2009128977A JP 2009128977 A JP2009128977 A JP 2009128977A JP 2007300267 A JP2007300267 A JP 2007300267A JP 2007300267 A JP2007300267 A JP 2007300267A JP 2009128977 A JP2009128977 A JP 2009128977A
- Authority
- JP
- Japan
- Prior art keywords
- path
- reconvergence
- clock
- register
- delay
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】設計回路に含まれるクロックライン上の再収斂パスを高速に検出すること。
【解決手段】再収斂パス検出方法は、(A)設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出することと、(B)算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
【選択図】図4
【解決手段】再収斂パス検出方法は、(A)設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出することと、(B)算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
【選択図】図4
Description
本発明は、半導体装置の設計技術に関する。特に、本発明は、設計回路に含まれるクロックライン上の再収斂パスを検出するための技術に関する。
論理回路において、2つの端子の間に複数本のパスが存在する場合がある(特許文献1参照)。この場合、入力側の端子から出た1つのパスが、ある点で複数のパスに分岐し、それら複数のパスが、出力側の端子に近い別の点で再収斂する。そのようなパスは、「再収斂パス(reconvergence path)」と呼ばれる。1つのパスが複数のパスに分岐する点は、「分岐ポイント(branch point)」と呼ばれ、複数のパスが再収斂する点は、「再収斂ポイント(reconvergence point)」と呼ばれる。
再収斂パスは、設計段階から存在する場合もあるし、設計回路の最適化処理時に意図せずに生成される場合もある。例えば、論理合成段階やレイアウト設計段階で最適化処理が実施されると、意図しない再収斂パスが勝手に生成される場合がある。
特許文献1には、クリティカルパスが再収斂パスである場合にも、そのクリティカルパス中の素子段数を削減し、遅延時間を削減するための技術が記載されている。
本願発明者は、クロックライン上の再収斂パスに着目した。クロックライン上の再収斂パスは、意図しない回路動作を引き起こす可能性がある。特に、最適化処理等により再収斂パスが意図せず生成された場合、その再収斂パスは意図しない回路動作を引き起こす可能性がある。図1及び図2を参照して、意図しない回路動作の一例を説明する。
図1には、マルチプレクサ(MUX)が、テストモード信号(TEST MODE)に応じてノーマルクロック(Normal CLK)かスキャンクロック(Scan CLK)のいずれか一方を選択し、選択した一方をフリップフロップ(FF)に供給する回路が示されている。最適化処理の結果、図1の下部に示される回路構成が得られたとする。NANDゲートの入力はノードNA、NBにつながり、その出力はノードNCにつながっている。ノードNCは、フリップフロップのクロック入力端子につながっている。
通常動作時、テストモード信号は「0」に設定される。この場合、ノードNAにはノーマルクロックの反転信号が現れ、ノードNBには論理値「1」が現れる。従って、ノードNCにはノーマルクロックが現れる。
一方、スキャンテスト時、テストモード信号は「1」に設定される。この場合、ノードNBにはスキャンクロックの反転信号が現れる。ノードNAにはスキャンクロックの反転信号あるいは論理値「1」が現れ、どちらが現れるかは、前段のノードNDの論理値、すなわち、ノーマルクロックの状態に依存する。いずれの場合であっても、ノードNCにはスキャンクロックが現れる。
このように、論理的には、ノーマルクロックかスキャンクロックのいずれか一方の選択が実現されている。但し、ここで注意すべきことは、最適化処理の結果、スキャンクロックのライン上に再収斂パスが生成されていることである。具体的には、図1に示されるように、スキャンクロック端子からNANDゲートまでには、2つの異なるクロックパスP1とP2が存在している。これらクロックパスP1、P2が再収斂パスを構成している。クロックパスP1とP2との間で遅延値が異なる場合、次のような問題が発生する可能性がある。
図2は、スキャンテスト時の動作例を示すタイミングチャートである。クロックパスP2の遅延値は、クロックパスP1の遅延値より大きいとする。時刻t1において、スキャンクロックが「0」から「1」へ変化する。時刻t2において、ノードNDの状態によっては、ノードNAの論理値が「0」に変化し、ノードNCの論理値が「1」に変化する。時刻t2より遅い時刻t3において、スキャンクロックの変化がノードNBに伝わり、ノードNBの論理値が「0」に変化する。その結果、ノードNCの論理値が「1」に確定する。このように、ノードNCの状態は、時刻t2〜t3の期間はノードNDの状態に依存するが、時刻t3におけるノードNBの変化によって最終的に確定する。
ここで、ノードNCの状態の確定前に、ノードNDの状態が変化する場合を考える。つまり、時刻t2〜t3の期間に、ノーマルクロックが変化し、ノードNDの論理値が変化する場合である。例えば図2に示されるように、ノードNDの論理値が、時刻t2において「0」であり、時刻t2〜t3の間の時刻txにおいて「0」から「1」に変化する。この場合、ノードNAの論理値は、時刻t2において「1」から「0」に変化し、その後、時刻txにおいて「0」から「1」へ変化する。結果として、ノードNCの論理値は、時刻t2において「0」から「1」に変化し、時刻txにおいて「1」から「0」に変化し、時刻t3において「1」に確定する。すなわち、ノードNCに、グリッチ(glitch)が発生する。このグリッチが、フリップフロップの予期せぬ誤動作を引き起こす。
以上に例示されたように、クロックライン上の再収斂パスは、回路の誤動作の原因となり得る。従って、設計段階において、設計回路に含まれるクロックライン上の再収斂パスを検出することが望まれる。
本発明の第1の観点において、設計回路に含まれるクロックライン上の再収斂パスを検出する方法が提供される。その方法は、(A)設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出することと、(B)算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
本発明の第2の観点において、設計回路に含まれるクロックライン上の再収斂パスの検出処理をコンピュータに実行させるプログラムが提供される。その検出処理は、(a)設計回路に含まれるクロック端子とレジスタのペアに関して、静的タイミング解析ツールに、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出させることと、(b)算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定することと、を含む。
本発明の第3の観点において、設計回路に含まれるクロックライン上の再収斂パスを検出するシステムが提供される。そのシステムは、静的タイミング解析ツールと再収斂パス検出ツールとを備える。静的タイミング解析ツールは、設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、クロック端子からレジスタへのクロック遅延の最小値及び最大値を算出する。再収斂パス検出ツールは、算出された最小値と最大値とを比較することにより、クロック端子とレジスタとの間の再収斂パスの有無を判定する。
本発明によれば、クロックライン上の再収斂パスを検出するために、まずは、クロック端子とレジスタのペアに関して、クロック遅延の最小値と最大値が算出される。そして、それら最小値と最大値が互いに異なる場合に、クロック端子とレジスタの間に再収斂パスが存在すると判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。クロック遅延の最小値と最大値が単純に比較されるだけなので、クロックライン上の再収斂パスを高速に検出することが可能となる。
添付図面を参照して、本発明の一実施の形態を説明する。
1.再収斂パス
図3は、クロックライン上に再収斂パスを有する設計回路の一例を示している。設計回路には、クロック信号が入力されるクロック端子と、そのクロック信号が分配されるレジスタ(フリップフロップ)が含まれる。図3で示される例では、設計回路は、クロック端子clk1と2つのフリップフロップff1、ff2を含んでいる。以下の説明において、符号“clk1”は、クロック端子だけでなく、クロック信号を指す場合にも用いられる。フリップフロップff1、ff2は共に、クロック信号clk1に基づいて動作する。
図3は、クロックライン上に再収斂パスを有する設計回路の一例を示している。設計回路には、クロック信号が入力されるクロック端子と、そのクロック信号が分配されるレジスタ(フリップフロップ)が含まれる。図3で示される例では、設計回路は、クロック端子clk1と2つのフリップフロップff1、ff2を含んでいる。以下の説明において、符号“clk1”は、クロック端子だけでなく、クロック信号を指す場合にも用いられる。フリップフロップff1、ff2は共に、クロック信号clk1に基づいて動作する。
クロック端子clk1からフリップフロップff1のクロック入力端子へのクロックラインは、2つのクロックパスP1(min)、P1(max)を含んでいる。具体的には、クロックパスP1(min)は、クロック端子clk1、バッファbuf1、マルチプレクサmux1、バッファbuf4、及びフリップフロップff1のクロック入力端子を、構成要素として含んでいる。一方、クロックパスP1(max)は、クロック端子clk1、バッファbuf2、バッファbuf3、マルチプレクサmux1、バッファbuf4、及びフリップフロップff1のクロック入力端子を、構成要素として含んでいる。これらクロックパスP1(min)、P1(max)が、クロックライン上の再収斂パスを構成している。クロックパスP1(max)のクロック遅延は、クロックパスP1(min)のクロック遅延より大きい。
同様に、クロック端子clk1からフリップフロップff2のクロック入力端子へのクロックラインは、2つのクロックパスP2(min)、P2(max)を含んでいる。具体的には、クロックパスP2(min)は、クロック端子clk1、バッファbuf1、マルチプレクサmux1、バッファbuf4、及びフリップフロップff2のクロック入力端子を、構成要素として含んでいる。一方、クロックパスP2(max)は、クロック端子clk1、バッファbuf2、バッファbuf3、マルチプレクサmux1、バッファbuf4、及びフリップフロップff2のクロック入力端子を、構成要素として含んでいる。これらクロックパスP2(min)、P2(max)が、クロックライン上の再収斂パスを構成している。クロックパスP2(max)のクロック遅延は、クロックパスP2(min)のクロック遅延より大きい。
尚、マルチプレクサmux1は、バッファbuf1経由のクロック信号clk1と、バッファbuf2、buf3経由のクロック信号clk1とを、入力信号として受け取る。このマルチプレクサmux1は、クロック選択信号clkselに応じてそれら入力信号のいずれか一方を選択し、選択された一方を出力する機能を有する。また、フリップフロップff1のデータ出力端子は、バッファbuf5を通して、フリップフロップff2のデータ入力端子に接続されている。
本実施の形態によれば、設計段階において、設計回路に含まれるクロックライン上の再収斂パスを検出するための技術が提供される。以下、図3で例示された設計回路を適宜参照しながら、本実施の形態を詳細に説明する。尚、図3で示される例では、クロック信号は1種類であるが、クロック信号の種類が複数の場合であっても、同じ議論が適用され得る。
2.再収斂パス検出システム
図4は、本実施の形態に係る再収斂パス検出システム1の構成例を示すブロック図である。この再収斂パス検出システム1は、クロックライン上の再収斂パスを検出するためのコンピュータシステムである。具体的には、再収斂パス検出システム1は、記憶装置2、処理装置3、入力装置4、及び出力装置5を備えている。記憶装置2としては、RAMやHDDが例示される。処理装置3は、CPUを含んでいる。入力装置4としては、キーボードやマウス、メディアドライブ、ネットワークインターフェース等が例示される。出力装置5としては、ディスプレイ、メディアドライブ、ネットワークインターフェース等が例示される。
図4は、本実施の形態に係る再収斂パス検出システム1の構成例を示すブロック図である。この再収斂パス検出システム1は、クロックライン上の再収斂パスを検出するためのコンピュータシステムである。具体的には、再収斂パス検出システム1は、記憶装置2、処理装置3、入力装置4、及び出力装置5を備えている。記憶装置2としては、RAMやHDDが例示される。処理装置3は、CPUを含んでいる。入力装置4としては、キーボードやマウス、メディアドライブ、ネットワークインターフェース等が例示される。出力装置5としては、ディスプレイ、メディアドライブ、ネットワークインターフェース等が例示される。
記憶装置2には、ネットリストNET、遅延ファイルSDF、クロック制約ファイルCON、及びライブラリLIBが格納される。ネットリストNETは、設計回路のセル間の接続を示す。遅延ファイルSDFは、セル遅延と配線遅延を示し、典型的には、SDF(Standard Delay Format)で記述される。クロック制約ファイルCONは、クロック周期や、クロック制御信号の論理固定の設定等を示す。ライブラリLIBは、セル等のライブラリである。これらネットリストNET、遅延ファイルSDF、クロック制約ファイルCON及びライブラリLIBは、「静的タイミング解析(STA: Static Timing Analysis)」において一般的に用いられるデータである。
また、記憶装置2には、遅延レポートデータDD、パスレポートデータDP、及び再収斂レポートデータDRが格納される。これらのデータDD、DP及びDRは、後に示される処理によって生成される中間データあるいは結果データである。
処理装置3は、再収斂パス検出ツール10とSTAツール20を備えている。再収斂パス検出ツール10は、処理装置3が再収斂パス検出プログラムPROG10を実行することによって実現されるモジュールである。再収斂パス検出プログラムPROG10は、処理装置3によって実行されるソフトウェアであり、再収斂パスの検出機能を提供する。一方、STAツール20は、処理装置3がSTAプログラムPROG20を実行することによって実現されるモジュールである。STAプログラムPROG20は、処理装置3によって実行される一般的なソフトウェアであり、STA機能を提供する。再収斂パス検出プログラムPROG10やSTAプログラムPROG20は、例えば、コンピュータ読み取り可能な記録媒体に記録されており、処理装置3によって読み込まれ、実行される。あるいは、再収斂パス検出プログラムPROG10やSTAプログラムPROG20は、ネットワークを介して提供されてもよい。
再収斂パス検出ツール10及びSTAツール20により、次に説明される再収斂パス検出処理が実現される。
3.処理フロー
図5は、本実施の形態に係る再収斂パス検出処理を示すフローチャートである。
図5は、本実施の形態に係る再収斂パス検出処理を示すフローチャートである。
(ステップS10)
設計回路には、クロック端子とそれにつながるフリップフロップ(レジスタ)の複数のペアが含まれている。例えば図3で示された設計回路には、クロック端子clk1とフリップフロップff1のペアと、クロック端子clk1とフリップフロップff2のペアが含まれている。ステップS10では、それらペアの各々に関して、クロック端子からフリップフロップへのクロック遅延の最小値及び最大値が算出される。そのために、STAツール20が提供するパス遅延算出機能が利用される。
設計回路には、クロック端子とそれにつながるフリップフロップ(レジスタ)の複数のペアが含まれている。例えば図3で示された設計回路には、クロック端子clk1とフリップフロップff1のペアと、クロック端子clk1とフリップフロップff2のペアが含まれている。ステップS10では、それらペアの各々に関して、クロック端子からフリップフロップへのクロック遅延の最小値及び最大値が算出される。そのために、STAツール20が提供するパス遅延算出機能が利用される。
具体的には、まず、再収斂パス検出ツール10は、STAツール20を起動する。STAツール20は、記憶装置2から、ネットリストNET、遅延ファイルSDF、クロック制約ファイルCON及びライブラリLIBを読み込む。尚、遅延ファイルSDFは、典型的には、セル遅延や配線遅延の各々に関して、コーナー値(最大値、最小値)を与えている。ここでは、STAツール20は、各セル毎あるいは各配線毎に、ある一定の遅延値だけを読み込む。例えば、STAツール20は、遅延ファイルSDFが与える遅延の最大値だけを用いる。
続いて、再収斂パス検出ツール10は、クロック端子とフリップフロップの各ペアに関して、STAツール20に、クロック遅延の最大値と最小値を算出させる。そのために、再収斂パス検出ツール10は、“report_clock_timing”や“get_attribute”といったコマンドを、STAツール20に入力する。入力されたコマンドに応答して、STAツール20はSTAを実行し、パス遅延算出機能により、クロック端子からフリップフロップへのクロック遅延の最大値td(max)と最小値td(min)を算出する。設計回路中の全てのペアに関して、同様の処理が実施される。
図6は、図3で示された設計回路の場合に算出される最大値td(max)及び最小値td(min)の例を示している。図6の例では、クロック端子clk1とフリップフロップff1のペアに関して、クロック遅延の最大値td(max)は5.2nsであり、最小値td(min)は3.3nsである。同様に、クロック端子clk1とフリップフロップff2のペアに関して、クロック遅延の最大値td(max)は5.2nsであり、最小値td(min)は3.3nsである。このように、最大値td(max)と最小値td(min)は、STAツール20の機能により容易に取得できる。
STAツール20は、算出された最大値td(max)及び最小値td(min)を出力する。設計回路中の全てのペアに関して最大値td(max)及び最小値td(min)を示すデータが、遅延レポートデータDDである。遅延レポートデータDDは、STAツール20によって作成されてもよいし、STAツール20の出力に基づいて再収斂パス検出ツール10によって作成されてもよい。作成された遅延レポートデータDDは、記憶装置2に格納される。また、遅延レポートデータDDは、出力装置5を通して出力されてもよい。例えば、遅延レポートデータDDは、ディスプレイに表示される。ユーザーは、その表示を参照して、各ペアに関するクロック遅延の最大値td(max)及び最小値td(min)を把握することができる。
(ステップS20)
次に、再収斂パス検出ツール10は、記憶装置2から遅延レポートデータDDを読み出し、その遅延レポートデータDDを参照して再収斂パスの検出を行う。具体的には、再収斂パス検出ツール10は、各ペアに関して、クロック遅延の最大値td(max)と最小値td(min)を比較することにより、再収斂パスの有無を判定する。最大値td(max)と最小値td(min)が同じであれば、当該ペアのクロック端子とフリップフロップとの間のクロックラインには再収斂パスは存在しないと判定される。一方、最大値td(max)と最小値td(min)が互いに異なっている場合、当該ペアのクロック端子とフリップフロップとの間のクロックラインに再収斂パスが存在すると判定される。
次に、再収斂パス検出ツール10は、記憶装置2から遅延レポートデータDDを読み出し、その遅延レポートデータDDを参照して再収斂パスの検出を行う。具体的には、再収斂パス検出ツール10は、各ペアに関して、クロック遅延の最大値td(max)と最小値td(min)を比較することにより、再収斂パスの有無を判定する。最大値td(max)と最小値td(min)が同じであれば、当該ペアのクロック端子とフリップフロップとの間のクロックラインには再収斂パスは存在しないと判定される。一方、最大値td(max)と最小値td(min)が互いに異なっている場合、当該ペアのクロック端子とフリップフロップとの間のクロックラインに再収斂パスが存在すると判定される。
図6で示された例の場合、クロック端子clk1とフリップフロップff1のペアに関して、クロック遅延の最大値td(max)は5.2nsであり、最小値td(min)は3.3nsである。従って、クロック端子clk1とフリップフロップff1との間に再収斂パスが存在すると判定される。同様に、クロック端子clk1とフリップフロップff2との間に再収斂パスが存在すると判定される。
このように、本実施の形態によれば、クロック遅延の最大値td(max)と最小値td(min)との比較を行うことにより、まずは再収斂パスの有無が判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。最大値td(max)と最小値td(min)とが単純に比較されるだけなので、再収斂パスを高速且つ容易に検出することが可能となる。
(ステップS30)
ステップS20の結果に基づいて、再収斂パス検出ツール10は、設計回路に含まれる全てのペアの中から、再収斂パスが存在するペアを抽出することができる。これにより、再収斂パスに関連するクロック信号及びそのクロック信号に駆動されるフリップフロップの情報を取得することができる。図6で示された例の場合、クロック端子clk1とフリップフロップff1のペアと、クロック端子clk1とフリップフロップff2のペアが抽出される。ペアが1つでも抽出されると、設計回路中に再収斂パスが存在することを意味する。その場合、処理は次のステップS40へ進む。
ステップS20の結果に基づいて、再収斂パス検出ツール10は、設計回路に含まれる全てのペアの中から、再収斂パスが存在するペアを抽出することができる。これにより、再収斂パスに関連するクロック信号及びそのクロック信号に駆動されるフリップフロップの情報を取得することができる。図6で示された例の場合、クロック端子clk1とフリップフロップff1のペアと、クロック端子clk1とフリップフロップff2のペアが抽出される。ペアが1つでも抽出されると、設計回路中に再収斂パスが存在することを意味する。その場合、処理は次のステップS40へ進む。
(ステップS40)
ステップS30で抽出されたペアの各々に関して、クロック遅延の最大値td(max)と最小値td(min)とは互いに異なっている。最大値td(max)のクロック遅延を有するパスは、以下「最長パス」と参照される。一方、最小値td(min)のクロック遅延を有するパスは、以下「最短パス」と参照される。図3で示された設計回路の場合、クロックパスP1(max)が最長パスであり、クロックパスP1(min)が最短パスである。また、クロックパスP2(max)が最長パスであり、クロックパスP2(min)が最短パスである。ステップS40では、ステップS30で抽出されたペアの各々に関して、最長パスと最短パスのそれぞれの構成が抽出される。そのために、STAツール20が提供するトレース機能が利用される。
ステップS30で抽出されたペアの各々に関して、クロック遅延の最大値td(max)と最小値td(min)とは互いに異なっている。最大値td(max)のクロック遅延を有するパスは、以下「最長パス」と参照される。一方、最小値td(min)のクロック遅延を有するパスは、以下「最短パス」と参照される。図3で示された設計回路の場合、クロックパスP1(max)が最長パスであり、クロックパスP1(min)が最短パスである。また、クロックパスP2(max)が最長パスであり、クロックパスP2(min)が最短パスである。ステップS40では、ステップS30で抽出されたペアの各々に関して、最長パスと最短パスのそれぞれの構成が抽出される。そのために、STAツール20が提供するトレース機能が利用される。
具体的には、再収斂パス検出ツール10は、各ペアに関して、STAツール20に、最長パスと最短パスのそれぞれの構成を抽出させる。そのために、再収斂パス検出ツール10は、“report_timing”や“get_timing_paths”といったコマンドを、STAツール20に入力する。入力されたコマンドに応答して、STAツール20は、クロック遅延が最大値td(max)となるパスのトレースと、クロック遅延が最小値td(min)となるパスのトレースを実行する。これにより、STAツール20は、最長パスと最短パスのそれぞれの構成を抽出することができる。ステップS30で抽出された全てのペアに関して、同様の処理が実施される。
図7は、クロック端子clk1とフリップフロップff1のペアの場合に抽出される最長パスP1(max)の構成と最短パスP1(min)の構成を示している。図7に示されるように、最長パスP1(max)は、クロック端子clk1、バッファbuf2、バッファbuf3、マルチプレクサmux1、バッファbuf4、及びフリップフロップff1のクロック入力端子を含んでいる(図3参照)。一方、最短パスP1(min)は、クロック端子clk1、バッファbuf1、マルチプレクサmux1、バッファbuf4、及びフリップフロップff1のクロック入力端子を含んでいる(図3参照)。このように、最長パスの構成や最短パスの構成も、STAツール20の機能により容易に取得できる。
STAツール20は、抽出された最長パスと最短パスのそれぞれの構成を出力する。ステップS30で抽出された各ペアに関して最長パス構成と最短パス構成を示すデータが、パスレポートデータDPである。パスレポートデータDPは、STAツール20によって作成されてもよいし、STAツール20の出力に基づいて再収斂パス検出ツール10によって作成されてもよい。作成されたパスレポートデータDPは、記憶装置2に格納される。また、パスレポートデータDPは、出力装置5を通して出力されてもよい。例えば、パスレポートデータDPは、ディスプレイに表示される。ユーザーは、その表示を参照して、最長パス構成と最短パス構成を比較することができる。
(ステップS50)
次に、再収斂パス検出ツール10は、記憶装置2からパスレポートデータDPを読み出し、そのパスレポートデータDPを参照して「分岐ポイント」と「再収斂ポイント」を抽出する。具体的には、再収斂パス検出ツール10は、各ペアに関して、最長パスの構成と最短パスの構成の比較を行い、それら構成間の差異を抽出する。クロック端子からフリップフロップへ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスとの「分岐ポイント」と特定される。逆に、フリップフロップからクロック端子へ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスの「再収斂ポイント」と特定される。
次に、再収斂パス検出ツール10は、記憶装置2からパスレポートデータDPを読み出し、そのパスレポートデータDPを参照して「分岐ポイント」と「再収斂ポイント」を抽出する。具体的には、再収斂パス検出ツール10は、各ペアに関して、最長パスの構成と最短パスの構成の比較を行い、それら構成間の差異を抽出する。クロック端子からフリップフロップへ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスとの「分岐ポイント」と特定される。逆に、フリップフロップからクロック端子へ向かって、最初に構成が不一致となる手前の点が、最長パスと最短パスの「再収斂ポイント」と特定される。
図7で示された例の場合、最長パスP1(max)と最短パスP1(min)をクロック端子clk1からフリップフロップff1へ向かって構成を比較すると、最長パスP1
(max)中のバッファbuf2と最短パスP1(min)中のバッファbuf1とが最初に構成が不一致となっている。従って、分岐ポイントは不一致箇所の前段の「クロック端子clk1」であることが容易に分かる。一方、最長パスP1(max)と最短パスP1(min)をフリップフロップff1からクロック端子clk1へ向かって構成を比較すると、最長パスP1(max)中のバッファbuf3と、最短パスP1(min)中のバッファbuf1とが最初に不一致となっている。従って、再収斂ポイントは不一致箇所の後段の「マルチプレクサmux1」であることが容易に分かる。
(max)中のバッファbuf2と最短パスP1(min)中のバッファbuf1とが最初に構成が不一致となっている。従って、分岐ポイントは不一致箇所の前段の「クロック端子clk1」であることが容易に分かる。一方、最長パスP1(max)と最短パスP1(min)をフリップフロップff1からクロック端子clk1へ向かって構成を比較すると、最長パスP1(max)中のバッファbuf3と、最短パスP1(min)中のバッファbuf1とが最初に不一致となっている。従って、再収斂ポイントは不一致箇所の後段の「マルチプレクサmux1」であることが容易に分かる。
このように、本実施の形態によれば、クロックパス構成を解析することによって、クロックラインの分岐ポイント及び再収斂ポイントが抽出される。ここで、解析対象のクロックパスは、ステップS30で抽出された各ペアに関する最長パスと最短パスだけであることに留意されたい。すなわち、ステップS10〜S30においてまずは再収斂パスの有無が判定され、その後ステップS40〜S50において、再収斂パスが存在するペアに関して、最長パスと最短パスの2本だけが詳細に解析される。再収斂パスが存在すると判明した部分に対してだけ探索を行えばよく、設計回路中の全てのパスを探索する必要はない。従って、分岐ポイントと再収斂ポイントを高速且つ容易に特定することが可能である。
(ステップS60)
再収斂パス検出ツール10は、再収斂レポートデータDRを作成する。再収斂レポートデータDRは、再収斂パスの有無、検出された再収斂パス、分岐ポイント及び再収斂ポイント等を示す。図8は、再収斂レポートデータDRの一例を示している。クロック信号clk1の他にも異なるクロック信号があれば、それに関するレポートも含まれる。作成された再収斂レポートデータDRは、記憶装置2に格納され、また、出力装置5を通して出力される。例えば、再収斂レポートデータDRは、ディスプレイに表示される。
再収斂パス検出ツール10は、再収斂レポートデータDRを作成する。再収斂レポートデータDRは、再収斂パスの有無、検出された再収斂パス、分岐ポイント及び再収斂ポイント等を示す。図8は、再収斂レポートデータDRの一例を示している。クロック信号clk1の他にも異なるクロック信号があれば、それに関するレポートも含まれる。作成された再収斂レポートデータDRは、記憶装置2に格納され、また、出力装置5を通して出力される。例えば、再収斂レポートデータDRは、ディスプレイに表示される。
(ステップS70)
上述の通り、クロックライン上の再収斂パスは、回路の誤動作の原因となり得る。従って、検出された再収斂パスに対して対策が施される。これにより、誤動作が未然に防止される。対策の詳細は、次の第4節でまとめて説明される。
上述の通り、クロックライン上の再収斂パスは、回路の誤動作の原因となり得る。従って、検出された再収斂パスに対して対策が施される。これにより、誤動作が未然に防止される。対策の詳細は、次の第4節でまとめて説明される。
(ステップS80)
STAツール20は、通常通りの静的タイミング解析(STA)を実行する。例えば、設計回路がセットアップ制約やホールド制約を満たしているか否かが解析される。
STAツール20は、通常通りの静的タイミング解析(STA)を実行する。例えば、設計回路がセットアップ制約やホールド制約を満たしているか否かが解析される。
4.対策(ステップS70)
図9は、再収斂パスが検出された後の対策を示すフローチャートである。設計回路中に再収斂パスが検出された場合、例えば次のような対策が考えられる。
図9は、再収斂パスが検出された後の対策を示すフローチャートである。設計回路中に再収斂パスが検出された場合、例えば次のような対策が考えられる。
まず、再収斂パスが無くなるように、設計回路の構成を変更することが考えられる(ステップS71)。特に、グリッチ等により誤動作が発生する可能性が高い場合には、再収斂パスを無くすことが好ましい。例えば、設計者は、手修正で設計回路の構成を変更する。あるいは、論理合成時やレイアウト設計時における最適化処理を抑制してもよい。また、設計回路の変更後、上述のステップS10、S20が再度実施されてもよい(ステップS72)。これにより、本当に再収斂パスが無くなったかどうか確認することができる。もし、再収斂パスが依然として存在するようであれば、再度、設計回路が変更される。
但し、設計回路の変更は、設計TATの増大を招く。回路誤動作の恐れがなければ、必ずしも設計回路を変更する必要はない。
設計回路の変更が不要な場合であっても、STA(ステップS80)において効果的な他の対策が考えられる。その有用な対策を説明するために、まず、STAにおけるセットアップ解析を考える。図10は、既出の図3で示された回路構成に対するセットアップ解析の一例を説明するための図である。図11は、同じ回路構成に対するセットアップ解析の他の例を説明するための図である。図12は、図10と図11の場合におけるセットアップマージンを説明するための図である。
図12に示されるように、フリップフロップff1は、1つ目のクロック信号の立ち上がりに応答してデータをラッチする。そして、フリップフロップff1のデータ出力端子ff1/Qから出力されるデータが、次段のフリップフロップff2のデータ入力端子ff2/Dに入力される。フリップフロップff2は、2つ目のクロック信号の立ち上がりに応答して、データ入力端子ff2/Dに入力されているデータをラッチする。データ入力端子ff2/Dにおけるデータ遷移のタイミングから、クロック入力端子ff2/CLKにおけるクロック遷移のタイミングまでの時間が、フリップフロップff2でのセットアップマージンである。フリップフロップff2が安定してデータをラッチするためには、所定値以上のセットアップマージンが必要である。
図10は、再収斂パスを有する回路構成に対して何も対策が施されなかった場合の、STAツールによるSetup解析を示している。この場合、データ入力端子ff2/Dにおけるデータ遷移のタイミングは、遅いパスPD(late)に基づいて算出される。一方、クロック入力端子ff2/CLKにおけるクロック遷移のタイミングは早いパスPC(early)に基づいて算出される。このケースは、セットアップマージンが最小となるワーストケースに相当する。
しかしながら、実際の回路動作において、マルチプレクサmux1は、クロック選択信号clkselに応じて、入力信号のいずれか1つだけを選択的に出力する。すなわち、マルチプレクサmux1は、バッファbuf1経由の早いクロック信号か、バッファbuf2、buf3経由の遅いクロック信号のいずれか1つを出力する。例えば図11に示されるように、マルチプレクサmux1は、遅い方のクロック信号を出力する。この場合、クロック入力端子ff2/CLKにおけるクロック遷移のタイミングは、次に早いパスPC2(early)に依存することになる。
従って、図12に示されるように、図11の場合のセットアップマージンは、図10の場合のセットアップマージンよりも大きくなる。実際の回路動作を考慮すると、図11の場合のセットアップマージンを解析すれば十分である。逆に言えば、図10の場合のセットアップマージンは“悲観的”過ぎる。
上述の通り、セットアップマージンは所定値以上である必要がある。しかしながら、図10の場合の悲観的なセットアップマージンは、その所定値を満足する可能性が低い。セットアップマージンが所定値を満足しない場合、それを解消するために設計回路の変更が必要となる。しかしながら、設計回路の変更は設計TATの増大を招く。また、悲観的なセットアップマージンを所定値以上にするためには、冗長な回路を追加的に挿入する必要もでてくる。このことは、チップ面積の増大を招く。このように、再収斂パスに対して何も対策を施さないことは、回路設計において多大な問題を引き起こす。
そこで、本実施の形態によれば、STAにおいてクロックパスが1本に特定されるように、クロック制約が追加される(ステップS73)。具体的には、クロックラインの制御信号が所定の論理値に固定される。図3で示された例の場合、クロック選択信号clkselの論理値が、“0”か“1”のいずれかに固定される。このようなクロック選択信号clkselの論理固定の設定は、クロック制約ファイルCONに追加的に記述される。その結果、例えば図11で示されたように、STAにおいてマルチプレクサmux1は、遅い方のクロック信号を固定的に出力するようになる。言い換えれば、STAにおいて、一方の最短パスPC(early)が不活性化される。
ステップS73でクロック制約が追加された後、上述のステップS10、S20が再度実施されてもよい(ステップS74)。これにより、本当にクロックパスが1本に特定され、再収斂パスが検出されなくなるかを確認することができる。尚、このようにクロックラインの制御信号が固定値に設定された状態での解析は、「ケース解析」と呼ばれることもある。本実施の形態に係る再収斂パス検出処理は、このようなケース解析にも適用可能であると言える。
再収斂パスが検出されなくなることが確認されると、実際にSTAが実行され、セットアップ解析やホールド解析が行われる(ステップS80)。クロック制約ファイルCONにクロック制約が追加されているため、このSTAもケース解析となる。このとき、例えば図11で示されたように、データ遷移のタイミングとクロック遷移のタイミングは、実際の回路動作に適合するように算出される。従って、悲観的過ぎず、実動作の観点からも十分精度が高いセットアップマージンが算出される。結果として、設計回路の変更が必要となる確率が減り、設計TATの増大が防止される。また、冗長な回路を追加する必要も減り、チップ面積の増大が防止される。
5.効果
本実施の形態によれば、クロックライン上の再収斂パスを検出するために、まずは、クロック端子とフリップフロップのペアに関して、クロック遅延の最小値と最大値が算出される。そして、それら最小値と最大値が互いに異なる場合に、クロック端子とフリップフロップの間に再収斂パスが存在すると判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。クロック遅延の最小値と最大値が単純に比較されるだけなので、クロックライン上の再収斂パスを高速且つ容易に検出することが可能となる。
本実施の形態によれば、クロックライン上の再収斂パスを検出するために、まずは、クロック端子とフリップフロップのペアに関して、クロック遅延の最小値と最大値が算出される。そして、それら最小値と最大値が互いに異なる場合に、クロック端子とフリップフロップの間に再収斂パスが存在すると判定される。再収斂パスを検出するために、最初から詳細なパストレースを実施する必要はない。クロック遅延の最小値と最大値が単純に比較されるだけなので、クロックライン上の再収斂パスを高速且つ容易に検出することが可能となる。
そして、再収斂パスの存在が検出された後に、詳細な解析が行われ、分岐ポイント及び再収斂ポイントが特定される。このときの解析対象は、再収斂パスが存在するペアだけであり、更に、そのペアに関する最長パスと最短パスの2本だけである。すなわち、まずは再収斂パスの有無を判定することにより解析対象が絞り込まれ、その後、最長パスと最短パスだけが詳細に解析される。設計回路中の全てのパスを探索する必要はない。従って、分岐ポイントと再収斂ポイントを高速且つ容易に特定することが可能である。
1 再収斂パス検出システム
2 記憶装置
3 処理装置
4 入力装置
5 出力装置
10 再収斂パス検出ツール
20 STAツール
NET ネットリスト
SDF 遅延ファイル
CON クロック制約ファイル
LIB ライブラリ
DD 遅延レポートデータ
DP パスレポートデータ
DR 再収斂レポートデータ
PROG10 再収斂パス検出プログラム
PROG20 STAプログラム
2 記憶装置
3 処理装置
4 入力装置
5 出力装置
10 再収斂パス検出ツール
20 STAツール
NET ネットリスト
SDF 遅延ファイル
CON クロック制約ファイル
LIB ライブラリ
DD 遅延レポートデータ
DP パスレポートデータ
DR 再収斂レポートデータ
PROG10 再収斂パス検出プログラム
PROG20 STAプログラム
Claims (10)
- 設計回路に含まれるクロックライン上の再収斂パスを検出する方法であって、
(A)前記設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出することと、
(B)前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定することと
を含む
再収斂パス検出方法。 - 請求項1に記載の再収斂パス検出方法であって、
(C)前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出すること
を更に含む
再収斂パス検出方法。 - 請求項2に記載の再収斂パス検出方法であって、
(D)前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出すること
を更に含む
再収斂パス検出方法。 - 請求項1乃至3のいずれかに記載の再収斂パス検出方法であって、
(E)静的タイミング解析において前記クロック端子から前記レジスタへのクロックパスが1つに特定されるように、前記クロックラインの制御信号を所定の論理値に固定した状態で、前記(A)及び(B)ステップを再度実行すること
を更に含む
再収斂パス検出方法。 - 設計回路に含まれるクロックライン上の再収斂パスの検出処理をコンピュータに実行させる再収斂パス検出プログラムであって、
前記検出処理は、
(a)前記設計回路に含まれるクロック端子とレジスタのペアに関して、静的タイミング解析ツールに、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出させることと、
(b)前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定することと
を含む
再収斂パス検出プログラム。 - 請求項5に記載の再収斂パス検出プログラムであって、
前記検出処理は、
(c)前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記静的タイミング解析ツールに、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出させること
を更に含む
再収斂パス検出プログラム。 - 請求項6に記載の再収斂パス検出プログラムであって、
前記検出処理は、
(d)前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出すること
を更に含む
再収斂パス検出プログラム。 - 設計回路に含まれるクロックライン上の再収斂パスを検出するシステムであって、
前記設計回路に含まれるクロック端子とレジスタのペアに関して静的タイミング解析を実行し、前記クロック端子から前記レジスタへのクロック遅延の最小値及び最大値を算出する静的タイミング解析ツールと、
前記最小値と前記最大値とを比較することにより、前記クロック端子と前記レジスタとの間の再収斂パスの有無を判定する再収斂パス検出ツールと
を備える
再収斂パス検出システム。 - 請求項8に記載の再収斂パス検出システムであって、
前記クロック端子と前記レジスタとの間に再収斂パスが存在する場合、前記静的タイミング解析ツールは、前記最小値のクロック遅延を有する最短パスと前記最大値のクロック遅延を有する最長パスのそれぞれの構成を抽出する
再収斂パス検出システム。 - 請求項9に記載の再収斂パス検出システムであって、
前記再収斂パス検出ツールは、前記最短パスの構成と前記最長パスの構成とを比較することによって、前記最短パスと前記最長パスの分岐ポイント及び再収斂ポイントを抽出する
再収斂パス検出システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007300267A JP2009128977A (ja) | 2007-11-20 | 2007-11-20 | 再収斂パス検出方法、プログラム、及びシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007300267A JP2009128977A (ja) | 2007-11-20 | 2007-11-20 | 再収斂パス検出方法、プログラム、及びシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009128977A true JP2009128977A (ja) | 2009-06-11 |
Family
ID=40819877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007300267A Withdrawn JP2009128977A (ja) | 2007-11-20 | 2007-11-20 | 再収斂パス検出方法、プログラム、及びシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009128977A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019175179A (ja) * | 2018-03-28 | 2019-10-10 | 株式会社リコー | 設計支援装置、設計支援方法、プログラム及び記憶媒体 |
-
2007
- 2007-11-20 JP JP2007300267A patent/JP2009128977A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019175179A (ja) * | 2018-03-28 | 2019-10-10 | 株式会社リコー | 設計支援装置、設計支援方法、プログラム及び記憶媒体 |
JP7073844B2 (ja) | 2018-03-28 | 2022-05-24 | 株式会社リコー | 設計支援装置、設計支援方法、プログラム及び記憶媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8042010B2 (en) | Two-phase clock-stalling technique for error detection and error correction | |
JP2005122298A (ja) | タイミング解析装置、タイミング解析方法及びプログラム | |
US20110295536A1 (en) | Clock jitter analyzing method and apparatus | |
JP5012890B2 (ja) | 半導体集積回路の設計方法 | |
JP2006146601A (ja) | 半導体集積回路のレイアウト設計方法 | |
US8056036B2 (en) | Semiconductor integrated circuit and method of designing thereof based on TPI | |
US8117578B2 (en) | Static hazard detection device, static hazard detection method, and recording medium | |
JP4992468B2 (ja) | 検証方法、検証装置及びプログラム | |
US20100269003A1 (en) | Delay fault diagnosis program | |
JP2009128977A (ja) | 再収斂パス検出方法、プログラム、及びシステム | |
US20220327269A1 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
US20080069277A1 (en) | Method and apparatus for modeling signal delays in a metastability protection circuit | |
JP2006268165A (ja) | 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体 | |
JP4419633B2 (ja) | 論理回路設計システム、論理回路設計方法およびそのプログラム | |
JP4848298B2 (ja) | 集積回路の製造方法、クロックゲーティング回路挿入プログラムおよび設計支援装置 | |
US20120253712A1 (en) | Power consumption calculation method, power consumption calculation apparatus, and non-transitory computer-readble medium storing power consumption calculation program | |
JP6303509B2 (ja) | 回路検証方法、及び回路検証プログラム | |
US20090172620A1 (en) | Timing analyzing apparatus, timing analyzing method, and computer-readable storage medium on which timing analyzing program is recorded | |
JP5145167B2 (ja) | クロックドメインチェック方法及びクロックドメインチェック用プログラム並びに記録媒体 | |
JP2002259488A (ja) | クロックスキュー検証方法 | |
JP6919387B2 (ja) | 障害抑止装置 | |
JP2006004228A (ja) | スラック値設定方法,スラック値設定装置,スラック値設定プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体 | |
US8782579B2 (en) | Connection verification method, recording medium thereof, and connection verification apparatus | |
JP2022143696A (ja) | レイアウト装置、レイアウト方法およびプログラム | |
JP2021092889A (ja) | 検証支援装置、検証支援方法および検証支援プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20110201 |