(57)【特許請求の範囲】
【請求項１】
論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記論理素子の各々を前記プログラマブル論理ブロックの一つに配置する過程と、
前記論理設計中の接続について下側境界接続遅延Ｌ(c)を概算する過程と、
前記接続の各々について遅延限界値Ｕ(c)、すなわちその各々を前記下側境界接続遅延の対応する値以上に選んだ遅延限界値Ｕ(c)を選ぶ過程と、
前記プログラマブル論理ブロックに配置した前記論理素子を接続するように実際の遅延Ｄ(c)を伴う前記接続を前記プログラマブルロジックデバイスの前記配線セグメント沿いに経路付与する過程であって、前記遅延限界値Ｕ(c)の少なくともいくつかを前記実際の遅延Ｄ(c)が超えることがないように経路付与する過程と、
前記遅延限界値Ｕ(c)を満たさない付与ずみの経路を消去する過程と、
下側境界Ｌ(c)の遅延限界値Ｕ(c)に対する比の減少する順に経路未付与の接続に経路付与する過程と
を含む方法。
【請求項２】
論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記論理設計中の接続について下側境界接続遅延Ｌ(c)を概算する過程と、
前記接続の各々について遅延限界値Ｕ(c)、すなわちその各々を前記下側境界接続遅延の対応する値以上に選んだ遅延限界値Ｕ(c)を選ぶ過程と、
実際のまたは概算の遅延Ｄ(c)を伴うレイアウト過程を、前記遅延限界値Ｕ(c)の少なくともいくつかを前記実際のまたは概算の遅延Ｄ(c)が超えることがないように行う過程と、
前記実際のまたは概算した実際の遅延Ｄ(c)を算出する過程と、
修正限界値Ｕｒ(c)、すなわち下側限界値Ｌ(c)と前記実際のまたは概算の遅延Ｄ(c)との関数である前記修正遅延限界値Ｕｒ(c)を算出する過程と、
前記修正遅延限界値Ｕｒ(c)を用いて前記論理設計についての次のレイアウト過程を行う過程と、
前記プログラマブルロジックデバイスへの前記論理設計のレイアウトを完結させる過程と
を含む方法。
【請求項３】
前記修正遅延限界値の各々がその接続の弛緩Ｓ(c)、すなわちその接続について要求された最も早い信号到着時間Ｒ(c)とその接続への最も遅い実際の信号到着時間との差である弛緩Ｓ(c)の関数である請求項２記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項４】
前記修正遅延限界値が次式、すなわち
Ｕｒ(c)＝Ｄ(c)＋ｆ(c)＊Ｓ(c)
ここで
Ｕｒ(c)は前記遅延限界値を表し、
ｆ(c)は１以下の分数であり、
Ｓ(c)は前記弛緩である
から計算される請求項３記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項５】
前記修正遅延限界値を計算する過程のあとに、反復的に、
前記弛緩Ｓ(c)を再び計算し、
前記弛緩Ｓ(c)が十分に零に近くない場合にそれら弛緩が十分に零に近くなるまで前記修正遅延限界値を次式、すなわち
Ｕｒ(c)new＝Ｕｒ(c)old＋ｆ(c)＊Ｓ(c)
によりさらに修正する
過程を含む請求項４記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項６】
前記分数ｆ(c)が次式、すなわち
ｆ(c)＝重み(c)／最大［重み(p)］
ここで
重み(c)＝Ｄ(c)−Ｌ(c)
重み(p)＝■経路ｐ上の全接続ｃについての重み(c)
最大［重み(p)］は接続ｃを含む最大重みの経路上の重み(p)
で計算される請求項４記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項７】
前記レイアウト過程が前記接続の各々を実働化する経路を選択することを含む請求項２記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項８】
前記修正遅延限界値Ｕ(c)を計算する過程のあとに、
前記修正遅延限界値Ｕ(c)を満たさない付与ずみの経路を除去する過程と、
前記概算の遅延Ｄ(c)の遅延限界値Ｕ(c)に対する比の減少する順に前記経路未付与の接続を経路付与する過程と
をさらに含む請求項７記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項９】
前記レイアウト過程が論理素子を対応の論理ブロック内に配置することを含む請求項２記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項１０】
前記修正遅延限界値の計算のあとに、論理素子を対応のプログラマブル論理ブロックに前記修正遅延限界値を侵さないように配置する過程をさらに含む請求項９記載のプログラマブルロジックデバイスへの論理設計のレイアウト方法。
【請求項１１】
論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
（ａ）前記論理設計を機械可読な形で特定する過程と、
（ｂ）前記接続の各々について遅延限界値Ｕ(c)を選択する過程と、
（ｃ）概算遅延Ｄ(c)をもたらす初期配置過程、すなわち修正した最小値カット分割アルゴリズムであって論理素子の分割線を横断する移動の要否の決定を
（1）前記分割線を横断する前記論理素子への接続の数を最小にすること、および
（2）前記遅延限界値Ｕ(c)が前記概算の遅延Ｄ(c)を下まわる前記素子への前記接続の数を最小化すること
の目的に基づき行う最小値カット分割アルゴリズムを用いて行う初期配置過程を行う過程と、
（ｄ）前記論理設計の前記プログラマブルロジックデバイスへのレイアウトを完結させる過程
とを含む方法。
【請求項１２】
前記目的（２）が、前記論理素子への前記接続の少なくとも一つをその一部とする少なくとも一つの経路に沿う概算の遅延を最小化する請求項１１記載の論理設計のレイアウト方法。
【請求項１３】
前記目的（２）が、前記素子への接続についてのタイミング損失の合計を最小化する請求項１１記載の論理設計のレイアウト方法。
【請求項１４】
前記タイミング損失の各々が前記遅延限界値Ｕ(c)の関数であり、また、前記分割線を横断する接続のより不良の場合の遅延Ｗ(c)と前記分割線を横断しない接続のより良好な場合の遅延Ｂ(c)との関数でもある請求項１３記載の論理設計のレイアウト方法。
【請求項１５】
前記より不良の場合の遅延Ｗ(c)および前記より良好の場合の遅延Ｂ(c)が概算遅延、すなわち前記接続の用いた経路が前記プログラマブルロジックデバイス間でとくに高速と指定された経路付与資源以外のその接続への可能な最高速の経路であると仮定することによって計算した概算遅延の関数である請求項１４記載の論理設計のレイアウト方法。
【請求項１６】
前記より不良の場合の遅延Ｗ(c)およびより良好な場合の遅延Ｂ(c)の関数が前記より不良の場合の遅延Ｗ(c)とより良好の場合の遅延Ｂ(c)との差の関数である請求項１４記載の論理設計のレイアウト方法。
【請求項１７】
前記差の関数Ｃdelayが次式、すなわち
Ｗ(c)＜Ｕ(c)／２の場合、Ｃdelay(c)＝０、
Ｕ(c)＞Ｗ(c)＞Ｕ(c)／２の場合、Ｃdelay(c)＝Ｗ(c)−Ｂ(c)、
Ｗ(c)＞Ｕ(c)の場合、
Ｃdelay(c)＝Ｗ(c)−Ｂ(c)＋［Ｗ(c)−Ｂ(c)，Ｕ(c)の大きい方］
で決定される請求項１６記載の論理設計のレイアウト方法。
【請求項１８】
論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
（ａ）前記論理設計を機械可読な形で特定する過程と、
（ｂ）前記接続の各々について遅延限界値Ｕ(c)を選択する過程と、
（ｃ）前記接続の各々について概算遅延Ｄ(c)を決定する過程と、
（ｄ）ひと組の位置の間で少なくとも三つの論理素子を循環させることを含み、前記位置を、前記少なくとも二つの論理素子に取り付けた接続に関連するタイミング損失(c)、
すなわち各々が
（1）対応の遅延限界値Ｕ(c)、および
（2）対応の概算遅延Ｄ(c)
の関数であるタイミング損失の関数として選んだ配置改善過程を行う過程と、
（ｅ）前記論理設計のレイアウトを前記プログラマブルロジックデバイス上に完結させる過程と
を含む方法。
【請求項１９】
前記概算遅延Ｄ(c)が、とくに高速と指定されている前記プログラマブルロジックデバイス内の経路付与資源を用いることなくその接続に利用可能な最高速の経路を各接続ｃについての経路とすると仮定している請求項１８記載の論理設計のレイアウト方法。
【請求項２０】
前記複数個の論理素子の各々についてのタイミング損失の前記関数が前記複数個の論理素子の各々への各接続についてのタイミング損失(c)の関数である請求項１８記載の論理設計のレイアウト方法。
【請求項２１】
前記タイミング損失(c)の関数が前記複数個の論理素子の一つへのすべての接続についての前記タイミング損失の合計を含む請求項２０記載の論理設計のレイアウト方法。
【請求項２２】
タイミング損失の関数として論理素子のために選ばれた位置の各々が次式、すなわち
Ｇｘ＝■［損失(c)＊Ｘ(c)］／■［損失(c)]
Ｇｙ＝■［損失(c)＊Ｙ(c)］／■［損失(c)]
ここで
損失(c)は前記論理素子に一端でつけられた接続ｃのタイミング損失であり、
Ｘ(c)は前記接続ｃのもう一つの端における論理素子のＸ座標であり、
Ｙ(c)は前記接続ｃのもう一つの端における論理素子のＹ座標であり、
加算■は前記論理素子に至る全ての接続ｃについて行われるものである
から選ばれる請求項１８記載の論理設計のレイアウト方法。
【請求項２３】
前記タイミング損失(c)の各々が、
前記概算遅延Ｄ(c)が前記遅延限界値Ｕ(c)に等しいとき設定値Ｆに等しく、
Ｕ(c)よりも小さい概算遅延Ｄ(c)について差Ｄ(c)−Ｕ(c)の第１の関数として零に向かって減少し、
前記遅延限界よりも大きい概算遅延について概算遅延Ｄ(c)マイナス遅延限界Ｕ(c)の第２の関数として増加する
請求項２２記載の論理設計のレイアウト方法。
【請求項２４】
前記第１の関数がＦ＋Ｄ(c)−Ｕ(c)であり、前記第２の関数がＦ＋（２＊（Ｄ(c)−Ｕ(c)））である請求項２３記載の論理設計のレイアウト方法。
【請求項２５】
論理素子および接続から成る論理設計をプログラマブル論理ブロックと、配線セグメントと、前記配線セグメントを経路形成するように接続する手段とを有するプログラマブルロジックデバイス上にレイアウトする方法であって、
前記論理設計を機械可読な形で特定する過程と、
前記接続の各々について遅延限界値Ｕ(c)を選択する過程と、
概算遅延Ｄ(c)を伴うレイアウト過程を、前記遅延限界値Ｕ(c)の少なくともいくつかを前記概算の遅延Ｄ(c)が超えることがないように行う過程と、
前記概算の遅延Ｄ(c)を計算する過程と、
前記概算の遅延Ｄ(c)の関数である修正遅延限界値Ｕｒ(c)を計算する過程と、
前記修正遅延限界値Ｕｒ(c)を用いて前記論理設計についての次のレイアウト過程を行う過程と、
前記論理設計の前記プログラマブルロジックデバイスへのレイアウトを完結させる過程と
を含む方法。
【請求項２６】
前記論理設計における接続について下側境界接続遅延Ｌ(c)を概算する過程をさらに含み、
前記接続の各々についての遅延限界値Ｕ(c)の選択過程が、前記遅延限界値の各々を前記下側境界接続遅延の対応するもの以上に選ぶように行われ、
前記修正遅延限界値Ｕｒ(c)を計算する過程が、前記修正遅延限界値を前記下側境界Ｌ(c)の関数にもするように行われる
請求項２５記載の論理設計のレイアウト方法。
【発明の詳細な説明】
発明の分野
この発明は回路設計をその設計を実動化する物理的な集積回路構造に変換することに関する。より詳しくは、この発明はユーザの特定するタイミング要求を回路配線が満たすように、回路設計を上記物理的構造上に配置することに関する。
背  景
プログラマブルロジックデバイスは多様な論理設計の任意のものを実動化するのに利用できる。ユーザが論理回路を設計し、ロジックデバイスのプログラミングをコンピュータに指示するか、または所望の論理設計を実動化するためのひと組のマスクを設計するのにソフトウェアを用いる。ロジックデバイス内の部分間で授受される信号のタイミングは、物理的構造におけるトランジスタ群へのユーザ回路素子の配置およびそれに伴う金属配線の配列によって部分的に決まる。一般的に配線が長くなると遅延が長くなり、実際のタイミングは静電容量、抵抗、および信号が通過すべき論理素子の数に左右される。トランジスタがより速くなったので、信号のデバイス通過に伴う遅延の主な部分は配線に起因する。したがって、配線セグメントによる遅延を最小にするようにそれら配線セグメントを注意深く選ぶことが必要になってきた。
この発明の方法を用いてプログラムできるロジックデバイスにはマスクプログラマブルなものもフィールドプログラマブルなものも両方とも含まれる。マスクプログラマブルデバイスはデバイスの製造中に工場でプログラムされ、フィールドプログラマブルデバイスはユーザが完成品を購入したのちにプログラムする。マスクプログラマブルデバイスは、集積回路基板内に形成されたトランジスタ群のアレーを備えるゲートアレー構造と、その構造の上の層に形成した通常は一つの制御ゲート層とを含む。これら標準の層の上に通常は二つまたは三つの金属化層により個別層を形成し、それによってユーザ所望の回路を形成するようにそれらトランジスタを相互結合する。
フィールドプログラマブルデバイスにはプログラマブルロジックアレー（ＰＬＡ）とフィールドプログラマブルゲートアレー（ＦＰＧＡ）デバイスとが含まれる。ＰＬＡデバイスは、ＯＲゲートのアレーに入力を供給し論理積の和となる論理を実動化するＡＮＤゲートのアレーを一般に含んでいる。ＦＰＧＡデバイスはプログラム可能な相互配線線路で互いに接続された複数個の論理ブロックまたはモジュールを含む。これらプログラム可能なブロックは多様な機能を実動化するようにプログラムでき、またプログラム可能な相互配線はユーザの設計を実動化する全体構成を形成する多様な方法で相互接続を形成する。次に述べる詳細な説明ではＦＰＧＡを用いるので、ここでＦＰＧＡ構造をより詳細に述べておく。
ＦＰＧＡ構造
図１は代表的な島型フィールドプログラマブルゲートアレー（ＦＰＧＡ）構造を表わす。複数の回路配置融通性ある論理ブロック（ＣＬＢ）がユーザの選択した機能を実動化するが、ユーザ所望の全体としての機能を発揮するには相互接続しなければならない。図１のＣＬＢは東西南北の各方向に延びる接続導線をそれぞれもつものとして示してある。実際の回路には通常図示のものよりも多くの導線があるが、この図はＦＰＧＡ構造を表わしている。これらＣＬＢの相互接続用にこのチップには配線セグメントが備えられている。これらＣＬＢ導線は例えば導通トランジスタまたはアンチヒューズにより配線セグメントにプログラム可能な形で接続できる。マスクプログラムを施した代替的構造では、これら導線および配線セグメントは金属配線層間にバイアホールを設けることによって相互接続できる。
また、ＦＰＧＡには配線セグメントをノードで選択的に相互接続するスイッチボックスＳＢＸが設けてある。これらスイッチボックスはノードに至る配線セグメント間の種々の内部相互接続を提供できる。二つの例を次に述べる。
ＳＢＸの構成は図２Ａのように示されよう。すなわち、図示のとおり、西側から延びる配線Ｗ１−Ｗ６の各々は、北、東および南側に各々からの配線Ｎ１−Ｎ６、Ｅ１−Ｅ６、およびＳ１−Ｓ６の各一つに接続できる。接続はダイヤモンドコネクタＤ１乃至Ｄ６経由で形成される。トランジスタによる構成の場合は、このダイヤモンドコネクタは図２Ｂに示すとおり配線Ｎ、Ｅ、ＳおよびＷを六つのトランジスタで選択的に接続する形になる。このような構成によって、いずれかのＣＬＢ導線とそれ以外のいずれかのＣＬＢ導線との間に接続を形成することが可能である。ただし、図２ＡのセグメントＷ１上の信号のセグメントＮ２への接続を可能にするなどの「レーン変更」は不可能である。
より融通性のあるスイッチング構成を図３に示す。図３においては、簡潔化のために西配線セグメントからの相互接続だけを示してある。西配線Ｗ１を、北配線Ｎ１およびＮ２、東配線Ｅ１およびＥ２、南配線Ｓ１およびＳ２のいずれかと接続できることがわかる。西配線Ｗ３を北配線Ｎ１およびＮ２、東配線Ｅ１およびＥ２、南配線Ｓ１およびＳ２にも接続できる。西配線Ｗ２は北配線Ｎ２およびＮ３、東配線Ｅ１、Ｅ２およびＥ３、南配線Ｓ２およびＳ３に接続できる。他の三つの方向の各々についても同じ選択が通常提供されるが簡潔化のために図示してない。
図１には配線セグメントの三つの型が示してある。配線セグメントＳＬは二つのスイッチボックスＳＢＸの間に延びる短セグメントである。二倍長配線セグメントＤＬが短セグメント二つ分の長さにわたって延びている。配線セグメントＬＬは長セグメントでありＦＰＧＡデバイスの全長にわたって延びているか、場合によってはその半分の長さにわたって延びている。これら長さの異なるセグメントは互いに異なる目的を意図したものである。すなわち、長セグメントはクロック信号などの広ファンアウト信号に有用であり、二倍長セグメントおよび単一長セグメントは局部経路付与に最適である。一つのＣＬＢからもう一つのＣＬＢへの経路を辿る信号の受ける遅延は使われた配線セグメントの種類と信号の通過したノードとの数とに左右される。
定  義
論理設計では、一つの信号源論理ブロックまたはレジスタから一つの供給先論理ブロックまたはレジスタへの導体経路を接続という。一つの信号源で発生した信号をいくつかの供給先に送る必要があることが多い。一つの信号源からそれら供給先全部に至る経路の集まりが網である。論理設計を実動化するハードウェアでは、その接続または網の一部を構成する配線の単一片をセグメントと呼ぶ。一つのセグメントはノードでもう一つのセグメントに相互接続できる。通常、一つの配線セグメントはノードでいくつかの他の配線セグメントのいずれかと相互接続できる。経路とは、一つのパッケージピンまたはクロック制御下のレジスタからもう一つのパッケージピンまたはクロック制御下のレジスタに延びる接続または結合用論理ブロックの組をいう。
タイミング分析に相互接続配線を含める動機
セグメントどうしのノードにおける接続をトランジスタの導通化によって行う場合は、その接続は配線セグメントおよびトランジスタの両方を含む。トランジスタは導通状態でも有限の抵抗値を有するので、その接続は信号経路に有限のＲＣ遅延を抱え込ませる。また、素子の微細化に伴い、配線による遅延の割合が増大する。接続遅延がトランジスタ接続デバイスの全遅延の主要部になった。布線ずみのＡＳＩＣデバイスについても、素子の微細化が進んで信号の全遅延に対して配線が大きく影響するようになり始めた。過去においては、例えば多数ゲートのＡＳＩＣデバイスを形成する際には、配置の最適化がタイミングにもっとも大きい影響を及ぼすのでその最適化に研究努力の大部分が傾注された。ＦＰＧＡなどのデバイスでは、多様な信号経路形成資源が多様な遅延特性を備える。したがって、素子配置と同様に経路もロジックデバイスのタイミングに多大の影響を及ぼし得る。
集積回路ロジックデバイス上に設計回路をレイアウトすること
ユーザの論理設計をロジックデバイスにレイアウトするためのソフトウェアはその設計を実動化するようにハードウェアをプログラムするひと組のコマンドにその設計を変換する一連のステップを行う。それらステップには通常次のステップが含まれる。
１）設計値の入力：ユーザ回路の図形表示の概略的捕捉、または実現すべき機能とそれら機能間のつながりとを記述したハードウェア記述言語の読取り。設計値の入力には状態とそれら状態間で実動化すべき遷移とのリストの読取りが含まれることもある。
２）機能の検証とロジック合成：機能の検証はユーザの設計が論理的な意味を成しているかどうかを見るための点検を含む（例えば出力を共通接続にすることを避ける）。ロジック合成は、設計値の入力時に入力された情報を、表現の単純化、式の中の項数の削減、および設計値の実動化またはユーザ設計の最適化に必要な面積の削減のために書き換えることを伴うロジック最適化を含む。
３）マッピング：マッピングはユーザの論理ゲートをユニット、すなわち各々を論理デバイスの対応ユニット（例えばジリンクス社ＦＰＧＡ関数発生器）で実動化できるユニットにグループ分けすることを含む。
４）初期配置：論理設計のユニットは各々が論理デバイスの特定のユニット（例えばジリンクス社ＦＰＧＡ論理ブロック）に割り当てられた複数の部分に分割される。このステップには、ベル・システム・テクニカル・ジャーナル１９７０年２月号第２９１−３０７頁所載のビー．ダブリュー．カーニハン（B.W.Kernighan）およびエス．リン（S.Lin）著の論文「図形分割のための効率的な発見的手法」に説明されているような最小値カットアルゴリズム、またはアイ・イー・イー・イー・トランスアクションズ・オン・サーキッツ・アンド・システムズ  第ＣＡＳ−２６巻第６号１９７９年６月３日付所載のニール  アール．クイン  ジュニア（Neil R. Quinn, Jr.）およびメルビン  エイ．ブロイアー（Mlvin A. Breuer）著の論文「印刷配線基板のための力の向きの部品配置方法」に説明されているようなばね弛緩アルゴリズムを用いることができる。
５）配置改善：初期配置は接続全体に必要な配線の全長を最小化するなど配置の品質のある尺度を改善するように調整する。
６）経路：相互接続線は、ユニットの入力線および出力線の各々をユーザの設計における接続、すなわちユーザのロジックの互いに分割された部分をつなぐ接続に対応させて接続するように選択する。一般には、信号源論理ブロックから供給先論理ブロックへの信号の接続ルートは、それら信号源および供給先の間の連続的接続を形成するように一度に１ステップずつセグメントを追加して選択する。
７）評価および実行可能な対話的改善：全部のロジックをデバイスに配置してそれらロジックを相互接続するすべての線を形成するソフトウェアの性能を評価し、ユーザのロジックの実動化におけるデバイス全体の速さも併せて評価する。通常、ユーザは、一つのチップ全体のロジックの処理を最小の時間内（または特定の時間内）に行うこと、または最大クロック速度でロジックデバイスを動作させることを求める。いずれの場合も性能はもっとも遅い信号経路の始点から終点まで信号を伝達するのに要する時間で評価する。信号経路は通常一つまたはそれ以上の論理ブロックを通るのでいくつかの接続点を含み得る。
８）デバイスプログラミング：最後に、上述のステップが首尾よく進んだ場合は、形成すべき接続および形成すべきでない接続に対応するビットストリームで、上述のステップで決定されたユーザの設計を実動化するようにデバイスを回路配置する。このビットストリームは、デバイスがＳＲＡＭ  ＦＰＧＡの場合はそのデバイスにロードされ、デバイスがアンチヒューズＦＰＧＡの場合はプログラム対象のアンチヒューズへのアドレスに用いられ、デバイスがマスクプログラマブルＡＳＩＣの場合はマスクのパターン形成に用いられ、あるいはそのデバイスが所期の機能を発揮するようにデバイス内に特定の接続を形成するのに適宜用いられる。
結合形成のためのサーチアルゴリズム
信号経路形成の問題は集積回路ＦＰＧＡ内の配線の経路形成だけでなく、多数の応用分野で生じており、これまで広範囲にわたり検討されてきた。信号供給源から供給先に至る利用可能な接続の発見のために多数のサーチアルゴリズムが開発されてきた。それらの中には、深さ先行サーチ、すなわち信号経路へのセグメントの付加を何らかの障害により前進が止まるまで行い供給先への到達まで代替的経路を試みるサーチが含まれる。もう一つの例としては、幅先行サーチがあり、そのサーチでは信号供給源から延びるあらゆる実現可能なセグメントをまず試み、次に供給先への到達まであらゆる実現可能な第２のセグメントを試みる。より複雑なアルゴリズムでは供給先についての方向情報を用い、もっとも見込みのある方向をまずサーチする。これらのアルゴリズムのいずれによっても、信号供給先への経路は、それが存在すれば結局見出される。複数の点の間の経路を選択するのに有用ないくつかの方法は、カリフォルニア州パロアルト所在のティオガ（Tioga）出版社から１９８０年に発行されたニルス  ジェイ．ニルスソン（Nils J. Nilsson）の著者「人工知能の原理」およびカルフォルニア州ロスアルトス所在のウィリアム  カウフマン社（William Kaufmann, Inc.）・カリフォルニア州スタンフォード所在のヒューリステック  プレス社（HeurisTech Press）から１９８１年に発行されたアブロン  バー（Avron Barr）およびエイ．フィーゲンバウム（A. Feigenbaum）の編著書「人工知能ハンドブック」にも説明されている。
接続を見出す方法は信号供給源から供給先に経路付与すべき信号の各々について通常繰り返される。経路付与があとになるほど空きの経路資源が少なくなり、接続が長く非効率的になり得る。接続付与の総体的結果は、一般に、どの接続に最初に経路付与したかということと、各接続の経路付与に用いたアルゴリズムとに左右される。
レジスタ間の信号授受
通常の論理設計はクロック応動レジスタ（フリップフロップ）とクロック非応動の組合せおよび算術演算機能との両方を用いる。デバイス全体のタイミング（どれほど速くそのデバイスをクロック駆動できるか）によって、信号が一つのクロック応動レジスタの出力から次段のクロック応動レジスタにどれほど速く伝搬され得るかが決まってくる。この信号伝搬速度は、一つのレジスタの出力ともう一つのレジスタの入力との間で処理されるべきいずれかの論理がどれほど迅速にその出力を生ずるかと、信号が接続すなわち一つのレジスタからもう一つのレジスタへの経路に沿って配置した組合せ論理ブロックを接続する配線セグメントおよびノードを通じてどれほど迅速に経路付与され得るかとによって定まる。
異なる信号転送には、設計がレジスタの制御に多重クロックを用いている場合は、異なるタイミング要求があり得る。
デバイス性能の改善−臨界経路
使用された経路の各々の時間遅延は経路が選択され次第計算できる。ユーザは一つのクロック応動レジスタと次のレジスタとの間の信号伝搬の最大遅延を最小に抑えることに関心がある。すなわちこの最大遅延によって、ユーザの機能の実動化においてデバイスに使用可能な最大クロック速度が定まるからである。したがって、通常ユーザはレジスタ間経路タイミングを問題にする。性能上の要求は、一つのレジスタから何らかの組合せロジックを経て次のレジスタに結果を転送するのに要する時間で特定することが多い。通常一つの経路が最低速度の経路になり、臨界経路と呼ばれる。この臨界経路は全体のクロック速度を制限し、したがってデバイスの動作速度を制限する。デバイス全体の速度を改善するにはこの臨界経路による遅延を減らさなければならない。したがって、この臨界経路の遅延の低減に努力が傾注されてきた。この問題について広範囲にわたる努力がなされてきた。
全体配置の分析対各素子についての決定
上述のステップの各々はその設計の各部分についての多様な細部決定を伴う。特定のステップの各々は特定のアルゴリズムで実動化される。例えば、ロジックデバイス内のどの論理ブロックでユーザ設計（分割および配置）のどの論理ゲートを実動化するかの決定をする必要があり、また、物理的デバイス内のどの配線で信号の各々を一つのブロックから次のブロックに伝達するかを決定する必要がある。これら個々の決定は、全体のデバイス性能を考慮に入れてないアルゴリズムで逐次的に通常行われる。ある段階でそれら決定の結果を総合的見地から評価しなければならない。この発明はこの総合的見地に関し、個々の上記ステップが高い総合的評価をもたらすことを確実にすることに関する。
配置および経路付与ツール
初期配置および経路付与分析は性能の総合的評価の結果を接続への重みの調節によって用いることを試み、経路付与の優先順位づけおよび品質の尺度の計算のためにそれら重みを用いた。プロジーディングズ・オブ・トウェンティファースト・デザイン・オートメーション・コンファレンス（Proc. 21st Design Automation Conference）第２７８−２８１頁（１９８４年）所載のエイ．イー．ダンロップ（A.E.Dunlop）、ヴィ．ディー．アグラワル（V.D.Agrawal）、およびディー．エヌ．ドイチュ（D.N.Deutsch）著の論文「臨界経路重みづけを用いたチップレイアウト最適化」、およびプロシーディングス・オブ・トウェンティセカンド・デザイン・オートメーション・コンファレンス（Proc. 22nd Design Automation Conference）第１２４−１３０頁（１９８５年）所載のエム．バーンスタイン（M.Bernstein）およびエム．エヌ．ユーセフ（M. N. Youssef）著の論文「タイミングの影響によるレイアウト設計」記載の手法は、接続についての遅延概算値を使用してタイミング分析を行い、分割時には臨界経路上の信号により大きい重みをつけ、経路付与時にはより高い優先順位を与えた。ＶＬＳＩシステムズ  デザイン（VLSI Systems Design）１９８６年５月号第６３−７３頁所載のエス．テイグ（S.Teig）、アール．エル．スミス（R.L.Smith）およびジェイ．シートン（J. Seaton）著の論文「セル型集積回路のタイミング駆動によるレイアウト」はタイミング分析と配置・経路ステップとの相互作用の重要性を強調した。しかし、臨界経路に重みを割り当てる方法は記載されていない。上記デイグほかの論文はタイミングと位置づけおよび経路付与とをいかに関連づけるかについて一般的に述べているだけである。プロシーディングズ・オブ・アイシーシーエイディー’８９（Proc ICCAD '89）、第９４−９７頁（1989年）所載のエム．マレク−サドフスカ（M. Marek-Sadowska）およびエス．ピー．リン（S. P. Lin）著の論文「セル型ＩＣのタイミング駆動によるレイアウト」は初期配置のための反復的最小値カットアルゴリズム、すなわち非臨界接続にはその弛緩と反比例した重みを与えるアルゴリズムを記載している。弛緩とは転送の完了までの許容時間とその転送に費された時間との差である。臨界経路（弛緩が小さいまたは負である経路）には非臨界経路よりもわずかに大きい重みを与えてある。プロシーディングス・オブ，ユーローピアン・デザイン・オートメーション・コンファレンス（Proc. European Design Automation Conference）第３１７−３２１頁（１９８０年）所載のジェイ．ガーバーズ（J.Gerbers）、ビー．コーテ（B. Korte）、エッチ．ジェイ．プロメル（H.J.Promel）、イー．シャイエツケ（E. Scheietzke）、およびエイ．シュテーガー（A. Steger）著の論文「経路付与情報およびタイミング情報に基づくＶＬＳＩ配置」では、再重みづけ手法、すなわち経路付与接続の重みをその接続が臨界経路上にあるとわかった段階で１だけ単純に増加させる手法を用いて、反復的分割および近似的経路付与（チップの経路付与を割り当てるべき概括的領域の選択であって、用いるべき特定の線の選択ではない）により性能の改善を得ている。この変動していく重みが分割形成の損失と経路付与順序に影響を及ぼす。
これらの重み調整方法において生ずる問題は解が発振し得ることである。臨界経路の改善に伴って他の経路が臨界経路になり、２回目の反復でも１回目の反復以上のよい結果は得られないかもしれない。すなわち、重み調整方法は一般に単調によい結果に進むのではない。
レイアウトの小変更後にタイミング分析を繰り返す動的方法
もう一つの手法は、レイアウト（レイアウトとはユーザの概略図の中のロジック、レジスタ、接続線のすべてを物理的デバイスの対応素子に割り当てる総体的機能をいい、マッピング、配置、および経路付与を含む）をデバイス性能（経路遅延の原因となる）の総体的分析とレイアウト過程（個々の素子および線の位置の選択）との間の頻繁な対話によって行うやり方である。プロシーディングス・オブ・トウェンティセブンス・デザイン・オートメーション・コンファレンス（Proc. 27th Design Automation Conference）第８４−８９頁（１９９０年）所載のダブリュウ．イー．ドナス（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）第３７０−３７５頁（１９８９年）所載のエム．エイ．ビー．ジャクソン（M.A.B.Jackson）およびイー．エス．クー（E.S.Kuh）著の論文「セル型集積回路の性能駆動回路配置」に記載されるとおりである。これと関連した論文、すなわちプロシーディングス・オブ・アイシーシーエイディ’９０（Proc. ICCAD '90）第３２８−３３１頁（１９９０年）所載のエム．エイ．ビー．ジャクソン（M.A.B. Jackson）、エイ．スリニヴァサン（A. Srinivasan）、およびイー．エス．クー（E.S.Kuh）著の論文「性能駆動回路配置用の高速アルゴリズム」およびプロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス（Proc. 28th Design Automation Conference）、第６３６−６３９頁（１９９１年）所載のエイ．スリニヴァサン（A. Srinivasan）著の論文「小型セル集積回路の性能駆動初期回路配置用のアルゴリズム」は２次のプログラミングを用い、遅延要求または制約の数、すなわち高性能回路配置をより効率的に達成するための論理ブロックの配置の選択において考慮すべきそれら要求および制約の数を削減した。
プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス（Proc. 28th Design Automation Conference）第６２０−６２５頁（１９８１年）所載のアール．エス．ツェイ（R.S.Tsay）およびジェイ．ケール（J.Koehl）著の論文「回路配置における性能最適化のための分析的回路網重みづけ手法」は接続再重みづけ、すなわちタイミング分析からの入力として個々接続遅延へのひと組の正確な限界値を要する接続再重みづけのための式を提供している。タイミング分析の結果を回路配置および経路付与への指針に変換することは、これまで提案されてきた多数の発見法が示すとおり、重要である。
弛緩
論理設計の一つの接続におけるタイミング要求が満たされずその論理設計のもう一つの接続におけるタイミング要求が余裕時間をもって満たされた場合は、回路素子の位置づけおよび経路の調整を、その余裕ある接続のタイミングを上記要求不充足の接続の高速化のために遅くして結果的にすべての接続および経路が要求を満たすように、行うことが可能であることが多い。この余裕時間を弛緩と呼ぶ。一つの経路の弛緩はＲ(p)−Ａ(p)と定義される。ここで、Ｒ(p)は経路ｐに沿う伝搬時間の要求値であり、Ａ(p)はその経路ｐに沿う実際の合計の伝搬時間である。正の弛緩はその接続が余裕時間をもって形成されたことを示す。負の弛緩は時間要求値が満たされなかったことを示す。零に近い（正の）弛緩は時間要求値が辛うじて満たされたことを示す。正の弛緩をもつように経路付与された経路は負の弛緩をもつそれ以外の経路を時間要求充足のために経路変更することがそれによって可能になる場合は、より小さい弛緩値の経路に変更できる。
経路接続のための弛緩計算
通常の回路にはファンイン（回路素子に複数信号が入る）とファンアウト（出力信号が複数の素子に加えられる）との両方がある。アイビーエム・ジャーナル・オブ・リサーチ・アンド  ディベロップメント（IBM J. Res. Develop）第２６巻第１号第１００−１０８頁（１９８２年）所載のアール．ビー．ヒッチコック（R.B.Hitchcock）、ジー．エル．スミス（G. L. Smith）およびディー．ディー．チェン（D.D.Cheng）著の論文「コンピュータハードウェアのタイミング分析」は個々の接続の弛緩の計算のしかたを記載している。一つの接続の弛緩、すなわち弛緩（ｃ）は
（１）    弛緩(c)＝R(c)−A(c)
で算出される。ここで
Ｒ(c)は接続ｃの出力端における信号のもっとも早い到達時間要求値、
Ａ(c)は接続ｃの出力端における信号のもっとも遅い到達時間実測値。
この弛緩(c)の計算のために二つのリニア時間計算を行う。図５は、ファンインおよびファンアウトの両方を含み個々の接続を既知の接続遅延および総体的経路要求からいかに決定するかを示す事例を図解している。総体的要求はレジスタＲ９０１、Ｒ９０２およびＲ９０３への信号印加後３０ナノ秒以内に三つの供給先Ｒ９０４、Ｒ９０５、Ｒ９０６に到達することである。この要求は供給先Ｒ９０４、Ｒ９０５およびＲ９０６内の数字「３０」で示してある。接続遅延は各接続Ｃ９０１乃至Ｃ９１３上の楕円内に示してある。これら接続遅延の数字は接続のセグメントにおける導線の長さに起因する遅延を表わしており、ブロックまたはレジスタ内部における信号の伝搬遅延と信号がレジスタに入力される際の信号スイッチング時間についてのセットアップ遅延とを含む。
上記到達時間実測値Ａ(c)の計算は到達時間既知の点から順方向に（または基準点から順方向）に進む。図６において、到着時間実測値はブロックへの入力に示してある。Ｒ９０１、Ｒ９０２およびＲ９０３における到達時間は０ナノ秒として示してある。接続における遅延がこれら時間に加算され後段のブロックへの入力における到着時間が得られる。単純化のために、ブロック内の遅延はそのブロックの出力側接続の遅延に算入してある。一つのブロックにいくつかの信号を印加する場合は、もっとも遅い到達時間を用いなければならない。すなわち、そのブロックからの出力信号は最後の入力信号の到着まで有効信号にならないからである。例えば、接続Ｃ９０２、Ｃ９０３およびＣ９０４のそれぞれの接続遅延３、４および２ナノ秒はブロックＢ９０２への信号到着時点をそれぞれ３、４および２とする。これらのうちもっとも遅い４ナノ秒の時点が、接続Ｃ９０８への出力端子に出力信号が生じて入力信号をブロックＢ９０４に８ナノ秒後に到達させる時点となる。このようにして遅延は回路を通じて順方向に伝搬される。
図７に示すとおり、要求されている到達時間Ｒ(c)は信号の到達すべきレジスタから逆方向に伝搬される。接続Ｃ９０９における７ナノ秒の接続遅延は、信号が供給先Ｒ９０４に３０ナノ秒までに到達するには２３ナノ秒までにＲ９０１から出力されなければならないことを意味する。供給先Ｒ９０５要求および接続Ｃ９１０から派生するもう１つの要求は、信号が２４ナノ秒までにＲ９０１から出て３０ナノ秒までに供給先Ｒ９０５に到達しなければならないことである。しかし、供給先Ｒ９０４はより早い要求到達時間を課している。一方、Ｒ９０１には、Ｒ９０５を遅延３ナノ秒の接続Ｃ９１２、遅延４ナノ秒のＣ９０８および遅延３ナノ秒のＣ９０２との組合せにより２０ナノ秒のさらに早い到達時間要求が課される。したがって、３０ナノ秒までに信号がＲ９０４、Ｒ９０５およびＲ９０６に到達するという要求を満たすためのＲ９０１からの出力時点は２０ナノ秒までである。到達時間要求値Ｒ(c)の計算はその要求の特定された点から接続を通って逆向きに伝搬する。
いずれの接続においても、その接続への到達時間のもっとも遅い実測値をその接続へのもっとも早い到着時間要求値から減算することによって弛緩を算出することが可能である。図８は接続の各々についての弛緩Ｓ、すなわち到達時間実測値をその接続に順方向に伝搬し到達時間要求値をその接続に逆方向に伝搬して決定した弛緩Ｓを示す。
零弛緩アルゴリズム
プロシーディングス・オブ・アイシーシーエイディ’８７（Proc. ICCAD '87）第８８−９１頁（１９８７年）所載のピー．エス．ハウグ（P.S.Hauge）、アール．ネア（R.Nair）、イー．ジェイ．ヨッファ（E.J.Yoffa）著の論文「予測可能な性能のための回路配置」は零弛緩アルゴリズム（ＺＳＡ）を導入した。このアルゴリズムは、合計がユーザの要求値以下の接続遅延の初期組合せを設定し、これら初期接続遅延に基づき弛緩を算出することによって始まる。これら初期遅延は接続遅延限界値、すなわち利用可能な弛緩を使い切ってその限界値に等しい接続遅延を有するいずれかの経路がちょうどユーザの要求に合うようになる値に置換する。これら接続遅延限界値は次に配置・経路付与ツールによって回路素子および接続のための受入れ可能な位置および経路の選択に使われる。これら限界値によって、上記配置・経路付与ツールは上記位置および経路の選択をより厳しい要求で可能になるよりは容易に方向づけされるが、各接続がその接続遅延限界値に達する場合は全体としてタイミング要求が満たされることを保証する。零弛緩アルゴリズムツールは、一つの経路ｐの弛緩をその経路ｐにある個々の接続に分散させることによって限界値を決定するのに経路弛緩情報を用いる。ハウグほか（Haug et al）によると、弛緩は経路沿いの接続に一様に分散させる。代わりに、プロシーディングス・オブ・トウェンティエイス・デザイン・オートメーション・コンファレンス（Proc. 28th Design Automation Conference）第６２６−６３１頁（１９９１年）所載のダブリュウ．ケイ．ルーク（W.K.Luk）著の論文「タイミング駆動レイアウトのための高速物理的制約発生器」に記載されるとおり、たとえば弛緩はファンアウトあたりの静電容量またはファンアウトあたりの静電容量変化などの物理的尺度に比例して分散させる。
これら遅延限界値はそれを全面的に採り入れればユーザの要求が満たされる旨の示唆である。他の限界値が余地を残して満たされていればいくつかの示唆された遅延限界値が満杯になっていない場合でもユーザの要求は満たされよう。
プロシーディングズ・オブ・アイシーシーエイディー’９０（Proc ICCAD '90）第２４−２７頁（１９９０年）所載のエッチ．ユーセフ（H.Youssef）およびイー・シュラゴヴィッツ（E.Shragowitz）著の論文「正しい性能のためのタイミング制約」においては、経路の弛緩は次式に比例してその接続に分散されている、すなわち
（２）    重み(c)＝Lf(c)＊AcL(c)
ここで
ＬＦ(c)は接続ｃの供給源ピン（論理ブロック出力）上の単位負荷（ファンアウト）あたりの遅延、
ＡｃＬ(c)は負荷を接続ｃに接続することにより生ずる静電容量である。このように、ユーセフおよびシュラゴヴィッツは弛緩を経路の各部にその経路のその部分で生じそうな遅延に従って分散させることを試みている。
一つの経路の弛緩をその経路内の接続に分散させる対話式の手順が上述の論文に記載されている。全弛緩のうち接続ｃに分配されるべき部分を表わすｆ(c)は
（３）    ｆ(c)＝重み(c)／最大［重み(p)］
ここで
重み(c)は上述の式（２）から定まる接続ｃの重みであり、
重み(p)は経路ｐの重みであり経路ｐ沿いの全ての接続重みの合計であり、
最大［重み(p)］は接続ｃを含むそれら経路の最大重み(p)である。
各反復において、接続の許容可能な遅延Ｕ(c)はｆ(c)＊弛緩(c)だけ増加する。
したがって、
（４）    U(c)new＝U(c)old＋(f(c)*弛緩(c))
図９は古い遅延Ｕ(c)oldへのｆ(c)＊弛緩(c)の値の加算に基づく新しい遅延限界値Ｕ(c)newの計算を示す。部分ｆ(c)の式は一つの経路の弛緩が負になるほどに大きい値の弛緩を分散させることはない。
従来の方法は接続遅延のどの値が現実的であるかについての情報を利用していない。例えば、初期遅延が（ユーセフおよびシュラゴヴィッツの示唆するとおり）零であると仮定すれば、いくつかの示唆された遅延限界値Ｕ(c)は小さすぎて実現できない。一方、初期遅延限界値が（上記ハウグほかの示唆するとおり）「物理的に妥当」であると仮定すれば、示唆された遅延限界値は不必要に大きいであろう。いずれにしても遅延限界示唆値はそれら限界値を用いるレイアウトツールのための最良の指標を提供するものではない。
必要なものは接続遅延についての示唆された上限値の最適化した組合せである。
発明の概要
部分的にでき上がったレイアウトがあれば、そのレイアウトの完成版で各遅延限界の示唆値Ｕ(c)が得られるはずである。したがって、限界値には達成可能性の高い値を選択しなければならない。この発明は下側境界遅延に関する情報に基づく遅延限界値を示唆し、その示唆した遅延限界値における反復的改良をより早い段階のレイアウトにおいて達成した遅延の検査によって達成する。
この発明はロジックデバイス上へのユーザ論理設計のレイアウト、すなわちレイアウトツール用の指針として使用できる遅延限界値を経路の各接続につき示唆することによって特定のタイミング制約に合致したレイアウトを達成する。この発明によると、遅延限界示唆値をレイアウトツール（分割、配置、および経路付与アルゴリズム）用に算出中に遅延限界の初期値が下側の境界遅延、すなわち接続用に最高速の経路を用いて達成可能な境界遅延に設定される。遅延限界値算出用の初期値を下側境界値に設定することによって、達成可能な速さを上まわる速さの遅延限界値が示唆されないことを確実にする。
総体的達成可能性の評価のためにこの発明は既に試みたレイアウトで達成ずみの遅延についての情報を用いる。この発明によると、レイアウトずみの設計品の性能を向上させる際に、下側境界遅延限界値と、反復的タイミング改善用に遅延限界の示唆値を算出した際に達成ずみの遅延値との両方を用いる。好適な実施例においては、遅延の示唆値は達成ずみの遅延と下側境界遅延との間の差の一部であって、その一部ｆ(c)は次式から算出される。すなわち、
ｆ(c)＝重み(c)／最大［重み(p)］
ここで、
重み(c)＝D(c)-L(c)
D(c)＝接続ｃについての遅延の推定値または達成値
L(c)＝接続ｃについて達成可能な下側境界遅延
重み(p)＝経路ｐ上の全接続ｃについての■重み(c)
最大［重み(p)］＝接続ｃを用いた最低速の経路上の重み(p)
このように遅延限界示唆値は達成ずみの遅延と達成可能な低い境界遅延との差に比例して調整する。数値改善の期間中に負の弛緩を有する接続に対する制限は下がるように、また正の弛緩を有する接続に対する制限は上がるようにそれぞれ調整する。このように、反復的数値改善のためにレイアウトツールに示唆された限界値は、個々の接続へのより厳しい限界値の充足の困難度によって接続遅延を割り当てることによって厳しい経路制約の充足を試みる。
【図面の簡単な説明】
図１はジリンクス社の従来技術によるＦＰＧＡ構造を示す。
図２Ａおよび２Ｂは図１におけるスイッチボックスＳＢＸの単純な実動化を示す。
図３は融通性のより高いスイッチボックスＳＢＸを西側配線に利用可能な接続とともに示す。
図４Ａはジリンクス社ＦＰＧＡデバイスに用いられている論理ブロックを示す。
図５は特定の遅延を有する接続により相互接続された論理素子またはレジスタを有する回路設計例を示す。
図６は既知の点から順方向への到達時間実測値の伝搬を示す。
図７は供給先から逆方向への到達時間要求値の伝搬を示す。
図８は図６および７の到達時間実測値および要求値から定まる各接続での弛緩を示す。
図９は零弛緩アルゴリズムによる弛緩分散を示す。
図１０はこの発明の弛緩分散方法を用いたレイアウトのステップの流れ図である。
図１１はこの発明による限界値調整アルゴリズムに用いるステップの流れ図である。
図１２Ａは論理設計の一部である回路網例である。
図１２Ｂは図１２Ａの回路網例における各接続に付加された分数乗算器である。
図１２Ｃは図１２Ｂの分数に経路タイミング制約を乗じて決定した上記回路網内の各接続についての遅延上限値を示す。
図１２Ｄは図１２Ａの回路網についての下側境界接続遅延を示す。
図１２Ｅはレイアウト完成後に図１２Ａの回路網に達成される遅延を示す。
図１２Ｆは図１２Ｄおよび１２Ｅの下側境界遅延と達成ずみの遅延とを用いて算出した分数ｆ(c)を示す。
図１２Ｇは図１２Ａの回路網における接続についての改訂後の遅延上限値、すなわちより厳しい経路制約が適用され、図１２Ｆの分数ｆ(c)の算出のために図１２Ｄおよび１２Ｅからの情報を用いて新しい遅延限界値が決定されたのちの遅延上限値を示す。
図１３は図１０のステップ１０４で行われるステップをより詳細に示す。
図１４はＦＰＧＡデバイスにおける経路付与の一回目通過計算で行われるステップを示す。
図１５はＦＰＧＡデバイスにおける経路付与の反復改善で行われるステップを示す。
図１６は初期配置の期間中に用いうる最小値カット分割アルゴリズムを示すための問題例を示す。
図１７Ａは初期配置の期間中に分割線を横断しない接続上の実際の遅延を概算する際の仮の配置を表わす。図１７Ｂは初期配置の期間中に分割線を横断する接続上の実際の遅延を概算する際の仮の配置を示す。
図１８は初期配置の期間中に下側境界遅延を概算する際の仮の配置を示す。
図１９は配置改善の期間中に循環すべき候補素子のサブセットを示す。
図２０は配置改善の期間中に用いられる損失関数を示す。
好適な実施例の詳細な説明
この発明の方法は初期レイアウトステップの決定の進行中およびこの初期レイアウトに対する反復的改善の表現明確化の進行中の両方で動作する。この発明の新規な特徴は下側境界達成可能な遅延の考慮と新しい遅延限界値計算とを含む。この発明の経路分析方法は、論理素子を論理ブロック内に初期配置する期間中、配置期間中、および論理素子間の接続への経路付与の期間中に用いるのが好ましい。
経路分析とレイアウトツールとの間の反復対話
図１０は反復的改善を達成するのにこの発明が用いられるステップの流れを示す。これらステップの流れは、論理の分割を選択しまたはユーザ設計の素子用の位置または経路を選択するレイアウトツールと、全体のレイアウトを時間（動作）で概算し上記レイアウトツールの用いるべき遅延限界値を示唆する経路分析ツールとの間で一方から他方に前後に反復する。初期状態では、遅延を概算するステップ１０２は、レイアウトツールを少し動作させたあと、たとえば最小値カット分割アルゴリズムによる最初の切分けのあと、またはユーザ設計の一部または全部の経路付与のあと動作させる。ステップ１０３では、この発明の経路分析ツールが概算した（または実際の）遅延をユーザの特定したタイミング要求と比較し、その結果得られる弛緩を計算する。図５乃至９に関連して上に述べた従来のヒッチコックの方法をこの接続弛緩の計算に用いるのが好ましい。これらの弛緩から、ステップ１０４において、この設計における各接続につき遅延限界の示唆値を計算するために新規な方法を用いる。これらの限界値は次にステップ１１１においてレイアウトツールが各位置または経路を上記示唆値に合わせるように改善する試みにおいて用いる。ステップ１１１が完了すると、レイアウトツールはステップ１０２に戻り、新しい接続についての新しい遅延値を計算する。ステップ１０３および１０４の経路分析過程は再び繰り返され、新しい弛緩が算出され、新しい遅延限界値が示唆される。
ステップ１０３はステップ１０２からの接続遅延を受けて経路、すなわち通常いくつかの接続といくつかの論理ブロックとを含む経路の遅延を概算する。好適な方法では四つの型の経路と関連の遅延とを考慮する。すなわち、
パッド・パッド間：信号が入力パッドに入力された時点から介在レジスタを含まない経路経由で出力パッドに到達するまでの時間遅延
パッド・起動間：入力パッドへの入力からレジスタへの入力までの時間プラス切換え信号の電圧レベルの安定化に要する付加的時間の時間遅延、
クロック・パッド間：レジスタ出力発生から出力パッドへの出力までの時間プラスクロックパルス切換え時点とレジスタ出力に定常信号が生ずる時点との間の時間遅延、および
レジスタ・レジスタ間：一つのレジスタの出力発生から次のレジスタへの入力までの時間プラスクロックパルスの切換えとレジスタ出力に出力が生ずる時点との間の時間プラス信号のレジスタ入力への到達時点から切換え信号の電圧レベルの定常化までの時間の時間遅延
の四つの型である。すなわち、内部遅延時間を配線セグメント遅延時間と論理ブロック遅延時間に加えて経路の合計遅延を概算する。この計算はレイアウトツールによって行われる。レイアウト決定用のステップについての従来技術の説明で上に述べたとおり、パーティショナーが全体設計を論理ブロックで実動化すべき論理素子に分割し、プレーサーがそれら論理素子を論理ブロックに位置づけし、ルーターが接続・論理ブロック間を経路付与する配線を選択する。各ツールはその活動の結果生ずる接続遅延を概算する手段を含むのが好ましい。
下側境界
この発明は遅延限界示唆値を計算するステップ１０４に関し、その詳細を次に述べる。遅延限界示唆値はレイアウトツールにステップ１１１、すなわち論理ブロック間の個々の接続を扱い経路の総遅延の概算は行わないステップ１１１におけるレイアウト修正の指針として供給される。各接続についての下側境界遅延の概算値は、ステップ１０４において、設計者の入力する値から、または好ましくは、接続端点の座標の関数として使用されるチップについての下側境界遅延の表を作成することによって決定される。これら下側境界遅延は各接続についての遅延限界示唆値の計算において用いられる。遅延限界示唆値は、例えば、レイアウトの下記の段階、すなわち初期配置、配置改善、および経路付与の段階で用いることができる。
この発明を用いる他のステップの場合と同様に、利用可能な下側境界接続遅延の最良値（初期配置および配置改善期間中は正確な下側境界は不明である）がステップ１０４で遅延境界示唆値の計算に使われる。
限界値調整アルゴリズム
図１１は図１０のステップ１０４で分割、配置および経路付与用のひと組の遅延限界示唆値を計算するのに用いる経路分析ツールの流れ図である。下側境界接続遅延は上限値が下側限界遅延以下に設定されないことを確実にするために上側限界接続遅延Ｕ(c)を設定する際に用いる。この下側境界を考慮しなければ不具合な上限Ｕ(c)＜Ｌ(c)という結果になり得る。この問題はタイミングの制約を満足するレイアウトの存在する設計でも起こる。
下側境界接続遅延Ｌ(c)は限界値調整アルゴリズムへの入力Ｉ(c)として用いる。
ステップ１０４において、この発明は弛緩を反復分散する従来技術の方法を一般化した限界値調整アルゴリズムを用いる。図１１はこの限界値調整アルゴリズムの実動化に用いるステップを示す。ユーセフおよびシュラゴヴィッツの示すとおり、ステップ２０５において、各接続についてｆ(c)と接続ｃの現在の弛緩との積をその接続ｃにおける遅延示唆値に加算する。しかし、ｆ(c)は従来技術で立てられた式によって計算されるとは限らない。図１１の限界値調整アルゴリズムで用いられている項は次のとおりである。
U(c)＝接続ｃについての遅延限界示唆値
I(c)＝接続ｃについての初期遅延
弛緩(c,U)＝ひと組の遅延Ｕを受けた接続ｃにおける弛緩
f(c)＝弛緩を分散させるための乗算分数
L(c)＝下側境界で利用可能な接続遅延
ステップ２０１に示すとおり、限界値調整アルゴリズムへの入力は次のとおりである。
網リスト、すなわち互いに接続すべき論理ブロック入力および出力のリスト、タイミング制約（クロック速度またはパッケージピン間タイミングを含み得る）、ブロック遅延、すなわち各論理ブロック内部での遅延、レジスタについては起動遅延およびクロック・出力間遅延
各接続について
初期遅延Ｉ(c)、すなわちこの発明では下側境界Ｌ(c)に設定してある値、
乗算分数ｆ(c)、すなわち接続弛緩の何分の一をその接続に加えるべきかを表わす値
ステップ２０２において、この限界値調整アルゴリズムは各接続ｃについて下側境界Ｌ(c)に設定したＵ(c)＝Ｉ(c)を初期化する。ステップ２０３において、その接続についての弛緩、すなわち弛緩（ｃ，Ｕ）を計算する。ステップ２０４に示すとおり、弛緩が十分に零に近ければステップ２０７に進み遅延限界値を出力する。そうでない場合は、ステップ２０５に示すとおり、弛緩は次式（５）を用いて各接続に分散される、すなわち、
（５）    U(c)new＝U(c)＋(f(c)＊弛緩(c,U))
図１１に示すとおり、弛緩を計算し分散させるステップ２０３および２０５は未分散の弛緩が零に十分に近づくまで繰り返される。最終的にステップ２０７に到達し遅延限界値がレイアウトツールに供給され後続の反復に供される。
図１２Ａは三つのレジスタＲ１、Ｒ２およびＲ３、組合せブロックＢ１およびＢ２、並びにこれらブロックおよびレジスタを相互接続する接続Ｃ１乃至Ｃ４を含む論理設計のごく一部分の例を示す。レジスタＲ１からの出力信号は接続Ｃ１を経てブロックＢ１に伝達される。ブロックＢ１の出力は接続Ｃ２経由でレジスタＲ２に、また接続Ｃ３経由でブロックＢ２にファンアウトし、ブロックＢ２は出力を接続Ｃ４経由でレジスタＲ３に供給する。
図１２Ｂは次式（６）を用いて弛緩を分散させた図１２Ａの回路の例を示す。すなわち、
（６）    f(c)＝１／接続ｃを通る最長の経路
図１２Ｂに示すとおり、Ｒ１からＲ３への経路は三つの接続Ｃ１、Ｃ３およびＣ４を用いる。Ｒ２へのより短い経路は二つの接続Ｃ１およびＣ２を用いる。最長の経路が三つの接続を用いているので、この最長の経路にある各接続には分散１／３を割り当てる。Ｒ１からＲ２への経路の用いる接続は二つだけであるが、この経路にある接続Ｃ１およびＣ２の各々には分数１／２を割り当てることが考えられよう。しかし、接続Ｃ１を通る最大長さの経路は三つの接続を有するのでｆ（ｃ１）は小さいほうの分数１／３を優位とする。
レジスタ転送２４ナノ秒以内という目標を犠牲にし遅延を零に初期化した場合は、（すなわちこの発明によらない場合は）図１２Ｂの分数は図１２Ｃに示した遅延限界値を生ずる。
レイアウトツールにより達成される遅延
ステップ１０４（図１０）の経路分析によりひと組の遅延限界示唆値が発生されたのち、これら限界値はレイアウトツールに供給され、このツールがステップ１１１においてそれら限界値に合うようにレイアウトを変更する。
図１２Ｅは図１２Ｃで供給された限界値に応答して実際に得られたひと組の遅延を示す。接続Ｃ１には実際の遅延４ナノ秒が得られ、接続Ｃ２には実際の遅延２０ナノ秒が得られ、接続Ｃ３およびＣ４には遅延８ナノ秒および１２ナノ秒がそれぞれ得られた。すなわち上記経路の両方について限界値２４ナノ秒が達成された。接続Ｃ２についての限界の示唆値Ｕ（Ｃ２）は満たされてなくても全体の目標値２４ナノ秒が達成されていることに注目されたい。これは、限界示唆値Ｕ(c)を目標とするレイアウトツールがその示唆値に合致しなくとも中途で終了せず解の終結まで続行することによる。また、接続Ｃ１についての限界値は余地を残して満たされているので、総体的目標は満たされている。
遅延限界値についての下側境界
遅延限界値が零になり得ると仮定するのは非現実的である。二つのレジスタ間の最短の経路はチップ上での二つのレジスタの間の物理的分離およびチップ上にある経路付与セグメントによって定まる下側境界遅延を有する。接続すべきブロックが異なった物理的位置に配置された場合（すなわち、配置を変更した場合）、下側境界を調整できる。しかし、配置変更のない経路変更については、その接続については下側境界は一定である。初期遅延零を用いて限界示唆値を計算するのに比べて、弛緩割当ての改善はこれら下側境界遅延から始めてそれら下側境界値に弛緩の分数を加算することによって達成できる。また、下側境界遅延の組を用いた分析がユーザ指定のタイミング制約を満たせないことを示した場合は、そのタイミング制約はいかなる経路形状によっても満たされ得ないことの確かな指標となる。下側境界遅延とタイミング要求との組合せは経路付与に努力を払う前の配置の評価に使うことができる。配置のために経路付与が満足すべきものになり得ず、タイミング制約が決定的に重要である場合は、経路付与を首尾よく進める可能性を与えるために配置を変更しなければならない。
達成ずみの遅延と下側境界との差を用いた反復改善
初期レイアウト計算の完了ののちは経路遅延合計と対応の弛緩とは概算できる。経路遅延のある部分を改善するために反復を行うのが望ましい。例えばクロック速度の２５％上昇が求められ得る。図１２Ｄに示すような下側境界遅延を用いた場合は、これら下側境界値は性能改善を試みる際に考慮に入れ得る。
この発明によると、弛緩はより高い標準の達成の困難度に応じて分散される。接続遅延の残余の改善は達成可能な最小の遅延と達成ずみの遅延との間の差で測る。いくつかのベンチマーク試験で好成績を挙げた遅延削除の式は遅延許容誤差を差Ｄ(c)−Ｌ(c)に比例する量だけ減らすことである。ここで、Ｄ(c)はその接続で達成された遅延であり、Ｌ(c)はその接続について達成可能な下側境界値である。すなわち、式（３）でｆ(c)の計算に使われる重みの式は
（７）    重み(c)＝D(c)−L(c)
式（３）をここに再掲すると
（３）    f(c)＝重み(c)／最大［重み(p)］
式（７）の重み関数を式（３）で用いると、新しい遅延限界値についての式（５）の計算は
（５）    U(c)new＝U(c)old＋(f(c)＊弛緩(c,U))
となり、達成ずみの弛緩と下側境界遅延との両方を用いる。従来技術の研究者らが考慮したその他の重み関数と違って、式（７）の重み関数はレイアウトの現在の状態によって定まり、したがって達成ずみのものについての知識を利用している。式（７）の重み関数は一つの接続で達成ずみの遅延とその下側境界との差であるので、それはその接続の最大の改善可能性に関係している。したがって、タイミング改善に努力が払われれば、上限値Ｕ(c)が値を設定しその値によって各遅延はその改善可能性に比例するように改善を求められる。
図１３はある設計のタイミングの改善に用いた図１０のステップ１０３および１０４の流れ図を示す。図１３のフロー図を図１２Ｄ、１２Ｅおよび１２Ｆの例に関連して述べる。レイアウトずみの設計のタイミングの反復的改善を試みる場合は、第１のステップはその経路の遅延についての新しい目標を設定することである。図１２Ｄ−１２Ｆの例では、その目標は２４ナノ秒の遅延を２５％減らして１８ナノ秒にすることである。弛緩は達成ずみの遅延と要求された遅延との差であるから、初めは負になる弛緩もあることは明らかである。図１２Ｄ−１２Ｆの例では、弛緩は新しい要求値に対して初めは全部負である。例えば、接続Ｃ２では達成ずみの遅延は２０ナノ秒であり接続Ｃ１では達成ずみの遅延は４ナノ秒である。新しい目標は合計１８ナノ秒である。すなわち、接続Ｃ１およびＣ２についてステップ１０３で計算された弛緩は１８−２４＝−６である。接続Ｃ３およびＣ４についての弛緩も−６である。この発明の新規な特徴として、ステップ１０７において新しい遅延限界値Ｕ(c)newを値Ｕ(c)old＋ｆ(c)＊弛緩（ｃ，Ｕ）と下側境界値Ｌ(c)との大きい方に設定することにより、下側境界値を侵すことなく負の弛緩は分散される。すなわち、遅延限界値が低減されるので、達成可能値以下に低減される遅延限界値はない。図１２Ｆに示した分数ｆ(c)は、接続の重みを上述のとおり式（７）から定めた式（３）で計算する。図１２Ｆおよび１２Ｇにおいて、接続Ｃ１の達成ずみの遅延４ナノ秒マイナス下側境界２ナノ秒から分数ｆ（Ｃ１）は２／１２となり遅延限界示唆値は３ナノ秒となる。接続Ｃ２においては達成遅延値２０ナノ秒および下側限界値１０ナノ秒となり分数ｆ（Ｃ２）は１０／１２となり遅延限界示唆値は１５ナノ秒となる。同様の計算を経路Ｃ３およびＣ４について行う。全体としての遅延の２５％低減を複数の接続に２５％低減として一様に分散するのではないことに注目されたい。これは、下側境界遅延が一様でなかったことによる。図１３は負の弛緩の分散のあとで正の弛緩の分散がステップ１０９で図１２Ｃ関連の上述の説明にあるのと同じ方法で行われる。
ＦＰＧＡ経路付与への応用
この発明の好適な実施例はＦＰＧＡ構造において次の特徴を備える経路付与ツールに関連して信号を経路付与するのに用いられる。
１）経路付与ツールが各接続ｃにつきその示唆値を満たす経路をもしそれがあれば選択することによって遅延限界示唆値Ｕ(c)に応答する。
２）どの接続に最初に経路付与するかの決定および経路の選択において、経路付与ツールは、遅延および資源コスト（ある型の配線の数に対する実際に使用された数）の組合せを説明するコスト関数を用いる。経路付与ツールは次の項目に基づいて選択を行う。すなわち、
ａ）遅延限界示唆値、
ｂ）予定経路の実際の遅延、および
ｃ）接続を形成するのに用いられる配線セグメントの数と種類、
３）経路付与ツールがすべての接続について経路を見出すことを試み、いくつかの経路を見出し得なかった場合はその経路付与ツールは、接続を完結し得る利用不可能な経路を指定し、その経路を利用不可能にしている接続を除去し（はがし取り）、一時的に経路未付与の接続のために経路を見出すことを試みることによって、経路未付与の接続への経路付与を試みる。
この特許出願の譲受人であるジリンクス社は上記規準に合ったXilinx XC 4000系の製品のためのルーターを供給している。この発明は各接続につき上限示唆値を提供する。上記ルーターは上限示唆値のこの組からの指針により、形成デバイスのより高速なタイミング要求の受容能力を高める経路を選択する。
下側境界を用いた初期経路付与解
クロック周期を最小にすることが目標であれば、四つの経路の型（パッド・パッド間、パッド・起動間、クロック・パッド間、およびレジスタ・レジスタ間）の各々につき考えられる最良の合計経路遅延を接続はすべて最高速の経路上にあると仮定して決定し、一回目の反復には上記最高速の合計経路遅延などには厳しくない目標を選択することが可能である。ロジックデバイス内で配置した論理設計に経路付与するのに用いる場合は、特別の資源を要する接続は最初に経路付与する。それ以外の接続は下側境界遅延の許容可能な遅延に対する比の減少する順に、すなわちより厳しい限界値をもつ接続を初めに経路付与するように経路付与される。二回目の反復には要求はより厳しくされる。
より詳細に述べると、図１４に示すとおり、ステップ１４１において、経路分析器（図１０のステップ１０３および１０４を行う）は下側境界経路遅延Ｌ(c)を計算し、ステップ１４２で考えられる最良のクロック周期Ｔlowを見出せるようにする。一つの実施例においては、ステップ１４３に示すとおり、経路分析器（図１０のステップ１０３および１０４に用いられるツール）が次に目標（経路時間の要求値）を
Ｔgoal＝１．５Ｔlow
に設定する。
ステップ１４４に示すとおり、接続ｃの各々については分数ｆ(c)は式（３）から決定される。
（３）    f(c)＝重み(c)／最大［重み(p)］
ここで、用いられた重み関数は弛緩一様分散関数重み(c)＝１であり最大［重み(p)］は最大経路における接続の数である。ステップ１４５に示すとおり、限界値Ｕ(c)は図１１に関連して上に述べた限界値調整アルゴリズムを用いて調整する。
これら限界値はルーターに供給され（図１０におけるステップ１０４からステップ１１１への矢印と等価）、このルーターは図１４のステップ１４６において特別の資源（例えば、大域クロック信号と表示してある信号）を要する接続を識別しそれら接続を適切な資源に割り当てる。
次に、ステップ１４７において、ルーターは比Ｌ(c)／Ｕ(c)の減少する順に残余の接続を経路付与する。どの接続についても遅延限界示唆値がその接続に可能な最高速遅延Ｌ(c)よりも小さくなることはないことを想起されたい。すなわち、比Ｌ(c)／Ｕ(c)はすべて１以下である。その比が１に近いことはその接続がその接続に可能な最高速遅延に近い遅延を有することを示す。したがって、この比の大きい接続にまず経路付与して、困難な接続への満足な経路を得る可能性を高める。ルーターが上記Ｕ(c)要件を満たす経路を見出し得なかった接続はいずれも経路未付与のまま残す。
ステップ１４８において経路未付与のままの接続があるか否かを決定する。もしあれば、ステップ１４９において、ルーターは経路未付与の接続全部につき数値Ｕ(c)を２０％だけ増加させ、それによってＴgoalを２０％だけ増加させて、ステップ１４６に再び進む。ステップ１４８に到達したとき接続がすべて経路付与ずみであれば、初期の経路付与努力は終了しており、その場合は経路付与情報はルーターに供給できる（図１０のステップ１０２と１０３との間の矢印に等価）。
既存の経路の改善
図１５はこの発明により既存の経路付与解のタイミングを改善するために用いられるステップを示す。既存の経路付与解は達成ずみのクロック速度Ｔachievedを有する。可能な最高速の解を得ることが目標であれば、好適な実施例は可能な最大の減少量の三分の一だけクロック周期を狭める試みを一つの反復において試みる。すなわち、ステップ１５１において、新しいクロック周期Ｔgoalが次のとおり設定される。
（８）    Tgoal＝Tachieved−（Tachieved−Tlow）/3
ステップ１５２に示したとおり、各接続ｃについて、分数ｆ(c)は式（３）から
（３）    f(c)＝重み(c)／最大［重み(p)］
と算出される。ここで、使用された重み関数は達成ずみの遅延マイナス下側境界遅延、または改善の余地
（７）    重味(c)＝Ｄ(c)−Ｌ(c)
である。これら分数ｆ(c)の決定ののち、ステップ１５３において、負の弛緩を有する限界値Ｕ(c)を式（ｂ）Ｕ(c)new＝最大［Ｕ(c)old＋ｆ(c)＊弛緩（ｃ，Ｕ），Ｌ(c)］を用いて減少方向に調整し、次にステップ１５４において、正の弛緩を有する限界値を次の式を用いて増加方向に調整する。
（５）    U(c)new＝U(c)old＋f(c)弛緩(c,U)
これらの新しい、また時にはより厳しい遅延限界示唆値をルーターに供給し、ステップ１５５において、新しい示唆値よりも大きい遅延Ｄ(c)を有する接続についてのあらゆる経路を消去または除去する。ステップ１５７においてルーターは分離された順にこれら経路未付与の接続に経路付与することを試みる。このＵ(c)要件を満たし得ない接続はすべて一時的に経路未付与のまま残される。
ステップ１５８においてルーターは経路未付与のままの接続があるかどうかを決定し、もしあれば、ステップ１５９において、それら経路未付与の接続についてのＵ(c)を２０％だけ増加させる。経路を分類し経路付与を試みるステップ１５６および１５７を次に繰り返す。このループを全経路付与の終了まで繰り返す。
経路付与期間中のタイミング改善の効果
この経路付与改善方法で改善タイミングを達成できることがしばしばある。種々の寸法および機能のベンチマーク設計２２件についての実験において、全接続につき一つの遅延限界値を用いた経路付与アルゴリズムから導かれる遅延と下側境界値使用の限界値調整アルゴリズムを用いて導かれる遅延とを比較し、次に上述の経路付与改善アルゴリズムを一回通過させた。その結果、単一の遅延限界値を用いたタイミング結果に比べるどの場合についても改善がみられた。改善の度合は３％から３２％にわたり上記ベンチマーク設計２２件についての平均は約１４％であった。達成された接続遅延と理論上の最小接続遅延との比較から、各接続がもっとも高速の経路で経路付与されていれば経路遅延の付加的改善は１６％だけであることがわかる。これら２２件の設計およびこれら以外の設計についてのこれ以上のタイミング改善はこの発明を設計をレイアウトする際の初期配置または配置改善に用いることによって達成できよう。それら改善はまだ試みられていない。
図１０の流れ図はこれら段階のすべてに適合する。配置の初期段階では実際の遅延についてはほとんど不明であるので、下側境界は単なる概算値である。しかし、これら初期の概算値から限界示唆値を計算することによって、それ以後の配置結果が改善される。経路分析方法をレイアウト処理の初期の段階に応用することを次に述べる。
初期配置
この発明の方法は論理素子の論理ブロックへの初期配置にも使うことができる。初期配置は最小値カット分割アルゴリズム、すなわちデバイスの二つの領域で実動化される二つのクラスタに全体の設計を分割することによって始まるアルゴリズムで行うのが好ましい。最小値カットアルゴリズムはそれら二つの領域を分ける分割線を横切って延びる接続の数を最小化する。この最小値カットアルゴリズムは一つのクラスタを、各クラスタが一つの論理ブロック内で実動化できるまで、二つのより小さいクラスタに分割することを続ける。
素子の一つのクラスタの二つのクラスタへの分割の各々は分割線の両側の各々に論理素子の半分を配置することによって始まる。これに引続き、各素子の所属する側を転換する一連のステップを配置する。これらステップの各々において、上記分割線を横切って動くように選択された素子は所属の側の転換による損失削減効果のもっとも大きい素子である。
従来技術の最小値カットアルゴリズムにおいては、分割線のまわりの特定の素子配列に伴う損失はその線を横切る接続の数の概算値（概算の実際の数は一般に単一の信号源からファンアウトする多数の接続の組についての最終的な経路付与に左右されるので概算値となる）である。図１６は素子Ｅ２を分割線１７１を横切って区画Ｓ１からＳ２に動かす損失を概算する小例である。
全部の素子を片方の側から他の片方の側に移し終えたあと、このシーケンス内で最低損失を達成したステップを新たな予定分割線として用いる。この手順は、分割線を横切って各素子を再び動かし最低損失の配置を選ぶことによって繰り返される。各素子の移動および最低損失の配置の選択の手順の繰返しはこのシーケンスがそれ以上の改善をもたらさなくなるまで続く。
この発明は、分割線越えの素子移動の損失の概算を、分割線を跨ぐ接続の数の改善だけでなく遅延計算にも基づいて行う。
（９）    損失E＝Ｎafter−Ｎbefore＋Ｃdelay(E)
ここで
損失Eは分割線を越える素子Ｅを動かす損失（負の数は改善を示す）、
Ｎafter−Ｎbeforeは従来技術による接続横断損失、すなわち素子移動後の分割線越え接続の数の概算値マイナス素子移動前の分割線越え接続の数の概算値
Ｃdelay(E)はその素子を分割線越えで動かすための遅延に関する損失追加。この発明によると、Ｃdelay(E)は素子Ｅへの接続についての接続遅延関数Ｃdelay(c)の合計である。すなわち、素子Ｅにつながるすべての接続ｃについて、
（10）    Ｃdelay(E)＝■Ｃdelay(c)
この発明の好適な実施例によると、接続遅延関数Ｃdelay(c)は上述の図１０のステップ１０４で計算した遅延限界示唆値Ｕ(c)の関数であり、また、二つの値Ｂ(c)およびＷ(c)の関数でもある。値Ｂ(c)は接続が分割線を横断しないなどより良好な状態を表わし、値Ｗ(c)は接続ｃが分割線を横断するなどより不良な状態を表わす。図１７Ａは素子Ｅ１およびＥ２の間の接続が分割線１７１を横断しないより良好な状態を示し、図１７Ｂは素子Ｅ２が動かされて素子Ｅ１およびＥ２の間の接続が分割線１７１を横断したより不良な状態を示す。
接続が分割線を横断しない図１７Ａの場合において、接続Ｅ１−Ｅ２についての遅延を決定するために、素子Ｅ１およびＥ２は分割線１７１の左側の領域のｘ寸法の１／３およびｙ寸法の１／３だけ離されているものとする。これら座標に対応する上記良好状態の遅延Ｂ(c)を使用中のチップに特有の概算遅延表で調べる。その表に格納されている概算遅延は、素子間の接続の経路付与はそのチップ内の最高速経路、すなわち高速資源と指定されたステップ経路付与資源を除く最高速経路を用いてなされると仮定して決定される。遅延は通常チップ内の特定の資源およびトランジスタで定まり、素子を配置した論理ブロック間の距離には比例しない。例えばジリンクス社ＦＰＧＡチップのあるもの、すなわち大域クロックバッファ線およびその他の長い線がチップ全長またはある場合にはそのチップの半分の長さにわたって延びるチップにおいては、比較的少数のこれら高速資源が備えられている。すなわち、それら高速資源は大きいチップ表面積を占有し、クロックや高ファンアウト線など高速用の資源としてレイアウトツールに識別されるように高速資源と指定されているからである。これら高速資源はチップ内の多数の接続には利用不可能である。したがって、接続遅延の最良の概算値はこれら高速資源は利用不可能と仮定している。一つの実施例においては、概算遅延表中の遅延概算値は、接続形成用の配線セグメント間の相互接続が信号の再生および高速化のためにバッファ経由になっていないものと仮定している。すなわち、概算遅延表はかなり控え目な表である。現在入手可能なチップについては、概算遅延は１乃至２０ナノ秒の範囲にある。
接続が縦分割線１７１を横断する図１７Ｂの場合は、素子Ｅ１およびＥ２はこれら部分の水平方向寸法の中間点、および垂直方向の１／３および２／３の点にあるものと仮定している。図１７Ｂに示した位置の素子Ｅ１およびＥ２対応の不良状態の遅延Ｗ(c)は概算遅延表で調べる。上述のとおり、損失Ｃdelay(c)は遅延限界示唆値Ｕ(c)、良好状態遅延Ｂ(c)および不良状態遅延Ｗ(c)の関数である。現在のところ好適な関数は、
（11）    W(c)＜U(c)/2の場合、Ｃdelay(c)＝０
U(c)＞W(c)＞U(c)/2の場合、
Ｃdelay(c)＝W(c)−B(c)
W(c)＞U(c)の場合、
Ｃdelay(c)＝W(c)−B(c)＋［W(c)−B(c),U(c)の大きい方］
である。すなわち分割線を横断することによる遅延が限界示唆値よりも依然としてずっと小さい場合は、Ｃdelay(c)に関する因子はその素子を動かす損失の概算の際にＣdelay(E)に加算されない。接続が分割線を横断することによる遅延が遅延限界示唆値Ｕ(c)に近くしかもそれより小さい場合は、その分割線横断による損失を反映するために選ばれる数字、すなわち分割線が横断されたときの予期遅延と分割線横断がなかったときの予期遅延との差は、Ｃdelay(E)に与えられる。上記不良状態遅延が遅延限界示唆値Ｕ(c)を超える場合は、Ｃdelay(c)からの第２の寄与値をＣdelay(E)に加算する。この追加の寄与値は二つの差、すなわち、不良状態遅延と遅延限界示唆値との差（すなわち不良状態においてその示唆値をどれほど超えたか）、および不良状態遅延と良好状態遅延との差（改善の可能性に関する）の二つの差の小さい方である。
Ｗ(c)が上記移動の前の状態に対応し、Ｂ(c)が上記移動のあとの状態に対応すれば、Ｃdelay(c)は負の数字として記録される。図１６の例ではＣdelay(c)がＥ１以外のＥ２からの全接続について生ずる。区画Ｓ１からＳ２へのＥ２の移動は負の合計値、すなわち改善を示す可能性がある（ただし、素子Ｅ１が不良状態遅延Ｗ(c)＞Ｕ(c)／２を有する唯一の素子でない場合）。
上記式（９）については、Ｃdelay(c)およびＣdelay(E)が時間単位であり、一方分割線横断の数Ｎafter−Ｎbeforeの単位は純数であることに注意されたい。一つの実施例においては、Ｃdelay(c)の単位をナノ秒の十分の一で特定し、その結果のＣdelay(E)値を数Ｎafter−Ｎbeforeに加えることによって単位変換を行う。
もう一つの実施例では、相次ぐ分割線がより小さい領域を分割する事実を、数Ｎafter−Ｎbeforeにその分割線の分割した寸法に比例する因子を乗ずることによって考慮に入れてある。したがって、素子移動の損失の式は次のとおりとなる。
（９）    損失E＝S*（Ｎafter−Ｎbefore）＋Ｃdelay(E)
ここで、
Ｓは分割線に垂直に分割した部分の寸法（行または列の数で測った）であって、
分割線が形成し得る物理的分割に関する寸法である。
分割線を横断して素子を動かすコストは分割対象の部分の中の各素子について計算され、各素子について各接続のその素子への影響を考慮する。
最小値カット分割アルゴリズムを用いた初期配置にこの発明の遅延限界示唆値を用いた場合の図１０のステップの流れは、各分割線についてステップ１０２、１０３、１０４および１１１を通って一回だけ循環することである。したがって、遅延限界示唆値Ｕ(c)の計算は初期配置活動の期間中に多数回にわたり行われる。一つの実施例においては、経路分析１０３および１０４は初期配置の完了まで全部の分割線について繰り返される。もう一つの実施例では、遅延限界示唆値は最初のいくつかのクラスタを分割する分割線の決定後は再計算（図１３のステップ１０３および１０４を用いて）されない。例えば２５６個の論理ブロックを有するロジックアレーチップでは、最初の分割線でロジックを約１００乃至１５０個の論理ブロックを占有する二つのグループに分割し、次に第２および第３の分割線でロジックを各々が約５０乃至７５個の論理ブロックを占有するグループに分割する。第４、第５、第６、および第７の分割線はロジックを各々が２５乃至５０個の論理ブロックを占有するグループに分割する。第７または第８の分割線の終了後、経路分析ステップ１０３および１０４を中止し、残余の分割は算出ずみの遅延限界値を用いて行い、それによって計算時間を節減できる。下側境界は更新した分割情報を用いて計算される値よりも低いが、計算ずみの遅延限界示唆値Ｕ(c)の反映される零よりも大きい下側境界の利点は後続の分割ステップでも継続する。ステップ１１１における良好状態遅延および不良状態遅延の計算は経路分析のステップ１０３および１０４を通じた反復が中止されても継続する。
遅延限界示唆値Ｕ(c)は、図１０のステップ１０４において、上述の例で行ったのと同様に例えば経路付与の期間内に下側境界遅延Ｌ(c)を用いて計算される。しかし正確な下側境界の数字は素子未配置であるため未知である。図１８は図１６に示した素子についてのステップ４の遅延限界示唆値計算用の下側境界推定値を示す。図１８は分割線１７１の確立後のレイアウトを示す。図１８においては、図示のために素子Ｅ２は区画Ｓ１内に留まっている。下側境界接続遅延Ｌ(c)を計算する際には、それら素子は接続対象の素子にもっとも近い領域部分にあるものと仮定する。すなわち、下側境界接続はその接続がどこに延びるかによって領域の異なる部分から延びる。例えば、素子２９については接続Ｅ９−Ｅ１１のための領域Ｓ２の右下隅に示してあり、Ｅ９は接続Ｅ２−Ｅ９用の区画Ｓ２の左隅に示してある。したがって、分割のこの段階においては図１０のステップ１０４において、接続Ｅ２−Ｅ１０およびＥ９−Ｅ１１のみが分割に伴う大きい下側境界遅延を示す。それ以外の接続はできるだけ近い論理ブロック対応の最小遅延を有するものとして示してある。接続遅延は図示の最小距離についての遅延の表からとってある。下側境界遅延は接続Ｅ２−Ｅ１０についてのＵ（Ｅ２−Ｅ１０）など接続遅延限界示唆値の計算に用いる。
配置改善アルゴリズム−限界示唆値の利用
この発明を使う一つの配置改善アルゴリズムは三つの部分の間の素子の循環である。図１０の状況を考慮すると、配置改善はステップ１１１で起こる。ステップ１１１の期間中に論理設計内の各論理素子の他の場合への動きを考慮する。この配置改善アルゴリズムは素子の移動先として、空きの場所を見出すことに依存することはできないので、一般には配置改善は二つの論理素子の交換またはいくつかの論理素子の循環を伴う。次の説明は三つの素子を循環させることに関する。図１９は配置変動を考慮中の素子１９１を示す。素子１９２は第１候補場所にある。しかし素子１９２を素子１９１の場所改善の受容のために移動させることは全体として悪い影響を及ぼそう。したがって、素子１９２のそれ以外の隣接素子、すなわちある実施例においては八つの隣接素子を素子１９１の移動先として考慮する。例えば素子１９４と素子１９２とを素子１９１の移動先として考慮する。素子１９２および１９４を含む九つの素子の各々について最も好ましい移動先の場所を隣接素子とともに考慮する。素子１９２についてはもっとも好ましい移動は素子１９３の位置への移動であり、素子１９３は素子１９１の素子に三角形を形成するように動かし得る。素子１９４については、もっとも好ましい素子は１９５である。このように、素子１９１についての移動の評価のために８１個の三角形を考慮でき、そのうちの最良のものが選ばれる。
従来技術においては素子１９１についての移動先のこの第１候補は素子１９１への接続を有するそれら素子の重心である。この発明の実施例では、素子１９１の移動先の第１候補は素子１９１への接続向けのタイミング損失を最小にする場所である。もう一つの実施例では、第１候補１９２は、素子１９１の接続の重心と素子１９１への接続向けのタイミング損失が最小になる場所との中間の場所にある。素子移動先第１候補の選択のためのこれら二つの手段には数多く他の組合せも使用できる。現在のところ好適な方法は従来技術による上記重心とタイミング損失を最低にする場所との中間の場所を用いる。ステップ１０４からの遅延限界示唆値Ｕ(c)はこのタイミング損失の計算に用いられる。
図２０は特定の配置の損失の計算を接続上の遅延概算値Ｄ(c)とそれら接続についての遅延限界示唆値との比較によって行う方法を示す。遅延概算値はもう一つの表に格納されている。遅延概算値の表は二つ以上の速度の経路付与資源を備えるチップ内での最高速の経路付与資源は利用不可能と仮定することによって決定される。いくつかの市販のチップは限られた数の高速経路付与資源を有し、その数が少ないためにこれら資源は一般には大多数の接続には利用不可能である。したがって、遅延の概算にはそれら高速資源は利用不可能としたほうが妥当である。
移動先第１候補のｘ座標およびｙ座標は次の式から計算できる。
（12）    Gx＝■［損失(c)＊X(c)］／■［損失(c)］
（13）    Gy＝■［損失(c)＊Y(c)］／■［損失(c)］
ここで、
損失(c)は移動対象の素子に付けられた接続ｃのタイミング損失であり、
Ｘ(c)は接続の他端における素子のＸ座標であり、
Ｙ(c)は接続の他端における素子のＹ座標であり、
加算は移動対象の素子へのあらゆる接続ｃについて行われる。タイミング損失（ｃ）を図２０に示す。損失（ｃ）は、遅延示唆値が遅延限界示唆値Ｕ(c)に等しいときは常に固定遅延Ｆ（例えば１０ナノ秒）に等しい。小さい遅延示唆値に対しては、損失（ｃ）は直線的に上昇し、概算遅延がＵ(c)−Ｆのとき零に達する。Ｕ(c)よりも大きい概算遅延に対しては、損失(c)は１よりも大きい勾配で直線的に増大する。遅延限界では１０ナノ秒以外の値を損失に選べることはもちろんであり、その値はとりわけその部分の速度に依存する。好適な勾配の一つは２．０であるが、今後の試験のあと他の勾配が好適とされることもあろう。
図１９に示すとおり、移動先第１候補近傍でいくつかの代替位置と素子１９１の循環用の最良の三角形を見出すために評価するのが好ましい。上述の説明から第１候補の代替位置の選択に多数の異なる方法を用い得ることは明らかである。
配置改善アルゴリズムは、その設計における全素子が移動について評価され改善後の場所が決定されたのち（図１０のステップ１１１）、移動後の位置についての接続遅延下側境界の概算値を計算する。図１０に示すとおり、これら新しい下側境界遅延は経路分析ツールに供給され、このツールで遅延限界示唆値Ｕ(c)を再び計算する。一つの実施例においては、配置改善のための図１０のステップを通じた循環の不成就数は３である。
ステップ１０３および１０４において弛緩が計算され遅延限界が示唆される。これらの遅延限界示唆値は配置改善アルゴリズムによって素子の次の移動、すなわち選択配置の改善のために使われる。経路が遅い弛緩を有することが決定されると、ステップ１０４で計算された遅延限界示唆値は、遅延限界値を受容するよう次の移動を選択するためにステップ１１１でプレーサーに使われる。このプレーサーは厳しい限界値をもつ接続により大きい重みを与え、重要な接続の付着を受けた素子が低速の接続によって分離されることが起こりにくいようにする。
配置改善の期間中に、配置素子間で可能な最高速接続を仮定した下側境界遅延を、それら素子の配置を含む論理ブロックの相互間の接続に利用可能な最高速経路にそれら素子を経路付与できると仮定することによってステップ１０２で概算できる。初期配置について上述のとおり、下側境界接続遅延は表で調べる。（表は二素子間のｘおよびｙ距離の関数でもよく、それら二素子のｘおよびｙ座標の関数でもよい。）下側境界遅延については、多重接続は同一の物理的線路に接続可能と仮定できる。ステップ１０２のあと、下側境界接続遅延の組は経路分析ツールに伝えられ、そのツールはステップ１０３において下側境界経路および弛緩を計算し、ステップ１０４においてこれら接続についての新しい遅延限界示唆値Ｕ(c)を計算する。
経路分析ツールは対応の下側境界クロック周期をも計算できる。これは各接続を最高速の経路に経路付与した場合にこのデバイスを動作させるのに用いられ得る最小クロック周期である。この下側境界よりも小さいクロック周期が求められた場合は、エラーメッセージがユーザに送られる。ステップ１０４で計算された限界示唆値に基づき、プレーサーはステップ１１１で代替的配置、すなわち所望のクロック周期から得られる遅延限界示唆値に合致する配置の一組を試みる。一つの実施例においては、このプレーサーは、下側境界遅延がタイミング制約の受容不可能なことを示せば引続き動作し最良の利用可能な配置を見出す。
上述の説明に照らして、当業者にはこれら以外の実施例、すなわちマスクプログラムデバイスやカスタムデバイスに使える遅延限界決定方法を含む実施例が自明になろう。それら実施例はこの発明の範囲内に含まれると意図されたものである。
【図１】
0003737104.tif 000002
【図２Ａ】
0003737104.tif 000003
【図２Ｂ】
0003737104.tif 000004
【図３】
0003737104.tif 000005
【図４】
0003737104.tif 000006
【図５】
0003737104.tif 000007
【図６】
0003737104.tif 000008
【図７】
0003737104.tif 000009
【図８】
0003737104.tif 000010
【図９】
0003737104.tif 000011
【図１０】
0003737104.tif 000012
【図１１】
0003737104.tif 000013
【図１２Ａ】
0003737104.tif 000014
【図１２Ｂ】
0003737104.tif 000015
【図１２Ｃ】
0003737104.tif 000016
【図１２Ｄ】
0003737104.tif 000017
【図１２Ｅ】
0003737104.tif 000018
【図１２Ｆ】
0003737104.tif 000019
【図１２Ｇ】
0003737104.tif 000020
【図１３】
0003737104.tif 000021
【図１４】
0003737104.tif 000022
【図１５】
0003737104.tif 000023
【図１６】
0003737104.tif 000024
【図１７Ａ】
0003737104.tif 000025
【図１７Ｂ】
0003737104.tif 000026
【図１８】
0003737104.tif 000027
【図１９】
0003737104.tif 000028
【図２０】
0003737104.tif 000029