JP3737104B2 - プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法 - Google Patents
プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法 Download PDFInfo
- Publication number
- JP3737104B2 JP3737104B2 JP50067794A JP50067794A JP3737104B2 JP 3737104 B2 JP3737104 B2 JP 3737104B2 JP 50067794 A JP50067794 A JP 50067794A JP 50067794 A JP50067794 A JP 50067794A JP 3737104 B2 JP3737104 B2 JP 3737104B2
- Authority
- JP
- Japan
- Prior art keywords
- delay
- connection
- logic
- connections
- limit value
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- Architecture (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
発明の分野
この発明は回路設計をその設計を実動化する物理的な集積回路構造に変換することに関する。より詳しくは、この発明はユーザの特定するタイミング要求を回路配線が満たすように、回路設計を上記物理的構造上に配置することに関する。
背 景
プログラマブルロジックデバイスは多様な論理設計の任意のものを実動化するのに利用できる。ユーザが論理回路を設計し、ロジックデバイスのプログラミングをコンピュータに指示するか、または所望の論理設計を実動化するためのひと組のマスクを設計するのにソフトウェアを用いる。ロジックデバイス内の部分間で授受される信号のタイミングは、物理的構造におけるトランジスタ群へのユーザ回路素子の配置およびそれに伴う金属配線の配列によって部分的に決まる。一般的に配線が長くなると遅延が長くなり、実際のタイミングは静電容量、抵抗、および信号が通過すべき論理素子の数に左右される。トランジスタがより速くなったので、信号のデバイス通過に伴う遅延の主な部分は配線に起因する。したがって、配線セグメントによる遅延を最小にするようにそれら配線セグメントを注意深く選ぶことが必要になってきた。
この発明の方法を用いてプログラムできるロジックデバイスにはマスクプログラマブルなものもフィールドプログラマブルなものも両方とも含まれる。マスクプログラマブルデバイスはデバイスの製造中に工場でプログラムされ、フィールドプログラマブルデバイスはユーザが完成品を購入したのちにプログラムする。マスクプログラマブルデバイスは、集積回路基板内に形成されたトランジスタ群のアレーを備えるゲートアレー構造と、その構造の上の層に形成した通常は一つの制御ゲート層とを含む。これら標準の層の上に通常は二つまたは三つの金属化層により個別層を形成し、それによってユーザ所望の回路を形成するようにそれらトランジスタを相互結合する。
フィールドプログラマブルデバイスにはプログラマブルロジックアレー(PLA)とフィールドプログラマブルゲートアレー(FPGA)デバイスとが含まれる。PLAデバイスは、ORゲートのアレーに入力を供給し論理積の和となる論理を実動化するANDゲートのアレーを一般に含んでいる。FPGAデバイスはプログラム可能な相互配線線路で互いに接続された複数個の論理ブロックまたはモジュールを含む。これらプログラム可能なブロックは多様な機能を実動化するようにプログラムでき、またプログラム可能な相互配線はユーザの設計を実動化する全体構成を形成する多様な方法で相互接続を形成する。次に述べる詳細な説明ではFPGAを用いるので、ここでFPGA構造をより詳細に述べておく。
FPGA構造
図1は代表的な島型フィールドプログラマブルゲートアレー(FPGA)構造を表わす。複数の回路配置融通性ある論理ブロック(CLB)がユーザの選択した機能を実動化するが、ユーザ所望の全体としての機能を発揮するには相互接続しなければならない。図1のCLBは東西南北の各方向に延びる接続導線をそれぞれもつものとして示してある。実際の回路には通常図示のものよりも多くの導線があるが、この図はFPGA構造を表わしている。これらCLBの相互接続用にこのチップには配線セグメントが備えられている。これらCLB導線は例えば導通トランジスタまたはアンチヒューズにより配線セグメントにプログラム可能な形で接続できる。マスクプログラムを施した代替的構造では、これら導線および配線セグメントは金属配線層間にバイアホールを設けることによって相互接続できる。
また、FPGAには配線セグメントをノードで選択的に相互接続するスイッチボックスSBXが設けてある。これらスイッチボックスはノードに至る配線セグメント間の種々の内部相互接続を提供できる。二つの例を次に述べる。
SBXの構成は図2Aのように示されよう。すなわち、図示のとおり、西側から延びる配線W1−W6の各々は、北、東および南側に各々からの配線N1−N6、E1−E6、およびS1−S6の各一つに接続できる。接続はダイヤモンドコネクタD1乃至D6経由で形成される。トランジスタによる構成の場合は、このダイヤモンドコネクタは図2Bに示すとおり配線N、E、SおよびWを六つのトランジスタで選択的に接続する形になる。このような構成によって、いずれかのCLB導線とそれ以外のいずれかのCLB導線との間に接続を形成することが可能である。ただし、図2AのセグメントW1上の信号のセグメントN2への接続を可能にするなどの「レーン変更」は不可能である。
より融通性のあるスイッチング構成を図3に示す。図3においては、簡潔化のために西配線セグメントからの相互接続だけを示してある。西配線W1を、北配線N1およびN2、東配線E1およびE2、南配線S1およびS2のいずれかと接続できることがわかる。西配線W3を北配線N1およびN2、東配線E1およびE2、南配線S1およびS2にも接続できる。西配線W2は北配線N2およびN3、東配線E1、E2およびE3、南配線S2およびS3に接続できる。他の三つの方向の各々についても同じ選択が通常提供されるが簡潔化のために図示してない。
図1には配線セグメントの三つの型が示してある。配線セグメントSLは二つのスイッチボックスSBXの間に延びる短セグメントである。二倍長配線セグメントDLが短セグメント二つ分の長さにわたって延びている。配線セグメントLLは長セグメントでありFPGAデバイスの全長にわたって延びているか、場合によってはその半分の長さにわたって延びている。これら長さの異なるセグメントは互いに異なる目的を意図したものである。すなわち、長セグメントはクロック信号などの広ファンアウト信号に有用であり、二倍長セグメントおよび単一長セグメントは局部経路付与に最適である。一つのCLBからもう一つのCLBへの経路を辿る信号の受ける遅延は使われた配線セグメントの種類と信号の通過したノードとの数とに左右される。
定 義
論理設計では、一つの信号源論理ブロックまたはレジスタから一つの供給先論理ブロックまたはレジスタへの導体経路を接続という。一つの信号源で発生した信号をいくつかの供給先に送る必要があることが多い。一つの信号源からそれら供給先全部に至る経路の集まりが網である。論理設計を実動化するハードウェアでは、その接続または網の一部を構成する配線の単一片をセグメントと呼ぶ。一つのセグメントはノードでもう一つのセグメントに相互接続できる。通常、一つの配線セグメントはノードでいくつかの他の配線セグメントのいずれかと相互接続できる。経路とは、一つのパッケージピンまたはクロック制御下のレジスタからもう一つのパッケージピンまたはクロック制御下のレジスタに延びる接続または結合用論理ブロックの組をいう。
タイミング分析に相互接続配線を含める動機
セグメントどうしのノードにおける接続をトランジスタの導通化によって行う場合は、その接続は配線セグメントおよびトランジスタの両方を含む。トランジスタは導通状態でも有限の抵抗値を有するので、その接続は信号経路に有限のRC遅延を抱え込ませる。また、素子の微細化に伴い、配線による遅延の割合が増大する。接続遅延がトランジスタ接続デバイスの全遅延の主要部になった。布線ずみのASICデバイスについても、素子の微細化が進んで信号の全遅延に対して配線が大きく影響するようになり始めた。過去においては、例えば多数ゲートのASICデバイスを形成する際には、配置の最適化がタイミングにもっとも大きい影響を及ぼすのでその最適化に研究努力の大部分が傾注された。FPGAなどのデバイスでは、多様な信号経路形成資源が多様な遅延特性を備える。したがって、素子配置と同様に経路もロジックデバイスのタイミングに多大の影響を及ぼし得る。
集積回路ロジックデバイス上に設計回路をレイアウトすること
ユーザの論理設計をロジックデバイスにレイアウトするためのソフトウェアはその設計を実動化するようにハードウェアをプログラムするひと組のコマンドにその設計を変換する一連のステップを行う。それらステップには通常次のステップが含まれる。
1)設計値の入力:ユーザ回路の図形表示の概略的捕捉、または実現すべき機能とそれら機能間のつながりとを記述したハードウェア記述言語の読取り。設計値の入力には状態とそれら状態間で実動化すべき遷移とのリストの読取りが含まれることもある。
2)機能の検証とロジック合成:機能の検証はユーザの設計が論理的な意味を成しているかどうかを見るための点検を含む(例えば出力を共通接続にすることを避ける)。ロジック合成は、設計値の入力時に入力された情報を、表現の単純化、式の中の項数の削減、および設計値の実動化またはユーザ設計の最適化に必要な面積の削減のために書き換えることを伴うロジック最適化を含む。
3)マッピング:マッピングはユーザの論理ゲートをユニット、すなわち各々を論理デバイスの対応ユニット(例えばジリンクス社FPGA関数発生器)で実動化できるユニットにグループ分けすることを含む。
4)初期配置:論理設計のユニットは各々が論理デバイスの特定のユニット(例えばジリンクス社FPGA論理ブロック)に割り当てられた複数の部分に分割される。このステップには、ベル・システム・テクニカル・ジャーナル1970年2月号第291−307頁所載のビー.ダブリュー.カーニハン(B.W.Kernighan)およびエス.リン(S.Lin)著の論文「図形分割のための効率的な発見的手法」に説明されているような最小値カットアルゴリズム、またはアイ・イー・イー・イー・トランスアクションズ・オン・サーキッツ・アンド・システムズ 第CAS−26巻第6号1979年6月3日付所載のニール アール.クイン ジュニア(Neil R. Quinn, Jr.)およびメルビン エイ.ブロイアー(Mlvin A. Breuer)著の論文「印刷配線基板のための力の向きの部品配置方法」に説明されているようなばね弛緩アルゴリズムを用いることができる。
5)配置改善:初期配置は接続全体に必要な配線の全長を最小化するなど配置の品質のある尺度を改善するように調整する。
6)経路:相互接続線は、ユニットの入力線および出力線の各々をユーザの設計における接続、すなわちユーザのロジックの互いに分割された部分をつなぐ接続に対応させて接続するように選択する。一般には、信号源論理ブロックから供給先論理ブロックへの信号の接続ルートは、それら信号源および供給先の間の連続的接続を形成するように一度に1ステップずつセグメントを追加して選択する。
7)評価および実行可能な対話的改善:全部のロジックをデバイスに配置してそれらロジックを相互接続するすべての線を形成するソフトウェアの性能を評価し、ユーザのロジックの実動化におけるデバイス全体の速さも併せて評価する。通常、ユーザは、一つのチップ全体のロジックの処理を最小の時間内(または特定の時間内)に行うこと、または最大クロック速度でロジックデバイスを動作させることを求める。いずれの場合も性能はもっとも遅い信号経路の始点から終点まで信号を伝達するのに要する時間で評価する。信号経路は通常一つまたはそれ以上の論理ブロックを通るのでいくつかの接続点を含み得る。
8)デバイスプログラミング:最後に、上述のステップが首尾よく進んだ場合は、形成すべき接続および形成すべきでない接続に対応するビットストリームで、上述のステップで決定されたユーザの設計を実動化するようにデバイスを回路配置する。このビットストリームは、デバイスがSRAM FPGAの場合はそのデバイスにロードされ、デバイスがアンチヒューズFPGAの場合はプログラム対象のアンチヒューズへのアドレスに用いられ、デバイスがマスクプログラマブルASICの場合はマスクのパターン形成に用いられ、あるいはそのデバイスが所期の機能を発揮するようにデバイス内に特定の接続を形成するのに適宜用いられる。
結合形成のためのサーチアルゴリズム
信号経路形成の問題は集積回路FPGA内の配線の経路形成だけでなく、多数の応用分野で生じており、これまで広範囲にわたり検討されてきた。信号供給源から供給先に至る利用可能な接続の発見のために多数のサーチアルゴリズムが開発されてきた。それらの中には、深さ先行サーチ、すなわち信号経路へのセグメントの付加を何らかの障害により前進が止まるまで行い供給先への到達まで代替的経路を試みるサーチが含まれる。もう一つの例としては、幅先行サーチがあり、そのサーチでは信号供給源から延びるあらゆる実現可能なセグメントをまず試み、次に供給先への到達まであらゆる実現可能な第2のセグメントを試みる。より複雑なアルゴリズムでは供給先についての方向情報を用い、もっとも見込みのある方向をまずサーチする。これらのアルゴリズムのいずれによっても、信号供給先への経路は、それが存在すれば結局見出される。複数の点の間の経路を選択するのに有用ないくつかの方法は、カリフォルニア州パロアルト所在のティオガ(Tioga)出版社から1980年に発行されたニルス ジェイ.ニルスソン(Nils J. Nilsson)の著者「人工知能の原理」およびカルフォルニア州ロスアルトス所在のウィリアム カウフマン社(William Kaufmann, Inc.)・カリフォルニア州スタンフォード所在のヒューリステック プレス社(HeurisTech Press)から1981年に発行されたアブロン バー(Avron Barr)およびエイ.フィーゲンバウム(A. Feigenbaum)の編著書「人工知能ハンドブック」にも説明されている。
接続を見出す方法は信号供給源から供給先に経路付与すべき信号の各々について通常繰り返される。経路付与があとになるほど空きの経路資源が少なくなり、接続が長く非効率的になり得る。接続付与の総体的結果は、一般に、どの接続に最初に経路付与したかということと、各接続の経路付与に用いたアルゴリズムとに左右される。
レジスタ間の信号授受
通常の論理設計はクロック応動レジスタ(フリップフロップ)とクロック非応動の組合せおよび算術演算機能との両方を用いる。デバイス全体のタイミング(どれほど速くそのデバイスをクロック駆動できるか)によって、信号が一つのクロック応動レジスタの出力から次段のクロック応動レジスタにどれほど速く伝搬され得るかが決まってくる。この信号伝搬速度は、一つのレジスタの出力ともう一つのレジスタの入力との間で処理されるべきいずれかの論理がどれほど迅速にその出力を生ずるかと、信号が接続すなわち一つのレジスタからもう一つのレジスタへの経路に沿って配置した組合せ論理ブロックを接続する配線セグメントおよびノードを通じてどれほど迅速に経路付与され得るかとによって定まる。
異なる信号転送には、設計がレジスタの制御に多重クロックを用いている場合は、異なるタイミング要求があり得る。
デバイス性能の改善−臨界経路
使用された経路の各々の時間遅延は経路が選択され次第計算できる。ユーザは一つのクロック応動レジスタと次のレジスタとの間の信号伝搬の最大遅延を最小に抑えることに関心がある。すなわちこの最大遅延によって、ユーザの機能の実動化においてデバイスに使用可能な最大クロック速度が定まるからである。したがって、通常ユーザはレジスタ間経路タイミングを問題にする。性能上の要求は、一つのレジスタから何らかの組合せロジックを経て次のレジスタに結果を転送するのに要する時間で特定することが多い。通常一つの経路が最低速度の経路になり、臨界経路と呼ばれる。この臨界経路は全体のクロック速度を制限し、したがってデバイスの動作速度を制限する。デバイス全体の速度を改善するにはこの臨界経路による遅延を減らさなければならない。したがって、この臨界経路の遅延の低減に努力が傾注されてきた。この問題について広範囲にわたる努力がなされてきた。
全体配置の分析対各素子についての決定
上述のステップの各々はその設計の各部分についての多様な細部決定を伴う。特定のステップの各々は特定のアルゴリズムで実動化される。例えば、ロジックデバイス内のどの論理ブロックでユーザ設計(分割および配置)のどの論理ゲートを実動化するかの決定をする必要があり、また、物理的デバイス内のどの配線で信号の各々を一つのブロックから次のブロックに伝達するかを決定する必要がある。これら個々の決定は、全体のデバイス性能を考慮に入れてないアルゴリズムで逐次的に通常行われる。ある段階でそれら決定の結果を総合的見地から評価しなければならない。この発明はこの総合的見地に関し、個々の上記ステップが高い総合的評価をもたらすことを確実にすることに関する。
配置および経路付与ツール
初期配置および経路付与分析は性能の総合的評価の結果を接続への重みの調節によって用いることを試み、経路付与の優先順位づけおよび品質の尺度の計算のためにそれら重みを用いた。プロジーディングズ・オブ・トウェンティファースト・デザイン・オートメーション・コンファレンス(Proc. 21st Design Automation Conference)第278−281頁(1984年)所載のエイ.イー.ダンロップ(A.E.Dunlop)、ヴィ.ディー.アグラワル(V.D.Agrawal)、およびディー.エヌ.ドイチュ(D.N.Deutsch)著の論文「臨界経路重みづけを用いたチップレイアウト最適化」、およびプロシーディングス・オブ・トウェンティセカンド・デザイン・オートメーション・コンファレンス(Proc. 22nd Design Automation Conference)第124−130頁(1985年)所載のエム.バーンスタイン(M.Bernstein)およびエム.エヌ.ユーセフ(M. N. Youssef)著の論文「タイミングの影響によるレイアウト設計」記載の手法は、接続についての遅延概算値を使用してタイミング分析を行い、分割時には臨界経路上の信号により大きい重みをつけ、経路付与時にはより高い優先順位を与えた。VLSIシステムズ デザイン(VLSI Systems Design)1986年5月号第63−73頁所載のエス.テイグ(S.Teig)、アール.エル.スミス(R.L.Smith)およびジェイ.シートン(J. Seaton)著の論文「セル型集積回路のタイミング駆動によるレイアウト」はタイミング分析と配置・経路ステップとの相互作用の重要性を強調した。しかし、臨界経路に重みを割り当てる方法は記載されていない。上記デイグほかの論文はタイミングと位置づけおよび経路付与とをいかに関連づけるかについて一般的に述べているだけである。プロシーディングズ・オブ・アイシーシーエイディー’89(Proc ICCAD '89)、第94−97頁(1989年)所載のエム.マレク−サドフスカ(M. Marek-Sadowska)およびエス.ピー.リン(S. P. Lin)著の論文「セル型ICのタイミング駆動によるレイアウト」は初期配置のための反復的最小値カットアルゴリズム、すなわち非臨界接続にはその弛緩と反比例した重みを与えるアルゴリズムを記載している。弛緩とは転送の完了までの許容時間とその転送に費された時間との差である。臨界経路(弛緩が小さいまたは負である経路)には非臨界経路よりもわずかに大きい重みを与えてある。プロシーディングス・オブ,ユーローピアン・デザイン・オートメーション・コンファレンス(Proc. European Design Automation Conference)第317−321頁(1980年)所載のジェイ.ガーバーズ(J.Gerbers)、ビー.コーテ(B. Korte)、エッチ.ジェイ.プロメル(H.J.Promel)、イー.シャイエツケ(E. Scheietzke)、およびエイ.シュテーガー(A. Steger)著の論文「経路付与情報およびタイミング情報に基づくVLSI配置」では、再重みづけ手法、すなわち経路付与接続の重みをその接続が臨界経路上にあるとわかった段階で1だけ単純に増加させる手法を用いて、反復的分割および近似的経路付与(チップの経路付与を割り当てるべき概括的領域の選択であって、用いるべき特定の線の選択ではない)により性能の改善を得ている。この変動していく重みが分割形成の損失と経路付与順序に影響を及ぼす。
これらの重み調整方法において生ずる問題は解が発振し得ることである。臨界経路の改善に伴って他の経路が臨界経路になり、2回目の反復でも1回目の反復以上のよい結果は得られないかもしれない。すなわち、重み調整方法は一般に単調によい結果に進むのではない。
レイアウトの小変更後にタイミング分析を繰り返す動的方法
もう一つの手法は、レイアウト(レイアウトとはユーザの概略図の中のロジック、レジスタ、接続線のすべてを物理的デバイスの対応素子に割り当てる総体的機能をいい、マッピング、配置、および経路付与を含む)をデバイス性能(経路遅延の原因となる)の総体的分析とレイアウト過程(個々の素子および線の位置の選択)との間の頻繁な対話によって行うやり方である。プロシーディングス・オブ・トウェンティセブンス・デザイン・オートメーション・コンファレンス(Proc. 27th Design Automation Conference)第84−89頁(1990年)所載のダブリュウ.イー.ドナス(W.E.Donath)、アール.ジェイ.ノーマン(R.J.Norman)、ビー.ケイ.アグラワル(B.K.Agrawal)、エス.イー.ベルロ(S.E.Bello)、(エス.ワイ.ハン(SY.Han)、ジェイ.エム.クルツバーグ(J.M.Kurtzberg)、ピー.ロウィ(P.Lowy)、およびアール.アイ.マクミラン(R.I.McMillan)著の学会論文「全経路遅延を用いたタイミングによる配置」においては、配置進行中の一つまたはいくつかの動きのあとタイミング分析を更新している。配置進行中の経路制約を動的に追跡するために反復分割の各段階でリニアプログラミングを用いており、これはプロシーディングス・オブ・トウェンティシックスス・デザイン・オートメーション・コンファレンス(Proc. 26th Design Automation Conference)第370−375頁(1989年)所載のエム.エイ.ビー.ジャクソン(M.A.B.Jackson)およびイー.エス.クー(E.S.Kuh)著の論文「セル型集積回路の性能駆動回路配置」に記載されるとおりである。これと関連した論文、すなわちプロシーディングス・オブ・アイシーシーエイディ’90(Proc. ICCAD '90)第328−331頁(1990年)所載のエム.エイ.ビー.ジャクソン(M.A.B. Jackson)、エイ.スリニヴァサン(A. Srinivasan)、およびイー.エス.クー(E.S.Kuh)著の論文「性能駆動回路配置用の高速アルゴリズム」およびプロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)、第636−639頁(1991年)所載のエイ.スリニヴァサン(A. Srinivasan)著の論文「小型セル集積回路の性能駆動初期回路配置用のアルゴリズム」は2次のプログラミングを用い、遅延要求または制約の数、すなわち高性能回路配置をより効率的に達成するための論理ブロックの配置の選択において考慮すべきそれら要求および制約の数を削減した。
プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)第620−625頁(1981年)所載のアール.エス.ツェイ(R.S.Tsay)およびジェイ.ケール(J.Koehl)著の論文「回路配置における性能最適化のための分析的回路網重みづけ手法」は接続再重みづけ、すなわちタイミング分析からの入力として個々接続遅延へのひと組の正確な限界値を要する接続再重みづけのための式を提供している。タイミング分析の結果を回路配置および経路付与への指針に変換することは、これまで提案されてきた多数の発見法が示すとおり、重要である。
弛緩
論理設計の一つの接続におけるタイミング要求が満たされずその論理設計のもう一つの接続におけるタイミング要求が余裕時間をもって満たされた場合は、回路素子の位置づけおよび経路の調整を、その余裕ある接続のタイミングを上記要求不充足の接続の高速化のために遅くして結果的にすべての接続および経路が要求を満たすように、行うことが可能であることが多い。この余裕時間を弛緩と呼ぶ。一つの経路の弛緩はR(p)−A(p)と定義される。ここで、R(p)は経路pに沿う伝搬時間の要求値であり、A(p)はその経路pに沿う実際の合計の伝搬時間である。正の弛緩はその接続が余裕時間をもって形成されたことを示す。負の弛緩は時間要求値が満たされなかったことを示す。零に近い(正の)弛緩は時間要求値が辛うじて満たされたことを示す。正の弛緩をもつように経路付与された経路は負の弛緩をもつそれ以外の経路を時間要求充足のために経路変更することがそれによって可能になる場合は、より小さい弛緩値の経路に変更できる。
経路接続のための弛緩計算
通常の回路にはファンイン(回路素子に複数信号が入る)とファンアウト(出力信号が複数の素子に加えられる)との両方がある。アイビーエム・ジャーナル・オブ・リサーチ・アンド ディベロップメント(IBM J. Res. Develop)第26巻第1号第100−108頁(1982年)所載のアール.ビー.ヒッチコック(R.B.Hitchcock)、ジー.エル.スミス(G. L. Smith)およびディー.ディー.チェン(D.D.Cheng)著の論文「コンピュータハードウェアのタイミング分析」は個々の接続の弛緩の計算のしかたを記載している。一つの接続の弛緩、すなわち弛緩(c)は
(1) 弛緩(c)=R(c)−A(c)
で算出される。ここで
R(c)は接続cの出力端における信号のもっとも早い到達時間要求値、
A(c)は接続cの出力端における信号のもっとも遅い到達時間実測値。
この弛緩(c)の計算のために二つのリニア時間計算を行う。図5は、ファンインおよびファンアウトの両方を含み個々の接続を既知の接続遅延および総体的経路要求からいかに決定するかを示す事例を図解している。総体的要求はレジスタR901、R902およびR903への信号印加後30ナノ秒以内に三つの供給先R904、R905、R906に到達することである。この要求は供給先R904、R905およびR906内の数字「30」で示してある。接続遅延は各接続C901乃至C913上の楕円内に示してある。これら接続遅延の数字は接続のセグメントにおける導線の長さに起因する遅延を表わしており、ブロックまたはレジスタ内部における信号の伝搬遅延と信号がレジスタに入力される際の信号スイッチング時間についてのセットアップ遅延とを含む。
上記到達時間実測値A(c)の計算は到達時間既知の点から順方向に(または基準点から順方向)に進む。図6において、到着時間実測値はブロックへの入力に示してある。R901、R902およびR903における到達時間は0ナノ秒として示してある。接続における遅延がこれら時間に加算され後段のブロックへの入力における到着時間が得られる。単純化のために、ブロック内の遅延はそのブロックの出力側接続の遅延に算入してある。一つのブロックにいくつかの信号を印加する場合は、もっとも遅い到達時間を用いなければならない。すなわち、そのブロックからの出力信号は最後の入力信号の到着まで有効信号にならないからである。例えば、接続C902、C903およびC904のそれぞれの接続遅延3、4および2ナノ秒はブロックB902への信号到着時点をそれぞれ3、4および2とする。これらのうちもっとも遅い4ナノ秒の時点が、接続C908への出力端子に出力信号が生じて入力信号をブロックB904に8ナノ秒後に到達させる時点となる。このようにして遅延は回路を通じて順方向に伝搬される。
図7に示すとおり、要求されている到達時間R(c)は信号の到達すべきレジスタから逆方向に伝搬される。接続C909における7ナノ秒の接続遅延は、信号が供給先R904に30ナノ秒までに到達するには23ナノ秒までにR901から出力されなければならないことを意味する。供給先R905要求および接続C910から派生するもう1つの要求は、信号が24ナノ秒までにR901から出て30ナノ秒までに供給先R905に到達しなければならないことである。しかし、供給先R904はより早い要求到達時間を課している。一方、R901には、R905を遅延3ナノ秒の接続C912、遅延4ナノ秒のC908および遅延3ナノ秒のC902との組合せにより20ナノ秒のさらに早い到達時間要求が課される。したがって、30ナノ秒までに信号がR904、R905およびR906に到達するという要求を満たすためのR901からの出力時点は20ナノ秒までである。到達時間要求値R(c)の計算はその要求の特定された点から接続を通って逆向きに伝搬する。
いずれの接続においても、その接続への到達時間のもっとも遅い実測値をその接続へのもっとも早い到着時間要求値から減算することによって弛緩を算出することが可能である。図8は接続の各々についての弛緩S、すなわち到達時間実測値をその接続に順方向に伝搬し到達時間要求値をその接続に逆方向に伝搬して決定した弛緩Sを示す。
零弛緩アルゴリズム
プロシーディングス・オブ・アイシーシーエイディ’87(Proc. ICCAD '87)第88−91頁(1987年)所載のピー.エス.ハウグ(P.S.Hauge)、アール.ネア(R.Nair)、イー.ジェイ.ヨッファ(E.J.Yoffa)著の論文「予測可能な性能のための回路配置」は零弛緩アルゴリズム(ZSA)を導入した。このアルゴリズムは、合計がユーザの要求値以下の接続遅延の初期組合せを設定し、これら初期接続遅延に基づき弛緩を算出することによって始まる。これら初期遅延は接続遅延限界値、すなわち利用可能な弛緩を使い切ってその限界値に等しい接続遅延を有するいずれかの経路がちょうどユーザの要求に合うようになる値に置換する。これら接続遅延限界値は次に配置・経路付与ツールによって回路素子および接続のための受入れ可能な位置および経路の選択に使われる。これら限界値によって、上記配置・経路付与ツールは上記位置および経路の選択をより厳しい要求で可能になるよりは容易に方向づけされるが、各接続がその接続遅延限界値に達する場合は全体としてタイミング要求が満たされることを保証する。零弛緩アルゴリズムツールは、一つの経路pの弛緩をその経路pにある個々の接続に分散させることによって限界値を決定するのに経路弛緩情報を用いる。ハウグほか(Haug et al)によると、弛緩は経路沿いの接続に一様に分散させる。代わりに、プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)第626−631頁(1991年)所載のダブリュウ.ケイ.ルーク(W.K.Luk)著の論文「タイミング駆動レイアウトのための高速物理的制約発生器」に記載されるとおり、たとえば弛緩はファンアウトあたりの静電容量またはファンアウトあたりの静電容量変化などの物理的尺度に比例して分散させる。
これら遅延限界値はそれを全面的に採り入れればユーザの要求が満たされる旨の示唆である。他の限界値が余地を残して満たされていればいくつかの示唆された遅延限界値が満杯になっていない場合でもユーザの要求は満たされよう。
プロシーディングズ・オブ・アイシーシーエイディー’90(Proc ICCAD '90)第24−27頁(1990年)所載のエッチ.ユーセフ(H.Youssef)およびイー・シュラゴヴィッツ(E.Shragowitz)著の論文「正しい性能のためのタイミング制約」においては、経路の弛緩は次式に比例してその接続に分散されている、すなわち
(2) 重み(c)=Lf(c)*AcL(c)
ここで
LF(c)は接続cの供給源ピン(論理ブロック出力)上の単位負荷(ファンアウト)あたりの遅延、
AcL(c)は負荷を接続cに接続することにより生ずる静電容量である。このように、ユーセフおよびシュラゴヴィッツは弛緩を経路の各部にその経路のその部分で生じそうな遅延に従って分散させることを試みている。
一つの経路の弛緩をその経路内の接続に分散させる対話式の手順が上述の論文に記載されている。全弛緩のうち接続cに分配されるべき部分を表わすf(c)は
(3) f(c)=重み(c)/最大[重み(p)]
ここで
重み(c)は上述の式(2)から定まる接続cの重みであり、
重み(p)は経路pの重みであり経路p沿いの全ての接続重みの合計であり、
最大[重み(p)]は接続cを含むそれら経路の最大重み(p)である。
各反復において、接続の許容可能な遅延U(c)はf(c)*弛緩(c)だけ増加する。
したがって、
(4) U(c)new=U(c)old+(f(c)*弛緩(c))
図9は古い遅延U(c)oldへのf(c)*弛緩(c)の値の加算に基づく新しい遅延限界値U(c)newの計算を示す。部分f(c)の式は一つの経路の弛緩が負になるほどに大きい値の弛緩を分散させることはない。
従来の方法は接続遅延のどの値が現実的であるかについての情報を利用していない。例えば、初期遅延が(ユーセフおよびシュラゴヴィッツの示唆するとおり)零であると仮定すれば、いくつかの示唆された遅延限界値U(c)は小さすぎて実現できない。一方、初期遅延限界値が(上記ハウグほかの示唆するとおり)「物理的に妥当」であると仮定すれば、示唆された遅延限界値は不必要に大きいであろう。いずれにしても遅延限界示唆値はそれら限界値を用いるレイアウトツールのための最良の指標を提供するものではない。
必要なものは接続遅延についての示唆された上限値の最適化した組合せである。
発明の概要
部分的にでき上がったレイアウトがあれば、そのレイアウトの完成版で各遅延限界の示唆値U(c)が得られるはずである。したがって、限界値には達成可能性の高い値を選択しなければならない。この発明は下側境界遅延に関する情報に基づく遅延限界値を示唆し、その示唆した遅延限界値における反復的改良をより早い段階のレイアウトにおいて達成した遅延の検査によって達成する。
この発明はロジックデバイス上へのユーザ論理設計のレイアウト、すなわちレイアウトツール用の指針として使用できる遅延限界値を経路の各接続につき示唆することによって特定のタイミング制約に合致したレイアウトを達成する。この発明によると、遅延限界示唆値をレイアウトツール(分割、配置、および経路付与アルゴリズム)用に算出中に遅延限界の初期値が下側の境界遅延、すなわち接続用に最高速の経路を用いて達成可能な境界遅延に設定される。遅延限界値算出用の初期値を下側境界値に設定することによって、達成可能な速さを上まわる速さの遅延限界値が示唆されないことを確実にする。
総体的達成可能性の評価のためにこの発明は既に試みたレイアウトで達成ずみの遅延についての情報を用いる。この発明によると、レイアウトずみの設計品の性能を向上させる際に、下側境界遅延限界値と、反復的タイミング改善用に遅延限界の示唆値を算出した際に達成ずみの遅延値との両方を用いる。好適な実施例においては、遅延の示唆値は達成ずみの遅延と下側境界遅延との間の差の一部であって、その一部f(c)は次式から算出される。すなわち、
f(c)=重み(c)/最大[重み(p)]
ここで、
重み(c)=D(c)-L(c)
D(c)=接続cについての遅延の推定値または達成値
L(c)=接続cについて達成可能な下側境界遅延
重み(p)=経路p上の全接続cについての■重み(c)
最大[重み(p)]=接続cを用いた最低速の経路上の重み(p)
このように遅延限界示唆値は達成ずみの遅延と達成可能な低い境界遅延との差に比例して調整する。数値改善の期間中に負の弛緩を有する接続に対する制限は下がるように、また正の弛緩を有する接続に対する制限は上がるようにそれぞれ調整する。このように、反復的数値改善のためにレイアウトツールに示唆された限界値は、個々の接続へのより厳しい限界値の充足の困難度によって接続遅延を割り当てることによって厳しい経路制約の充足を試みる。
【図面の簡単な説明】
図1はジリンクス社の従来技術によるFPGA構造を示す。
図2Aおよび2Bは図1におけるスイッチボックスSBXの単純な実動化を示す。
図3は融通性のより高いスイッチボックスSBXを西側配線に利用可能な接続とともに示す。
図4Aはジリンクス社FPGAデバイスに用いられている論理ブロックを示す。
図5は特定の遅延を有する接続により相互接続された論理素子またはレジスタを有する回路設計例を示す。
図6は既知の点から順方向への到達時間実測値の伝搬を示す。
図7は供給先から逆方向への到達時間要求値の伝搬を示す。
図8は図6および7の到達時間実測値および要求値から定まる各接続での弛緩を示す。
図9は零弛緩アルゴリズムによる弛緩分散を示す。
図10はこの発明の弛緩分散方法を用いたレイアウトのステップの流れ図である。
図11はこの発明による限界値調整アルゴリズムに用いるステップの流れ図である。
図12Aは論理設計の一部である回路網例である。
図12Bは図12Aの回路網例における各接続に付加された分数乗算器である。
図12Cは図12Bの分数に経路タイミング制約を乗じて決定した上記回路網内の各接続についての遅延上限値を示す。
図12Dは図12Aの回路網についての下側境界接続遅延を示す。
図12Eはレイアウト完成後に図12Aの回路網に達成される遅延を示す。
図12Fは図12Dおよび12Eの下側境界遅延と達成ずみの遅延とを用いて算出した分数f(c)を示す。
図12Gは図12Aの回路網における接続についての改訂後の遅延上限値、すなわちより厳しい経路制約が適用され、図12Fの分数f(c)の算出のために図12Dおよび12Eからの情報を用いて新しい遅延限界値が決定されたのちの遅延上限値を示す。
図13は図10のステップ104で行われるステップをより詳細に示す。
図14はFPGAデバイスにおける経路付与の一回目通過計算で行われるステップを示す。
図15はFPGAデバイスにおける経路付与の反復改善で行われるステップを示す。
図16は初期配置の期間中に用いうる最小値カット分割アルゴリズムを示すための問題例を示す。
図17Aは初期配置の期間中に分割線を横断しない接続上の実際の遅延を概算する際の仮の配置を表わす。図17Bは初期配置の期間中に分割線を横断する接続上の実際の遅延を概算する際の仮の配置を示す。
図18は初期配置の期間中に下側境界遅延を概算する際の仮の配置を示す。
図19は配置改善の期間中に循環すべき候補素子のサブセットを示す。
図20は配置改善の期間中に用いられる損失関数を示す。
好適な実施例の詳細な説明
この発明の方法は初期レイアウトステップの決定の進行中およびこの初期レイアウトに対する反復的改善の表現明確化の進行中の両方で動作する。この発明の新規な特徴は下側境界達成可能な遅延の考慮と新しい遅延限界値計算とを含む。この発明の経路分析方法は、論理素子を論理ブロック内に初期配置する期間中、配置期間中、および論理素子間の接続への経路付与の期間中に用いるのが好ましい。
経路分析とレイアウトツールとの間の反復対話
図10は反復的改善を達成するのにこの発明が用いられるステップの流れを示す。これらステップの流れは、論理の分割を選択しまたはユーザ設計の素子用の位置または経路を選択するレイアウトツールと、全体のレイアウトを時間(動作)で概算し上記レイアウトツールの用いるべき遅延限界値を示唆する経路分析ツールとの間で一方から他方に前後に反復する。初期状態では、遅延を概算するステップ102は、レイアウトツールを少し動作させたあと、たとえば最小値カット分割アルゴリズムによる最初の切分けのあと、またはユーザ設計の一部または全部の経路付与のあと動作させる。ステップ103では、この発明の経路分析ツールが概算した(または実際の)遅延をユーザの特定したタイミング要求と比較し、その結果得られる弛緩を計算する。図5乃至9に関連して上に述べた従来のヒッチコックの方法をこの接続弛緩の計算に用いるのが好ましい。これらの弛緩から、ステップ104において、この設計における各接続につき遅延限界の示唆値を計算するために新規な方法を用いる。これらの限界値は次にステップ111においてレイアウトツールが各位置または経路を上記示唆値に合わせるように改善する試みにおいて用いる。ステップ111が完了すると、レイアウトツールはステップ102に戻り、新しい接続についての新しい遅延値を計算する。ステップ103および104の経路分析過程は再び繰り返され、新しい弛緩が算出され、新しい遅延限界値が示唆される。
ステップ103はステップ102からの接続遅延を受けて経路、すなわち通常いくつかの接続といくつかの論理ブロックとを含む経路の遅延を概算する。好適な方法では四つの型の経路と関連の遅延とを考慮する。すなわち、
パッド・パッド間:信号が入力パッドに入力された時点から介在レジスタを含まない経路経由で出力パッドに到達するまでの時間遅延
パッド・起動間:入力パッドへの入力からレジスタへの入力までの時間プラス切換え信号の電圧レベルの安定化に要する付加的時間の時間遅延、
クロック・パッド間:レジスタ出力発生から出力パッドへの出力までの時間プラスクロックパルス切換え時点とレジスタ出力に定常信号が生ずる時点との間の時間遅延、および
レジスタ・レジスタ間:一つのレジスタの出力発生から次のレジスタへの入力までの時間プラスクロックパルスの切換えとレジスタ出力に出力が生ずる時点との間の時間プラス信号のレジスタ入力への到達時点から切換え信号の電圧レベルの定常化までの時間の時間遅延
の四つの型である。すなわち、内部遅延時間を配線セグメント遅延時間と論理ブロック遅延時間に加えて経路の合計遅延を概算する。この計算はレイアウトツールによって行われる。レイアウト決定用のステップについての従来技術の説明で上に述べたとおり、パーティショナーが全体設計を論理ブロックで実動化すべき論理素子に分割し、プレーサーがそれら論理素子を論理ブロックに位置づけし、ルーターが接続・論理ブロック間を経路付与する配線を選択する。各ツールはその活動の結果生ずる接続遅延を概算する手段を含むのが好ましい。
下側境界
この発明は遅延限界示唆値を計算するステップ104に関し、その詳細を次に述べる。遅延限界示唆値はレイアウトツールにステップ111、すなわち論理ブロック間の個々の接続を扱い経路の総遅延の概算は行わないステップ111におけるレイアウト修正の指針として供給される。各接続についての下側境界遅延の概算値は、ステップ104において、設計者の入力する値から、または好ましくは、接続端点の座標の関数として使用されるチップについての下側境界遅延の表を作成することによって決定される。これら下側境界遅延は各接続についての遅延限界示唆値の計算において用いられる。遅延限界示唆値は、例えば、レイアウトの下記の段階、すなわち初期配置、配置改善、および経路付与の段階で用いることができる。
この発明を用いる他のステップの場合と同様に、利用可能な下側境界接続遅延の最良値(初期配置および配置改善期間中は正確な下側境界は不明である)がステップ104で遅延境界示唆値の計算に使われる。
限界値調整アルゴリズム
図11は図10のステップ104で分割、配置および経路付与用のひと組の遅延限界示唆値を計算するのに用いる経路分析ツールの流れ図である。下側境界接続遅延は上限値が下側限界遅延以下に設定されないことを確実にするために上側限界接続遅延U(c)を設定する際に用いる。この下側境界を考慮しなければ不具合な上限U(c)<L(c)という結果になり得る。この問題はタイミングの制約を満足するレイアウトの存在する設計でも起こる。
下側境界接続遅延L(c)は限界値調整アルゴリズムへの入力I(c)として用いる。
ステップ104において、この発明は弛緩を反復分散する従来技術の方法を一般化した限界値調整アルゴリズムを用いる。図11はこの限界値調整アルゴリズムの実動化に用いるステップを示す。ユーセフおよびシュラゴヴィッツの示すとおり、ステップ205において、各接続についてf(c)と接続cの現在の弛緩との積をその接続cにおける遅延示唆値に加算する。しかし、f(c)は従来技術で立てられた式によって計算されるとは限らない。図11の限界値調整アルゴリズムで用いられている項は次のとおりである。
U(c)=接続cについての遅延限界示唆値
I(c)=接続cについての初期遅延
弛緩(c,U)=ひと組の遅延Uを受けた接続cにおける弛緩
f(c)=弛緩を分散させるための乗算分数
L(c)=下側境界で利用可能な接続遅延
ステップ201に示すとおり、限界値調整アルゴリズムへの入力は次のとおりである。
網リスト、すなわち互いに接続すべき論理ブロック入力および出力のリスト、タイミング制約(クロック速度またはパッケージピン間タイミングを含み得る)、ブロック遅延、すなわち各論理ブロック内部での遅延、レジスタについては起動遅延およびクロック・出力間遅延
各接続について
初期遅延I(c)、すなわちこの発明では下側境界L(c)に設定してある値、
乗算分数f(c)、すなわち接続弛緩の何分の一をその接続に加えるべきかを表わす値
ステップ202において、この限界値調整アルゴリズムは各接続cについて下側境界L(c)に設定したU(c)=I(c)を初期化する。ステップ203において、その接続についての弛緩、すなわち弛緩(c,U)を計算する。ステップ204に示すとおり、弛緩が十分に零に近ければステップ207に進み遅延限界値を出力する。そうでない場合は、ステップ205に示すとおり、弛緩は次式(5)を用いて各接続に分散される、すなわち、
(5) U(c)new=U(c)+(f(c)*弛緩(c,U))
図11に示すとおり、弛緩を計算し分散させるステップ203および205は未分散の弛緩が零に十分に近づくまで繰り返される。最終的にステップ207に到達し遅延限界値がレイアウトツールに供給され後続の反復に供される。
図12Aは三つのレジスタR1、R2およびR3、組合せブロックB1およびB2、並びにこれらブロックおよびレジスタを相互接続する接続C1乃至C4を含む論理設計のごく一部分の例を示す。レジスタR1からの出力信号は接続C1を経てブロックB1に伝達される。ブロックB1の出力は接続C2経由でレジスタR2に、また接続C3経由でブロックB2にファンアウトし、ブロックB2は出力を接続C4経由でレジスタR3に供給する。
図12Bは次式(6)を用いて弛緩を分散させた図12Aの回路の例を示す。すなわち、
(6) f(c)=1/接続cを通る最長の経路
図12Bに示すとおり、R1からR3への経路は三つの接続C1、C3およびC4を用いる。R2へのより短い経路は二つの接続C1およびC2を用いる。最長の経路が三つの接続を用いているので、この最長の経路にある各接続には分散1/3を割り当てる。R1からR2への経路の用いる接続は二つだけであるが、この経路にある接続C1およびC2の各々には分数1/2を割り当てることが考えられよう。しかし、接続C1を通る最大長さの経路は三つの接続を有するのでf(c1)は小さいほうの分数1/3を優位とする。
レジスタ転送24ナノ秒以内という目標を犠牲にし遅延を零に初期化した場合は、(すなわちこの発明によらない場合は)図12Bの分数は図12Cに示した遅延限界値を生ずる。
レイアウトツールにより達成される遅延
ステップ104(図10)の経路分析によりひと組の遅延限界示唆値が発生されたのち、これら限界値はレイアウトツールに供給され、このツールがステップ111においてそれら限界値に合うようにレイアウトを変更する。
図12Eは図12Cで供給された限界値に応答して実際に得られたひと組の遅延を示す。接続C1には実際の遅延4ナノ秒が得られ、接続C2には実際の遅延20ナノ秒が得られ、接続C3およびC4には遅延8ナノ秒および12ナノ秒がそれぞれ得られた。すなわち上記経路の両方について限界値24ナノ秒が達成された。接続C2についての限界の示唆値U(C2)は満たされてなくても全体の目標値24ナノ秒が達成されていることに注目されたい。これは、限界示唆値U(c)を目標とするレイアウトツールがその示唆値に合致しなくとも中途で終了せず解の終結まで続行することによる。また、接続C1についての限界値は余地を残して満たされているので、総体的目標は満たされている。
遅延限界値についての下側境界
遅延限界値が零になり得ると仮定するのは非現実的である。二つのレジスタ間の最短の経路はチップ上での二つのレジスタの間の物理的分離およびチップ上にある経路付与セグメントによって定まる下側境界遅延を有する。接続すべきブロックが異なった物理的位置に配置された場合(すなわち、配置を変更した場合)、下側境界を調整できる。しかし、配置変更のない経路変更については、その接続については下側境界は一定である。初期遅延零を用いて限界示唆値を計算するのに比べて、弛緩割当ての改善はこれら下側境界遅延から始めてそれら下側境界値に弛緩の分数を加算することによって達成できる。また、下側境界遅延の組を用いた分析がユーザ指定のタイミング制約を満たせないことを示した場合は、そのタイミング制約はいかなる経路形状によっても満たされ得ないことの確かな指標となる。下側境界遅延とタイミング要求との組合せは経路付与に努力を払う前の配置の評価に使うことができる。配置のために経路付与が満足すべきものになり得ず、タイミング制約が決定的に重要である場合は、経路付与を首尾よく進める可能性を与えるために配置を変更しなければならない。
達成ずみの遅延と下側境界との差を用いた反復改善
初期レイアウト計算の完了ののちは経路遅延合計と対応の弛緩とは概算できる。経路遅延のある部分を改善するために反復を行うのが望ましい。例えばクロック速度の25%上昇が求められ得る。図12Dに示すような下側境界遅延を用いた場合は、これら下側境界値は性能改善を試みる際に考慮に入れ得る。
この発明によると、弛緩はより高い標準の達成の困難度に応じて分散される。接続遅延の残余の改善は達成可能な最小の遅延と達成ずみの遅延との間の差で測る。いくつかのベンチマーク試験で好成績を挙げた遅延削除の式は遅延許容誤差を差D(c)−L(c)に比例する量だけ減らすことである。ここで、D(c)はその接続で達成された遅延であり、L(c)はその接続について達成可能な下側境界値である。すなわち、式(3)でf(c)の計算に使われる重みの式は
(7) 重み(c)=D(c)−L(c)
式(3)をここに再掲すると
(3) f(c)=重み(c)/最大[重み(p)]
式(7)の重み関数を式(3)で用いると、新しい遅延限界値についての式(5)の計算は
(5) U(c)new=U(c)old+(f(c)*弛緩(c,U))
となり、達成ずみの弛緩と下側境界遅延との両方を用いる。従来技術の研究者らが考慮したその他の重み関数と違って、式(7)の重み関数はレイアウトの現在の状態によって定まり、したがって達成ずみのものについての知識を利用している。式(7)の重み関数は一つの接続で達成ずみの遅延とその下側境界との差であるので、それはその接続の最大の改善可能性に関係している。したがって、タイミング改善に努力が払われれば、上限値U(c)が値を設定しその値によって各遅延はその改善可能性に比例するように改善を求められる。
図13はある設計のタイミングの改善に用いた図10のステップ103および104の流れ図を示す。図13のフロー図を図12D、12Eおよび12Fの例に関連して述べる。レイアウトずみの設計のタイミングの反復的改善を試みる場合は、第1のステップはその経路の遅延についての新しい目標を設定することである。図12D−12Fの例では、その目標は24ナノ秒の遅延を25%減らして18ナノ秒にすることである。弛緩は達成ずみの遅延と要求された遅延との差であるから、初めは負になる弛緩もあることは明らかである。図12D−12Fの例では、弛緩は新しい要求値に対して初めは全部負である。例えば、接続C2では達成ずみの遅延は20ナノ秒であり接続C1では達成ずみの遅延は4ナノ秒である。新しい目標は合計18ナノ秒である。すなわち、接続C1およびC2についてステップ103で計算された弛緩は18−24=−6である。接続C3およびC4についての弛緩も−6である。この発明の新規な特徴として、ステップ107において新しい遅延限界値U(c)newを値U(c)old+f(c)*弛緩(c,U)と下側境界値L(c)との大きい方に設定することにより、下側境界値を侵すことなく負の弛緩は分散される。すなわち、遅延限界値が低減されるので、達成可能値以下に低減される遅延限界値はない。図12Fに示した分数f(c)は、接続の重みを上述のとおり式(7)から定めた式(3)で計算する。図12Fおよび12Gにおいて、接続C1の達成ずみの遅延4ナノ秒マイナス下側境界2ナノ秒から分数f(C1)は2/12となり遅延限界示唆値は3ナノ秒となる。接続C2においては達成遅延値20ナノ秒および下側限界値10ナノ秒となり分数f(C2)は10/12となり遅延限界示唆値は15ナノ秒となる。同様の計算を経路C3およびC4について行う。全体としての遅延の25%低減を複数の接続に25%低減として一様に分散するのではないことに注目されたい。これは、下側境界遅延が一様でなかったことによる。図13は負の弛緩の分散のあとで正の弛緩の分散がステップ109で図12C関連の上述の説明にあるのと同じ方法で行われる。
FPGA経路付与への応用
この発明の好適な実施例はFPGA構造において次の特徴を備える経路付与ツールに関連して信号を経路付与するのに用いられる。
1)経路付与ツールが各接続cにつきその示唆値を満たす経路をもしそれがあれば選択することによって遅延限界示唆値U(c)に応答する。
2)どの接続に最初に経路付与するかの決定および経路の選択において、経路付与ツールは、遅延および資源コスト(ある型の配線の数に対する実際に使用された数)の組合せを説明するコスト関数を用いる。経路付与ツールは次の項目に基づいて選択を行う。すなわち、
a)遅延限界示唆値、
b)予定経路の実際の遅延、および
c)接続を形成するのに用いられる配線セグメントの数と種類、
3)経路付与ツールがすべての接続について経路を見出すことを試み、いくつかの経路を見出し得なかった場合はその経路付与ツールは、接続を完結し得る利用不可能な経路を指定し、その経路を利用不可能にしている接続を除去し(はがし取り)、一時的に経路未付与の接続のために経路を見出すことを試みることによって、経路未付与の接続への経路付与を試みる。
この特許出願の譲受人であるジリンクス社は上記規準に合ったXilinx XC 4000系の製品のためのルーターを供給している。この発明は各接続につき上限示唆値を提供する。上記ルーターは上限示唆値のこの組からの指針により、形成デバイスのより高速なタイミング要求の受容能力を高める経路を選択する。
下側境界を用いた初期経路付与解
クロック周期を最小にすることが目標であれば、四つの経路の型(パッド・パッド間、パッド・起動間、クロック・パッド間、およびレジスタ・レジスタ間)の各々につき考えられる最良の合計経路遅延を接続はすべて最高速の経路上にあると仮定して決定し、一回目の反復には上記最高速の合計経路遅延などには厳しくない目標を選択することが可能である。ロジックデバイス内で配置した論理設計に経路付与するのに用いる場合は、特別の資源を要する接続は最初に経路付与する。それ以外の接続は下側境界遅延の許容可能な遅延に対する比の減少する順に、すなわちより厳しい限界値をもつ接続を初めに経路付与するように経路付与される。二回目の反復には要求はより厳しくされる。
より詳細に述べると、図14に示すとおり、ステップ141において、経路分析器(図10のステップ103および104を行う)は下側境界経路遅延L(c)を計算し、ステップ142で考えられる最良のクロック周期Tlowを見出せるようにする。一つの実施例においては、ステップ143に示すとおり、経路分析器(図10のステップ103および104に用いられるツール)が次に目標(経路時間の要求値)を
Tgoal=1.5Tlow
に設定する。
ステップ144に示すとおり、接続cの各々については分数f(c)は式(3)から決定される。
(3) f(c)=重み(c)/最大[重み(p)]
ここで、用いられた重み関数は弛緩一様分散関数重み(c)=1であり最大[重み(p)]は最大経路における接続の数である。ステップ145に示すとおり、限界値U(c)は図11に関連して上に述べた限界値調整アルゴリズムを用いて調整する。
これら限界値はルーターに供給され(図10におけるステップ104からステップ111への矢印と等価)、このルーターは図14のステップ146において特別の資源(例えば、大域クロック信号と表示してある信号)を要する接続を識別しそれら接続を適切な資源に割り当てる。
次に、ステップ147において、ルーターは比L(c)/U(c)の減少する順に残余の接続を経路付与する。どの接続についても遅延限界示唆値がその接続に可能な最高速遅延L(c)よりも小さくなることはないことを想起されたい。すなわち、比L(c)/U(c)はすべて1以下である。その比が1に近いことはその接続がその接続に可能な最高速遅延に近い遅延を有することを示す。したがって、この比の大きい接続にまず経路付与して、困難な接続への満足な経路を得る可能性を高める。ルーターが上記U(c)要件を満たす経路を見出し得なかった接続はいずれも経路未付与のまま残す。
ステップ148において経路未付与のままの接続があるか否かを決定する。もしあれば、ステップ149において、ルーターは経路未付与の接続全部につき数値U(c)を20%だけ増加させ、それによってTgoalを20%だけ増加させて、ステップ146に再び進む。ステップ148に到達したとき接続がすべて経路付与ずみであれば、初期の経路付与努力は終了しており、その場合は経路付与情報はルーターに供給できる(図10のステップ102と103との間の矢印に等価)。
既存の経路の改善
図15はこの発明により既存の経路付与解のタイミングを改善するために用いられるステップを示す。既存の経路付与解は達成ずみのクロック速度Tachievedを有する。可能な最高速の解を得ることが目標であれば、好適な実施例は可能な最大の減少量の三分の一だけクロック周期を狭める試みを一つの反復において試みる。すなわち、ステップ151において、新しいクロック周期Tgoalが次のとおり設定される。
(8) Tgoal=Tachieved−(Tachieved−Tlow)/3
ステップ152に示したとおり、各接続cについて、分数f(c)は式(3)から
(3) f(c)=重み(c)/最大[重み(p)]
と算出される。ここで、使用された重み関数は達成ずみの遅延マイナス下側境界遅延、または改善の余地
(7) 重味(c)=D(c)−L(c)
である。これら分数f(c)の決定ののち、ステップ153において、負の弛緩を有する限界値U(c)を式(b)U(c)new=最大[U(c)old+f(c)*弛緩(c,U),L(c)]を用いて減少方向に調整し、次にステップ154において、正の弛緩を有する限界値を次の式を用いて増加方向に調整する。
(5) U(c)new=U(c)old+f(c)弛緩(c,U)
これらの新しい、また時にはより厳しい遅延限界示唆値をルーターに供給し、ステップ155において、新しい示唆値よりも大きい遅延D(c)を有する接続についてのあらゆる経路を消去または除去する。ステップ157においてルーターは分離された順にこれら経路未付与の接続に経路付与することを試みる。このU(c)要件を満たし得ない接続はすべて一時的に経路未付与のまま残される。
ステップ158においてルーターは経路未付与のままの接続があるかどうかを決定し、もしあれば、ステップ159において、それら経路未付与の接続についてのU(c)を20%だけ増加させる。経路を分類し経路付与を試みるステップ156および157を次に繰り返す。このループを全経路付与の終了まで繰り返す。
経路付与期間中のタイミング改善の効果
この経路付与改善方法で改善タイミングを達成できることがしばしばある。種々の寸法および機能のベンチマーク設計22件についての実験において、全接続につき一つの遅延限界値を用いた経路付与アルゴリズムから導かれる遅延と下側境界値使用の限界値調整アルゴリズムを用いて導かれる遅延とを比較し、次に上述の経路付与改善アルゴリズムを一回通過させた。その結果、単一の遅延限界値を用いたタイミング結果に比べるどの場合についても改善がみられた。改善の度合は3%から32%にわたり上記ベンチマーク設計22件についての平均は約14%であった。達成された接続遅延と理論上の最小接続遅延との比較から、各接続がもっとも高速の経路で経路付与されていれば経路遅延の付加的改善は16%だけであることがわかる。これら22件の設計およびこれら以外の設計についてのこれ以上のタイミング改善はこの発明を設計をレイアウトする際の初期配置または配置改善に用いることによって達成できよう。それら改善はまだ試みられていない。
図10の流れ図はこれら段階のすべてに適合する。配置の初期段階では実際の遅延についてはほとんど不明であるので、下側境界は単なる概算値である。しかし、これら初期の概算値から限界示唆値を計算することによって、それ以後の配置結果が改善される。経路分析方法をレイアウト処理の初期の段階に応用することを次に述べる。
初期配置
この発明の方法は論理素子の論理ブロックへの初期配置にも使うことができる。初期配置は最小値カット分割アルゴリズム、すなわちデバイスの二つの領域で実動化される二つのクラスタに全体の設計を分割することによって始まるアルゴリズムで行うのが好ましい。最小値カットアルゴリズムはそれら二つの領域を分ける分割線を横切って延びる接続の数を最小化する。この最小値カットアルゴリズムは一つのクラスタを、各クラスタが一つの論理ブロック内で実動化できるまで、二つのより小さいクラスタに分割することを続ける。
素子の一つのクラスタの二つのクラスタへの分割の各々は分割線の両側の各々に論理素子の半分を配置することによって始まる。これに引続き、各素子の所属する側を転換する一連のステップを配置する。これらステップの各々において、上記分割線を横切って動くように選択された素子は所属の側の転換による損失削減効果のもっとも大きい素子である。
従来技術の最小値カットアルゴリズムにおいては、分割線のまわりの特定の素子配列に伴う損失はその線を横切る接続の数の概算値(概算の実際の数は一般に単一の信号源からファンアウトする多数の接続の組についての最終的な経路付与に左右されるので概算値となる)である。図16は素子E2を分割線171を横切って区画S1からS2に動かす損失を概算する小例である。
全部の素子を片方の側から他の片方の側に移し終えたあと、このシーケンス内で最低損失を達成したステップを新たな予定分割線として用いる。この手順は、分割線を横切って各素子を再び動かし最低損失の配置を選ぶことによって繰り返される。各素子の移動および最低損失の配置の選択の手順の繰返しはこのシーケンスがそれ以上の改善をもたらさなくなるまで続く。
この発明は、分割線越えの素子移動の損失の概算を、分割線を跨ぐ接続の数の改善だけでなく遅延計算にも基づいて行う。
(9) 損失E=Nafter−Nbefore+Cdelay(E)
ここで
損失Eは分割線を越える素子Eを動かす損失(負の数は改善を示す)、
Nafter−Nbeforeは従来技術による接続横断損失、すなわち素子移動後の分割線越え接続の数の概算値マイナス素子移動前の分割線越え接続の数の概算値
Cdelay(E)はその素子を分割線越えで動かすための遅延に関する損失追加。この発明によると、Cdelay(E)は素子Eへの接続についての接続遅延関数Cdelay(c)の合計である。すなわち、素子Eにつながるすべての接続cについて、
(10) Cdelay(E)=■Cdelay(c)
この発明の好適な実施例によると、接続遅延関数Cdelay(c)は上述の図10のステップ104で計算した遅延限界示唆値U(c)の関数であり、また、二つの値B(c)およびW(c)の関数でもある。値B(c)は接続が分割線を横断しないなどより良好な状態を表わし、値W(c)は接続cが分割線を横断するなどより不良な状態を表わす。図17Aは素子E1およびE2の間の接続が分割線171を横断しないより良好な状態を示し、図17Bは素子E2が動かされて素子E1およびE2の間の接続が分割線171を横断したより不良な状態を示す。
接続が分割線を横断しない図17Aの場合において、接続E1−E2についての遅延を決定するために、素子E1およびE2は分割線171の左側の領域のx寸法の1/3およびy寸法の1/3だけ離されているものとする。これら座標に対応する上記良好状態の遅延B(c)を使用中のチップに特有の概算遅延表で調べる。その表に格納されている概算遅延は、素子間の接続の経路付与はそのチップ内の最高速経路、すなわち高速資源と指定されたステップ経路付与資源を除く最高速経路を用いてなされると仮定して決定される。遅延は通常チップ内の特定の資源およびトランジスタで定まり、素子を配置した論理ブロック間の距離には比例しない。例えばジリンクス社FPGAチップのあるもの、すなわち大域クロックバッファ線およびその他の長い線がチップ全長またはある場合にはそのチップの半分の長さにわたって延びるチップにおいては、比較的少数のこれら高速資源が備えられている。すなわち、それら高速資源は大きいチップ表面積を占有し、クロックや高ファンアウト線など高速用の資源としてレイアウトツールに識別されるように高速資源と指定されているからである。これら高速資源はチップ内の多数の接続には利用不可能である。したがって、接続遅延の最良の概算値はこれら高速資源は利用不可能と仮定している。一つの実施例においては、概算遅延表中の遅延概算値は、接続形成用の配線セグメント間の相互接続が信号の再生および高速化のためにバッファ経由になっていないものと仮定している。すなわち、概算遅延表はかなり控え目な表である。現在入手可能なチップについては、概算遅延は1乃至20ナノ秒の範囲にある。
接続が縦分割線171を横断する図17Bの場合は、素子E1およびE2はこれら部分の水平方向寸法の中間点、および垂直方向の1/3および2/3の点にあるものと仮定している。図17Bに示した位置の素子E1およびE2対応の不良状態の遅延W(c)は概算遅延表で調べる。上述のとおり、損失Cdelay(c)は遅延限界示唆値U(c)、良好状態遅延B(c)および不良状態遅延W(c)の関数である。現在のところ好適な関数は、
(11) W(c)<U(c)/2の場合、Cdelay(c)=0
U(c)>W(c)>U(c)/2の場合、
Cdelay(c)=W(c)−B(c)
W(c)>U(c)の場合、
Cdelay(c)=W(c)−B(c)+[W(c)−B(c),U(c)の大きい方]
である。すなわち分割線を横断することによる遅延が限界示唆値よりも依然としてずっと小さい場合は、Cdelay(c)に関する因子はその素子を動かす損失の概算の際にCdelay(E)に加算されない。接続が分割線を横断することによる遅延が遅延限界示唆値U(c)に近くしかもそれより小さい場合は、その分割線横断による損失を反映するために選ばれる数字、すなわち分割線が横断されたときの予期遅延と分割線横断がなかったときの予期遅延との差は、Cdelay(E)に与えられる。上記不良状態遅延が遅延限界示唆値U(c)を超える場合は、Cdelay(c)からの第2の寄与値をCdelay(E)に加算する。この追加の寄与値は二つの差、すなわち、不良状態遅延と遅延限界示唆値との差(すなわち不良状態においてその示唆値をどれほど超えたか)、および不良状態遅延と良好状態遅延との差(改善の可能性に関する)の二つの差の小さい方である。
W(c)が上記移動の前の状態に対応し、B(c)が上記移動のあとの状態に対応すれば、Cdelay(c)は負の数字として記録される。図16の例ではCdelay(c)がE1以外のE2からの全接続について生ずる。区画S1からS2へのE2の移動は負の合計値、すなわち改善を示す可能性がある(ただし、素子E1が不良状態遅延W(c)>U(c)/2を有する唯一の素子でない場合)。
上記式(9)については、Cdelay(c)およびCdelay(E)が時間単位であり、一方分割線横断の数Nafter−Nbeforeの単位は純数であることに注意されたい。一つの実施例においては、Cdelay(c)の単位をナノ秒の十分の一で特定し、その結果のCdelay(E)値を数Nafter−Nbeforeに加えることによって単位変換を行う。
もう一つの実施例では、相次ぐ分割線がより小さい領域を分割する事実を、数Nafter−Nbeforeにその分割線の分割した寸法に比例する因子を乗ずることによって考慮に入れてある。したがって、素子移動の損失の式は次のとおりとなる。
(9) 損失E=S*(Nafter−Nbefore)+Cdelay(E)
ここで、
Sは分割線に垂直に分割した部分の寸法(行または列の数で測った)であって、
分割線が形成し得る物理的分割に関する寸法である。
分割線を横断して素子を動かすコストは分割対象の部分の中の各素子について計算され、各素子について各接続のその素子への影響を考慮する。
最小値カット分割アルゴリズムを用いた初期配置にこの発明の遅延限界示唆値を用いた場合の図10のステップの流れは、各分割線についてステップ102、103、104および111を通って一回だけ循環することである。したがって、遅延限界示唆値U(c)の計算は初期配置活動の期間中に多数回にわたり行われる。一つの実施例においては、経路分析103および104は初期配置の完了まで全部の分割線について繰り返される。もう一つの実施例では、遅延限界示唆値は最初のいくつかのクラスタを分割する分割線の決定後は再計算(図13のステップ103および104を用いて)されない。例えば256個の論理ブロックを有するロジックアレーチップでは、最初の分割線でロジックを約100乃至150個の論理ブロックを占有する二つのグループに分割し、次に第2および第3の分割線でロジックを各々が約50乃至75個の論理ブロックを占有するグループに分割する。第4、第5、第6、および第7の分割線はロジックを各々が25乃至50個の論理ブロックを占有するグループに分割する。第7または第8の分割線の終了後、経路分析ステップ103および104を中止し、残余の分割は算出ずみの遅延限界値を用いて行い、それによって計算時間を節減できる。下側境界は更新した分割情報を用いて計算される値よりも低いが、計算ずみの遅延限界示唆値U(c)の反映される零よりも大きい下側境界の利点は後続の分割ステップでも継続する。ステップ111における良好状態遅延および不良状態遅延の計算は経路分析のステップ103および104を通じた反復が中止されても継続する。
遅延限界示唆値U(c)は、図10のステップ104において、上述の例で行ったのと同様に例えば経路付与の期間内に下側境界遅延L(c)を用いて計算される。しかし正確な下側境界の数字は素子未配置であるため未知である。図18は図16に示した素子についてのステップ4の遅延限界示唆値計算用の下側境界推定値を示す。図18は分割線171の確立後のレイアウトを示す。図18においては、図示のために素子E2は区画S1内に留まっている。下側境界接続遅延L(c)を計算する際には、それら素子は接続対象の素子にもっとも近い領域部分にあるものと仮定する。すなわち、下側境界接続はその接続がどこに延びるかによって領域の異なる部分から延びる。例えば、素子29については接続E9−E11のための領域S2の右下隅に示してあり、E9は接続E2−E9用の区画S2の左隅に示してある。したがって、分割のこの段階においては図10のステップ104において、接続E2−E10およびE9−E11のみが分割に伴う大きい下側境界遅延を示す。それ以外の接続はできるだけ近い論理ブロック対応の最小遅延を有するものとして示してある。接続遅延は図示の最小距離についての遅延の表からとってある。下側境界遅延は接続E2−E10についてのU(E2−E10)など接続遅延限界示唆値の計算に用いる。
配置改善アルゴリズム−限界示唆値の利用
この発明を使う一つの配置改善アルゴリズムは三つの部分の間の素子の循環である。図10の状況を考慮すると、配置改善はステップ111で起こる。ステップ111の期間中に論理設計内の各論理素子の他の場合への動きを考慮する。この配置改善アルゴリズムは素子の移動先として、空きの場所を見出すことに依存することはできないので、一般には配置改善は二つの論理素子の交換またはいくつかの論理素子の循環を伴う。次の説明は三つの素子を循環させることに関する。図19は配置変動を考慮中の素子191を示す。素子192は第1候補場所にある。しかし素子192を素子191の場所改善の受容のために移動させることは全体として悪い影響を及ぼそう。したがって、素子192のそれ以外の隣接素子、すなわちある実施例においては八つの隣接素子を素子191の移動先として考慮する。例えば素子194と素子192とを素子191の移動先として考慮する。素子192および194を含む九つの素子の各々について最も好ましい移動先の場所を隣接素子とともに考慮する。素子192についてはもっとも好ましい移動は素子193の位置への移動であり、素子193は素子191の素子に三角形を形成するように動かし得る。素子194については、もっとも好ましい素子は195である。このように、素子191についての移動の評価のために81個の三角形を考慮でき、そのうちの最良のものが選ばれる。
従来技術においては素子191についての移動先のこの第1候補は素子191への接続を有するそれら素子の重心である。この発明の実施例では、素子191の移動先の第1候補は素子191への接続向けのタイミング損失を最小にする場所である。もう一つの実施例では、第1候補192は、素子191の接続の重心と素子191への接続向けのタイミング損失が最小になる場所との中間の場所にある。素子移動先第1候補の選択のためのこれら二つの手段には数多く他の組合せも使用できる。現在のところ好適な方法は従来技術による上記重心とタイミング損失を最低にする場所との中間の場所を用いる。ステップ104からの遅延限界示唆値U(c)はこのタイミング損失の計算に用いられる。
図20は特定の配置の損失の計算を接続上の遅延概算値D(c)とそれら接続についての遅延限界示唆値との比較によって行う方法を示す。遅延概算値はもう一つの表に格納されている。遅延概算値の表は二つ以上の速度の経路付与資源を備えるチップ内での最高速の経路付与資源は利用不可能と仮定することによって決定される。いくつかの市販のチップは限られた数の高速経路付与資源を有し、その数が少ないためにこれら資源は一般には大多数の接続には利用不可能である。したがって、遅延の概算にはそれら高速資源は利用不可能としたほうが妥当である。
移動先第1候補のx座標およびy座標は次の式から計算できる。
(12) Gx=■[損失(c)*X(c)]/■[損失(c)]
(13) Gy=■[損失(c)*Y(c)]/■[損失(c)]
ここで、
損失(c)は移動対象の素子に付けられた接続cのタイミング損失であり、
X(c)は接続の他端における素子のX座標であり、
Y(c)は接続の他端における素子のY座標であり、
加算は移動対象の素子へのあらゆる接続cについて行われる。タイミング損失(c)を図20に示す。損失(c)は、遅延示唆値が遅延限界示唆値U(c)に等しいときは常に固定遅延F(例えば10ナノ秒)に等しい。小さい遅延示唆値に対しては、損失(c)は直線的に上昇し、概算遅延がU(c)−Fのとき零に達する。U(c)よりも大きい概算遅延に対しては、損失(c)は1よりも大きい勾配で直線的に増大する。遅延限界では10ナノ秒以外の値を損失に選べることはもちろんであり、その値はとりわけその部分の速度に依存する。好適な勾配の一つは2.0であるが、今後の試験のあと他の勾配が好適とされることもあろう。
図19に示すとおり、移動先第1候補近傍でいくつかの代替位置と素子191の循環用の最良の三角形を見出すために評価するのが好ましい。上述の説明から第1候補の代替位置の選択に多数の異なる方法を用い得ることは明らかである。
配置改善アルゴリズムは、その設計における全素子が移動について評価され改善後の場所が決定されたのち(図10のステップ111)、移動後の位置についての接続遅延下側境界の概算値を計算する。図10に示すとおり、これら新しい下側境界遅延は経路分析ツールに供給され、このツールで遅延限界示唆値U(c)を再び計算する。一つの実施例においては、配置改善のための図10のステップを通じた循環の不成就数は3である。
ステップ103および104において弛緩が計算され遅延限界が示唆される。これらの遅延限界示唆値は配置改善アルゴリズムによって素子の次の移動、すなわち選択配置の改善のために使われる。経路が遅い弛緩を有することが決定されると、ステップ104で計算された遅延限界示唆値は、遅延限界値を受容するよう次の移動を選択するためにステップ111でプレーサーに使われる。このプレーサーは厳しい限界値をもつ接続により大きい重みを与え、重要な接続の付着を受けた素子が低速の接続によって分離されることが起こりにくいようにする。
配置改善の期間中に、配置素子間で可能な最高速接続を仮定した下側境界遅延を、それら素子の配置を含む論理ブロックの相互間の接続に利用可能な最高速経路にそれら素子を経路付与できると仮定することによってステップ102で概算できる。初期配置について上述のとおり、下側境界接続遅延は表で調べる。(表は二素子間のxおよびy距離の関数でもよく、それら二素子のxおよびy座標の関数でもよい。)下側境界遅延については、多重接続は同一の物理的線路に接続可能と仮定できる。ステップ102のあと、下側境界接続遅延の組は経路分析ツールに伝えられ、そのツールはステップ103において下側境界経路および弛緩を計算し、ステップ104においてこれら接続についての新しい遅延限界示唆値U(c)を計算する。
経路分析ツールは対応の下側境界クロック周期をも計算できる。これは各接続を最高速の経路に経路付与した場合にこのデバイスを動作させるのに用いられ得る最小クロック周期である。この下側境界よりも小さいクロック周期が求められた場合は、エラーメッセージがユーザに送られる。ステップ104で計算された限界示唆値に基づき、プレーサーはステップ111で代替的配置、すなわち所望のクロック周期から得られる遅延限界示唆値に合致する配置の一組を試みる。一つの実施例においては、このプレーサーは、下側境界遅延がタイミング制約の受容不可能なことを示せば引続き動作し最良の利用可能な配置を見出す。
上述の説明に照らして、当業者にはこれら以外の実施例、すなわちマスクプログラムデバイスやカスタムデバイスに使える遅延限界決定方法を含む実施例が自明になろう。それら実施例はこの発明の範囲内に含まれると意図されたものである。
この発明は回路設計をその設計を実動化する物理的な集積回路構造に変換することに関する。より詳しくは、この発明はユーザの特定するタイミング要求を回路配線が満たすように、回路設計を上記物理的構造上に配置することに関する。
背 景
プログラマブルロジックデバイスは多様な論理設計の任意のものを実動化するのに利用できる。ユーザが論理回路を設計し、ロジックデバイスのプログラミングをコンピュータに指示するか、または所望の論理設計を実動化するためのひと組のマスクを設計するのにソフトウェアを用いる。ロジックデバイス内の部分間で授受される信号のタイミングは、物理的構造におけるトランジスタ群へのユーザ回路素子の配置およびそれに伴う金属配線の配列によって部分的に決まる。一般的に配線が長くなると遅延が長くなり、実際のタイミングは静電容量、抵抗、および信号が通過すべき論理素子の数に左右される。トランジスタがより速くなったので、信号のデバイス通過に伴う遅延の主な部分は配線に起因する。したがって、配線セグメントによる遅延を最小にするようにそれら配線セグメントを注意深く選ぶことが必要になってきた。
この発明の方法を用いてプログラムできるロジックデバイスにはマスクプログラマブルなものもフィールドプログラマブルなものも両方とも含まれる。マスクプログラマブルデバイスはデバイスの製造中に工場でプログラムされ、フィールドプログラマブルデバイスはユーザが完成品を購入したのちにプログラムする。マスクプログラマブルデバイスは、集積回路基板内に形成されたトランジスタ群のアレーを備えるゲートアレー構造と、その構造の上の層に形成した通常は一つの制御ゲート層とを含む。これら標準の層の上に通常は二つまたは三つの金属化層により個別層を形成し、それによってユーザ所望の回路を形成するようにそれらトランジスタを相互結合する。
フィールドプログラマブルデバイスにはプログラマブルロジックアレー(PLA)とフィールドプログラマブルゲートアレー(FPGA)デバイスとが含まれる。PLAデバイスは、ORゲートのアレーに入力を供給し論理積の和となる論理を実動化するANDゲートのアレーを一般に含んでいる。FPGAデバイスはプログラム可能な相互配線線路で互いに接続された複数個の論理ブロックまたはモジュールを含む。これらプログラム可能なブロックは多様な機能を実動化するようにプログラムでき、またプログラム可能な相互配線はユーザの設計を実動化する全体構成を形成する多様な方法で相互接続を形成する。次に述べる詳細な説明ではFPGAを用いるので、ここでFPGA構造をより詳細に述べておく。
FPGA構造
図1は代表的な島型フィールドプログラマブルゲートアレー(FPGA)構造を表わす。複数の回路配置融通性ある論理ブロック(CLB)がユーザの選択した機能を実動化するが、ユーザ所望の全体としての機能を発揮するには相互接続しなければならない。図1のCLBは東西南北の各方向に延びる接続導線をそれぞれもつものとして示してある。実際の回路には通常図示のものよりも多くの導線があるが、この図はFPGA構造を表わしている。これらCLBの相互接続用にこのチップには配線セグメントが備えられている。これらCLB導線は例えば導通トランジスタまたはアンチヒューズにより配線セグメントにプログラム可能な形で接続できる。マスクプログラムを施した代替的構造では、これら導線および配線セグメントは金属配線層間にバイアホールを設けることによって相互接続できる。
また、FPGAには配線セグメントをノードで選択的に相互接続するスイッチボックスSBXが設けてある。これらスイッチボックスはノードに至る配線セグメント間の種々の内部相互接続を提供できる。二つの例を次に述べる。
SBXの構成は図2Aのように示されよう。すなわち、図示のとおり、西側から延びる配線W1−W6の各々は、北、東および南側に各々からの配線N1−N6、E1−E6、およびS1−S6の各一つに接続できる。接続はダイヤモンドコネクタD1乃至D6経由で形成される。トランジスタによる構成の場合は、このダイヤモンドコネクタは図2Bに示すとおり配線N、E、SおよびWを六つのトランジスタで選択的に接続する形になる。このような構成によって、いずれかのCLB導線とそれ以外のいずれかのCLB導線との間に接続を形成することが可能である。ただし、図2AのセグメントW1上の信号のセグメントN2への接続を可能にするなどの「レーン変更」は不可能である。
より融通性のあるスイッチング構成を図3に示す。図3においては、簡潔化のために西配線セグメントからの相互接続だけを示してある。西配線W1を、北配線N1およびN2、東配線E1およびE2、南配線S1およびS2のいずれかと接続できることがわかる。西配線W3を北配線N1およびN2、東配線E1およびE2、南配線S1およびS2にも接続できる。西配線W2は北配線N2およびN3、東配線E1、E2およびE3、南配線S2およびS3に接続できる。他の三つの方向の各々についても同じ選択が通常提供されるが簡潔化のために図示してない。
図1には配線セグメントの三つの型が示してある。配線セグメントSLは二つのスイッチボックスSBXの間に延びる短セグメントである。二倍長配線セグメントDLが短セグメント二つ分の長さにわたって延びている。配線セグメントLLは長セグメントでありFPGAデバイスの全長にわたって延びているか、場合によってはその半分の長さにわたって延びている。これら長さの異なるセグメントは互いに異なる目的を意図したものである。すなわち、長セグメントはクロック信号などの広ファンアウト信号に有用であり、二倍長セグメントおよび単一長セグメントは局部経路付与に最適である。一つのCLBからもう一つのCLBへの経路を辿る信号の受ける遅延は使われた配線セグメントの種類と信号の通過したノードとの数とに左右される。
定 義
論理設計では、一つの信号源論理ブロックまたはレジスタから一つの供給先論理ブロックまたはレジスタへの導体経路を接続という。一つの信号源で発生した信号をいくつかの供給先に送る必要があることが多い。一つの信号源からそれら供給先全部に至る経路の集まりが網である。論理設計を実動化するハードウェアでは、その接続または網の一部を構成する配線の単一片をセグメントと呼ぶ。一つのセグメントはノードでもう一つのセグメントに相互接続できる。通常、一つの配線セグメントはノードでいくつかの他の配線セグメントのいずれかと相互接続できる。経路とは、一つのパッケージピンまたはクロック制御下のレジスタからもう一つのパッケージピンまたはクロック制御下のレジスタに延びる接続または結合用論理ブロックの組をいう。
タイミング分析に相互接続配線を含める動機
セグメントどうしのノードにおける接続をトランジスタの導通化によって行う場合は、その接続は配線セグメントおよびトランジスタの両方を含む。トランジスタは導通状態でも有限の抵抗値を有するので、その接続は信号経路に有限のRC遅延を抱え込ませる。また、素子の微細化に伴い、配線による遅延の割合が増大する。接続遅延がトランジスタ接続デバイスの全遅延の主要部になった。布線ずみのASICデバイスについても、素子の微細化が進んで信号の全遅延に対して配線が大きく影響するようになり始めた。過去においては、例えば多数ゲートのASICデバイスを形成する際には、配置の最適化がタイミングにもっとも大きい影響を及ぼすのでその最適化に研究努力の大部分が傾注された。FPGAなどのデバイスでは、多様な信号経路形成資源が多様な遅延特性を備える。したがって、素子配置と同様に経路もロジックデバイスのタイミングに多大の影響を及ぼし得る。
集積回路ロジックデバイス上に設計回路をレイアウトすること
ユーザの論理設計をロジックデバイスにレイアウトするためのソフトウェアはその設計を実動化するようにハードウェアをプログラムするひと組のコマンドにその設計を変換する一連のステップを行う。それらステップには通常次のステップが含まれる。
1)設計値の入力:ユーザ回路の図形表示の概略的捕捉、または実現すべき機能とそれら機能間のつながりとを記述したハードウェア記述言語の読取り。設計値の入力には状態とそれら状態間で実動化すべき遷移とのリストの読取りが含まれることもある。
2)機能の検証とロジック合成:機能の検証はユーザの設計が論理的な意味を成しているかどうかを見るための点検を含む(例えば出力を共通接続にすることを避ける)。ロジック合成は、設計値の入力時に入力された情報を、表現の単純化、式の中の項数の削減、および設計値の実動化またはユーザ設計の最適化に必要な面積の削減のために書き換えることを伴うロジック最適化を含む。
3)マッピング:マッピングはユーザの論理ゲートをユニット、すなわち各々を論理デバイスの対応ユニット(例えばジリンクス社FPGA関数発生器)で実動化できるユニットにグループ分けすることを含む。
4)初期配置:論理設計のユニットは各々が論理デバイスの特定のユニット(例えばジリンクス社FPGA論理ブロック)に割り当てられた複数の部分に分割される。このステップには、ベル・システム・テクニカル・ジャーナル1970年2月号第291−307頁所載のビー.ダブリュー.カーニハン(B.W.Kernighan)およびエス.リン(S.Lin)著の論文「図形分割のための効率的な発見的手法」に説明されているような最小値カットアルゴリズム、またはアイ・イー・イー・イー・トランスアクションズ・オン・サーキッツ・アンド・システムズ 第CAS−26巻第6号1979年6月3日付所載のニール アール.クイン ジュニア(Neil R. Quinn, Jr.)およびメルビン エイ.ブロイアー(Mlvin A. Breuer)著の論文「印刷配線基板のための力の向きの部品配置方法」に説明されているようなばね弛緩アルゴリズムを用いることができる。
5)配置改善:初期配置は接続全体に必要な配線の全長を最小化するなど配置の品質のある尺度を改善するように調整する。
6)経路:相互接続線は、ユニットの入力線および出力線の各々をユーザの設計における接続、すなわちユーザのロジックの互いに分割された部分をつなぐ接続に対応させて接続するように選択する。一般には、信号源論理ブロックから供給先論理ブロックへの信号の接続ルートは、それら信号源および供給先の間の連続的接続を形成するように一度に1ステップずつセグメントを追加して選択する。
7)評価および実行可能な対話的改善:全部のロジックをデバイスに配置してそれらロジックを相互接続するすべての線を形成するソフトウェアの性能を評価し、ユーザのロジックの実動化におけるデバイス全体の速さも併せて評価する。通常、ユーザは、一つのチップ全体のロジックの処理を最小の時間内(または特定の時間内)に行うこと、または最大クロック速度でロジックデバイスを動作させることを求める。いずれの場合も性能はもっとも遅い信号経路の始点から終点まで信号を伝達するのに要する時間で評価する。信号経路は通常一つまたはそれ以上の論理ブロックを通るのでいくつかの接続点を含み得る。
8)デバイスプログラミング:最後に、上述のステップが首尾よく進んだ場合は、形成すべき接続および形成すべきでない接続に対応するビットストリームで、上述のステップで決定されたユーザの設計を実動化するようにデバイスを回路配置する。このビットストリームは、デバイスがSRAM FPGAの場合はそのデバイスにロードされ、デバイスがアンチヒューズFPGAの場合はプログラム対象のアンチヒューズへのアドレスに用いられ、デバイスがマスクプログラマブルASICの場合はマスクのパターン形成に用いられ、あるいはそのデバイスが所期の機能を発揮するようにデバイス内に特定の接続を形成するのに適宜用いられる。
結合形成のためのサーチアルゴリズム
信号経路形成の問題は集積回路FPGA内の配線の経路形成だけでなく、多数の応用分野で生じており、これまで広範囲にわたり検討されてきた。信号供給源から供給先に至る利用可能な接続の発見のために多数のサーチアルゴリズムが開発されてきた。それらの中には、深さ先行サーチ、すなわち信号経路へのセグメントの付加を何らかの障害により前進が止まるまで行い供給先への到達まで代替的経路を試みるサーチが含まれる。もう一つの例としては、幅先行サーチがあり、そのサーチでは信号供給源から延びるあらゆる実現可能なセグメントをまず試み、次に供給先への到達まであらゆる実現可能な第2のセグメントを試みる。より複雑なアルゴリズムでは供給先についての方向情報を用い、もっとも見込みのある方向をまずサーチする。これらのアルゴリズムのいずれによっても、信号供給先への経路は、それが存在すれば結局見出される。複数の点の間の経路を選択するのに有用ないくつかの方法は、カリフォルニア州パロアルト所在のティオガ(Tioga)出版社から1980年に発行されたニルス ジェイ.ニルスソン(Nils J. Nilsson)の著者「人工知能の原理」およびカルフォルニア州ロスアルトス所在のウィリアム カウフマン社(William Kaufmann, Inc.)・カリフォルニア州スタンフォード所在のヒューリステック プレス社(HeurisTech Press)から1981年に発行されたアブロン バー(Avron Barr)およびエイ.フィーゲンバウム(A. Feigenbaum)の編著書「人工知能ハンドブック」にも説明されている。
接続を見出す方法は信号供給源から供給先に経路付与すべき信号の各々について通常繰り返される。経路付与があとになるほど空きの経路資源が少なくなり、接続が長く非効率的になり得る。接続付与の総体的結果は、一般に、どの接続に最初に経路付与したかということと、各接続の経路付与に用いたアルゴリズムとに左右される。
レジスタ間の信号授受
通常の論理設計はクロック応動レジスタ(フリップフロップ)とクロック非応動の組合せおよび算術演算機能との両方を用いる。デバイス全体のタイミング(どれほど速くそのデバイスをクロック駆動できるか)によって、信号が一つのクロック応動レジスタの出力から次段のクロック応動レジスタにどれほど速く伝搬され得るかが決まってくる。この信号伝搬速度は、一つのレジスタの出力ともう一つのレジスタの入力との間で処理されるべきいずれかの論理がどれほど迅速にその出力を生ずるかと、信号が接続すなわち一つのレジスタからもう一つのレジスタへの経路に沿って配置した組合せ論理ブロックを接続する配線セグメントおよびノードを通じてどれほど迅速に経路付与され得るかとによって定まる。
異なる信号転送には、設計がレジスタの制御に多重クロックを用いている場合は、異なるタイミング要求があり得る。
デバイス性能の改善−臨界経路
使用された経路の各々の時間遅延は経路が選択され次第計算できる。ユーザは一つのクロック応動レジスタと次のレジスタとの間の信号伝搬の最大遅延を最小に抑えることに関心がある。すなわちこの最大遅延によって、ユーザの機能の実動化においてデバイスに使用可能な最大クロック速度が定まるからである。したがって、通常ユーザはレジスタ間経路タイミングを問題にする。性能上の要求は、一つのレジスタから何らかの組合せロジックを経て次のレジスタに結果を転送するのに要する時間で特定することが多い。通常一つの経路が最低速度の経路になり、臨界経路と呼ばれる。この臨界経路は全体のクロック速度を制限し、したがってデバイスの動作速度を制限する。デバイス全体の速度を改善するにはこの臨界経路による遅延を減らさなければならない。したがって、この臨界経路の遅延の低減に努力が傾注されてきた。この問題について広範囲にわたる努力がなされてきた。
全体配置の分析対各素子についての決定
上述のステップの各々はその設計の各部分についての多様な細部決定を伴う。特定のステップの各々は特定のアルゴリズムで実動化される。例えば、ロジックデバイス内のどの論理ブロックでユーザ設計(分割および配置)のどの論理ゲートを実動化するかの決定をする必要があり、また、物理的デバイス内のどの配線で信号の各々を一つのブロックから次のブロックに伝達するかを決定する必要がある。これら個々の決定は、全体のデバイス性能を考慮に入れてないアルゴリズムで逐次的に通常行われる。ある段階でそれら決定の結果を総合的見地から評価しなければならない。この発明はこの総合的見地に関し、個々の上記ステップが高い総合的評価をもたらすことを確実にすることに関する。
配置および経路付与ツール
初期配置および経路付与分析は性能の総合的評価の結果を接続への重みの調節によって用いることを試み、経路付与の優先順位づけおよび品質の尺度の計算のためにそれら重みを用いた。プロジーディングズ・オブ・トウェンティファースト・デザイン・オートメーション・コンファレンス(Proc. 21st Design Automation Conference)第278−281頁(1984年)所載のエイ.イー.ダンロップ(A.E.Dunlop)、ヴィ.ディー.アグラワル(V.D.Agrawal)、およびディー.エヌ.ドイチュ(D.N.Deutsch)著の論文「臨界経路重みづけを用いたチップレイアウト最適化」、およびプロシーディングス・オブ・トウェンティセカンド・デザイン・オートメーション・コンファレンス(Proc. 22nd Design Automation Conference)第124−130頁(1985年)所載のエム.バーンスタイン(M.Bernstein)およびエム.エヌ.ユーセフ(M. N. Youssef)著の論文「タイミングの影響によるレイアウト設計」記載の手法は、接続についての遅延概算値を使用してタイミング分析を行い、分割時には臨界経路上の信号により大きい重みをつけ、経路付与時にはより高い優先順位を与えた。VLSIシステムズ デザイン(VLSI Systems Design)1986年5月号第63−73頁所載のエス.テイグ(S.Teig)、アール.エル.スミス(R.L.Smith)およびジェイ.シートン(J. Seaton)著の論文「セル型集積回路のタイミング駆動によるレイアウト」はタイミング分析と配置・経路ステップとの相互作用の重要性を強調した。しかし、臨界経路に重みを割り当てる方法は記載されていない。上記デイグほかの論文はタイミングと位置づけおよび経路付与とをいかに関連づけるかについて一般的に述べているだけである。プロシーディングズ・オブ・アイシーシーエイディー’89(Proc ICCAD '89)、第94−97頁(1989年)所載のエム.マレク−サドフスカ(M. Marek-Sadowska)およびエス.ピー.リン(S. P. Lin)著の論文「セル型ICのタイミング駆動によるレイアウト」は初期配置のための反復的最小値カットアルゴリズム、すなわち非臨界接続にはその弛緩と反比例した重みを与えるアルゴリズムを記載している。弛緩とは転送の完了までの許容時間とその転送に費された時間との差である。臨界経路(弛緩が小さいまたは負である経路)には非臨界経路よりもわずかに大きい重みを与えてある。プロシーディングス・オブ,ユーローピアン・デザイン・オートメーション・コンファレンス(Proc. European Design Automation Conference)第317−321頁(1980年)所載のジェイ.ガーバーズ(J.Gerbers)、ビー.コーテ(B. Korte)、エッチ.ジェイ.プロメル(H.J.Promel)、イー.シャイエツケ(E. Scheietzke)、およびエイ.シュテーガー(A. Steger)著の論文「経路付与情報およびタイミング情報に基づくVLSI配置」では、再重みづけ手法、すなわち経路付与接続の重みをその接続が臨界経路上にあるとわかった段階で1だけ単純に増加させる手法を用いて、反復的分割および近似的経路付与(チップの経路付与を割り当てるべき概括的領域の選択であって、用いるべき特定の線の選択ではない)により性能の改善を得ている。この変動していく重みが分割形成の損失と経路付与順序に影響を及ぼす。
これらの重み調整方法において生ずる問題は解が発振し得ることである。臨界経路の改善に伴って他の経路が臨界経路になり、2回目の反復でも1回目の反復以上のよい結果は得られないかもしれない。すなわち、重み調整方法は一般に単調によい結果に進むのではない。
レイアウトの小変更後にタイミング分析を繰り返す動的方法
もう一つの手法は、レイアウト(レイアウトとはユーザの概略図の中のロジック、レジスタ、接続線のすべてを物理的デバイスの対応素子に割り当てる総体的機能をいい、マッピング、配置、および経路付与を含む)をデバイス性能(経路遅延の原因となる)の総体的分析とレイアウト過程(個々の素子および線の位置の選択)との間の頻繁な対話によって行うやり方である。プロシーディングス・オブ・トウェンティセブンス・デザイン・オートメーション・コンファレンス(Proc. 27th Design Automation Conference)第84−89頁(1990年)所載のダブリュウ.イー.ドナス(W.E.Donath)、アール.ジェイ.ノーマン(R.J.Norman)、ビー.ケイ.アグラワル(B.K.Agrawal)、エス.イー.ベルロ(S.E.Bello)、(エス.ワイ.ハン(SY.Han)、ジェイ.エム.クルツバーグ(J.M.Kurtzberg)、ピー.ロウィ(P.Lowy)、およびアール.アイ.マクミラン(R.I.McMillan)著の学会論文「全経路遅延を用いたタイミングによる配置」においては、配置進行中の一つまたはいくつかの動きのあとタイミング分析を更新している。配置進行中の経路制約を動的に追跡するために反復分割の各段階でリニアプログラミングを用いており、これはプロシーディングス・オブ・トウェンティシックスス・デザイン・オートメーション・コンファレンス(Proc. 26th Design Automation Conference)第370−375頁(1989年)所載のエム.エイ.ビー.ジャクソン(M.A.B.Jackson)およびイー.エス.クー(E.S.Kuh)著の論文「セル型集積回路の性能駆動回路配置」に記載されるとおりである。これと関連した論文、すなわちプロシーディングス・オブ・アイシーシーエイディ’90(Proc. ICCAD '90)第328−331頁(1990年)所載のエム.エイ.ビー.ジャクソン(M.A.B. Jackson)、エイ.スリニヴァサン(A. Srinivasan)、およびイー.エス.クー(E.S.Kuh)著の論文「性能駆動回路配置用の高速アルゴリズム」およびプロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)、第636−639頁(1991年)所載のエイ.スリニヴァサン(A. Srinivasan)著の論文「小型セル集積回路の性能駆動初期回路配置用のアルゴリズム」は2次のプログラミングを用い、遅延要求または制約の数、すなわち高性能回路配置をより効率的に達成するための論理ブロックの配置の選択において考慮すべきそれら要求および制約の数を削減した。
プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)第620−625頁(1981年)所載のアール.エス.ツェイ(R.S.Tsay)およびジェイ.ケール(J.Koehl)著の論文「回路配置における性能最適化のための分析的回路網重みづけ手法」は接続再重みづけ、すなわちタイミング分析からの入力として個々接続遅延へのひと組の正確な限界値を要する接続再重みづけのための式を提供している。タイミング分析の結果を回路配置および経路付与への指針に変換することは、これまで提案されてきた多数の発見法が示すとおり、重要である。
弛緩
論理設計の一つの接続におけるタイミング要求が満たされずその論理設計のもう一つの接続におけるタイミング要求が余裕時間をもって満たされた場合は、回路素子の位置づけおよび経路の調整を、その余裕ある接続のタイミングを上記要求不充足の接続の高速化のために遅くして結果的にすべての接続および経路が要求を満たすように、行うことが可能であることが多い。この余裕時間を弛緩と呼ぶ。一つの経路の弛緩はR(p)−A(p)と定義される。ここで、R(p)は経路pに沿う伝搬時間の要求値であり、A(p)はその経路pに沿う実際の合計の伝搬時間である。正の弛緩はその接続が余裕時間をもって形成されたことを示す。負の弛緩は時間要求値が満たされなかったことを示す。零に近い(正の)弛緩は時間要求値が辛うじて満たされたことを示す。正の弛緩をもつように経路付与された経路は負の弛緩をもつそれ以外の経路を時間要求充足のために経路変更することがそれによって可能になる場合は、より小さい弛緩値の経路に変更できる。
経路接続のための弛緩計算
通常の回路にはファンイン(回路素子に複数信号が入る)とファンアウト(出力信号が複数の素子に加えられる)との両方がある。アイビーエム・ジャーナル・オブ・リサーチ・アンド ディベロップメント(IBM J. Res. Develop)第26巻第1号第100−108頁(1982年)所載のアール.ビー.ヒッチコック(R.B.Hitchcock)、ジー.エル.スミス(G. L. Smith)およびディー.ディー.チェン(D.D.Cheng)著の論文「コンピュータハードウェアのタイミング分析」は個々の接続の弛緩の計算のしかたを記載している。一つの接続の弛緩、すなわち弛緩(c)は
(1) 弛緩(c)=R(c)−A(c)
で算出される。ここで
R(c)は接続cの出力端における信号のもっとも早い到達時間要求値、
A(c)は接続cの出力端における信号のもっとも遅い到達時間実測値。
この弛緩(c)の計算のために二つのリニア時間計算を行う。図5は、ファンインおよびファンアウトの両方を含み個々の接続を既知の接続遅延および総体的経路要求からいかに決定するかを示す事例を図解している。総体的要求はレジスタR901、R902およびR903への信号印加後30ナノ秒以内に三つの供給先R904、R905、R906に到達することである。この要求は供給先R904、R905およびR906内の数字「30」で示してある。接続遅延は各接続C901乃至C913上の楕円内に示してある。これら接続遅延の数字は接続のセグメントにおける導線の長さに起因する遅延を表わしており、ブロックまたはレジスタ内部における信号の伝搬遅延と信号がレジスタに入力される際の信号スイッチング時間についてのセットアップ遅延とを含む。
上記到達時間実測値A(c)の計算は到達時間既知の点から順方向に(または基準点から順方向)に進む。図6において、到着時間実測値はブロックへの入力に示してある。R901、R902およびR903における到達時間は0ナノ秒として示してある。接続における遅延がこれら時間に加算され後段のブロックへの入力における到着時間が得られる。単純化のために、ブロック内の遅延はそのブロックの出力側接続の遅延に算入してある。一つのブロックにいくつかの信号を印加する場合は、もっとも遅い到達時間を用いなければならない。すなわち、そのブロックからの出力信号は最後の入力信号の到着まで有効信号にならないからである。例えば、接続C902、C903およびC904のそれぞれの接続遅延3、4および2ナノ秒はブロックB902への信号到着時点をそれぞれ3、4および2とする。これらのうちもっとも遅い4ナノ秒の時点が、接続C908への出力端子に出力信号が生じて入力信号をブロックB904に8ナノ秒後に到達させる時点となる。このようにして遅延は回路を通じて順方向に伝搬される。
図7に示すとおり、要求されている到達時間R(c)は信号の到達すべきレジスタから逆方向に伝搬される。接続C909における7ナノ秒の接続遅延は、信号が供給先R904に30ナノ秒までに到達するには23ナノ秒までにR901から出力されなければならないことを意味する。供給先R905要求および接続C910から派生するもう1つの要求は、信号が24ナノ秒までにR901から出て30ナノ秒までに供給先R905に到達しなければならないことである。しかし、供給先R904はより早い要求到達時間を課している。一方、R901には、R905を遅延3ナノ秒の接続C912、遅延4ナノ秒のC908および遅延3ナノ秒のC902との組合せにより20ナノ秒のさらに早い到達時間要求が課される。したがって、30ナノ秒までに信号がR904、R905およびR906に到達するという要求を満たすためのR901からの出力時点は20ナノ秒までである。到達時間要求値R(c)の計算はその要求の特定された点から接続を通って逆向きに伝搬する。
いずれの接続においても、その接続への到達時間のもっとも遅い実測値をその接続へのもっとも早い到着時間要求値から減算することによって弛緩を算出することが可能である。図8は接続の各々についての弛緩S、すなわち到達時間実測値をその接続に順方向に伝搬し到達時間要求値をその接続に逆方向に伝搬して決定した弛緩Sを示す。
零弛緩アルゴリズム
プロシーディングス・オブ・アイシーシーエイディ’87(Proc. ICCAD '87)第88−91頁(1987年)所載のピー.エス.ハウグ(P.S.Hauge)、アール.ネア(R.Nair)、イー.ジェイ.ヨッファ(E.J.Yoffa)著の論文「予測可能な性能のための回路配置」は零弛緩アルゴリズム(ZSA)を導入した。このアルゴリズムは、合計がユーザの要求値以下の接続遅延の初期組合せを設定し、これら初期接続遅延に基づき弛緩を算出することによって始まる。これら初期遅延は接続遅延限界値、すなわち利用可能な弛緩を使い切ってその限界値に等しい接続遅延を有するいずれかの経路がちょうどユーザの要求に合うようになる値に置換する。これら接続遅延限界値は次に配置・経路付与ツールによって回路素子および接続のための受入れ可能な位置および経路の選択に使われる。これら限界値によって、上記配置・経路付与ツールは上記位置および経路の選択をより厳しい要求で可能になるよりは容易に方向づけされるが、各接続がその接続遅延限界値に達する場合は全体としてタイミング要求が満たされることを保証する。零弛緩アルゴリズムツールは、一つの経路pの弛緩をその経路pにある個々の接続に分散させることによって限界値を決定するのに経路弛緩情報を用いる。ハウグほか(Haug et al)によると、弛緩は経路沿いの接続に一様に分散させる。代わりに、プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス(Proc. 28th Design Automation Conference)第626−631頁(1991年)所載のダブリュウ.ケイ.ルーク(W.K.Luk)著の論文「タイミング駆動レイアウトのための高速物理的制約発生器」に記載されるとおり、たとえば弛緩はファンアウトあたりの静電容量またはファンアウトあたりの静電容量変化などの物理的尺度に比例して分散させる。
これら遅延限界値はそれを全面的に採り入れればユーザの要求が満たされる旨の示唆である。他の限界値が余地を残して満たされていればいくつかの示唆された遅延限界値が満杯になっていない場合でもユーザの要求は満たされよう。
プロシーディングズ・オブ・アイシーシーエイディー’90(Proc ICCAD '90)第24−27頁(1990年)所載のエッチ.ユーセフ(H.Youssef)およびイー・シュラゴヴィッツ(E.Shragowitz)著の論文「正しい性能のためのタイミング制約」においては、経路の弛緩は次式に比例してその接続に分散されている、すなわち
(2) 重み(c)=Lf(c)*AcL(c)
ここで
LF(c)は接続cの供給源ピン(論理ブロック出力)上の単位負荷(ファンアウト)あたりの遅延、
AcL(c)は負荷を接続cに接続することにより生ずる静電容量である。このように、ユーセフおよびシュラゴヴィッツは弛緩を経路の各部にその経路のその部分で生じそうな遅延に従って分散させることを試みている。
一つの経路の弛緩をその経路内の接続に分散させる対話式の手順が上述の論文に記載されている。全弛緩のうち接続cに分配されるべき部分を表わすf(c)は
(3) f(c)=重み(c)/最大[重み(p)]
ここで
重み(c)は上述の式(2)から定まる接続cの重みであり、
重み(p)は経路pの重みであり経路p沿いの全ての接続重みの合計であり、
最大[重み(p)]は接続cを含むそれら経路の最大重み(p)である。
各反復において、接続の許容可能な遅延U(c)はf(c)*弛緩(c)だけ増加する。
したがって、
(4) U(c)new=U(c)old+(f(c)*弛緩(c))
図9は古い遅延U(c)oldへのf(c)*弛緩(c)の値の加算に基づく新しい遅延限界値U(c)newの計算を示す。部分f(c)の式は一つの経路の弛緩が負になるほどに大きい値の弛緩を分散させることはない。
従来の方法は接続遅延のどの値が現実的であるかについての情報を利用していない。例えば、初期遅延が(ユーセフおよびシュラゴヴィッツの示唆するとおり)零であると仮定すれば、いくつかの示唆された遅延限界値U(c)は小さすぎて実現できない。一方、初期遅延限界値が(上記ハウグほかの示唆するとおり)「物理的に妥当」であると仮定すれば、示唆された遅延限界値は不必要に大きいであろう。いずれにしても遅延限界示唆値はそれら限界値を用いるレイアウトツールのための最良の指標を提供するものではない。
必要なものは接続遅延についての示唆された上限値の最適化した組合せである。
発明の概要
部分的にでき上がったレイアウトがあれば、そのレイアウトの完成版で各遅延限界の示唆値U(c)が得られるはずである。したがって、限界値には達成可能性の高い値を選択しなければならない。この発明は下側境界遅延に関する情報に基づく遅延限界値を示唆し、その示唆した遅延限界値における反復的改良をより早い段階のレイアウトにおいて達成した遅延の検査によって達成する。
この発明はロジックデバイス上へのユーザ論理設計のレイアウト、すなわちレイアウトツール用の指針として使用できる遅延限界値を経路の各接続につき示唆することによって特定のタイミング制約に合致したレイアウトを達成する。この発明によると、遅延限界示唆値をレイアウトツール(分割、配置、および経路付与アルゴリズム)用に算出中に遅延限界の初期値が下側の境界遅延、すなわち接続用に最高速の経路を用いて達成可能な境界遅延に設定される。遅延限界値算出用の初期値を下側境界値に設定することによって、達成可能な速さを上まわる速さの遅延限界値が示唆されないことを確実にする。
総体的達成可能性の評価のためにこの発明は既に試みたレイアウトで達成ずみの遅延についての情報を用いる。この発明によると、レイアウトずみの設計品の性能を向上させる際に、下側境界遅延限界値と、反復的タイミング改善用に遅延限界の示唆値を算出した際に達成ずみの遅延値との両方を用いる。好適な実施例においては、遅延の示唆値は達成ずみの遅延と下側境界遅延との間の差の一部であって、その一部f(c)は次式から算出される。すなわち、
f(c)=重み(c)/最大[重み(p)]
ここで、
重み(c)=D(c)-L(c)
D(c)=接続cについての遅延の推定値または達成値
L(c)=接続cについて達成可能な下側境界遅延
重み(p)=経路p上の全接続cについての■重み(c)
最大[重み(p)]=接続cを用いた最低速の経路上の重み(p)
このように遅延限界示唆値は達成ずみの遅延と達成可能な低い境界遅延との差に比例して調整する。数値改善の期間中に負の弛緩を有する接続に対する制限は下がるように、また正の弛緩を有する接続に対する制限は上がるようにそれぞれ調整する。このように、反復的数値改善のためにレイアウトツールに示唆された限界値は、個々の接続へのより厳しい限界値の充足の困難度によって接続遅延を割り当てることによって厳しい経路制約の充足を試みる。
【図面の簡単な説明】
図1はジリンクス社の従来技術によるFPGA構造を示す。
図2Aおよび2Bは図1におけるスイッチボックスSBXの単純な実動化を示す。
図3は融通性のより高いスイッチボックスSBXを西側配線に利用可能な接続とともに示す。
図4Aはジリンクス社FPGAデバイスに用いられている論理ブロックを示す。
図5は特定の遅延を有する接続により相互接続された論理素子またはレジスタを有する回路設計例を示す。
図6は既知の点から順方向への到達時間実測値の伝搬を示す。
図7は供給先から逆方向への到達時間要求値の伝搬を示す。
図8は図6および7の到達時間実測値および要求値から定まる各接続での弛緩を示す。
図9は零弛緩アルゴリズムによる弛緩分散を示す。
図10はこの発明の弛緩分散方法を用いたレイアウトのステップの流れ図である。
図11はこの発明による限界値調整アルゴリズムに用いるステップの流れ図である。
図12Aは論理設計の一部である回路網例である。
図12Bは図12Aの回路網例における各接続に付加された分数乗算器である。
図12Cは図12Bの分数に経路タイミング制約を乗じて決定した上記回路網内の各接続についての遅延上限値を示す。
図12Dは図12Aの回路網についての下側境界接続遅延を示す。
図12Eはレイアウト完成後に図12Aの回路網に達成される遅延を示す。
図12Fは図12Dおよび12Eの下側境界遅延と達成ずみの遅延とを用いて算出した分数f(c)を示す。
図12Gは図12Aの回路網における接続についての改訂後の遅延上限値、すなわちより厳しい経路制約が適用され、図12Fの分数f(c)の算出のために図12Dおよび12Eからの情報を用いて新しい遅延限界値が決定されたのちの遅延上限値を示す。
図13は図10のステップ104で行われるステップをより詳細に示す。
図14はFPGAデバイスにおける経路付与の一回目通過計算で行われるステップを示す。
図15はFPGAデバイスにおける経路付与の反復改善で行われるステップを示す。
図16は初期配置の期間中に用いうる最小値カット分割アルゴリズムを示すための問題例を示す。
図17Aは初期配置の期間中に分割線を横断しない接続上の実際の遅延を概算する際の仮の配置を表わす。図17Bは初期配置の期間中に分割線を横断する接続上の実際の遅延を概算する際の仮の配置を示す。
図18は初期配置の期間中に下側境界遅延を概算する際の仮の配置を示す。
図19は配置改善の期間中に循環すべき候補素子のサブセットを示す。
図20は配置改善の期間中に用いられる損失関数を示す。
好適な実施例の詳細な説明
この発明の方法は初期レイアウトステップの決定の進行中およびこの初期レイアウトに対する反復的改善の表現明確化の進行中の両方で動作する。この発明の新規な特徴は下側境界達成可能な遅延の考慮と新しい遅延限界値計算とを含む。この発明の経路分析方法は、論理素子を論理ブロック内に初期配置する期間中、配置期間中、および論理素子間の接続への経路付与の期間中に用いるのが好ましい。
経路分析とレイアウトツールとの間の反復対話
図10は反復的改善を達成するのにこの発明が用いられるステップの流れを示す。これらステップの流れは、論理の分割を選択しまたはユーザ設計の素子用の位置または経路を選択するレイアウトツールと、全体のレイアウトを時間(動作)で概算し上記レイアウトツールの用いるべき遅延限界値を示唆する経路分析ツールとの間で一方から他方に前後に反復する。初期状態では、遅延を概算するステップ102は、レイアウトツールを少し動作させたあと、たとえば最小値カット分割アルゴリズムによる最初の切分けのあと、またはユーザ設計の一部または全部の経路付与のあと動作させる。ステップ103では、この発明の経路分析ツールが概算した(または実際の)遅延をユーザの特定したタイミング要求と比較し、その結果得られる弛緩を計算する。図5乃至9に関連して上に述べた従来のヒッチコックの方法をこの接続弛緩の計算に用いるのが好ましい。これらの弛緩から、ステップ104において、この設計における各接続につき遅延限界の示唆値を計算するために新規な方法を用いる。これらの限界値は次にステップ111においてレイアウトツールが各位置または経路を上記示唆値に合わせるように改善する試みにおいて用いる。ステップ111が完了すると、レイアウトツールはステップ102に戻り、新しい接続についての新しい遅延値を計算する。ステップ103および104の経路分析過程は再び繰り返され、新しい弛緩が算出され、新しい遅延限界値が示唆される。
ステップ103はステップ102からの接続遅延を受けて経路、すなわち通常いくつかの接続といくつかの論理ブロックとを含む経路の遅延を概算する。好適な方法では四つの型の経路と関連の遅延とを考慮する。すなわち、
パッド・パッド間:信号が入力パッドに入力された時点から介在レジスタを含まない経路経由で出力パッドに到達するまでの時間遅延
パッド・起動間:入力パッドへの入力からレジスタへの入力までの時間プラス切換え信号の電圧レベルの安定化に要する付加的時間の時間遅延、
クロック・パッド間:レジスタ出力発生から出力パッドへの出力までの時間プラスクロックパルス切換え時点とレジスタ出力に定常信号が生ずる時点との間の時間遅延、および
レジスタ・レジスタ間:一つのレジスタの出力発生から次のレジスタへの入力までの時間プラスクロックパルスの切換えとレジスタ出力に出力が生ずる時点との間の時間プラス信号のレジスタ入力への到達時点から切換え信号の電圧レベルの定常化までの時間の時間遅延
の四つの型である。すなわち、内部遅延時間を配線セグメント遅延時間と論理ブロック遅延時間に加えて経路の合計遅延を概算する。この計算はレイアウトツールによって行われる。レイアウト決定用のステップについての従来技術の説明で上に述べたとおり、パーティショナーが全体設計を論理ブロックで実動化すべき論理素子に分割し、プレーサーがそれら論理素子を論理ブロックに位置づけし、ルーターが接続・論理ブロック間を経路付与する配線を選択する。各ツールはその活動の結果生ずる接続遅延を概算する手段を含むのが好ましい。
下側境界
この発明は遅延限界示唆値を計算するステップ104に関し、その詳細を次に述べる。遅延限界示唆値はレイアウトツールにステップ111、すなわち論理ブロック間の個々の接続を扱い経路の総遅延の概算は行わないステップ111におけるレイアウト修正の指針として供給される。各接続についての下側境界遅延の概算値は、ステップ104において、設計者の入力する値から、または好ましくは、接続端点の座標の関数として使用されるチップについての下側境界遅延の表を作成することによって決定される。これら下側境界遅延は各接続についての遅延限界示唆値の計算において用いられる。遅延限界示唆値は、例えば、レイアウトの下記の段階、すなわち初期配置、配置改善、および経路付与の段階で用いることができる。
この発明を用いる他のステップの場合と同様に、利用可能な下側境界接続遅延の最良値(初期配置および配置改善期間中は正確な下側境界は不明である)がステップ104で遅延境界示唆値の計算に使われる。
限界値調整アルゴリズム
図11は図10のステップ104で分割、配置および経路付与用のひと組の遅延限界示唆値を計算するのに用いる経路分析ツールの流れ図である。下側境界接続遅延は上限値が下側限界遅延以下に設定されないことを確実にするために上側限界接続遅延U(c)を設定する際に用いる。この下側境界を考慮しなければ不具合な上限U(c)<L(c)という結果になり得る。この問題はタイミングの制約を満足するレイアウトの存在する設計でも起こる。
下側境界接続遅延L(c)は限界値調整アルゴリズムへの入力I(c)として用いる。
ステップ104において、この発明は弛緩を反復分散する従来技術の方法を一般化した限界値調整アルゴリズムを用いる。図11はこの限界値調整アルゴリズムの実動化に用いるステップを示す。ユーセフおよびシュラゴヴィッツの示すとおり、ステップ205において、各接続についてf(c)と接続cの現在の弛緩との積をその接続cにおける遅延示唆値に加算する。しかし、f(c)は従来技術で立てられた式によって計算されるとは限らない。図11の限界値調整アルゴリズムで用いられている項は次のとおりである。
U(c)=接続cについての遅延限界示唆値
I(c)=接続cについての初期遅延
弛緩(c,U)=ひと組の遅延Uを受けた接続cにおける弛緩
f(c)=弛緩を分散させるための乗算分数
L(c)=下側境界で利用可能な接続遅延
ステップ201に示すとおり、限界値調整アルゴリズムへの入力は次のとおりである。
網リスト、すなわち互いに接続すべき論理ブロック入力および出力のリスト、タイミング制約(クロック速度またはパッケージピン間タイミングを含み得る)、ブロック遅延、すなわち各論理ブロック内部での遅延、レジスタについては起動遅延およびクロック・出力間遅延
各接続について
初期遅延I(c)、すなわちこの発明では下側境界L(c)に設定してある値、
乗算分数f(c)、すなわち接続弛緩の何分の一をその接続に加えるべきかを表わす値
ステップ202において、この限界値調整アルゴリズムは各接続cについて下側境界L(c)に設定したU(c)=I(c)を初期化する。ステップ203において、その接続についての弛緩、すなわち弛緩(c,U)を計算する。ステップ204に示すとおり、弛緩が十分に零に近ければステップ207に進み遅延限界値を出力する。そうでない場合は、ステップ205に示すとおり、弛緩は次式(5)を用いて各接続に分散される、すなわち、
(5) U(c)new=U(c)+(f(c)*弛緩(c,U))
図11に示すとおり、弛緩を計算し分散させるステップ203および205は未分散の弛緩が零に十分に近づくまで繰り返される。最終的にステップ207に到達し遅延限界値がレイアウトツールに供給され後続の反復に供される。
図12Aは三つのレジスタR1、R2およびR3、組合せブロックB1およびB2、並びにこれらブロックおよびレジスタを相互接続する接続C1乃至C4を含む論理設計のごく一部分の例を示す。レジスタR1からの出力信号は接続C1を経てブロックB1に伝達される。ブロックB1の出力は接続C2経由でレジスタR2に、また接続C3経由でブロックB2にファンアウトし、ブロックB2は出力を接続C4経由でレジスタR3に供給する。
図12Bは次式(6)を用いて弛緩を分散させた図12Aの回路の例を示す。すなわち、
(6) f(c)=1/接続cを通る最長の経路
図12Bに示すとおり、R1からR3への経路は三つの接続C1、C3およびC4を用いる。R2へのより短い経路は二つの接続C1およびC2を用いる。最長の経路が三つの接続を用いているので、この最長の経路にある各接続には分散1/3を割り当てる。R1からR2への経路の用いる接続は二つだけであるが、この経路にある接続C1およびC2の各々には分数1/2を割り当てることが考えられよう。しかし、接続C1を通る最大長さの経路は三つの接続を有するのでf(c1)は小さいほうの分数1/3を優位とする。
レジスタ転送24ナノ秒以内という目標を犠牲にし遅延を零に初期化した場合は、(すなわちこの発明によらない場合は)図12Bの分数は図12Cに示した遅延限界値を生ずる。
レイアウトツールにより達成される遅延
ステップ104(図10)の経路分析によりひと組の遅延限界示唆値が発生されたのち、これら限界値はレイアウトツールに供給され、このツールがステップ111においてそれら限界値に合うようにレイアウトを変更する。
図12Eは図12Cで供給された限界値に応答して実際に得られたひと組の遅延を示す。接続C1には実際の遅延4ナノ秒が得られ、接続C2には実際の遅延20ナノ秒が得られ、接続C3およびC4には遅延8ナノ秒および12ナノ秒がそれぞれ得られた。すなわち上記経路の両方について限界値24ナノ秒が達成された。接続C2についての限界の示唆値U(C2)は満たされてなくても全体の目標値24ナノ秒が達成されていることに注目されたい。これは、限界示唆値U(c)を目標とするレイアウトツールがその示唆値に合致しなくとも中途で終了せず解の終結まで続行することによる。また、接続C1についての限界値は余地を残して満たされているので、総体的目標は満たされている。
遅延限界値についての下側境界
遅延限界値が零になり得ると仮定するのは非現実的である。二つのレジスタ間の最短の経路はチップ上での二つのレジスタの間の物理的分離およびチップ上にある経路付与セグメントによって定まる下側境界遅延を有する。接続すべきブロックが異なった物理的位置に配置された場合(すなわち、配置を変更した場合)、下側境界を調整できる。しかし、配置変更のない経路変更については、その接続については下側境界は一定である。初期遅延零を用いて限界示唆値を計算するのに比べて、弛緩割当ての改善はこれら下側境界遅延から始めてそれら下側境界値に弛緩の分数を加算することによって達成できる。また、下側境界遅延の組を用いた分析がユーザ指定のタイミング制約を満たせないことを示した場合は、そのタイミング制約はいかなる経路形状によっても満たされ得ないことの確かな指標となる。下側境界遅延とタイミング要求との組合せは経路付与に努力を払う前の配置の評価に使うことができる。配置のために経路付与が満足すべきものになり得ず、タイミング制約が決定的に重要である場合は、経路付与を首尾よく進める可能性を与えるために配置を変更しなければならない。
達成ずみの遅延と下側境界との差を用いた反復改善
初期レイアウト計算の完了ののちは経路遅延合計と対応の弛緩とは概算できる。経路遅延のある部分を改善するために反復を行うのが望ましい。例えばクロック速度の25%上昇が求められ得る。図12Dに示すような下側境界遅延を用いた場合は、これら下側境界値は性能改善を試みる際に考慮に入れ得る。
この発明によると、弛緩はより高い標準の達成の困難度に応じて分散される。接続遅延の残余の改善は達成可能な最小の遅延と達成ずみの遅延との間の差で測る。いくつかのベンチマーク試験で好成績を挙げた遅延削除の式は遅延許容誤差を差D(c)−L(c)に比例する量だけ減らすことである。ここで、D(c)はその接続で達成された遅延であり、L(c)はその接続について達成可能な下側境界値である。すなわち、式(3)でf(c)の計算に使われる重みの式は
(7) 重み(c)=D(c)−L(c)
式(3)をここに再掲すると
(3) f(c)=重み(c)/最大[重み(p)]
式(7)の重み関数を式(3)で用いると、新しい遅延限界値についての式(5)の計算は
(5) U(c)new=U(c)old+(f(c)*弛緩(c,U))
となり、達成ずみの弛緩と下側境界遅延との両方を用いる。従来技術の研究者らが考慮したその他の重み関数と違って、式(7)の重み関数はレイアウトの現在の状態によって定まり、したがって達成ずみのものについての知識を利用している。式(7)の重み関数は一つの接続で達成ずみの遅延とその下側境界との差であるので、それはその接続の最大の改善可能性に関係している。したがって、タイミング改善に努力が払われれば、上限値U(c)が値を設定しその値によって各遅延はその改善可能性に比例するように改善を求められる。
図13はある設計のタイミングの改善に用いた図10のステップ103および104の流れ図を示す。図13のフロー図を図12D、12Eおよび12Fの例に関連して述べる。レイアウトずみの設計のタイミングの反復的改善を試みる場合は、第1のステップはその経路の遅延についての新しい目標を設定することである。図12D−12Fの例では、その目標は24ナノ秒の遅延を25%減らして18ナノ秒にすることである。弛緩は達成ずみの遅延と要求された遅延との差であるから、初めは負になる弛緩もあることは明らかである。図12D−12Fの例では、弛緩は新しい要求値に対して初めは全部負である。例えば、接続C2では達成ずみの遅延は20ナノ秒であり接続C1では達成ずみの遅延は4ナノ秒である。新しい目標は合計18ナノ秒である。すなわち、接続C1およびC2についてステップ103で計算された弛緩は18−24=−6である。接続C3およびC4についての弛緩も−6である。この発明の新規な特徴として、ステップ107において新しい遅延限界値U(c)newを値U(c)old+f(c)*弛緩(c,U)と下側境界値L(c)との大きい方に設定することにより、下側境界値を侵すことなく負の弛緩は分散される。すなわち、遅延限界値が低減されるので、達成可能値以下に低減される遅延限界値はない。図12Fに示した分数f(c)は、接続の重みを上述のとおり式(7)から定めた式(3)で計算する。図12Fおよび12Gにおいて、接続C1の達成ずみの遅延4ナノ秒マイナス下側境界2ナノ秒から分数f(C1)は2/12となり遅延限界示唆値は3ナノ秒となる。接続C2においては達成遅延値20ナノ秒および下側限界値10ナノ秒となり分数f(C2)は10/12となり遅延限界示唆値は15ナノ秒となる。同様の計算を経路C3およびC4について行う。全体としての遅延の25%低減を複数の接続に25%低減として一様に分散するのではないことに注目されたい。これは、下側境界遅延が一様でなかったことによる。図13は負の弛緩の分散のあとで正の弛緩の分散がステップ109で図12C関連の上述の説明にあるのと同じ方法で行われる。
FPGA経路付与への応用
この発明の好適な実施例はFPGA構造において次の特徴を備える経路付与ツールに関連して信号を経路付与するのに用いられる。
1)経路付与ツールが各接続cにつきその示唆値を満たす経路をもしそれがあれば選択することによって遅延限界示唆値U(c)に応答する。
2)どの接続に最初に経路付与するかの決定および経路の選択において、経路付与ツールは、遅延および資源コスト(ある型の配線の数に対する実際に使用された数)の組合せを説明するコスト関数を用いる。経路付与ツールは次の項目に基づいて選択を行う。すなわち、
a)遅延限界示唆値、
b)予定経路の実際の遅延、および
c)接続を形成するのに用いられる配線セグメントの数と種類、
3)経路付与ツールがすべての接続について経路を見出すことを試み、いくつかの経路を見出し得なかった場合はその経路付与ツールは、接続を完結し得る利用不可能な経路を指定し、その経路を利用不可能にしている接続を除去し(はがし取り)、一時的に経路未付与の接続のために経路を見出すことを試みることによって、経路未付与の接続への経路付与を試みる。
この特許出願の譲受人であるジリンクス社は上記規準に合ったXilinx XC 4000系の製品のためのルーターを供給している。この発明は各接続につき上限示唆値を提供する。上記ルーターは上限示唆値のこの組からの指針により、形成デバイスのより高速なタイミング要求の受容能力を高める経路を選択する。
下側境界を用いた初期経路付与解
クロック周期を最小にすることが目標であれば、四つの経路の型(パッド・パッド間、パッド・起動間、クロック・パッド間、およびレジスタ・レジスタ間)の各々につき考えられる最良の合計経路遅延を接続はすべて最高速の経路上にあると仮定して決定し、一回目の反復には上記最高速の合計経路遅延などには厳しくない目標を選択することが可能である。ロジックデバイス内で配置した論理設計に経路付与するのに用いる場合は、特別の資源を要する接続は最初に経路付与する。それ以外の接続は下側境界遅延の許容可能な遅延に対する比の減少する順に、すなわちより厳しい限界値をもつ接続を初めに経路付与するように経路付与される。二回目の反復には要求はより厳しくされる。
より詳細に述べると、図14に示すとおり、ステップ141において、経路分析器(図10のステップ103および104を行う)は下側境界経路遅延L(c)を計算し、ステップ142で考えられる最良のクロック周期Tlowを見出せるようにする。一つの実施例においては、ステップ143に示すとおり、経路分析器(図10のステップ103および104に用いられるツール)が次に目標(経路時間の要求値)を
Tgoal=1.5Tlow
に設定する。
ステップ144に示すとおり、接続cの各々については分数f(c)は式(3)から決定される。
(3) f(c)=重み(c)/最大[重み(p)]
ここで、用いられた重み関数は弛緩一様分散関数重み(c)=1であり最大[重み(p)]は最大経路における接続の数である。ステップ145に示すとおり、限界値U(c)は図11に関連して上に述べた限界値調整アルゴリズムを用いて調整する。
これら限界値はルーターに供給され(図10におけるステップ104からステップ111への矢印と等価)、このルーターは図14のステップ146において特別の資源(例えば、大域クロック信号と表示してある信号)を要する接続を識別しそれら接続を適切な資源に割り当てる。
次に、ステップ147において、ルーターは比L(c)/U(c)の減少する順に残余の接続を経路付与する。どの接続についても遅延限界示唆値がその接続に可能な最高速遅延L(c)よりも小さくなることはないことを想起されたい。すなわち、比L(c)/U(c)はすべて1以下である。その比が1に近いことはその接続がその接続に可能な最高速遅延に近い遅延を有することを示す。したがって、この比の大きい接続にまず経路付与して、困難な接続への満足な経路を得る可能性を高める。ルーターが上記U(c)要件を満たす経路を見出し得なかった接続はいずれも経路未付与のまま残す。
ステップ148において経路未付与のままの接続があるか否かを決定する。もしあれば、ステップ149において、ルーターは経路未付与の接続全部につき数値U(c)を20%だけ増加させ、それによってTgoalを20%だけ増加させて、ステップ146に再び進む。ステップ148に到達したとき接続がすべて経路付与ずみであれば、初期の経路付与努力は終了しており、その場合は経路付与情報はルーターに供給できる(図10のステップ102と103との間の矢印に等価)。
既存の経路の改善
図15はこの発明により既存の経路付与解のタイミングを改善するために用いられるステップを示す。既存の経路付与解は達成ずみのクロック速度Tachievedを有する。可能な最高速の解を得ることが目標であれば、好適な実施例は可能な最大の減少量の三分の一だけクロック周期を狭める試みを一つの反復において試みる。すなわち、ステップ151において、新しいクロック周期Tgoalが次のとおり設定される。
(8) Tgoal=Tachieved−(Tachieved−Tlow)/3
ステップ152に示したとおり、各接続cについて、分数f(c)は式(3)から
(3) f(c)=重み(c)/最大[重み(p)]
と算出される。ここで、使用された重み関数は達成ずみの遅延マイナス下側境界遅延、または改善の余地
(7) 重味(c)=D(c)−L(c)
である。これら分数f(c)の決定ののち、ステップ153において、負の弛緩を有する限界値U(c)を式(b)U(c)new=最大[U(c)old+f(c)*弛緩(c,U),L(c)]を用いて減少方向に調整し、次にステップ154において、正の弛緩を有する限界値を次の式を用いて増加方向に調整する。
(5) U(c)new=U(c)old+f(c)弛緩(c,U)
これらの新しい、また時にはより厳しい遅延限界示唆値をルーターに供給し、ステップ155において、新しい示唆値よりも大きい遅延D(c)を有する接続についてのあらゆる経路を消去または除去する。ステップ157においてルーターは分離された順にこれら経路未付与の接続に経路付与することを試みる。このU(c)要件を満たし得ない接続はすべて一時的に経路未付与のまま残される。
ステップ158においてルーターは経路未付与のままの接続があるかどうかを決定し、もしあれば、ステップ159において、それら経路未付与の接続についてのU(c)を20%だけ増加させる。経路を分類し経路付与を試みるステップ156および157を次に繰り返す。このループを全経路付与の終了まで繰り返す。
経路付与期間中のタイミング改善の効果
この経路付与改善方法で改善タイミングを達成できることがしばしばある。種々の寸法および機能のベンチマーク設計22件についての実験において、全接続につき一つの遅延限界値を用いた経路付与アルゴリズムから導かれる遅延と下側境界値使用の限界値調整アルゴリズムを用いて導かれる遅延とを比較し、次に上述の経路付与改善アルゴリズムを一回通過させた。その結果、単一の遅延限界値を用いたタイミング結果に比べるどの場合についても改善がみられた。改善の度合は3%から32%にわたり上記ベンチマーク設計22件についての平均は約14%であった。達成された接続遅延と理論上の最小接続遅延との比較から、各接続がもっとも高速の経路で経路付与されていれば経路遅延の付加的改善は16%だけであることがわかる。これら22件の設計およびこれら以外の設計についてのこれ以上のタイミング改善はこの発明を設計をレイアウトする際の初期配置または配置改善に用いることによって達成できよう。それら改善はまだ試みられていない。
図10の流れ図はこれら段階のすべてに適合する。配置の初期段階では実際の遅延についてはほとんど不明であるので、下側境界は単なる概算値である。しかし、これら初期の概算値から限界示唆値を計算することによって、それ以後の配置結果が改善される。経路分析方法をレイアウト処理の初期の段階に応用することを次に述べる。
初期配置
この発明の方法は論理素子の論理ブロックへの初期配置にも使うことができる。初期配置は最小値カット分割アルゴリズム、すなわちデバイスの二つの領域で実動化される二つのクラスタに全体の設計を分割することによって始まるアルゴリズムで行うのが好ましい。最小値カットアルゴリズムはそれら二つの領域を分ける分割線を横切って延びる接続の数を最小化する。この最小値カットアルゴリズムは一つのクラスタを、各クラスタが一つの論理ブロック内で実動化できるまで、二つのより小さいクラスタに分割することを続ける。
素子の一つのクラスタの二つのクラスタへの分割の各々は分割線の両側の各々に論理素子の半分を配置することによって始まる。これに引続き、各素子の所属する側を転換する一連のステップを配置する。これらステップの各々において、上記分割線を横切って動くように選択された素子は所属の側の転換による損失削減効果のもっとも大きい素子である。
従来技術の最小値カットアルゴリズムにおいては、分割線のまわりの特定の素子配列に伴う損失はその線を横切る接続の数の概算値(概算の実際の数は一般に単一の信号源からファンアウトする多数の接続の組についての最終的な経路付与に左右されるので概算値となる)である。図16は素子E2を分割線171を横切って区画S1からS2に動かす損失を概算する小例である。
全部の素子を片方の側から他の片方の側に移し終えたあと、このシーケンス内で最低損失を達成したステップを新たな予定分割線として用いる。この手順は、分割線を横切って各素子を再び動かし最低損失の配置を選ぶことによって繰り返される。各素子の移動および最低損失の配置の選択の手順の繰返しはこのシーケンスがそれ以上の改善をもたらさなくなるまで続く。
この発明は、分割線越えの素子移動の損失の概算を、分割線を跨ぐ接続の数の改善だけでなく遅延計算にも基づいて行う。
(9) 損失E=Nafter−Nbefore+Cdelay(E)
ここで
損失Eは分割線を越える素子Eを動かす損失(負の数は改善を示す)、
Nafter−Nbeforeは従来技術による接続横断損失、すなわち素子移動後の分割線越え接続の数の概算値マイナス素子移動前の分割線越え接続の数の概算値
Cdelay(E)はその素子を分割線越えで動かすための遅延に関する損失追加。この発明によると、Cdelay(E)は素子Eへの接続についての接続遅延関数Cdelay(c)の合計である。すなわち、素子Eにつながるすべての接続cについて、
(10) Cdelay(E)=■Cdelay(c)
この発明の好適な実施例によると、接続遅延関数Cdelay(c)は上述の図10のステップ104で計算した遅延限界示唆値U(c)の関数であり、また、二つの値B(c)およびW(c)の関数でもある。値B(c)は接続が分割線を横断しないなどより良好な状態を表わし、値W(c)は接続cが分割線を横断するなどより不良な状態を表わす。図17Aは素子E1およびE2の間の接続が分割線171を横断しないより良好な状態を示し、図17Bは素子E2が動かされて素子E1およびE2の間の接続が分割線171を横断したより不良な状態を示す。
接続が分割線を横断しない図17Aの場合において、接続E1−E2についての遅延を決定するために、素子E1およびE2は分割線171の左側の領域のx寸法の1/3およびy寸法の1/3だけ離されているものとする。これら座標に対応する上記良好状態の遅延B(c)を使用中のチップに特有の概算遅延表で調べる。その表に格納されている概算遅延は、素子間の接続の経路付与はそのチップ内の最高速経路、すなわち高速資源と指定されたステップ経路付与資源を除く最高速経路を用いてなされると仮定して決定される。遅延は通常チップ内の特定の資源およびトランジスタで定まり、素子を配置した論理ブロック間の距離には比例しない。例えばジリンクス社FPGAチップのあるもの、すなわち大域クロックバッファ線およびその他の長い線がチップ全長またはある場合にはそのチップの半分の長さにわたって延びるチップにおいては、比較的少数のこれら高速資源が備えられている。すなわち、それら高速資源は大きいチップ表面積を占有し、クロックや高ファンアウト線など高速用の資源としてレイアウトツールに識別されるように高速資源と指定されているからである。これら高速資源はチップ内の多数の接続には利用不可能である。したがって、接続遅延の最良の概算値はこれら高速資源は利用不可能と仮定している。一つの実施例においては、概算遅延表中の遅延概算値は、接続形成用の配線セグメント間の相互接続が信号の再生および高速化のためにバッファ経由になっていないものと仮定している。すなわち、概算遅延表はかなり控え目な表である。現在入手可能なチップについては、概算遅延は1乃至20ナノ秒の範囲にある。
接続が縦分割線171を横断する図17Bの場合は、素子E1およびE2はこれら部分の水平方向寸法の中間点、および垂直方向の1/3および2/3の点にあるものと仮定している。図17Bに示した位置の素子E1およびE2対応の不良状態の遅延W(c)は概算遅延表で調べる。上述のとおり、損失Cdelay(c)は遅延限界示唆値U(c)、良好状態遅延B(c)および不良状態遅延W(c)の関数である。現在のところ好適な関数は、
(11) W(c)<U(c)/2の場合、Cdelay(c)=0
U(c)>W(c)>U(c)/2の場合、
Cdelay(c)=W(c)−B(c)
W(c)>U(c)の場合、
Cdelay(c)=W(c)−B(c)+[W(c)−B(c),U(c)の大きい方]
である。すなわち分割線を横断することによる遅延が限界示唆値よりも依然としてずっと小さい場合は、Cdelay(c)に関する因子はその素子を動かす損失の概算の際にCdelay(E)に加算されない。接続が分割線を横断することによる遅延が遅延限界示唆値U(c)に近くしかもそれより小さい場合は、その分割線横断による損失を反映するために選ばれる数字、すなわち分割線が横断されたときの予期遅延と分割線横断がなかったときの予期遅延との差は、Cdelay(E)に与えられる。上記不良状態遅延が遅延限界示唆値U(c)を超える場合は、Cdelay(c)からの第2の寄与値をCdelay(E)に加算する。この追加の寄与値は二つの差、すなわち、不良状態遅延と遅延限界示唆値との差(すなわち不良状態においてその示唆値をどれほど超えたか)、および不良状態遅延と良好状態遅延との差(改善の可能性に関する)の二つの差の小さい方である。
W(c)が上記移動の前の状態に対応し、B(c)が上記移動のあとの状態に対応すれば、Cdelay(c)は負の数字として記録される。図16の例ではCdelay(c)がE1以外のE2からの全接続について生ずる。区画S1からS2へのE2の移動は負の合計値、すなわち改善を示す可能性がある(ただし、素子E1が不良状態遅延W(c)>U(c)/2を有する唯一の素子でない場合)。
上記式(9)については、Cdelay(c)およびCdelay(E)が時間単位であり、一方分割線横断の数Nafter−Nbeforeの単位は純数であることに注意されたい。一つの実施例においては、Cdelay(c)の単位をナノ秒の十分の一で特定し、その結果のCdelay(E)値を数Nafter−Nbeforeに加えることによって単位変換を行う。
もう一つの実施例では、相次ぐ分割線がより小さい領域を分割する事実を、数Nafter−Nbeforeにその分割線の分割した寸法に比例する因子を乗ずることによって考慮に入れてある。したがって、素子移動の損失の式は次のとおりとなる。
(9) 損失E=S*(Nafter−Nbefore)+Cdelay(E)
ここで、
Sは分割線に垂直に分割した部分の寸法(行または列の数で測った)であって、
分割線が形成し得る物理的分割に関する寸法である。
分割線を横断して素子を動かすコストは分割対象の部分の中の各素子について計算され、各素子について各接続のその素子への影響を考慮する。
最小値カット分割アルゴリズムを用いた初期配置にこの発明の遅延限界示唆値を用いた場合の図10のステップの流れは、各分割線についてステップ102、103、104および111を通って一回だけ循環することである。したがって、遅延限界示唆値U(c)の計算は初期配置活動の期間中に多数回にわたり行われる。一つの実施例においては、経路分析103および104は初期配置の完了まで全部の分割線について繰り返される。もう一つの実施例では、遅延限界示唆値は最初のいくつかのクラスタを分割する分割線の決定後は再計算(図13のステップ103および104を用いて)されない。例えば256個の論理ブロックを有するロジックアレーチップでは、最初の分割線でロジックを約100乃至150個の論理ブロックを占有する二つのグループに分割し、次に第2および第3の分割線でロジックを各々が約50乃至75個の論理ブロックを占有するグループに分割する。第4、第5、第6、および第7の分割線はロジックを各々が25乃至50個の論理ブロックを占有するグループに分割する。第7または第8の分割線の終了後、経路分析ステップ103および104を中止し、残余の分割は算出ずみの遅延限界値を用いて行い、それによって計算時間を節減できる。下側境界は更新した分割情報を用いて計算される値よりも低いが、計算ずみの遅延限界示唆値U(c)の反映される零よりも大きい下側境界の利点は後続の分割ステップでも継続する。ステップ111における良好状態遅延および不良状態遅延の計算は経路分析のステップ103および104を通じた反復が中止されても継続する。
遅延限界示唆値U(c)は、図10のステップ104において、上述の例で行ったのと同様に例えば経路付与の期間内に下側境界遅延L(c)を用いて計算される。しかし正確な下側境界の数字は素子未配置であるため未知である。図18は図16に示した素子についてのステップ4の遅延限界示唆値計算用の下側境界推定値を示す。図18は分割線171の確立後のレイアウトを示す。図18においては、図示のために素子E2は区画S1内に留まっている。下側境界接続遅延L(c)を計算する際には、それら素子は接続対象の素子にもっとも近い領域部分にあるものと仮定する。すなわち、下側境界接続はその接続がどこに延びるかによって領域の異なる部分から延びる。例えば、素子29については接続E9−E11のための領域S2の右下隅に示してあり、E9は接続E2−E9用の区画S2の左隅に示してある。したがって、分割のこの段階においては図10のステップ104において、接続E2−E10およびE9−E11のみが分割に伴う大きい下側境界遅延を示す。それ以外の接続はできるだけ近い論理ブロック対応の最小遅延を有するものとして示してある。接続遅延は図示の最小距離についての遅延の表からとってある。下側境界遅延は接続E2−E10についてのU(E2−E10)など接続遅延限界示唆値の計算に用いる。
配置改善アルゴリズム−限界示唆値の利用
この発明を使う一つの配置改善アルゴリズムは三つの部分の間の素子の循環である。図10の状況を考慮すると、配置改善はステップ111で起こる。ステップ111の期間中に論理設計内の各論理素子の他の場合への動きを考慮する。この配置改善アルゴリズムは素子の移動先として、空きの場所を見出すことに依存することはできないので、一般には配置改善は二つの論理素子の交換またはいくつかの論理素子の循環を伴う。次の説明は三つの素子を循環させることに関する。図19は配置変動を考慮中の素子191を示す。素子192は第1候補場所にある。しかし素子192を素子191の場所改善の受容のために移動させることは全体として悪い影響を及ぼそう。したがって、素子192のそれ以外の隣接素子、すなわちある実施例においては八つの隣接素子を素子191の移動先として考慮する。例えば素子194と素子192とを素子191の移動先として考慮する。素子192および194を含む九つの素子の各々について最も好ましい移動先の場所を隣接素子とともに考慮する。素子192についてはもっとも好ましい移動は素子193の位置への移動であり、素子193は素子191の素子に三角形を形成するように動かし得る。素子194については、もっとも好ましい素子は195である。このように、素子191についての移動の評価のために81個の三角形を考慮でき、そのうちの最良のものが選ばれる。
従来技術においては素子191についての移動先のこの第1候補は素子191への接続を有するそれら素子の重心である。この発明の実施例では、素子191の移動先の第1候補は素子191への接続向けのタイミング損失を最小にする場所である。もう一つの実施例では、第1候補192は、素子191の接続の重心と素子191への接続向けのタイミング損失が最小になる場所との中間の場所にある。素子移動先第1候補の選択のためのこれら二つの手段には数多く他の組合せも使用できる。現在のところ好適な方法は従来技術による上記重心とタイミング損失を最低にする場所との中間の場所を用いる。ステップ104からの遅延限界示唆値U(c)はこのタイミング損失の計算に用いられる。
図20は特定の配置の損失の計算を接続上の遅延概算値D(c)とそれら接続についての遅延限界示唆値との比較によって行う方法を示す。遅延概算値はもう一つの表に格納されている。遅延概算値の表は二つ以上の速度の経路付与資源を備えるチップ内での最高速の経路付与資源は利用不可能と仮定することによって決定される。いくつかの市販のチップは限られた数の高速経路付与資源を有し、その数が少ないためにこれら資源は一般には大多数の接続には利用不可能である。したがって、遅延の概算にはそれら高速資源は利用不可能としたほうが妥当である。
移動先第1候補のx座標およびy座標は次の式から計算できる。
(12) Gx=■[損失(c)*X(c)]/■[損失(c)]
(13) Gy=■[損失(c)*Y(c)]/■[損失(c)]
ここで、
損失(c)は移動対象の素子に付けられた接続cのタイミング損失であり、
X(c)は接続の他端における素子のX座標であり、
Y(c)は接続の他端における素子のY座標であり、
加算は移動対象の素子へのあらゆる接続cについて行われる。タイミング損失(c)を図20に示す。損失(c)は、遅延示唆値が遅延限界示唆値U(c)に等しいときは常に固定遅延F(例えば10ナノ秒)に等しい。小さい遅延示唆値に対しては、損失(c)は直線的に上昇し、概算遅延がU(c)−Fのとき零に達する。U(c)よりも大きい概算遅延に対しては、損失(c)は1よりも大きい勾配で直線的に増大する。遅延限界では10ナノ秒以外の値を損失に選べることはもちろんであり、その値はとりわけその部分の速度に依存する。好適な勾配の一つは2.0であるが、今後の試験のあと他の勾配が好適とされることもあろう。
図19に示すとおり、移動先第1候補近傍でいくつかの代替位置と素子191の循環用の最良の三角形を見出すために評価するのが好ましい。上述の説明から第1候補の代替位置の選択に多数の異なる方法を用い得ることは明らかである。
配置改善アルゴリズムは、その設計における全素子が移動について評価され改善後の場所が決定されたのち(図10のステップ111)、移動後の位置についての接続遅延下側境界の概算値を計算する。図10に示すとおり、これら新しい下側境界遅延は経路分析ツールに供給され、このツールで遅延限界示唆値U(c)を再び計算する。一つの実施例においては、配置改善のための図10のステップを通じた循環の不成就数は3である。
ステップ103および104において弛緩が計算され遅延限界が示唆される。これらの遅延限界示唆値は配置改善アルゴリズムによって素子の次の移動、すなわち選択配置の改善のために使われる。経路が遅い弛緩を有することが決定されると、ステップ104で計算された遅延限界示唆値は、遅延限界値を受容するよう次の移動を選択するためにステップ111でプレーサーに使われる。このプレーサーは厳しい限界値をもつ接続により大きい重みを与え、重要な接続の付着を受けた素子が低速の接続によって分離されることが起こりにくいようにする。
配置改善の期間中に、配置素子間で可能な最高速接続を仮定した下側境界遅延を、それら素子の配置を含む論理ブロックの相互間の接続に利用可能な最高速経路にそれら素子を経路付与できると仮定することによってステップ102で概算できる。初期配置について上述のとおり、下側境界接続遅延は表で調べる。(表は二素子間のxおよびy距離の関数でもよく、それら二素子のxおよびy座標の関数でもよい。)下側境界遅延については、多重接続は同一の物理的線路に接続可能と仮定できる。ステップ102のあと、下側境界接続遅延の組は経路分析ツールに伝えられ、そのツールはステップ103において下側境界経路および弛緩を計算し、ステップ104においてこれら接続についての新しい遅延限界示唆値U(c)を計算する。
経路分析ツールは対応の下側境界クロック周期をも計算できる。これは各接続を最高速の経路に経路付与した場合にこのデバイスを動作させるのに用いられ得る最小クロック周期である。この下側境界よりも小さいクロック周期が求められた場合は、エラーメッセージがユーザに送られる。ステップ104で計算された限界示唆値に基づき、プレーサーはステップ111で代替的配置、すなわち所望のクロック周期から得られる遅延限界示唆値に合致する配置の一組を試みる。一つの実施例においては、このプレーサーは、下側境界遅延がタイミング制約の受容不可能なことを示せば引続き動作し最良の利用可能な配置を見出す。
上述の説明に照らして、当業者にはこれら以外の実施例、すなわちマスクプログラムデバイスやカスタムデバイスに使える遅延限界決定方法を含む実施例が自明になろう。それら実施例はこの発明の範囲内に含まれると意図されたものである。
Claims (26)
- 論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記論理素子の各々を前記プログラマブル論理ブロックの一つに配置する過程と、
前記論理設計中の接続について下側境界接続遅延L(c)を概算する過程と、
前記接続の各々について遅延限界値U(c)、すなわちその各々を前記下側境界接続遅延の対応する値以上に選んだ遅延限界値U(c)を選ぶ過程と、
前記プログラマブル論理ブロックに配置した前記論理素子を接続するように実際の遅延D(c)を伴う前記接続を前記プログラマブルロジックデバイスの前記配線セグメント沿いに経路付与する過程であって、前記遅延限界値U(c)の少なくともいくつかを前記実際の遅延D(c)が超えることがないように経路付与する過程と、
前記遅延限界値U(c)を満たさない付与ずみの経路を消去する過程と、
下側境界L(c)の遅延限界値U(c)に対する比の減少する順に経路未付与の接続に経路付与する過程と
を含む方法。 - 論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記論理設計中の接続について下側境界接続遅延L(c)を概算する過程と、
前記接続の各々について遅延限界値U(c)、すなわちその各々を前記下側境界接続遅延の対応する値以上に選んだ遅延限界値U(c)を選ぶ過程と、
実際のまたは概算の遅延D(c)を伴うレイアウト過程を、前記遅延限界値U(c)の少なくともいくつかを前記実際のまたは概算の遅延D(c)が超えることがないように行う過程と、
前記実際のまたは概算した実際の遅延D(c)を算出する過程と、
修正限界値Ur(c)、すなわち下側限界値L(c)と前記実際のまたは概算の遅延D(c)との関数である前記修正遅延限界値Ur(c)を算出する過程と、
前記修正遅延限界値Ur(c)を用いて前記論理設計についての次のレイアウト過程を行う過程と、
前記プログラマブルロジックデバイスへの前記論理設計のレイアウトを完結させる過程と
を含む方法。 - 前記修正遅延限界値の各々がその接続の弛緩S(c)、すなわちその接続について要求された最も早い信号到着時間R(c)とその接続への最も遅い実際の信号到着時間との差である弛緩S(c)の関数である請求項2記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
- 前記修正遅延限界値が次式、すなわち
Ur(c)=D(c)+f(c)*S(c)
ここで
Ur(c)は前記遅延限界値を表し、
f(c)は1以下の分数であり、
S(c)は前記弛緩である
から計算される請求項3記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。 - 前記修正遅延限界値を計算する過程のあとに、反復的に、
前記弛緩S(c)を再び計算し、
前記弛緩S(c)が十分に零に近くない場合にそれら弛緩が十分に零に近くなるまで前記修正遅延限界値を次式、すなわち
Ur(c)new=Ur(c)old+f(c)*S(c)
によりさらに修正する
過程を含む請求項4記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。 - 前記分数f(c)が次式、すなわち
f(c)=重み(c)/最大[重み(p)]
ここで
重み(c)=D(c)−L(c)
重み(p)=■経路p上の全接続cについての重み(c)
最大[重み(p)]は接続cを含む最大重みの経路上の重み(p)
で計算される請求項4記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。 - 前記レイアウト過程が前記接続の各々を実働化する経路を選択することを含む請求項2記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
- 前記修正遅延限界値U(c)を計算する過程のあとに、
前記修正遅延限界値U(c)を満たさない付与ずみの経路を除去する過程と、
前記概算の遅延D(c)の遅延限界値U(c)に対する比の減少する順に前記経路未付与の接続を経路付与する過程と
をさらに含む請求項7記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。 - 前記レイアウト過程が論理素子を対応の論理ブロック内に配置することを含む請求項2記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
- 前記修正遅延限界値の計算のあとに、論理素子を対応のプログラマブル論理ブロックに前記修正遅延限界値を侵さないように配置する過程をさらに含む請求項9記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
- 論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
(a)前記論理設計を機械可読な形で特定する過程と、
(b)前記接続の各々について遅延限界値U(c)を選択する過程と、
(c)概算遅延D(c)をもたらす初期配置過程、すなわち修正した最小値カット分割アルゴリズムであって論理素子の分割線を横断する移動の要否の決定を
(1)前記分割線を横断する前記論理素子への接続の数を最小にすること、および
(2)前記遅延限界値U(c)が前記概算の遅延D(c)を下まわる前記素子への前記接続の数を最小化すること
の目的に基づき行う最小値カット分割アルゴリズムを用いて行う初期配置過程を行う過程と、
(d)前記論理設計の前記プログラマブルロジックデバイスへのレイアウトを完結させる過程
とを含む方法。 - 前記目的(2)が、前記論理素子への前記接続の少なくとも一つをその一部とする少なくとも一つの経路に沿う概算の遅延を最小化する請求項11記載の論理設計のレイアウト方法。
- 前記目的(2)が、前記素子への接続についてのタイミング損失の合計を最小化する請求項11記載の論理設計のレイアウト方法。
- 前記タイミング損失の各々が前記遅延限界値U(c)の関数であり、また、前記分割線を横断する接続のより不良の場合の遅延W(c)と前記分割線を横断しない接続のより良好な場合の遅延B(c)との関数でもある請求項13記載の論理設計のレイアウト方法。
- 前記より不良の場合の遅延W(c)および前記より良好の場合の遅延B(c)が概算遅延、すなわち前記接続の用いた経路が前記プログラマブルロジックデバイス間でとくに高速と指定された経路付与資源以外のその接続への可能な最高速の経路であると仮定することによって計算した概算遅延の関数である請求項14記載の論理設計のレイアウト方法。
- 前記より不良の場合の遅延W(c)およびより良好な場合の遅延B(c)の関数が前記より不良の場合の遅延W(c)とより良好の場合の遅延B(c)との差の関数である請求項14記載の論理設計のレイアウト方法。
- 前記差の関数Cdelayが次式、すなわち
W(c)<U(c)/2の場合、Cdelay(c)=0、
U(c)>W(c)>U(c)/2の場合、Cdelay(c)=W(c)−B(c)、
W(c)>U(c)の場合、
Cdelay(c)=W(c)−B(c)+[W(c)−B(c),U(c)の大きい方]
で決定される請求項16記載の論理設計のレイアウト方法。 - 論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
(a)前記論理設計を機械可読な形で特定する過程と、
(b)前記接続の各々について遅延限界値U(c)を選択する過程と、
(c)前記接続の各々について概算遅延D(c)を決定する過程と、
(d)ひと組の位置の間で少なくとも三つの論理素子を循環させることを含み、前記位置を、前記少なくとも二つの論理素子に取り付けた接続に関連するタイミング損失(c)、
すなわち各々が
(1)対応の遅延限界値U(c)、および
(2)対応の概算遅延D(c)
の関数であるタイミング損失の関数として選んだ配置改善過程を行う過程と、
(e)前記論理設計のレイアウトを前記プログラマブルロジックデバイス上に完結させる過程と
を含む方法。 - 前記概算遅延D(c)が、とくに高速と指定されている前記プログラマブルロジックデバイス内の経路付与資源を用いることなくその接続に利用可能な最高速の経路を各接続cについての経路とすると仮定している請求項18記載の論理設計のレイアウト方法。
- 前記複数個の論理素子の各々についてのタイミング損失の前記関数が前記複数個の論理素子の各々への各接続についてのタイミング損失(c)の関数である請求項18記載の論理設計のレイアウト方法。
- 前記タイミング損失(c)の関数が前記複数個の論理素子の一つへのすべての接続についての前記タイミング損失の合計を含む請求項20記載の論理設計のレイアウト方法。
- タイミング損失の関数として論理素子のために選ばれた位置の各々が次式、すなわち
Gx=■[損失(c)*X(c)]/■[損失(c)]
Gy=■[損失(c)*Y(c)]/■[損失(c)]
ここで
損失(c)は前記論理素子に一端でつけられた接続cのタイミング損失であり、
X(c)は前記接続cのもう一つの端における論理素子のX座標であり、
Y(c)は前記接続cのもう一つの端における論理素子のY座標であり、
加算■は前記論理素子に至る全ての接続cについて行われるものである
から選ばれる請求項18記載の論理設計のレイアウト方法。 - 前記タイミング損失(c)の各々が、
前記概算遅延D(c)が前記遅延限界値U(c)に等しいとき設定値Fに等しく、
U(c)よりも小さい概算遅延D(c)について差D(c)−U(c)の第1の関数として零に向かって減少し、
前記遅延限界よりも大きい概算遅延について概算遅延D(c)マイナス遅延限界U(c)の第2の関数として増加する
請求項22記載の論理設計のレイアウト方法。 - 前記第1の関数がF+D(c)−U(c)であり、前記第2の関数がF+(2*(D(c)−U(c)))である請求項23記載の論理設計のレイアウト方法。
- 論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記接続の各々について遅延限界値U(c)を選択する過程と、
概算遅延D(c)を伴うレイアウト過程を、前記遅延限界値U(c)の少なくともいくつかを前記概算の遅延D(c)が超えることがないように行う過程と、
前記概算の遅延D(c)を計算する過程と、
前記概算の遅延D(c)の関数である修正遅延限界値Ur(c)を計算する過程と、
前記修正遅延限界値Ur(c)を用いて前記論理設計についての次のレイアウト過程を行う過程と、
前記論理設計の前記プログラマブルロジックデバイスへのレイアウトを完結させる過程と
を含む方法。 - 前記論理設計における接続について下側境界接続遅延L(c)を概算する過程をさらに含み、
前記接続の各々についての遅延限界値U(c)の選択過程が、前記遅延限界値の各々を前記下側境界接続遅延の対応するもの以上に選ぶように行われ、
前記修正遅延限界値Ur(c)を計算する過程が、前記修正遅延限界値を前記下側境界L(c)の関数にもするように行われる
請求項25記載の論理設計のレイアウト方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US89450092A | 1992-06-04 | 1992-06-04 | |
US894,500 | 1992-06-04 | ||
PCT/US1993/004892 WO1993024895A2 (en) | 1992-06-04 | 1993-05-27 | Timing driven method for laying out a user's circuit onto a programmable integrated circuit device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07507409A JPH07507409A (ja) | 1995-08-10 |
JP3737104B2 true JP3737104B2 (ja) | 2006-01-18 |
Family
ID=25403162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP50067794A Expired - Fee Related JP3737104B2 (ja) | 1992-06-04 | 1993-05-27 | プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5521837A (ja) |
EP (1) | EP0643855A1 (ja) |
JP (1) | JP3737104B2 (ja) |
WO (1) | WO1993024895A2 (ja) |
Families Citing this family (129)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5648913A (en) * | 1993-03-29 | 1997-07-15 | Xilinx, Inc. | Frequency driven layout system and method for field programmable gate arrays |
JP3210172B2 (ja) * | 1994-05-13 | 2001-09-17 | 富士通株式会社 | ディレイ・レーシング・エラーリスト出力装置 |
US5774371A (en) * | 1994-08-03 | 1998-06-30 | Matsushita Electric Industrial Co., Ltd. | Semiconductor integrated circuit and layout designing method for the same |
US5507029A (en) * | 1995-01-11 | 1996-04-09 | International Business Machines Corporation | Method for minimizing the time skew of electrical signals in very large scale integrated circuits |
US5661663A (en) * | 1995-03-24 | 1997-08-26 | Lsi Logic Corporation | Physical design automation system and method using hierarchical clusterization and placement improvement based on complete re-placement of cell clusters |
US5856927A (en) * | 1995-05-01 | 1999-01-05 | Vlsi Technology, Inc. | Method for automatically routing circuits of very large scale integration (VLSI) |
US5898595A (en) * | 1995-05-26 | 1999-04-27 | Lsi Logic Corporation | Automated generation of megacells in an integrated circuit design system |
US5726902A (en) * | 1995-06-07 | 1998-03-10 | Vlsi Technology, Inc. | Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication |
US5764532A (en) * | 1995-07-05 | 1998-06-09 | International Business Machines Corporation | Automated method and system for designing an optimized integrated circuit |
US5751596A (en) * | 1995-07-27 | 1998-05-12 | Vlsi Technology, Inc. | Automated system and method for identifying critical timing paths in integrated circuit layouts for use with automated circuit layout system |
US5659717A (en) * | 1995-07-31 | 1997-08-19 | Altera Corporation | Methods for partitioning circuits in order to allocate elements among multiple circuit groups |
US5943242A (en) | 1995-11-17 | 1999-08-24 | Pact Gmbh | Dynamically reconfigurable data processing system |
US5666290A (en) * | 1995-12-27 | 1997-09-09 | Vlsi Technology, Inc. | Interactive time-driven method of component placement that more directly constrains critical paths using net-based constraints |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US5787009A (en) * | 1996-02-20 | 1998-07-28 | Altera Corporation | Methods for allocating circuit design portions among physical circuit portions |
US6226560B1 (en) * | 1996-03-04 | 2001-05-01 | International Business Machines Corporation | Method and apparatus for optimizing the path of a physical wire |
US5761078A (en) * | 1996-03-21 | 1998-06-02 | International Business Machines Corporation | Field programmable gate arrays using semi-hard multicell macros |
US5815406A (en) * | 1996-03-25 | 1998-09-29 | International Business Machines Corporation | Method and system for designing a circuit using RC and timing weighting of nets |
US5877965A (en) * | 1996-06-24 | 1999-03-02 | International Business Machines Corporation | Parallel hierarchical timing correction |
US5943488A (en) * | 1996-06-26 | 1999-08-24 | Cypress Semiconductor Corp. | Method and apparatus to generate mask programmable device |
US5926035A (en) * | 1996-06-26 | 1999-07-20 | Cypress Semiconductor Corp. | Method and apparatus to generate mask programmable device |
US5867398A (en) * | 1996-06-28 | 1999-02-02 | Lsi Logic Corporation | Advanced modular cell placement system with density driven capacity penalty system |
US5870311A (en) * | 1996-06-28 | 1999-02-09 | Lsi Logic Corporation | Advanced modular cell placement system with fast procedure for finding a levelizing cut point |
US6030110A (en) * | 1996-06-28 | 2000-02-29 | Lsi Logic Corporation | Advanced modular cell placement system with median control and increase in resolution |
US5963455A (en) * | 1996-06-28 | 1999-10-05 | Lsi Logic Corporation | Advanced modular cell placement system with functional sieve optimization technique |
US5872718A (en) * | 1996-06-28 | 1999-02-16 | Lsi Logic Corporation | Advanced modular cell placement system |
US5844811A (en) * | 1996-06-28 | 1998-12-01 | Lsi Logic Corporation | Advanced modular cell placement system with universal affinity driven discrete placement optimization |
US5892688A (en) * | 1996-06-28 | 1999-04-06 | Lsi Logic Corporation | Advanced modular cell placement system with iterative one dimensional preplacement optimization |
US5835381A (en) * | 1996-06-28 | 1998-11-10 | Lsi Logic Corporation | Advanced modular cell placement system with minimizing maximal cut driven affinity system |
US6067409A (en) * | 1996-06-28 | 2000-05-23 | Lsi Logic Corporation | Advanced modular cell placement system |
US5914888A (en) * | 1996-06-28 | 1999-06-22 | Lsi Logic Corporation | Advanced modular cell placement system with coarse overflow remover |
US6026223A (en) * | 1996-06-28 | 2000-02-15 | Scepanovic; Ranko | Advanced modular cell placement system with overlap remover with minimal noise |
US5831863A (en) * | 1996-06-28 | 1998-11-03 | Lsi Logic Corporation | Advanced modular cell placement system with wire length driven affinity system |
US5870312A (en) * | 1996-06-28 | 1999-02-09 | Lsi Logic Corporation | Advanced modular cell placement system with dispersion-driven levelizing system |
US5812740A (en) * | 1996-06-28 | 1998-09-22 | Lsi Logic Corporation | Advanced modular cell placement system with neighborhood system driven optimization |
US5808899A (en) * | 1996-06-28 | 1998-09-15 | Lsi Logic Corporation | Advanced modular cell placement system with cell placement crystallization |
US6085032A (en) * | 1996-06-28 | 2000-07-04 | Lsi Logic Corporation | Advanced modular cell placement system with sinusoidal optimization |
US5896301A (en) * | 1996-10-25 | 1999-04-20 | Advanced Micro Devices, Inc. | Method for performing floorplan timing analysis using multi-dimensional feedback in a histogram and integrated circuit made using same |
US5903472A (en) * | 1996-10-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method for performing floorplan timing analysis by selectively displaying signal paths based on slack time calculations and integrated circuit made using same |
US5910899A (en) * | 1996-10-25 | 1999-06-08 | Advanced Micro Devices, Inc. | Method for performing floorplan timing analysis using multi-dimensional feedback in a spreadsheet with computed hyperlinks to physical layout graphics and integrated circuit made using same |
US5980091A (en) * | 1996-11-20 | 1999-11-09 | Unisys Corporation | Method of synthesizing synchronized circuit modules in an integrated circuit chip |
US5974437A (en) * | 1996-12-02 | 1999-10-26 | Synopsys, Inc. | Fast array multiplier |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654593A1 (de) * | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
DE19654595A1 (de) * | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
US6338106B1 (en) | 1996-12-20 | 2002-01-08 | Pact Gmbh | I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures |
JP3961028B2 (ja) | 1996-12-27 | 2007-08-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等) |
DE19654846A1 (de) * | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
DE19704044A1 (de) * | 1997-02-04 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
DE19704728A1 (de) | 1997-02-08 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines |
DE19704742A1 (de) | 1997-02-11 | 1998-09-24 | Pact Inf Tech Gmbh | Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand |
US6074429A (en) * | 1997-03-03 | 2000-06-13 | Motorola, Inc. | Optimizing combinational circuit layout through iterative restructuring |
US6401231B1 (en) * | 1997-04-25 | 2002-06-04 | Cadence Design Systems, Inc. | Method and apparatus for performing both negative and positive slack time budgeting and for determining a definite required constraint during integrated circuit design |
US6226034B1 (en) * | 1997-05-06 | 2001-05-01 | Roper Scientificomasd, Inc. | Spatial non-uniformity correction of a color sensor |
US6041169A (en) * | 1997-08-21 | 2000-03-21 | International Business Machines Corporation | Method and apparatus for performing integrated circuit timing including noise |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6453446B1 (en) * | 1997-12-24 | 2002-09-17 | Magma Design Automation, Inc. | Timing closure methodology |
DE19807872A1 (de) | 1998-02-25 | 1999-08-26 | Pact Inf Tech Gmbh | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. |
US6219819B1 (en) * | 1998-06-26 | 2001-04-17 | Xilinx, Inc. | Method for verifying timing in a hard-wired IC device modeled from an FPGA |
US7003660B2 (en) | 2000-06-13 | 2006-02-21 | Pact Xpp Technologies Ag | Pipeline configuration unit protocols and communication |
US6215325B1 (en) | 1999-03-29 | 2001-04-10 | Synopsys, Inc. | Implementing a priority function using ripple chain logic |
DE10081643D2 (de) | 1999-06-10 | 2002-05-29 | Pact Inf Tech Gmbh | Sequenz-Partitionierung auf Zellstrukturen |
US6507938B1 (en) * | 1999-11-12 | 2003-01-14 | Intel Corporation | Methods for improving the performance of VLSI layouts designed by a timing driven physical design tool |
US6587815B1 (en) * | 2000-02-04 | 2003-07-01 | Sun Microsystems, Inc. | Windowing scheme for analyzing noise from multiple sources |
US6601226B1 (en) * | 2000-03-14 | 2003-07-29 | Synopsys, Inc. | Tightloop method of timing driven placement |
US7302685B2 (en) * | 2000-06-02 | 2007-11-27 | Honeywell International Inc. | Methods and apparatus for sharing slack in a time-partitioned system |
US6763506B1 (en) | 2000-07-11 | 2004-07-13 | Altera Corporation | Method of optimizing the design of electronic systems having multiple timing constraints |
US7020589B1 (en) * | 2000-09-29 | 2006-03-28 | Lsi Logic Corporation | Method and apparatus for adaptive timing optimization of an integrated circuit design |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6990555B2 (en) * | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US6915309B1 (en) * | 2001-03-20 | 2005-07-05 | Cisco Technology, Inc. | Automatically generating replication topology information for use by a directory service |
US6845494B2 (en) * | 2001-06-08 | 2005-01-18 | Magma Design Automation, Inc. | Method for generating design constraints for modules in a hierarchical integrated circuit design system |
US6836753B1 (en) | 2001-06-13 | 2004-12-28 | Cadence Design Systems, Inc. | Cone slack allocator for computing time budgets |
WO2002103532A2 (de) | 2001-06-20 | 2002-12-27 | Pact Xpp Technologies Ag | Verfahren zur bearbeitung von daten |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
EP1483682A2 (de) | 2002-01-19 | 2004-12-08 | PACT XPP Technologies AG | Reconfigurierbarer prozessor |
EP1514193B1 (de) | 2002-02-18 | 2008-07-23 | PACT XPP Technologies AG | Bussysteme und rekonfigurationsverfahren |
US6934922B1 (en) * | 2002-02-27 | 2005-08-23 | Xilinx, Inc. | Timing performance analysis |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US6671867B2 (en) * | 2002-04-11 | 2003-12-30 | International Business Machines Corporation | Analytical constraint generation for cut-based global placement |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US6886152B1 (en) | 2002-08-09 | 2005-04-26 | Xilinx, Inc. | Delay optimization in signal routing |
JP4388895B2 (ja) | 2002-09-06 | 2009-12-24 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | リコンフィギュアラブルなシーケンサ構造 |
US7185299B1 (en) * | 2003-01-30 | 2007-02-27 | Xilinx, Inc. | Methods of estimating routing delays during the placement process in programmable logic devices |
US7757197B1 (en) | 2003-05-29 | 2010-07-13 | Altera Corporation | Method and apparatus for utilizing constraints for the routing of a design on a programmable logic device |
US7823112B1 (en) | 2003-05-30 | 2010-10-26 | Golden Gate Technology, Inc. | Method, software and system for ensuring timing between clocked components in a circuit |
US7234125B1 (en) * | 2003-06-23 | 2007-06-19 | Altera Corporation | Timing analysis for programmable logic |
US7360190B1 (en) * | 2003-07-11 | 2008-04-15 | Altera Corporation | Method and apparatus for performing retiming on field programmable gate arrays |
JP4700611B2 (ja) | 2003-08-28 | 2011-06-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データ処理装置およびデータ処理方法 |
US7308664B1 (en) | 2004-02-09 | 2007-12-11 | Altera Corporation | Method and apparatus for utilizing long-path and short-path timing constraints in an electronic-design-automation tool for routing |
US7207020B1 (en) * | 2004-02-09 | 2007-04-17 | Altera Corporation | Method and apparatus for utilizing long-path and short-path timing constraints in an electronic-design-automation tool |
US7376924B2 (en) * | 2004-07-12 | 2008-05-20 | International Business Machines Corporation | Methods for placement which maintain optimized behavior, while improving wireability potential |
US7356793B2 (en) * | 2004-07-12 | 2008-04-08 | International Business Machines Corporation | Genie: a method for classification and graphical display of negative slack timing test failures |
US7120888B2 (en) * | 2004-07-12 | 2006-10-10 | International Business Machines Corporation | Method, system and storage medium for determining circuit placement |
US8015533B1 (en) * | 2004-09-21 | 2011-09-06 | Golden Gate Technology, Inc. | Method for matching timing on high fanout signal paths using routing guides |
US7284229B1 (en) | 2004-10-01 | 2007-10-16 | Xilinx, Inc. | Multiple bitstreams enabling the use of partially defective programmable integrated circuits while avoiding localized defects therein |
US7424655B1 (en) | 2004-10-01 | 2008-09-09 | Xilinx, Inc. | Utilizing multiple test bitstreams to avoid localized defects in partially defective programmable integrated circuits |
US20060190889A1 (en) * | 2005-01-14 | 2006-08-24 | Cong Jingsheng J | Circuit floorplanning and placement by look-ahead enabled recursive partitioning |
US7627836B2 (en) * | 2005-11-08 | 2009-12-01 | International Business Machines Corporation | OPC trimming for performance |
US8161469B1 (en) * | 2005-12-13 | 2012-04-17 | Altera Corporation | Method and apparatus for comparing programmable logic device configurations |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US8898609B1 (en) * | 2006-07-18 | 2014-11-25 | Altera Corporation | Method and apparatus for integrating signal transition time modeling during routing |
US7784006B1 (en) * | 2006-07-27 | 2010-08-24 | Xilinx, Inc. | Method and apparatus for directed physical implementation of a circuit design for an integrated circuit |
US7793247B1 (en) | 2007-06-13 | 2010-09-07 | Xilinx, Inc. | Method and apparatus for directed physical implementation of a circuit design for an integrated circuit |
US7920961B2 (en) * | 2007-08-29 | 2011-04-05 | Sap Ag | Method and apparatus for path planning and distance calculation |
US7810059B1 (en) | 2007-10-11 | 2010-10-05 | Xilinx, Inc. | Methods of enabling the validation of an integrated circuit adapted to receive one of a plurality of configuration bitstreams |
US7853916B1 (en) * | 2007-10-11 | 2010-12-14 | Xilinx, Inc. | Methods of using one of a plurality of configuration bitstreams for an integrated circuit |
US7895539B2 (en) * | 2007-10-17 | 2011-02-22 | International Business Machines Corporation | System for improving a logic circuit and associated methods |
US8141018B1 (en) * | 2009-01-14 | 2012-03-20 | Altera Corporation | Method and apparatus for using slack potential data to design a system on a field programmable gate array |
JP4792093B2 (ja) * | 2009-02-23 | 2011-10-12 | 株式会社東芝 | スイッチングボックス回路、スイッチングブロック回路、およびfpga回路 |
US8656332B2 (en) * | 2009-02-26 | 2014-02-18 | International Business Machines Corporation | Automated critical area allocation in a physical synthesized hierarchical design |
US9152748B2 (en) * | 2011-05-06 | 2015-10-06 | Xcelemor, Inc. | Computing system with switching mechanism and method of operation thereof |
JP5743808B2 (ja) * | 2011-08-24 | 2015-07-01 | 株式会社東芝 | 集積回路の配線方法、集積回路の配線プログラム及びそれを記憶した記憶媒体 |
US8522185B1 (en) * | 2012-02-06 | 2013-08-27 | Xilinx, Inc. | Method for placement and routing of a circuit design |
US9009646B1 (en) | 2012-07-17 | 2015-04-14 | Cypress Semiconductor Corporation | Finding I/O placement with a router |
JP2014044610A (ja) * | 2012-08-28 | 2014-03-13 | Renesas Electronics Corp | タイミング解析プログラム、タイミング解析装置およびタイミング解析方法 |
US9984029B2 (en) * | 2014-04-18 | 2018-05-29 | Qualcomm Incorporated | Variable interconnect pitch for improved performance |
US9496871B1 (en) | 2014-08-18 | 2016-11-15 | Xilinx, Inc. | Programmable power reduction technique using transistor threshold drops |
US10339241B1 (en) * | 2016-05-13 | 2019-07-02 | Altera Corporation | Methods for incremental circuit design legalization during physical synthesis |
US10467373B2 (en) | 2018-02-21 | 2019-11-05 | Xilinx, Inc. | Method of selecting routing resources in a multi-chip integrated circuit device |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3617714A (en) * | 1969-04-15 | 1971-11-02 | Bell Telephone Labor Inc | Method of minimizing the interconnection cost of linked objects |
US4495559A (en) * | 1981-11-02 | 1985-01-22 | International Business Machines Corporation | Optimization of an organization of many discrete elements |
US4593363A (en) * | 1983-08-12 | 1986-06-03 | International Business Machines Corporation | Simultaneous placement and wiring for VLSI chips |
US4630219A (en) * | 1983-11-23 | 1986-12-16 | International Business Machines Corporation | Element placement method |
US4827428A (en) * | 1985-11-15 | 1989-05-02 | American Telephone And Telegraph Company, At&T Bell Laboratories | Transistor sizing system for integrated circuits |
US4924430A (en) * | 1988-01-28 | 1990-05-08 | Teradyne, Inc. | Static timing analysis of semiconductor digital circuits |
JP2563451B2 (ja) * | 1988-03-10 | 1996-12-11 | 松下電器産業株式会社 | 論理シミュレーション方法と論理シミュレーション装置 |
US5187784A (en) * | 1989-01-13 | 1993-02-16 | Vlsi Technology, Inc. | Integrated circuit placement method using netlist and predetermined ordering constraints to produce a human readable integrated circuit schematic diagram |
JPH02242474A (ja) * | 1989-03-16 | 1990-09-26 | Hitachi Ltd | 素子配置最適化方法及び装置並びに最適配置判定方法及び装置 |
US5095454A (en) * | 1989-05-25 | 1992-03-10 | Gateway Design Automation Corporation | Method and apparatus for verifying timing during simulation of digital circuits |
US5218551A (en) * | 1990-04-30 | 1993-06-08 | International Business Machines Corporation | Timing driven placement |
US5239493A (en) * | 1990-06-26 | 1993-08-24 | Digital Equipment Corporation | Method and apparatus for interpreting and organizing timing specification information |
US5224056A (en) * | 1991-10-30 | 1993-06-29 | Xilinx, Inc. | Logic placement using positionally asymmetrical partitioning algorithm |
US5197015A (en) * | 1990-12-20 | 1993-03-23 | Vlsi Technology, Inc. | System and method for setting capacitive constraints on synthesized logic circuits |
US5237514A (en) * | 1990-12-21 | 1993-08-17 | International Business Machines Corporation | Minimizing path delay in a machine by compensation of timing through selective placement and partitioning |
US5251197A (en) * | 1992-02-13 | 1993-10-05 | Hoechst Celanses Corp. | Polarization dependent writing and erasing process for organic optical media |
-
1993
- 1993-05-27 JP JP50067794A patent/JP3737104B2/ja not_active Expired - Fee Related
- 1993-05-27 EP EP93911389A patent/EP0643855A1/en not_active Withdrawn
- 1993-05-27 WO PCT/US1993/004892 patent/WO1993024895A2/en not_active Application Discontinuation
-
1995
- 1995-01-19 US US08/376,138 patent/US5521837A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0643855A4 (ja) | 1995-04-19 |
WO1993024895A3 (en) | 1994-02-17 |
WO1993024895A2 (en) | 1993-12-09 |
US5521837A (en) | 1996-05-28 |
JPH07507409A (ja) | 1995-08-10 |
EP0643855A1 (en) | 1995-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3737104B2 (ja) | プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法 | |
CN107798159B (zh) | 用于生成三维集成电路设计的方法 | |
US7676780B2 (en) | Techniques for super fast buffer insertion | |
US6080201A (en) | Integrated placement and synthesis for timing closure of microprocessors | |
US6557145B2 (en) | Method for design optimization using logical and physical information | |
US6298468B1 (en) | Placement-based pin optimization method and apparatus for computer-aided circuit design | |
US7467367B1 (en) | Method and system for clock tree synthesis of an integrated circuit | |
US8607178B2 (en) | Integrated circuit chip with repeater flops and methods for automated design of same | |
US6598215B2 (en) | Datapath design methodology and routing apparatus | |
US5521836A (en) | Method for determining instance placements in circuit layouts | |
US20160092609A1 (en) | Optimizing Designs of Integrated Circuits | |
JPH10163330A (ja) | レイアウト考慮遅延最適化装置および方法 | |
Hung et al. | Challenges in large FPGA-based logic emulation systems | |
US7013438B1 (en) | System chip synthesis | |
JPH09212533A (ja) | 論理回路の最適化装置及びその方法 | |
JPH10313058A (ja) | 半導体集積回路設計装置、半導体集積回路設計方法、半導体集積回路設計プログラムを記録したコンピュータ読み取り可能な記録媒体、及び、半導体集積回路製造方法 | |
US6480996B1 (en) | System and method for transposing wires in a circuit design | |
US20050050502A1 (en) | Method and apparatus for designing semiconductor integrated circuit | |
US20020124230A1 (en) | Timing optimization for integrated circuit design | |
US20090254875A1 (en) | Proactive routing system and method | |
US8015532B2 (en) | Optimal timing-driven cloning under linear delay model | |
JP2001338006A (ja) | 論理自動設計支援方法および装置 | |
JPH09106407A (ja) | 設計支援装置 | |
Pedram et al. | I/O pad assignment based on the circuit structure | |
US8108818B2 (en) | Method and system for point-to-point fast delay estimation for VLSI circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051026 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |