(57)【要約】      （修正有）【課題】クロック到着時間の同時性を保証するクロック分配ネットワークの設計を容易にする。【解決手段】クロック・ネットワークを構築する方法は、クロック・ネットワークについての設計仕様を受け取る段階を含む。本方法はさらに、前記設計仕様に基づいて前記クロック・ネットワークのトポロジーを決定する段階を含む。本方法はさらに、決定されたトポロジーに基づいて前記クロック・ネットワークについての設計パラメータを決定し、前記設計パラメータを含むクロック・ネットワーク合成ツール仕様ファイルを生成することを含む。本方法はまた、前記仕様ファイルを使って、前記クロック・ネットワークが前記決定されたトポロジーを含み、前記クロック・ネットワークがクロック発生器から前記クロック・ネットワークのエンドポイントまでクロック信号を同期的に分配するよう、前記クロック・ネットワークを合成することを含む。【選択図】図１ａ
2013045459.tif 000002
【特許請求の範囲】
【請求項１】
クロック・ネットワークを構築する方法であって：
クロック・ネットワークについての設計仕様を受け取る段階と；
前記設計仕様に基づいて前記クロック・ネットワークのトポロジーを決定する段階であって、前記トポロジーは、前記クロック・ネットワークの複数のレベル、各レベルについてのバッファ型および各レベルについてのバッファ・ファンアウトのうちの少なくとも一つを示す、段階と；
決定されたトポロジーに基づいて前記クロック・ネットワークについての設計パラメータを決定する段階と；
前記設計パラメータを含むクロック・ネットワーク合成ツール仕様ファイルを生成する段階と；
前記仕様ファイルを使って、前記クロック・ネットワークが前記決定されたトポロジーを含み、前記クロック・ネットワークが前記クロック・ネットワークのクロック発生器からエンドポイントまでクロック信号を同期的に分配するよう、前記クロック・ネットワークを合成する段階とを含む、
方法。
【請求項２】
前記設計仕様が、前記クロック・ネットワークのファンアウト範囲、前記クロック・ネットワークについてのバッファ型の集合および前記クロック・ネットワークについてのエンドポイントの集合のうちの少なくとも一つを含む、請求項１記載の方法。
【請求項３】
前記トポロジーがさらに、特定のレベルに含まれる第一のバッファのバッファ型がその特定のレベルに含まれる第二のバッファのバッファ型とほぼ同じであることを示す、請求項１記載の方法。
【請求項４】
前記トポロジーがさらに、特定のレベルに含まれる第一のバッファのバッファ・ファンアウトがその特定のレベルに含まれる第二のバッファのバッファ・ファンアウトとほぼ同じであることを示す、請求項１記載の方法。
【請求項５】
前記トポロジーがさらに、前記クロック・ネットワークの前記クロック発生器から各エンドポイントまでの、互いのレプリカである経路を示す、請求項１記載の方法。
【請求項６】
前記トポロジーがさらに、前記クロック・ネットワークの偶数個のレベルを示す、請求項１記載の方法。
【請求項７】
前記バッファ型が、前記設計仕様において示されるバッファ型のあらかじめ定義された集合に制約される、請求項１記載の方法。
【請求項８】
前記トポロジーを決定する段階がさらに、前記設計仕様に基づいて前記クロック・ネットワークの各レベルについてバッファの構成を決定することを含む、請求項１記載の方法。
【請求項９】
前記設計パラメータが、前記トポロジーによって示されるところの前記クロック・ネットワークの前記複数のレベル、各レベルについてのバッファ型および各レベルに含まれるバッファについてのバッファ・ファンアウトのうちの少なくとも一つを含む、請求項１記載の方法。
【請求項１０】
前記トポロジーが、前記設計仕様によって許容される限り前記クロック信号から遠いところで分割されたクロックツリーを含む、請求項１記載の方法。
【請求項１１】
コンピュータ可読媒体および該コンピュータ可読媒体上に担持される、プロセッサによって読み取り可能なコンピュータ実行可能命令とを有する製造物であって、前記命令は、読み取られ実行されたとき、前記プロセッサに：
クロック・ネットワークについての設計仕様を受け取る段階と；
前記設計仕様に基づいて前記クロック・ネットワークのトポロジーを決定する段階であって、前記トポロジーは、前記クロック・ネットワークの複数のレベル、各レベルについてのバッファ型および各レベルについてのバッファ・ファンアウトのうちの少なくとも一つを示す、段階と；
決定されたトポロジーに基づいて前記クロック・ネットワークについての設計パラメータを決定する段階と；
前記設計パラメータを含むクロック・ネットワーク合成ツール仕様ファイルを生成する段階とを実行させるものであり、前記仕様ファイルは、クロック・ネットワーク合成ツールが、前記仕様ファイルを使って、前記決定されたトポロジーを含むよう前記クロック・ネットワークを合成し、前記クロック・ネットワークが前記クロック・ネットワークのクロック発生器からエンドポイントまでクロック信号を同期的に分配するよう構成される、
製造物。
【請求項１２】
前記設計仕様が、前記クロック・ネットワークのファンアウト範囲、前記クロック・ネットワークについてのバッファ型の集合および前記クロック・ネットワークについてのエンドポイントの集合のうちの少なくとも一つを含む、請求項１１記載の製造物。
【請求項１３】
前記トポロジーがさらに、特定のレベルに含まれる第一のバッファのバッファ型がその特定のレベルに含まれる第二のバッファのバッファ型とほぼ同じであることを示す、請求項１１記載の製造物。
【請求項１４】
前記トポロジーがさらに、特定のレベルに含まれる第一のバッファのバッファ・ファンアウトがその特定のレベルに含まれる第二のバッファのバッファ・ファンアウトとほぼ同じであることを示す、請求項１１記載の製造物。
【請求項１５】
前記トポロジーがさらに、前記クロック・ネットワークの前記クロック発生器から各エンドポイントまでの、互いのレプリカである経路を示す、請求項１１記載の製造物。
【請求項１６】
前記トポロジーがさらに、前記クロック・ネットワークの偶数個のレベルを示す、請求項１１記載の製造物。
【請求項１７】
前記バッファ型が、前記設計仕様において示されるバッファ型のあらかじめ定義された集合に制約される、請求項１１記載の製造物。
【請求項１８】
前記プロセッサがさらに、前記設計仕様に基づいて前記クロック・ネットワークの各レベルについてバッファの構成を決定することによって前記トポロジーを決定するようにされる、請求項１１記載の製造物。
【請求項１９】
前記設計パラメータが、前記トポロジーによって示されるところの前記クロック・ネットワークの前記複数のレベル、各レベルについてのバッファ型および各レベルに含まれるバッファについてのファンアウトのうちの少なくとも一つを含む、請求項１１記載の製造物。
【請求項２０】
前記トポロジーが、前記設計仕様によって許容される限り前記クロック信号から遠いところで分割されたクロックツリーを含む、請求項１１記載の製造物。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概括的には集積回路に関し、より詳細には集積回路のクロック分配ネットワークの設計および構築のための技法に関する。
【背景技術】
【０００２】
マイクロプロセッサのような同期デジタル集積回路（IC:  integrated  circuit）においてエンドポイント（たとえばフリップフロップ）にクロックを分配するためにクロックツリーが使われる。同期設計は典型的には、あらゆるエンドポイントが同時にクロックされるか、それらのクロックが互いに対して既知のオフセットをもつことを要求する。エンドポイントにおいてクロックの必要とされる到着時間を達成し損なうと、パフォーマンスが劣化する（サイクル時間が長くなる）またはただちに故障する（レース条件）ことにつながる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
クロック到着時間の同時性を保証するクロック分配ネットワークの設計は困難な課題であり、典型的には特殊目的のソフトウェアを必要とする。しかしながら、特殊目的のソフトウェアは、そのソフトウェア・ツールのデフォルト仕様ファイル（「ツール仕様」）に基づくさまざまな設計上の想定およびアルゴリズムを使うことがあり、これは不満足な結果を生じることがある。したがって、クロック・ネットワーク設計者は、クロック・ネットワークの所望されるクロック到着時間を達成しようとして、ツール仕様における一つまたは複数の設計パラメータを手動で入力および変更することが要求されることがある。しかしながら、適正な結果を達成することは、ソフトウェア・ツールにおける一つまたは複数の入力設計パラメータを変更し、それらの設計パラメータに基づいてソフトウェア・ツールでクロック・ネットワークを生成し、生成されたクロック・ネットワークが設計制約条件を満たすかどうかを判定する多くの異なる反復工程を伴うことがある。試行錯誤式のこの手動プロセスは、わずらわしく、時間がかかることがある。
【課題を解決するための手段】
【０００４】
本開示のいくつかの実施形態によれば、クロック・ネットワークを構築する方法は、クロック・ネットワークについての設計仕様を受け取る段階を含む。本方法はさらに、前記設計仕様に基づいて前記クロック・ネットワークのトポロジーを決定する段階を含む。トポロジーは、前記クロック・ネットワークの複数のレベル、各レベルについてのバッファ型および各レベルについてのバッファ・ファンアウトのうちの少なくとも一つを示す。本方法はさらに、決定されたトポロジーに基づいて前記クロック・ネットワークについての設計パラメータを決定し、前記設計パラメータを含むクロック・ネットワーク合成ツール仕様ファイルを生成することを含む。本方法はまた、前記仕様ファイルを使って、前記クロック・ネットワークが前記決定されたトポロジーを含み、前記クロック・ネットワークがクロック発生器から前記クロック・ネットワークのエンドポイントまでクロック信号を同期的に分配するよう、前記クロック・ネットワークを合成することを含む。
【図面の簡単な説明】
【０００５】
本開示およびその利点のより完全な理解のために、ここで付属の図面とともに参酌される以下の説明を参照する。
【図１ａ】本開示に従って構築されるクロック・ネットワークの例を示す図である。
【図１ｂ】本開示のいくつかの実施形態に基づく、クロック・ネットワークのクロックからエンドポイントへの例示的な経路を示す図である。
【図２】本開示に基づく、クロック・ネットワークを設計および／または構築する方法の一つの例を示す流れ図である。
【図３】ツリーがクロック源からできるだけ遠くで分割される、例示的なクロック・ネットワークを示す図である。
【図４】本開示のいくつかの実施形態に基づく、クロック・ネットワークのトポロジーを決定するための例示的な方法を示す図である。
【図５】本開示のいくつかの実施形態に基づく、クロック・ネットワークの設計仕様の一例を示す図である。
【図６】本開示のいくつかの実施形態に基づく、ファンアウト範囲および他の設計仕様に基づく、エンドポイントを駆動するバッファの例示的なバッファ構成を示す図である。
【図７】ａおよびｂは、本開示のいくつかの実施形態に基づく、エンドポイントを駆動するバッファの例示的なバッファ構成を示す図である。
【図８】ａ〜ｃは、本開示のいくつかの実施形態に基づく、エンドポイントを駆動するバッファの他の例示的なバッファ構成を示す図である。
【発明を実施するための形態】
【０００６】
図１ａは、本開示に基づいて設計および／または構築されるクロック・ネットワーク１００を示している。クロック・ネットワーク１００は、マイクロプロセッサのような同期デジタル集積回路（IC）においてエンドポイント１０４（たとえばフリップフロップ）にクロック１０２を分配するために使われるクロックツリーを含んでいてもよい。本実施形態では、クロック・ネットワーク１００は、各エンドポイント１０４がクロック１０２を実質的に同時に受信するよう構成されうる。
【０００７】
クロック・ネットワーク１００は、特殊目的のクロック・ネットワーク合成ソフトウェア（「ソフトウェア・ツール」）およびクロック・ネットワーク・メタ合成ソフトウェアツール（「メタ合成ツール」）を使って設計および／または構築されうる。のちにさらに詳細に述べるように、メタ合成ツールは、クロック・ネットワーク１００の設計者からクロック・ネットワーク１００についての設計仕様を受け取るよう構成されてもよい。受け取った設計仕様に基づいて、メタ合成ツールはクロック・ネットワークのトポロジーを決定してもよい。メタ合成ツールは、クロック・ネットワークのための設計パラメータを決定するためにそのトポロジーを使ってもよい。設計者が所望する設計に従ってソフトウェア・ツールがクロック・ネットワーク１００を合成しうるよう、メタ合成ツールは、それらの設計パラメータを含む、ソフトウェア・ツールのための入力仕様ファイル（「ツール仕様ファイル」）を生成してもよい。したがって、所望されるクロック・ネットワークを達成するためにツール仕様ファイルを変更する、わずらわしく、時間がかかる試行錯誤プロセスが軽減または解消されうる。
【０００８】
図１ａに戻ると、上記のように、クロック・ネットワーク１００は、エンドポイント１０４によって受信されるべきクロック信号を生成するクロック発生器１０２を含んでいてもよい。クロック発生器１０２は、エンドポイント１０４によって受信されうる振動制御信号を生成するよう構成されたいかなる好適なシステム、装置またはデバイスであってもよい。エンドポイント１０４は、クロック信号の受信に際して動作またはステップを実行しうるいかなる好適なシステム、装置またはデバイスであってもよい。本実施形態では、エンドポイント１０４はマイクロプロセッサのフリップフロップを含む。負荷容量などのさまざまな電気的属性のため、クロック・ネットワーク１００は、クロック１０２を各エンドポイント１０４に分配するために使われる一連のバッファ（たとえばバッファ１０６、１０８、１１０および１１２）を含んでいてもよい。のちにさらに詳細に述べるように、バッファは、各エンドポイント１０４が実質的に同時に（すなわち、クロック・ネットワーク１００の許容される公差の範囲内に）クロック信号を受信するよう構成されてもよい。
【０００９】
クロック・ネットワーク１００のバッファ（たとえばバッファ１０６、１０８、１１０および１１２）は、クロック発生器１０２によって生成されたクロック信号をエンドポイント１０４に分配するために使用されうるいかなる好適なシステム、装置またはデバイスであってもよい。いくつかの事例では、バッファは反転器〔インバーター〕または一連の反転器を有していてもよい。クロック・ネットワーク１００のバッファは多様な型であってもよく、多様なサイズを有していてもよい。バッファのサイズは、バッファが大きいほど入力容量が大きいというように、各バッファの入力容量に関係していてもよい。たとえば、バッファ１０６は比較的小さくてもよく、図１ａの「１ｃ」で示されるように1の入力容量を有していてもよい。バッファ１０８はバッファ１０６より大きくてもよく、図１ａの「３ｃ」で示されるように3の入力容量を有していてもよい。バッファ１１０はバッファ１０６、１０８より大きくてもよく、図１ａの「４ｃ」で示されるように4の入力容量を有していてもよい。バッファ１１２はバッファ１１０、１０８、１０６より大きくてもよく、図１ａの「７ｃ」で示されるように7の入力容量を有していてもよい。図１ａの「ｃ」は任意の適切な容量の単位（たとえば、ファラド、マイクロファラドなど）を指しうる。
【００１０】
バッファ１０６、１０８、１１０および１１２は、クロック・ネットワーク１００内で、一連のステージおよびレベルとして分配されうる。ステージは、ワイヤを通じて負荷（たとえば別のバッファまたはエンドポイント１０４）を駆動する駆動ゲート（たとえばバッファ）を指してもよい。それにより、駆動するバッファから負荷にクロック信号が渡されうる。たとえば、クロック・ネットワーク１００は、バッファ１０６がバッファ１０８を駆動しうるステージ１１４を含んでいてもよい。クロック・ネットワーク１００はまた、バッファ１０８がバッファ１１０を駆動しうるステージ１１６；バッファ１１０ａがバッファ１１２ａおよび１１２ｂを駆動しうるステージ１１８ａ；バッファ１１０ｂがバッファ１１２ｃおよび１１２ｄを駆動しうるステージ１１８ｂ；および諸バッファ１１２がそれぞれ一群のエンドポイント１０４を駆動しうる諸ステージ１２０をも含んでいてもよい。いくつかの実施形態では、駆動バッファによって駆動される負荷（たとえば、別のバッファまたはエンドポイント１０４）はシンクと称されてもよく、駆動バッファはルート〔根〕と称されてもよい。
【００１１】
レベルは、クロック発生器１０２から同じ距離である、あるステージの一つまたは複数の駆動バッファを指しうる。本実施形態では、クロック・ネットワーク１００は、バッファ１０６を含むレベル１２２、バッファ１０８を含むレベル１２４、諸バッファ１１０を含むレベル１２６、諸バッファ１１２を含むレベル１２８を含みうる。よって、本実施形態では、各レベルは同じ型の駆動バッファを含んでいてもよい。あるレベルの諸バッファは、互いに同一であってもよく、あるいは同様の属性を有していてもよい。同様の属性を有するバッファは互いの「レプリカ」と称されてもよい。より具体的には、用語ファンアウトを、ドライバが駆動する出力容量（負荷）の、該ドライバの入力容量に対する比として定義すると、同じファンアウト属性をもつ二つのバッファは互いのレプリカと考えてもよく、同じ遅延を示しうる。たとえば、のちにさらに論じるように、バッファのサイズおよび入力容量が、同じであることが必要となりうる、ある特定のレベルについてのバッファの属性であってもよい。というのも、これらがバッファに関連する遅延に影響しうる属性だからである。よって、たとえある特定のレベルの駆動バッファがあらゆる側面において同一でなくても、ある特定のレベルのすべての駆動バッファは同じ入力容量を有していてもよい（たとえばレベル１２８の諸バッファ１１２は入力容量7を有していてもよい）。
【００１２】
各レベルにおいて同じバッファ型（たとえば同じファンアウトをもつ諸バッファ）をもつことによって、クロック発生器１０２から各エンドポイント１０４への経路は遅延に関して同じとなりうる。よって、クロック発生器１０２から各エンドポイント１０４への諸経路は、たとえそれらの経路が物理的に同一でなくても、遅延に関して互いのレプリカとなりうる。たとえば、図１ｂは、クロック発生器１０２から各エンドポイント１０４への例示的な経路を示している。図１ｂは、クロック発生器１０２からエンドポイント１０４への経路がバッファ１０６、バッファ１０８、バッファ１１０およびバッファ１１２を含むことを示している。この経路は、図１ａに見られるように、エンドポイント１０４に関わりなく、各エンドポイント１０４について同じであってもよい。
【００１３】
各レベルについてのクロック・ネットワーク１００におけるバッファの数、型およびサイズは、クロック・ネットワーク１００のバッファについての所望されるファンアウトまたはファンアウト範囲に基づいていてもよい。上述したように、バッファのファンアウトは、バッファ上の全負荷容量の、該バッファの入力容量に対する比であってもよい。ファンアウトは、あるバッファから別のバッファに移るクロック信号が経験する遅延の量を示しうる。したがって、ファンアウトが小さいほど遅延も小さく、ファンアウトが大きいほど遅延も大きい。しかしながら、より小さなファンアウトでは、より多数のバッファおよびレベルが必要とされることがある。したがって、クロック・ネットワーク１００のファンアウトまたはファンアウト範囲は、クロック・ネットワーク１００の特定の設計仕様を満たすよう、クロック・ネットワーク設計者によって決定されてもよい。さらに、ファンアウトは遅延に関係しているので、クロック発生器１０２から各エンドポイント１０４までの遅延が同じであることを保証するよう、クロック・ネットワーク１００のある特定のレベルにおける各バッファのファンアウトは同じであってもよい。
【００１４】
バッファの負荷容量は、バッファによって駆動される一つまたは複数のシンク（たとえばバッファおよび／またはエンドポイント）の容量を含んでいてもよい。さらに、バッファの負荷容量は、駆動バッファを負荷に結合する接続（たとえばワイヤ）の任意の寄生容量を含んでいてもよい。たとえば、バッファ１０６の負荷容量は、バッファ１０８の容量（3）およびバッファ１０６をバッファ１０８に結合するワイヤの容量（1）を含んでいてもよく、バッファ１０６の負荷容量は4（1＋3）となりうる。よって、バッファ１０６のファンアウトは、バッファ１０６の負荷容量（4）の、バッファ１０６の入力容量（1）に対する比であってもよく、バッファ１０６のファンアウトは4となりうる（4/1＝4）。同様に、バッファ１０８の負荷容量はバッファ１１０ａ（4）および１１０ｂの容量と、バッファ１０８をバッファ１１０に結合するワイヤの容量（それぞれ2）とを合わせたものであってもよい。よって、バッファ１０８の負荷容量は12（4＋4＋2＋2）となりうる。さらに、バッファ１０８のファンアウトも4となりうる。というのも、負荷容量（12）を、バッファ１０８の入力容量（3）で割ると4になるからである（12/3＝4）。バッファ１１０および１１２のファンアウトは、それらのバッファに関連する負荷および入力容量に基づいて、同様に計算されうる。
【００１５】
上述したように、クロック１０２から各エンドポイント１０４までの遅延が同じであることを保証するため、ある特定のレベル内の各バッファのファンアウトは同じであってもよい。たとえば、バッファ１１０ａおよび１１０ｂのファンアウトは同じであってもよい（たとえば今の例では4）。それにより、クロック信号は、バッファ１１２ａおよび１１２ｂではバッファ１１０ａから、バッファ１１２ｃおよび１１２ｄではバッファ１１０ｂから、同時に受信される。本実施形態では各駆動バッファのファンアウトは同じ（たとえば4）として描かれているが、あるレベルでの駆動バッファのファンアウトが異なるレベルでの駆動バッファのファンアウトとは異なっていてもよいことは理解される。各レベルに関連する諸バッファのファンアウトが同じで、指示されるファンアウト範囲内であればよいのである。
【００１６】
したがって、クロック・ネットワーク１００は、各エンドポイント１０４が、クロック発生器１０２によって生成されたクロック信号を、実質的に同時に受信するよう構成されてもよい。上述し、また下記でさらに詳細に述べるように、クロック・ネットワーク１００は、クロック合成ツールがクロック・ネットワーク１００の設計者が構想した設計仕様に従ってクロック・ネットワーク１００を合成しうるよう、クロック合成ツールのためのツール仕様ファイルを生成するよう構成されたメタ合成ツールを使って設計および／または構築されてもよい。
【００１７】
本開示の範囲から外れることなく、図１ａおよび１ｂに修正、追加または省略をしてもよい。たとえば、エンドポイント、ステージ、バッファおよび／またはレベルの数は、クロック・ネットワーク１００を含みうる集積回路の設計特性に依存して変化してもよい。さらに、バッファおよびワイヤのサイズおよび容量は単に例解のためである。
【００１８】
図２は、本開示に基づく、クロック・ネットワークを設計および／または構築する方法２００の一例を示す流れ図である。方法２００は、任意の好適なシステム、装置またはデバイスによって実行されうる。本実施形態では、方法２００は、プロセッサおよびメモリを含んでいてもよい情報処理システムによって実行されうる。
【００１９】
情報処理システム（IHS:  information  handling  system）は任意の型の情報、諜報またはデータを、ビジネス、科学、制御、娯楽またはその他の目的のために、計算、分類、処理、送信、受信、検索、発生、切り換え、記憶、表示、表出、検出、記録、再現、処理または利用するよう構成された手段または手段の集合を有していてもよい。たとえば、情報処理システムはパーソナル・コンピュータであってもよい。
【００２０】
情報処理システムのプロセッサは、プログラム命令を解釈および／または実行するおよび／またはデータを処理するよう構成された任意の好適なシステム、装置またはデバイスであってもよく、限定することなく、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）またはプログラム命令を解釈および／または実行するおよび／またはデータを処理するよう構成された他の任意のデジタルもしくはアナログ回路を含みうる。本実施形態では、情報処理システムのプロセッサが方法２００の各ステップを実行してもよい。
【００２１】
メモリは、プログラム命令またはデータをある時間期間にわたって保持するよう構成されたいかなるシステム、デバイスまたは装置（たとえばコンピュータ可読媒体）であってもよい。メモリはランダム・アクセス・メモリ（RAM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）、PCMCIAカード、フラッシュ・メモリ、磁気記憶、光磁気記憶または電源投入後それぞれのプロセッサがオフにされるまでデータを保持する揮発性もしくは不揮発性メモリの任意の好適な選択および／またはアレイを含んでいてもよい。本実施形態では、メモリは前記プロセッサに通信上結合されてもよく、方法２００を実行するための命令を含んでいてもよい。たとえば、メモリは、クロック・ネットワーク・メタ合成ソフトウェア・ツールおよびクロック・ネットワーク合成ソフトウェア・ツールを実行するための命令を含んでいてもよい。よって、プロセッサは、該メモリ上の命令にアクセスし、方法２００を実行するよう構成されてもよい。
【００２２】
方法２００が始まり、ステップ２０２において、メタ合成ツールがクロック・ネットワークの設計者から設計仕様を受け取ってもよい。設計仕様は、一つまたは複数のクロック・ネットワークによって駆動されうるエンドポイントを含んでいてもよい。それらのエンドポイントは、特定のクロック・ネットワークに関連付けられてもよい特定のクロック・ドメインに関連付けられた諸グループにおいて受け取られてもよい。設計仕様は、クロック・ドメインに関連付けられた各クロック・ネットワークに含まれていてもよい種々のバッファ型（たとえば、入力容量によって示されるバッファ・サイズ）をも含んでいてもよい。さらに、設計仕様は、各クロック・ドメインについての最大ファンアウトおよび最小ファンアウトを含んでいてもよい。それにより、各クロック・ネットワークについてのファンアウト範囲が決定されうる。ファンアウト範囲は、各クロック・ネットワークに関連する各クロック・ドメインのさまざまなタイミングおよび設計上の制約条件に基づいていてもよい。
【００２３】
ステップ２０４では、メタ合成ツールが、ステップ２０２で受け取った設計仕様に基づいて各クロック・ドメインについて各クロック・ネットワークのトポロジーを決定してもよい。図４の方法４００に関してより詳細に述べるように、メタ合成ツールは前記トポロジーに基づいて一連の設計パラメータを決定してもよい。それらの設計パラメータは、合成ツールが決定されたトポロジーに従ってクロック・ネットワークを合成するよう、合成ツールによって使用されうるツール仕様ファイルに含められてもよい。
【００２４】
たとえば、トポロジーは、すべてのレベルの各ステージ（たとえば駆動バッファ）のファンアウトがファンアウト範囲内であり、かつ特定のレベル内の各バッファについてのファンアウトが同じでありうるよう決定されてもよい。さらに、トポロジーは、クロック源からすべてのエンドポイントへの経路が、同数のステージまたはレベルを通過するという点で同じでありうるよう、決定されてもよい。さらに、決定されたトポロジーは、クロック信号が、各エンドポイントに到達する際に、同じ型のバッファ（たとえば同じサイズの諸バッファ）を通過しうるようなものであってもよい。上記のように、各エンドポイントについて同一の経路の例は、図１ａおよび１ｂに示されている。指定されたトポロジーは、ステップ２０２において受け取った、バッファのあらかじめ定義された集合内のバッファのみを含んでいてもよい。
【００２５】
さらに、トポロジーは、ツリーがクロック源からできるだけ遠くで分枝に分割されるよう、決定されてもよい。図３は、ツリーがクロック源からできるだけ遠くで分割される例示的なクロック・ネットワーク３００を示している。クロック・ネットワーク３００はバッファ３０４、３０６、３０８および３１０ならびにエンドポイント３１２を含む。この個別的な例では、クロック・ネットワーク３００のツリーの分割は、バッファ３１０がエンドポイント３１２を駆動するまで生起しなくてもよい。クロック・ネットワークの他の実施形態では、分割は、図１ａのクロック・ネットワーク１００におけるバッファ１０８でなど、より早期に生起してもよい。
【００２６】
図２に戻ると、ステップ２０４のメタ合成の間に決定されたトポロジーは、クロック源とエンドポイントとの間の、ファンアウト範囲に従うステージの最小数が得られるようなものであってもよい。最後に、バッファが単一の反転器を含む事例では、トポロジーは、クロック源からエンドポイントへの任意の経路に関連付けられた偶数個のステージが得られるよう決定されてもよい。反転器がクロック信号を反転させるため、バッファが反転器を有する場合には、エンドポイント１０４で受信されるクロック信号がクロック源で生成されるクロック信号と比較して反転していないよう、偶数個のステージが望ましいことがある。
【００２７】
ステップ２０５では、メタ合成ツールは、クロック・ネットワークの決定されたトポロジーに基づいて設計パラメータを決定してもよい。設計パラメータは、クロック・ネットワークに含まれるエンドポイントの数を示していてもよい。さらに、設計パラメータは、クロック・ネットワークについてのレベルの数および各レベルについてのステージ（たとえば駆動バッファ）の数を示していてもよい。設計パラメータはまた、各バッファについての所望されるファンアウトおよび各レベルで使われるべきバッファの型を示していてもよい。
【００２８】
ステップ２０４および２０５で実行されたメタ合成に続いて、メタ合成ツールはステップ２０６において、ステップ２０５で決定された設計パラメータを含むツール仕様ファイルを生成してもよい。ツール仕様ファイルは、クロック・ネットワーク合成ツールによって、クロック・ネットワークを合成するための入力として読まれることのできるいかなる好適なファイルであってもよい。
【００２９】
ステップ２０８において、IHSのクロック合成ツールは、ステップ２０６で生成されたツール仕様ファイルに基づいてクロック・ネットワークを合成してもよい。クロック合成ツールは、クロック・ネットワークを合成するよう構成されたいかなる好適なプログラムを含んでいてもよい。仕様ファイルに含まれる設計パラメータは、ステップ２０５で決定されたトポロジーをもち、よってクロック・ネットワークについての設計者のビジョンに従うクロック・ネットワークを生成するために、合成ツールによって使用されてもよい。ステップ２０８に続いて、方法２００は終了してもよい。
【００３０】
したがって、方法２００は、クロック・ネットワーク合成ツールに対する一意的なコントロールを設計者に与えることによって所望されるクロック・ネットワークを生成するために使用されてもよい。メタ合成プロセスを含めることによって、方法２００は、クロック・ネットワーク合成を二つのフェーズに分離しうる。メタ合成フェーズは、設計者にとってクロック・ネットワークのより高いレベルの抽象化（たとえば、ファンアウト範囲、バッファ型、エンドポイントの数など）を提供し、該より高いレベルの設計仕様に基づいてツール仕様ファイルを生成する。次いで仕様ファイルは、低レベルの実装を得るために合成ツールによって使用されうる。よって、この分離は、設計者が、クロック・ネットワークのより高いレベルの設計上の諸側面に集中することを許容し、従来のクロック・ネットワーク合成ツールに関連する限界を回避するすべを提供する。
【００３１】
本開示の範囲から外れることなく、図２に対して修正、追加または省略がなしうる。たとえば、図４に関してより詳細に述べるように、ステップ２０４および２０５のメタ合成は、クロック・ネットワークのトポロジーおよび設計パラメータを決定するための複数のステップを含んでいてもよい。さらに、いくつかの実施形態では、一つのIHSがメタ合成を実行する（たとえば、トポロジーを決定し、ツール仕様ファイルを生成する）よう構成されていてもよく、一方、クロック合成ツールが記憶されている別のIHSがツール仕様ファイルを受け取って、それに従ってクロック・ネットワークを合成してもよい。
【００３２】
図４は、本開示のいくつかの実施形態に基づく、クロック・ネットワークのトポロジーを決定するための例示的な方法４００を示している。方法４００は、情報処理システムのメモリに埋め込まれた命令を含むメタ合成ツールによって実行されてもよい。該IHSは、該情報処理システムの前記メモリに埋め込まれた前記メタ合成ツール命令を実行するよう構成されたプロセッサを含んでいてもよい。
【００３３】
方法４００が始まり、ステップ４０２において、メタ合成ツールはクロック・ネットワーク設計者から、該設計者によって設計されるクロック・ネットワークに含められてもよいバッファ型（たとえば、入力容量によって示されるバッファ・サイズ）のリストを受け取ってもよい。よって、クロック・ネットワークのバッファは、ステップ４０２において設計者から受け取ったあらかじめ定義された集合に限定されてもよい。ステップ４０４では、メタ合成ツールは、クロック・ネットワークについてのファンアウト範囲を受け取ってもよい。上述したように、ファンアウト範囲は、クロック・ネットワークの各ステージについての最小ファンアウトおよび最大ファンアウトを含んでいてもよい。さらに、ステップ４０６では、メタ合成ツールは、クロック・ネットワークのクロック・ドメイン内になりうる、よってクロック・ネットワークによって分配されるクロックによって駆動されうるエンドポイント（たとえばフリップフロップ）のリストを受け取ってもよい。よって、ステップ４０２ないし４０６では、メタ合成ツールは、図２の方法２００のステップ２０２と同様に、クロック・ネットワークについての設計仕様を受け取ってもよい。特定の順序で開示されているが、ステップ４０２ないし４０６は異なる順序で、同時に、またはその任意の組み合わせで実行されてもよい。
【００３４】
ステップ４０８では、メタ合成ツールは、ステップ４０６で受け取られるエンドポイントを、一つまたは複数のバッファによって駆動されるべきシンクとしてラベル付けしてもよい。ステップ４１０では、メタ合成ツールは、それらのシンクを駆動するバッファのあるレベルについて、ステップ４０２で受け取ったバッファ型のリストに含まれる各バッファ型についてシンクを駆動するために必要とされうるバッファの構成を決定してもよい。各バッファ型について決定されたバッファ構成は、ステップ４０４で受け取られたファンアウト範囲および他の設計仕様（たとえばエンドポイント５１０の数、エンドポイント５１０の入力容量、ワイヤ５１２の容量など）に基づいていてもよい。バッファ構成はまた、クロック・ネットワークの他の所望される属性にも基づいていてもよい。たとえば、レベル内の各バッファは、クロック・ネットワークの同期的な性質を保証するよう、同じファンアウトをもつ必要があってもよい。したがって、各バッファ型についての構成は、各バッファがファンアウト範囲内の同じファンアウトをもつよう決定されてもよい。同じファンアウトをもたないおよび／またはファンアウト範囲内でない構成は破棄および／または無視されてもよい。
【００３５】
図５ないし図８は、バッファのリストの各バッファ型について複数のシンクを駆動するバッファの構成を決定するためにメタ合成ツールによって生成および／または解析されうる例示的なバッファ構成を示している。たとえば、図５は、図４の方法４００のステップ４０２〜４０６で受領される設計仕様の例を示している。図５は、メタ合成ツールによって受領されるバッファのリストに含まれうるバッファ型のバッファ集合５０１を示している。今の例では、バッファ集合５０１は、入力容量1をもつバッファ型に一致しうるバッファ５０２、入力容量2をもつバッファ型に一致しうるバッファ５０４および入力容量3をもつバッファ型に一致しうるバッファ５０６を含んでいてもよい。
【００３６】
図５はまた、設計されているクロック・ネットワークを通じて分配されるクロックによって駆動されうるエンドポイント５１０のエンドポイント集合５０８をも示している。今の例では、エンドポイント集合５０８は、それぞれ入力容量2を含みうるエンドポイント５１０ａないし５１０ｈを含んでいてもよい。さらに、今の例では、各エンドポイント５１０は、該エンドポイント５１０をバッファに結合しうる、関連するワイヤ５１２に結合されていてもよい。今の例では、各ワイヤ５１２は容量1をもっていてもよい。したがって、この例では、各エンドポイント５１０およびワイヤ５１２がエンドポイント５１０を駆動するバッファ上に誘起しうる負荷容量は4となりうる。さらに、（図４の方法４００のステップ４０４でクロック・ネットワーク設計者によって示される）クロック・ネットワークの最大（「max」）ファンアウトは5であってもよく、クロック・ネットワークについての最小（「min」）ファンアウトは3であってもよく、そのためクロック・ネットワークについてのファンアウト範囲は3から5までの間であってもよい。
【００３７】
図６ないし図８に関してさらに詳細に示されるように、メタ合成ツールは、エンドポイントをシンクとしてラベル付けしてもよく、バッファ集合５０１の各バッファ型（たとえばバッファ型５０２、バッファ型５０４およびバッファ型５０６）について、諸エンドポイント５１０を駆動する諸バッファの構成を、最大ファンアウトおよび最小ファンアウトならびに指示される他の設計仕様（たとえば、エンドポイント５１０の数、エンドポイント５１０の入力容量、ワイヤ５１２の容量など）に基づいて決定してもよい。よって、下記でさらに述べるように、メタ合成ツールは、バッファ集合５０１の各バッファについて、クロック・ネットワークの、エンドポイント５１０を駆動するレベルについてバッファ構成を決定してもよい。
【００３８】
たとえば、図６は、ファンアウト範囲および他の設計仕様（たとえば、エンドポイント５１０の数、エンドポイント５１０の入力容量、ワイヤ５１２の容量など）に基づく、エンドポイント５１０を駆動するバッファ５０２の例示的なバッファ構成６００を示している。ワイヤ５１２を介してエンドポイント５１０に結合されたバッファ５０２のファンアウトは、バッファ３０２の負荷容量（たとえばエンドポイント５１０の容量をワイヤ５１２の容量と組み合わせたもの）の、バッファ５０２の入力容量に対する比が3であるため、3であってもよい。さらに、二本のワイヤ５１２を介して二つのエンドポイント５１０に結合されたバッファ５０２のファンアウトは6であってもよい。上述したように、今の例における許容されるファンアウト範囲は3から5までの間であってもよい。したがって、今の例において、一つのエンドポイント５１０を駆動するバッファ５０２はファンアウト範囲内でありうるが、二つ以上のエンドポイント５１０を駆動するバッファ５０２はファンアウト範囲外のファンアウトを生じることがありうる。結果として、メタ合成ツールは、各バッファ５０２が個別のエンドポイントを駆動しているバッファ構成６００が、エンドポイント５１０を駆動するバッファ５０２の、今の例のファンアウト範囲に従う唯一の構成であると判定してもよい。各バッファ５０２についてのファンアウトは同じになりうる。したがって、メタ合成ツールは、バッファ構成６００が、設計仕様に従う構成であり、考慮されてもよいと判定してもよい。メタ合成ツールは同様に、エンドポイント５１０を駆動するバッファ５０４およびエンドポイント５１０を駆動するバッファ５０６についてのバッファ構成を決定しうる。
【００３９】
図７のａおよびｂは、エンドポイント５１０を駆動するバッファ５０４のバッファ構成７００および７０２をそれぞれ示している。図７のａは、各バッファ５０４が二つのエンドポイント５１０を駆動し、各バッファ５０４のファンアウトが3であるバッファ構成７００を示している。上述したように、この特定の例でのファンアウト範囲は3ないし5であり、したがって、各バッファ５０４のファンアウトはファンアウト範囲内である。さらに、バッファ構成７００では、各バッファ５０４は同じファンアウトをもち、そのため諸エンドポイント５１０に分配されるクロック信号の遅延は同じになりうる。よって、メタ合成ツールはバッファ５０４についてのバッファ構成７００が設計仕様に従い、考慮されてもよい構成であることを判定できる。
【００４０】
図７のｂは、バッファ５０４ａおよび５０４ｂがそれぞれ三つのエンドポイント５１０（バッファ５０４ａについてはエンドポイント５１０ａ〜５１０ｃ、バッファ５０４ｂについてはエンドポイント５１０ｄ〜５１０ｆ）を駆動し、指示されたファンアウト範囲内であるそれぞれ4.5のファンアウトをもつバッファ構成７０２を示している。さらに、バッファ構成７０２は、エンドポイント５１０ｇおよび５１０ｈに結合された、やはり指示されたファンアウト範囲内のファンアウト3をもつバッファ５０４ｃを含んでいてもよい。しかしながら、バッファ構成７０２における各バッファ５０４のファンアウトはファンアウト範囲内であるが、メタ合成ツールは、バッファ構成７０２を破棄または無視してもよい。バッファ５０４ａおよび５０４ｂのファンアウトがバッファ５０４ｃのファンアウトと同じでないことがあるからである。
【００４１】
図８のａ、ｂ、ｃは、エンドポイント５１０を駆動するバッファ５０６のバッファ構成８００、８０２および８０４をそれぞれ示している。図８のａは、バッファ５０４ａおよび５０４ｂがそれぞれエンドポイント５１０ａないし５１０ｃおよび５１０ｄないし５１０ｆを駆動するバッファ構成８００を示している。さらに、バッファ構成８００のバッファ５０６ｃは残りのエンドポイント５１０ｇおよび５１０ｈを駆動してもよい。バッファ構成８００におけるバッファ５０６ａおよび５０６ｂのファンアウトは3であってもよく、よって今の例の3ないし5というファンアウト範囲内でありうる。しかしながら、バッファ５０６ｃのファンアウトは2となりえ、これは今の例の3ないし5というファンアウト範囲外でありうる。さらに、各バッファ５０４のファンアウトは同じでないことがありうる。したがって、メタ合成ツールはバッファ構成８００を無視および／または破棄してもよい。
【００４２】
図８のｂは、エンドポイント５１０ａないし５１０ｄを駆動するバッファ５０６ａおよびエンドポイント５１０ｅないし５１０ｈを駆動するバッファ５０６ｂを含むバッファ構成８０２を示している。各バッファ５０６ａおよび５０６ｂのファンアウトは4であってもよく、これは今の例についての3ないし5というファンアウト範囲内である。ファンアウトがファンアウト範囲内にあり、バッファ構成８０２の両方のバッファ３０６ａおよび３０６ｂについて同じであるため、バッファ構成８０２はクロック・ネットワークの設計制約条件を満たすことができ、メタ合成ツールによって、設計仕様に従う、バッファ５０６のバッファ構成と考えられてもよい。
【００４３】
図８のｃは、エンドポイント５１０ａないし５１０ｅを駆動するバッファ５０６ａおよびエンドポイント５１０ｆないし５１０ｈを駆動するバッファ５０６ｂを含むバッファ構成８０４を示している。バッファ構成８０４では、バッファ５０６ａのファンアウトは5であってもよく、これはこの特定の例のファンアウト範囲内でありえ、バッファ５０６ｂのファンアウトは3であってもよく、これもこの特定の例のファンアウト範囲内でありえる。しかしながら、バッファ構成８０４についてはファンアウトが同じでないため、メタ合成ツールは、バッファ構成８０４を無視および／または破棄してもよい。
【００４４】
したがって、図５〜図８に示されるように、メタ合成ツールは、各バッファ型について、設計仕様に従う、エンドポイントを駆動するバッファ構成（たとえば、バッファ５０２についてのバッファ構成６００、バッファ５０４についてのバッファ構成７００およびバッファ５０６についてのバッファ構成８０２）を決定しうる。
【００４５】
本開示の範囲から外れることなく、図５〜図８に修正、追加または省略をしてもよい。バッファおよびエンドポイントの特定の数および型、特定のファンアウト範囲などは、単にいかにしてメタ合成ツールが設計上の考慮に従うバッファ構成を判別しうるかを例解するための例として使われている。クロック・ネットワークの個別的な設計に基づいて、本開示の範囲内で多くの変形がありうることは理解されるものである。
【００４６】
図４に戻ると、メタ合成ツールがバッファのリストにおいて示される各バッファ型についてバッファ構成を決定しうるステップ４１２に続いて、ステップ４１４では、メタ合成ツールは、ステップ４１２で決定されたバッファ構成に基づいて現在解析されているレベルについてバッファ構成を選択してもよい。いくつかの実施形態では、メタ合成ツールは、最小数のステージ（たとえば駆動バッファ）をもつバッファ構成を選択してもよい。最小数のステージをもつ構成を選択することによって、メタ合成ツールはクロック・ネットワークのレベルおよび／またはステージの数を、設計上の制約条件に従う最小になるよう（たとえば、設計者によって指示されるバッファ型およびファンアウトについて最小になるよう）、減らしうる。さらに、上記のように、各構成は同じバッファ型を含んでいてもよく、したがって、クロック・ネットワークのそのレベルについてある構成を選択することによって、メタ合成ツールは、そのレベルについてのバッファ型が同じになることを保証してもよい。さらに、上記で説明したように、各バッファのファンアウトも同じであってもよい。
【００４７】
たとえば、図５ないし図８に戻ると、メタ合成ツールは、図６、図７のａ、図８のｂのバッファ構成６００、７００および８０２のうちのどれがエンドポイント５１０を駆動するレベルとして使用されうるかを決定してもよい。今の例では、メタ合成ツールは、最小数のステージをもつバッファ構成を選択してもよい。図６、図７のａおよび図８のｂにおいてそれぞれ示したように、バッファ構成６００は8個のステージを含んでいてもよく、バッファ構成７００は4個のステージを含んでいてもよく、バッファ構成８０２は2個のステージを含んでいてもよい。よって、メタ合成ツールはエンドポイント５１０を駆動するそのレベルについてのバッファ構成８０２を選択してもよい。したがって、メタ合成ツールは、エンドポイント５１０を駆動するバッファに関連するクロック・ネットワークのレベルについて、トポロジー（たとえばバッファ構成８０２）を決定しうる。
【００４８】
ステップ４１４に続いて、方法４００はステップ４１５に進んでもよい。ステップ４１５において、メタ合成ツールは、ステップ４１４で選択されたトポロジー（たとえばバッファ構成）に基づいて、解析されているクロック・ネットワークの現在レベルについて設計パラメータを決定してもよい。たとえば、上記の例で選択されたバッファ構成８０２に関しては、メタ合成ツールは、クロック・ネットワークがそれぞれ容量2をもつ8個のエンドポイント５１０を含むことを示す、その特定のレベルについての設計パラメータを決定してもよい。設計パラメータは、エンドポイント５１０が入力容量3をもつ二つのバッファ５０６によって駆動されうること、それら二つのバッファ５０６がファンアウト4をもつことをも指示してもよい。
【００４９】
ステップ４１５に続いて、メタ合成ツールは、現在解析されているレベルにおけるステージの数が1に等しいかどうかを判定してもよい。ステージの数が1より多ければ、方法４００はステップ４１８に進んで、メタ合成ツールはたった今解析したステージの諸バッファをシンクとラベル付けしてもよい。ステップ４１８に続いて、方法４００はステップ４１０〜４１６に戻ってもよく、ここで、今やシンクとラベル付けされたバッファを駆動するためのバッファ構成が選択されてもよい。まずエンドポイントに基づいてバッファ構成を生成し、それらのエンドポイントを駆動するバッファを駆動するためのバッファ構成を決定するという具合に後ろ向きに進んで、最後にクロック発生器に到達することにより、そして特定のレベルについては最小数のバッファを使うことにより、方法４００は、クロック・ネットワークが、該クロック・ネットワークのクロック発生器からできるだけ遠くで分割されることを保証しうる。
【００５０】
たとえば、図５〜図８の例では、バッファ構成８０２が、エンドポイント５１０を駆動するレベルについての所望されるトポロジーとして選択されうる。バッファ構成８０２におけるステージ（たとえばバッファ５０６）の数は2であってもよく、その結果、1より大きい。よって、メタ合成ツールは、バッファ５０６をシンクとしてラベル付けしてもよく、次いで、バッファ構成８０２を決定し選択するために図５〜図８において上述したのと同様の仕方でバッファ５０６を駆動しうるバッファ構成を決定してもよい。
【００５１】
上述したように、ステップ４１６において当該レベルにおけるステージの数が1に等しい場合、方法４００はステップ４２０に進んでもよい。今の例では、ステップ４２０では、メタ合成ツールはクロック・ネットワークにおいて偶数個のレベルがあるかどうかを判定してもよい。偶数個のレベルがあれば、方法４００はステップ４２２に進んでもよく、そうでなければ、別のレベルが加えられるよう、方法４００はステップ４１８および４１０ないし４１６に戻ってもよい。ステップ４２０は、バッファが単一の反転器を含む実施形態において、エンドポイントによって受信されるクロック信号が判定されないことを保証するよう使用されてもよい。奇数個の反転器は反転された信号を生成するのに対し、偶数個の反転器は反転された信号をもたないからである。バッファが直列の二つの反転器を有する実施形態では、クロック信号の反転が起こらないことがありうるので、ステップ４２０は不要であることがある。
【００５２】
クロック・ネットワークにおけるレベルが偶数個である場合、方法４００はステップ４２２に進んでもよい。ここで、メタ合成ツールは、上記で決定されたトポロジーおよび諸レベルの設計パラメータに基づいてクロック・ネットワークのための設計パラメータを決定してもよい。たとえば、メタ合成ツールは、クロック・ネットワークのレベルの数、各レベルについてのステージの数、各レベルおよびステージについて使用されるバッファ、各バッファのファンアウトなどを含む設計パラメータを決定するために、各レベルについて決定されたバッファ構成を解析してもよい。
【００５３】
ステップ４２４では、メタ合成ツールは合成ツールのための仕様ファイルを生成してもよい。仕様ファイルは、ステップ４２２に関して上記した設計パラメータを含む。仕様ファイルは、合成ツールが決定されたトポロジーに従ってクロック・ネットワークを合成するよう、設計パラメータを含んでいてもよい。さらに、上述したように、トポロジーは、クロック・ネットワーク設計者から受け取られる特定の設計パラメータに基づいて決定されてもよい。したがって、メタ合成ツールは、設計者によって構想されるクロック・ネットワークを生じるツール仕様ファイルを生成することによって、クロック・ネットワークの設計および構築に対する設計者のコントロールを容易にしうる。
【００５４】
本開示の範囲から外れることなく、方法４００に修正、追加または省略をしてもよい。ステップの順序は記載される順序と異なっていてもよく、複数のステップが同時に実行されてもよいし、ステップが追加されてもよいし、および／またはステップが除去されてもよい。たとえば、いくつかの実施形態では、個々のレベルについて設計パラメータが決定されるステップ４１５は、クロック・ネットワーク全体についての設計パラメータが決定されうるステップ４２２との関連で実行されてもよい。
【００５５】
本開示はいくつかの実施形態をもって記述してきたが、無数の変化、変形、変更、変換および修正が当業者には想起されうる。本開示は付属の請求項の範囲内にはいるそのような変化、変形、変更、変換および修正を包含することを意図されている。
【符号の説明】
【００５６】
１００  クロック・ネットワーク
１０２  クロック
１０４  エンドポイント
１０６、１０８、１１０、１１２  バッファ
１１４、１１６、１１８、１２０  ステージ
１２２、１２４、１２６、１２８  レベル
２００  クロック・ネットワークを設計および／または構築する方法
２０２  設計仕様を受け取る
２０４  トポロジーを決定
２０５  設計パラメータを決定
２０６  ツール仕様を生成
２０８  クロック・ネットワークを合成
３００  クロック・ネットワーク
３０２  クロック
３０４、３０６、３０８、３１０  バッファ
３１２  エンドポイント
４００  クロック・ネットワークのトポロジーを決定する方法
４０２  バッファのリストを受け取る
４０４  ファンアウト範囲を受け取る
４０６  エンドポイントのリストを受け取る
４０８  エンドポイントをシンクとしてラベル付け
４１０  リスト内の各バッファ型について、シンクを駆動するためのバッファの構成を決定
４１２  どのバッファ型が設計上の制約条件に従うかを決定
４１４  レベルのトポロジーを決定
４１５  レベルについて設計パラメータを決定
４１６  レベル内のステージ数≧1
４１８  レベルについてのバッファを「シンク」とラベル付け
４２０  偶数個のレベル？
４２２  クロック・ネットワークのための設計パラメータを決定
４２４  ツール仕様ファイルを生成
５０１  バッファのリストに含まれうるバッファ型のバッファ集合
５０２、５０４、５０６  バッファ
５０８  駆動されうるエンドポイントのエンドポイント集合
５１０  エンドポイント
５１２  ワイヤ
６００  エンドポイント５１０を駆動するバッファ５０２のバッファ構成
７００  エンドポイント５１０を駆動するバッファ５０４のバッファ構成
７２０  エンドポイント５１０を駆動するバッファ５０４のバッファ構成
８００  エンドポイント５１０を駆動するバッファ５０６のバッファ構成
８０２  エンドポイント５１０を駆動するバッファ５０６のバッファ構成
８０４  エンドポイント５１０を駆動するバッファ５０６のバッファ構成
【図１ａ】
2013045459.tif 000003
【図１ｂ】
2013045459.tif 000004
【図２】
2013045459.tif 000005
【図３】
2013045459.tif 000006
【図４】
2013045459.tif 000007
【図５】
2013045459.tif 000008
【図６】
2013045459.tif 000009
【図７】
2013045459.tif 000010
【図８】
2013045459.tif 000011