JP2009526283A - 回路設計の回路素子をクラスタ化する方法、装置及びコンピュータ読み取り可能な記録媒体 - Google Patents

回路設計の回路素子をクラスタ化する方法、装置及びコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JP2009526283A
JP2009526283A JP2008552768A JP2008552768A JP2009526283A JP 2009526283 A JP2009526283 A JP 2009526283A JP 2008552768 A JP2008552768 A JP 2008552768A JP 2008552768 A JP2008552768 A JP 2008552768A JP 2009526283 A JP2009526283 A JP 2009526283A
Authority
JP
Japan
Prior art keywords
cluster
circuit elements
clusters
circuit
distance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008552768A
Other languages
English (en)
Other versions
JP5004971B2 (ja
Inventor
フレデリクソン、マーク
ハンドログテン、グレン、ハワード
マクブライド、チャド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009526283A publication Critical patent/JP2009526283A/ja
Application granted granted Critical
Publication of JP5004971B2 publication Critical patent/JP5004971B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】 集積回路装置の設計に使用される方法、装置及びコンピュータ読み取り可能な記録媒体を提供する。
【解決手段】 上記方法、装置及びコンピュータ読み取り可能な記録媒体は、所望の空間的位置の距離を最適化するように回路素子をクラスタ即ちグループに割り当てる。例えば、スキャン時にイネーブルされるラッチが、回路設計のためのスキャン・アーキテクチャにおけるスキャン・チェーンのレイアウトを最適化するように、ヒューリスティクスなクラスタ化を使用して各スキャン・チェーンに割り当てられることができる。
【選択図】図3

Description

本発明に関連する出願は、発明の名称が、Tradingpropensity-based clustering of circuit elements in a circuit designである米国特許出願番号11/348907,及び発明の名称が、Automatic back annotation of a functional definition of anintegrated circuit design based upon physical layoutである米国特許出願番号11/348877であり、両出願は同日に出願され、そして参照のために本明細書に導入する。
本発明は、コンピュータ及びコンピュータ・ソフトウエアに関し、更に具体的にいうならば、集積回路装置の設計において使用されるコンピュータ・ソフトウエアに関する。
チップとして知られている集積回路装置は、半導体製造技術が進化されるにつれて更に大電力化されそして複雑化されてきている。初期の集積回路装置が100よりも少ない数のトランジスタを含んでいたのに対して、今日では、単一の集積回路装置に何百万ものトランジスタを集積することが一般的となっている。この増大したトランジスタ数により、かっては数個の集積回路装置を必要とした幾つかの動作が、単一の集積回路装置で実現されることができ、低コストで高パフォーマンスを与える。例えば、従来のデータ処理システムは、マイクロプロセッサ、メモリ、バス・インターフェイス及びメモリ制御装置毎に別個の集積回路装置を必要としたが、今日のチップ密度の進歩により、これらの機能の全てを同じ集積回路装置内に集積することができるようになった。このような装置は、これらが与える高レベルの集積化に基づいて“システム・オン・チップ”として知られている。
チップ密度の増大は、集積回路チップに使用される設計方式に著しい影響を与えてきている。所望の機能を有するように、設計時に個々のトランジスタ若しくは論理ゲートを手動的に配置するのではなくて、代表的には、設計プロセスの機能的態様が、物理的態様から分離される。代表的には、設計の機能的態様は、論理設計として知られているプロセスにより処理されてきており、この論理設計は、例えばVHDL若しくはヴェリログ(Verilog)のようなハードウエア記述言語で代表的に規定される回路設計の機能的規定を発生する。HDL表現(representation)は、これが回路設計により達成されるべき論理または機能を一般的に規定するので、多くの点に関してソフトウエア・プログラムに似ている。更に、物理的配置またはレイアウト(layout)から論理設計を分離することにより、機能は、高い抽象化レベルで規定されることができる。
HDL表現の生成と平行的に、回路設計の物理的規定が、代表的にはインテグレーション(integration)と呼ばれるレイアウト・プロセスにより生成され、製造される集積回路上の回路素子の実際の物理的配置を表す、論理ゲートと論理ゲート間の相互接続との“フロア・プラン(floor plan)を実質的に生成する。完成回路の予め規定されたセル若しくはブロックを利用してレイアウト・プロセスを助け、かくして数百万もの個々の論理ゲートを処理する必要性を排除した自動化ツールが開発された。或る設計のHDL表現からランダム・ロジック・マクロ(RLM, Random Logic Macro)ブロックを発生するために合成ツールが開発され、これによりRLMブロックを配置しそしてこれらを互いに接続して回路設計を完成させるのに設計の個別レイアウトだけが要求される。更に、幾つかの設計は、設計相互間で再使用可能な在庫の(OTS. off-the shelf)論理ブロックからのブロックを組み入れる。
一旦物理的規定が生成されると、全ての任意のタイミングまたは生産技術性あるいはその両方を確認するために設計のテスト及びシミュレーションが行われ、そしてこの設計がこれらの要求事項を満たすことが調べられると、この設計は、集積回路を製造するのに使用されることができる。
集積回路が更に複雑になるにつれて、開発及びテスト・プロセスに含まれる人員の数が膨大に増加される。実際、多くの場合、論理設計プロセスを行う人員は、物理的設計プロセスを行うインテグレータから完全に分離される。更に、集積回路が更に複雑に、大型にそして高速になるにつれて、タイミングの問題が更に著しくなってきており、レイアウトがなされた後に設計の機能的規定を修正する必要性がしばしば生じる。多くの場合、タイミングの問題が適切に解決された後に、機能的規定の修正、物理的規定の更新及び物理的規定の再テストを繰り返し行うことが要求される。多くの異なる人員がこれらの異なるプロセスに従事しており、従って、機能的及び物理的規定を更新することの調整は、問題となりそして時間がかかる。
例えば、レイアウト・プロセスが機能的規定の修正を必要とする1つの特定な領域が、本明細書でいうオーバヘッド論理回路(即ち、回路設計により具現化される主要な論理回路に直接的に含まれない補助的な支持(support)回路)に関連していることがある。例えば、製造された装置に対してテスト容易性をもたらすために、多くの集積回路設計は、この設計内に集積化されるスキャン・チェーンと呼ばれるラッチの直列チェーンを1つ以上用いる。若しくはラッチを使用するスキャン・アーキテクチャを使用する。1つの直列チェーン即ちスキャン・パス内のラッチは、次のように設計される。即ち、或る特定のモードを行うように構成されるとき、これらのラッチはシフト・レジスタをして働き、その結果、単一源からのデータは、ラッチ・チェーン内にシフトされて異なる状態をシミュレートすることができ、そして或る装置(デバイス)内で発生されたデータは、単一出力を介してシフト・アウトされることができる。かくして、スキャン・アーキテクチャを使用すると、任意の時刻における装置内の種々なノードの電流状態が制御若しくは記録され、そして、後に、外部装置によりアクセスされて、製造された装置の動作を検証することができる。
スキャン・チェーン内のラッチは、互いに直列に結合されることができ、代表的には、各ラッチは、スキャン・イン・ポート及びスキャン・アウト・ポートを有していて、各ラッチのスキャン・イン・ポートは、先行ラッチのスキャン・アウト・ポートに接続される。複雑性の低い回路設計は、単一スキャン・チェーン内に数十若しくは数百個のラッチしか含まないのに対して、複雑性の高い設計、例えば多くのSOC設計は、単一のスキャン・アーキテクチャ内に数千個のラッチを含むことがある。更に、1つのスキャン・アーキテクチャにデータを詰め込みそしてデータを取り出すのに必要な時間を確保するためには、各ラッチをこのスキャン・チェーンに割り当て、更に各ラッチを選択されたスキャン・チェーン内の或る特定な場所に割り当てることを要求する多重(マルチプル)スキャン・チェーンが一般的に使用される。
スキャン・アーキテクチャは、スキャン・チェーン動作をイネーブルしそしてさもなければこの動作を設定するために追加のクロック制御信号を種々なラッチに分配することを必要とする。更に複雑な集積回路設計の場合には、この設計に課される寸法及びタイミングに関する制約は、クロック制御信号及び他のオーバヘッド若しくは非オーバヘッド・グローバル信号を分配するための分配ツリーの使用を必要とする。分配ツリー内で、信号は、ツリー状のラッチを介して分配されそしてこれは信号を更に強め、実効的な配線長を短くし、そしてファン・アウトの問題を減少し、一方で信号を同時刻に全ての終点ポイントに確実に到着させる。結果として、スキャン・チェーンに対するラッチの割り当てと同様に、ラッチは、分配ツリーからの適切な信号出力に接続されることが要求される。
一般的な設計規則として、各スキャン・チェーンの長さを減少し、かくして回路をテストするに必要な時間長を減少するために、均衡化された多数のスキャン・チェーンを利用することが望ましい。更に、1つのスキャン・チェーン内の複数個のラッチを互いに接続するために使用される配線長を最小にすることがしばしば望まれ、これは、代表的には、物理的に互いに接近して配置されているラッチを同じスキャン・チェーンにグループ化することにより行われる。
スキャン・チェーン及び分配ツリーへのラッチの割り当てを回路設計の機能的規定内に維持することがしばしば望まれる。しかしながら、論理設計の後にレイアウトが行われる場合には、スキャン・チェーン内にラッチが適切に割り当てられたか、そして、信号分配ツリー内にラッチが適切に割り当てられたかについては、この設計がレイアウトされ終えた後でなければ確かめることができない。しばしば、論理設計者は最初に、経験的な推測に基づいてラッチをスキャン・チェーン及び分配ツリーに手動的に接続することを要求される。レイアウト及びテストの結果として、ラッチの接続の仕方は、配線長を減少しそしてタイミングの要求事項を満たすようにしばしば手動的に修正されなければならない。設計プロセスが反復されると、繰り返して手動的な修正を行うことが要求される。このことは、機能的規定がレイアウト変更に依存し、又はこの逆であるので、機能的規定を固定化することを困難にする。
装置の集積化が大規模になると、適切な割り当てを維持することが著しく問題となる。例えば、レジスタ(即ち、1グループのラッチ)集積化の間に或る意味のある距離だけ物理的に移動されただけで、これは、分配ツリーの異なるノードに接続されてしまい、そして、おそらく別のスキャン・リングの新たな位置に置かれなくてはならないことになる。代表的なIPブロックは、それぞれ別々の分配ツリーへの割り当て及びスキャン・チェーンへの割り当てがなされる数十のレジスタ(結果として何百のラッチ)を有する。幾つかの設計サイズは、150のオーダの異なる分配ツリー信号を或るレジスタの物理的位置に依存して選択し、そして、25よりも多い別々のスキャン・リングを組み込む。結果として、割り当ての管理には相当な努力を要する。
装置に用いる周波数が増大すると、代表的には設計内における配置の不安定性を生じ、インテグレータ(integrators)に装置のフロア・プランへの頻繁な変更をさせる。スキャン・アーキテクチャへの接続は、実際には機能論理回路の一部ではないので、これらの変更は、スキャン・アーキテクチャへの影響にかまわず通常なされる。かくして、スキャン・アーキテクチャ接続の管理及び回路設計内の他のオーバヘッド回路の管理は、困難性が増大し続けている。
本発明は、1つの態様において、所望の空間的な位置の距離(spatial locality metric)を最適化するようにクラスタ又はグループへの回路素子の割り当てをもたらすヒューリスティクス(heuristic、必ず正しい答えが導けるわけではないが、ある程度のレベルで正解に近い解を得ることができる方法))なクラスタ化(clustering)を利用する装置、プログラム製品及び方法を提供することにより従来技術に関連する上述の問題を解決する。例えば、本発明の実施例は、回路設計のためのスキャン・アーキテクチャのスキャン・チェ−ンのレイアウト(配置)を最適化するために、例えばスキャン時にイネーブルされるラッチ(scan-enabled latches)のような回路素子を個々のスキャン・チェーンに割り当てるために使用されることができる。
本発明によると、例えば、回路設計の回路素子は、この回路設計の複数個の回路素子をサイズが均衡化された複数のクラスタにグループ化し、そして複数個の回路素子の空間的な位置の距離をヒューリスティクスに最適化することによりクラスタ化されることができる。ヒューリスティクスな最適化は、複数個のクラスタのうちから選択された複数のクラスタ相互間で回路素子の交換を反復的に行い、交換を行った後に空間的な位置の距離を再計算し、そして再計算された空間的な位置の距離に基づいて交換を選択的に不要(discarding)または取り消しにすることにより達成されることができる。
以下に説明する実施例は、回路設計の所望の空間的な位置の距離を最適化するために、クラスタ即ちグループへの回路素子の割り当てを行うヒューリスティクスなクラスタ化アルゴリズムを利用する。例えば以下に述べる実施例は、スキャン・チェーンのワイヤの長さを最適にしてレイアウト及びタイミングの問題を最小にするために、回路設計に組み込まれるスキャン・アーキテクチャの各スキャン・チェーンへ、スキャン時にイネーブルされるラッチを割り当てるヒューリスティクスなクラスタ化を利用する。
回路設計の機能的規定が生成され終え、そしてこの回路設計に含まれる複数の回路素子がフロア・プランにレイアウトされ終えて物理設計を生じた後に、回路設計の機能的規定により規定された複数の回路素子を、イネーブルしてこれらを例えばスキャン・アーキテクチャ回路のようなオーバヘッド回路に自動的に接続または割り当てるヒューリスティクスなクラスタ化が本発明の実施例において使用されることができ、かくして、機能的規定の開発の間オーバヘッド回路に起因して生じる問題に対して回路デザイナが多くの時間を費やすことなく、回路デザイナに回路設計の機能的問題に専念させることができる。
発明の名称がTradingpropensity-based clustering of circuit elements in a circuit designである前記米国特許出願に更に詳細に説明してあるように、クラスタへの回路素子の割り当て(例えば、スキャン・チェーンへのラッチの割り当て)が、回路設計の機能的規定に、ヒューリスティクスなクラスタ化を経て発生された回路素子の割り当てを自動的にバック・アノテーションするバック・アノテーション・プロセスにおいて利用されることができる。
本発明の機能的規定は、例えばVHDL若しくはヴェリログ(Verilog)のような任意のハードウエア記述言語(HDL)フォーマットを使用して組み込まれることができ、そして、物理的レイアウトとは独立的に、集積回路装置の所望の論理回路を具現化するために、コンポーネントの一部若しくは全て若しくはこれら相互間の接続容易性を表す。例えば1つ以上のネットリスト・ファイルのような物理的規定が組み込まれることができ、そして、回路設計の全て若しくは一部の物理的レイアウトを表す。
本明細書において、回路素子は、セルまたはコンポーネントと呼ばれ、そして、回路素子が、例えば単一の論理ゲートのような小さいもの若しくは数百または数千の論理ゲートを含む複雑なIPブロックのような大型のもののような種々なレベルの複雑性を有する回路であり得ることを理解されたい。本発明の実施例は、回路設計の回路素子の全て若しくは一部を複数のクラスタまたはグループに効果的にグループ化し、そして本発明の原理が、配置場所に基づく理由によりクラスタ化されることが望ましい回路素子の全てではないにしてもその大部分に対して適用されうることを理解されたい。
本発明に基づいてヒューリスティクスなクラス化を組み込むために、回路獅子は、サイズが均衡した複数のクラスタ、即ち、全く同じかほぼ同じ数の素子を有する複数のクラスタに最初グループ分けされる。回路設計のレイアウトにおける各クラスタの所望の位置を表す重心を各クラスタに規定する。後述する実施例においては、各クラスタの所望の重心は、一次元、即ち、回路設計の垂直軸(回路設計が設けられるチップの表面の垂直軸)に沿って規定される。しかしながら、他の実施例においては、所望の重心は、2次元以上の次元により定められ場所に規定されうることを理解されたい。所望の重心は、手動的に若しくは自動的に規定されることができ、そしてクラスタ化を改善するように、所望の重心の位置を調整または修正することが望ましい。
クラスタ毎に所望の重心が規定されると、チップの表面上で各クラスタが、空間的に可能な限り小さな面積内にまとめられて分布するように、クラスタに属する単独の回路素子若しくは或るグループにされた回路素子を、クラスタ相互間で、選択的に交換するためのヒューリスティクスなクラスタ化が行なわれることができる。
実施例において各クラスタの空間的分布、即ち、チップの表面における各クラスタの分布を測定する方法は、空間的な位置の距離(spatial locality metric)の測定に基づく。以下に説明する実施例においては、各所望の重心が、一次元的に規定され、クラスタ毎の空間的な位置の距離は、所望の重心の位置と、クラスタに割り当てられた回路素子のそれぞれの位置(例えば各回路素子の中心若しくはエッジ)との間の垂直方向の距離の合計として計算されることができる。しかしながら、他の実施例においては、他の空間的な位置の距離を使用することができる。例えば、所望の重心の位置が二次元的に規定される場合には、所望の重心を二次元的に規定し、そしてこの重心と回路素子との間の二次元的に表された距離とすることができる。例えばマンハッタン距離(垂直距離及び水平距離の和)または2つの点相互間の最短距離(即ち、直線距離)のような各回路素子からクラスタの重心点までの二次元的距離を利用することができる。また、空間的な位置の距離は、クラスタに属する各回路素子の一部分のみに基づいて規定されることができ、若しくは例えば各回路素子の相対的サイズ(寸法)のような大きさを考慮して計算されることができる。空間的な位置の距離はまた、全てのクラスタの空間的な分布を表す全体的計算に基づいて規定されることができる。実質的には、複数のクラスタの空間的分布状態、かくしてクラスタの幾何学的な最適化のレベルを規定するために使用されうる任意の距離が、本発明の空間的な位置の距離として使用されることができる。
本発明のヒューリスティクスなクラスタ化は、2つ以上のクラスタ相互間で1つ以上の回路素子の交換を何回も繰り返して行い、空間的な位置の距離を再計算し、空間的な位置の距離が改善しなかった交換を無効にし、即ち取り消すことにより、1つ以上のクラスタの空間的な位置の距離を最適化する。代表的には、このような反復的な無作為な交換は、例えば予定された回数だけ反復が繰り返されるまで、または成功した交換(空間的な位置の距離の改善がなされた交換)をもたらさなかった交換が予定の回数だけの繰り返されるまで等、所望の完了点に到達するまで行われる。
交換が空間的な位置の距離を改善したかどうかということは、種々な実施例において、異なるように解釈されることを理解されたい。例えば、空間的な位置の距離は、この距離が変化しなかったならば、もしも距離がある閾値を超えて改善されなかったならば、またはもしも距離が悪いほうに変化したならば、改善されなかったと見なすことができる。
交換を行い、そして空間的な位置の距離の再計算後に交換を無効にするやり方は、空間的な位置の距離の再計算の前に回路素子を別の異なるクラスタに再割り当てする、即ち他のクラスタに割り当てられること、そして、もしも距離が改善されなかったならば元のクラスタに戻されることを必ずしも要求しないことを理解されたい。或る実施例においては、交換は、回路素子が新たなクラスタに割り当てられたという仮定のもとで空間的位置の距離の再計算の目的のために単に回路素子(交換したとされた)を選択することを採用してもよく、これにより、新たなクラスタへの実際の割り当ては距離の改善が達成された後に必要となり、そして無効にする処理は、改善が達成されなかったという決定に基づいてこのような割り当てがなされなかったという処理のみを必要とする。しかしながら、他の実施例においては、交換及びこの交換を無効にする処理は、異なるクラスタに回路素子を割り当て及び再割り当てすることを組み入れることができる。
以下の説明は、スキャン時にイネーブルされるラッチをスキャン・チェーンに割り当てすることを説明するが、以下に説明するヒューリスティクスなクラスタ化アルゴリズムは、例えば種々な回路素子への機能的信号またはクロック制御信号のようなグローバル信号の基板上での分布を改善するために、スキャン時にイネーブルされるラッチ及び他の型の回路素子を異なる型の他の複数のクラスタに割り当てるために使用されることができることを理解されたい。これに関して、グローバル信号とは、分配ツリーを使用する回路設計における多重ユニットまたは互いに区切られた領域にわたって共用される信号を意味する。代表的には、グローバル信号の割り当ては、特定なグローバル信号を分配する分配ツリーの特定な終了点にラッチ若しくは他の回路素子を割り当てる。
図を参照して説明する。幾つかの図における同じ参照番号は同じものを表す。図1は、本発明に従うヒューリスティクスなクラスタ化を組み込むのに適する例示的な集積回路設計プロセスを示す。この設計プロセスは、代表的にはブロック12に示されている論理設計で開始し、これは、代表的には論理設計ツールを使用する1人以上の論理デザイナにより行われ、そして、例えば1以上のVHDLファイルの形の機能的規定を発生する。VHDLファイルは代表的なものであり必ずしもこれでなくともよく、これはVHDLファイルにわたるバージョン制御を維持するソース・コード・リリース・プロセス14に与えられる。
VHDLファイルから、例えば種々なプレイスメント・ベースの若しくはタイミング・ベースの合成ツールのような1以上の合成ツールが、このVHDLファイルの幾つか若しくは全てからランダム・ロジック・マクロ(RLM, Random Logic Macro)のためのネットリスト・ファイルを発生するために使用されることができる。これらのファイルは、回路設計のためのフロアプラン(floor plan)を発生するために物理設計又はレイアウト・プロセス18における1以上のインテグレータ(integrator)により使用される。フロア・プランは、例えば1以上のネットリスト・ファイルを使用して、又は回路設計の物理規定を提示する他の方法を使用して提示されることができる。自動合成に加えて又はこれの代わりに、ソース・コード・リリース・プロセス14により維持され、そして回路設計のためのフロア・プランを発生するときの物理設計18の間にインテグレータにより使用されることができるOTSブロックを使用するカスタム若しくは半カスタム設計スタイルを使用して機能規定の幾つか若しくは全てが組み込まれる(implemented)ことができる。
ネットリスト内に提示されている物理規定から、オーバヘッド論理設計プロセス20が割り当てファイルを発生させるために使用されることができ、この割り当てファイルは、例えばスキャン・アーキテクチャに関連する回路設計のオーバヘッド論理回路に関連する多様な信号及び回路素子の間の割り当てを含む。割り当てファイルは、データベース22に貯蔵され、そして割り当てファイルの以前のバージョンは、プロセス20で割り当てを発生することに関連してデータベース22から引き出されることができる。プロセス20は又、例えば分配ツリーを介して分配される機能信号のような他のグローバル信号に対する割り当てを発生するのに使用されることができる。スキャン時にイネーブルされるラッチを回路設計のスキャン・チェーンに割り当てるためにヒューリスティクスなクラスタ化がプロセス10に組み込まれることは、オーバヘッド論理設計20内で行われる。
プロセス20により発生された割り当てファイルは、ブロック24に示されているように、回路設計の機能規定をバック・アノテーション(back annotation)するために使用されることができる。特に、バック・アノテーション・プロセス24は、論理設計プロセス12により発生されたVHDLファイルに対して、割り当てファイルで規定された割り当てをアノテーション(注釈として付与する)するために使用されることができる。このアノテーションされたファイルは、ソースコード、リリース・プロセス14に与えられて保持される。割り当てファイルが、任意の適切はデータ構造を使用して組み込まれ得ることを理解されたい。
図1に示されているプロセスを使用して、物理レイアウトの結果として作られた割り当てが、論理設計により発生されたソースVHDLに送り戻されることを理解されたい。更に、後の時刻において物理設計に対してなされる修正も又ソースVHDLに戻されてアノテーションされることができる。又、図1に示されるように、ブロック12からブロック24への矢印により示されているように、回路設計の機能規定への修正も又、回路設計の機能規定をアノテーションするために使用されることができる。バック・アノテーションの更に詳細な説明は、前述の米国特許出願においてなされている。
他の設計プロセス及び方法論が本発明の種々な実施例において利用され得ることを理解されたい。プロセス内の種々な動作が、コンピュータ組込型のツールの助けを借りて自動的に又は手動的に行われ得ることを理解されたい。又、バック・アノテーションが、オーバヘッド論理設計プロセス20に関連して説明したものと異なるやり方で発生された割り当てファイルを使用して行われ得ることを理解されたい。更に、手動的なバック・アノテーションが、説明する自動化プロセスに追加して又はこれの代わりに幾つかの実施例において使用されうることを理解されたい。従って、本発明は、説明する特定な実施例に限定されるものではない。
次に図2は、プロセス10の種々なステップを行うことができる装置30を示す。例示的な実施例の装置30は、ネットワーク32を介して1以上のクライアント・コンピュータ34に結合されるサーバ又はマルチユーザー・コンピュータとして組み込まれている。本発明の目的のために、各コンピュータ30,34は、任意の型のコンピュータ、コンピュータ・システムまたは他のプログラム可能な電子装置を表す。更に、各コンピュータ30,34は、例えばクラスタまたは他の分配型のコンピュータ・システムにおけるネットワークにより接続された1つ以上のコンピュータを使用して具現化されることができる。他の変形例において、コンピュータ30は、例えばデスクトップ・コンピュータ、ラップトップ・コンピュータ、携帯型コンピュータ、携帯電話、セットトップボックス等の単一コンピュータまたは他のプログラム可能な電子装置内に組み込まれることができる。
コンピュータ30は、メモリ38に結合される少なくとも1以上のマイクロプロセッサを含む中央処理ユニット36を含み、メモリは、コンピュータ30のメイン・メモリを構成するランダム・アクセス・メモリ(RAM)装置と、例えばキャッシュ・メモリ、不揮発性メモリ又はバックアップ・メモリ(例えばプログラム可能なメモリ又はフラッシュ・メモリ)、読み取り専用メモリ等の補助レベルのメモリを表す。更に、メモリ38は、例えばCPU36のプロセッサ内の任意のキャッシュ・メモリのようなコンピュータ30内に物理的に配置されているメモリ記憶装置、及び例えばコンピュータ30に結合されているマスストレージ装置40若しくは他のコンピュータに貯蔵されており仮想メモリとして使用される任意の記憶容量を含むと考えることができる。コンピュータ30は又、代表的には多数の入力を受け取り、そして情報を外部に渡すために出力する。ユーザー又は操作者とインターフェイスするために、代表的にコンピュータ30は、1つ以上のユーザー入力装置(例えば、キーボード、マウス、トラックボール、ジョイスティック、タッチパッド、またはマイクロフォン等あるいはその両方)及び表示装置(例えば、CRTモニタ、LCD表示パネル、またはスピーカ等あるいはその両方)と協働するユーザー・インターフェイス42を含む。又は、ユーザー入力は、他のコンピュータ若しくはターミナルを介して受け取られることができる。
追加的な記憶装置として、コンピュータ30は、例えばフロッピィ若しくは他のリムーバブル・ディスク・ドライブ、ハード・ディスク・ドライブ、直接アクセス記憶装置(DASD)、光ドライブ(例えば、CDドライブ、DVDドライブ等)またはテープ・ドライブ若しくはその両方を含むことができる。更に、コンピュータ30は、他のコンピュータ及び電子装置との情報の通信を行うために、1以上のネットワーク32(例えば、LAN,WAN、無線ネットワークまたはインターネット等あるいはその両方)に接続するインターフェイス44を含むことができる。代表的にコンピュータ30は、この分野で周知であるように、CPU36と構成要素38,40.42及び44との間の適切なアナログまたはディジタルあるいはその両方を含むことを理解されたい。他のハードウエア装置を本発明に含ませることができる。
以下に説明するように、コンピュータ30は、オペレーティング・システム46の制御のもとで動作し、そして種々なコンピュータ・ソフトウエア・アプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、データ構造等を実行し又はこれらに依存して働く。更に種々なアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール等は、例えば分散型若しくはクライアント−サーバ・コンピュータ雰囲気のようなネットワーク32を介してコンピュータ30に結合されている他のコンピュータ内の1以上のプロセッサ上で実行することができ、これによりコンピュータ・プログラムの機能を組み入れるために要求される処理は、ネットワークを介する複数のコンピュータに割り当てられることができる。
一般的にいうと、本発明の実施例を具現化するために実行されるルーチンは、オペレーティング・システム、特定なアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール又は一連のインストラクション若しくはこれらのサブセットの一部として具現化されるかにかかわらず、本明細書では、“コンピュータ・コード”又は“単純に”プログラム・コード“と呼ぶ。代表的に、”プログラム・コード“は、コンピュータの種々なメモリ及び記憶装置内に多様な時刻に存在し、そして、コンピュータの1以上のプロセッサにより読み出されて実行されるときにコンピュータに、本発明の種々な態様を実施化するステップ又は素子を実行するのに必要なステップをコンピュータに行わせる1以上のインストラクション(命令)を含む。更に、本発明を、十分に機能するコンピュータ及びコンピュータ・システムについて説明するが、本発明の種々な実施例は、多様な形のプログラム製品として配布され得ること、そして、本発明は、配布を実際に行うために使用される特定な型のコンピュータ読み取り可能な記録媒体に係わらず、等しく適用されることは、当業者において理解されるであろう。コンピュータ読み取り可能な記録媒体の例は、これらに限定する必要はないが、例えば揮発性及び不揮発性メモリ装置、フロッピィ及び他のリムーバブル・ディスク、ハード・ディスク・ドライブ、磁気テープ、光ディスク(例えば、CD−ROM,DVD等)等、並びに例えばディジタル及びアナログ通信リンクのような記録型媒体を含む。
更に、以下に説明する種々なプログラム・コードは、アプリケーション(この中でこれは本発明の特定な実施例に組み込まれている)に基づいて同定されることができる。しかしながら、以下の任意の特定なプログラム命名法が単に便宜上使用され、かくして、本発明は、このような命名法により同定されまたは暗示されあるいはその両方による任意の特定なアプリケーションにおいて単独に使用することに限定されるべきではない。更に、コンピュータ・プログラムが、ルーチン、プロシージャ、メソッド、モジュール、オブジェクト等に組織され得る代表的には多数の方式、及びプログラムの機能性が、典型的なコンピュータ(例えば、オペレーティング・システム、ライブラリィ、API,アプリケーション、アプレット等)内に存在する種々なソフトウエア・レイヤに割り当てられ得る種々な方式を考慮すれば、本発明が、本明細書中で説明するプログラムの機能性の特定な組織及び割り当てに限定されないことを理解されたい。
図1のプロセス10の種々な動作を組み込むために、コンピュータ30は、本発明のヒューリスチックなクラスタ化を行うのに適する例えば、論理設計ツール48,物理設計ツール50、合成ツール52及びオーバヘッド論理ツール54,並びに自動的なバック・アノテーションを行うバック・アノテーション・ツール56を含む多数のソフトウエア・ツールを含む。集積回路設計、認証またはテストあるいはその両方に関連して利用される他のツールも又コンピュータ30内で利用されうる。更に、ツール48−56は単一のコンピュータ30内に示されているが、特に多人数が集積回路設計の論理設計、インテグレーション、及び認証に携わる場合には、上記のツールは、別個の幾つかのコンピュータに分散されることが、当業者により理解されるであろう。従って、本発明は、図2に示されている単一コンピュータへの組み込みに限定されない。
当業者は、図1及び2に示されている例示的な構成は、本発明を限定するものではないことを認識するであろう。実際当業者は、他の代替的なハードウエアまたはソフトウエア構成あるいはその両方が本発明の範囲から逸脱することなく使用されうることを認識するであろう。
図3を参照すると、空間的な位置の距離(spatial locality metric)を最適化するように、複数の回路素子を複数のクラスタにグループ化するのに適する例示的なヒューリスティクスなクラスタ化ルーチン60が示されている。ルーチン60は、複数の回路素子を複数のグループに最初に割り当てるブロック62で開始する。上述のように、それぞれのグループの複数の回路素子のサイズ(数)が均衡している複数のグループを形成するように、複数の回路素子を割り当てることが望ましい。更に、図5及び図6に関して詳細に説明するように、この割り当ては、例えば、無作為に、またはまだ満杯状態ではない最も近いグループに回路素子を順番に割り当てようとすることのような多数の異なる方式で行われることができる。
次に、ブロック64において、所望の空間的な位置の距離が計算され、そして、ブロック66において、交換(swap)に参加させるための2つ以上のグループが無作為に選択される。次に、ブロック68において、上記の選択されたグループ毎に、交換に参加させるための1つ以上の回路素子が無作為に選択され、ここで、交換に参加させられる回路素子の数は、交換後の複数グループに亘って均衡したサイズ(数)が維持されるように選択される。
次に、ブロック70において、交換が行われ、これにより、選択されたグループのそれぞれに属する選択された回路素子は、他の選択されたグループに割り当てられる。次いで、ブロック72は、空間的な位置の距離を再計算し、そして、ブロック74は、距離が改善されたかどうか(即ち、距離が減少されたかどうか)を調べる。もしも改善されていないならば、制御はブロック76に移り、行われた交換を放棄し、即ち取り消して元の状態に戻し、この結果、交換の間に異なるグループに割り当てられた回路素子は、これらの元のグループに再割り当てされる。距離が改善されたならば、制御はブロック78に移り、このブロックは、所望の完了点に到達したかどうかを調べる(例えば、N回の繰り返しの後に、または、交換が成功しなかったN回の繰り返しの後に)。ブロック74に戻ると、距離が改善(減少)したならば、制御はブロック78に移り、かくしてブロック76をバイパスし、そして成功した(距離が減少した)交換を保持する。
もしもブロック78が、完了点が到達されなかったことを検出すると、制御はブロック64に移り、空間的な位置の距離を再計算し、そして他の交換を行う。しかしながら、もしも完了点に到達したならば、ルーチン60は終了する。
上述のように、本明細書で説明するヒューリスティクスなクラスタ化アルゴリズムは、種々な異なる目的のための種々な異なる型の回路素子をクラスタ化するために利用されることができる。図4は、回路設計のスキャン時にイネーブルされるラッチをこの回路設計内に設けられる複数の異なるスキャン・チェーンに割り当てるために使用されることができる。
ルーチン80は、ネットリスト及び割り当てファイルを用意することによりブロック81で開始する。代表的には、このことは、回路設計の最新のレイアウト・データに基づくネットリスト・ファイルをメモリに最初につめ込む(読み込む)ことにより行われる。このネットリスト・データから、各回路素子の位置、サイズ(寸法)及び形が、チップのマップにつめ込まれることができる。全ての形がメモリにつめ込まれると、スキャン・チェーンへの接続を要求する回路素子にフラグがつけられ、その結果このような接続を要求しない回路設計内の回路素子は考慮されなくなる。回路素子のこのような採用若しくは除外は、或る規則に基づいて行われることができ、またはブロック81においてつめ込まれた割り当てファイルにおいて規定されることができる。割り当てファイルは、回路設計の全ての回路素子及び各回路素子の階層名のリストを含むことができる。また、割り当てファイルは、各回路素子を使用するクロック制御ツリー及びスキャン・チェーンについての情報を含む(例えば、機能設計の開発の間に論理デザイナにより入力される)。また、割り当てファイルは、所望の重心に換算した各スキャン・チェーン(scan chain in terms of a desired centroid)の位置についての情報を含む。
ネットリスト及び割り当てファイルが用意されると、制御はブロック82に移り、図3に関して説明したのと同様なヒューリスティクスなクラスタ化アルゴリズムを行う。具体的にいうと、ブロック82は、スキャン・チェーンへのラッチの最初の割り当てを行う。ブロック82の2つのインプリメンテーション(implementation)は、図5及び図6に関してされに詳細に後述する。用語「ラッチ」は、例えばレジスタ等の情報記憶回路と同様なものを指すことを理解されたい。更に、幾つかのレジスタまたは他の回路は、複数個のラッチを含むことができ、そして、ラッチの割り当てはまた、1以上のラッチを含む回路素子の割り当てのことである。
次に、ブロック84において、所望の空間的な位置の距離が計算され、このインプリメンテーションにおいては、ラッチ及びこれが割り当てられるスキャン・チェーンの所望の重心(centroid)(このインプリメンタションにおいては、一次元軸に沿った単一の点として規定される)の間の総垂直距離を計算することを行う。次に、ブロック86において、第1及び第2のスキャン・チェーンが無作為に(ランダムに)選択され、次いでブロック88において、第1及び第2の交換グループを生成するために、各スキャン・チェーンからN個のラッチが無作為に選択される。選択されるラッチの数は、プリセット・ラッチ・カウントの限界内にとどまり、そして、各交換グループ内のラッチの総数が計算される。幾つかの素子が複数のラッチを有するとすると、均衡(バランス)した複数のクラスタを維持するために総数がほぼ等しくありさえすれば、2つの交換グループ内のラッチの数は幾つかの実施例においては同じでなくてもよい。例として、1つのスキャン・グループは14個のラッチを有する1つのレジスタを含むことができ、一方、他のスキャン・グループはそれぞれが5個のラッチを有する3つのレジスタを含むことができる。
次に、ブロック90において、交換が行われ、これにより、選択されたそれぞれのスキャン・チェーン内の選択されたラッチは、他のスキャン・チェーンに割り当てられる。次いで、ブロック92は、空間的な位置の距離、ここでは各ラッチからこれが割り当てられたスキャン・チェーンの所望の重心までの総垂直距離、即ち、交換の対象となるスキャン・チェーンのそれぞれ内の各ラッチの距離の合計に関連する値を再計算する。ブロック94は、合計の距離が減少されたかどうかに基づいて、距離が改善されたかどうかを調べる。もしも改善されなければ、制御はブロック96に移り、行われた交換を放棄し、即ち取り消して元の状態に戻し、交換の間に別のスキャン・チェーンに割り当てられたラッチは、元のスキャン・チェーンに再割り当てされる。制御はブロック98に移り、このブロックは、所望の完了点に到達したかどうかを調べる(例えば、N回の繰り返しの後に、または、交換が成功しなかったN回の繰り返しの後に)。ブロック94に戻ると、もしも合計距離が減少したならば、制御はブロック98に移り、かくしてブロック96をバイパスし、そして成功した交換を保持する。
もしもブロック98が、完了点がまだ到達されなかったことを検出すると、制御はブロック84に移り、合計距離を再計算し、そして他の交換を行う。しかしながら、もしも完了点が到達されたならば、ブロック98は制御をブロック99に移し、割り当てファイルを更新し、そして更新されたファイルを記憶する。そして、ルーチン80が終了する。
図5は、スキャン・チェーンへの最初のラッチの割り当てを行う図4のブロック82にステップ100を組み入れた1つの手順を示し、ここで、ステップ100においては、スキャン・チェーンのサイズが均衡したサイズになるように(即ち、ラッチの数がほぼ同じになるように)、ラッチが最初に無作為にスキャン・チェーンに割り当てられる。図6は、スキャン・チェーンへの最初のラッチの割り当てを行う図4のブロック82(図6では82‘として示されている)を含む他の手順を示し、ブロック102は、ヒューリスティクスなクラスタ化アルゴリズムにより、スキャン・チェーンへの割り当てを待っているラッチの中から次に割り当てられるラッチを取り出す。
次いで、ブロック104は、現在いっぱいな状態(フル状態)ではない最も近くのスキャン・チェーンにラッチを追加する。最も近いスキャン・チェーンは、ラッチから各スキャン・チェーンまでの垂直距離を計算することにより決められることができる。更に、複数のスキャン・チェーンを望ましくはサイズが均衡した状態にしたいので、ラッチをこれに最も近いスキャン・チェーンに割り当てる前にスキャン・チェーンが既にいっぱいな状態になっているかどうかの検査を行い、もしそうならば、更に離れた距離にあるスキャン・チェーンを代替として選択する。スキャン・チェーンの容量または収容量は、例えば、ラッチの数をスキャン・チェーンの数で除算することにより決められることができる。
次に、制御はブロック106に移り、このブロックで割り当てを待っている追加のラッチがあるかどうかを調べ、もしもそうであるならば、制御はブロック102に戻り他のラッチを割り当てる。全てのラッチが割り当てられると、ルーチン82‘は終了する。
次に、図7は、回路設計に含まれているスキャン時にイネーブルされるラッチを複数のスキャン・チェーンに割り当てるブロック82−98の代わりに実行されることができる他のヒューリスティクスなクラスタ化ルーチン110を示す。この手順においては、2つのスキャン・チェーン内のラッチから2つの交換グループを生成するのではなく、パイプライン型の交換が行われ、これにより、3つのスキャン・チェーンが或る特定な交換に参加できるように、4つの交換グループが3つのスキャン・チェーンから生成される。
ルーチン110はブロック112で開始し、無作為な割り当てによりラッチをスキャン・チェーンに最初に割り当てる。これの代わりに、ルーチン82‘に関して説明した最初の割り当てを使用することができる。次に、ブロック114において、所望の空間的な位置の距離が計算され、この手順においては、各ラッチとこれが割り当てられたスキャン・チェーンの所望の重心との間の総垂直距離(この手順においては、一次元軸に沿った単一点として規定される)を計算する。次に、ブロック116において、第1のスキャン・チェーンが無作為に選択され、そして次いでブロック118において、第1スキャン・チェーンからN個のラッチが無作為に選択されて第1交換グループ(交換グループ1と呼ぶ)を生成する。選択されるラッチの数は、プリセット・ラッチ・カウント上限値内に留まり、そして、交換グループ内のラッチの総数がブロック118において計算される。
次に、ブロック120において、第2スキャン・チェーンが無作為に選択され、そして次いでブロック122及び124において、第2スキャン・チェーンからN個の2組のラッチが無作為に選択されて一対の第2交換グループ(交換グループ2及び交換グループ2Aと呼ぶ)を生成する。次にブロック126において、第3スキャン・チェーンが無作為に選択され、そして、ブロック128において、第3スキャン・チェーンが無作為に選択され、そしてブロック128において、第3スキャン・チェーンからN個のラッチが無作為に選択されて第3交換グループ(交換グループ3と呼ぶ)。ブロック122,124及び128のそれぞれにおいて、選択されるラッチの数は、プリセット、ラッチ・カウント上限値内に留まり、そして交換グループ内のラッチの総数が計算される。生成した複数の交換グループが、複数個のラッチを有する回路素子を含むならば、各交換グループに割り当てられたラッチの総数は、互いにわずかに異なることがあることを理解されたい。
次に、ブロック130−136において、交換が行われ、これにより、交換グループ1の選択されたラッチが第2スキャン・チェーンに割り当てられ(ブロック130)、交換グループ2の選択されたラッチが第1スキャン・チェーンに割り当てられ(ブロック132)、交換グループ2Aの選択されたラッチが第3スキャン・チェーンに割り当てられ(ブロック134)、そして交換グループ3の選択されたラッチが第2スキャン・チェーンに割り当てられる(ブロック136)。
次いで、ブロック138は、空間的な位置の距離、ここでは各ラッチから、これが割り当てられたスキャン・チェーンの所望の重心までの総垂直距離、即ち、交換に含まれるスキャン・チェーンのそれぞれ内の各ラッチの距離の合計に関連する値を再計算する。ブロック140は、合計の距離が減少したかどうかに基づいて、距離が改善されたかどうかを調べる。もしも改善されていないならば、制御は、ブロック142に移り、なされた交換を放棄即ち取り消し、これにより、交換の間にそれぞれ別のスキャン・チェーンに割り当てられたラッチはこれらの元のスキャン・チェーンに再割り当てされる。制御は、ブロック144に移り、所望の完了点が到達されたかどうかを調べる(N回の繰り返しの後に、または交換が成功しなかったN回の繰り返しの後に)。ブロック140に戻ると、もしも合計距離が減少したならば、制御はブロック144に移り、かくしてブロック142をバイパスし、そして成功した交換を保持する。
もしもブロック144が、完了点が到達されなかったことを検出すると、制御はブロック114に戻り、合計距離を再計算しそして他の交換を行う。しかしながら、もしも完了点に到達したならば、ルーチン110が終了される。
図4及び図7に関連して説明したように、2つ若しくは3つのスキャン・チェーンからではなく、本発明に従って異なるスキャン・チェーンにラッチを割り当てる他の方法を使用することができることを理解されたい。
図8−12を参照すると、図4のルーチン80に関して説明した上述のヒューリスティクスなクラスタ化アルゴリズムの動作を更に説明するために、単一のスキャン時にイネーブルされるラッチをそれぞれが含む複数の回路素子を有する例示的な回路設計150が示されている。特に、図8は、回路設計150内に分布されている回路素子152,154,156及び158を示す。
次に図9は、回路素子を4つの互いに異なるスキャン・チェーンへ無作為に最初の割り当てる例を示し、これらのスキャン・チェーンのそれぞれは、所望の重心160,162,164及び166を有する。図8において同じ模様により示されているように、回路素子152は所望の重心160を有するスキャン・チェーンに最初に割り当てられ、回路素子154は所望の重心162を有するスキャン・チェーンに最初に割り当てられ、回路素子156は所望の重心164を有するスキャン・チェーンに最初に割り当てられ、そして回路素子158は所望の重心166を有するスキャン・チェーンに最初に割り当てられる。
次に図10は、所望の重心160を有するスキャン・チェーンに割り当てられたラッチに対する、図4のブロック84で行われる空間的な位置の距離の合計距離の計算を示す。合計距離とは、1つのスキャン・チェーン(図8では白抜きで示されている)に割り当てられた各ラッチと、このスキャン・チェーンの重心160との間の距離の総和のことであり、これは水平方向の矢印により示されている。
図11は、最初の無作為な割り当てに続くヒューリスティクスなクラスタ化を、代表的には、図4のブロック86−98の動作を複数回繰り返した後の結果を示す。図示のように、特定なスキャン・チェーンの重心に最も接近している複数のラッチが、同じスキャン・チェーン・グループにクラスタ化されている。この場合、所望の重心160を有するスキャン・チェーンに最も近いラッチ152,154,156及び158が、このスキャン・チェーンに割り当てられる。図12に示すように、白抜きで示されているスキャン・チェーンに割り当てられている全てのラッチの合計距離は、図10に示した無作為な割り当て語の合計距離と比べて著しく減少されている。
本発明の精神及び範囲から逸脱することなく、説明した実施例に対して種々な修正を行えることが明らかである。例えば、クラスタに属する全ての素子の合計距離を計算する代わりに、特定な交換グループ内の1つのラッチの距離だけを計算することもできる。本発明を知り得た当業者は、他の空間的な位置の距離を使用しうることを理解するべきである。
本発明に従うヒューリスティクスなクラスタ化を導入した集積回路設計プロセスのブロック図である。 図1のプロセスを行うに適するコンピュータ・システムの主要なハードウエア・コンポーネントのブロック図である。 図2に示したオーバヘッド論理ツールにより実行されることができるヒューリスティクスなクラスタ化ルーチンのプログラム・フローを示すフローチャートである。 図2に示したオーバヘッド論理ツールにより実行されることができるヒューリスティクスなクラスタ化アルゴリズムを利用するスキャン・チェーン割り当てルーチンのプログラム・フローを示すフローチャートである。 図4のスキャン・チェーン・ルーチンにラッチを最初に割り当てるための1つの手順のプログラム・フローを示すフローチャートである。 図4のスキャン・チェーン・ルーチンにラッチを最初に割り当てるための他の手順のプログラム・フローを示すフローチャートである。 図2のオーバヘッド論理ツールにより実行されることができる他のヒューリスティクスなクラスタ化ルーチンのプログラム・フローを示すフローチャートであって、一度に3つのクラスタ相互間でのラッチの交換を行う図である。 図4のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。 図4のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。 図4のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。 図4のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。 図4のスキャン・チェーン割り当てルーチンの動作を示す例示的な回路設計のブロック図である。
符号の説明
150 回路設計
152,154,156,158 回路素子
160,162,164,166 重心

Claims (25)

  1. 回路設計の複数の回路素子をクラスタ化する方法であって、
    前記回路設計の複数の前記回路素子をサイズが均衡した複数のクラスタにグループ化するステップと、
    前記複数の回路素子の空間的な位置の距離を、反復的にヒューリスティクスに最適化するステップと、
    前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を行うステップと、
    前記交換を行った後に、空間的な位置の距離を再計算するステップと、
    再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にするステップとを含む前記方法。
  2. 前記複数の回路素子のそれぞれがラッチを含む、請求項1に記載の方法。
  3. 前記クラスタのそれぞれがスキャン・チェーンに関連づけられている、請求項2に記載の方法。
  4. 前記クラスタのそれぞれがクロック制御ツリーに関連づけられている、請求項2に記載の方法。
  5. 前記交換を行うステップが、交換が行われるクラスタのそれぞれのサイズの均衡を維持しながら、交換されるべき回路素子を無作為に選択することを含む、請求項1に記載の方法。
  6. 前記グループ化するステップが、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタに無作為にグループ化する、請求項1に記載の方法。
  7. 前記グループ化するステップが、前記回路設計のレイアウト内の各回路素子の位置に基づいて、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタに無作為にグループ化する、請求項1に記載の方法。
  8. 前記複数のクラスタのそれぞれに重心が設定されており、前記空間的な位置の距離が、前記回路素子から前記クラスタの前記重心までの距離に少なくとも基づいている、請求項1に記載の方法。
  9. 前記複数のクラスタのそれぞれの重心が、前記回路設計の前記レイアウト内に規定された1つの軸に沿った位置を規定し、そして前記空間的な位置の距離が、1つの軸に沿った1つの回路素子から1つのクラスタの重心までの距離に少なくとも基づいている、請求項8に記載の方法。
  10. 前記空間的な位置の距離が、1つのクラスタ内の各回路素子から前記1つのクラスタの重心までの距離の和に基づいている、請求項8に記載の方法。
  11. 前記交換を行うステップが、
    第1のクラスタ及び第2のクラスタを選択するステップと、
    前記第1のクラスタ及び前記第2のクラスタのそれぞれから一群の回路素子を選択するステップと、
    前記第1のクラスタの前記一群の回路素子を前記第2のクラスタに割り当て、前記第2のクラスタの前記一群の回路素子を前記第1クラスタに割り当てるステップとを含む、請求項1に記載の方法。
  12. 前記交換を行うステップが、
    第1のクラスタ、第2のクラスタ及び第3のクラスタを選択するステップと、
    前記第1クラスタ及び前記第3クラスタのそれぞれから一群の回路素子を選択するステップと、
    前記第3クラスタから一対の群の回路素子を選択するステップと、
    前記第1クラスタの前記一群の回路素子を前記第2クラスタに割り当てるステップと、
    前記第2クラスタの前記一群の回路素子を前記第2クラスタに割り当てるステップと、前記第2クラスタの前記一対の群のうちの一方の群の回路素子を前記第1クラスタに割り当てるステップと、
    前記第2クラスタの前記一対の群のうちの他方の群の回路素子を前記第3クラスタに割り当てるステップとを含む、請求項1に記載の方法。
  13. 予定の繰り返し回数の後に、前記反復的にヒューリスティクスに最適化するステップを終了する、請求項1に記載の方法。
  14. 成功した交換を生じなかった予定の回数の繰り返しの後、反復的にヒューリスティクスに最適化するステップを終了する、請求項1に記載の方法。
  15. プロセッサと、
    回路設計の複数の回路素子をサイズが均衡した複数のクラスタにグループ化し、そして 前記複数の回路素子の空間的な位置の距離をヒューリスティクスに最適化することにより、前記回路設計の前記複数の回路素をクラスタ化する、前記プロセッサにより実行されるプログラムを記憶する手段とを備え、
    前記空間的な位置の距離のヒューリスティクスな最適化は、前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を反復的に行い、 前記交換を行った後に、空間的な位置の距離を再計算し、そして再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にすることにより行われる装置。
  16. 前記複数の回路素子のそれぞれがラッチを含み、そして前記クラスタのそれぞれがスキャン・チェーンに関連づけられている、請求項15に記載の装置。
  17. 交換が行われるクラスタのそれぞれのサイズの均衡を維持しながら、交換されるべき回路素子を無作為に選択することにより前記交換を行うように前記プログラムが構成されている、請求項15に記載の装置。
  18. 前記回路設計の複数の前記回路素子をサイズが均衡した複数のクラスタに無作為にグループ化することにより前記複数の回路素子をグループ化するように前記プログラムが構成されている、請求項15に記載の装置。
  19. 前記回路設計のレイアウト内の各回路素子の位置に基づいて、前記複数のクラスタのサイズを均衡化するように前記複数の回路素子を前記複数のクラスタにグループ化することにより前記複数の回路素子をグループ化するように前記プログラムが構成されている、請求項15に記載の装置。
  20. 前記複数のクラスタのそれぞれに重心が設定されており、前記空間的な位置の距離が、前記回路素子から前記クラスタの重心までの距離に少なくとも基づいている、請求項15に記載の装置。
  21. 前記複数のクラスタのそれぞれの前記重心が、前記回路設計の前記レイアウト内に規定された1つの軸に沿った位置を規定し、そして前記空間的な位置の距離が、前記軸に沿った1つの回路素子から1つのクラスタの重心までの距離に少なくとも基づいている、請求項20に記載の装置。
  22. 第1のクラスタ及び第2のクラスタを選択し、前記第1のクラスタ及び前記第2のクラスタのそれぞれから一群の回路素子を選択し、前記第1のクラスタの前記一群の回路素子を前記第2のクラスタに割り当て、前記第2のクラスタの前記一群の回路素子を前記第1クラスタに割り当てることにより前記複数の回路素子の交換を行うように前記プログラムが構成されている、請求項15に記載の装置。
  23. 第1のクラスタ、第2のクラスタ及び第3のクラスタを選択し、前記第1クラスタ及び前記第3クラスタのそれぞれから一群の回路素子を選択し、前記第2クラスタから一対の群の回路素子を選択し、前記第1クラスタの前記一群の回路素子を前記第2クラスタに割り当て、前記第3クラスタの前記一群の回路素子を前記第2クラスタに割り当て、前記第2クラスタの前記一対の群のうちの一方の群の回路素子を前記第1クラスタに割り当て、前記第2クラスタの前記一対の群のうちの他方の群の回路素子を前記第3クラスタに割り当てることにより、前記複数の回路素子の交換を行うように前記プログラムが構成されている、請求項15に記載の装置。
  24. 成功した交換を生じなかった予定の回数の繰り返しの後、反復的にヒューリスティクスに最適化するステップを終了することを含む、請求項15に記載の装置。
  25. コンピュータに、回路設計の複数の回路素子をサイズが均衡した複数のクラスタにグループ化する手順及び前記複数の回路素子の空間的な位置の距離をヒューリスティクスに最適化する手順を実行させることにより、前記回路設計の前記複数の回路素をクラスタ化するためのプログラムを記憶したコンピュータ読み取り可能な記録媒体であって、
    前記空間的な位置の距離のヒューリスティクスな最適化は、前記複数のクラスタのうち選択されたクラスタ相互間での回路素子の交換を反復的に行い、前記交換を行った後に、空間的な位置の距離を再計算し、そして再計算された前記空間的な位置の距離に基づいて前記交換を選択的に無効にする、コンピュータ読み取り可能な記録媒体。
JP2008552768A 2006-02-07 2007-01-16 回路素子をクラスタ化するプログラム及び装置並びにラッチをスキャン・チェーンに割り当てるプログラム及び装置 Expired - Fee Related JP5004971B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/348,970 US7509611B2 (en) 2006-02-07 2006-02-07 Heuristic clustering of circuit elements in a circuit design
US11/348,970 2006-02-07
PCT/EP2007/050414 WO2007090715A1 (en) 2006-02-07 2007-01-16 Heuristic clustering of circuit elements in a circuit design

Publications (2)

Publication Number Publication Date
JP2009526283A true JP2009526283A (ja) 2009-07-16
JP5004971B2 JP5004971B2 (ja) 2012-08-22

Family

ID=37814278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552768A Expired - Fee Related JP5004971B2 (ja) 2006-02-07 2007-01-16 回路素子をクラスタ化するプログラム及び装置並びにラッチをスキャン・チェーンに割り当てるプログラム及び装置

Country Status (7)

Country Link
US (2) US7509611B2 (ja)
EP (1) EP1984856A1 (ja)
JP (1) JP5004971B2 (ja)
KR (1) KR101013309B1 (ja)
CN (1) CN101361072B (ja)
TW (1) TWI409653B (ja)
WO (1) WO2007090715A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509611B2 (en) * 2006-02-07 2009-03-24 International Business Machines Corporation Heuristic clustering of circuit elements in a circuit design
US8205182B1 (en) * 2007-08-22 2012-06-19 Cadence Design Systems, Inc. Automatic synthesis of clock distribution networks
US7996805B2 (en) * 2008-01-08 2011-08-09 National Semiconductor Corporation Method of stitching scan flipflops together to form a scan chain with a reduced wire length
US7987400B2 (en) * 2008-02-22 2011-07-26 International Business Machines Corporation Method for optimizing scan chains in an integrated circuit that has multiple levels of hierarchy
US20090228232A1 (en) * 2008-03-06 2009-09-10 Anderson Gary F Range-based evaluation
JP4987787B2 (ja) * 2008-04-10 2012-07-25 ルネサスエレクトロニクス株式会社 配置検証装置
US8225262B1 (en) * 2009-03-18 2012-07-17 Xilinx, Inc. Method of and system for placing clock circuits in an integrated circuit
US8042075B2 (en) * 2009-03-25 2011-10-18 International Business Machines Corporation Method, system and application for sequential cofactor-based analysis of netlists
US7821295B1 (en) 2009-03-27 2010-10-26 Altera Corporation Methods and systems for improving a maximum operating frequency of a PLD having a shift register within an embedded memory block
US8191028B1 (en) 2009-04-07 2012-05-29 Altera Corporation Methods and systems for improving a maximum operating frequency of an integrated circuit during a route phase
US8316339B2 (en) * 2010-01-28 2012-11-20 Synopsys, Inc. Zone-based leakage power optimization
US8898151B2 (en) * 2011-06-22 2014-11-25 Rogers Communications Inc. System and method for filtering documents
US8572536B2 (en) * 2011-09-27 2013-10-29 International Business Machines Corporation Spare latch distribution
US20140165022A1 (en) * 2012-07-18 2014-06-12 Kenneth S. Stevens Relative timing architecture
CN106610468B (zh) * 2015-10-21 2020-04-14 龙芯中科技术有限公司 扫描链、扫描链构建方法及装置
US10114918B2 (en) * 2016-01-27 2018-10-30 Arm Limited Physical placement control for an integrated circuit based on state bounds file
US10613142B2 (en) * 2017-02-22 2020-04-07 International Business Machines Corporation Non-destructive recirculation test support for integrated circuits
US10565338B2 (en) 2017-12-13 2020-02-18 International Business Machines Corporation Equivalency verification for hierarchical references
US10831965B1 (en) 2019-07-23 2020-11-10 International Business Machines Corporation Placement of vectorized latches in hierarchical integrated circuit development

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203342A (ja) * 1998-01-19 1999-07-30 Hitachi Ltd スキャンネット設計方法及びシステム
JP2001084287A (ja) * 1999-09-14 2001-03-30 Toshiba Corp ゲーテッドクロック回路、ゲーテッドクロック回路設計支援装置及び方法
US6609228B1 (en) * 2000-11-15 2003-08-19 International Business Machines Corporation Latch clustering for power optimization
JP2005043259A (ja) * 2003-07-23 2005-02-17 Matsushita Electric Ind Co Ltd スキャンパステスト回路及びその設計方法
JP2005223171A (ja) * 2004-02-06 2005-08-18 Matsushita Electric Ind Co Ltd 半導体集積回路のスキャンチェーン接続方法
JP2006107206A (ja) * 2004-10-06 2006-04-20 Matsushita Electric Ind Co Ltd 半導体集積回路設計方法
JP2006323638A (ja) * 2005-05-19 2006-11-30 Nec Electronics Corp 回路配置装置、回路配置方法およびそれを実行するプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553002A (en) 1990-04-06 1996-09-03 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface
US5878153A (en) * 1994-06-24 1999-03-02 Ford Global Technologies, Inc. Method for monitoring coating adhesion propensity based on surface morphology
US6442743B1 (en) * 1998-06-12 2002-08-27 Monterey Design Systems Placement method for integrated circuit design using topo-clustering
US7240303B1 (en) * 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US6351840B1 (en) * 1999-12-09 2002-02-26 Silicon Perspective Corporation Method for balancing a clock tree
US6817005B2 (en) * 2000-05-25 2004-11-09 Xilinx, Inc. Modular design method and system for programmable logic devices
CA2321346A1 (en) * 2000-09-28 2002-03-28 Stephen K. Sunter Method, system and program product for testing and/or diagnosing circuits using embedded test controller access data
US6857110B1 (en) 2001-01-30 2005-02-15 Stretch, Inc. Design methodology for merging programmable logic into a custom IC
US6530073B2 (en) 2001-04-30 2003-03-04 Lsi Logic Corporation RTL annotation tool for layout induced netlist changes
AU2003259919A1 (en) * 2002-08-21 2004-03-11 California Institute Of Technology Element placement method and apparatus
US7051310B2 (en) 2003-05-08 2006-05-23 Cadence Design Systems, Inc. Two-stage clock tree synthesis with buffer distribution balancing
US6951003B2 (en) 2003-05-12 2005-09-27 Synopsys, Inc Placing cells of an IC design using partition preconditioning
US7392494B2 (en) 2003-06-09 2008-06-24 Kuoching Lin Clustering circuit paths in electronic circuit design
US7162706B2 (en) 2004-03-05 2007-01-09 Picocraft Design Systems, Inc. Method for analyzing and validating clock integration properties in circuit systems
US20060010260A1 (en) * 2004-07-07 2006-01-12 Fung Hon C Direct memory access (DMA) controller and bus structure in a master/slave system
TWI287746B (en) * 2005-06-17 2007-10-01 Univ Chang Gung Projection-based model reductions for efficient interconnect modeling and simulations using the Arnoldi algorithm
US7398505B2 (en) * 2006-02-07 2008-07-08 International Business Machines Corporation Automatic back annotation of a functional definition of an integrated circuit design based upon physical layout
US7509611B2 (en) * 2006-02-07 2009-03-24 International Business Machines Corporation Heuristic clustering of circuit elements in a circuit design
US7430699B2 (en) * 2006-02-07 2008-09-30 International Business Machines Corporation Trading propensity-based clustering of circuit elements in a circuit design

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203342A (ja) * 1998-01-19 1999-07-30 Hitachi Ltd スキャンネット設計方法及びシステム
JP2001084287A (ja) * 1999-09-14 2001-03-30 Toshiba Corp ゲーテッドクロック回路、ゲーテッドクロック回路設計支援装置及び方法
US6609228B1 (en) * 2000-11-15 2003-08-19 International Business Machines Corporation Latch clustering for power optimization
JP2005043259A (ja) * 2003-07-23 2005-02-17 Matsushita Electric Ind Co Ltd スキャンパステスト回路及びその設計方法
JP2005223171A (ja) * 2004-02-06 2005-08-18 Matsushita Electric Ind Co Ltd 半導体集積回路のスキャンチェーン接続方法
JP2006107206A (ja) * 2004-10-06 2006-04-20 Matsushita Electric Ind Co Ltd 半導体集積回路設計方法
JP2006323638A (ja) * 2005-05-19 2006-11-30 Nec Electronics Corp 回路配置装置、回路配置方法およびそれを実行するプログラム

Also Published As

Publication number Publication date
WO2007090715A1 (en) 2007-08-16
CN101361072B (zh) 2010-12-15
US20090178014A1 (en) 2009-07-09
US8196074B2 (en) 2012-06-05
TW200817953A (en) 2008-04-16
KR101013309B1 (ko) 2011-02-09
JP5004971B2 (ja) 2012-08-22
KR20080100182A (ko) 2008-11-14
US7509611B2 (en) 2009-03-24
EP1984856A1 (en) 2008-10-29
TWI409653B (zh) 2013-09-21
CN101361072A (zh) 2009-02-04
US20070186199A1 (en) 2007-08-09

Similar Documents

Publication Publication Date Title
JP5004971B2 (ja) 回路素子をクラスタ化するプログラム及び装置並びにラッチをスキャン・チェーンに割り当てるプログラム及び装置
JP5706689B2 (ja) アーキテクチャー上の物理的合成
JP5608079B2 (ja) アーキテクチャー上の物理的合成
US8984465B1 (en) Methods, systems, and articles of manufacture for automatically assigning track patterns to regions for physical implementation of an electronic design
US9047434B2 (en) Clustering for processing of circuit design data
US7398505B2 (en) Automatic back annotation of a functional definition of an integrated circuit design based upon physical layout
US7430699B2 (en) Trading propensity-based clustering of circuit elements in a circuit design
US8032855B1 (en) Method and apparatus for performing incremental placement on a structured application specific integrated circuit
US8694940B2 (en) System and method for integrated circuit design and implementation using mixed cell libraries
US10346573B1 (en) Method and system for performing incremental post layout simulation with layout edits
US7275223B2 (en) Facilitating high-level validation of integrated circuits in parallel with development of blocks in a hierarchical design approach
US10936772B1 (en) Methods for incremental circuit physical synthesis
US8484589B2 (en) Logical repartitioning in design compiler
Mao et al. Library-based placement and routing in fpgas with support of partial reconfiguration
Sayal EDA design for Microscale Modular Assembled ASIC (M2A2) circuits
Tsai et al. Routability optimization for crossbar-switch structured ASIC design
JP2009009226A (ja) 集積回路装置の設計方法、集積回路装置、及び集積回路の設計支援システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111011

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120522

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees