(57)【要約】【課題】ＣＴＳ実行で形成したクロックツリーから位相を調整したクロックをフリップフロップへ供給することができる半導体集積回路のクロック分配方法を提供する。【解決手段】ステップＳ５で生成したタイミング情報データに基づき、ステップＳ６でタイミングエラー発生フリップフロップを抽出し、ステップＳ７でこのフリップフロップのタイミングエラーを除くためにクロックの位相を早めるようクロック位相を補正すべきフリップフロップを抽出し、ステップＳ８で、ステップＳ４で作成のクロック位相データベースに基づいてクロックツリーの途中段のクロックバッファを選出し、ステップＳ９でこの選出したクロックバッファが位相補正すべきフリップフロップのクロック供給元となるようにクロックバッファを変更した上で半導体集積回路へクロックを分配する。【選択図】  図１
2004185466.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路を構成するフリップフロップからなる複数の論理セルを含む論理セル群を配置するセル配置工程と、
複数のクロックバッファからなるクロックツリーを生成するクロックツリーシンセシス工程と、
前記論理セル間の信号配線、および前記複数のフリップフロップのクロック入力端子と前記クロックツリーの末端に配置されたクロックバッファとの間のクロック配線を行う配線工程と、
前記クロックツリーを構成する総てのクロックバッファの出力遅延時間を算出し、その算出値をそれぞれのクロックバッファのクロック位相として記録したクロックバッファ位相データベースを生成するクロックバッファ位相データベース生成工程と、
前記複数のフリップフロップのセットアップ時間およびホールド時間を算出し、それぞれの規定値との差分を前記複数のフリップフロップごとにタイミング情報として出力するタイミング情報生成工程と、
前記タイミング情報を検査し、セットアップ時間の規定値に対するエラーあるいはホールド時間の規定値に対するエラーの発生しているフリップフロップには前記タイミング情報にタイミングエラー発生情報を付加してタイミングエラー発生フリップフロップとして抽出するタイミングエラー発生フリップフロップ抽出工程と、
前記タイミングエラー発生フリップフロップのタイミングエラーを除くためにクロックの位相を補正すべきフリップフロップを位相補正対象フリップフロップとして抽出する位相補正対象フリップフロップ抽出工程と、
前記クロックバッファ位相データベースの情報に基づき、前記位相補正対象フリップフロップの位相を補正するためのクロックバッファを前記クロックツリーを構成するクロックバッファの中から選出するクロックバッファ選出工程と、
前記クロックバッファ選出工程で選出したクロックバッファを前記位相補正対象フリップフロップのクロック供給バッファとするように前記位相補正対象フリップフロップのクロック供給元を変更するフリップフロップのクロック供給元変更工程とを
備えることを特徴とする半導体集積回路のクロック分配方法。
【請求項２】
前記タイミング情報生成工程は、前記論理セル相互の接続情報および前記論理セルの遅延時間情報に基づくスタティックタイミングアナリシスの実行を含むことを特徴とする請求項１に記載の半導体集積回路のクロック分配方法。
【請求項３】
前記タイミングエラー発生フリップフロップ抽出工程における前記タイミングエラー発生情報は、タイミングエラーがセットアップ時間規定に対するエラーであるかホールド時間規定に対するエラーであるかを区別して表記することを特徴とする請求項１に記載の半導体集積回路のクロック分配方法。
【請求項４】
前記位相補正対象フリップフロップ抽出工程におけるクロックの位相補正は、当初の位相より位相を早めることを特徴とする請求項１に記載の半導体集積回路のクロック分配方法。
【請求項５】
前記位相補正対象フリップフロップ抽出工程は、クロックの位相補正が影響を及ぼすフリップフロップに対してはクロックの位相補正量に応じて前記タイミング情報を書き換え、この書き換えにより新たなタイミングエラーが発生した場合には、さらにクロックの位相補正および前記タイミング情報の書き換えを行うことを特徴とする請求項１に記載の半導体集積回路のクロック分配方法。
【請求項６】
前記クロックバッファ選出工程で選出されたバッファは、クロックツリーの末端よりも前方段に配置されたバッファであることを特徴とする請求項１に記載の半導体集積回路のクロック分配方法。
【請求項７】
多段構成の複数のバッファをツリー状に配置してクロックツリーを形成し、ツリー末端のバッファおよびツリー途中段のバッファから複数のフリップフロップへそれぞれクロックを供給するクロック分配回路を有することを特徴とする半導体集積回路。
【請求項８】
前記クロックツリーは、フリップフリップの入力端子におけるクロックスキューが所定の値以下となるようツリー末端のバッファからクロックを供給するようにバッファが配置されたことを特徴とする請求項７に記載の半導体集積回路。
【請求項９】
前記ツリーの途中段のバッファからクロックを供給されたフリップフロップのクロックの位相は、前記ツリー末端のバッファからクロックを供給されたフリップフロップのクロックの位相よりも早いことを特徴とする請求項７に記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のクロック分配方法および半導体集積回路に関する。
【０００２】
【従来の技術】
論理回路の設計においては、回路動作のタイミング設計を容易にするため、回路内の総てのフリップフロップを同一のクロックに同期させて信号の転送を行う同期式設計が多く採用されている。したがって、このような同期式設計の論理回路を半導体集積回路で実現する場合、半導体集積回路内の総てのフリップフロップに同一時刻でクロックが供給される必要がある。
【０００３】
しかしながら、単一のクロックドライバによるクロックの供給では、クロックドライバから各フリップフロップへのクロック配線の長さの違いによって、それぞれのフリップフロップへのクロックの到達時間に差が生じる。半導体製造の微細化の進展に伴う配線幅の縮小による配線抵抗の増大により、このような配線長の違いによるクロック到達時間の差は顕著になり、半導体集積回路の配線設計において無視できなくなってきている。
【０００４】
そこで、クロックドライバから各フリップフロップのクロック入力端子までのクロック到達時間がほぼ等しくなるように、バッファツリーを構成してクロック配線を行うことが一般的に行われている。この手法をクロックツリーシンセシス（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ：ＣＴＳ）と呼んでいる。
【０００５】
ＣＴＳの実行により、各フリップフロップのクロックスキュー（クロックの到達時間の差すなわち位相差）は一定の範囲内に収まるようになる。
【０００６】
このＣＴＳを含む半導体集積回路のレイアウトは計算機により自動的に行われるが、概略次のような工程で進められる。▲１▼フリップフロップも含めて総ての論理セルを配置する工程、▲２▼ＣＴＳによるクロック用バッファツリーの配置およびフリップフロップへのクロック配線を行う工程、▲３▼クロック以外の配線を行う工程。
【０００７】
上述のように配線工程が２工程に分かれて行われるため、各フリップフロップにおいては、クロックスキューは要求値を満足していても、フリップフロップ間の信号伝播遅延に伴うセットアップタイムまたはホールドタイムが要求値を満足しない場合が生じる。
【０００８】
そこで、レイアウト工程終了後、各フリップフロップにセットアップタイムまたはホールドタイムの不足、即ちタイミングエラーが生じていないかを検証するためのタイミング検証が必要になる。
【０００９】
タイミング検証の結果、いずれかのフリップフロップにタイミングエラーが生じていた場合には、これをなくすためのタイミング修正が必要になる。このタイミングを修正する方法の一つとして、タイミングエラーの発生したフリップフロップのクロックの位相を修正する方法がある（例えば特許文献１参照。）。
【００１０】
この方法は、タイミングエラーの発生したフリップフロップとその前段のフリップフロップの間に意図的にクロックスキューを発生させ、そのクロックスキューを利用してタイミングエラーを解消するものである。
【００１１】
一般にＣＴＳにおいては、クロックツリーを構成する各バッファに負荷容量を均等に分配して各バッファの遅延を均等にし、これによってクロックツリーの末端のバッファに接続されるフリップフロップのクロックスキューが極力小さく（理想的には０に）なるように処理される。
【００１２】
したがって、上述した意図的にクロックスキューを発生させてフリップフロップのクロックの位相を変化させようとする方法では、対象のフリップフロップの入力端子にダミーの容量を付加し、ＣＴＳで見かけ上はクロックスキューが０となるようなクロックツリーを発生させ、実際には対象のフリップフロップにクロックスキューを発生させるという方法を取っている。
【００１３】
【特許文献１】
特開２００１−１７５６９９号公報（第４−１０頁、図１および図３）
【００１４】
【発明が解決しようとする課題】
上述のクロックスキューを発生させる方法では、一度ＣＴＳを実行してクロックツリーを発生させ、各フリップフロップのタイミング検証を行ってタイミングエラー発生のフリップフロップを検出し、該当のフリップフロップのクロック入力端子にダミー容量を付加し、２回目のＣＴＳを実行するという処理を行う。
【００１５】
このとき、２回目のＣＴＳの実行前に最初のＣＴＳで発生させたクロックバッファとクロック配線を削除し、２回目のＣＴＳの実行で改めてクロックバッファの配置とクロック配線を行う。
【００１６】
したがって、２回目のＣＴＳ実行後のクロックバッファの配置とクロック配線は、１回目のＣＴＳの結果とは異なったものとなる。そのため、１回目のＣＴＳの結果ではタイミングエラーの発生しなかったフリップフロップに新たなタイミングエラーが発生する可能性がある。その場合、新たに問題の発生したフリップフロップに上述したようなダミー容量の付加を行い、さらにＣＴＳを実行する必要が生じる。
【００１７】
このように、上記の方法ではＣＴＳの実行の度に新たなクロックバッファとクロック配線が発生されるため、その都度新たなタイミングエラーが生じる可能性があるという問題がある。また、ＣＴＳ実行の度に総てのフリップフロップのタイミング検証を行う必要があり、その実行に多大な時間を要するという問題も発生する。
【００１８】
そこで本発明の目的は、少ないＣＴＳの実行回数で、クロックの位相を調整してフリップフロップのタイミングエラーを防止するクロックを供給することのできる半導体集積回路のクロック分配方法および半導体集積回路を提供することにある。
【００１９】
【課題を解決するための手段】
上記目的を達成するために、本発明の半導体集積回路のクロック分配方法は、半導体集積回路を構成するフリップフロップからなる複数の論理セルを含む論理セル群を配置するセル配置工程と、複数のクロックバッファからなるクロックツリーを生成するクロックツリーシンセシス工程と、前記論理セル間の信号配線、および前記複数のフリップフロップのクロック入力端子と前記クロックツリーの末端に配置されたクロックバッファとの間のクロック配線を行う配線工程と、前記クロックツリーを構成する総てのクロックバッファの出力遅延時間を算出し、その算出値をそれぞれのクロックバッファのクロック位相として記録したクロックバッファ位相データベースを生成するクロックバッファ位相データベース生成工程と、前記複数のフリップフロップのセットアップ時間及びホールド時間を算出し、それぞれの規定値との差分を前記複数のフリップフロップごとにタイミング情報として出力するタイミング情報生成工程と、前記タイミング情報を検査し、セットアップ時間の規定値に対するエラーあるいはホールド時間の規定値に対するエラーの発生しているフリップフロップには前記タイミング情報にタイミングエラー発生情報を付加してタイミングエラー発生フリップフロップとして抽出するタイミングエラー発生フリップフロップ抽出工程と、前記タイミングエラー発生フリップフロップのタイミングエラーを除くためにクロックの位相を補正すべきフリップフロップを位相補正対象フリップフロップとして抽出する位相補正対象フリップフロップ抽出工程と、前記クロックバッファ位相データベースの情報に基づき、前記位相補正対象フリップフロップの位相を補正するのに適したクロック位相を有するクロックバッファを前記クロックツリーを構成するクロックバッファの中から選出するクロックバッファ選出工程と、前記クロックバッファ選出工程で選出したクロックバッファを前記位相補正対象フリップフロップのクロック供給バッファとするように前記位相補正対象フリップフロップのクロック供給元を変更するフリップフロップのクロック供給元変更工程とを備えることを特徴とする。
【００２０】
このような本発明の半導体集積回路のクロック分配方法によれば、少ないＣＴＳの実行回数で、タイミングエラーの発生しない位相を有するクロックをフリップフロップに供給することができる。
【００２１】
また、本発明の半導体集積回路は、多段構成の複数のバッファをツリー状に配置してクロックツリーを形成し、ツリー末端のバッファおよびツリー途中段のバッファから複数のフリップフロップへそれぞれクロックを供給するクロック分配回路を有することを特徴とする。
【００２２】
このような本発明の半導体集積回路によれば、フリップフロップごとにタイミングエラーの発生しない位相を有するクロックを選んで分配することができる。
【００２３】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００２４】
（実施の形態）
図１は本発明の実施の形態に係る半導体集積回路のクロック分配方法を示すフロー図であり、図２はクロックツリーおよびクロック配線を模式的に示す回路図である。
【００２５】
図１の最初のステップＳ１において、図２に示すフリップフロップＦ０１、Ｆ０２、・・・、多段論理セル３などを含む複数の論理セル群の配置を行った後、ステップＳ２でＣＴＳを実行し、ツリー状にクロックバッファ群を配置したクロックツリー２を形成する。その後、ステップＳ３において、フリップフロップＦ０１、Ｆ０２、・・・、多段論理セル３などの論理セル間の配線およびクロック配線を行う。このとき、クロックツリー２の末端のクロックバッファＣＫｎ１、ＣＫｎ２、・・・と各フリップフロップＦ０１、Ｆ０２、・・・のクロック入力端子との間にクロック配線がなされる。
【００２６】
クロックを発生させるクロック源１に接続されたクロックツリー２は、１段目バッファＣＫ１１、２段目バッファＣＫ２１、ＣＫ２２、３段目バッファＣＫ３１、ＣＫ３２、ＣＫ３３、ＣＫ３４と段を追って分岐の数を増やしながらバッファを配置し、最終ｎ段目のバッファ群ＣＫｎ１、ＣＫｎ２、・・・からフリップフロップＦ０１、Ｆ０２、・・・へクロックが配線される。
【００２７】
このとき、図２に模式的に示すように、フリップフロップへのクロック配線長にはバラツキが生じる。
【００２８】
また、フリップフロップＦ０１とフリップフロップＦ０２のようにフリップフロップ間に多段論理セル３が接続される場合もあれば、フリップフロップＦ０３とフリップフロップＦ０４のようにフリップフロップが直接接続される場合もある。
【００２９】
図１に戻って、ステップＳ４でクロック位相データベースが生成される。ここで、クロック位相とは、クロックツリー２を構成する各クロックバッファのクロック源１からのクロック信号の伝播遅延時間を指し、クロック位相データベースとは、クロックツリー２を構成する各クロックバッファのクロック位相を一覧表形式としたものである。
【００３０】
図３（ａ）は、このクロック位相データベースの例を示したものである。また、図３（ｂ）は、クロック位相の分布を模式的に図示したものである。一般的に、クロック位相はクロックツリー２内での段数が多いほど大きくなり、また各段のバッファ群はあるバラツキをもって分布する形となる。
【００３１】
再び図１に戻って、ステップＳ５で各フリップフロップＦ０１、Ｆ０２、・・・のタイミング情報を生成する。ここでタイミング情報とは、スタティックタイミングアナリシス（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ：静的タイミング解析）により得られたフリップフロップのクロック入力に対するデータ入力のセットアップ時間およびホールド時間からそれぞれの規定値を差し引いた値を指す。ここで規定値とは、フリップフロップが正常な動作をするために最小限必要な動作余裕時間のことである。
【００３２】
次にステップＳ６で、このタイミング情報を検査し、セットアップ時間あるいはホールド時間がそれぞれの規定値に対して不足しているフリップフロップをタイミングエラー発生フリップフロップとして抽出する。
【００３３】
このとき、タイミングエラー発生フリップフロップのタイミング情報には、タイミングエラーがセットアップ時間不足なのかホールド時間不足なのかを識別する違反フラグを付加する。
【００３４】
次にステップＳ７で、前記タイミングエラーを除くためにクロックの位相補正をすべきフリップフロップを抽出する。ここで、位相補正はクロックの位相を早めることにより行うものとする。その理由は、先に図３（ｂ）のクロック位相分布図に見たようにクロックツリー２の途中段には最終段より位相の早いクロックバッファが多数分布しており、これを利用することにより新たなバッファの追加やＣＴＳの再実行等を行うことなくクロックの位相を変えることができるからである。
【００３５】
クロックの補正を位相を早めることで行うため、ホールド時間不足のフリップフロップはそのまま位相補正対象フリップフロップとなるが、セットアップ時間不足のフリップフロップについては、このフリップフロップにデータを伝達する前段のフリップフロップが位相補正対象フリップフロップとなる。
【００３６】
また、上記位相補正対象フリップフリップに対するクロックの位相補正を行うと、その影響を受けて新たにタイミングエラーの起きるフリップフロップが発生する可能性があるが、その場合、このフリップフロップを新たなタイミングエラー発生フリップフロップとして上記ステップＳ７の工程を新たに実行する。
【００３７】
この位相補正対象フリップフロップ抽出の方法については、後で詳しく説明する。
【００３８】
次にステップＳ８で、前記クロック位相データベースを参照して、上記位相補正に適した位相を持つクロックバッファをクロックツリー２の途中段のクロックバッファの中から選出する。
【００３９】
最後にステップＳ９で、実際にクロックバッファの接続先を変更し、前記位相補正対象フリップフロップにステップ８で選出したクロックバッファからクロックが供給されるようにしてクロックの分配を終了する。
【００４０】
ここで、クロックスキューがタイミングエラーを引き起こす典型的な例を図２の模式的回路図と図４の波形図を用いて説明する。
【００４１】
図２のフリップフロップＦ０１とフリップフロップＦ０２の間に多段論理セル３があり、これがクリティカルパスとなっているとする。このとき、フリップフロップＦ０１のクロックの立ち上りがクロックスキューのためフリップフロップＦ０２のクロックの立ち上りより遅れていると、フリップフロップＦ０１のクロックの立ち上りＡから多段論理セル３を遅延時間ｄ１で通過したフリップフロップＦ０２の入力信号は、フリップフロップＦ０２のクロックの立ち上りＢにおいてセットアップ時間不足（ｓｅ）を起こす。
【００４２】
一方、図２のフリップフロップＦ０３とフリップフロップＦ０４は直結されており、フリップフロップＦ０３の出力は僅かな遅れ時間ｄ２でフリップフロップＦ０４に伝達されているとする。このとき、フリップフロップＦ０４のクロックの立ち上りがクロックスキューのためフリップフロップＦ０３のクロックの立ち上りより早いと、フリップフロップＦ０３のクロックの立ち上りＣで出力された信号はいわゆる「データの突き抜け現象」を起こし、本来の動作より１クロック早いクロックＤの立ち上りでフリップフロップＦ０４にデータが取り込まれる。このとき、フリップフロップＦ０４に見かけ上のホールド時間不足（ｈｅ）が生じることがある。
【００４３】
このようなタイミングエラーを除くためには、セットアップ時間不足の場合には、前段のフリップフロップ（図２の例ではＦ０１）のクロックの位相を早めればよく、ホールド時間不足の場合には、後段のフリップフロップ（図２の例ではＦ０４）のクロックの位相を早めればよい。
【００４４】
次に、本実施の形態で用いるタイミング情報のデータ形式の例を説明する。
【００４５】
図５（ａ）は、図６の回路例に対するタイミング情報のデータ例であり、Ｆ／Ｆ名、前段Ｆ／Ｆ名、タイミングマージン、違反フラグおよび移相量の５つのデータが表形式に記載されている。このうち、Ｆ／Ｆ名、前段Ｆ／Ｆ名、タイミングマージンの３つのデータは、「タイミング情報生成」（図１のステップＳ５）より生成される。また、違反フラグおよび移相量の欄は図１のステップＳ６およびＳ７の処理で使用される。
【００４６】
Ｆ／Ｆ名はタイミングチェックがなされたフリップフロップの名前を示し、前段Ｆ／Ｆ名欄には、そのフリップフロップに組み合わせ回路を介して接続される前段のフリップフロップの名前が記される。したがって、図６のｎａｍｅ５のフリップのように前段の２個のフリップフロップからの接続がある場合には、Ｆ／Ｆ名ｎａｍｅ５の前段Ｆ／Ｆ名欄には、この２個のフリップフロップの名前ｎａｍｅ３、ｎａｍｅ４が２行に亘って記載される。
【００４７】
タイミングマージンは、スタティックタイミングアナリシスの結果得られた、各フリップフロップのセットアップ時間およびホールド時間のそれぞれの規定値に対する余裕（タイミングマージン）を記したものである。このタイミングマージンは前段のフリップフロップからの信号伝達経路によって異なるため、前段Ｆ／Ｆ名ごとにそのデータを記載する。
【００４８】
このタイミングマージンの記載の形式は（セットアップ時間余裕、ホールド時間余裕）とするが、セットアップ時間余裕についてはセットアップ時間に余裕がある場合に負号（−）を付けて表わし、セットアップ時間が不足するときに正号（＋）付けて表わすものとする。一方、ホールド時間に関しては、不足するときに負号（−）を付けて表わすものとする。
【００４９】
したがって、図５（ａ）では、Ｆ／Ｆ名ｎａｍｅ９における（＋ｓ８，ｈ８）は、セットアップ時間が時間ｓ８不足していることを表わし、Ｆ／Ｆ名ｎａｍｅ５における（−ｓ２，−ｈ２）は、ホールド時間が時間ｈ２不足していることを表わす。
【００５０】
図５（ｂ）は、図５（ａ）のタイミング情報のデータに対して、「タイミングエラー発生フリップフロップの抽出」（図１のステップＳ６）を行った結果を示す例である。タイミングエラーが検出されたタイミングマージンデータに対して、違反フラグ（ｓｅｔｕｐあるいはｈｏｌｄ）を違反フラグ欄に記入している。
【００５１】
次に、このタイミング情報を記したデータを操作することにより、タイミングエラーを除くためにクロックの位相を早めるべきフリップフロップを抽出する方法について説明する。
【００５２】
図７は、タイミングエラーを除くためにクロックの位相を早めるべきフリップフロップを抽出するために行うタイミング情報を記したデータの操作方法を示すフロー図であり、図１のステップＳ７の「位相補正対象フリップフロップ抽出」の具体的な方法である。
【００５３】
図７のフローにおける作業は、図１のステップＳ６のタイミングエラー発生フリップフロップ抽出により違反フラグが付加されたタイミング情報データ４に対するデータの書き換え操作によって進められ、作業が終了すると、クロックの位相を早めるべきフリップフロップの名前と位相をどれだけ早めればよいか（移相量）のデータが記載された位相補正対象フリップフロップ抽出データ５が得られる。
【００５４】
以下、図７のフローをタイミング情報データ４のデータ形式の例を図５（ｂ）に取りながら説明する。
【００５５】
図５のステップＳ１１では、タイミング情報データ４に記載されている違反フラグがｈｏｌｄであるのか、ｓｅｔｕｐであるのか、その種別をチェックする。その種別によって以降の作業フローが分かれる。
【００５６】
違反フラグがｈｏｌｄの場合、ステップＳ１２に進む。ステップＳ１２で、ｈｏｌｄと記載されているタイミングマージンデータの移相量欄にホールド不足時間（以下、この時間をｈｅと表わす。）を記す。この移相量は、ホールド時間不足が発生しているフリップフロップのクロックの位相をｈｅだけ早めることを意味する。
【００５７】
次に、この移相量に合わせて該当フリップフロップのクロックの位相を早めたとすると、その位相を早めたフリップフロップにおける総ての前段Ｆ／Ｆ名フリップフロップに対するタイミングマージンが変化するので、それを反映するようタイミング情報データ４を書き換える必要がある。
【００５８】
そのため、ステップＳ１３で、移相量欄にｈｅと記したフリップフロップのタイミングマージンデータの総ての値に移相量ｈｅを加算する。この移相量ｈｅの加算は、ホールド時間に対しては余裕がｈｅだけ増加し、セットアップ時間に対しては余裕がｈｅだけ減少することを意味する。
【００５９】
また、フリップフロップのクロックの位相を早めると、その出力が接続される後段のフリップフロップ（これを後段Ｆ／Ｆと称す。）のタイミングマージンにも影響を及ぼす。すなわち、後段Ｆ／Ｆにおいては、セットアップ時間に対する余裕の増加とホールド時間に対する余裕の減少という影響が現れる。
【００６０】
そこで、この影響をタイミングマージンデータに反映させるため、ステップＳ１４で、タイミング情報データ４の後段Ｆ／Ｆのタイミングマージンデータの総ての値に−ｈｅを加算する。このとき、後段Ｆ／Ｆを探し出す必要があるが、その方法としては、違反フラグｈｏｌｄが記載されているフリップフロップの名前が前段Ｆ／Ｆ名の欄に記載されているフリップフロップをタイミング情報データ４上で探索するという方法を取ればよい。
【００６１】
一方、ステップＳ１１で違反フラグがｓｅｔｕｐと識別された場合には、ステップＳ１５に進む。
【００６２】
ステップＳ１５で、ｓｅｔｕｐと記載されているタイミングマージンデータの移相量欄にセットアップ不足時間（以下、この時間をｓｅと表わす。）に負号を付けて（−ｓｅ）と記す。移相量は正の値が移相を早めることを意味するので、負号は位相を遅らせることを意味する。しかし、実際のタイミングエラーを除く処理としてはクロックの位相を遅らせることはしないので、仮想の処理を表わす意味で括弧を付けて記載する。
【００６３】
セットアップ時間不足に対する実際のタイミングエラーを除く処理は、セットアップ時間不足を起こしているフリップフロップにデータを伝達している前段Ｆ／Ｆのクロックの位相を早めることで行われる。
【００６４】
そこで、ステップＳ１６で、セットアップ時間不足を起こしているフリップフロップの前段Ｆ／Ｆ名欄に名前が記載されているフリップフロップをタイミング情報データ４上で探し、そのフリップフロップの移相量欄にｓｅと記す。
【００６５】
次いで、ステップＳ１７で、この移相量欄にｓｅと記したフリップフロップの総てのタイミングマージンデータにｓｅを加算する。
【００６６】
また、前段Ｆ／Ｆの位相を早めることで、セットアップ時間不足を起こしているフリップフロップのタイミングエラーは除かれるが、そのほかにも、その出力が伝達される総てのフリップフロップのタイミングマージンに影響を及ぼす。
【００６７】
そこで、この影響をタイミングマージンデータに反映させるため、ステップＳ１８で、移相該当のフリップフロップ名が前段Ｆ／Ｆ名欄に記載されているフリップフロップ（後段Ｆ／Ｆ）をタイミング情報データ４上で探し、後段Ｆ／Ｆのタイミングマージンデータ総てに−ｓｅを加算する。
【００６８】
上記フローの処理を行って、タイミング情報データ４のタイミングマージンデータを書き換えた結果がタイミング情報修正データ４１として得られる。
【００６９】
図８に、図５（ｂ）の例に対するタイミング情報修正データ４１の例を示す。以下、図８における処理の進め方を説明する。
【００７０】
まず、ｈｏｌｄフラグが記されているＦ／Ｆ名ｎａｍｅ５の移相量欄にｈ２と記す（ステップＳ１２）。次に、移相量ｈ２を記入したフリップフロップｎａｍｅ５の２つのタイミングマージンデータを、従来の（−ｓ２，−ｈ２）、（−ｓ３，ｈ３）から（−ｓ２＋ｈ２，０）、（−ｓ３＋ｈ２，ｈ３＋ｈ２）に書き換える（ステップＳ１３）。次に、前段Ｆ／Ｆ名にｎａｍｅ５が記載されているフリップフロップを探し，該当のフリップフロップｎａｍｅ６のタイミングマージンデータを（−ｓ５，−ｈ５）から（−ｓ５−ｈ２，ｈ５−ｈ２）に書き換える（ステップＳ１４）。
【００７１】
一方、ｓｅｔｕｐフラグが記載されているフリップフロップに対しては、Ｆ／Ｆ名ｎａｍｅ９の移相量欄に（−ｓ８）と記す（ステップＳ１５）。次に、セットアップ時間不足を発生させる前段Ｆ／Ｆであるｎａｍｅ８のフリップフロップを探し、そのフリップフロップの移相量欄にｓ８と記す（ステップＳ１６）。次に、そのＦ／Ｆ名ｎａｍｅ８のタイミングマージンデータを（−ｓ７，ｈ７）から（−ｓ７＋ｓ８，ｈ７＋ｓ８）に書き換える（ステップＳ１７）。
【００７２】
最後に，前段Ｆ／Ｆ名欄にｎａｍｅ８が記載されているフリップフロップを探し、そのタイミングマージンデータに−ｓ８を加算する。このフリップフロップには当然ｓｅｔｕｐフラグが記されているフリップフロップｎａｍｅ９が含まれるが、そのほかにフリップフロップｎａｍｅ１０が該当する。この操作により、フリップフロップｎａｍｅ９のタイミングデータは（＋ｓ８，ｈ８）から（０，ｈ８−ｓ８）に書き換わり、フリップフロップｎａｍｅ９のタイミングデータは（−ｓ９，ｈ９）から（−ｓ９−ｓ８，ｈ９−ｓ８）に書き換わる（ステップＳ１８）。
【００７３】
図９の波形図は、図８のタイミング情報データ上の操作を視覚的にわかりやすく説明したものである。
【００７４】
図９（ａ）は、フリップフロップｎａｍｅ５で発生のホールド時間不足を除く方法を解説するものである。いま、Ｆ／Ｆｎａｍｅ３のクロックに同期して出力され、Ｆ／Ｆｎａｍｅ５の入力に伝達されたＦ／Ｆｎａｍｅ５入力がＦ／Ｆｎａｍｅ５クロックに対して時間ｈ２のホールド時間不足を起こしているものとする。
【００７５】
このホールド時間不足を除くためには、Ｆ／Ｆｎａｍｅ５クロックの位相をｈ２だけ早めればよい。そうすると、Ｆ／Ｆｎａｍｅ５入力のＦ／Ｆｎａｍｅ５クロックに対するホールド時間がｈ２だけ増加し、ホールド時間不足が除かれる。
【００７６】
ただし、Ｆ／Ｆｎａｍｅ５クロックを早めることはＦ／Ｆｎａｍｅ５入力のセットアップ時間に関してはそれを減少させることになる。特に複数のフリップフロップからの出力がＦ／Ｆｎａｍｅ５も入力に伝達されているときは、それぞれの伝達経路ごとにセットアップ時間の減少を考慮する必要がある。図９（ａ）の例では、Ｆ／Ｆｎａｍｅ４からもＦ／Ｆｎａｍｅ５に信号が伝達されており、この伝達経路におけるＦ／Ｆｎａｍｅ５入力のＦ／Ｆｎａｍｅ５クロックに対するセットアップ時間が減少する。
【００７７】
また、Ｆ／Ｆｎａｍｅ５クロックを早めることはＦ／Ｆｎａｍｅ５の出力が伝達される後段のフリップフロップの入力のホールド時間を減少させる。図９（ａ）の例では、Ｆ／Ｆｎａｍｅ５の出力が伝達されるＦ／Ｆｎａｍｅ６入力のＦ／Ｆｎａｍｅ６クロックに対するホールド時間が減少する。
【００７８】
したがって、これらのタイミングマージンの変動をタイミング情報修正データ４１に反映させている。
【００７９】
図９（ｂ）は、フリップフロップｎａｍｅ９で発生のセットアップ時間不足を除く方法を解説するものである。いま、Ｆ／Ｆｎａｍｅ８のクロックに同期して出力され、Ｆ／Ｆｎａｍｅ９の入力に伝達されたＦ／Ｆｎａｍｅ９入力がＦ／Ｆｎａｍｅ９クロックに対して時間ｓ８のセットアップ時間不足を起こしているものとする。
【００８０】
このセットアップ時間不足を除くためには、セットアップ時間不足を起こしているＦ／Ｆｎａｍｅ９の前段のＦ／Ｆｎａｍｅ８クロックの位相をｓ８だけ早めればよい。そうすると、Ｆ／Ｆｎａｍｅ８の出力のＦ／Ｆｎａｍｅ９への伝達時間がｓ８だけ早まり，Ｆ／Ｆｎａｍｅ９入力のＦ／Ｆｎａｍｅ９クロックに対するセットアップ時間がｓ８増加してセットアップ時間不足が除かれる。
【００８１】
ただし、この場合もＦ／Ｆｎａｍｅ８クロックの位相を早めることでＦ／Ｆｎａｍｅ８入力のセットアップ時間が減少したり、Ｆ／Ｆｎａｍｅ８の後段のＦ／Ｆｎａｍｅ１０入力のＦ／Ｆｎａｍｅ１０クロックに対するホールド時間が減少するという他のフリップフロップのタイミングマージンに対する影響が現れる。したがって、これらのタイミングマージンの変動もタイミング情報修正データ４１に反映させている。
【００８２】
図７のフローの説明に戻る。ステップＳ１３からステップＳ１５までの作業あるいはステップＳ１６からステップＳ１９までの作業が終わると、タイミング情報修正データ４１が作成される。しかし、上述したようにクロックの移相によりタイミングマージンが減少するケースがあり、これが新たなタイミングエラーを発生させる可能性がある。
【００８３】
そこで、図７のステップＳ１９で、タイミング情報修正データ４１に新たなタイミングエラーが発生していないかをチェックする。もし、このチェックで新たなタイミングエラーの発生が見つかった場合（Ｙｅｓ）、違反フラグを記入（ステップＳ２０）して、ステップＳ１１に戻り、以降のステップを繰り返す。
【００８４】
ステップＳ１９で新たなタイミングエラーの発生が見つからなかった場合（Ｎｏ）は、ステップＳ２１に進み、移相量欄に数値の記入されたフリップフロップの抽出を行う。
【００８５】
ここで、ステップＳ１９で新たなタイミングエラーの発生が見つかった場合の処理の仕方を別の回路例、図１０、図１１を用いて説明する。
【００８６】
図１２は、図１０、図１１の回路に対するタイミング情報データ４の例である。ここでは、タイミングマージンデータに具体的な数値を記入している。
【００８７】
図１２のタイミングマージン欄をチェックすると、Ｆ／Ｆ名Ｆ００１の前段Ｆ／Ｆ名Ｆ００１に対するタイミングマージンのホールド時間が−０．２となっておりホールド時間が０．２不足しているため、違反フラグ欄にｈｏｌｄと記載されている。また、Ｆ／Ｆ名Ｆ１０３の前段Ｆ／Ｆ名Ｆ１０２に対するタイミングマージンのセットアップ時間が＋０．３となっておりセットアップ時間が０．３不足しているため、違反フラグ欄にｓｅｔｕｐと記載されている。最初に、ステップＳ１１で違反フラグがｈｏｌｄかｓｅｔｕｐかを識別し、それぞれのフラグに応じた処理を以降進めるが、その様子は図１３に示す。
【００８８】
図１３では、違反フラグｈｏｌｄに対する処理として、先にｈｏｌｄと記入したＦ／Ｆ名Ｆ００２の移相量欄に０．２と記入（ステップＳ１２）し、Ｆ／Ｆ名Ｆ００２の３つのタイミングマージンデータにそれぞれ０．２を加算（ステップＳ１３）し、前段Ｆ／Ｆ名欄にＦ００２と記されている後段Ｆ／Ｆを探して該当のＦ／Ｆ名Ｆ００７およびＦ００８のタイミングマージンデータに−０．２を加算（ステップＳ１４）する。
【００８９】
一方、違反フラグｓｅｔｕｐに対する処理として、先にｓｅｔｕｐと記入したＦ／Ｆ名Ｆ１０３の移相量欄に（−０．３）と記入（ステップＳ１５）し、前段Ｆ／ＦのＦ／Ｆ名Ｆ１０２の移相量欄に０．３と記入（ステップＳ１６）し、Ｆ／Ｆ名Ｆ１０２の２つのタイミングマージンデータにそれぞれ０．３を加算（ステップＳ１７）し、前段Ｆ／Ｆ名欄にＦ１０２と記されている後段Ｆ／Ｆを探して該当のＦ／Ｆ名Ｆ１０３、１０７およびＦ１０８のタイミングマージンデータに−０．３を加算（ステップＳ１８）する。
【００９０】
このタイミングマージンデータを書き換えた結果であるタイミング情報修正データ４１に対して、新たなタイミングエラーが発生していないかチェック（ステップＳ１９）する。その結果、Ｆ／Ｆ名Ｆ００８の前段Ｆ／Ｆ名Ｆ００２のホールド時間が−０．１、Ｆ／Ｆ名Ｆ１０８の前段Ｆ／Ｆ名Ｆ１０２のホールド時間が−０．２となっていて、それぞれホールド時間不足となっていることがわかる。
【００９１】
また、Ｆ／Ｆ名Ｆ００２の前段Ｆ／Ｆ名Ｆ００４のセットアップ時間が＋０．１、Ｆ／Ｆ名Ｆ１０２の前段Ｆ／Ｆ名Ｆ１０４のセットアップ時間が＋０．１となっていて、それぞれセットアップ時間不足となっていることがわかる。
【００９２】
そこでステップＳ１９のチェック結果がＹｅｓとなり、ステップＳ２０で新たに違反フラグを書き込んだ新たなタイミング情報修正データ４２を生成してステップＳ１１に戻る。
【００９３】
図１４に、タイミング情報修正データ４２の例を示す。この例に見るように、新たな違反フラグとして、Ｆ／Ｆ名Ｆ００８の前段Ｆ／Ｆ名Ｆ００２の欄とＦ／Ｆ名Ｆ１０８の前段Ｆ／Ｆ名Ｆ１０２の欄にｈｏｌｄ、Ｆ／Ｆ名Ｆ００２の前段Ｆ／Ｆ名Ｆ００４の欄とＦ／Ｆ名Ｆ１０２の前段Ｆ／Ｆ名Ｆ１０４の欄にｓｅｔｕｐがそれぞれ記入されている。
【００９４】
その後ステップＳ１１で、違反フラグがｈｏｌｄかｓｅｔｕｐかが識別され、ｈｏｌｄに対してはステップＳ１２からステップＳ１４までの処理が行われ、ｓｅｔｕｐに対してはステップＳ１５からステップＳ１８までの処理が行われる。
【００９５】
図１５に、上記処理でタイミングマージンデータが書き換えられて行く様子を示す。以下、上述の各タイミングエラーごとにその処理の手順を示す。
【００９６】
１．Ｆ／Ｆ名Ｆ００８の前段Ｆ／Ｆ名Ｆ００２に対するエラー（ｈｏｌｄ）
（１）Ｆ／Ｆ名Ｆ００８の移相量欄に０．１と記入
（２）Ｆ／Ｆ名Ｆ００８のタイミングマージンデータ総てに０．１を加算
（３）Ｆ／Ｆ名Ｆ００８の後段Ｆ／ＦであるＦ／Ｆ名Ｆ００９およびＦ０１０のタイミングマージンデータに−０．１を加算
２．Ｆ／Ｆ名Ｆ１０８の前段Ｆ／Ｆ名Ｆ１０２に対するエラー（ｈｏｌｄ）
（１）Ｆ／Ｆ名Ｆ１０８の移相量欄に０．２と記入
（２）Ｆ／Ｆ名Ｆ１０８のタイミングマージンデータ総てに０．２を加算
（３）Ｆ／Ｆ名Ｆ１０８の後段Ｆ／ＦであるＦ／Ｆ名Ｆ１０９およびＦ１１０のタイミングマージンデータに−０．２を加算
３．Ｆ／Ｆ名Ｆ００２の前段Ｆ／Ｆ名Ｆ００４に対するエラー（ｓｅｔｕｐ）（１）Ｆ／Ｆ名Ｆ００２の移相量欄に（−０．１）と記入
（２）Ｆ／Ｆ名Ｆ００２の前段Ｆ／ＦであるＦ／Ｆ名Ｆ００４の移相量欄に
０．１と記入
（３）Ｆ／Ｆ名Ｆ００４のタイミングマージンデータ総てに０．１を加算
（４）Ｆ／Ｆ名Ｆ００４の後段Ｆ／ＦであるＦ／Ｆ名Ｆ００２のタイミング
マージンデータに−０．１を加算
４．Ｆ／Ｆ名Ｆ１０２の前段Ｆ／Ｆ名Ｆ１０４に対するエラー（ｓｅｔｕｐ）（１）Ｆ／Ｆ名Ｆ１０２の移相量欄に（−０．１）と記入
（２）Ｆ／Ｆ名Ｆ１０２の前段Ｆ／ＦであるＦ／Ｆ名Ｆ１０４の移相量欄に    ０．１と記入
（３）Ｆ／Ｆ名Ｆ１０４のタイミングマージンデータ総てに０．１を加算
（４）Ｆ／Ｆ名Ｆ１０４の後段Ｆ／ＦであるＦ／Ｆ名Ｆ１０２のタイミングマージンデータに−０．１を加算
以上のタイミングマージンの書き換えが終わると、図１５に示したような新たなタイミング情報修正データ４１が生成される。
【００９７】
ステップＳ１９で、このタイミング情報修正データ４１に対して、新たなタイミングエラーの発生がないかを再度チェックする。今回のチェックでは、タイミングエラー発生がないため判定がＮｏとなり、ステップＳ２１に進む。
【００９８】
ステップＳ２１では、タイミング情報修正データ４１から移相量欄に数値に記入されているフリップフロップの名前をその移相量データとともに抜き出し、位相補正対象フリップフロップ抽出データ５として記録する。ただし、移相数量欄に括弧付きの負数が記入されているフリップフロップは、上記の抜き取りの対象からは除外する。
【００９９】
図１６は、図１５のタイミング情報修正データ４１の例から作成した位相補正対象フリップフロップ抽出データ５の例である。図１６では、図１５のタイミング情報修正データ４１から移相量に正数が記されているフリップフロップ、Ｆ００２、Ｆ００４、Ｆ００８、Ｆ１０２、Ｆ１０４、Ｆ１０８のデータを抜き出し、その中のＦ／Ｆ名と移相量を一組に並べて一覧データにしている。
【０１００】
以上で図７のフローの作業、すなわち図１のステップＳ７の「位相補正対象フリップフロップ抽出」工程の作業が終了する。
【０１０１】
次に、図１のステップＳ８の「クロックバッファ選出」の具体的な方法を、図１６の位相補正対象フリップフロップ抽出データ５を例にとって説明する。
【０１０２】
まず、位相補正対象フリップフロップ抽出データ５に記載のそれぞれのフリップフロップにクロックを供給している現状のクロックバッファの名前を回路接続情報より抽出し、位相補正対象フリップフロップ抽出データ５に書き加え、オリジナルクロックバッファの一覧を作成する。
【０１０３】
図１７（ａ）にその例を示す。図１７（ａ）のクロックバッファのオリジナル欄に記載されている名前が、それぞれのフリップフロップにクロックを供給しているクロックバッファの名前である。例えば、ＣｋｎｐはフリップフロップＦ００２にクロックを供給しているクロックバッファの名前である。また、各クロックバッファはクロックツリーの最終段、例えば図２に示すクロックツリー２のｎ段目に配置されているバッファである。
【０１０４】
次に、クロック位相データベース（ステップＳ３で作成、例：図３（ａ））を参照して、オリジナルのクロックバッファとの位相差が移相量より大きく、且つ最も移相量に近いクロックバッファをクロックツリー途中段のバッファから選出し、その名前を変更後クロックバッファの一覧として記録する。
【０１０５】
図１７（ｂ）にその例を示す。図１７（ｂ）は、図１７（ａ）の一覧にクロックバッファの変更後の欄を設け、ここに選出したバッファ名を記載しているものである。ここで、変更後のクロックバッファとオリジナルのクロックバッファとのクロック位相の関係を見て見ると、例えば、フリップフロップＦ００２の場合、変更後のクロックバッファＣｋｌａの位相ｐｌａは、オリジナルのクロックバッファＣＫｎｐの位相ｐｎｐに対して移相量が０．２であるので、ｐｌａ＜ｐｎｐ−０．２となる。
【０１０６】
このようにして作成した変更後クロックバッファの一覧データに基づいて、半導体集積回路の実際のレイアウト上で、位相補正対象フリップフロップのクロックの供給元をオリジナルのクロックバッファから変更後バッファ欄に記載されたクロックバッファに変更する。
【０１０７】
図１８と図１９にクロック供給元のクロックバッファを変更する前と後のクロック分配の違いを模式的に示す。図１８は、クロック供給元のクロックバッファを変更する前の状態であり、ＣＴＳを実行してクロックツリーを形成し、その最終段のクロックバッファからフリップフロップへクロックを分配している様子を模式的に示している。
【０１０８】
図１９は、クロック供給元のクロックバッファを変更した後のクロック分配の様子を模式的に示した図である。タイミングエラーを除くためクロックの位相を早める必要のあるフリップフロップへ、クロックツリーの途中段の所望の位相を有するバッファからクロックが供給されている様子を示している。
【０１０９】
なお、半導体集積回路のレイアウト上でクロックバッファの接続を変更するときは、従来のクロックバッファからのクロック配線を一旦削除した後、新しいクロック供給元のクロックバッファからのクロック配線を行う。このとき、新しいクロック供給元のクロックバッファとクロックの供給を受けるフリップフロップの配置位置が離れていることも考えられるが、そのようなときはフリップフロップをクロックバッファの近くに移動させた後にクロック配線を行えばよい。
【０１１０】
新しいクロック供給元のクロックバッファとクロックの供給を受けるフリップフロップの配置位置が近いときには、フリップフロップの位置はそのままに、新たなクロック配線を追加するだけでよい。
【０１１１】
ただし、レイアウト上の論理セルの配置が込んでいて、上述のフリップフロップの移動が困難なケースもあり得る。そのような事態を避けるには、「クロックバッファ選出」処理の際、クロック位相条件に適合する複数個のクロックバッファを選出候補として選び、その中から移相対象のフリップフロップとの配置関係等を考慮の上、クロック供給元として最適のクロックバッファを選択するようにすればよい。
【０１１２】
このように、いずれの場合も新たなバッファを追加することなく、タイミングエラーを除くことが可能である。
【０１１３】
以上の本発明の実施の形態では、タイミング情報データは表形式としているが、タイミング情報データの表現形式は表形式に限定されるものではなく、フリップフロップごとにそのタイミングマージンが記載されていればどのような形式で記述してもよい。
【０１１４】
また、上述の実施の形態の説明では、半導体集積回路が単一のクロックで動作する場合を例に取ったが、複数のクロックで動作する半導体集積回路でそれぞれのクロックにクロックツリーが生成される場合には、それぞれのクロックツリーに対して本発明のクロック分配法を適用すればよい。
【０１１５】
【発明の効果】
本発明の半導体集積回路のクロック分配方法によれば、ＣＴＳの実行回数を少なくして、タイミングエラーの発生しない位相を有するクロックをフリップフロップに供給することができる。そのため、半導体集積回路のレイアウト工程に要する時間を短縮することができる。
【０１１６】
また、本発明の半導体集積回路によれば、フリップフロップのタイミングマージンに応じて、それぞれのフリップフロップに異なる位相のクロックを分配することができる。そのため、フリップフロップにおけるタイミングエラーの発生を防止することができる。また、タイミングエラー除去のためのバッファの挿入を最小限に抑えられるため、半導体集積回路のチップ面積の増大を防ぐことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る半導体集積回路のクロック分配方法を示すフロー図。
【図２】クロックツリーからのクロック配線長に差のある例を示す模式的回路図。
【図３】図１のステップＳ４のクロック位相データベース生成処理結果とクロック位相分布の例を示す図。
【図４】クロックスキューとフリップフロップのタイミングエラーの関係を説明する波形図。
【図５】図１のステップＳ５のタイミング情報生成処理結果およびステップＳ６のタイミングエラー発生フリップフロップ抽出処理結果の例を示す図。
【図６】フリップフロップを含む回路の第１の例を示す回路図。
【図７】図１のステップＳ７の位相補正対象フリップフロップ抽出処理を詳細に説明するフロー図。
【図８】本発明の実施の形態におけるタイミング情報修正データの第１の例を示す図。
【図９】図７のフローと回路動作の関係を説明するための波形図。
【図１０】フリップフロップを含む回路の第２の例を示す回路図。
【図１１】フリップフロップを含む回路の第３の例を示す回路図。
【図１２】本発明の実施の形態におけるタイミング情報データの例を示す図。
【図１３】図７のフローの処理途中のタイミング情報データの第１の例を示す図。
【図１４】図７のフローの処理途中のタイミング情報データの第２の例を示す図。
【図１５】本発明の実施の形態におけるタイミング情報修正データの例を示す図。
【図１６】図１のステップＳ７の位相補正対象フリップフロップ抽出処理結果の例を示す図。
【図１７】図１のステップＳ８のクロックバッファ選出処理結果の例を示す図。
【図１８】ＣＴＳ実行によるクロック分配の様子を模式的に示す回路図。
【図１９】本発明の実施の形態に係る半導体集積回路のクロック分配方法によるクロック分配の様子を模式的に示す回路図。
【符号の説明】
１  クロック源
２  クロックツリー
３  多段論理セル
４  タイミング情報データ
５  位相補正対象フリップフロップ抽出データ
４１、４２  タイミング情報修正データ
ＣＫ１１、ＣＫ２１、・・・、ＣＫｎ３、ＣＫｎ４  クロックバッファ
ＣＫｎｐ、ＣＫｎｑ、・・・、ＣＫｍｃ、ＣＫｍｅ  クロックバッファ
Ｆ０１、Ｆ０２、Ｆ０３、Ｆ０４  フリップフロップ
ｎａｍｅ１、ｎａｍｅ２、・・・、ｎａｍｅ９、ｎａｍｅ１０  フリップフロップ
Ｆ００１、Ｆ００２、・・・、Ｆ１０９、Ｆ１１０  フリップフロップ
【図１】
2004185466.tif 000003
【図２】
2004185466.tif 000004
【図３】
2004185466.tif 000005
【図４】
2004185466.tif 000006
【図５】
2004185466.tif 000007
【図６】
2004185466.tif 000008
【図７】
2004185466.tif 000009
【図８】
2004185466.tif 000010
【図９】
2004185466.tif 000011
【図１０】
2004185466.tif 000012
【図１１】
2004185466.tif 000013
【図１２】
2004185466.tif 000014
【図１３】
2004185466.tif 000015
【図１４】
2004185466.tif 000016
【図１５】
2004185466.tif 000017
【図１６】
2004185466.tif 000018
【図１７】
2004185466.tif 000019
【図１８】
2004185466.tif 000020
【図１９】
2004185466.tif 000021