JP4020532B2 - 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム - Google Patents
配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム Download PDFInfo
- Publication number
- JP4020532B2 JP4020532B2 JP11515599A JP11515599A JP4020532B2 JP 4020532 B2 JP4020532 B2 JP 4020532B2 JP 11515599 A JP11515599 A JP 11515599A JP 11515599 A JP11515599 A JP 11515599A JP 4020532 B2 JP4020532 B2 JP 4020532B2
- Authority
- JP
- Japan
- Prior art keywords
- arrangement
- chromosome
- placement
- elements
- partial
- 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
Description
【発明の属する技術分野】
本発明は、大規模集積回路(LSI)設計に際してのセルの配置問題、あるいはフロアプラン等に適用することができる遺伝的アルゴリズムを用いたパッキング技術に関し、特に、配置要素を重なりなく最適な状態で配置することができる、配置結果をパッキングするためのパッキング技術に関するものである。
【0002】
【従来の技術】
配置問題とは、大規模集積回路(LSI)の設計に際して配線距離を最短化する要素の配置を求めたり、あるいは、ガントチャート(時間と生産量の関係を表すチャート)の最適化をはかる等のために、配置要素の最適配置を決定する問題である。
上記配置問題の解法として、本発明者らは先に遺伝的アルゴリズムによる解法を提案した(特願平10−258334号)。先に提案した技術は、配置問題の配置結果の疎密を遺伝的アルゴリズムにより解消するものである。
遺伝的アルゴリズムとは、最適解を求める1手法であり、生物の遺伝の機構を模倣して、それを工学的に応用した技術である。
【0003】
生物の進化の過程では、既存の個体(親)から新たなる個体(子)が生まれる際に、個体の持つ染色体同士の交叉、染色体上の遺伝子の突然変異などが起こる。そして、環境に適応しない個体は淘汰され、環境により適応した個体が生きのびて新たな親となり、さらに新たな子孫を作っていく。
このようにして、環境に適応した個体の集団が生き伸びていく。各個体がどの程度環境に適応するかは、染色体(遺伝子の一次元ストリング)によって決定される。遺伝的アルゴリズムでは、最適化問題の解候補を遺伝子の一次元ストリングである染色体として表現し、図31に示すように、解候補の集団に対して選択(selection )/自己複製(reproduction)・交叉(crossover )・突然変異(mutation)等の操作を繰り返し施すことにより最適解の探索を行なう
【0004】
最適化問題の目的関数が環境に相当し、目的関数を最適にするものほど大きい値を取るような適応度関数が染色体に対して定義される。選択/自己複製とは、図32に示すように、集団の中で適応度の高い染色体を持つ個体をより高い確率で選択して次世代の親とする操作である。交叉とは、図33に示すように、2つの染色体(親)の一部を互いに入れ換えて新たな個体(子)を作り出す繰作である。また、突然変異とは、図34に示すように、一つの染色体の一部の遺伝子をランダムに置き換える操作である。
これらの操作を繰り返すことによって適応度のより高い染色体(=目的関数をより最適化する解)が得られる。
【0005】
【発明が解決しようとする課題】
ところで、上記した配置問題において、最適配置を求める要素数が非常に多い等、問題の規模が大きいときには、通常、配置すべき各要素の大きさを考慮せず、各要素を点として要素の最適配置を決定している。
しかしながら、要素はそれぞれ大きさを持っているため、上記のようにして決定された最適配置に基づいて要素を配置すると、要素が重なるという問題が生ずる。
このため、配線距離を最短にするなどの所望の目的関数(これを以下では元の配置問題の目的関数という)を最適化した最適配置(この段階では要素を点として配置を決定している)について、要素の大きさを考慮して、要素が重ならないように定められた領域内に配置する(これをここではパッキングという)必要がある。
【0006】
本発明は上記した事情に鑑みなされたものであって、その目的とするところは、遺伝的アルゴリズムを用いて、要素の重なりを解消する解を高速に求め、所望の目的関数を最適化させるように決定された要素配置に基づき、各要素を効率的に定められた領域内にパッキングすることである。
【0007】
【課題を解決するための手段】
配置問題とは、所定の制約条件のもとで所望の目的関数を最小化するように配置要素の配置を決定することであり、ここでは次の前提条件のもとで説明する。
・配置要素は指定された領域に配置される。
・配置要素は大きさをもつ。
・便宜上、配置要素は長方形とする。
本発明は、大規模な配置問題において、配置要素を上記指定された配置領域に重ならないように配置するものであり、この場合の目的関数は元の配置問題の目的関数(前記した例えば配線距離を最短化するなど)と、配置要素間の重なりを示す関数の重みづけられた和である。
【0008】
図1は本発明の基本原理を示す原理図であり、本発明においては次のようにして前記課題を解決する。
図1のAに示すように、元の配置問題の目的関数を最適化した配置結果が与えられたとする。この段階では、前記したように配置すべき各要素各要素を点として要素の最適配置を決定しており、一般に配置要素は点ではなく大きさを持つために、同図Aに示すように配置領域にお互い同士重なって配置される。このため配置要素の間の重なりを解消する必要がある。
そこで、例えば、同図BのB−1〜B−3に示すように、配置領域を縦または横または縦と横に適当な幅で分割する。これらの分割された領域を部分配置領域と呼ぶ。
配置要素の相対的な位置関係をできるかぎり保存するために、上記で定義された各部分配置領域内で配置要素を、先に決定された要素の位置を元にして、ある定められた方法で順序を付ける。
【0009】
この順序を元にして、部分配置領域内の適当な位置から配置要素を詰めていくことによって配置結果の重なりをとる局所的パッキング法により、同図Cに示すように、重なりを解消する。
さらに、遺伝的アルゴリズムによって部分配置領域を合わせた配置領域全体の配置要素の重なりを解消する。また局所的パッキング法と遺伝的アルゴリズムを組み合わせて大局的に最適なパッキングを実現する。
以上のように、局所的パッキング法はパッキングを見通し良くかつ効果的に実施することができ、また、遺伝的アルゴリズムによるパッキング法は、適応度の増大に寄与するとともに、遺伝的アルゴリズムの計算速度を増加させることができる。したがって、本発明において提案する方法によって、遺伝的アルゴリズムの大域的探索法により効率的に配置問題の配置結果のパッキングを実施することができる。
【0010】
以上に基づき、本発明においては次のようにして前記課題を解決する。
1.所望の目的関数を最適化する配置要素の配置結果が与えられたとき、該配置結果と、配置要素の大きさを考慮して、配置要素を重なりなく定められた領域に配置するに際し、上記領域を複数の部分配置領域に分割し、局所パッキング法により該分割された各領域内で配置要素を重なりなく配置し、遺伝的アルゴリズムを実行して上記部分領域間に生ずる配置要素の重なりを解消する。
2.上記1.において、上記部分領域間に生ずる重なっている配置要素の座標と、その近傍の配置要素の座標を遺伝子とする染色体を生成し、該染色体を用いて遺伝的アルゴリズムを実行し、部分領域間に生ずる配置要素の重なりを解消する。
3.上記2.において、遺伝的アルゴリズムを実行する過程において、親の2つの個体の染色体の同じ領域を適当な方法で選択し、この領域にある上記2つの個体の遺伝子の重み付き平均を計算し、その結果得られた座標を該当する領域の遺伝子とする染色体をもつ個体を子供とすることで交叉を実行する。
4.上記2.,3.において、遺伝的アルゴリズムを実行する過程において、配置要素の重なりを取り除く操作を配置要素の重なりが解消されるまで繰り返す反復改善法を用いる。
【0011】
なお、本発明は次のようにして実現することもできる。
(A)上記1.における部分配置領域への分割および局所パッキングを次のように行う。
(1) 配置領域全体を格子状に分割することで部分配置領域を定義し、この部分配置領域で局所的パッキング法を実施する。
(2) 配置領域を部分配置領域へ分割する方法として、大きな固定配置要素を配置領域から取り去った残りの領域を元にして部分配置領域を定義する。
(3) 配置領域を部分配置領域へ分割する方法として、細長い固定配置領域を配置領域から取り去った残りの領域を元にして部分配置領域を定義する。
(4) 配置領域を部分配置領域へ分割する方法として、階層的に配置領域を分割して部分配置領域を作る。
(5) 配置領域を部分配置領域へ分割する方法として、配置領域を適当な多角形に分解し部分配置領域を作る。
(6) 配置領域を部分配置領域へ分割する方法として、配置要素を置かない部分配置領域を設定する。
【0012】
(7) 配置領域を部分配置領域へ分割する方法として、上記(1) 、(2) 、(3) 、(4) を組み合わせる。
(8) 局所的パッキング法として煉瓦積み方式のパッキング法を実行する。
(9) 局所的パッキング法としてテトリス方式のパッキング法を実行する。
(10)局所的パッキング法として凝縮方式のパッキング法を実行する。
(11)局所的パッキング法として拡散方式のパッキング法を実行する。
(12)局所的パッキング法として上記(8) の煉瓦積み方式を実行する際に使用する配置要素の順序としてパッキングの際に、配置要素の相対的な位置関係と配置要素の横幅と配置領域の横幅をもとにして配置要素の順序を決定する。
(13)局所的パッキング法として上記(9) のテトリス方式を実行する際に使用する配置要素の順序として配置結果の相対的な位置関係とパッキングの際に配置要素が部分配置領域の外へでない順序を採用する。
(14)局所的パッキング法として上記(10)の凝縮方式を実行する際に使用する配置要素の順序として、配置要素のパッキングの中心を原点とする極座標をもとにした方法によって決められた順序を用いる。
【0013】
(15)局所的パッキング法として上記(11)の拡散方式を実行する際に使用する配置要素の順序として、配置要素をそのx座標とy座標によってそれぞれに基づいて順序をつけ、これら2つの順序を用いる。
(16)局所的パッキング法として上記(11)の拡散方式を実行する際の手順として、配置要素でOx,Oyの両方で前にある要素を部分配置領域の左下から詰めていく。
(17)局所的パッキング法として上記(11)の拡散方式を実行する際の手順として、配置要素でOx,Oyの両方で後にある要素を部分配置領域の右上から詰めていく。
(18)局所的パッキング法として上記(11)の拡散方式を実行する際の手順として、配置要素でOxでは後ろ、Oyでは前にある要素を部分配置領域の右下から詰めていく。
(19)局所的パッキング法として上記(11)の拡散方式を実行する際の手順として、配置要素でOxでは前、Oyでは後ろにある要素を部分配置領域の左上から詰めていく。
【0014】
(20)局所的パッキング法として上記(11)の拡散方式を実行する際の手順として、上記(16)(17)(18)(19)の手順を組み合わせる。
(21)局所的パッキング法において、部分配置領域に大きな配置要素があるばあいに、配置結果において配置要素がこれと重なっている場合において、大きな配置要素との重なりがなくなる位置までの距離が最小となる位置にパッキングする。
(22)局所的パッキング法において、部分配置領域に大きな配置要素がありかつ、配置結果において大きな配置要素が配置領域の境界付近にある場合には、大きな配置要素に重なっている配置要素が配置領域から出ないように配置要素を動かす向きをあらかじめ決めておく。
(23)局所的パッキング法において、部分配置領域に大きな配置要素がある場合には、大きなビルを風が迂回していく空気の移動のアナロジーを使って重なっている配置要素を大きな配置要素の周りに分散して配置する。
(24)局所的パッキング法において、部分配置領域に固定した配置要素があり、かつ配置結果において配置要素がこれと重なっている場合において、固定した配置要素との重なりがなくなる位置までの距離が最小となる位置にパッキングする。
【0015】
(25)局所的パッキング法において、部分配置領域に固定した配置要素があり、かつ配置結果において配置要素がこれと重なっており、かつ固定した配置要素が配置領域の境界付近にある場合において、重なっている配置要素が配置領域から出ないように配置要素を動かす向きをあらかじめ決めておく。
(26)局所的パッキング法において、部分配置領域に固定した配置要素があり、かつ配置結果において配置要素がこれと重なっている場合において、計算の高速化を計るために、重ならないように配置要素を移動する向きをあらかじめ決めておく。
(27)局所的パッキング法において、部分配置領域に非常に細長い固定した配置要素があり、かつ配置結果において配置要素がこれと重なっている場合において、ある特定の方向(x方向またはy方向)に細長い固定要素がある場合には、この細長い固定要素に重なっている配置要素を移動する方向はこの固定要素の幅(x方向)、高さ(y方向)のうち短いものを選択しその方向へ重ならなくなるまで移動する。
【0016】
(B)前記1.〜4.において、次のように遺伝的アルゴリズムの実行する。
(1) 遺伝的アルゴリズムにおいて前記2.の染色体のコード法を用いる場合に、親の2つの個体のうち一つの親の染色体の領域を適当な方法で選択し、この領域の遺伝子をもう一方の親の染色体のコピーの対応する領域に張り付けることで子供の染色体を作り出す。
(2) 前記2.の染色体のコード法を用いる場合に、配置要素の座標をランダムに動かす突然変異を実行する。
(3) 前記2.の染色体のコード法を用いる場合に、重なっている配置要素の座標をランダムに動かす突然変異を実行する。
(4) 前記2.の染色体のコード法を用いる場合に、重なっている配置要素とその近傍にある配置要素の座標をランダムに動かす突然変異を実行する。
(5) 前記2.の染色体のコード法を用いる場合に、適応度として次のフィットネス関数を用いる。
(フィットネス)=定数−(重み1)×(重なっている配置要素の総数)−(重み2)×(元の配置問題のコスト)
(6) 前記2.の染色体のコード法を用いる場合に、適応度として次のフィットネス関数を用いる。
(フィットネス)=定数−(重み1)×(配置要素の重なっている部分の面積の総和)−(重み2)×(元の配置問題のコスト)
(7) 前記4.における反復改善法として、次の方法を用いる。
重なっている配置要素およびその近傍の配置要素を上下左右に限定された範囲で移動し配置要素間の重なりを取り除く処理を反復的に実行する。
【0017】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
1.実施例
図2には本発明が適用されるシステムの構成例を示す図である。同図において、11はCPUであり、CPU11にはバス10が接続されており、バス10にはメモリ12、外部記憶装置13、通信インタフェース14、CD−ROM、FD等からデータやプログラムを読み込むための媒体読取装置15、キーボードやマウス等の入力デバイスを含む入力装置16が接続され、さらに、ディスプレイ等の出力装置17が接続されている。
【0018】
外部記憶装置13には本発明の遺伝的アルゴリズムを用いたパッキング処理を行うためのプログラムやデータが格納され、これらのプログラム等は、メモリ12に読み込まれCPU11により実行される。また、通信インタフェース14により通信回線を介して、データやプログラムを授受することもできる。
本実施例の処理を行うには、予め配線距離を最短にするなどの所望の目的関数を最適化する最適配置を求めておく。このデータは上記外部記憶装置13に記憶される。ついで、本実施例に基づく局所パッキング、遺伝的アルゴリズムによる処理を行い、配置要素を重ならないように定められた領域内に配置する。
【0019】
図3は本発明の実施例の処理を示すフローチャートであり、まず、同図により本実施例の遺伝的アルゴリズムを用いたパッキング処理について説明する。
元の目的関数による配置結果が与えられると(ステップS1)、ステップS2において、配置領域を前記図1のBに示したように部分配置領域に分割する。この分割の仕方は、元の目的関数による配置結果に応じて適宜選定する。例えば、元の目的関数による配置要素の配置結果が、大きく分けて左右に二分される場合には、前記図1のB−1に示したように2つの部分配置領域に分割する。また、例えば、配置結果が格子状に分割される場合には、図1のB−2のように部分配置領域を分割する。
ステップS3において、後述する局所的パッキング法により各部分配置領域で配置要素のパッキングを行う。
【0020】
ステップS4からステップS8は遺伝的アルゴリズムによる最適化処理であり、この処理において、前記したように部分配置領域を合わせた配置領域全体の配置要素の重なりを解消する。まず、ステップS4において、遺伝的アルゴリズムの遺伝子の一次元ストリングである染色体から構成される初期集団を生成する。ついで、ステップS5、ステップS6において前記した交叉、突然変異の操作を行い、さらにステップS7において、後述する反復改善法による高速アルゴリズムを実行する。
ステップS8において、上記交叉、突然変異の操作により得られた染色体のうち適応度の高いものを選択し、より適応度の高いものを自己複製する。
ステップS9において、得られた染色体の適応度が基準以上であるかを調べ、基準以上でなければ、ステップS5に戻り上記処理を繰り返す。そして、基準以上の適応度のものが得られた処理を終了する。
【0021】
次に上記処理における各ステップの処理について具体的に説明する。
(1)配置領域の分割方法
配置要素の相対的な位置関係をなるべく維持するために、パッキングを配置領域全体で行なうのではなく、配置領域をいくつかの部分配置領域に分割し、これらの部分配置領域に含まれている配置要素ごとにパッキングを行なう。このように部分配置領域で行なうパッキングを局所的パッキング法と呼ぶ。ここでは配置領域が長方形の場合、次にような分割法が考えられる。
【0022】
・図4(a)〜(c)に示すように配置領域全体を格子状に分割することで部分配置領域を定義する。
・図5に示すように大きな固定配置要素(例えば既に配置が決まっているLSI等)を配置領域から取り去った残りの領域を元にして部分配置領域を定義する。
・図6に示すように細長い固定配置要素(例えば電源ライン等)を配置領域から取り去った残りの領域を元にして部分配置領域を定義する。
・図7に示すように階層的に配置領域を分割して部分配置領域を作る。
・図8に示すように、配置領域を適当な多角形に分解し部分配置領域を作る。
・図9に示すように配置要素を置かない部分配置領域を設定してもよい(例えば、配置領域の中央付近は配線が混み合うので、この部分には要素を配置しないようにする場合にこのような配置要素を置かない部分を設定する)。
【0023】
(2−1)局所的パッキング法
以上のようにして領域が部分配置領域に分割されると、分割された各部分領域に前記したように配置要素をパッキングする。この局所的パッキング法として、以下の方法を用いることができる。また、これらを組み合わせて使用することもできる。
(a) 煉瓦積み方式のパッキング法
この局所的パッキング法は部分配置領域の隅の一つから順に配置要素を詰めていく方法である。例えば、図10に示すように、左下のすみから右側へ順に詰めていき、最右翼の端まできたら、再び最左翼へ戻り、既に置かれた配置要素の上に詰める。以下同様のことを部分配置領域の配置要素がなくなるまで繰り返す。
局所的パッキング法においては、前記したように配置要素に順序を付け、この順序に従って配置要素を既に局所的パッキング法によって位置が定まった配置要素に重なることがないように位置を定める。
一般に、この順序は配置問題の配置結果を基にして決める。例えば、配置要素の相対的な位置関係からパッキングの順番を決める。この場合は、例えば配置要素の横幅の総和が配置領域の横幅を越えてはならないという条件をつけて配置要素の順序を決める。
【0024】
(b) テトリス方式のパッキング法
これは煉瓦積み方式を拡張した方法である。配置要素の大きさを考慮にいれ、パッキングした結果、パッキングの境界付近が極端に凸凹しないようにある程度配慮する方法である。
まず規準の高さを決め、これをHsとする。すでに決まっている配置要素の順番に従って、図11に示すように、配置要素の高さの和がHsに達するまで詰めていく。次にいま積み上げたすぐ横に(ここでは便宜上右側とする)配置要素を前と同じように規準の高さHsに達するまで詰めていく。
これを配置領域の最右側に達するまで続ける。配置領域の最右端に達したら、配置領域の最左端に戻り既にパッキングしてある配置要素の上に重ならないように積み重ねる。これを繰り返すことで配置要素を最後まで詰める。
配置要素の順序は、煉瓦積み方式の場合と同様に、配置要素の相対的な位置関係から順序を決める。この場合も例えば左から右へ詰めていく一つのパッキング過程を考える。この過程で配置要素が配置領域の最右端を飛び越えないという条件で順番を決める。
【0025】
(c) 凝縮方式のパッキング法
この局所的パッキング法は部分配置領域内の適当な位置を選択し、この位置を中心として、図12に示すように配置要素をパッキングしていく。この中心の位置を「パッキングの中心」と呼ぶ。
配置要素の順序は、パッキングの中心を原点とする極座標を考える。部分配置領域に属する配置要素の極座標(r、θ)の動径座標rの小さい順に、動径座標が同じ場合には、偏角θの小さい順に配置要素に順序をつける。
【0026】
(d) 拡散方式のパッキング法
この方式は凝縮方式のパッキングとは正反対の局所的パッキング法である。一点のまわりに配置要素を集めるのではなく、部分配置領域の境界付近から配置要素をパッキングしていく。例えば図13に示すように、部分配置領域内にある配置要素を四つの隅から水平方向に(垂直方向に)パッキングしていく。
配置要素の順序は、部分配置領域内の配置要素のx座標をもとにしてx座標の小さい順に配置要素に順序をつける。同様にして配置要素のy座標をもとにしてy座標の小さな配置要素に順序をつける。これら2つの配置要素の順序をOx,Oyで示すことにする。配置要素をパッキングする手順は次の四つの手順を組み合わせる。
D1:配置要素でOx,Oyの両方で前にある要素を部分配置領域の左下から詰めていく。
D2:配置要素でOx,Oyの両方で後にある要素を部分配置領域の右上から詰めていく。
D3:配置要素でOxでは後ろ、Oyでは前にある要素を部分配置領域の右下から詰めていく。
D4:配置要素でOxでは前、Oyでは後ろにある要素を部分配置領域の左上から詰めていく。
【0027】
例えば、上記D1に従ってOx,Oyの両方の順序で最も前にある配置要素Cijを部分配置領域の左下に置く。この配置要素Cijを2つの順序Ox,Oyから取り除く。次に上記D2に従ってOx,Oyの両方で最も後ろにある配置要素Cijを右上に置く。この配置要素Cijを2つの順序Ox,Oyから取り除く。さらにD3に従ってOxでは後ろにOyでは前にある配置要素Cklを右上に置く。この配置要素Cklを順序Ox,Oyから取り除く。次にはD4に従って配置要素を選択し、選択した配置要素を順序Ox,Oyから取り除く。これらの手順を配置要素がなくなるまで続ける。もちろん配置要素を置く手順はD1,D2,D3,D4の順序である必要はなく、任意の組み合わせで実施できる。
【0028】
(2−2)配置領域に制限がある場合の局所的パッキング法
配置領域に固定配置要素がある場合など配置領域に制限がある場合には、次のようにしてパッキングを行う。
(a) 大きな配置要素がある場合
大きな配置要素がある場合には、大きな配置要素とそれ以外の配置要素の位置関係を保持するように局所的なパッキング法を実施する必要がある。
特に、元の目的関数により決定された配置結果に基づき大きさを持つ配置要素を配置したとき、配置要素が大きな配置要素と重なる場合には、大きな配置要素との位置関係を考慮してパッキングを実施する必要がある。
具体的には、以下のような方法が考えられる。
・図14に示すように、大きな配置要素との重なりがなくなる位置までの距離が最小となる位置にパッキングする
・大きな配置要素が配置領域の境界付近にある場合には、重なっている配置要素が配置領域から出ないように配置要素を動かす向きをあらかじめ決めておき、図15に示すように、配置要素を移動させる。
・図16に示すように、大きなビルを風が迂回していく空気の移動のアナロジーを使って重なっている配置要素を大きな配置要素の周りに分散して配置する。
【0029】
(b) 固定した配置要素がある場合
予め位置が定められた固定した配置要素がある場合、この固定要素を考慮せずに配置要素をパッキングすると固定要素と重なってしまう場合が生じる。
これを避けるために、配置要素を固定要素の上または下または右または左に置く。その際には以下のような方針で固定配置要素から移動する。
・図17に示すように、固定した配置要素との重なりがなくなる位置までの距離が最小となる位置にパッキングする。
・固定した配置要素が配置領域の境界付近にある場合には、重なっている配置要素が配置領域から出ないように配置要素を動かす向きをあらかじめ決めておき、図18に示すように移動させる。
・固定した配置要素と重なった場合には重ならないように配置要素を移動する向きをあらかじめ決めておき、図19に示すように移動させる。こうすることで、計算の高速化が計られる。
【0030】
(c) 非常に細長い固定要素がある場合
図20に示すように、ある特定の方向(x方向またはy方向)に細長い固定要素がある場合を考える。この場合には、この細長い固定要素に重なっている配置要素を移動する方向はこの固定要素の幅(x方向)、高さ(y方向)のうち短いものを選択しその方向へ重ならなくなるまで移動することでパッキングする。これによって配置要素の相対的な位置関係を崩さずにパッキングが可能になる。
【0031】
(3)遺伝的アルゴリズムによる部分配置領域の境界部分における噛み合わせ
上記したように、部分配置領域ごとに局所的パッキング法を実施すると、ある部分配置領域での配置要素と他の部分配置領域の配置要素の境界部分が噛み合わない状況が一般には起こる。この境界部分における噛み合わせを本実施例においては、以下のような遺伝的アルゴリズムによって実施する。
(a) 染色体のコード法
部分配置領域の境界の噛み合っていない境界にある配置要素は、重なっている配置要素とその近傍にある配置要素として定義される。これらの配置要素に番号を付ける。染色体はこれらの重なっている配置要素とその近傍の配置要素の座標の値を並べたものである。
例えば、図21に示すように重なっている部分が3か所ある場合には、染色体は、各部分の配置要素の座標を並べたものとなる。
すなわち、図22(a)に示すように、重なっている配置要素およびその近傍の配置要素に番号を付け、各配置要素0〜8の中心座標(X0,Y0)〜(X8,Y8)を遺伝子として、同図(b)に示すように染色体を定める。
また、各染色体の遺伝子情報として、配置要素の幅、高さ、を記憶し、さらに重なっている配置要素(同図の場合は配置要素0と配置要素6)については、重なりフラグを1にしておく。なお、重なり部分が一か所しかない場合に、その重なり部分について染色体を作り、重なり部分の配置要素の座標をランダムに動かして、必要数の染色体を作る。
【0032】
(b) 交叉
上記の染色体に作用する交叉としては以下のような方法が考えられる。
・張り付け交叉法
張り付け交叉法は、親の2つの個体のうち一つの親の染色体の領域を適当な方法で選択し、この領域の遺伝子をもう一方の親の染色体のコピーの対応する領域に張り付けることで子供の染色体を作り出す方法である。
例えば、図23に示すように、一方の親の染色体の遺伝子の一部を他方の親の染色体の遺伝子に置き換えて子供の染色体を作りだす。
・座標の重み付き平均をもとにした交叉法
座標の重み付き平均をもとにした交叉法は、親の2つの個体の染色体の同じ領域を適当な方法で選択する。この領域にある遺伝子すなわち配置要素の座標の親の2個体の重み付き平均を計算しその結果得られた座標を該当する領域の遺伝子とする染色体をもつ個体を子供とする方法である。
【0033】
例えば、図24に示すように、一方の親の染色体の一部の遺伝子〔同図の場合(X2,Y2)〜(X4,Y4)〕と、他方の親の一部の遺伝子〔同図の場合(X2’,Y2’)〜(X4’,Y4’)〕との重み付き平均を求め〔同図の場合(X2”,Y2”)〜(X4”,Y4”)〕、重み付き平均により求めた遺伝子を一方の親の遺伝子と置き換え、子供の染色体を作りだす。例えば、重み付き平均Xi”は、Xi”=(mXi+nXi’)/(m+n)〔m,nは重み〕等の式で計算される。
これらの交叉法によって親の遺伝子を保存することによって適応度の増大を高速に行なうことが可能になる。
【0034】
(c) 突然変異
前期の染色体に作用する突然変異としては以下のような方法が考えられる。
・図25に示すように、配置要素の座標をランダムに動かす突然変異。
具体的には、染色体中の特定の遺伝子の値をランダムに動かす。
・図26に示すように、重なっている配置要素の座標をランダムに動かす突然変異。
具体的には染色体中の重なりフラグが1の遺伝子の値をランダムに動かす。
・図27に示すように、重なっている配置要素とその近傍にある配置要素の座標をランダムに動かす突然変異。
具体的には染色体中の重なりフラグが1の遺伝子の値と、該遺伝子から所定の距離内にある遺伝子の値をランダムに動かす。
以上のように、突然変異は配置要素の座標に微小な正または負の値をランダムに加えることで実行する。
図26に示すように座標を変更するセルの選択を他のセルと重なっているセルとするとセルの重なりの解消を効率よく進めることができる。また図27に示すように、重なっているセルだけでなくこれらのセルの近傍にあるセルをも動かすことで解空間の探索を広く行なうことができる。
【0035】
(c) 適応度
染色体の適応度としては、以下のように定義されたフイットネス関数を使用することができる。
・(フィットネス)=定数−(重み1)×(重なっている配置要素の総数)−(重み2)×(元の配置問題のコスト)
・(フィットネス)=定数−(重み1)×(配置要素の重なっている部分の面積の総和)−(重み2)×(元の配置問題のコスト)
このようにフィットネスを定義することによって配置要素の重なりを取り除きパッキングすることができる。
【0036】
(4)本実施例の遺伝的アルゴリズムと組み合わせる高速化アルゴリズム(反復改善法)
前記図3で説明したように、本実施例においては、遺伝的アルゴリズムの高速化のために高速なアルゴリズムを組み合わせる。
本実施例においては、部分配置領域ごとに局所的なパッキングを施すため、どうしても、部分配置領域の境界付近で配置要素が噛み合わない事態がおこることがある。この境界付近の配置要素の不一致を図28に示すようなヒューリスティツクな方法を用いて解消する。
▲1▼ 図28に示すように重なっている配置要素を選択する。
▲2▼ 重なっている配置要素の近傍にある配置要素を選択する。
▲3▼ 選択された配置要素を上下左右斜めに定められた距離の範囲で移動させる。
▲4▼ 移動した位置で他の配置要素と重なっていない場合には配置要素をそこに置く。
▲5▼ 以上の操作を選択した全ての配置要素について実施する。
【0037】
すなわち、図28(a)に示すように配置要素を移動して、移動した位置で他の配置要素と重なっていない場合には配置要素をそこに置き、ついで、同図(b)に示すように配置要素を移動して、移動した位置で他の配置要素と重なっていない場合には配置要素をそこに置く処理を反復的に繰り返し、重なりを解消する。
以上のような反復改善法による高速アルゴリズムを前記図3に示したように、遺伝的アルゴリズムのループ内に設けることにより、上記した配置要素が噛み合わない事態が起こるのを解消することができ、高速に最適配置を求めることが可能となる。
【0038】
2.具体的適用例
(a) セル配置問題への応用
次に本発明の具体的適用例であるセル配置問題への応用について説明する。
ここでは、LSIの設計の際のセル配置問題を考える。目的関数を総配線長とする。この目的関数を最小にするために非線形計画法を用いてセルの配置を求めることができる。一般には、セルは重なってはならないという制約条件があるが、これを非線形計画法に導入して解を求めるのは原理的には可能であるが、セルは大きさを持つために、セルが重ならないという制約条件が必要となる。
【0039】
これを実用的な規模の問題で制約条件付きの非線形計画法等を効率良く解くことは一般には難しい。
そこで、制約条件のない場合を解き、この後に本発明を適用して遺伝的アルゴリズムでセルの重なりを解消する。
図29は上記のようにして求めたセル配置の一例を示す図である。同図(a)はセルは重なってはならないという制約条件なしに求めた総配線長を最小化するセル配置である。同図(a)に示されるセル配置に本発明を適用し、まず領域を4つに分割し、ついで前記した局所パッキング方法および遺伝的アルゴリズムを適用することにより、同図(b)に示すセル配置が得られる。
以上のように本発明を適用することにより、効率的に目的とする最適解を得ることができる。
【0040】
(b) LSIのフロアープランヘの応用
LSIの配置問題の一種にフロアプランがある。フロアプランとは、配置するセルの面積は定まっているが、セルの各辺の長さが可変である問題をいう。
この問題にも本発明で提案する遺伝的アルゴリズムによるセルの重なりの解消法が使用できる。例えば、図30(a)に示す配置が与えられたとき、本発明の方法を適用することにより、同図(b)のように重なりのない配置を得ることができる。
【0041】
【発明の効果】
以上説明したように、本発明においては、局所的パッキング法と遺伝的アルゴリズムとを組み合わせたことにより、適応度の増加を加速させることができる。また、遺伝的アルゴリズムに、配置要素の重なりの解消に適した高速アルゴリズム、および、交叉、突然変異を導入することによって解を効率的に発生させ、最適解を効率的に探索することができる。
【図面の簡単な説明】
【図1】本発明の基本原理を説明する原理図である。
【図2】本発明が適用されるシステムの構成例を示す図である。
【図3】本発明の実施例の処理を示すフローチャートである。
【図4】配置領域の部分配置領域への分割法(格子状に分割)を説明する図である。
【図5】配置要素を置くことを禁止されている領域を考慮した配置領域の分割法を説明する図である。
【図6】細長い配置禁止領域を除いて配置領域を分割する方法を説明する図である。
【図7】配置領域を階層的に分割する方法を説明する図である。
【図8】配置領域を多角形の領域へ分割する方法を説明する図である。
【図9】配置要素を置かない部分配置領域を設定しても良い例を説明する図である。
【図10】煉瓦積み方式のパッキング法を説明する図である。
【図11】テトリス方式のパッキング法を説明する図である。
【図12】凝縮方式のパッキング法を説明する図である。
【図13】拡散方式のパッキング法を説明する図である。
【図14】大きな配置要素に配置要素が重なっている場合の移動法を説明する図である。
【図15】大きな配置要素が配置領域の境界付近にある場合の移動法を説明する図である。
【図16】配置要素を大きな配置要素の周りに分散して配置する方法を説明する図である。
【図17】固定した配置要素と配置要素が重なっている場合の移動法を説明する図である。
【図18】固定した配置要素が配置領域の境界付近にある場合の移動法を説明する図である。
【図19】固定した配置要素がある場合に移動する向きをあらかじめ決めておく場合を説明する図である。
【図20】特定の方向に非常に長い固定配置要素に配置要素が重なっている場合の移動方法を説明する図である。
【図21】染色体の生成方法を説明する図である。
【図22】局所的パッキング法の結果重なってしまった配置要素とその近傍の配置要素の座標から染色体を生成する方法を説明する図である。
【図23】染色体間の交叉法(張り付け交叉)を説明する図である。
【図24】染色体間の交叉法(重み付き平均による交叉)を説明する図である。
【図25】配置要素の座標をランダムに動かすことによる突然変異を説明する図である。
【図26】重なっているセルの座標をランダムに動かすことによる突然変異を説明する図である。
【図27】重なっているセルとその近傍にあるセルの座標をランダムに動かすことによる突然変異を説明する図である。
【図28】遺伝的アルゴリズムと組み合わされるヒューリスティツクな方法を説明する図である。
【図29】本発明のLSIのセル配置問題への応用例を説明する図である。
【図30】本発明のフロアープランへの応用例を説明する図である。
【図31】遺伝的アルゴリズムにおける一世代を説明するための図である。
【図32】遺伝的アルゴリズムにおける選択を説明する図である。
【図33】遺伝的アルゴリズムにおける交叉を説明する図である。
【図34】遺伝的アルゴリズムにおける突然変異を説明する図である。
【符号の説明】
10 バス
11 CPU
12 メモリ
13 外部記憶装置
14 通信インタフェース
15 媒体読取装置
16 入力装置
17 出力装置
Claims (4)
- 所望の目的関数を最適化する配置要素の配置結果が与えられたとき、該配置結果と、配置要素の大きさを考慮して、配置要素を重なりなく定められた領域に配置するコンピュータによるパッキング処理方法であって、
上記コンピュータが、上記領域を複数の部分配置領域に分割し、
上記部分領域のある位置から、配置要素を各部分領域に詰めていくことにより、該分割された各領域内で、局所パッキング法により、配置要素を重なりなく配置し、
上記部分領域間に配置要素の重なりが生じている場合、該部分領域間に生ずる配置要素の重なりを以下の(a)〜(d)のステップからなる遺伝的アルゴリズムを実行し解消する
(a) 上記部分領域間に生ずる重なっている配置要素の座標と、その近傍の配置要素の座標を遺伝子とする染色体を生成するステップ。
(b)上記生成された染色体を親として、2つの親の染色体から子供の染色体を作り出す交叉の操作を実行して、子供の染色体を作り出し、また、配置要素の座標をランダムに動かす突然変異の操作を実行して、上記染色体に突然変位を作用させるステップ。
(c)上記交叉および突然変異の操作により得られた染色体の内、適応度の高いものを選択し、適応度の高いものを自己複製するステップ。
(d)得られた染色体の適応度が基準以上であるかを調べ、基準以上のものが得られるまで、上記処理を繰り返し、基準以上の適応度の染色体を求めるステップ。
ことを特徴とする配置問題における遺伝的アルゴリズムを用いたパッキング処理方法。 - 上記生成された染色体を親として、2つの親の染色体から子供の染色体を作り出す交叉の操作において、親の2つの個体の染色体の同じ領域を選択し、この領域にある上記2つの個体の遺伝子の重み付き平均を計算し、
その結果得られた座標を該当する領域の遺伝子とする染色体をもつ個体を子供とすることで交叉を実行する
ことを特徴とする請求項1の配置問題における遺伝的アルゴリズムを用いたパッキング処理方法。 - 遺伝的アルゴリズムを実行する過程において、重なっている配置要素を選択し、重なっている配置要素の近傍の配置要素を選択し、選択された配置要素を上下左右斜めに定められた範囲で移動させ、移動した位置で、配置要素と重なってない場合に配置要素をそこに置く反復改善法を用いる
ことを特徴とする請求項1または請求項2の配置問題における遺伝的アルゴリズムを用いたパッキング処理方法。 - 所望の目的関数を最適化する配置要素の配置結果が与えられたとき、該配置結果と、配置要素の大きさを考慮して、配置要素を重なりなく定められた領域に配置するパッキング・システムであって、
上記領域を複数の部分配置領域に分割する手段と
上記部分領域のある位置から、配置要素を各部分領域に詰めていくことにより、該分割された各領域内で、局所パッキング法により、配置要素を重なりなく配置する手段と、
上記部分領域間に配置要素の重なりが生じている場合、遺伝的アルゴリズムを実行し、上記部分領域間に生ずる配置要素の重なりを解消する手段とを備え、
遺伝的アルゴリズムを実行する手段は、上記部分領域間に生ずる重なっている配置要素の座標と、その近傍の配置要素の座標を遺伝子とする染色体を生成する手段と、
上記生成された染色体を親として、2つの親の染色体から子供の染色体を作り出す交叉の操作を実行して、子供の染色体を作り出し、また、配置要素の座標をランダムに動かす突然変異の操作を実行し、上記染色体に突然変位を作用させる手段と、
上記交叉および突然変異の操作により得られた染色体の内、適応度の高いものを選択し、適応度の高いものを自己複製する手段と、
得られた染色体の適応度が基準以上であるかを調べ、基準以上のものが得られるまで、上記処理を繰り返し、基準以上の適応度の染色体を求める手段とを備える
ことを特徴とする配置問題における遺伝的アルゴリズムを用いたパッキング・システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11515599A JP4020532B2 (ja) | 1999-04-22 | 1999-04-22 | 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11515599A JP4020532B2 (ja) | 1999-04-22 | 1999-04-22 | 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000305920A JP2000305920A (ja) | 2000-11-02 |
JP4020532B2 true JP4020532B2 (ja) | 2007-12-12 |
Family
ID=14655697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11515599A Expired - Fee Related JP4020532B2 (ja) | 1999-04-22 | 1999-04-22 | 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4020532B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4723740B2 (ja) * | 2001-03-14 | 2011-07-13 | 富士通株式会社 | 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム |
JP4879800B2 (ja) * | 2007-03-30 | 2012-02-22 | 株式会社野村総合研究所 | 2次元マップ上における表示要素間の重複回避プログラム |
JP5075576B2 (ja) * | 2007-10-29 | 2012-11-21 | 株式会社東芝 | 部品配置装置ならびにその方法およびプログラム |
JPWO2022107272A1 (ja) | 2020-11-19 | 2022-05-27 |
-
1999
- 1999-04-22 JP JP11515599A patent/JP4020532B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000305920A (ja) | 2000-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Roy et al. | Min-cut floorplacement | |
Lin et al. | POLAR: Placement based on novel rough legalization and refinement | |
Lee et al. | A shape-based block layout approach to facility layout problems using hybrid genetic algorithm | |
Adya et al. | Consistent placement of macro-blocks using floorplanning and standard-cell placement | |
EP1405228B1 (en) | Two dimensional compaction system and method | |
US8661388B2 (en) | Method of packing-based macro placement and semiconductor chip using the same | |
US6480991B1 (en) | Timing-driven global placement based on geometry-aware timing budgets | |
Preas et al. | Automatic placement a review of current techniques | |
WO2000065489A1 (en) | Subgrid detailed routing | |
Darav et al. | Eh? Placer: A high-performance modern technology-driven placer | |
US20110239177A1 (en) | Method and system for approximate placement in electronic designs | |
Cuesta et al. | 3D thermal-aware floorplanner using a MOEA approximation | |
Chen et al. | IMF: Interconnect-driven multilevel floorplanning for large-scale building-module designs | |
US6675155B2 (en) | Layout method arranging nodes corresponding to LSI elements having a connecting relationship | |
Lin et al. | Dataflow-aware macro placement based on simulated evolution algorithm for mixed-size designs | |
JP4020532B2 (ja) | 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム | |
Lin et al. | Routability-driven global placer target on removing global and local congestion for VLSI designs | |
Gwee et al. | A GA with heuristic-based decoder for IC floorplanning | |
US7962884B2 (en) | Floorplanning apparatus and computer readable recording medium storing floorplanning program | |
Grzesiak-Kopeć et al. | Hypergraphs and extremal optimization in 3D integrated circuit design automation | |
Jain et al. | PCB layout design using a genetic algorithm | |
Chen et al. | An integrated-spreading-based macro-refining algorithm for large-scale mixed-size circuit designs | |
Lin et al. | PPOM: an effective post-global placement optimization methodology for better wirelength and routability | |
Chu | Placement | |
Chu | ABOUT THIS CHAPTER |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040805 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060801 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060928 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070117 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070222 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070925 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070925 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |