(57)【要約】【課題】  集積回路装置の設計に使用される方法、装置及びコンピュータ読み取り可能な記録媒体を提供する。【解決手段】  上記方法、装置及びコンピュータ読み取り可能な記録媒体は、所望の空間的位置の距離を最適化するように回路素子をクラスタ即ちグループに割り当てる。例えば、スキャン時にイネーブルされるラッチが、回路設計のためのスキャン・アーキテクチャにおけるスキャン・チェーンのレイアウトを最適化するように、ヒューリスティクスなクラスタ化を使用して各スキャン・チェーンに割り当てられることができる。【選択図】図３
2009526283.tif 000002
【特許請求の範囲】
【請求項１】
回路設計の複数の回路素子をクラスタ化する方法であって、
前記回路設計の複数の前記回路素子をサイズが均衡した複数のクラスタにグループ化するステップと、
前記複数の回路素子の空間的な位置の距離を、反復的にヒューリスティクスに最適化するステップと、
前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を行うステップと、
前記交換を行った後に、空間的な位置の距離を再計算するステップと、
再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にするステップとを含む前記方法。
【請求項２】
前記複数の回路素子のそれぞれがラッチを含む、請求項１に記載の方法。
【請求項３】
前記クラスタのそれぞれがスキャン・チェーンに関連づけられている、請求項２に記載の方法。
【請求項４】
前記クラスタのそれぞれがクロック制御ツリーに関連づけられている、請求項２に記載の方法。
【請求項５】
前記交換を行うステップが、交換が行われるクラスタのそれぞれのサイズの均衡を維持しながら、交換されるべき回路素子を無作為に選択することを含む、請求項１に記載の方法。
【請求項６】
前記グループ化するステップが、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタに無作為にグループ化する、請求項１に記載の方法。
【請求項７】
前記グループ化するステップが、前記回路設計のレイアウト内の各回路素子の位置に基づいて、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタに無作為にグループ化する、請求項１に記載の方法。
【請求項８】
前記複数のクラスタのそれぞれに重心が設定されており、前記空間的な位置の距離が、前記回路素子から前記クラスタの前記重心までの距離に少なくとも基づいている、請求項１に記載の方法。
【請求項９】
前記複数のクラスタのそれぞれの重心が、前記回路設計の前記レイアウト内に規定された１つの軸に沿った位置を規定し、そして前記空間的な位置の距離が、１つの軸に沿った１つの回路素子から１つのクラスタの重心までの距離に少なくとも基づいている、請求項８に記載の方法。
【請求項１０】
前記空間的な位置の距離が、１つのクラスタ内の各回路素子から前記１つのクラスタの重心までの距離の和に基づいている、請求項８に記載の方法。
【請求項１１】
前記交換を行うステップが、
第１のクラスタ及び第２のクラスタを選択するステップと、
前記第１のクラスタ及び前記第２のクラスタのそれぞれから一群の回路素子を選択するステップと、
前記第１のクラスタの前記一群の回路素子を前記第２のクラスタに割り当て、前記第２のクラスタの前記一群の回路素子を前記第１クラスタに割り当てるステップとを含む、請求項１に記載の方法。
【請求項１２】
前記交換を行うステップが、
第１のクラスタ、第２のクラスタ及び第３のクラスタを選択するステップと、
前記第１クラスタ及び前記第３クラスタのそれぞれから一群の回路素子を選択するステップと、
前記第３クラスタから一対の群の回路素子を選択するステップと、
前記第１クラスタの前記一群の回路素子を前記第２クラスタに割り当てるステップと、
前記第２クラスタの前記一群の回路素子を前記第２クラスタに割り当てるステップと、前記第２クラスタの前記一対の群のうちの一方の群の回路素子を前記第１クラスタに割り当てるステップと、
前記第２クラスタの前記一対の群のうちの他方の群の回路素子を前記第３クラスタに割り当てるステップとを含む、請求項１に記載の方法。
【請求項１３】
予定の繰り返し回数の後に、前記反復的にヒューリスティクスに最適化するステップを終了する、請求項１に記載の方法。
【請求項１４】
成功した交換を生じなかった予定の回数の繰り返しの後、反復的にヒューリスティクスに最適化するステップを終了する、請求項１に記載の方法。
【請求項１５】
プロセッサと、
回路設計の複数の回路素子をサイズが均衡した複数のクラスタにグループ化し、そして  前記複数の回路素子の空間的な位置の距離をヒューリスティクスに最適化することにより、前記回路設計の前記複数の回路素をクラスタ化する、前記プロセッサにより実行されるプログラムを記憶する手段とを備え、
前記空間的な位置の距離のヒューリスティクスな最適化は、前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を反復的に行い、  前記交換を行った後に、空間的な位置の距離を再計算し、そして再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にすることにより行われる装置。
【請求項１６】
前記複数の回路素子のそれぞれがラッチを含み、そして前記クラスタのそれぞれがスキャン・チェーンに関連づけられている、請求項１５に記載の装置。
【請求項１７】
交換が行われるクラスタのそれぞれのサイズの均衡を維持しながら、交換されるべき回路素子を無作為に選択することにより前記交換を行うように前記プログラムが構成されている、請求項１５に記載の装置。
【請求項１８】
前記回路設計の複数の前記回路素子をサイズが均衡した複数のクラスタに無作為にグループ化することにより前記複数の回路素子をグループ化するように前記プログラムが構成されている、請求項１５に記載の装置。
【請求項１９】
前記回路設計のレイアウト内の各回路素子の位置に基づいて、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタにグループ化することにより前記複数の回路素子をグループ化するように前記プログラムが構成されている、請求項１５に記載の装置。
【請求項２０】
前記複数のクラスタのそれぞれに重心が設定されており、前記空間的な位置の距離が、前記回路素子から前記クラスタの重心までの距離に少なくとも基づいている、請求項１５に記載の装置。
【請求項２１】
前記複数のクラスタのそれぞれの前記重心が、前記回路設計の前記レイアウト内に規定された１つの軸に沿った位置を規定し、そして前記空間的な位置の距離が、前記軸に沿った１つの回路素子から１つのクラスタの重心までの距離に少なくとも基づいている、請求項２０に記載の装置。
【請求項２２】
第１のクラスタ及び第２のクラスタを選択し、前記第１のクラスタ及び前記第２のクラスタのそれぞれから一群の回路素子を選択し、前記第１のクラスタの前記一群の回路素子を前記第２のクラスタに割り当て、前記第２のクラスタの前記一群の回路素子を前記第１クラスタに割り当てることにより前記複数の回路素子の交換を行うように前記プログラムが構成されている、請求項１５に記載の装置。
【請求項２３】
第１のクラスタ、第２のクラスタ及び第３のクラスタを選択し、前記第１クラスタ及び前記第３クラスタのそれぞれから一群の回路素子を選択し、前記第２クラスタから一対の群の回路素子を選択し、前記第１クラスタの前記一群の回路素子を前記第２クラスタに割り当て、前記第３クラスタの前記一群の回路素子を前記第２クラスタに割り当て、前記第２クラスタの前記一対の群のうちの一方の群の回路素子を前記第１クラスタに割り当て、前記第２クラスタの前記一対の群のうちの他方の群の回路素子を前記第３クラスタに割り当てることにより、前記複数の回路素子の交換を行うように前記プログラムが構成されている、請求項１５に記載の装置。
【請求項２４】
成功した交換を生じなかった予定の回数の繰り返しの後、反復的にヒューリスティクスに最適化するステップを終了することを含む、請求項１５に記載の装置。
【請求項２５】
コンピュータに、回路設計の複数の回路素子をサイズが均衡した複数のクラスタにグループ化する手順及び前記複数の回路素子の空間的な位置の距離をヒューリスティクスに最適化する手順を実行させることにより、前記回路設計の前記複数の回路素をクラスタ化するためのプログラムを記憶したコンピュータ読み取り可能な記録媒体であって、
前記空間的な位置の距離のヒューリスティクスな最適化は、前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を反復的に行い、前記交換を行った後に、空間的な位置の距離を再計算し、そして再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にする、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に関連する出願は、発明の名称が、Tradingpropensity-based clustering of circuit elements in a circuit designである米国特許出願番号１１／３４８９０７，及び発明の名称が、Automatic back annotation of a functional definition of anintegrated circuit design based upon physical layoutである米国特許出願番号１１／３４８８７７であり、両出願は同日に出願され、そして参照のために本明細書に導入する。
【０００２】
本発明は、コンピュータ及びコンピュータ・ソフトウエアに関し、更に具体的にいうならば、集積回路装置の設計において使用されるコンピュータ・ソフトウエアに関する。
【背景技術】
【０００３】
チップとして知られている集積回路装置は、半導体製造技術が進化されるにつれて更に大電力化されそして複雑化されてきている。初期の集積回路装置が１００よりも少ない数のトランジスタを含んでいたのに対して、今日では、単一の集積回路装置に何百万ものトランジスタを集積することが一般的となっている。この増大したトランジスタ数により、かっては数個の集積回路装置を必要とした幾つかの動作が、単一の集積回路装置で実現されることができ、低コストで高パフォーマンスを与える。例えば、従来のデータ処理システムは、マイクロプロセッサ、メモリ、バス・インターフェイス及びメモリ制御装置毎に別個の集積回路装置を必要としたが、今日のチップ密度の進歩により、これらの機能の全てを同じ集積回路装置内に集積することができるようになった。このような装置は、これらが与える高レベルの集積化に基づいて“システム・オン・チップ”として知られている。
【０００４】
チップ密度の増大は、集積回路チップに使用される設計方式に著しい影響を与えてきている。所望の機能を有するように、設計時に個々のトランジスタ若しくは論理ゲートを手動的に配置するのではなくて、代表的には、設計プロセスの機能的態様が、物理的態様から分離される。代表的には、設計の機能的態様は、論理設計として知られているプロセスにより処理されてきており、この論理設計は、例えばＶＨＤＬ若しくはヴェリログ（Verilog）のようなハードウエア記述言語で代表的に規定される回路設計の機能的規定を発生する。ＨＤＬ表現（representation）は、これが回路設計により達成されるべき論理または機能を一般的に規定するので、多くの点に関してソフトウエア・プログラムに似ている。更に、物理的配置またはレイアウト(layout）から論理設計を分離することにより、機能は、高い抽象化レベルで規定されることができる。
【０００５】
ＨＤＬ表現の生成と平行的に、回路設計の物理的規定が、代表的にはインテグレーション（integration）と呼ばれるレイアウト・プロセスにより生成され、製造される集積回路上の回路素子の実際の物理的配置を表す、論理ゲートと論理ゲート間の相互接続との“フロア・プラン（floor plan）を実質的に生成する。完成回路の予め規定されたセル若しくはブロックを利用してレイアウト・プロセスを助け、かくして数百万もの個々の論理ゲートを処理する必要性を排除した自動化ツールが開発された。或る設計のＨＤＬ表現からランダム・ロジック・マクロ(RLM, Random Logic Macro)ブロックを発生するために合成ツールが開発され、これによりＲＬＭブロックを配置しそしてこれらを互いに接続して回路設計を完成させるのに設計の個別レイアウトだけが要求される。更に、幾つかの設計は、設計相互間で再使用可能な在庫の（OTS. off-the shelf）論理ブロックからのブロックを組み入れる。
【０００６】
一旦物理的規定が生成されると、全ての任意のタイミングまたは生産技術性あるいはその両方を確認するために設計のテスト及びシミュレーションが行われ、そしてこの設計がこれらの要求事項を満たすことが調べられると、この設計は、集積回路を製造するのに使用されることができる。
【０００７】
集積回路が更に複雑になるにつれて、開発及びテスト・プロセスに含まれる人員の数が膨大に増加される。実際、多くの場合、論理設計プロセスを行う人員は、物理的設計プロセスを行うインテグレータから完全に分離される。更に、集積回路が更に複雑に、大型にそして高速になるにつれて、タイミングの問題が更に著しくなってきており、レイアウトがなされた後に設計の機能的規定を修正する必要性がしばしば生じる。多くの場合、タイミングの問題が適切に解決された後に、機能的規定の修正、物理的規定の更新及び物理的規定の再テストを繰り返し行うことが要求される。多くの異なる人員がこれらの異なるプロセスに従事しており、従って、機能的及び物理的規定を更新することの調整は、問題となりそして時間がかかる。
【０００８】
例えば、レイアウト・プロセスが機能的規定の修正を必要とする１つの特定な領域が、本明細書でいうオーバヘッド論理回路（即ち、回路設計により具現化される主要な論理回路に直接的に含まれない補助的な支持（support）回路）に関連していることがある。例えば、製造された装置に対してテスト容易性をもたらすために、多くの集積回路設計は、この設計内に集積化されるスキャン・チェーンと呼ばれるラッチの直列チェーンを１つ以上用いる。若しくはラッチを使用するスキャン・アーキテクチャを使用する。１つの直列チェーン即ちスキャン・パス内のラッチは、次のように設計される。即ち、或る特定のモードを行うように構成されるとき、これらのラッチはシフト・レジスタをして働き、その結果、単一源からのデータは、ラッチ・チェーン内にシフトされて異なる状態をシミュレートすることができ、そして或る装置（デバイス）内で発生されたデータは、単一出力を介してシフト・アウトされることができる。かくして、スキャン・アーキテクチャを使用すると、任意の時刻における装置内の種々なノードの電流状態が制御若しくは記録され、そして、後に、外部装置によりアクセスされて、製造された装置の動作を検証することができる。
【０００９】
スキャン・チェーン内のラッチは、互いに直列に結合されることができ、代表的には、各ラッチは、スキャン・イン・ポート及びスキャン・アウト・ポートを有していて、各ラッチのスキャン・イン・ポートは、先行ラッチのスキャン・アウト・ポートに接続される。複雑性の低い回路設計は、単一スキャン・チェーン内に数十若しくは数百個のラッチしか含まないのに対して、複雑性の高い設計、例えば多くのＳＯＣ設計は、単一のスキャン・アーキテクチャ内に数千個のラッチを含むことがある。更に、１つのスキャン・アーキテクチャにデータを詰め込みそしてデータを取り出すのに必要な時間を確保するためには、各ラッチをこのスキャン・チェーンに割り当て、更に各ラッチを選択されたスキャン・チェーン内の或る特定な場所に割り当てることを要求する多重（マルチプル）スキャン・チェーンが一般的に使用される。
【００１０】
スキャン・アーキテクチャは、スキャン・チェーン動作をイネーブルしそしてさもなければこの動作を設定するために追加のクロック制御信号を種々なラッチに分配することを必要とする。更に複雑な集積回路設計の場合には、この設計に課される寸法及びタイミングに関する制約は、クロック制御信号及び他のオーバヘッド若しくは非オーバヘッド・グローバル信号を分配するための分配ツリーの使用を必要とする。分配ツリー内で、信号は、ツリー状のラッチを介して分配されそしてこれは信号を更に強め、実効的な配線長を短くし、そしてファン・アウトの問題を減少し、一方で信号を同時刻に全ての終点ポイントに確実に到着させる。結果として、スキャン・チェーンに対するラッチの割り当てと同様に、ラッチは、分配ツリーからの適切な信号出力に接続されることが要求される。
【００１１】
一般的な設計規則として、各スキャン・チェーンの長さを減少し、かくして回路をテストするに必要な時間長を減少するために、均衡化された多数のスキャン・チェーンを利用することが望ましい。更に、１つのスキャン・チェーン内の複数個のラッチを互いに接続するために使用される配線長を最小にすることがしばしば望まれ、これは、代表的には、物理的に互いに接近して配置されているラッチを同じスキャン・チェーンにグループ化することにより行われる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
スキャン・チェーン及び分配ツリーへのラッチの割り当てを回路設計の機能的規定内に維持することがしばしば望まれる。しかしながら、論理設計の後にレイアウトが行われる場合には、スキャン・チェーン内にラッチが適切に割り当てられたか、そして、信号分配ツリー内にラッチが適切に割り当てられたかについては、この設計がレイアウトされ終えた後でなければ確かめることができない。しばしば、論理設計者は最初に、経験的な推測に基づいてラッチをスキャン・チェーン及び分配ツリーに手動的に接続することを要求される。レイアウト及びテストの結果として、ラッチの接続の仕方は、配線長を減少しそしてタイミングの要求事項を満たすようにしばしば手動的に修正されなければならない。設計プロセスが反復されると、繰り返して手動的な修正を行うことが要求される。このことは、機能的規定がレイアウト変更に依存し、又はこの逆であるので、機能的規定を固定化することを困難にする。
【００１３】
装置の集積化が大規模になると、適切な割り当てを維持することが著しく問題となる。例えば、レジスタ（即ち、１グループのラッチ）集積化の間に或る意味のある距離だけ物理的に移動されただけで、これは、分配ツリーの異なるノードに接続されてしまい、そして、おそらく別のスキャン・リングの新たな位置に置かれなくてはならないことになる。代表的なＩＰブロックは、それぞれ別々の分配ツリーへの割り当て及びスキャン・チェーンへの割り当てがなされる数十のレジスタ（結果として何百のラッチ）を有する。幾つかの設計サイズは、１５０のオーダの異なる分配ツリー信号を或るレジスタの物理的位置に依存して選択し、そして、２５よりも多い別々のスキャン・リングを組み込む。結果として、割り当ての管理には相当な努力を要する。
【００１４】
装置に用いる周波数が増大すると、代表的には設計内における配置の不安定性を生じ、インテグレータ（integrators）に装置のフロア・プランへの頻繁な変更をさせる。スキャン・アーキテクチャへの接続は、実際には機能論理回路の一部ではないので、これらの変更は、スキャン・アーキテクチャへの影響にかまわず通常なされる。かくして、スキャン・アーキテクチャ接続の管理及び回路設計内の他のオーバヘッド回路の管理は、困難性が増大し続けている。  
【課題を解決するための手段】
【００１５】
本発明は、１つの態様において、所望の空間的な位置の距離（spatial locality metric）を最適化するようにクラスタ又はグループへの回路素子の割り当てをもたらすヒューリスティクス（heuristic、必ず正しい答えが導けるわけではないが、ある程度のレベルで正解に近い解を得ることができる方法））なクラスタ化（clustering）を利用する装置、プログラム製品及び方法を提供することにより従来技術に関連する上述の問題を解決する。例えば、本発明の実施例は、回路設計のためのスキャン・アーキテクチャのスキャン・チェ−ンのレイアウト（配置）を最適化するために、例えばスキャン時にイネーブルされるラッチ(scan-enabled latches)のような回路素子を個々のスキャン・チェーンに割り当てるために使用されることができる。
【００１６】
本発明によると、例えば、回路設計の回路素子は、この回路設計の複数個の回路素子をサイズが均衡化された複数のクラスタにグループ化し、そして複数個の回路素子の空間的な位置の距離をヒューリスティクスに最適化することによりクラスタ化されることができる。ヒューリスティクスな最適化は、複数個のクラスタのうちから選択された複数のクラスタ相互間で回路素子の交換を反復的に行い、交換を行った後に空間的な位置の距離を再計算し、そして再計算された空間的な位置の距離に基づいて交換を選択的に不要（discarding）または取り消しにすることにより達成されることができる。
【００１７】
以下に説明する実施例は、回路設計の所望の空間的な位置の距離を最適化するために、クラスタ即ちグループへの回路素子の割り当てを行うヒューリスティクスなクラスタ化アルゴリズムを利用する。例えば以下に述べる実施例は、スキャン・チェーンのワイヤの長さを最適にしてレイアウト及びタイミングの問題を最小にするために、回路設計に組み込まれるスキャン・アーキテクチャの各スキャン・チェーンへ、スキャン時にイネーブルされるラッチを割り当てるヒューリスティクスなクラスタ化を利用する。
【００１８】
回路設計の機能的規定が生成され終え、そしてこの回路設計に含まれる複数の回路素子がフロア・プランにレイアウトされ終えて物理設計を生じた後に、回路設計の機能的規定により規定された複数の回路素子を、イネーブルしてこれらを例えばスキャン・アーキテクチャ回路のようなオーバヘッド回路に自動的に接続または割り当てるヒューリスティクスなクラスタ化が本発明の実施例において使用されることができ、かくして、機能的規定の開発の間オーバヘッド回路に起因して生じる問題に対して回路デザイナが多くの時間を費やすことなく、回路デザイナに回路設計の機能的問題に専念させることができる。
【００１９】
発明の名称がTradingpropensity-based clustering of circuit elements in a circuit designである前記米国特許出願に更に詳細に説明してあるように、クラスタへの回路素子の割り当て（例えば、スキャン・チェーンへのラッチの割り当て）が、回路設計の機能的規定に、ヒューリスティクスなクラスタ化を経て発生された回路素子の割り当てを自動的にバック・アノテーションするバック・アノテーション・プロセスにおいて利用されることができる。
【００２０】
本発明の機能的規定は、例えばＶＨＤＬ若しくはヴェリログ（Verilog）のような任意のハードウエア記述言語（ＨＤＬ）フォーマットを使用して組み込まれることができ、そして、物理的レイアウトとは独立的に、集積回路装置の所望の論理回路を具現化するために、コンポーネントの一部若しくは全て若しくはこれら相互間の接続容易性を表す。例えば１つ以上のネットリスト・ファイルのような物理的規定が組み込まれることができ、そして、回路設計の全て若しくは一部の物理的レイアウトを表す。
【００２１】
本明細書において、回路素子は、セルまたはコンポーネントと呼ばれ、そして、回路素子が、例えば単一の論理ゲートのような小さいもの若しくは数百または数千の論理ゲートを含む複雑なＩＰブロックのような大型のもののような種々なレベルの複雑性を有する回路であり得ることを理解されたい。本発明の実施例は、回路設計の回路素子の全て若しくは一部を複数のクラスタまたはグループに効果的にグループ化し、そして本発明の原理が、配置場所に基づく理由によりクラスタ化されることが望ましい回路素子の全てではないにしてもその大部分に対して適用されうることを理解されたい。
【００２２】
本発明に基づいてヒューリスティクスなクラス化を組み込むために、回路獅子は、サイズが均衡した複数のクラスタ、即ち、全く同じかほぼ同じ数の素子を有する複数のクラスタに最初グループ分けされる。回路設計のレイアウトにおける各クラスタの所望の位置を表す重心を各クラスタに規定する。後述する実施例においては、各クラスタの所望の重心は、一次元、即ち、回路設計の垂直軸（回路設計が設けられるチップの表面の垂直軸）に沿って規定される。しかしながら、他の実施例においては、所望の重心は、２次元以上の次元により定められ場所に規定されうることを理解されたい。所望の重心は、手動的に若しくは自動的に規定されることができ、そしてクラスタ化を改善するように、所望の重心の位置を調整または修正することが望ましい。
【００２３】
クラスタ毎に所望の重心が規定されると、チップの表面上で各クラスタが、空間的に可能な限り小さな面積内にまとめられて分布するように、クラスタに属する単独の回路素子若しくは或るグループにされた回路素子を、クラスタ相互間で、選択的に交換するためのヒューリスティクスなクラスタ化が行なわれることができる。
【００２４】
実施例において各クラスタの空間的分布、即ち、チップの表面における各クラスタの分布を測定する方法は、空間的な位置の距離（spatial locality metric）の測定に基づく。以下に説明する実施例においては、各所望の重心が、一次元的に規定され、クラスタ毎の空間的な位置の距離は、所望の重心の位置と、クラスタに割り当てられた回路素子のそれぞれの位置（例えば各回路素子の中心若しくはエッジ）との間の垂直方向の距離の合計として計算されることができる。しかしながら、他の実施例においては、他の空間的な位置の距離を使用することができる。例えば、所望の重心の位置が二次元的に規定される場合には、所望の重心を二次元的に規定し、そしてこの重心と回路素子との間の二次元的に表された距離とすることができる。例えばマンハッタン距離（垂直距離及び水平距離の和）または２つの点相互間の最短距離（即ち、直線距離）のような各回路素子からクラスタの重心点までの二次元的距離を利用することができる。また、空間的な位置の距離は、クラスタに属する各回路素子の一部分のみに基づいて規定されることができ、若しくは例えば各回路素子の相対的サイズ（寸法）のような大きさを考慮して計算されることができる。空間的な位置の距離はまた、全てのクラスタの空間的な分布を表す全体的計算に基づいて規定されることができる。実質的には、複数のクラスタの空間的分布状態、かくしてクラスタの幾何学的な最適化のレベルを規定するために使用されうる任意の距離が、本発明の空間的な位置の距離として使用されることができる。
【００２５】
本発明のヒューリスティクスなクラスタ化は、２つ以上のクラスタ相互間で１つ以上の回路素子の交換を何回も繰り返して行い、空間的な位置の距離を再計算し、空間的な位置の距離が改善しなかった交換を無効にし、即ち取り消すことにより、１つ以上のクラスタの空間的な位置の距離を最適化する。代表的には、このような反復的な無作為な交換は、例えば予定された回数だけ反復が繰り返されるまで、または成功した交換（空間的な位置の距離の改善がなされた交換）をもたらさなかった交換が予定の回数だけの繰り返されるまで等、所望の完了点に到達するまで行われる。
【００２６】
交換が空間的な位置の距離を改善したかどうかということは、種々な実施例において、異なるように解釈されることを理解されたい。例えば、空間的な位置の距離は、この距離が変化しなかったならば、もしも距離がある閾値を超えて改善されなかったならば、またはもしも距離が悪いほうに変化したならば、改善されなかったと見なすことができる。
【００２７】
交換を行い、そして空間的な位置の距離の再計算後に交換を無効にするやり方は、空間的な位置の距離の再計算の前に回路素子を別の異なるクラスタに再割り当てする、即ち他のクラスタに割り当てられること、そして、もしも距離が改善されなかったならば元のクラスタに戻されることを必ずしも要求しないことを理解されたい。或る実施例においては、交換は、回路素子が新たなクラスタに割り当てられたという仮定のもとで空間的位置の距離の再計算の目的のために単に回路素子（交換したとされた）を選択することを採用してもよく、これにより、新たなクラスタへの実際の割り当ては距離の改善が達成された後に必要となり、そして無効にする処理は、改善が達成されなかったという決定に基づいてこのような割り当てがなされなかったという処理のみを必要とする。しかしながら、他の実施例においては、交換及びこの交換を無効にする処理は、異なるクラスタに回路素子を割り当て及び再割り当てすることを組み入れることができる。
【００２８】
以下の説明は、スキャン時にイネーブルされるラッチをスキャン・チェーンに割り当てすることを説明するが、以下に説明するヒューリスティクスなクラスタ化アルゴリズムは、例えば種々な回路素子への機能的信号またはクロック制御信号のようなグローバル信号の基板上での分布を改善するために、スキャン時にイネーブルされるラッチ及び他の型の回路素子を異なる型の他の複数のクラスタに割り当てるために使用されることができることを理解されたい。これに関して、グローバル信号とは、分配ツリーを使用する回路設計における多重ユニットまたは互いに区切られた領域にわたって共用される信号を意味する。代表的には、グローバル信号の割り当ては、特定なグローバル信号を分配する分配ツリーの特定な終了点にラッチ若しくは他の回路素子を割り当てる。
【発明を実施するための最良の形態】
【００２９】
図を参照して説明する。幾つかの図における同じ参照番号は同じものを表す。図１は、本発明に従うヒューリスティクスなクラスタ化を組み込むのに適する例示的な集積回路設計プロセスを示す。この設計プロセスは、代表的にはブロック１２に示されている論理設計で開始し、これは、代表的には論理設計ツールを使用する１人以上の論理デザイナにより行われ、そして、例えば１以上のＶＨＤＬファイルの形の機能的規定を発生する。ＶＨＤＬファイルは代表的なものであり必ずしもこれでなくともよく、これはＶＨＤＬファイルにわたるバージョン制御を維持するソース・コード・リリース・プロセス１４に与えられる。
【００３０】
ＶＨＤＬファイルから、例えば種々なプレイスメント・ベースの若しくはタイミング・ベースの合成ツールのような１以上の合成ツールが、このＶＨＤＬファイルの幾つか若しくは全てからランダム・ロジック・マクロ（RLM,  Random Logic Macro）のためのネットリスト・ファイルを発生するために使用されることができる。これらのファイルは、回路設計のためのフロアプラン（floor plan）を発生するために物理設計又はレイアウト・プロセス１８における１以上のインテグレータ（integrator）により使用される。フロア・プランは、例えば１以上のネットリスト・ファイルを使用して、又は回路設計の物理規定を提示する他の方法を使用して提示されることができる。自動合成に加えて又はこれの代わりに、ソース・コード・リリース・プロセス１４により維持され、そして回路設計のためのフロア・プランを発生するときの物理設計１８の間にインテグレータにより使用されることができるＯＴＳブロックを使用するカスタム若しくは半カスタム設計スタイルを使用して機能規定の幾つか若しくは全てが組み込まれる（implemented）ことができる。
【００３１】
ネットリスト内に提示されている物理規定から、オーバヘッド論理設計プロセス２０が割り当てファイルを発生させるために使用されることができ、この割り当てファイルは、例えばスキャン・アーキテクチャに関連する回路設計のオーバヘッド論理回路に関連する多様な信号及び回路素子の間の割り当てを含む。割り当てファイルは、データベース２２に貯蔵され、そして割り当てファイルの以前のバージョンは、プロセス２０で割り当てを発生することに関連してデータベース２２から引き出されることができる。プロセス２０は又、例えば分配ツリーを介して分配される機能信号のような他のグローバル信号に対する割り当てを発生するのに使用されることができる。スキャン時にイネーブルされるラッチを回路設計のスキャン・チェーンに割り当てるためにヒューリスティクスなクラスタ化がプロセス１０に組み込まれることは、オーバヘッド論理設計２０内で行われる。
【００３２】
プロセス２０により発生された割り当てファイルは、ブロック２４に示されているように、回路設計の機能規定をバック・アノテーション（back annotation）するために使用されることができる。特に、バック・アノテーション・プロセス２４は、論理設計プロセス１２により発生されたＶＨＤＬファイルに対して、割り当てファイルで規定された割り当てをアノテーション（注釈として付与する）するために使用されることができる。このアノテーションされたファイルは、ソースコード、リリース・プロセス１４に与えられて保持される。割り当てファイルが、任意の適切はデータ構造を使用して組み込まれ得ることを理解されたい。
【００３３】
図１に示されているプロセスを使用して、物理レイアウトの結果として作られた割り当てが、論理設計により発生されたソースＶＨＤＬに送り戻されることを理解されたい。更に、後の時刻において物理設計に対してなされる修正も又ソースＶＨＤＬに戻されてアノテーションされることができる。又、図１に示されるように、ブロック１２からブロック２４への矢印により示されているように、回路設計の機能規定への修正も又、回路設計の機能規定をアノテーションするために使用されることができる。バック・アノテーションの更に詳細な説明は、前述の米国特許出願においてなされている。
【００３４】
他の設計プロセス及び方法論が本発明の種々な実施例において利用され得ることを理解されたい。プロセス内の種々な動作が、コンピュータ組込型のツールの助けを借りて自動的に又は手動的に行われ得ることを理解されたい。又、バック・アノテーションが、オーバヘッド論理設計プロセス２０に関連して説明したものと異なるやり方で発生された割り当てファイルを使用して行われ得ることを理解されたい。更に、手動的なバック・アノテーションが、説明する自動化プロセスに追加して又はこれの代わりに幾つかの実施例において使用されうることを理解されたい。従って、本発明は、説明する特定な実施例に限定されるものではない。
【００３５】
次に図２は、プロセス１０の種々なステップを行うことができる装置３０を示す。例示的な実施例の装置３０は、ネットワーク３２を介して１以上のクライアント・コンピュータ３４に結合されるサーバ又はマルチユーザー・コンピュータとして組み込まれている。本発明の目的のために、各コンピュータ３０，３４は、任意の型のコンピュータ、コンピュータ・システムまたは他のプログラム可能な電子装置を表す。更に、各コンピュータ３０，３４は、例えばクラスタまたは他の分配型のコンピュータ・システムにおけるネットワークにより接続された１つ以上のコンピュータを使用して具現化されることができる。他の変形例において、コンピュータ３０は、例えばデスクトップ・コンピュータ、ラップトップ・コンピュータ、携帯型コンピュータ、携帯電話、セットトップボックス等の単一コンピュータまたは他のプログラム可能な電子装置内に組み込まれることができる。
【００３６】
コンピュータ３０は、メモリ３８に結合される少なくとも１以上のマイクロプロセッサを含む中央処理ユニット３６を含み、メモリは、コンピュータ３０のメイン・メモリを構成するランダム・アクセス・メモリ（ＲＡＭ）装置と、例えばキャッシュ・メモリ、不揮発性メモリ又はバックアップ・メモリ（例えばプログラム可能なメモリ又はフラッシュ・メモリ）、読み取り専用メモリ等の補助レベルのメモリを表す。更に、メモリ３８は、例えばＣＰＵ３６のプロセッサ内の任意のキャッシュ・メモリのようなコンピュータ３０内に物理的に配置されているメモリ記憶装置、及び例えばコンピュータ３０に結合されているマスストレージ装置４０若しくは他のコンピュータに貯蔵されており仮想メモリとして使用される任意の記憶容量を含むと考えることができる。コンピュータ３０は又、代表的には多数の入力を受け取り、そして情報を外部に渡すために出力する。ユーザー又は操作者とインターフェイスするために、代表的にコンピュータ３０は、１つ以上のユーザー入力装置（例えば、キーボード、マウス、トラックボール、ジョイスティック、タッチパッド、またはマイクロフォン等あるいはその両方）及び表示装置（例えば、ＣＲＴモニタ、ＬＣＤ表示パネル、またはスピーカ等あるいはその両方）と協働するユーザー・インターフェイス４２を含む。又は、ユーザー入力は、他のコンピュータ若しくはターミナルを介して受け取られることができる。
【００３７】
追加的な記憶装置として、コンピュータ３０は、例えばフロッピィ若しくは他のリムーバブル・ディスク・ドライブ、ハード・ディスク・ドライブ、直接アクセス記憶装置（ＤＡＳＤ）、光ドライブ（例えば、ＣＤドライブ、ＤＶＤドライブ等）またはテープ・ドライブ若しくはその両方を含むことができる。更に、コンピュータ３０は、他のコンピュータ及び電子装置との情報の通信を行うために、１以上のネットワーク３２（例えば、ＬＡＮ，ＷＡＮ、無線ネットワークまたはインターネット等あるいはその両方）に接続するインターフェイス４４を含むことができる。代表的にコンピュータ３０は、この分野で周知であるように、ＣＰＵ３６と構成要素３８，４０．４２及び４４との間の適切なアナログまたはディジタルあるいはその両方を含むことを理解されたい。他のハードウエア装置を本発明に含ませることができる。
【００３８】
以下に説明するように、コンピュータ３０は、オペレーティング・システム４６の制御のもとで動作し、そして種々なコンピュータ・ソフトウエア・アプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、データ構造等を実行し又はこれらに依存して働く。更に種々なアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール等は、例えば分散型若しくはクライアント−サーバ・コンピュータ雰囲気のようなネットワーク３２を介してコンピュータ３０に結合されている他のコンピュータ内の１以上のプロセッサ上で実行することができ、これによりコンピュータ・プログラムの機能を組み入れるために要求される処理は、ネットワークを介する複数のコンピュータに割り当てられることができる。
【００３９】
一般的にいうと、本発明の実施例を具現化するために実行されるルーチンは、オペレーティング・システム、特定なアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール又は一連のインストラクション若しくはこれらのサブセットの一部として具現化されるかにかかわらず、本明細書では、“コンピュータ・コード”又は“単純に”プログラム・コード“と呼ぶ。代表的に、”プログラム・コード“は、コンピュータの種々なメモリ及び記憶装置内に多様な時刻に存在し、そして、コンピュータの１以上のプロセッサにより読み出されて実行されるときにコンピュータに、本発明の種々な態様を実施化するステップ又は素子を実行するのに必要なステップをコンピュータに行わせる１以上のインストラクション（命令）を含む。更に、本発明を、十分に機能するコンピュータ及びコンピュータ・システムについて説明するが、本発明の種々な実施例は、多様な形のプログラム製品として配布され得ること、そして、本発明は、配布を実際に行うために使用される特定な型のコンピュータ読み取り可能な記録媒体に係わらず、等しく適用されることは、当業者において理解されるであろう。コンピュータ読み取り可能な記録媒体の例は、これらに限定する必要はないが、例えば揮発性及び不揮発性メモリ装置、フロッピィ及び他のリムーバブル・ディスク、ハード・ディスク・ドライブ、磁気テープ、光ディスク（例えば、ＣＤ−ＲＯＭ，ＤＶＤ等）等、並びに例えばディジタル及びアナログ通信リンクのような記録型媒体を含む。
【００４０】
更に、以下に説明する種々なプログラム・コードは、アプリケーション（この中でこれは本発明の特定な実施例に組み込まれている）に基づいて同定されることができる。しかしながら、以下の任意の特定なプログラム命名法が単に便宜上使用され、かくして、本発明は、このような命名法により同定されまたは暗示されあるいはその両方による任意の特定なアプリケーションにおいて単独に使用することに限定されるべきではない。更に、コンピュータ・プログラムが、ルーチン、プロシージャ、メソッド、モジュール、オブジェクト等に組織され得る代表的には多数の方式、及びプログラムの機能性が、典型的なコンピュータ（例えば、オペレーティング・システム、ライブラリィ、ＡＰＩ，アプリケーション、アプレット等）内に存在する種々なソフトウエア・レイヤに割り当てられ得る種々な方式を考慮すれば、本発明が、本明細書中で説明するプログラムの機能性の特定な組織及び割り当てに限定されないことを理解されたい。
【００４１】
図１のプロセス１０の種々な動作を組み込むために、コンピュータ３０は、本発明のヒューリスチックなクラスタ化を行うのに適する例えば、論理設計ツール４８，物理設計ツール５０、合成ツール５２及びオーバヘッド論理ツール５４，並びに自動的なバック・アノテーションを行うバック・アノテーション・ツール５６を含む多数のソフトウエア・ツールを含む。集積回路設計、認証またはテストあるいはその両方に関連して利用される他のツールも又コンピュータ３０内で利用されうる。更に、ツール４８−５６は単一のコンピュータ３０内に示されているが、特に多人数が集積回路設計の論理設計、インテグレーション、及び認証に携わる場合には、上記のツールは、別個の幾つかのコンピュータに分散されることが、当業者により理解されるであろう。従って、本発明は、図２に示されている単一コンピュータへの組み込みに限定されない。
【００４２】
当業者は、図１及び２に示されている例示的な構成は、本発明を限定するものではないことを認識するであろう。実際当業者は、他の代替的なハードウエアまたはソフトウエア構成あるいはその両方が本発明の範囲から逸脱することなく使用されうることを認識するであろう。
【００４３】
図３を参照すると、空間的な位置の距離（spatial locality metric）を最適化するように、複数の回路素子を複数のクラスタにグループ化するのに適する例示的なヒューリスティクスなクラスタ化ルーチン６０が示されている。ルーチン６０は、複数の回路素子を複数のグループに最初に割り当てるブロック６２で開始する。上述のように、それぞれのグループの複数の回路素子のサイズ（数）が均衡している複数のグループを形成するように、複数の回路素子を割り当てることが望ましい。更に、図５及び図６に関して詳細に説明するように、この割り当ては、例えば、無作為に、またはまだ満杯状態ではない最も近いグループに回路素子を順番に割り当てようとすることのような多数の異なる方式で行われることができる。
【００４４】
次に、ブロック６４において、所望の空間的な位置の距離が計算され、そして、ブロック６６において、交換（swap）に参加させるための２つ以上のグループが無作為に選択される。次に、ブロック６８において、上記の選択されたグループ毎に、交換に参加させるための１つ以上の回路素子が無作為に選択され、ここで、交換に参加させられる回路素子の数は、交換後の複数グループに亘って均衡したサイズ（数）が維持されるように選択される。
【００４５】
次に、ブロック７０において、交換が行われ、これにより、選択されたグループのそれぞれに属する選択された回路素子は、他の選択されたグループに割り当てられる。次いで、ブロック７２は、空間的な位置の距離を再計算し、そして、ブロック７４は、距離が改善されたかどうか（即ち、距離が減少されたかどうか）を調べる。もしも改善されていないならば、制御はブロック７６に移り、行われた交換を放棄し、即ち取り消して元の状態に戻し、この結果、交換の間に異なるグループに割り当てられた回路素子は、これらの元のグループに再割り当てされる。距離が改善されたならば、制御はブロック７８に移り、このブロックは、所望の完了点に到達したかどうかを調べる（例えば、Ｎ回の繰り返しの後に、または、交換が成功しなかったＮ回の繰り返しの後に）。ブロック７４に戻ると、距離が改善（減少）したならば、制御はブロック７８に移り、かくしてブロック７６をバイパスし、そして成功した（距離が減少した）交換を保持する。
【００４６】
もしもブロック７８が、完了点が到達されなかったことを検出すると、制御はブロック６４に移り、空間的な位置の距離を再計算し、そして他の交換を行う。しかしながら、もしも完了点に到達したならば、ルーチン６０は終了する。
【００４７】
上述のように、本明細書で説明するヒューリスティクスなクラスタ化アルゴリズムは、種々な異なる目的のための種々な異なる型の回路素子をクラスタ化するために利用されることができる。図４は、回路設計のスキャン時にイネーブルされるラッチをこの回路設計内に設けられる複数の異なるスキャン・チェーンに割り当てるために使用されることができる。
【００４８】
ルーチン８０は、ネットリスト及び割り当てファイルを用意することによりブロック８１で開始する。代表的には、このことは、回路設計の最新のレイアウト・データに基づくネットリスト・ファイルをメモリに最初につめ込む（読み込む）ことにより行われる。このネットリスト・データから、各回路素子の位置、サイズ（寸法）及び形が、チップのマップにつめ込まれることができる。全ての形がメモリにつめ込まれると、スキャン・チェーンへの接続を要求する回路素子にフラグがつけられ、その結果このような接続を要求しない回路設計内の回路素子は考慮されなくなる。回路素子のこのような採用若しくは除外は、或る規則に基づいて行われることができ、またはブロック８１においてつめ込まれた割り当てファイルにおいて規定されることができる。割り当てファイルは、回路設計の全ての回路素子及び各回路素子の階層名のリストを含むことができる。また、割り当てファイルは、各回路素子を使用するクロック制御ツリー及びスキャン・チェーンについての情報を含む（例えば、機能設計の開発の間に論理デザイナにより入力される）。また、割り当てファイルは、所望の重心に換算した各スキャン・チェーン（scan chain in terms of a desired centroid）の位置についての情報を含む。
【００４９】
ネットリスト及び割り当てファイルが用意されると、制御はブロック８２に移り、図３に関して説明したのと同様なヒューリスティクスなクラスタ化アルゴリズムを行う。具体的にいうと、ブロック８２は、スキャン・チェーンへのラッチの最初の割り当てを行う。ブロック８２の２つのインプリメンテーション（implementation）は、図５及び図６に関してされに詳細に後述する。用語「ラッチ」は、例えばレジスタ等の情報記憶回路と同様なものを指すことを理解されたい。更に、幾つかのレジスタまたは他の回路は、複数個のラッチを含むことができ、そして、ラッチの割り当てはまた、１以上のラッチを含む回路素子の割り当てのことである。
【００５０】
次に、ブロック８４において、所望の空間的な位置の距離が計算され、このインプリメンテーションにおいては、ラッチ及びこれが割り当てられるスキャン・チェーンの所望の重心（centroid）（このインプリメンタションにおいては、一次元軸に沿った単一の点として規定される）の間の総垂直距離を計算することを行う。次に、ブロック８６において、第１及び第２のスキャン・チェーンが無作為に（ランダムに）選択され、次いでブロック８８において、第１及び第２の交換グループを生成するために、各スキャン・チェーンからＮ個のラッチが無作為に選択される。選択されるラッチの数は、プリセット・ラッチ・カウントの限界内にとどまり、そして、各交換グループ内のラッチの総数が計算される。幾つかの素子が複数のラッチを有するとすると、均衡（バランス）した複数のクラスタを維持するために総数がほぼ等しくありさえすれば、２つの交換グループ内のラッチの数は幾つかの実施例においては同じでなくてもよい。例として、１つのスキャン・グループは１４個のラッチを有する１つのレジスタを含むことができ、一方、他のスキャン・グループはそれぞれが５個のラッチを有する３つのレジスタを含むことができる。
【００５１】
次に、ブロック９０において、交換が行われ、これにより、選択されたそれぞれのスキャン・チェーン内の選択されたラッチは、他のスキャン・チェーンに割り当てられる。次いで、ブロック９２は、空間的な位置の距離、ここでは各ラッチからこれが割り当てられたスキャン・チェーンの所望の重心までの総垂直距離、即ち、交換の対象となるスキャン・チェーンのそれぞれ内の各ラッチの距離の合計に関連する値を再計算する。ブロック９４は、合計の距離が減少されたかどうかに基づいて、距離が改善されたかどうかを調べる。もしも改善されなければ、制御はブロック９６に移り、行われた交換を放棄し、即ち取り消して元の状態に戻し、交換の間に別のスキャン・チェーンに割り当てられたラッチは、元のスキャン・チェーンに再割り当てされる。制御はブロック９８に移り、このブロックは、所望の完了点に到達したかどうかを調べる（例えば、Ｎ回の繰り返しの後に、または、交換が成功しなかったＮ回の繰り返しの後に）。ブロック９４に戻ると、もしも合計距離が減少したならば、制御はブロック９８に移り、かくしてブロック９６をバイパスし、そして成功した交換を保持する。
【００５２】
もしもブロック９８が、完了点がまだ到達されなかったことを検出すると、制御はブロック８４に移り、合計距離を再計算し、そして他の交換を行う。しかしながら、もしも完了点が到達されたならば、ブロック９８は制御をブロック９９に移し、割り当てファイルを更新し、そして更新されたファイルを記憶する。そして、ルーチン８０が終了する。
【００５３】
図５は、スキャン・チェーンへの最初のラッチの割り当てを行う図４のブロック８２にステップ１００を組み入れた１つの手順を示し、ここで、ステップ１００においては、スキャン・チェーンのサイズが均衡したサイズになるように（即ち、ラッチの数がほぼ同じになるように）、ラッチが最初に無作為にスキャン・チェーンに割り当てられる。図６は、スキャン・チェーンへの最初のラッチの割り当てを行う図４のブロック８２（図６では８２‘として示されている）を含む他の手順を示し、ブロック１０２は、ヒューリスティクスなクラスタ化アルゴリズムにより、スキャン・チェーンへの割り当てを待っているラッチの中から次に割り当てられるラッチを取り出す。
【００５４】
次いで、ブロック１０４は、現在いっぱいな状態（フル状態）ではない最も近くのスキャン・チェーンにラッチを追加する。最も近いスキャン・チェーンは、ラッチから各スキャン・チェーンまでの垂直距離を計算することにより決められることができる。更に、複数のスキャン・チェーンを望ましくはサイズが均衡した状態にしたいので、ラッチをこれに最も近いスキャン・チェーンに割り当てる前にスキャン・チェーンが既にいっぱいな状態になっているかどうかの検査を行い、もしそうならば、更に離れた距離にあるスキャン・チェーンを代替として選択する。スキャン・チェーンの容量または収容量は、例えば、ラッチの数をスキャン・チェーンの数で除算することにより決められることができる。
【００５５】
次に、制御はブロック１０６に移り、このブロックで割り当てを待っている追加のラッチがあるかどうかを調べ、もしもそうであるならば、制御はブロック１０２に戻り他のラッチを割り当てる。全てのラッチが割り当てられると、ルーチン８２‘は終了する。
【００５６】
次に、図７は、回路設計に含まれているスキャン時にイネーブルされるラッチを複数のスキャン・チェーンに割り当てるブロック８２−９８の代わりに実行されることができる他のヒューリスティクスなクラスタ化ルーチン１１０を示す。この手順においては、２つのスキャン・チェーン内のラッチから２つの交換グループを生成するのではなく、パイプライン型の交換が行われ、これにより、３つのスキャン・チェーンが或る特定な交換に参加できるように、４つの交換グループが３つのスキャン・チェーンから生成される。
【００５７】
ルーチン１１０はブロック１１２で開始し、無作為な割り当てによりラッチをスキャン・チェーンに最初に割り当てる。これの代わりに、ルーチン８２‘に関して説明した最初の割り当てを使用することができる。次に、ブロック１１４において、所望の空間的な位置の距離が計算され、この手順においては、各ラッチとこれが割り当てられたスキャン・チェーンの所望の重心との間の総垂直距離（この手順においては、一次元軸に沿った単一点として規定される）を計算する。次に、ブロック１１６において、第１のスキャン・チェーンが無作為に選択され、そして次いでブロック１１８において、第１スキャン・チェーンからＮ個のラッチが無作為に選択されて第１交換グループ（交換グループ１と呼ぶ）を生成する。選択されるラッチの数は、プリセット・ラッチ・カウント上限値内に留まり、そして、交換グループ内のラッチの総数がブロック１１８において計算される。
【００５８】
次に、ブロック１２０において、第２スキャン・チェーンが無作為に選択され、そして次いでブロック１２２及び１２４において、第２スキャン・チェーンからＮ個の２組のラッチが無作為に選択されて一対の第２交換グループ（交換グループ２及び交換グループ２Ａと呼ぶ）を生成する。次にブロック１２６において、第３スキャン・チェーンが無作為に選択され、そして、ブロック１２８において、第３スキャン・チェーンが無作為に選択され、そしてブロック１２８において、第３スキャン・チェーンからＮ個のラッチが無作為に選択されて第３交換グループ（交換グループ３と呼ぶ）。ブロック１２２，１２４及び１２８のそれぞれにおいて、選択されるラッチの数は、プリセット、ラッチ・カウント上限値内に留まり、そして交換グループ内のラッチの総数が計算される。生成した複数の交換グループが、複数個のラッチを有する回路素子を含むならば、各交換グループに割り当てられたラッチの総数は、互いにわずかに異なることがあることを理解されたい。
【００５９】
次に、ブロック１３０−１３６において、交換が行われ、これにより、交換グループ１の選択されたラッチが第２スキャン・チェーンに割り当てられ（ブロック１３０）、交換グループ２の選択されたラッチが第１スキャン・チェーンに割り当てられ（ブロック１３２）、交換グループ２Ａの選択されたラッチが第３スキャン・チェーンに割り当てられ（ブロック１３４）、そして交換グループ３の選択されたラッチが第２スキャン・チェーンに割り当てられる（ブロック１３６）。
【００６０】
次いで、ブロック１３８は、空間的な位置の距離、ここでは各ラッチから、これが割り当てられたスキャン・チェーンの所望の重心までの総垂直距離、即ち、交換に含まれるスキャン・チェーンのそれぞれ内の各ラッチの距離の合計に関連する値を再計算する。ブロック１４０は、合計の距離が減少したかどうかに基づいて、距離が改善されたかどうかを調べる。もしも改善されていないならば、制御は、ブロック１４２に移り、なされた交換を放棄即ち取り消し、これにより、交換の間にそれぞれ別のスキャン・チェーンに割り当てられたラッチはこれらの元のスキャン・チェーンに再割り当てされる。制御は、ブロック１４４に移り、所望の完了点が到達されたかどうかを調べる（Ｎ回の繰り返しの後に、または交換が成功しなかったＮ回の繰り返しの後に）。ブロック１４０に戻ると、もしも合計距離が減少したならば、制御はブロック１４４に移り、かくしてブロック１４２をバイパスし、そして成功した交換を保持する。
【００６１】
もしもブロック１４４が、完了点が到達されなかったことを検出すると、制御はブロック１１４に戻り、合計距離を再計算しそして他の交換を行う。しかしながら、もしも完了点に到達したならば、ルーチン１１０が終了される。
【００６２】
図４及び図７に関連して説明したように、２つ若しくは３つのスキャン・チェーンからではなく、本発明に従って異なるスキャン・チェーンにラッチを割り当てる他の方法を使用することができることを理解されたい。
【００６３】
図８−１２を参照すると、図４のルーチン８０に関して説明した上述のヒューリスティクスなクラスタ化アルゴリズムの動作を更に説明するために、単一のスキャン時にイネーブルされるラッチをそれぞれが含む複数の回路素子を有する例示的な回路設計１５０が示されている。特に、図８は、回路設計１５０内に分布されている回路素子１５２，１５４，１５６及び１５８を示す。
【００６４】
次に図９は、回路素子を４つの互いに異なるスキャン・チェーンへ無作為に最初の割り当てる例を示し、これらのスキャン・チェーンのそれぞれは、所望の重心１６０，１６２，１６４及び１６６を有する。図８において同じ模様により示されているように、回路素子１５２は所望の重心１６０を有するスキャン・チェーンに最初に割り当てられ、回路素子１５４は所望の重心１６２を有するスキャン・チェーンに最初に割り当てられ、回路素子１５６は所望の重心１６４を有するスキャン・チェーンに最初に割り当てられ、そして回路素子１５８は所望の重心１６６を有するスキャン・チェーンに最初に割り当てられる。
【００６５】
次に図１０は、所望の重心１６０を有するスキャン・チェーンに割り当てられたラッチに対する、図４のブロック８４で行われる空間的な位置の距離の合計距離の計算を示す。合計距離とは、１つのスキャン・チェーン（図８では白抜きで示されている）に割り当てられた各ラッチと、このスキャン・チェーンの重心１６０との間の距離の総和のことであり、これは水平方向の矢印により示されている。
【００６６】
図１１は、最初の無作為な割り当てに続くヒューリスティクスなクラスタ化を、代表的には、図４のブロック８６−９８の動作を複数回繰り返した後の結果を示す。図示のように、特定なスキャン・チェーンの重心に最も接近している複数のラッチが、同じスキャン・チェーン・グループにクラスタ化されている。この場合、所望の重心１６０を有するスキャン・チェーンに最も近いラッチ１５２，１５４，１５６及び１５８が、このスキャン・チェーンに割り当てられる。図１２に示すように、白抜きで示されているスキャン・チェーンに割り当てられている全てのラッチの合計距離は、図１０に示した無作為な割り当て語の合計距離と比べて著しく減少されている。
【００６７】
本発明の精神及び範囲から逸脱することなく、説明した実施例に対して種々な修正を行えることが明らかである。例えば、クラスタに属する全ての素子の合計距離を計算する代わりに、特定な交換グループ内の１つのラッチの距離だけを計算することもできる。本発明を知り得た当業者は、他の空間的な位置の距離を使用しうることを理解するべきである。
【図面の簡単な説明】
【００６８】
【図１】本発明に従うヒューリスティクスなクラスタ化を導入した集積回路設計プロセスのブロック図である。
【図２】図１のプロセスを行うに適するコンピュータ・システムの主要なハードウエア・コンポーネントのブロック図である。
【図３】図２に示したオーバヘッド論理ツールにより実行されることができるヒューリスティクスなクラスタ化ルーチンのプログラム・フローを示すフローチャートである。
【図４】図２に示したオーバヘッド論理ツールにより実行されることができるヒューリスティクスなクラスタ化アルゴリズムを利用するスキャン・チェーン割り当てルーチンのプログラム・フローを示すフローチャートである。
【図５】図４のスキャン・チェーン・ルーチンにラッチを最初に割り当てるための１つの手順のプログラム・フローを示すフローチャートである。
【図６】図４のスキャン・チェーン・ルーチンにラッチを最初に割り当てるための他の手順のプログラム・フローを示すフローチャートである。
【図７】図２のオーバヘッド論理ツールにより実行されることができる他のヒューリスティクスなクラスタ化ルーチンのプログラム・フローを示すフローチャートであって、一度に３つのクラスタ相互間でのラッチの交換を行う図である。
【図８】図４のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
【図９】図４のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
【図１０】図４のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
【図１１】図４のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
【図１２】図４のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
【符号の説明】
【００６９】
１５０  回路設計
１５２，１５４，１５６，１５８  回路素子
１６０，１６２，１６４，１６６  重心
【図１】
2009526283.tif 000003
【図２】
2009526283.tif 000004
【図３】
2009526283.tif 000005
【図４】
2009526283.tif 000006
【図５】
2009526283.tif 000007
【図６】
2009526283.tif 000008
【図７】
2009526283.tif 000009
【図８】
2009526283.tif 000010
【図９】
2009526283.tif 000011
【図１０】
2009526283.tif 000012
【図１１】
2009526283.tif 000013
【図１２】
2009526283.tif 000014
【国際調査報告】
2009526283.tif 000015
2009526283.tif 000016
2009526283.tif 000017
2009526283.tif 000018