(57)【要約】【課題】タイミング収束のイタレーションを削減する。【解決手段】半導体集積回路６００のクロックツリー７００Ａが、分周器７５２が追加されたクロックツリー７００Ｂで置換されない場合について、モジュール７６１及び７６２に関するホールドエラー値ＨＥＶ１を算出する（Ｓ１０５）。クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、モジュール７６１及び７６２に関するホールドエラー値ＨＥＶ２を算出する（Ｓ１０７）。ホールドエラー値ＨＥＶ１及びＨＥＶ２に基づいて、クロックツリー７００Ａをクロックツリー７００Ｂで置換することで半導体集積回路６００のホールドエラーが削減されるか判定する（Ｓ１０８）。半導体集積回路６００のホールドエラーが削減されると判定された場合、クロックツリー７００Ａがクロックツリー７００Ｂで置換された半導体集積回路６００を記述する回路データを生成する（Ｓ１０９）。【選択図】図３
2011159175.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号及び前記クロック信号を分周した分周クロック信号を供給するクロックツリーと、前記クロック信号に同期して動作する第１モジュールと、前記分周クロック信号に同期して動作する第２モジュールと、前記第１モジュール及び前記第２モジュールを接続する第１データパスとを備える半導体集積回路の第１回路データを格納する記憶部と、
実行部と
を具備し、
前記クロックツリーは、第１分岐点と、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリーと、前記第１分岐点と前記第２モジュールを接続する第２クロックツリーとを含み、
前記第１クロックツリーは、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリークロックパスを含み、
前記第２クロックツリーは、第２分岐点と、前記第１分岐点と前記第２分岐点とを接続する第２クロックツリールート側クロックパスと、前記第２分岐点と前記第２モジュールとを接続する第２クロックツリー第１リーフ側クロックパスとを含み、
前記第２クロックツリールート側クロックパスは、前記クロック信号に基づいて前記分周クロックを生成する第１分周器を備え、
前記クロック信号は、前記第１分岐点及び前記第１クロックツリークロックパスを経由して前記第１モジュールに供給され、前記第１分岐点を経由して前記第１分周器に供給され、
前記分周クロック信号は、前記第２分岐点及び前記第２クロックツリー第１リーフ側クロックパスを経由して前記第２モジュールに供給され、
前記クロックツリーが変更された分周器追加後クロックツリーは、前記第１クロックツリークロックパスの途中の第１点と前記第２モジュールとを接続する分周クロックパスが追加されていること、及び前記第２クロックツリー第１リーフ側クロックパスが切断されていることが前記クロックツリーと異なり、
前記分周クロックパスは、前記クロック信号に基づいて前記分周クロック信号を生成する第２分周器を備え、
前記実行部は、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ１を算出し、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ２を算出し、
前記分周器追加前ホールドエラー値ＨＥＶ１及び前記分周器追加後ホールドエラー値ＨＥＶ２に基づいて、前記クロックツリーを前記分周器追加後クロックツリーで置換することで前記半導体集積回路のホールドエラーが削減されるか判定し、
前記半導体集積回路のホールドエラーが削減されると判定された場合、前記クロックツリーが前記分周器追加後クロックツリーで置換された前記半導体集積回路を記述する第２回路データを生成する。
クロックツリー形成システム。
【請求項２】
前記実行部は、ホールドエラー削減分ＨＥＲ１がホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲ１は、下記式：
ＨＥＲ１＝ＨＥＶ１−ＨＥＶ２
で定義される
請求項１のクロックツリー形成システム。
【請求項３】
前記半導体集積回路は、前記分周クロック信号に同期して動作する第３モジュールと、前記第２モジュール及び前記第３モジュールを接続する分周クロック間データパスを備え、
前記クロックツリーにおいて、前記第２クロックツリーは前記第２分岐点と前記第３モジュールとを接続する第２クロックツリー第２リーフ側クロックパスを含み、前記分周クロック信号は前記第２分岐点及び前記第２クロックツリー第２リーフ側クロックパスを経由して前記第３モジュールに供給され、
前記実行部は、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第２モジュール及び前記第３モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ３を算出し、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第２モジュール及び前記第３モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ４を算出し、
ホールドエラー削減分ＨＥＲがホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲは、下記式：
ＨＥＲ＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ３−ＨＥＶ４）
で定義される
請求項１のクロックツリー形成システム。
【請求項４】
前記半導体集積回路は、前記分周クロック信号に同期して動作する第３モジュールと、前記第１モジュール及び前記第３モジュールを接続する第２データパスを備え、
前記クロックツリーにおいて、前記第２クロックツリーは前記第２分岐点と前記第３モジュールとを接続する第２クロックツリー第２リーフ側クロックパスを含み、前記分周クロック信号は前記第２分岐点及び前記第２クロックツリー第２リーフ側クロックパスを経由して前記第３モジュールに供給され、
前記実行部は、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、  前記第２クロックツリー第１リーフ側クロックパスにおけるクロック遅延と前記第２クロックツリー第２リーフ側クロックパスにおけるクロック遅延との遅延差分と遅延基準値とを比較し、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第１モジュール及び前記第３モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ５を算出し、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第３モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ６を算出し、
ホールドエラー削減分ＨＥＲがホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲは、下記式：
ＨＥＲ＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ５−ＨＥＶ６）
で定義され、
前記遅延差分が前記遅延基準値より以下の場合、
前記分周器追加後クロックツリーは、前記分周クロックパスの途中の第２点と前記第３モジュールとを接続する追加クロックパスが追加されていること、及び前記第２クロックツリー第２リーフ側クロックパスが切断されていることが前記クロックツリーと異なり、
前記第２分周器は、前記第１点及び前記第２点の間に設けられる
請求項１のクロックツリー形成システム。
【請求項５】
クロック信号及び前記クロック信号を分周した分周クロック信号を供給するクロックツリーと前記クロック信号に同期して動作する第１モジュールと、前記分周クロック信号に同期して動作する第２モジュールと、前記第１モジュール及び前記第２モジュールを接続する第１データパスとを含む半導体集積回路の前記クロックツリーが前記クロックツリーが変更された分周器追加後クロックツリーで置換されない場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ１を算出すること、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ２を算出すること、
前記分周器追加前ホールドエラー値ＨＥＶ１及び前記分周器追加後ホールドエラー値ＨＥＶ２に基づいて、前記クロックツリーを前記分周器追加後クロックツリーで置換することで前記半導体集積回路のホールドエラーが削減されるか判定すること、
前記半導体集積回路のホールドエラーが削減されると判定された場合、前記クロックツリーが前記分周器追加後クロックツリーで置換された前記半導体集積回路を記述する回路データを生成すること
を具備し、
前記クロックツリーは、第１分岐点と、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリーと、前記第１分岐点と前記第２モジュールを接続する第２クロックツリーとを含み、
前記第１クロックツリーは、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリークロックパスを含み、
前記第２クロックツリーは、第２分岐点と、前記第１分岐点と前記第２分岐点とを接続する第２クロックツリールート側クロックパスと、前記第２分岐点と前記第２モジュールとを接続する第２クロックツリー第１リーフ側クロックパスとを含み、
前記第２クロックツリールート側クロックパスは、前記クロック信号に基づいて前記分周クロックを生成する第１分周器を備え、
前記クロック信号は、前記第１分岐点及び前記第１クロックツリークロックパスを経由して前記第１モジュールに供給され、前記第１分岐点を経由して前記第１分周器に供給され、
前記分周クロック信号は、前記第２分岐点及び前記第２クロックツリー第１リーフ側クロックパスを経由して前記第２モジュールに供給され、
前記分周器追加後クロックツリーは、前記第１クロックツリークロックパスの途中の第１点と前記第２モジュールとを接続する分周クロックパスが追加されていること、及び前記第２クロックツリー第１リーフ側クロックパスが切断されていることが前記クロックツリーと異なり、
前記分周クロックパスは、前記クロック信号に基づいて前記分周クロック信号を生成する第２分周器を備える
クロックツリー形成方法。
【請求項６】
前記半導体集積回路のホールドエラーが削減されるか判定することにおいて、ホールドエラー削減分ＨＥＲ１がホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲ１は、下記式：
ＨＥＲ１＝ＨＥＶ１−ＨＥＶ２
で定義される
請求項５のクロックツリー形成方法。
【請求項７】
前記半導体集積回路は、前記分周クロック信号に同期して動作する第３モジュールと、前記第２モジュール及び前記第３モジュールを接続する分周クロック間データパスを備え、
前記クロックツリーにおいて、前記第２クロックツリーは前記第２分岐点と前記第３モジュールとを接続する第２クロックツリー第２リーフ側クロックパスを含み、前記分周クロック信号は前記第２分岐点及び前記第２クロックツリー第２リーフ側クロックパスを経由して前記第３モジュールに供給され、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第２モジュール及び前記第３モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ３を算出すること、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第２モジュール及び前記第３モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ４を算出すること
を更に具備し、
前記半導体集積回路のホールドエラーが削減されるか判定することにおいて、ホールドエラー削減分ＨＥＲがホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲは、下記式：
ＨＥＲ＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ３−ＨＥＶ４）
で定義される
請求項５のクロックツリー形成方法。
【請求項８】
前記半導体集積回路は、前記分周クロック信号に同期して動作する第３モジュールと、前記第１モジュール及び前記第３モジュールを接続する第２データパスを備え、
前記クロックツリーにおいて、前記第２クロックツリーは前記第２分岐点と前記第３モジュールとを接続する第２クロックツリー第２リーフ側クロックパスを含み、前記分周クロック信号は前記第２分岐点及び前記第２クロックツリー第２リーフ側クロックパスを経由して前記第３モジュールに供給され、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第２クロックツリー第１リーフ側クロックパスにおけるクロック遅延と前記第２クロックツリー第２リーフ側クロックパスにおけるクロック遅延との遅延差分と遅延基準値とを比較すること、
前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第１モジュール及び前記第３モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ５を算出すること、
前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第３モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ６を算出すること
を更に具備し、
前記半導体集積回路のホールドエラーが削減されるか判定することにおいて、ホールドエラー削減分ＨＥＲがホールドエラー基準値より大きい場合に前記半導体集積回路のホールドエラーが削減されると判定し、
前記ホールドエラー削減分ＨＥＲは、下記式：
ＨＥＲ＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ５−ＨＥＶ６）
で定義され、
前記遅延差分が前記遅延基準値より以下の場合、
前記分周器追加後クロックツリーは、前記分周クロックパスの途中の第２点と前記第３モジュールとを接続する追加クロックパスが追加されていること、及び前記第２クロックツリー第２リーフ側クロックパスが切断されていることが前記クロックツリーと異なり、
前記第２分周器は、前記第１点及び前記第２点の間に設けられる
請求項５のクロックツリー形成方法。
【請求項９】
請求項５乃至８のいずれかに記載のクロックツリー形成方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のクロックツリーを形成するクロックツリー形成システム、クロックツリー形成方法及びプログラムに関し、特に、クロック信号とそのクロック信号が分周された分周クロック信号とを供給するクロックツリーを形成するクロックツリー形成システム、クロックツリー形成方法及びプログラムに関する。
【背景技術】
【０００２】
半導体集積回路の分野において、半導体製造プロセスが微細化し、搭載回路が大規模化している。これに伴ってクロック系統が複雑化しているため、周波数の異なる複数クロック信号間のタイミング収束をとるためのＴＡＴ（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ）が増大している。タイミング収束をとるためのＴＡＴの増大により開発期間が長引くことが問題になっている。タイミング収束をとるためのＴＡＴの短縮の要求が高まっている。
【０００３】
特開２００７−１８３８８７号公報は、半導体集積回路のクロックツリー形成方法を開示している。図１は、半導体集積回路のクロックツリー形成方法の原理を示す機能ブロック図である。図１を参照して、クロックツリー生成部２１は、ホールドスラック計算部２２、バッファ遅延計算部２３、ＦＦ（ｆｌｉｐ  ｆｌｏｐ）対集合操作部２４、バッファ挿入部２５、ホールドスラック再計算部２６などから構成されている。
【０００４】
クロックツリー生成部２１は、ハードウェア設計装置に記録されたライブラリ（部品情報、パターン情報等の回路配置に関する情報ライブラリ）からデータを選択し、回路配置に関するデータ（回路配置情報）を生成する。このデータを入力データ２７としてホールドスラック計算部２２に入力する。そして、入力データ２７のクロックツリー回路のＦＦ（ｆｌｉｐ  ｆｌｏｐ）対に該当する部分の経路に対して、クロックスキューがない状態（ｉｄｅａｌ  ｍｏｄｅ）でタイミング解析を行い、初期のホールドスラック値を求める。ホールドスラック値とはホールドエラーが発生する基準値に対してどのくらいの余裕があるかを示す値である。
【０００５】
バッファ遅延計算部２３では、クロックツリーの製造ばらつきを考慮したバッファ（ゲートセルなどの素子）の遅延値の最小値、最大値を計算し記憶する。ここでＦＦ対の分岐点となるバッファから２つのＦＦ入力までの各経路に対して、上記ライブラリに登録されている回路配置情報の部品情報などから読み出したバッファの遅延データに基づき計算をする。本例ではライブラリのバッファに関するデータの遅延の最小値、最大値を使用して計算をする。
【０００６】
ＦＦ対集合操作部２４では、処理済みのＦＦ対、未処理のＦＦ対の集合を記録する。クロックツリーを最適化する以前のデータ（未処理のＦＦ対）と最適化後のＦＦ対（処理済）を記録する。クロックツリーに用いられているバッファの回路配置情報に基づきクロックツリーの分岐点となるバッファからＦＦ対ごとのフリップフロップ入力間の経路に対して、経路の遅延の最小値、最大値を計算し記録する。そして、経路ごとにホールドスラック値と最大値から最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合はＦＦ対をグループ化するＦＦ対集合操作部２４で処理をする。
【０００７】
バッファ挿入部２５では、ＦＦ対のホールドスラック値とバッファ遅延計算部２３において計算されたばらつきを考慮して、バッファの遅延の最小値、最大値に基づいて同一グループのＦＦ対の経路ごとに、ＦＦ対が同一のバッファで駆動するようにバッファを挿入するバッファ挿入処理を行う。
【０００８】
次にホールドスラック再計算部２６では、バッファ挿入に応じてＦＦ対の再計算を行う。同一グループのＦＦ対の経路ごとに、ＦＦ対が同一のバッファで駆動するようにバッファを挿入するバッファ挿入処理をする。その後出力データ２８を生成し回路配置に使用する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−１８３８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明者は、クロック信号を第１モジュールに供給する第１クロックツリーとそのクロック信号が分周された分周クロック信号を第２モジュールに供給する第２クロックツリーを別々に形成してから第１クロックツリーと第２クロックツリーを接続してクロック信号及び分周クロック信号を供給するクロックツリーを形成すると、第１クロックツリーと第２クロックツリーの間の分岐点以降のクロック遅延が大きくなって第１モジュールと第２モジュールの間のタイミングエラーの値が大きくなることを認識するにいたった。本発明者は、そのタイミングエラーの値が大きくなるのに比例してタイミングを収束させる為の処理（バッファの追加、セルの置き換え、タイミング検証など）のイタレーションが増えることを認識するにいたった。本発明者は、タイミング収束のイタレーションを削減することが必要であると認識するにいたった。
【課題を解決するための手段】
【００１１】
以下に、（発明を実施するための形態）で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、（特許請求の範囲）の記載と（発明を実施するための形態）との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、（特許請求の範囲）に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明の一の観点によるクロックツリー形成システム（１）は、クロック信号及び前記クロック信号を分周した分周クロック信号を供給するクロックツリー（７００Ａ）と、前記クロック信号に同期して動作する第１モジュール（７６１）と、前記分周クロック信号に同期して動作する第２モジュール（７６２）と、前記第１モジュール及び前記第２モジュールを接続する第１データパス（７７１）とを備える半導体集積回路（６００）の第１回路データを格納する記憶部（１７）と、実行部（４１）とを具備する。前記クロックツリーは、第１分岐点（７０１）と、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリー（７１０）と、前記第１分岐点と前記第２モジュールを接続する第２クロックツリー（７２０）とを含む。前記第１クロックツリーは、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリークロックパス（７１５）を含む。前記第２クロックツリーは、第２分岐点（７２１）と、前記第１分岐点と前記第２分岐点とを接続する第２クロックツリールート側クロックパス（７２５）と、前記第２分岐点と前記第２モジュールとを接続する第２クロックツリー第１リーフ側クロックパス（７２６）とを含む。前記第２クロックツリールート側クロックパスは、前記クロック信号に基づいて前記分周クロックを生成する第１分周器（７５１）を備える。前記クロック信号は、前記第１分岐点及び前記第１クロックツリークロックパスを経由して前記第１モジュールに供給され、前記第１分岐点を経由して前記第１分周器に供給される。前記分周クロック信号は、前記第２分岐点及び前記第２クロックツリー第１リーフ側クロックパスを経由して前記第２モジュールに供給される。前記クロックツリーが変更された分周器追加後クロックツリー（７００Ｂ）は、前記第１クロックツリークロックパスの途中の第１点（７１１）と前記第２モジュールとを接続する分周クロックパス（７３５）が追加されていること、及び前記第２クロックツリー第１リーフ側クロックパスが切断されていることが前記クロックツリーと異なる。前記分周クロックパスは、前記クロック信号に基づいて前記分周クロック信号を生成する第２分周器（７５２）を備える。前記実行部は、前記クロックツリーが前記分周器追加後クロックツリーで置換されない場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ１を算出する。前記実行部は、前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ２を算出する。前記実行部は、前記分周器追加前ホールドエラー値ＨＥＶ１及び前記分周器追加後ホールドエラー値ＨＥＶ２に基づいて、前記クロックツリーを前記分周器追加後クロックツリーで置換することで前記半導体集積回路のホールドエラーが削減されるか判定する。前記実行部は、前記半導体集積回路のホールドエラーが削減されると判定された場合、前記クロックツリーが前記分周器追加後クロックツリーで置換された前記半導体集積回路を記述する第２回路データを生成する。
【００１３】
本発明の他の観点によるクロックツリー形成方法は、クロック信号及び前記クロック信号を分周した分周クロック信号を供給するクロックツリー（７００Ａ）と前記クロック信号に同期して動作する第１モジュール（７６１）と、前記分周クロック信号に同期して動作する第２モジュール（７６２）と、前記第１モジュール及び前記第２モジュールを接続する第１データパス（７７１）とを含む半導体集積回路（６００）の前記クロックツリーが前記クロックツリーが変更された分周器追加後クロックツリー（７００Ｂ）で置換されない場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加前ホールドエラー値ＨＥＶ１を算出すること（Ｓ１０５）、前記クロックツリーが前記分周器追加後クロックツリーで置換された場合について、前記第１モジュール及び前記第２モジュールのペアに関する分周器追加後ホールドエラー値ＨＥＶ２を算出すること（Ｓ１０７）、前記分周器追加前ホールドエラー値ＨＥＶ１及び前記分周器追加後ホールドエラー値ＨＥＶ２に基づいて、前記クロックツリーを前記分周器追加後クロックツリーで置換することで前記半導体集積回路のホールドエラーが削減されるか判定すること（Ｓ１０８）、及び、前記半導体集積回路のホールドエラーが削減されると判定された場合、前記クロックツリーが前記分周器追加後クロックツリーで置換された前記半導体集積回路を記述する回路データを生成すること（Ｓ１０９）を具備する。前記クロックツリーは、第１分岐点（７０１）と、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリー（７１０）と、前記第１分岐点と前記第２モジュールを接続する第２クロックツリー（７２０）とを含む。前記第１クロックツリーは、前記第１分岐点と前記第１モジュールとを接続する第１クロックツリークロックパス（７１５）を含む。前記第２クロックツリーは、第２分岐点（７２１）と、前記第１分岐点と前記第２分岐点とを接続する第２クロックツリールート側クロックパス（７２５）と、前記第２分岐点と前記第２モジュールとを接続する第２クロックツリー第１リーフ側クロックパス（７２６）とを含む。前記第２クロックツリールート側クロックパスは、前記クロック信号に基づいて前記分周クロックを生成する第１分周器（７５１）を備える。前記クロック信号は、前記第１分岐点及び前記第１クロックツリークロックパスを経由して前記第１モジュールに供給され、前記第１分岐点を経由して前記第１分周器に供給される。前記分周クロック信号は、前記第２分岐点及び前記第２クロックツリー第１リーフ側クロックパスを経由して前記第２モジュールに供給される。前記分周器追加後クロックツリーは、前記第１クロックツリークロックパスの途中の第１点（７１１）と前記第２モジュールとを接続する分周クロックパス（７２６）が追加されていること、及び前記第２クロックツリー第１リーフ側クロックパスが切断されていることが前記クロックツリーと異なる。前記分周クロックパスは、前記クロック信号に基づいて前記分周クロック信号を生成する第２分周器（７５２）を備える。
【００１４】
本発明の他の観点によるプログラムは、上記クロックツリー形成方法をコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、クロック信号を第１モジュールに供給するクロックパスとそのクロック信号を分周した分周クロック信号を第２モジュールに供給するクロックパスとの分岐点以降のクロック遅延が小さくなり、第１モジュールと第２モジュールの間のタイミングエラーの値が小さくなるのに比例してタイミング収束のイタレーションが削減される。
【図面の簡単な説明】
【００１６】
【図１】図１は、従来の半導体集積回路のクロックツリー形成方法の原理を示す機能ブロック図である。
【図２】図２は、本発明の第１の実施形態に係るクロックツリー形成システムのブロック図である。
【図３】図３は、第１の実施形態に係るクロックツリー形成方法のフローチャートである。
【図４】図４は、クロックツリーを備える半導体集積回路を示す。
【図５】図５は、パス情報を示す。
【図６】図６は、クロックツリーが分周器追加後クロックツリーで置換された半導体集積回路を示す。
【図７】図７は、パス情報を示す。
【図８】図８は、本発明の第２の実施形態に係るクロックツリー形成方法のフローチャートである。
【図９】図９は、クロックツリーを備える半導体集積回路を示す。
【図１０】図１０は、クロックツリーが分周器追加後クロックツリーで置換された半導体集積回路を示す。
【図１１】図１１は、本発明の第３の実施形態に係るクロックツリー形成方法のフローチャートである。
【図１２】図１２は、クロックツリーを備える半導体集積回路を示す。
【図１３】図１３は、パス情報を示す。
【図１４】図１４は、グループ情報を示す。
【図１５】図１５は、クロックツリーが分周器追加後クロックツリーで置換された半導体集積回路を示す。
【図１６】図１６は、グループ情報を示す。
【発明を実施するための形態】
【００１７】
添付図面を参照して、本発明によるクロックツリー形成システム、クロックツリー形成方法、及びプログラムを実施するための形態を以下に説明する。
【００１８】
（第１の実施形態）
図２を参照して、本発明の第１の実施形態に係るクロックツリー形成システム１を説明する。クロックツリー形成システム１は、コンピュータ１０と、サーバコンピュータ１４と、インターネット１６とを備える。コンピュータ１０は、例えばエンジニアリングワークステーションであり、半導体集積回路の設計に用いられる。コンピュータ１０は、実行部４１と、記憶部４２と、入力部４３と、出力部４４とを備える。実行部４１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。記憶部４２は、例えばメモリーやハードディスク装置である。入力部４３は、例えばキーボードやポインティングデバイスである。出力部４４は、例えば、外部装置にデータを出力するインターフェース、ディスプレイ、プリンターである。サーバコンピュータ１４は、記録媒体１５を保持する記憶部１７を備える。記憶部１７は、例えばハードディスク装置や光学式ディスクドライブである。記録媒体１５は、実行プログラム３１、モデル式３３、モデルパラメータ３４を記録している。実行プログラム３１は、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）設計ツール３２を備える。ＣＡＤ設計ツール３２は、回路エディタやレイアウトエディタを備える。実行プログラム３１、モデル式３３、モデルパラメータ３４は、インターネット１６を介してサーバコンピュータ１４からコンピュータ１０にダウンロードされ、記憶部４２に記憶される。実行部４１は、実行プログラム３１に基づいて第１の実施形態に係るクロックツリー形成方法を実行する。クロックツリー形成方法を実行する際、実行部４１はモデル式３３及びモデルパラメータ３４を必要に応じて参照する。
【００１９】
図３は、第１の実施形態に係るクロックツリー形成方法のフローチャートである。クロックツリー形成方法は、配置〜ＣＴＳ（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ）実施ステップＳ１０１、クロック遅延情報抽出ステップＳ１０２、クロック間パス抽出ステップＳ１０３、パス情報生成ステップＳ１０４、分周ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）挿入前ホールドエラー値算出ステップＳ１０５、クロック分岐点以降遅延算出ステップＳ１０６、分周ＦＦ挿入後ホールドエラー値算出ステップＳ１０７、ホールドエラー削減判定ステップＳ１０８、分周ＦＦ挿入ステップＳ１０９、対象パス処理済判定ステップＳ１１０、及び、パス情報更新ステップＳ１１１を備える。
【００２０】
ステップＳ１０１において、実行部４１は、モジュールの配置からＣＴＳまでを実行して半導体集積回路６００の分周器追加前回路データを生成する。記憶部１７は、分周器追加前回路データを記録媒体１５に記録する。
【００２１】
図４を参照して、分周器追加前回路データが記述する半導体集積回路６００を説明する。以後、分周器追加前回路データが記述する半導体集積回路６００を分周器追加前半導体集積回路６００と称する場合がある。分周器追加前半導体集積回路６００は、クロックツリー７００Ａと、モジュール７６１〜７６３と、データパス７７１とを備える。クロックツリー７００Ａは、クロック信号をモジュール７６１に供給し、クロック信号を分周した分周クロック信号をモジュール７６２及び７６３に供給する。モジュール７６１〜７６３は、セルとも称され、フリップフロップのような回路が例示される。データパス７７１は、モジュール７６１及び７６２を接続する。モジュール７６１は、クロック信号に同期して動作し、データパス７７１を介してモジュール７６２にデータを出力する。モジュール７６２は、分周クロック信号に同期して動作し、モジュール７６１からのデータを処理する。モジュール７６３は、分周クロック信号に同期して動作する。
【００２２】
クロックツリー７００Ａは、分岐点７０１と、分岐点７０１とモジュール７６１とを接続するクロックツリー７１０と、分岐点７０１とモジュール７６２及び７６３とを接続するクロックツリー７２０とを含む。クロックツリー７１０は、分岐点７０１とモジュール７６１とを接続するクロックパス７１５を含む。クロックツリー７２０は、分岐点７２１と、分岐点７０１と分岐点７２１とを接続するクロックパス７２５と、分岐点７２１とモジュール７６２とを接続するクロックパス７２６と、分岐点７２１とモジュール７６３とを接続するクロックパス７２７とを含む。クロックパス７２５は、クロック信号に基づいて分周クロックを生成する分周器７５１を備える。分周器７５１は、例えば分周ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）である。クロック信号は、分岐点７０１及びクロックパス７１５を経由してモジュール７６１に供給され、分岐点７０１を経由して分周器７５１に供給される。分周クロック信号は、分岐点７２１及びクロックパス７２６を経由してモジュール７６２に供給され、分岐点７２１及びクロックパス７２７を経由してモジュール７６３に供給される。
【００２３】
ステップＳ１０２において、実行部４１は、記録媒体１５に記憶された分周器追加前回路データからクロック遅延情報を抽出する。クロック遅延情報は、モジュール７６１とモジュール７６２のクロック分岐点である分岐点７０１からモジュール７６１のクロック端子までのパス（クロックパス７１５）における遅延Ｔ１と、分岐点７０１から分岐点７２１を経由してモジュール７６２のクロック端子までのパス（クロックパス７２５及び７２６から構成されるパス）における遅延Ｔ１と、ばらつき係数Ｔ２と、モジュール７６２のホールドタイムＴ３と、データパス７７１における遅延Ｔ４を含む。
【００２４】
ステップＳ１０３において、実行部４１は、記録媒体１５に記憶された分周器追加前回路データからクロック信号に同期して動作するモジュールとそのクロック信号の分周クロックに同期して動作するモジュールとを接続するデータパスを全て抽出する。ここで、データパス７７１が抽出される。
【００２５】
ステップＳ１０４において、実行部４１は、ステップＳ１０３の結果に基づいてパス情報５１を生成する。
【００２６】
図５を参照して、パス情報５１は、ステップＳ１０３で抽出された全てのデータパスの各々について、データパスのデータパス名と、始点側（データパスを介してデータを出力する側）のモジュールと、終点側（データパスを介してデータを受ける側）のモジュールとを対応付けている。
【００２７】
ステップＳ１０５において、実行部４１は、パス情報５１から任意のデータパスを選択して、選択されたデータパスによって接続されるモジュールペアに関するホールドエラー値を分周器追加前ホールドエラー値として算出する。データパス７７１によって接続されるモジュール７６１及び７６２のペアに関する分周器追加前ホールドエラー値ＨＥＶ１は、下記式：
ＨＥＶ１＝Ｔ１×（Ｔ２−１）＋Ｔ３−Ｔ４
で定義される。
【００２８】
ステップＳ１０６において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、モジュール７６１とモジュール７６２のクロック分岐点からモジュール７６１のクロック端子までのパスにおける遅延Ｔ５と、モジュール７６１とモジュール７６２のクロック分岐点からモジュール７６２のクロック端子までのパスにおける遅延Ｔ５とを算出する。
【００２９】
図６は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された半導体集積回路６００を示す。以後、クロックツリー７００Ａがクロックツリー７００Ｂで置換された半導体集積回路６００を分周器追加後半導体集積回路６００と称する場合がある。クロックツリー７００Ｂは、クロックパス７１５の途中の点７１１とモジュール７６２とを接続する分周クロックパス７３５が追加されていること、及びクロックパス７２６が切断されていることがクロックツリー７００Ａと異なる。分周クロックパス７３５は、分周器７５２を備える。分周器７５２は、例えば分周ＦＦである。すなわち、クロックツリー７００Ｂにおいては、データパス７７１を介してデータを受けるモジュールとしてのモジュール７６２の直近に分周器７５２が挿入（追加）され、モジュール７６１とモジュール７６２のクロック分岐点（点７１１）は分岐点７０１よりもモジュール７６１及び７６２に近くなっている。クロックパス７１５は、分岐点７０１と分岐点７１１を接続するクロックパス７１６と、分岐点７１１とモジュール７６１を接続するクロックパス７１７から構成される。分周器７５２は、分岐点７０１及び７１１を経由して供給されたクロック信号に基づいて分周クロック信号を生成し、分周クロック信号をモジュール７６２に供給する。
【００３０】
したがって、ステップＳ１０６において、実行部４１は、モジュール７６１とモジュール７６２のクロック分岐点としての分岐点７１１からモジュール７６１のクロック端子までのパス（クロックパス７１７）における遅延Ｔ５と、分岐点７１１からモジュール７６２のクロック端子までのパス（クロックパス７３５）における遅延Ｔ５とを算出する。
【００３１】
ステップＳ１０７において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、データパス７７１によって接続されるモジュール７６１及び７６２のペアに関するホールドエラー値を分周器追加後ホールドエラー値ＨＥＶ２として算出する。分周器追加後ホールドエラー値ＨＥＶ２は、下記式：
ＨＥＶ２＝Ｔ５×（Ｔ２−１）＋Ｔ３−Ｔ４
で定義される。
【００３２】
ステップＳ１０７において、実行部４１は、分周器追加前ホールドエラー値ＨＥＶ１及び分周器追加後ホールドエラー値ＨＥＶ２に基づいて、ホールドエラー削減分ＨＥＲ１を算出する。ホールドエラー削減分ＨＥＲ１は、下記式：
ＨＥＲ１＝ＨＥＶ１−ＨＥＶ２
で定義される。
【００３３】
ステップＳ１０８において、実行部４１は、ホールドエラー削減分ＨＥＲ１に基づいて、クロックツリー７００Ａをクロックツリー７００Ｂで置換することで半導体集積回路６００のホールドエラーが削減されるか判定する。実行部４１は、ホールドエラー削減分ＨＥＲ１が所定の基準値（例えば０ｎｓ）より大きい場合に半導体集積回路６００のホールドエラーが削減されると判定する。
【００３４】
ステップＳ１０８において、半導体集積回路６００のホールドエラーが削減されたと判定された場合はステップＳ１０９に移り、半導体集積回路６００のホールドエラーが削減されたと判定されなかった場合はステップＳ１１０に移る。
【００３５】
ステップＳ１０９において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置き換えられた半導体集積回路６００を記述する分周器追加後回路データを生成する。分周器追加後回路データは、分周器追加前回路データに対して回路接続情報が変更されている。記憶部１７は、分周器追加後回路データを記録媒体１５に記録する。ここで、実行部４１は、分周器追加後回路データを出力するように出力部４４を制御してもよい。
【００３６】
ステップＳ１１０において、実行部４１は、パス情報５１中の全てのデータパスに関して処理が実行されたか判定する。未処理のデータパスが残っている場合はステップＳ１１１に移り、そうでない場合はクロックツリー形成方法を終了する。
【００３７】
ステップＳ１１１において、実行部４１は、パス情報５１から処理済のデータパスに関する情報を削除する。実行部４１は、データパス７７１に関する処理が実行済みであるため、パス情報５１からデータパス７７１に関する情報を削除する。ステップＳ１１１の後、ステップＳ１０５に移る。
【００３８】
図７は、データパス７７１に関する情報が削除されたパス情報５１を示す。
【００３９】
ステップＳ１０３で抽出された全てのデータパスについて上記処理を繰り返した結果得られる半導体集積回路６００を記述する回路データに基づいて実物の半導体集積回路が製造される。
【００４０】
以下、具体的数値を用いて本実施形態に係るクロックツリー形成方法を説明する。遅延Ｔ１が８ｎｓ、ばらつき係数Ｔ２が１．２、ホールドタイムＴ３が０．１ｎｓ、遅延Ｔ４が１ｎｓの場合、分周器追加前ホールドエラー値ＨＥＶ１は０．７ｎｓとなる。更に遅延Ｔ５が３ｎｓの場合、分周器追加後ホールドエラー値ＨＥＶ２は−０．３ｎｓとなるので０．３ｎｓのマージンがあることを示している。分周器追加後ホールドエラー値ＨＥＶ２が負の場合、分周器追加後ホールドエラー値ＨＥＶ２として０ｎｓを用いてホールドエラー削減分ＨＥＲ１を算出する。上述の場合、ホールドエラー削減分ＨＥＲ１は０．７ｎｓとなる。ホールドエラー削減分ＨＥＲ１が０．７ｎｓの場合、ステップＳ１０８において半導体集積回路６００のホールドエラーが削減されると判定される。
【００４１】
本実施形態によれば、半導体集積回路６００のクロックツリー全体の最適化が行われ、クロック信号を第１モジュールに供給するクロックパスとそのクロック信号を分周した分周クロック信号を第２モジュールに供給するクロックパスとの分岐点以降のクロック遅延が小さくなり、第１モジュールと第２モジュールの間のタイミングエラーの値が小さくなるのに比例してタイミング収束のイタレーションが削減される。
【００４２】
（第２の実施形態）
本発明の第２の実施形態において、実行部４１は、実行プログラム３１に基づいて第２の実施形態に係るクロックツリー形成方法を実行する。
【００４３】
図８は、第２の実施形態に係るクロックツリー形成方法のフローチャートである。本実施形態に係るクロックツリー形成方法は、上述のステップＳ１０１〜Ｓ１１１に加えて、分周クロック同士の分周ＦＦ挿入前ホールドエラー値算出ステップＳ２０１、分周クロック同士のクロック分岐点以降遅延算出ステップＳ２０２、分周クロック同士の分周ＦＦ挿入後ホールドエラー値算出ステップＳ２０３、及び、分周ＦＦ挿入前後ホールドエラー削減分算出ステップＳ２０４を備える。ステップＳ２０１〜Ｓ２０４は、ステップＳ１０７とステップＳ１０８の間に実行される。ステップＳ２０１〜Ｓ２０４以外のステップ（ステップＳ１０１〜Ｓ１１１）は、以下の説明を除いて第１の実施形態と同様である。
【００４４】
以下、ステップＳ１０１で生成された分周器追加前回路データが記述する半導体集積回路６００（分周器追加前半導体集積回路６００）の構成が第１の実施形態と異なる場合について、本実施形態に係るクロックツリー形成方法を説明する。
【００４５】
図９を参照して、本実施形態に係る分周器追加前半導体集積回路６００を説明する。本実施形態に係る分周器追加前半導体集積回路６００は、第１の実施形態に係る分周器追加前半導体集積回路６００に対してデータパス７７２が追加されている。データパス７７２は、モジュール７６２及び７６３を接続する。モジュール７６２は、分周クロック信号に同期して動作し、モジュール７６１からのデータを処理し、データパス７７２を介してモジュール７６３にデータを出力する。モジュール７６３は、分周クロック信号に同期して動作し、モジュール７６２からのデータを処理する。
【００４６】
本実施形態に係るステップＳ１０２において抽出されるクロック遅延情報は、遅延Ｔ１、ばらつき係数Ｔ２、ホールドタイムＴ３、及び遅延Ｔ４に加えて、モジュール７６２とモジュール７６３のクロック分岐点である分岐点７２１からモジュール７６２のクロック端子までのパス（クロックパス７２６）における遅延Ｔ６と、分岐点７２１からモジュール７６３のクロック端子までのパス（クロックパス７２７）における遅延Ｔ６と、モジュール７６３のホールドタイムＴ７と、データパス７７２における遅延Ｔ８を含む。
【００４７】
ステップＳ２０１において、実行部４１は、ステップＳ１０５で選択したデータパスの終点側のモジュール（第１モジュール）からのデータを処理するモジュールであって分周クロックに同期して動作するモジュール（第２モジュール）を検出し、第１モジュール及び第２モジュールを接続するデータパス（検出データパス）を検出する。ステップＳ２０１において、実行部４１は、検出データパスによって接続されるモジュールペアに関するホールドエラー値を分周器追加前ホールドエラー値として算出する。ステップＳ１０５においてデータパス７７１が選択された場合、実行部４１は、データパス７７２によって接続されるモジュール７６２及び７６３のペアに関する分周器追加前ホールドエラー値ＨＥＶ３を算出する。分周器追加前ホールドエラー値ＨＥＶ３は、下記式：
ＨＥＶ３＝Ｔ６×（Ｔ２−１）＋Ｔ７−Ｔ８
で定義される。
【００４８】
ステップＳ２０２において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、モジュール７６２とモジュール７６３のクロック分岐点からモジュール７６２のクロック端子までのパスにおける遅延Ｔ９と、モジュール７６２とモジュール７６３のクロック分岐点からモジュール７６３のクロック端子までのパスにおける遅延Ｔ９とを算出する。
【００４９】
図１０は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された分周器追加後半導体集積回路６００を示す。本実施形態に係るクロックツリー７００Ａ及び７００Ｂは、第１の実施形態に係るクロックツリー７００Ａ及び７００Ｂと同じである。
【００５０】
したがって、ステップＳ２０２において、実行部４１は、モジュール７６２とモジュール７６３のクロック分岐点としての分岐点７０１からモジュール７６２のクロック端子までのパス（クロックパス７１６及びクロックパス７３５から構成されるパス）における遅延Ｔ９と、分岐点７０１からモジュール７６３のクロック端子までのパス（クロックパス７２５及びクロックパス７２７から構成されるパス）における遅延Ｔ９とを算出する。
【００５１】
ステップＳ２０３において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、データパス７７２によって接続されるモジュール７６２及び７６３のペアに関するホールドエラー値を分周器追加後ホールドエラー値ＨＥＶ４として算出する。分周器追加後ホールドエラー値ＨＥＶ４は、下記式：
ＨＥＶ４＝Ｔ９×（Ｔ２−１）＋Ｔ７−Ｔ８
で定義される。
【００５２】
ステップＳ２０３において、実行部４１は、分周器追加前ホールドエラー値ＨＥＶ３及び分周器追加後ホールドエラー値ＨＥＶ４に基づいて、ホールドエラー削減分ＨＥＲ２を算出する。ホールドエラー削減分ＨＥＲ２は、下記式：
ＨＥＲ２＝ＨＥＶ３−ＨＥＶ４
で定義される。
【００５３】
ステップＳ２０４において、実行部４１は、ステップＳ１０７で算出されたホールドエラー削減分ＨＥＲ１及びステップＳ２０３で算出されたホールドエラー削減分ＨＥＲ２に基づいてホールドエラー削減分ＨＥＲを算出する。ホールドエラー削減分ＨＥＲは下記式：
ＨＥＲ＝ＨＥＲ１＋ＨＥＲ２＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ３−ＨＥＶ４）
で定義される。
【００５４】
ステップＳ１０８において、実行部４１は、ホールドエラー削減分ＨＥＲに基づいて、クロックツリー７００Ａをクロックツリー７００Ｂで置換することで半導体集積回路６００のホールドエラーが削減されるか判定する。実行部４１は、ホールドエラー削減分ＨＥＲが所定の基準値（例えば０ｎｓ）より大きい場合に半導体集積回路６００のホールドエラーが削減されると判定する。
【００５５】
以下、具体的数値を用いて本実施形態に係るクロックツリー形成方法を説明する。遅延Ｔ６が６ｎｓ、ホールドタイムＴ７が０．１ｎｓ、遅延Ｔ８が１ｎｓの場合、分周器追加前ホールドエラー値ＨＥＶ３は０．３ｎｓとなる。更に遅延Ｔ９が８ｎｓの場合、分周器追加後ホールドエラーＨＥＶ４は０．７ｎｓとなる。したがって、ホールドエラー削減分ＨＥＲ２は−０．４ｎｓとなる。ホールドエラー削減分ＨＥＲ１が０．７ｎｓ、ホールドエラー削減分ＨＥＲ２が−０．４ｎｓであるため、ホールドエラー削減分ＨＥＲは０．３ｎｓとなる。
【００５６】
本実施形態によれば、分周クロック信号に同期して動作するモジュールどうしを接続するデータパスが存在する場合であっても、タイミングエラーの値が小さくなるのに比例してタイミング収束のイタレーションを削減することができる。
【００５７】
（第３の実施形態）
本発明の第３の実施形態において、実行部４１は、実行プログラム３１に基づいて第３の実施形態に係るクロックツリー形成方法を実行する。
【００５８】
図１１は、第３の実施形態に係るクロックツリー形成方法のフローチャートである。本実施形態に係るクロックツリー形成方法は、第１の実施形態に係るクロックツリー形成方法において、ステップＳ１０４とステップＳ１０５の間にクロック遅延差分判定ステップＳ３０１、グループ化ステップＳ３０２、及びグループ情報生成ステップＳ３０３を挿入し、ステップＳ１１０を対象グループ処理済判定ステップＳ３０４で置換し、ステップＳ１１１をグループ情報更新ステップＳ３０５で置換したものである。ステップＳ３０１〜Ｓ３０５以外のステップ（ステップＳ１０１〜Ｓ１０９）は、以下の説明を除いて第１の実施形態と同様である。
【００５９】
以下、ステップＳ１０１で生成された分周器追加前回路データが記述する半導体集積回路６００（分周器追加前半導体集積回路６００）の構成が第１の実施形態と異なる場合について、本実施形態に係るクロックツリー形成方法を説明する。
【００６０】
図１２を参照して、本実施形態に係る分周器追加前半導体集積回路６００を説明する。本実施形態に係る分周器追加前半導体集積回路６００は、第１の実施形態に係る分周器追加前半導体集積回路６００に対してモジュール７６４及びデータパス７７３が追加されている。モジュール７６４は、セルとも称され、フリップフロップのような回路が例示される。データパス７７３は、モジュール７６１及びモジュール７６３を接続する。モジュール７６１は、クロック信号に同期して動作し、データパス７７３を介してモジュール７６３にデータを出力する。モジュール７６３は、分周クロック信号に同期して動作し、モジュール７６１からのデータを処理する。本実施形態に係るクロックツリー７２０は、第１の実施形態に係るクロックツリー７２０に対して分岐点７２１とモジュール７６４を接続するクロックパス７２８が追加されている。分周器７５１が生成した分周クロック信号は、分岐点７２１及びクロックパス７２８を経由してモジュール７６４に供給される。
【００６１】
ステップＳ１０２において抽出されるクロック遅延情報は、遅延Ｔ１、ばらつき係数Ｔ２、ホールドタイムＴ３、及び遅延Ｔ４に加えて、モジュール７６２とモジュール７６３のクロック分岐点である分岐点７２１からモジュール７６２のクロック端子までのパス（クロックパス７２６）における遅延Ｔ６と、分岐点７２１からモジュール７６３のクロック端子までのパス（クロックパス７２７）における遅延Ｔ６と、モジュール７６３のホールドタイムＴ７と、データパス７７３における遅延Ｔ１０と、モジュール７６１とモジュール７６３のクロック分岐点である分岐点７０１からモジュール７６１のクロック端子までのパス（クロックパス７１５）における遅延Ｔ１と、分岐点７０１から分岐点７２１を経由してモジュール７６３のクロック端子までのパス（クロックパス７２５及び７２７から構成されるパス）における遅延Ｔ１を含む。
【００６２】
ステップＳ１０３において、データパス７７１及び７７３が抽出される。
【００６３】
したがって、ステップＳ１０４において生成されるパス情報５１のデータ構成は図１３に示されるとおりである。
【００６４】
ステップＳ３０１において、実行部４１は、パス情報５１に基づいて、共通の始点側モジュールにデータパスを介して接続される終点側モジュールを全て検出する。ステップＳ３０１において、実行部４１は、複数の終点側モジュールが検出された場合、複数の終点側モジュールのうちの終点側モジュールＡ及び終点側モジュールＢのクロック分岐点から終点側モジュールＡのクロック端子までのパスにおける遅延とそのクロック分岐点から終点側モジュールＢのクロック端子までのパスにおける遅延との差分を所定の基準値と比較する。遅延どうしの差分が基準値以下の場合、ステップＳ３０２に移る。遅延どうしの差分が基準値以下でない場合、ステップＳ３０３に移る。
【００６５】
より具体的には、ステップＳ３０１において、実行部４１は、モジュール７６２とモジュール７６３のクロック分岐点である分岐点７２１からモジュール７６２のクロック端子までのパス（クロックパス７２６）における遅延Ｔ６と、分岐点７２１からモジュール７６３のクロック端子までのパス（クロックパス７２７）における遅延Ｔ６との差分を基準値と比較する。
【００６６】
ステップＳ３０２において、実行部４１は、終点側モジュール間の遅延差分が基準値以下の終点側モジュールから構成されるグループを生成する。クロックパス７２６における遅延Ｔ６とクロックパス７２７における遅延Ｔ６との差分が基準値以下の場合、ステップＳ３０２において、実行部４１は、モジュール７６２及びモジュール７６３が属するグループ７８１を生成する。
【００６７】
ステップＳ３０３において、実行部４１は、グループ情報５２を生成する。図１４を参照して、グループ情報５２は、パス情報５１中の終点側モジュールの各々のモジュール名とその終点側モジュールが属するグループのグループ名を対応付ける。ステップＳ３０２において同一グループに属することになった複数モジュールには同一グループ名が対応付けられる。ステップＳ３０２において異なるグループに属することになった複数モジュールには異なるグループ名が対応付けられる。
【００６８】
ステップＳ１０５において、実行部４１は、グループ情報５２から任意のグループを選択して、選択したグループに属するモジュールに接続されたデータパスによって接続されるモジュールペアに関するホールドエラー値を分周器追加前ホールドエラー値として算出する。ここで、モジュール７６２及び７６３がグループ７８１に属し、データパス７７１及び７７３がそれぞれモジュール７６２及び７６３に接続されているため、実行部４１は、データパス７７１によって接続されるモジュール７６１及び７６２のペアに関する分周器追加前ホールドエラー値ＨＥＶ１と、データパス７７３によって接続されるモジュール７６１及び７６３のペアに関する分周器追加前ホールドエラー値ＨＥＶ５とを算出する。分周器追加前ホールドエラー値ＨＥＶ１は上述のように定義される。分周器追加前ホールドエラー値ＨＥＶ５は、下記式：
ＨＥＶ５＝Ｔ１×（Ｔ２−１）＋Ｔ７−Ｔ１０
で定義される。
【００６９】
ステップＳ１０６において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、モジュール７６１とモジュール７６２のクロック分岐点からモジュール７６１のクロック端子までのパスにおける遅延Ｔ５と、モジュール７６１とモジュール７６２のクロック分岐点からモジュール７６２のクロック端子までのパスにおける遅延Ｔ５と、モジュール７６１とモジュール７６３のクロック分岐点からモジュール７６１のクロック端子までのパスにおける遅延Ｔ５と、モジュール７６１とモジュール７６３のクロック分岐点からモジュール７６３のクロック端子までのパスにおける遅延Ｔ５とを算出する。
【００７０】
図１５は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された分周器追加後半導体集積回路６００を示す。クロックツリー７００Ｂは、クロックパス７１５の途中の点７１１とモジュール７６２とを接続するクロックパス７３５が追加されていること、クロックパス７３５の途中の点７３１とモジュール７６３とを接続するクロックパス７３８が追加されていること、及び、クロックパス７２６及び７２７が切断されていることがクロックツリー７００Ａと異なる。クロックパス７１５は、分岐点７０１と分岐点７１１を接続するクロックパス７１６と、分岐点７１１とモジュール７６１を接続するクロックパス７１７から構成される。クロックパス７３５は、分岐点７１１と分岐点７３１を接続するクロックパス７３６と、分岐点７３１とモジュール７６２を接続するクロックパス７３７とから構成される。クロックパス７３６は、分周器７５２を備える。分周器７５２は、例えば分周ＦＦである。分周器７５２は、分岐点７１１及び７３１の間に設けられる。分周器７５２は、分岐点７０１及び７１１を経由して供給されるクロック信号に基づいて分周クロック信号を生成し、分周クロック信号をモジュール７６２及び７６３に供給する。すなわち、クロックツリー７００Ｂにおいては、グループ７８１の直近に分周器７５２が挿入（追加）され、モジュール７６１とグループ７８１のクロック分岐点（点７１１）は分岐点７０１よりもモジュール７６１及びグループ７８１に近くなっている。
【００７１】
したがって、ステップＳ１０６において、実行部４１は、モジュール７６１とモジュール７６２のクロック分岐点としての分岐点７１１からモジュール７６１のクロック端子までのパス（クロックパス７１７）における遅延Ｔ５と、分岐点７１１からモジュール７６２のクロック端子までのパス（クロックパス７３５）における遅延Ｔ５と、モジュール７６１とモジュール７６３のクロック分岐点としての分岐点７１１からモジュール７６１のクロック端子までのパス（クロックパス７１７）における遅延Ｔ５と、分岐点７１１からモジュール７６３のクロック端子までのパス（クロックパス７３６及びクロックパス７３８から構成されるパス）における遅延Ｔ５を算出する。
【００７２】
本実施形態に係るステップＳ１０７において、実行部４１は、クロックツリー７００Ａがクロックツリー７００Ｂで置換された場合について、データパス７７１によって接続されるモジュール７６１及び７６２のペアに関するホールドエラー値を分周器追加後ホールドエラー値ＨＥＶ２として算出し、データパス７７３によって接続されるモジュール７６１及び７６３のペアに関するホールドエラー値を分周器追加後ホールドエラー値ＨＥＶ６として算出する。分周器追加前ホールドエラー値ＨＥＶ２は上述のように定義される。分周器追加前ホールドエラー値ＨＥＶ６は、下記式：
ＨＥＶ６＝Ｔ５×（Ｔ２−１）＋Ｔ７−Ｔ１０
で定義される。
【００７３】
ステップＳ１０７において、実行部４１は、分周器追加前ホールドエラー値ＨＥＶ１、分周器追加後ホールドエラー値ＨＥＶ２、分周器追加前ホールドエラー値ＨＥＶ５、及び分周器追加後ホールドエラー値ＨＥＶ６に基づいてホールドエラー削減分ＨＥＲを算出する。ホールドエラー削減分ＨＥＲは下記式：
ＨＥＲ＝（ＨＥＶ１−ＨＥＶ２）＋（ＨＥＶ５−ＨＥＶ６）
で定義される。
【００７４】
ステップＳ１０８において、実行部４１は、ホールドエラー削減分ＨＥＲに基づいて、クロックツリー７００Ａをクロックツリー７００Ｂで置換することで半導体集積回路６００のホールドエラーが削減されるか判定する。実行部４１は、ホールドエラー削減分ＨＥＲが所定の基準値（例えば０ｎｓ）より大きい場合に半導体集積回路６００のホールドエラーが削減されると判定する。
【００７５】
ステップＳ１０８において、半導体集積回路６００のホールドエラーが削減されたと判定された場合はステップＳ１０９に移り、半導体集積回路６００のホールドエラーが削減されたと判定されなかった場合はステップＳ３０４に移る。
【００７６】
ステップＳ３０４において、実行部４１は、グループ情報５２中の全てのグループに関して処理が実行されたか判定する。未処理のグループが残っている場合はステップＳ３０５に移り、そうでない場合はクロックツリー形成方法を終了する。
【００７７】
ステップＳ３０５において、実行部４１は、グループ情報５２から処理済のグループに関する情報を削除する。実行部４１は、グループ７８１に関する処理が実行済みであるため、グループ情報５２からグループ７８１に関する情報を削除する。ステップＳ３０５の後、ステップＳ１０５に戻る。
【００７８】
図１６は、グループ７８１に関する情報が削除されたグループ情報５２を示す。
【００７９】
ステップＳ３０３でグループ情報５２を生成したときにグループ情報５２に含まれていた全てのグループについて上記処理を繰り返した結果得られる半導体集積回路６００を記述する回路データに基づいて実物の半導体集積回路が製造される。
【００８０】
本実施形態によれば、グループごとに処理が実行されるため、処理回数が削減される。
【符号の説明】
【００８１】
２１…クロックツリー生成部
２２…ホールドスラック計算部
２３…バッファ遅延計算部
２４…ＦＦ対集合操作部
２５…バッファ挿入部
２６…ホールドスラック再計算部
２７…入力データ
２８…出力データ
１…クロックツリー形成システム
１０…コンピュータ
１４…サーバコンピュータ
１５…記録媒体
１６…インターネット
１７…記憶部
３１…実行プログラム
３２…ＣＡＤ設計ツール
３３…モデル式
３４…モデルパラメータ
４１…実行部
４２…記憶部
４３…入力部
４４…出力部
５１…パス情報
５２…グループ情報
６００…半導体集積回路
７００Ａ、７００Ｂ、７１０、７２０…クロックツリー
７０１、７１１、７２１、７３１…分岐点
７１５〜７１７、７２５〜７２８、７３５〜７３８…クロックパス
７５１、７５２…分周器
７６１〜７６４…モジュール
７７１〜７７３…データパス
７８１…グループ
【図１】
2011159175.tif 000003
【図２】
2011159175.tif 000004
【図３】
2011159175.tif 000005
【図４】
2011159175.tif 000006
【図５】
2011159175.tif 000007
【図６】
2011159175.tif 000008
【図７】
2011159175.tif 000009
【図８】
2011159175.tif 000010
【図９】
2011159175.tif 000011
【図１０】
2011159175.tif 000012
【図１１】
2011159175.tif 000013
【図１２】
2011159175.tif 000014
【図１３】
2011159175.tif 000015
【図１４】
2011159175.tif 000016
【図１５】
2011159175.tif 000017
【図１６】
2011159175.tif 000018