JPH06332983A - 部品配置最適化方法 - Google Patents

部品配置最適化方法

Info

Publication number
JPH06332983A
JPH06332983A JP5139842A JP13984293A JPH06332983A JP H06332983 A JPH06332983 A JP H06332983A JP 5139842 A JP5139842 A JP 5139842A JP 13984293 A JP13984293 A JP 13984293A JP H06332983 A JPH06332983 A JP H06332983A
Authority
JP
Japan
Prior art keywords
block
placement
component
procedure
blocks
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.)
Pending
Application number
JP5139842A
Other languages
English (en)
Inventor
Masanobu Takahashi
正信 高橋
Kazuo Hisama
和生 久間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP5139842A priority Critical patent/JPH06332983A/ja
Priority to US08/242,888 priority patent/US5600555A/en
Publication of JPH06332983A publication Critical patent/JPH06332983A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/043Optimisation of two dimensional placement, e.g. cutting of clothes or wood

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

(57)【要約】 【目的】 より評価関数値の小さな部品配置を高速に求
めることができる部品配置最適化方法を得る。 【構成】 部品を均一な大きさのブロックまたはブロッ
クの集合に仮想的に変換して、複数のブロックまたはブ
ロックの集合の置き換えを行うことにより、総配線長な
どの評価関数値がなるべく小さくなるようにブロックの
配置を改善して、そのブロックの配置をもとに部品の配
置を決定し、また、前記ブロックの配置を改善する方法
としては、各部に期待位置座標を割り当て、評価関数値
が小さくなる位置にくるように期待位置座標を更新しな
がら、期待位置座標に近いブロック配置位置のそのブロ
ックを配置する方法などを用いる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、総配線長などの何ら
かの評価基準のもとに、最適な部品配置を決定する部品
配置最適化方法に関するものである。
【0002】
【従来の技術】図10は例えば、メルビン・ブルーア
編、池田敏雄校閲、林孝雄訳「ディジタル計算機の自動
設計」(産業図書 コンピュータ・サイエンス翻訳選書
/3 昭和48年10月29日初版発行)の第259頁
に示された、従来の部品配置最適化方法を示すフローチ
ャートであり、図11は部品の最適配置と非最適配置の
一例を示す説明図、図12は図10に示されたペア交換
法による部品配置最適化方法において交換可能な部品を
説明するための概念図である。図11において、1はこ
の部品配置最適化方法によって配置される部品であり、
3は各部品1の相互を接続する実際の配線である。ま
た、図12において、1a,1b,・・・,1jは図1
1にて符号1を付したものと同等の部品である。
【0003】次に動作について説明する。ここでは、評
価基準として例えば総配線長を用いて最適な部品配置を
決定する場合について説明する。例題として、部品を配
置する位置と、次の表1に示されるような4つの部品間
の配線本数が与えられた場合に、配線の総延長が最短と
なるような部品配置を見つける問題を考える。
【0004】
【表1】
【0005】この問題の最適解の例を図11(a)に示
し、配線の総延長がそれより長い非最適解の例を図11
(b)に示す。ここで、このような最適な部品配置を見
つける問題には解析的な解法が存在せず、最適解を見つ
けるためには、一般にすべての配置を調べる必要があ
る。しかしながら、部品数をNとした場合にはその部品
配置の組合せはN!通り存在し、最適解を見つけるため
の計算にかかる時間は部品数Nの増加とともに爆発的に
増大する。すなわち、この最適な部品配置を見つける問
題は組合せ最適化問題の一種であり、従って、通常この
問題を解くに当っては最適解に近い解(近似解)を高速
に見つけることを目的とする。
【0006】図10はこのような部品配置最適化方法の
最も基本的なアルゴリズムであるペア交換法を示すフロ
ーチャートである。なお、この部品配置最適化方法はも
ともと、すべての部品の大きさがほぼ等しく、すべての
部品が他のすべての部品と配置位置を交換可能な場合に
ついてのものであるが、ここではより一般的に、大きさ
の異なる部品を含む問題を扱えるように改良した部品配
置最適化方法について説明する。
【0007】処理がスタートするとまず、部品の初期配
置を行う(ステップST1)。この部品の初期配置はラ
ンダムに決めてもよいし、ペアリンキング法、あるいは
クラスタ成長法、あるいは重心法などの方法で、ある程
度総配線長が短くなるように決めてもよい。なお、部品
配置位置の数が部品総数よりも多い場合は、部品が配置
されていない空き領域ができるが、そこには他のどの部
品とも配線を持たないダミーの部品をとりあえず配置す
ることにする。そして、最終的に部品配置が決定したあ
とで、ダミー部品のある場所を空き領域とする。次に、
1回のサイクルを始める(ステップST2)。次に、1
回のサイクルでまだ選ばれていない部品から1つの部品
i を選択する(ステップST3)。ここで、Bの添え
字iは部品の番号とする。ただし、ダミー部品は選ばな
い。次に、選択された部品Bi と配置位置を交換した場
合に最も総配線長が短くなる部品の集合{Bj }を、部
品Bi と交換可能な部品の集合(ダミー部品を含んでも
よい)から求める(ステップST4)。
【0008】ここで、部品Bi と交換可能な部品の集合
について図12を用いて説明する。今、選択された部品
i を部品1aとすると、図12(a)の場合は部品1
dと1fの組、および部品1dと1eの組、および部品
1gと1fの組が部品1aと交換可能な部品の集合であ
る。一方、図12(b)の場合には交換可能な部品の集
合が無い。図12(c)の場合にも、部品1iは部品1
aと大きさは同じであるが、形状が異なるため交換がで
きず、交換可能な部品の集合が無い。このように、組み
合わせた場合に大きさと形状が同じになる部品の集合
が、交換可能な部品の集合である。
【0009】次に、部品Bi と部品の集合{Bj }の配
置位置を交換した場合に、交換しない場合に比べて総配
線長が短くなるかどうかを判定する(ステップST
5)。その結果、短くなる場合には部品Bi と部品の集
合{Bj }の配置位置を交換し(ステップST6)、短
くならない場合にはこのステップST49をスキップし
て部品Bi と部品の集合{Bj }との交換は行わない。
次に、1回のサイクルですべての部品が選択されたかど
うかを判定する(ステップST7)。その結果、選択さ
れていなければステップST3に戻り、ダミー部品以外
の残りの部品から次の部品を選択する。一方、選択され
た場合には、1回のサイクルによる総配線長の低減率
が、あらかじめ決められた値より小さいかどうかを判定
する(ステップST8)。もし低減率が大きい場合に
は、まだ改善の余地が大きいため、ステップST2へ戻
って次のサイクルを開始する。また、低減率があらかじ
め決められた値よりも小さければそこで終了し、最終的
に総配線長が低減された部品配置を得る。
【0010】なお、従来の部品配置最適化方法として
は、この他にも緩和法、緩和法とペア交換法を組み合わ
せた方法(力の方向によるペア単位の緩和法)などがあ
るが、これらの手法も基本的には2つまたはそれ以上の
部品および部品の集合の交換、あるいは置き換えという
ステップを含んでいる。
【0011】
【発明が解決しようとする課題】従来の部品配置最適化
方法は以上のように構成されているので、部品の大きさ
や特に形状の種類が多くなるほど、選択された部品に対
して交換可能な部品の集合の数が減少し、その結果とし
て部品を交換できる可能性が減少するため、総配線長な
どの評価関数値を大幅に低減できなくなり、さらに、熟
練者が時間をかけて決定したものに近い良好な配置結果
を得にくいなどの問題点があった。
【0012】この発明は上記のような問題点を解消する
ためになされたもので、部品の大きさや形状の種類が増
えても総配線長などの評価関数値が小さい良好な部品配
置を行うことのできる部品配置最適化方法を得ることを
目的とする。
【0013】
【課題を解決するための手段】請求項1に記載の発明に
係る部品配置最適化方法は、部品をその大きさが均一な
ブロックまたはブロックの集合に仮想的に変換し、その
ブロックの配置を、評価関数値がなるべく小さくなるよ
うに決定し、決定されたブロックの位置をもとに部品の
配置位置を決定するものである。
【0014】また、請求項2に記載の発明に係る部品配
置最適化方法は、請求項1における部品の仮想的な変換
の方式を、ブロックまたはブロックの集合の大きさの比
が整数となるように変換するものに変更したものであ
る。
【0015】また、請求項3に記載の発明に係る部品配
置最適化方法は、各部品に期待位置座標を割り当てて、
評価関数値がなるべく小さくなるような位置にくるよう
にその期待位置座標を更新しながら、期待位置座標に近
い部品配置位置にその部品を配置するようにしたもので
ある。
【0016】また、請求項4に記載の発明に係る部品配
置最適化方法は、部品をその大きさが均一なブロックに
仮想的に変換した後、各ブロックに期待位置座標を割り
当てて、評価関数値がなるべく小さくなるような位置に
くるようにその期待位置座標を更新しながら、期待位置
座標に近いブロック配置位置にそのブロックを配置する
ようにし、最終的に決定されたブロック配置をもとに部
品の配置位置を決定するものである。
【0017】また、請求項5に記載の発明に係る部品配
置最適化方法は、請求項4における部品の仮想的な変換
の方式を、ブロックの大きさの比が整数となるように変
換するように変更したものである。
【0018】また、請求項6に記載の発明に係る部品配
置最適化方法は、請求項1あるいは2におけるブロック
の配置の決定を、複数のブロックまたはブロックの集合
を置き換えることによって行うものである。
【0019】また、請求項7に記載の発明に係る部品配
置最適化方法は、請求項1,2または4,5におけるブ
ロック配置からの部品の配置位置の決定を、1つの部品
が変換されたブロックの集合とその部品の重なり具合、
および総配線長を考慮して行うものである。
【0020】
【作用】請求項1に記載の発明における部品配置最適化
方法は、部品を均一な大きさのブロックまたはブロック
の集合に変換した状態で、評価関数値がなるべく小さく
なるように決定したブロックの位置をもとに、部品の配
置位置を決定することにより、交換できる部品の候補を
増大させて、評価関数値のより小さな部品配置を得るこ
とを可能とする。
【0021】また、請求項2に記載の発明における部品
配置最適化方法は、ブロックまたはブロックの集合の大
きさの比が整数になるように変換することにより、部品
を仮想的にブロックまたはブロックの集合に変換する。
【0022】また、請求項3に記載の発明における部品
配置最適化方法は、各部品に割り当てた期待位置座標を
評価関数値がなるべく小さくなるように更新しながら、
その期待位置座標に近い部品配置位置にその部品を配置
することにより、評価関数値のより小さな部品配置を高
速に得ることを可能とする。
【0023】また、請求項4に記載の発明における部品
配置最適化方法は、部品を均一な大きさのブロックに変
換した後、上記と同様の処理を行い、最終的に決定され
たブロック配置をもとに部品の配置位置を決定すること
により、評価関数値のより小さな部品配置を高速に得る
ことを可能とする。
【0024】また、請求項5に記載の発明における部品
配置最適化方法は、ブロックの大きさの比が整数になる
ように変換することにより、部品を仮想的にブロックに
変換する。
【0025】また、請求項6に記載の発明における部品
配置最適化方法は、複数のブロックまたはブロックの集
合の置き換えによって、ブロックの配置を決定する。
【0026】また、請求項7に記載の発明における部品
配置最適化方法は、1つの部品が変換されたブロックの
集合とその部品の重なり具合や総配線長を考慮して、決
定されたブロックの配置から部品の配置位置を決定す
る。
【0027】
【実施例】
実施例1.以下、この発明の実施例1を図について説明
する。図1はこの発明による部品配置最適化方法の一実
施例のアルゴリズムを示すフローチャートであり、図2
は部品をブロックの集合に変換する方法の一例を示す概
念図、図3は交換可能なブロック集合を示す概念図であ
る。図2において、1a,1bは部品であり、2a〜2
eはこの部品1aあるいは1bから分割されたブロック
である。このブロック2a〜2eは通常正方形をしてお
り、あらかじめ決められた均一の大きさを持っている。
また、図3において、2a〜2lは前述のブロックであ
り、同じ部品から分割されたブロックは同じテクスチャ
で示されている。
【0028】次に動作について説明する。処理がスター
トするとまず、図2に示されるように、部品1a,1b
を均一な大きさのブロック2a,2bの集合、または2
c〜2eの集合に仮想的に変換する(ステップST1
1)。その時、部品1a,1bは図2に示すように、そ
の部品1a,1bより大きなブロックの集合に変換され
る。なお、総配線長を計算する際、配線は部品の中心か
らあるものとして計算するが、ブロックの集合に変換し
た場合は、1つの代表ブロックから配線があるとする
か、ブロックの集合の重心位置から配線があるとして計
算する。
【0029】次に、ブロック配置位置の設定を行う(ス
テップST12)。ブロック配置位置は通常、部品を配
置する領域内に等間隔の配列状に設定する。ブロック配
置位置の間隔はブロックの一辺の長さに等しくする。次
に、ブロック2a〜2eの数がブロック配置位置の数と
等しくなるように、他のブロックと配線を持たないダミ
ーのブロックを導入し(ステップST13)、その後、
ブロックを初期配置する(ステップST14)。ブロッ
クを配置する際、同じ部品から変換されたブロックは、
元の部品の形状を保つ必要はないが、お互いに少なくと
も1つのブロックと接するように配置する。この条件が
満たされる限り、ブロックの初期配置位置はランダムに
決めてもよいし、ペアリンキング法、あるいはクラスタ
成長法、あるいは重心法などの方法で、ある程度総配線
長が短くなるように決めてもよい。
【0030】次に1回のサイクルを始める(ステップS
T15)。次に、この1回のサイクルでまだ選ばれてい
ないブロックから同じ1つの部品から変換されたブロッ
クの集合(以下ではブロック集合と呼ぶ){Bi }を選
択する(ステップST16)。ここで、Bの添字iはブ
ロックの番号とする。ただし、ダミーブロックは選ばな
い。次に、選択されたブロック集合{Bi }と交換可能
なブロック集合(ダミーブロックを含んでもよい)か
ら、配置位置を交換した場合に最も総配線長が短くなる
ブロック集合{Bj }を求める(ステップST17)。
【0031】ここで、ブロック集合{Bi }と交換可能
なブロック集合について説明する。ブロック集合{B
i }と交換可能なブロック集合とは、ブロック集合{B
i }と同じ数のブロックを含み、かつその集合内の1つ
のブロックは同じ集合内の少なくとも1つの他のブロッ
クと接し、かつ1つの部品から変換されたブロックはす
べてその集合内に含まれるようなブロック集合である。
図3において、選択されたブロック集合{Bi }を{2
a,2b,2c}とすると、交換可能なブロック集合
は、{2d,2e,2f}または{2g,2h,2l}
または{2i,2j,2k}の3種類となる。また、
{2e,2f}を選択されたブロック集合{Bi }とす
ると、交換可能なブロック集合は{2g,2h}の1種
類だけである。このように、組み合わせた場合に大きさ
が同じになり、かつ同じ部品から変換されたブロックを
すべて含み、かつ孤立したブロックがないブロックの集
合が交換可能なブロックの集合である。
【0032】次に、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換した場合に、交換しない場
合に比べて総配線長が短くなるかどうかを判定する(ス
テップST18)。その結果、総配線長が短くなる場合
には、ブロック集合{Bi }とブロック集合{Bj }の
配置位置を交換し(ステップST19)、短くならない
場合にはこのステップST19をスキップしてブロック
集合{Bi }とブロック集合{Bj }の交換は行わな
い。この時、同じ部品から変換されたブロックはお互い
に少なくとも1つのブロックと接するように配置する。
【0033】次に、1回のサイクルでダミーブロック以
外のすべてのブロックが選択されたかどうかを判定する
(ステップST20)。選択されていない場合、ステッ
プST16に戻り、ダミーブロック以外の残りのブロッ
クから次のブロック集合を選ぶ。また、すべてが選択さ
れた場合には、1回のサイクルによる総配線長の低減率
が、あらかじめ決められた値より小さいかどうかを判定
する(ステップST21)。その結果、もし低減率が大
きい場合には、まだ改善の余地が大きいため、ステップ
ST15へ戻って次のサイクルを開始する。一方、低減
率があらかじめ決められた値より小さければ、そのブロ
ックの配置位置をもとに部品の配置位置を決定して終了
する(ステップST22)。
【0034】ここで、ブロックの配置位置をもとに部品
の配置位置を決定する際、同じ部品から変換されたブロ
ック集合の形状は、元の部品の形状と同じとは限らな
い。形状が同じ場合は、そこに部品が配置されていない
限り、ブロック集合のある場所へ元の部品をそのまま配
置すればよい。また、形状が異なる場合には、例えばそ
の部品から変換されたブロック集合と最も重なりが大き
くなり、かつ既に配置されている部品と重ならない位置
へ部品を配置する。もし、部品が配置されているために
重なりがまったく無い場合には、ブロック集合のなるべ
く近くに部品を配置する。なお、配置位置を決定する順
番は、サイズの大きな部品からとする。以上のステップ
により、最終的に総配線長の短い(準)最適配置が得ら
れる。
【0035】実施例2.なお、上記実施例1では、配置
の評価基準として総配線長を用いた場合について説明し
たが、評価基準としては、評価できる限り任意の評価基
準、およびその組み合わせを用いることができる。その
場合、それらの評価基準において配置が最適に近づくほ
ど値が小さくなるように評価関数を設定し、その評価関
数値を総配線長の代わりに用いればよい。
【0036】実施例3.また、上記実施例1では、2つ
のブロックまたはブロック集合を交換する手法、すなわ
ちペア交換法を用いて総配線長が短くなるように配置を
改善したが、2つまたは複数のブロック集合を交換また
は置き換える手法であれば、緩和法など別の手法を用い
てもよく、同様に最適化することができる。
【0037】実施例4.また、上記実施例1では、ブロ
ック集合の中に孤立したブロックがないことをブロック
集合が交換できる条件としているが、ブロックがお互い
に近くにある限りは交換可能なブロック集合としてもよ
く、その場合も同様に最適化できる。
【0038】実施例5.また、上記実施例1では、すべ
ての部品の配置位置はあらかじめ決まっていなかった
が、あらかじめ配置位置の決まっている部品、すなわち
固定部品がある場合でも、固定部品の配置位置を部品配
置領域並びに部品配置位置から除外し、常に固定部品を
配置しておくことにより、固定部品を含めて同様に最適
化することができる。
【0039】実施例6.また、上記実施例1では、ステ
ップST22において、ブロック集合との重なりを考慮
して部品配置位置を決定したが、重なりと共に総配線長
を考慮して部品配置位置を決定するようにしてもよい。
【0040】実施例7.また、上記実施例1では、ステ
ップST22において、配置位置を決定する順番を、サ
イズの大きな部品からとしていたが、部品配置領域の中
心に近い部品からとするなど、他の順番を用いてもよ
い。
【0041】実施例8.また、上記実施例1では、ステ
ップST22において、ブロックの配置位置をもとに部
品の配置位置を決定する過程を1度だけ行っていたが、
この過程を何度も繰り返し、その中で最良の部品配置を
最終的な部品配置とするようにしてもよい。
【0042】実施例9.また、上記実施例では、ブロッ
クの大きさを均一としたが、ブロックの大きさの比が整
数倍であってもよい。
【0043】実施例10.次に、この発明の実施例10
を図について説明する。図4はこの発明による部品配置
最適化方法の他の実施例のアルゴリズムを示すフローチ
ャートであり、図5は仮想配線の導入の方法を示す概念
図、図6はブロック配置位置の一例を示す説明図であ
る。図5において、1a,1bは部品、2a〜2cはブ
ロック、3a,3bは実際の配線(以下、実配線とい
う)で、以前に説明したそれらと同等のものであり、4
a〜4cはブロック2bと2cあるいはブロック2aと
2bの間の仮想的な配線(以下、仮想配線という)であ
る。また、図6において、5a〜5iは1つ1つのブロ
ックが置かれる中心位置を示すブロック配置位置で、○
中の数字は位置番号を表しており、各々の座標は、Xi
=(Xi1,Xi2)[i=1〜N、Nはブロック配置位置
の総数]で与えられる。
【0044】次に動作について説明する。処理がスター
トするとまず、部品が大きさの均一なブロックの集合に
仮想的に変換される(ステップST31)。この変換
は、図2に示した実施例1で説明した場合と同様に行わ
れる。次に、そのブロック間に仮想配線を導入する(ス
テップST32)。この仮想配線をどのように決めるか
を図5を用いて以下に説明する。
【0045】この図5では、部品1aはブロック2a,
2bに変換され、部品1bはブロック2cに変換されて
いる。1つの部品から変換されたブロックのうち1つの
ブロックを主ブロック、残りのブロックを副ブロックと
呼ぶ。図5の場合、2a,2cが主ブロック、2bは副
ブロックである。図5に示されるように、元々部品1
a,1b間にあった実配線3a,3bは、それらの部品
がブロックに変換された際は、主ブロック間の配線(図
の場合2a,2c間の配線)になる。そして、主ブロッ
ク間に実配線がある場合は、主ブロックと相手の副ブロ
ック間にも同じ本数の仮想配線を仮定する。図5の場合
は主ブロック2a,2c間に2本の実配線があるため、
主ブロック2cと相手の副ブロック2b間にも2本の仮
想配線4a,4bを仮定する。また、同じ部品から変換
されたブロック間にも仮想配線を仮定する。図5の場
合、ブロック2a,2bは同じ部品1aから変換された
ブロックであるため、その間に仮想配線4cを仮定す
る。なお、同じ部品から変換されたブロック間の仮想配
線の本数は変数であり、問題により最適化する。
【0046】次に、ブロック配置位置を設定する(ステ
ップST33)。このブロック配置位置は通常、図6に
示すように部品を配置する領域内に等間隔の配列状に設
定し、各ブロック配置位置5a〜5iの間隔はブロック
の一辺の長さに等しくする。図6はブロック数9個の場
合のブロック配置位置の一例を示している。次に、ブロ
ック数がブロック配置位置の数と等しくなるように、他
のブロックと配線を持たないダミーのブロックを導入す
る(ステップST24)。従って、ブロックの総数は、
ブロック配置位置の総数と同じNとなる。次に、各ブロ
ックに1つずつ、ブロック配置位置の座標と同じ次元の
ベクトルを割り当てる(ステップST35)。ここで
は、このベクトルを期待位置座標と呼び、Wi
(Wi1,Wi2)[i=1〜N]と表す。
【0047】次に、その期待位置座標Wi を、部品を配
置する領域内の適当な乱数で初期化し(ステップST3
6)、その後、サイクル数Tを0に設定する(ステップ
ST37)。次に、1回のサイクル中で選ばれていない
ブロック配置位置からランダムに1つのブロック配置位
置Sを選ぶ(ステップST38)。そして、選ばれたブ
ロック配置位置Sの位置座標Xs に最も近い期待位置座
標Wi を持つブロック(これを最適ブロックと呼ぶ)
を、1回のサイクル中でまだ選ばれていないブロックか
ら選ぶ(ステップST39)。これを式で表すと、最適
ブロックの番号bは次の(1)式で与えられる。
【0048】
【数1】
【0049】ここで、Uは1回のサイクル中でまだ選ば
れていないブロックの番号の集合である。例えば、ブロ
ック配置位置Sに対する最適ブロックとしてb番目のブ
ロックが選ばれた場合、そのサイクル中ではb番目のブ
ロックがブロック配置位置Sに配置されることを意味す
る。次に、拘束条件を考慮して、すべてのブロックの期
待位置座標に、次の(2)式および(3)式で与えられ
る更新量を加えて更新する(ステップST40)。
【0050】
【数2】
【0051】
【数3】
【0052】ここで、εは期待位置座標更新係数と呼ば
れる定数で、通常は1以下に設定される。また、f
(i,b)はi番目のブロックが最適ブロックのとき1
となり、それ以外の時はa×hibとなる。ここで、aは
配線係数と呼ばれる定数であり、hibはi番目とb番目
のブロックの間の配線本数である。なお、配線本数hib
は実配線だけでなく、仮想配線も含めた配線本数であ
る。また、a×hibの上限は1であり、1以上の時には
1にする。
【0053】次に、1回の学習サイクルにおいてすべて
のブロック配置位置が選ばれたか否かを判定し(ステッ
プST41)、選ばれていない場合には、ふたたびブロ
ック配置位置の選択(ステップST38)に戻る。一
方、すべてのブロック配置位置が選ばれていれば、決定
されたブロック配置に対する実配線の総配線長Lを求め
る(ステップST42)。この総配線長Lは、例えば図
6に示されるようなブロック配置位置の場合、2つのブ
ロック配置位置の水平方向(X1 方向)と垂直方向(X
2 方向)の距離の和として計算する。次に、それまでの
サイクルで得られた最小の総配線長Lmin と求めたLを
比較する(ステップST43)。比較の結果、LがL
min よりも小さければ、このサイクルにおいて求まった
新しいブロック配置をそれまでのサイクルで最適の配置
として記憶し、Lを最小の総配線長としてLmin に代入
する(ステップST44)。一方、LがLmin 以上の場
合にはこのステップST44をスキップして当該処理を
行わない。ここまでが1回のサイクルであり、次にサイ
クル数Tに1を加える(ステップST45)。
【0054】次に、サイクル数Tとあらかじめ決められ
た最大サイクル数Tmax を比較する(ステップST4
6)。TがTmax に達していなければ再びステップST
38より次のサイクルを開始する。また、TがTmax
達した場合には、最終的に最適配置として記憶したブロ
ック配置をもとの部品の配置位置を決定して終了する
(ステップST47)。部品の配置位置を決定する際
は、例えば実施例1のステップST22でも説明したよ
うに、サイズの大きな部品から順番に、その部品から変
換されたブロック集合との重なり具合や総配線長を考慮
して、既に配置されている部品と重ならない位置へ部品
を配置してゆく。以上のステップにより、最終的に総配
線長の短い(準)最適配置が得られる。
【0055】次に、上記実施例10の有効性を示すた
め、従来の部品配置最適化方法の1つである緩和法と、
上記実施例10による部品配置最適化方法とを計算機シ
ミュレーションにて比較した結果を示す。ここで、前記
緩和法とは、部品間の配線をゴムひものような力線と考
え、力線によってその部品に働く力がつりあう位置に近
い部品配置位置に部品を配置する方法である。比較に用
いた問題は、同じ大きさの部品100個を、10×10
の格子点上に配置する問題で、すべての部品間には確率
0.5で配線が存在するものと仮定した。
【0056】計算機シミュレーションを行った結果を図
7に示す。図7は計算時間を等しくした場合に得られる
部品配置の総配線長のヒストグラムである。すなわち、
横軸は格子点の間隔を1とした時の総配線長で、縦軸は
総配線長を50ごとに区切った場合に、総配線長がその
範囲内に収まる部品配置が得られる確率である。使用し
た計算機は、SUN/SPARC330ワークステーシ
ョンで、1回の最適化に要する時間は2分とした。ま
た、シミュレーションは各方法について1000回ずつ
行った。図7に示されるように、緩和法では、ランダム
な配置に比べて若干総配線長の短い部品配置が得られる
が、実施例10による方法では、ランダムな配置および
緩和法に比べても大幅に総配線長の短い部品配置が得ら
れることがわかる。総配線長の平均は、ランダム配置が
16395であるのに対して、緩和法では16154、
実施例10の方法では14780であった。
【0057】実施例11.なお、上記実施例10では、
ステップST38におけるブロック配置位置の選択手順
をランダムにしたものを示したが、何らかの基準に従っ
て選択順序を決めてもよい。
【0058】実施例12.また、上記実施例10では、
パラメータεおよびaが学習中はある値に固定されてい
るものとしたが、学習中に変更してもよく、さらに、パ
ラメータaの値として、実配線と仮想配線の別の値を用
いるようにしてもよい。
【0059】実施例13.また、上記実施例10では、
総配線長をなるべく小さくすることだけを目的としてい
たが、例えば配線が混まないようにしたり、特定の部品
を近づけたり離したりするなど、他の条件を含んだ上で
配置最適化を行うことも可能である。そのためには、例
えば(1)式にこれらの条件を反映する項を導入し、ス
テップST21において最適ブロックを選択する時にこ
れらの条件を満たすようにブロックを選択すればよい。
【0060】実施例14.また、上記実施例10では、
すべての部品の配置位置はあらかじめ決まっていなかっ
たが、あらかじめ配置位置の決まっている部品、すなわ
ち固定部品がある場合でも、固定部品の配置位置を部品
配置領域ならびにブロック配置位置から除外し、常に固
定部品を配置しておくことにより、固定部品を含めて同
様に最適化することができる。
【0061】実施例15.また、上記実施例10では、
ステップST47において、配置位置を決定する順番
を、サイズの大きな部品からとしていたが、部品配置領
域の中心に近い部品からとするなど、他の順番を用いて
もよい。
【0062】実施例16.また、上記実施例10では、
ステップST47において、ブロックの配置位置をもと
に部品の配置位置を決定する過程を1度だけ行っていた
が、この過程を何度も繰り返し、その中で最良の部品配
置を最終的な部品配置とするようにしてもよい。
【0063】実施例17.また、上記実施例10は前述
の実施例1と組み合わせてもよい。すなわち、部品をブ
ロックに変換後、実施例10と実施例1による方法でブ
ロック配置を最適化し、ブロック配置をもとに部品配置
を決定してもよい。
【0064】実施例18.次に、この発明の実施例18
を図について説明する。図8はこの発明による部品配置
最適化方法を実行する計算機システムの一例を示すブロ
ック図である。図において、6はオペレータからの指示
などが入力されるキーボードであり、7は処理結果など
が表示されるディスプレイである。8は当該システムの
中央処理装置(以下、CPUという)であり、9はCP
U8が処理動作の過程でデータ類の記憶に用いるメモリ
である。10はCPU8に外部接続されたハードディス
クであり、このハードディスク10には、オペレーティ
ングシステム(OS)の他、データファイルとしての部
品サイズデータ、部品配置領域データ、部品間の配線本
数データ、ブロックサイズ等のパラメータデータ、部品
配置位置データ、さらにはプログラムなどがあらかじめ
格納されている。
【0065】次に動作について説明する。ここで、図9
はその動作のアルゴリズムを示すフローチャートであ
る。まず、キーボード6よりプログラム名を入力するこ
とにより、ハードディスク10より該当するプログラム
がメモリ9にロードされ、プログラムの実行が開始され
(ステップST51)、以下、そのプログラムに従って
処理が進行する。次に、ハードディスク10に格納され
ている部品サイズデータ、部品配置領域データ、配線本
数データ、パラメータデータなどの他のデータがメモリ
9にロードされる(ステップST52)。次に、パラメ
ータデータの1つであるブロックサイズのデータと部品
サイズデータをもとに、個々の部品を幾つのブロックに
どのように変換するかをCPU8によって計算し、個々
のブロックに1から順番に番号を付して、ブロックの総
数データと共に結果をメモリ8に格納する(ステップS
T53)。部品は実施例1のステップST11において
説明したように、全体がその部品よりも大きくなるブロ
ック集合に変換する。
【0066】次に、部品配置領域データとブロックサイ
ズのデータをもとに、CPU8によってブロック配置位
置座標を計算し、個々のブロック配置位置に1から順番
に番号をつけて、結果をメモリ9に格納する(ステップ
ST54)。ブロック配置位置は通常、部品を配置する
領域内に等間隔の配列状に設定する。ブロック配置位置
の間隔はブロックのサイズ(ブロックの1辺の長さ)に
等しくする。次に、ブロック配置位置の総数よりブロッ
ク数を引いた値をCPU8により計算し、その値をダミ
ーブロック数としてメモリ9に格納する(ステップST
55)。なお、そのダミーブロックにもステップST2
7において各ブロックにつけたブロック番号の最大値+
1から順番に番号を付す。ここで、このダミーブロック
は他のどのブロックとも配線を持たない。
【0067】次に、ブロックを初期配置する(ステップ
ST56)。すなわち、個々のブロックについて、その
ブロックを配置するブロック配置位置番号をCPU8を
用いて決定し、結果をメモリ9に格納する。ブロックを
配置する際、同じ部品から変換されたブロックは、元の
部品の形状を保つ必要はないが、お互いに少なくとも1
つのブロックと接するように配置する。この条件が満た
される限り、ブロックの初期配置位置はランダムに決め
てもよいし、ペアリンキング法、あるいはクラスタ成長
法、あるいは重心法などの方法で、ある程度総配線長が
短くなるように決めてもよい。その後、1回のサイクル
を開始し(ステップST57)、次いで部品のブロック
への変換データなどをもとに、CPU8を用いて、1回
のサイクルでまだ選ばれていないブロックから同じ1つ
の部品から変換されたブロック集合{Bi }の選択を行
う(ステップST58)。ここで、Bの添え字iはブロ
ックの番号とする。ただし、ダミーブロックの選択は行
わない。
【0068】次に、部品のブロックへの変換データ、配
線本数データ、部品配置位置座標データ、ブロック配置
位置番号データなどをもとに、CPU8を用いて、選択
されたブロック集合{Bi }と交換可能なブロック集合
(この場合にはダミーブロックを含んでもよい)から、
配置位置を交換した場合に最も総配線長が短くなるブロ
ック集合{Bj }を求める(ステップST59)。ここ
で、交換可能なブロック集合とは、実施例1のステップ
ST17において説明したのと同様に、ブロック集合
{Bi }と同じ数のブロックを含み、かつ同じ部品から
変換されたブロックをすべて含み、かつ孤立したブロッ
クがないブロックの集合である。
【0069】次に、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換した場合に、交換しない場
合に比べて総配線長が短くなるかどうかをCPU8を用
いて判定する(ステップST60)。もし判定の結果、
短くなる場合には、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換し(ステップST61)、
短くならない場合にはこのステップST61をスキップ
して、ブロック集合{Bi }とブロック集合{Bj }の
交換は行わない。ここで、ブロックの配置位置を交換す
るとは、ブロック配置位置番号データにおいて、対応す
るブロックの配置位置番号を入れ換えることを意味す
る。この時、同じ部品から変換されたブロックは、配置
位置交換後もお互いに少なくとも1つのブロックと接す
るように配置位置を決定する。
【0070】次に、1回のサイクルでダミーブロック以
外のすべてのブロックが選択されたかどうかをCPU8
によって判定する(ステップST62)。その結果、選
択されていない場合には、ステップST58に戻って、
ダミーブロック以外の残りのブロックから次のブロック
集合を選ぶ。一方、すべてのブロックが選択されていれ
ば、1回のサイクルによる総配線長の低減率をCPU8
を用いて計算し、その値があらかじめ決められた値より
小さいかどうかをCPU8によって判定する(ステップ
ST63)。もし低減率が大きければまだ改善の余地が
大きいため、ステップST57へ戻って次のサイクルを
開始する。また、低減率があらかじめ決められた値より
小さい場合には、ブロック配置位置番号データ、部品の
ブロックへの変換データなどをもとに、CPU8を用い
て部品の配置位置を決定し、結果をハードディスク10
にセーブして終了する(ステップST64)。
【0071】なお、この部品の配置位置は、ブロックの
最終的な配置位置をもとに決定する。同じ部品から変換
されたブロック集合の形状が元の部品の形状と同じ場合
は、そこに部品が配置されていない限り、ブロック集合
のある位置をそのまま部品の配置位置とする。また元の
部品の形状と異なる場合には、例えばその部品から変換
されたブロック集合と最も重なりが大きくなり、かつ既
に配置されている部品と重ならない位置を部品の配置位
置とする。もし、部品が配置されているために重なりが
まったくない場合には、ブロック集合のなるべく近くを
部品の配置位置とする。なお、配置位置を決定してゆく
順番は、サイズの大きな部品からとする。以上のステッ
プにより、最終的に、総配線長の短い(準)最適配置が
得られる。
【0072】実施例19.なお、上記実施例18では、
配置の評価基準として総配線長を用いた場合について説
明したが、評価基準としては、評価できる限り任意の評
価基準、およびその組み合わせを用いることができる。
その場合、それらの評価基準において配置が最適に近づ
くほど値が小さくなるように評価関数を設定し、その評
価関数値を総配線長の代わりに用いればよい。
【0073】実施例20.また、上記実施例18では、
2つのブロックまたはブロック集合を交換する手法、す
なわちペア交換法を用いて総配線長が短くなるように配
置を改善したが、2つまたは複数のブロック集合を交換
または置き換える手法であれば、緩和法など別の手法を
用いてもよく、同様に最適化することができる。
【0074】実施例21.また、上記実施例18では、
ブロック集合の中に孤立したブロックがないことをブロ
ック集合の配置位置を交換できる条件としているが、ブ
ロックがお互いに近くにある限りは交換可能なブロック
集合としてもよく、その場合も同様に最適化できる。
【0075】実施例22.また、上記実施例18では、
すべての部品の配置位置はあらかじめ決まっていなかっ
たが、あらかじめ配置位置の決まっている部品、すなわ
ち固定部品がある場合でも、固定部品の配置位置を部品
配置領域並びに部品配置位置から除外し、常に固定部品
を配置しておくことにより、固定部品を含めて同様に最
適化することができる。
【0076】実施例23.また、上記実施例18では、
ステップST64において、ブロック集合との重なりを
考慮して部品配置位置を決定したが、重なりと共に総配
線長を考慮して部品配置位置を決定するようにしてもよ
い。
【0077】実施例24.また、上記実施例18では、
ステップST64において、配置位置を決める順番をサ
イズの大きな部品からとしていたが、部品配置領域の中
心に近い部品からとするなど、他の順番を用いてもよ
い。
【0078】実施例25.また、上記実施例18では、
ステップST64において、部品の配置位置を決定する
過程を1度だけ行っていたが、この過程を部品の配置位
置が決定していない状態から何度も繰り返し、その中で
最良の部品配置を最終的な部品配置とするようにしても
よい。
【0079】実施例26.また、上記実施例18では、
ブロックの大きさを均一としたが、ブロックの大きさの
比が整数倍であってもよい。
【0080】実施例27.また、上記実施例18は、図
1に示された実施例1による部品配置最適化方法を計算
機システムを用いて実現したものについて示したが、図
4に示された実施例10をはじめとする他の部品配置最
適化方法を適用してもよく、それを上記の実施例18と
同様にして計算機システムを用いて実現することによ
り、部品配置を最適化するための装置が得られる。
【0081】
【発明の効果】以上のように、請求項1に記載の発明に
よれば、部品を均一な大きさのブロックまたはブロック
の集合に仮想的に変換した後、評価関数値がなるべく小
さくなるようにそのブロックの配置を決定し、決定され
たブロックの位置をもとに部品の配置位置を決定するよ
うに構成したので、ある部品に対してそれとは形状の異
なる部品についても、部品または部品の集合の大きさが
同一であれば交換可能となり、交換できる部品または部
品の候補が大幅に増加して、結果的に総配線長などの評
価関数値がより小さな部品配置が得られる効果がある。
【0082】また、請求項2に記載の発明によれば、部
品をその大きさの比が整数となるブロックまたはブロッ
クの集合に仮想的に変換するように構成したので、交換
できる部品または部品の候補をさらに増やすことができ
る効果がある。
【0083】また、請求項3に記載の発明によれば、評
価関数値がなるべく小さくなるような位置にくるよう
に、各部品に割り当てた期待位置座標を更新しながら、
期待位置座標に近い部品配置位置にその部品を配置する
ように構成したので、総配線長などの評価関数値がより
小さな部品配置を、より高速に求めることができる効果
がある。
【0084】また、請求項4に記載の発明によれば、部
品をその大きさが均一なブロックに仮想的に変換した
後、上記と同様の処理を実行し、最終的に決定されたブ
ロック配置をもとに部品の配置位置を決定するように構
成したので、総配線長などの評価関数値がより小さな部
品配置を、より高速に求めることができる効果がある。
【0085】また、請求項5に記載の発明によれば、部
品をその大きさの比が整数になるブロックに仮想的に変
換するように構成したので、交換できる部品または部品
の候補をさらに増やすこともできる効果がある。
【0086】また、請求項6に記載の発明によれば、複
数のブロックまたはブロックの集合を置き換えることに
よってブロックの配置を決めるように構成したので、ブ
ロックの配置の決定の処理が容易となる効果がある。
【0087】また、請求項7に記載の発明によれば、1
つの部品が変換されたブロックの集合とその部品の重な
り具合、および総配線長を考慮して、ブロック配置から
部品の配置位置を決めるように構成したので、ブロック
配置からの部品の配置位置の決定の処理が容易となる効
果がある。
【図面の簡単な説明】
【図1】この発明の実施例1による部品配置最適化方法
のアルゴリズムを示すフローチャートである。
【図2】上記実施例にて部品をブロックへ変換する方法
の一例を示す概念図である。
【図3】上記実施例における交換可能なブロック集合を
示す概念図である。
【図4】この発明の実施例10による部品配置最適化方
法のアルゴリズムを示すフローチャートである。
【図5】上記実施例における仮想配線の導入方法を示す
概念図である。
【図6】上記実施例におけるブロック配置位置の一例を
示す説明図である。
【図7】上記実施例による部品配置最適化方法と従来の
緩和法の性能を計算機シミュレーションにより比較した
結果を示す説明図である。
【図8】この発明の実施例18による部品配置最適化方
法を実現する計算機システムの構成を示すブロック図で
ある。
【図9】上記実施例の動作のアルゴリズムを示すフロー
チャートである。
【図10】従来の部品配置最適化方法を示すフローチャ
ートである。
【図11】部品の最適配置と非最適配置の一例を示す説
明図である。
【図12】従来の部品配置最適化方法における交換可能
な部品を説明するための概念図である。
【符号の説明】
1,1a〜1j 部品 2a〜2l ブロック 3,3a,3b 実際の配線(実配線) 4a〜4c 仮想的な配線(仮想配線) 5a〜5i ブロック配置位置
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年9月29日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】変更
【補正内容】
【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、総配線長などの何ら
かの評価基準のもとに、最適な部品配置を決定する部品
配置最適化方法に関するものである。
【0002】
【従来の技術】図10は例えば、メルビン・ブルーア
編、池田敏雄校閲、林孝雄訳「ディジタル計算機の自動
設計」(産業図書 コンピュータ・サイエンス翻訳選書
/3 昭和48年10月29日初版発行)の第259頁
に示された、従来の部品配置最適化方法を示すフローチ
ャートであり、図11は部品の最適配置と非最適配置の
一例を示す説明図、図12は図10に示されたペア交換
法による部品配置最適化方法において交換可能な部品を
説明するための概念図である。図11において、1はこ
の部品配置最適化方法によって配置される部品であり、
3は各部品1の相互を接続する実際の配線である。ま
た、図12において、1a,1b,・・・,1jは図1
1にて符号1を付したものと同等の部品である。
【0003】次に動作について説明する。ここでは、評
価基準として例えば総配線長を用いて最適な部品配置を
決定する場合について説明する。例題として、部品を配
置する位置と、次の表1に示されるような4つの部品間
の配線本数が与えられた場合に、配線の総延長が最短と
なるような部品配置を見つける問題を考える。
【0004】
【表1】
【0005】この問題の最適解の例を図11(a)に示
し、配線の総延長がそれより長い非最適解の例を図11
(b)に示す。ここで、このような最適な部品配置を見
つける問題には解析的な解法が存在せず、最適解を見つ
けるためには、一般にすべての配置を調べる必要があ
る。しかしながら、部品数をNとした場合にはその部品
配置の組合せはN!通り存在し、最適解を見つけるため
の計算にかかる時間は部品数Nの増加とともに爆発的に
増大する。すなわち、この最適な部品配置を見つける問
題は組合せ最適化問題の一種であり、従って、通常この
問題を解くに当っては最適解に近い解(近似解)を高速
に見つけることを目的とする。
【0006】図10はこのような部品配置最適化方法の
最も基本的なアルゴリズムであるペア交換法を示すフロ
ーチャートである。なお、この部品配置最適化方法はも
ともと、すべての部品の大きさがほぼ等しく、すべての
部品が他のすべての部品と配置位置を交換可能な場合に
ついてのものであるが、ここではより一般的に、大きさ
の異なる部品を含む問題を扱えるように改良した部品配
置最適化方法について説明する。
【0007】処理がスタートするとまず、部品の初期配
置を行う(ステップST1)。この部品の初期配置はラ
ンダムに決めてもよいし、ペアリンキング法、あるいは
クラスタ成長法、あるいは重心法などの方法で、ある程
度総配線長が短くなるように決めてもよい。なお、部品
配置位置の数が部品総数よりも多い場合は、部品が配置
されていない空き領域ができるが、そこには他のどの部
品とも配線を持たないダミーの部品をとりあえず配置す
ることにする。そして、最終的に部品配置が決定したあ
とで、ダミー部品のある場所を空き領域とする。次に、
1回のサイクルを始める(ステップST2)。次に、1
回のサイクルでまだ選ばれていない部品から1つの部品
i を選択する(ステップST3)。ここで、Bの添え
字iは部品の番号とする。ただし、ダミー部品は選ばな
い。次に、選択された部品Bi と配置位置を交換した場
合に最も総配線長が短くなる部品の集合{Bj }を、部
品Bi と交換可能な部品の集合(ダミー部品を含んでも
よい)から求める(ステップST4)。
【0008】ここで、部品Bi と交換可能な部品の集合
について図12を用いて説明する。今、選択された部品
i を部品1aとすると、図12(a)の場合は部品1
dと1fの組、および部品1dと1eの組、および部品
1gと1fの組が部品1aと交換可能な部品の集合であ
る。一方、図12(b)の場合には交換可能な部品の集
合が無い。図12(c)の場合にも、部品1iは部品1
aと大きさは同じであるが、形状が異なるため交換がで
きず、交換可能な部品の集合が無い。このように、組み
合わせた場合に大きさと形状が同じになる部品の集合
が、交換可能な部品の集合である。
【0009】次に、部品Bi と部品の集合{Bj }の配
置位置を交換した場合に、交換しない場合に比べて総配
線長が短くなるかどうかを判定する(ステップST
5)。その結果、短くなる場合には部品Bi と部品の集
合{Bj }の配置位置を交換し(ステップST6)、短
くならない場合にはこのステップST49をスキップし
て部品Bi と部品の集合{Bj }との交換は行わない。
次に、1回のサイクルですべての部品が選択されたかど
うかを判定する(ステップST7)。その結果、選択さ
れていなければステップST3に戻り、ダミー部品以外
の残りの部品から次の部品を選択する。一方、選択され
た場合には、1回のサイクルによる総配線長の低減率
が、あらかじめ決められた値より小さいかどうかを判定
する(ステップST8)。もし低減率が大きい場合に
は、まだ改善の余地が大きいため、ステップST2へ戻
って次のサイクルを開始する。また、低減率があらかじ
め決められた値よりも小さければそこで終了し、最終的
に総配線長が低減された部品配置を得る。
【0010】なお、従来の部品配置最適化方法として
は、この他にも緩和法、緩和法とペア交換法を組み合わ
せた方法(力の方向によるペア単位の緩和法)などがあ
るが、これらの手法も基本的には2つまたはそれ以上の
部品および部品の集合の交換、あるいは置き換えという
ステップを含んでいる。
【0011】
【発明が解決しようとする課題】従来の部品配置最適化
方法は以上のように構成されているので、部品の大きさ
や特に形状の種類が多くなるほど、選択された部品に対
して交換可能な部品の集合の数が減少し、その結果とし
て部品を交換できる可能性が減少するため、総配線長な
どの評価関数値を大幅に低減できなくなり、さらに、熟
練者が時間をかけて決定したものに近い良好な配置結果
を得にくいなどの問題点があった。
【0012】この発明は上記のような問題点を解消する
ためになされたもので、部品の大きさや形状の種類が増
えても総配線長などの評価関数値が小さい良好な部品配
置を行うことのできる部品配置最適化方法を得ることを
目的とする。
【0013】
【課題を解決するための手段】請求項1に記載の発明に
係る部品配置最適化方法は、部品をその大きさが均一な
ブロックまたはブロックの集合に仮想的に変換し、その
ブロックの配置を、評価関数値がなるべく小さくなるよ
うに決定し、決定されたブロックの位置をもとに部品の
配置位置を決定するものである。
【0014】また、請求項2に記載の発明に係る部品配
置最適化方法は、請求項1における部品の仮想的な変換
の方式を、ブロックまたはブロックの集合の大きさの比
が整数となるように変換するものに変更したものであ
る。
【0015】また、請求項3に記載の発明に係る部品配
置最適化方法は、各部品に期待位置座標を割り当てて、
評価関数値がなるべく小さくなるような位置にくるよう
にその期待位置座標を更新しながら、期待位置座標に近
い部品配置位置にその部品を配置するようにしたもので
ある。
【0016】また、請求項4に記載の発明に係る部品配
置最適化方法は、部品をその大きさが均一なブロックに
仮想的に変換した後、各ブロックに期待位置座標を割り
当てて、評価関数値がなるべく小さくなるような位置に
くるようにその期待位置座標を更新しながら、期待位置
座標に近いブロック配置位置にそのブロックを配置する
ようにし、最終的に決定されたブロック配置をもとに部
品の配置位置を決定するものである。
【0017】また、請求項5に記載の発明に係る部品配
置最適化方法は、請求項4における部品の仮想的な変換
の方式を、ブロックの大きさの比が整数となるように変
換するように変更したものである。
【0018】また、請求項6に記載の発明に係る部品配
置最適化方法は、請求項1あるいは2におけるブロック
の配置の決定を、複数のブロックまたはブロックの集合
を置き換えることによって行うものである。
【0019】また、請求項7に記載の発明に係る部品配
置最適化方法は、請求項1,2または4,5,6におけ
るブロック配置からの部品の配置位置の決定を、1つの
部品が変換されたブロックの集合とその部品の重なり具
合、および評価関数値を考慮して行うものである。
【0020】
【作用】請求項1に記載の発明における部品配置最適化
方法は、部品を均一な大きさのブロックまたはブロック
の集合に変換した状態で、評価関数値がなるべく小さく
なるように決定したブロックの位置をもとに、部品の配
置位置を決定することにより、交換できる部品の候補を
増大させて、評価関数値のより小さな部品配置を得るこ
とを可能とする。
【0021】また、請求項2に記載の発明における部品
配置最適化方法は、ブロックまたはブロックの集合の大
きさの比が整数になるように変換することにより、部品
を仮想的にブロックまたはブロックの集合に変換する。
【0022】また、請求項3に記載の発明における部品
配置最適化方法は、各部品に割り当てた期待位置座標を
評価関数値がなるべく小さくなるように更新しながら、
その期待位置座標に近い部品配置位置にその部品を配置
することにより、評価関数値のより小さな部品配置を高
速に得ることを可能とする。
【0023】また、請求項4に記載の発明における部品
配置最適化方法は、部品を均一な大きさのブロックに変
換した後、上記と同様の処理を行い、最終的に決定され
たブロック配置をもとに部品の配置位置を決定すること
により、評価関数値のより小さな部品配置を高速に得る
ことを可能とする。
【0024】また、請求項5に記載の発明における部品
配置最適化方法は、ブロックの大きさの比が整数になる
ように変換することにより、部品を仮想的にブロックに
変換する。
【0025】また、請求項6に記載の発明における部品
配置最適化方法は、複数のブロックまたはブロックの集
合の置き換えによって、ブロックの配置を決定する。
【0026】また、請求項7に記載の発明における部品
配置最適化方法は、1つの部品が変換されたブロックの
集合とその部品の重なり具合や評価関数値を考慮して、
決定されたブロックの配置から部品の配置位置を決定す
る。
【0027】
【実施例】 実施例1.以下、この発明の実施例1を図について説明
する。図1はこの発明による部品配置最適化方法の一実
施例のアルゴリズムを示すフローチャートであり、図2
は部品をブロックの集合に変換する方法の一例を示す概
念図、図3は交換可能なブロック集合を示す概念図であ
る。図2において、1a,1bは部品であり、2a〜2
eはこの部品1aあるいは1bから分割されたブロック
である。このブロック2a〜2eは通常正方形をしてお
り、あらかじめ決められた均一の大きさを持っている。
また、図3において、2a〜2lは前述のブロックであ
り、同じ部品から分割されたブロックは同じテクスチャ
で示されている。
【0028】次に動作について説明する。処理がスター
トするとまず、図2に示されるように、部品1a,1b
を均一な大きさのブロック2a,2bの集合、または2
c〜2eの集合に仮想的に変換する(ステップST1
1)。その時、部品1a,1bは図2に示すように、そ
の部品1a,1bより大きなブロックの集合に変換され
る。なお、総配線長を計算する際、配線は部品の中心か
らあるものとして計算するが、ブロックの集合に変換し
た場合は、1つの代表ブロックから配線があるとする
か、ブロックの集合の重心位置から配線があるとして計
算する。
【0029】次に、ブロック配置位置の設定を行う(ス
テップST12)。ブロック配置位置は通常、部品を配
置する領域内に等間隔の配列状に設定する。ブロック配
置位置の間隔はブロックの一辺の長さに等しくする。次
に、ブロック2a〜2eの数がブロック配置位置の数と
等しくなるように、他のブロックと配線を持たないダミ
ーのブロックを導入し(ステップST13)、その後、
ブロックを初期配置する(ステップST14)。ブロッ
クを配置する際、同じ部品から変換されたブロックは、
元の部品の形状を保つ必要はないが、お互いに少なくと
も1つのブロックと接するように配置する。この条件が
満たされる限り、ブロックの初期配置位置はランダムに
決めてもよいし、ペアリンキング法、あるいはクラスタ
成長法、あるいは重心法などの方法で、ある程度総配線
長が短くなるように決めてもよい。
【0030】次に1回のサイクルを始める(ステップS
T15)。次に、この1回のサイクルでまだ選ばれてい
ないブロックから同じ1つの部品から変換されたブロッ
クの集合(以下ではブロック集合と呼ぶ){Bi }を選
択する(ステップST16)。ここで、Bの添字iはブ
ロックの番号とする。ただし、ダミーブロックは選ばな
い。次に、選択されたブロック集合{Bi }と交換可能
なブロック集合(ダミーブロックを含んでもよい)か
ら、配置位置を交換した場合に最も総配線長が短くなる
ブロック集合{Bj }を求める(ステップST17)。
【0031】ここで、ブロック集合{Bi }と交換可能
なブロック集合について説明する。ブロック集合{B
i }と交換可能なブロック集合とは、ブロック集合{B
i }と同じ数のブロックを含み、かつその集合内の1つ
のブロックは同じ集合内の少なくとも1つの他のブロッ
クと接し、かつ1つの部品から変換されたブロックはす
べてその集合内に含まれるようなブロック集合である。
図3において、選択されたブロック集合{Bi }を{2
a,2b,2c}とすると、交換可能なブロック集合
は、{2d,2e,2f}または{2g,2h,2l}
または{2i,2j,2k}の3種類となる。また、
{2e,2f}を選択されたブロック集合{Bi }とす
ると、交換可能なブロック集合は{2g,2h}の1種
類だけである。このように、組み合わせた場合に大きさ
が同じになり、かつ同じ部品から変換されたブロックを
すべて含み、かつ孤立したブロックがないブロックの集
合が交換可能なブロックの集合である。
【0032】次に、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換した場合に、交換しない場
合に比べて総配線長が短くなるかどうかを判定する(ス
テップST18)。その結果、総配線長が短くなる場合
には、ブロック集合{Bi }とブロック集合{Bj }の
配置位置を交換し(ステップST19)、短くならない
場合にはこのステップST19をスキップしてブロック
集合{Bi }とブロック集合{Bj }の交換は行わな
い。この時、同じ部品から変換されたブロックはお互い
に少なくとも1つのブロックと接するように配置する。
【0033】次に、1回のサイクルでダミーブロック以
外のすべてのブロックが選択されたかどうかを判定する
(ステップST20)。選択されていない場合、ステッ
プST16に戻り、ダミーブロック以外の残りのブロッ
クから次のブロック集合を選ぶ。また、すべてが選択さ
れた場合には、1回のサイクルによる総配線長の低減率
が、あらかじめ決められた値より小さいかどうかを判定
する(ステップST21)。その結果、もし低減率が大
きい場合には、まだ改善の余地が大きいため、ステップ
ST15へ戻って次のサイクルを開始する。一方、低減
率があらかじめ決められた値より小さければ、そのブロ
ックの配置位置をもとに部品の配置位置を決定して終了
する(ステップST22)。
【0034】ここで、ブロックの配置位置をもとに部品
の配置位置を決定する際、同じ部品から変換されたブロ
ック集合の形状は、元の部品の形状と同じとは限らな
い。形状が同じ場合は、そこに部品が配置されていない
限り、ブロック集合のある場所へ元の部品をそのまま配
置すればよい。また、形状が異なる場合には、例えばそ
の部品から変換されたブロック集合と最も重なりが大き
くなり、かつ既に配置されている部品と重ならない位置
へ部品を配置する。もし、部品が配置されているために
重なりがまったく無い場合には、ブロック集合のなるべ
く近くに部品を配置する。なお、配置位置を決定する順
番は、サイズの大きな部品からとする。以上のステップ
により、最終的に総配線長の短い(準)最適配置が得ら
れる。
【0035】実施例2.なお、上記実施例1では、配置
の評価基準として総配線長を用いた場合について説明し
たが、評価基準としては、評価できる限り任意の評価基
準、およびその組み合わせを用いることができる。その
場合、それらの評価基準において配置が最適に近づくほ
ど値が小さくなるように評価関数を設定し、その評価関
数値を総配線長の代わりに用いればよい。
【0036】実施例3.また、上記実施例1では、2つ
のブロックまたはブロック集合を交換する手法、すなわ
ちペア交換法を用いて総配線長が短くなるように配置を
改善したが、2つまたは複数のブロック集合を交換また
は置き換える手法であれば、緩和法など別の手法を用い
てもよく、同様に最適化することができる。
【0037】実施例4.また、上記実施例1では、ブロ
ック集合の中に孤立したブロックがないことをブロック
集合が交換できる条件としているが、ブロックがお互い
に近くにある限りは交換可能なブロック集合としてもよ
く、その場合も同様に最適化できる。
【0038】実施例5.また、上記実施例1では、すべ
ての部品の配置位置はあらかじめ決まっていなかった
が、あらかじめ配置位置の決まっている部品、すなわち
固定部品がある場合でも、固定部品の配置位置を部品配
置領域並びに部品配置位置から除外し、常に固定部品を
配置しておくことにより、固定部品を含めて同様に最適
化することができる。
【0039】実施例6.また、上記実施例1では、ステ
ップST22において、ブロック集合との重なりを考慮
して部品配置位置を決定したが、重なりと共に総配線長
などの評価関数値を考慮して部品配置位置を決定するよ
うにしてもよい。
【0040】実施例7.また、上記実施例1では、ステ
ップST22において、配置位置を決定する順番を、サ
イズの大きな部品からとしていたが、部品配置領域の中
心に近い部品からとするなど、他の順番を用いてもよ
い。
【0041】実施例8.また、上記実施例1では、ステ
ップST22において、ブロックの配置位置をもとに部
品の配置位置を決定する過程を1度だけ行っていたが、
この過程を何度も繰り返し、その中で最良の部品配置を
最終的な部品配置とするようにしてもよい。
【0042】実施例9.また、上記実施例では、ブロッ
クの大きさを均一としたが、ブロックの大きさの比が整
数倍であってもよい。
【0043】実施例10.次に、この発明の実施例10
を図について説明する。図4はこの発明による部品配置
最適化方法の他の実施例のアルゴリズムを示すフローチ
ャートであり、図5は仮想配線の導入の方法を示す概念
図、図6はブロック配置位置の一例を示す説明図であ
る。図5において、1a,1bは部品、2a〜2cはブ
ロック、3a,3bは実際の配線(以下、実配線とい
う)で、以前に説明したそれらと同等のものであり、4
a〜4cはブロック2bと2cあるいはブロック2aと
2bの間の仮想的な配線(以下、仮想配線という)であ
る。また、図6において、5a〜5iは1つ1つのブロ
ックが置かれる中心位置を示すブロック配置位置で、○
中の数字は位置番号を表しており、各々の座標は、Xi
=(Xi1,Xi2)[i=1〜N、Nはブロック配置位置
の総数]で与えられる。
【0044】次に動作について説明する。処理がスター
トするとまず、部品が大きさの均一なブロックの集合に
仮想的に変換される(ステップST31)。この変換
は、図2に示した実施例1で説明した場合と同様に行わ
れる。次に、そのブロック間に仮想配線を導入する(ス
テップST32)。この仮想配線をどのように決めるか
を図5を用いて以下に説明する。
【0045】この図5では、部品1aはブロック2a,
2bに変換され、部品1bはブロック2cに変換されて
いる。1つの部品から変換されたブロックのうち1つの
ブロックを主ブロック、残りのブロックを副ブロックと
呼ぶ。図5の場合、2a,2cが主ブロック、2bは副
ブロックである。図5に示されるように、元々部品1
a,1b間にあった実配線3a,3bは、それらの部品
がブロックに変換された際は、主ブロック間の配線(図
の場合2a,2c間の配線)になる。そして、主ブロッ
ク間に実配線がある場合は、主ブロックと相手の副ブロ
ック間にも同じ本数の仮想配線を仮定する。図5の場合
は主ブロック2a,2c間に2本の実配線があるため、
主ブロック2cと相手の副ブロック2b間にも2本の仮
想配線4a,4bを仮定する。また、同じ部品から変換
されたブロック間にも仮想配線を仮定する。図5の場
合、ブロック2a,2bは同じ部品1aから変換された
ブロックであるため、その間に仮想配線4cを仮定す
る。なお、同じ部品から変換されたブロック間の仮想配
線の本数は変数であり、問題により最適化する。
【0046】次に、ブロック配置位置を設定する(ステ
ップST33)。このブロック配置位置は通常、図6に
示すように部品を配置する領域内に等間隔の配列状に設
定し、各ブロック配置位置5a〜5iの間隔はブロック
の一辺の長さに等しくする。図6はブロック数9個の場
合のブロック配置位置の一例を示している。次に、ブロ
ック数がブロック配置位置の数と等しくなるように、他
のブロックと配線を持たないダミーのブロックを導入す
る(ステップST24)。従って、ブロックの総数は、
ブロック配置位置の総数と同じNとなる。次に、各ブロ
ックに1つずつ、ブロック配置位置の座標と同じ次元の
ベクトルを割り当てる(ステップST35)。ここで
は、このベクトルを期待位置座標と呼び、Wi
(Wi1,Wi2)[i=1〜N]と表す。
【0047】次に、その期待位置座標Wi を、部品を配
置する領域内の適当な乱数で初期化し(ステップST3
6)、その後、サイクル数Tを0に設定する(ステップ
ST37)。次に、1回のサイクル中で選ばれていない
ブロック配置位置からランダムに1つのブロック配置位
置Sを選ぶ(ステップST38)。そして、選ばれたブ
ロック配置位置Sの位置座標Xs に最も近い期待位置座
標Wi を持つブロック(これを最適ブロックと呼ぶ)
を、1回のサイクル中でまだ選ばれていないブロックか
ら選ぶ(ステップST39)。これを式で表すと、最適
ブロックの番号bは次の(1)式で与えられる。
【0048】
【数1】
【0049】ここで、Uは1回のサイクル中でまだ選ば
れていないブロックの番号の集合である。例えば、ブロ
ック配置位置Sに対する最適ブロックとしてb番目のブ
ロックが選ばれた場合、そのサイクル中ではb番目のブ
ロックがブロック配置位置Sに配置されることを意味す
る。次に、拘束条件を考慮して、すべてのブロックの期
待位置座標に、次の(2)式および(3)式で与えられ
る更新量を加えて更新する(ステップST40)。
【0050】
【数2】
【0051】
【数3】
【0052】ここで、εは期待位置座標更新係数と呼ば
れる定数で、通常は1以下に設定される。また、f
(i,b)はi番目のブロックが最適ブロックのとき1
となり、それ以外の時はa×hibとなる。ここで、aは
配線係数と呼ばれる定数であり、hibはi番目とb番目
のブロックの間の配線本数である。なお、配線本数hib
は実配線だけでなく、仮想配線も含めた配線本数であ
る。また、a×hibの上限は1であり、1以上の時には
1にする。
【0053】次に、1回の学習サイクルにおいてすべて
のブロック配置位置が選ばれたか否かを判定し(ステッ
プST41)、選ばれていない場合には、ふたたびブロ
ック配置位置の選択(ステップST38)に戻る。一
方、すべてのブロック配置位置が選ばれていれば、決定
されたブロック配置に対する実配線の総配線長Lを求め
る(ステップST42)。この総配線長Lは、例えば図
6に示されるようなブロック配置位置の場合、2つのブ
ロック配置位置の水平方向(X1 方向)と垂直方向(X
2 方向)の距離の和として計算する。次に、それまでの
サイクルで得られた最小の総配線長Lmin と求めたLを
比較する(ステップST43)。比較の結果、LがL
min よりも小さければ、このサイクルにおいて求まった
新しいブロック配置をそれまでのサイクルで最適の配置
として記憶し、Lを最小の総配線長としてLmin に代入
する(ステップST44)。一方、LがLmin 以上の場
合にはこのステップST44をスキップして当該処理を
行わない。ここまでが1回のサイクルであり、次にサイ
クル数Tに1を加える(ステップST45)。
【0054】次に、サイクル数Tとあらかじめ決められ
た最大サイクル数Tmax を比較する(ステップST4
6)。TがTmax に達していなければ再びステップST
38より次のサイクルを開始する。また、TがTmax
達した場合には、最終的に最適配置として記憶したブロ
ック配置をもとの部品の配置位置を決定して終了する
(ステップST47)。部品の配置位置を決定する際
は、例えば実施例1のステップST22でも説明したよ
うに、サイズの大きな部品から順番に、その部品から変
換されたブロック集合との重なり具合や総配線長を考慮
して、既に配置されている部品と重ならない位置へ部品
を配置してゆく。以上のステップにより、最終的に総配
線長の短い(準)最適配置が得られる。
【0055】次に、上記実施例10の有効性を示すた
め、従来の部品配置最適化方法の1つである緩和法と、
上記実施例10による部品配置最適化方法とを計算機シ
ミュレーションにて比較した結果を示す。ここで、前記
緩和法とは、部品間の配線をゴムひものような力線と考
え、力線によってその部品に働く力がつりあう位置に近
い部品配置位置に部品を配置する方法である。比較に用
いた問題は、同じ大きさの部品100個を、10×10
の格子点上に配置する問題で、すべての部品間には確率
0.5で配線が存在するものと仮定した。
【0056】計算機シミュレーションを行った結果を図
7に示す。図7は計算時間を等しくした場合に得られる
部品配置の総配線長のヒストグラムである。すなわち、
横軸は格子点の間隔を1とした時の総配線長で、縦軸は
総配線長を50ごとに区切った場合に、総配線長がその
範囲内に収まる部品配置が得られる確率である。使用し
た計算機は、SUN/SPARC330ワークステーシ
ョンで、1回の最適化に要する時間は2分とした。ま
た、シミュレーションは各方法について1000回ずつ
行った。図7に示されるように、緩和法では、ランダム
な配置に比べて若干総配線長の短い部品配置が得られる
が、実施例10による方法では、ランダムな配置および
緩和法に比べても大幅に総配線長の短い部品配置が得ら
れることがわかる。総配線長の平均は、ランダム配置が
16395であるのに対して、緩和法では16154、
実施例10の方法では14780であった。
【0057】実施例11.なお、上記実施例10では、
ステップST38におけるブロック配置位置の選択手順
をランダムにしたものを示したが、何らかの基準に従っ
て選択順序を決めてもよい。
【0058】実施例12.また、上記実施例10では、
パラメータεおよびaが学習中はある値に固定されてい
るものとしたが、学習中に変更してもよく、さらに、パ
ラメータaの値として、実配線と仮想配線の別の値を用
いるようにしてもよい。
【0059】実施例13.また、上記実施例10では、
総配線長をなるべく小さくすることだけを目的としてい
たが、例えば配線が混まないようにしたり、特定の部品
を近づけたり離したりするなど、他の条件を含んだ上で
配置最適化を行うことも可能である。そのためには、例
えば(1)式にこれらの条件を反映する項を導入し、ス
テップST21において最適ブロックを選択する時にこ
れらの条件を満たすようにブロックを選択すればよい。
【0060】実施例14.また、上記実施例10では、
すべての部品の配置位置はあらかじめ決まっていなかっ
たが、あらかじめ配置位置の決まっている部品、すなわ
ち固定部品がある場合でも、固定部品の配置位置を部品
配置領域ならびにブロック配置位置から除外し、常に固
定部品を配置しておくことにより、固定部品を含めて同
様に最適化することができる。
【0061】実施例15.また、上記実施例10では、
ステップST47において、配置位置を決定する順番
を、サイズの大きな部品からとしていたが、部品配置領
域の中心に近い部品からとするなど、他の順番を用いて
もよい。
【0062】実施例16.また、上記実施例10では、
ステップST47において、ブロックの配置位置をもと
に部品の配置位置を決定する過程を1度だけ行っていた
が、この過程を何度も繰り返し、その中で最良の部品配
置を最終的な部品配置とするようにしてもよい。
【0063】実施例17.また、上記実施例10は前述
の実施例1と組み合わせてもよい。すなわち、部品をブ
ロックに変換後、実施例10と実施例1による方法でブ
ロック配置を最適化し、ブロック配置をもとに部品配置
を決定してもよい。
【0064】実施例18.また、上記実施例10では、
(2)式で用いられる関数f(i,b)を(3)式のよ
うに定義しているが、f(i,b)は(3)式に限られ
ず、他の関数を用いてもよい。たとえば、次式(4)に
示すように、他の部品を介しての影響を考慮するように
してもよい。次式(4)においてa1 は定数である。
【0065】
【数4】
【0066】実施例19.次に、この発明の実施例19
を図について説明する。図8はこの発明による部品配置
最適化方法を実行する計算機システムの一例を示すブロ
ック図である。図において、6はオペレータからの指示
などが入力されるキーボードであり、7は処理結果など
が表示されるディスプレイである。8は当該システムの
中央処理装置(以下、CPUという)であり、9はCP
U8が処理動作の過程でデータ類の記憶に用いるメモリ
である。10はCPU8に外部接続されたハードディス
クであり、このハードディスク10には、オペレーティ
ングシステム(OS)の他、データファイルとしての部
品サイズデータ、部品配置領域データ、部品間の配線本
数データ、ブロックサイズ等のパラメータデータ、部品
配置位置データ、さらにはプログラムなどがあらかじめ
格納されている。
【0067】次に動作について説明する。ここで、図9
はその動作のアルゴリズムを示すフローチャートであ
る。まず、キーボード6よりプログラム名を入力するこ
とにより、ハードディスク10より該当するプログラム
がメモリ9にロードされ、プログラムの実行が開始され
(ステップST51)、以下、そのプログラムに従って
処理が進行する。次に、ハードディスク10に格納され
ている部品サイズデータ、部品配置領域データ、配線本
数データ、パラメータデータなどの他のデータがメモリ
9にロードされる(ステップST52)。次に、パラメ
ータデータの1つであるブロックサイズのデータと部品
サイズデータをもとに、個々の部品を幾つのブロックに
どのように変換するかをCPU8によって計算し、個々
のブロックに1から順番に番号を付して、ブロックの総
数データと共に結果をメモリ8に格納する(ステップS
T53)。部品は実施例1のステップST11において
説明したように、全体がその部品よりも大きくなるブロ
ック集合に変換する。
【0068】次に、部品配置領域データとブロックサイ
ズのデータをもとに、CPU8によってブロック配置位
置座標を計算し、個々のブロック配置位置に1から順番
に番号をつけて、結果をメモリ9に格納する(ステップ
ST54)。ブロック配置位置は通常、部品を配置する
領域内に等間隔の配列状に設定する。ブロック配置位置
の間隔はブロックのサイズ(ブロックの1辺の長さ)に
等しくする。次に、ブロック配置位置の総数よりブロッ
ク数を引いた値をCPU8により計算し、その値をダミ
ーブロック数としてメモリ9に格納する(ステップST
55)。なお、そのダミーブロックにもステップST2
7において各ブロックにつけたブロック番号の最大値+
1から順番に番号を付す。ここで、このダミーブロック
は他のどのブロックとも配線を持たない。
【0069】次に、ブロックを初期配置する(ステップ
ST56)。すなわち、個々のブロックについて、その
ブロックを配置するブロック配置位置番号をCPU8を
用いて決定し、結果をメモリ9に格納する。ブロックを
配置する際、同じ部品から変換されたブロックは、元の
部品の形状を保つ必要はないが、お互いに少なくとも1
つのブロックと接するように配置する。この条件が満た
される限り、ブロックの初期配置位置はランダムに決め
てもよいし、ペアリンキング法、あるいはクラスタ成長
法、あるいは重心法などの方法で、ある程度総配線長が
短くなるように決めてもよい。その後、1回のサイクル
を開始し(ステップST57)、次いで部品のブロック
への変換データなどをもとに、CPU8を用いて、1回
のサイクルでまだ選ばれていないブロックから同じ1つ
の部品から変換されたブロック集合{Bi }の選択を行
う(ステップST58)。ここで、Bの添え字iはブロ
ックの番号とする。ただし、ダミーブロックの選択は行
わない。
【0070】次に、部品のブロックへの変換データ、配
線本数データ、部品配置位置座標データ、ブロック配置
位置番号データなどをもとに、CPU8を用いて、選択
されたブロック集合{Bi }と交換可能なブロック集合
(この場合にはダミーブロックを含んでもよい)から、
配置位置を交換した場合に最も総配線長が短くなるブロ
ック集合{Bj }を求める(ステップST59)。ここ
で、交換可能なブロック集合とは、実施例1のステップ
ST17において説明したのと同様に、ブロック集合
{Bi }と同じ数のブロックを含み、かつ同じ部品から
変換されたブロックをすべて含み、かつ孤立したブロッ
クがないブロックの集合である。
【0071】次に、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換した場合に、交換しない場
合に比べて総配線長が短くなるかどうかをCPU8を用
いて判定する(ステップST60)。もし判定の結果、
短くなる場合には、ブロック集合{Bi }とブロック集
合{Bj }の配置位置を交換し(ステップST61)、
短くならない場合にはこのステップST61をスキップ
して、ブロック集合{Bi }とブロック集合{Bj }の
交換は行わない。ここで、ブロックの配置位置を交換す
るとは、ブロック配置位置番号データにおいて、対応す
るブロックの配置位置番号を入れ換えることを意味す
る。この時、同じ部品から変換されたブロックは、配置
位置交換後もお互いに少なくとも1つのブロックと接す
るように配置位置を決定する。
【0072】次に、1回のサイクルでダミーブロック以
外のすべてのブロックが選択されたかどうかをCPU8
によって判定する(ステップST62)。その結果、選
択されていない場合には、ステップST58に戻って、
ダミーブロック以外の残りのブロックから次のブロック
集合を選ぶ。一方、すべてのブロックが選択されていれ
ば、1回のサイクルによる総配線長の低減率をCPU8
を用いて計算し、その値があらかじめ決められた値より
小さいかどうかをCPU8によって判定する(ステップ
ST63)。もし低減率が大きければまだ改善の余地が
大きいため、ステップST57へ戻って次のサイクルを
開始する。また、低減率があらかじめ決められた値より
小さい場合には、ブロック配置位置番号データ、部品の
ブロックへの変換データなどをもとに、CPU8を用い
て部品の配置位置を決定し、結果をハードディスク10
にセーブして終了する(ステップST64)。
【0073】なお、この部品の配置位置は、ブロックの
最終的な配置位置をもとに決定する。同じ部品から変換
されたブロック集合の形状が元の部品の形状と同じ場合
は、そこに部品が配置されていない限り、ブロック集合
のある位置をそのまま部品の配置位置とする。また元の
部品の形状と異なる場合には、例えばその部品から変換
されたブロック集合と最も重なりが大きくなり、かつ既
に配置されている部品と重ならない位置を部品の配置位
置とする。もし、部品が配置されているために重なりが
まったくない場合には、ブロック集合のなるべく近くを
部品の配置位置とする。なお、配置位置を決定してゆく
順番は、サイズの大きな部品からとする。以上のステッ
プにより、最終的に、総配線長の短い(準)最適配置が
得られる。
【0074】実施例20.なお、上記実施例19では、
配置の評価基準として総配線長を用いた場合について説
明したが、評価基準としては、評価できる限り任意の評
価基準、およびその組み合わせを用いることができる。
その場合、それらの評価基準において配置が最適に近づ
くほど値が小さくなるように評価関数を設定し、その評
価関数値を総配線長の代わりに用いればよい。
【0075】実施例21.また、上記実施例19では、
2つのブロックまたはブロック集合を交換する手法、す
なわちペア交換法を用いて総配線長が短くなるように配
置を改善したが、2つまたは複数のブロック集合を交換
または置き換える手法であれば、緩和法など別の手法を
用いてもよく、同様に最適化することができる。
【0076】実施例22.また、上記実施例19では、
ブロック集合の中に孤立したブロックがないことをブロ
ック集合の配置位置を交換できる条件としているが、ブ
ロックがお互いに近くにある限りは交換可能なブロック
集合としてもよく、その場合も同様に最適化できる。
【0077】実施例23.また、上記実施例19では、
すべての部品の配置位置はあらかじめ決まっていなかっ
たが、あらかじめ配置位置の決まっている部品、すなわ
ち固定部品がある場合でも、固定部品の配置位置を部品
配置領域並びに部品配置位置から除外し、常に固定部品
を配置しておくことにより、固定部品を含めて同様に最
適化することができる。
【0078】実施例24.また、上記実施例19では、
ステップST64において、ブロック集合との重なりを
考慮して部品配置位置を決定したが、重なりと共に総配
線長を考慮して部品配置位置を決定するようにしてもよ
い。
【0079】実施例25.また、上記実施例19では、
ステップST64において、配置位置を決める順番をサ
イズの大きな部品からとしていたが、部品配置領域の中
心に近い部品からとするなど、他の順番を用いてもよ
い。
【0080】実施例26.また、上記実施例19では、
ステップST64において、部品の配置位置を決定する
過程を1度だけ行っていたが、この過程を部品の配置位
置が決定していない状態から何度も繰り返し、その中で
最良の部品配置を最終的な部品配置とするようにしても
よい。
【0081】実施例27.また、上記実施例19では、
ブロックの大きさを均一としたが、ブロックの大きさの
比が整数倍であってもよい。
【0082】実施例28.また、上記実施例19は、図
1に示された実施例1による部品配置最適化方法を計算
機システムを用いて実現したものについて示したが、図
4に示された実施例10をはじめとする他の部品配置最
適化方法を適用してもよく、それを上記の実施例18と
同様にして計算機システムを用いて実現することによ
り、部品配置を最適化するための装置が得られる。
【0083】
【発明の効果】以上のように、請求項1に記載の発明に
よれば、部品を均一な大きさのブロックまたはブロック
の集合に仮想的に変換した後、評価関数値がなるべく小
さくなるようにそのブロックの配置を決定し、決定され
たブロックの位置をもとに部品の配置位置を決定するよ
うに構成したので、ある部品に対してそれとは形状の異
なる部品についても、部品または部品の集合の大きさが
同一であれば交換可能となり、交換できる部品または部
品の候補が大幅に増加して、結果的に総配線長などの評
価関数値がより小さな部品配置が得られる効果がある。
【0084】また、請求項2に記載の発明によれば、部
品をその大きさの比が整数となるブロックまたはブロッ
クの集合に仮想的に変換するように構成したので、交換
できる部品または部品の候補をさらに増やすことができ
る効果がある。
【0085】また、請求項3に記載の発明によれば、評
価関数値がなるべく小さくなるような位置にくるよう
に、各部品に割り当てた期待位置座標を更新しながら、
期待位置座標に近い部品配置位置にその部品を配置する
ように構成したので、総配線長などの評価関数値がより
小さな部品配置を、より高速に求めることができる効果
がある。
【0086】また、請求項4に記載の発明によれば、部
品をその大きさが均一なブロックに仮想的に変換した
後、上記と同様の処理を実行し、最終的に決定されたブ
ロック配置をもとに部品の配置位置を決定するように構
成したので、総配線長などの評価関数値がより小さな部
品配置を、より高速に求めることができる効果がある。
【0087】また、請求項5に記載の発明によれば、部
品をその大きさの比が整数になるブロックに仮想的に変
換するように構成したので、交換できる部品または部品
の候補をさらに増やすこともできる効果がある。
【0088】また、請求項6に記載の発明によれば、複
数のブロックまたはブロックの集合を置き換えることに
よってブロックの配置を決めるように構成したので、ブ
ロックの配置の決定の処理が容易となる効果がある。
【0089】また、請求項7に記載の発明によれば、1
つの部品が変換されたブロックの集合とその部品の重な
り具合、および評価関数値を考慮して、ブロック配置か
ら部品の配置位置を決めるように構成したので、ブロッ
ク配置からの部品の配置位置の決定の処理が容易となる
効果がある。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 配置する部品を、その大きさが均一なブ
    ロックまたはブロックの集合に仮想的に変換する変換手
    順と、前記変換手順にて前記ブロックまたはブロックの
    集合に変換した状態で、評価関数値をより小さくするよ
    うに前記ブロックの配置を決定するブロック配置手順
    と、前記ブロック配置手順にて決定された前記ブロック
    の配置をもとに、前記部品の配置を決定する部品配置手
    順とを含んだ部品配置最適化方法。
  2. 【請求項2】 配置する部品を、その大きさの比が整数
    となるブロックまたはブロックの集合に仮想的に変換す
    る変換手順と、前記変換手順にて前記ブロックまたはブ
    ロックの集合に変換した状態で、評価関数値をより小さ
    くするように前記ブロックの配置を決定するブロック配
    置手順と、前記ブロック配置手順にて決定された前記ブ
    ロックの配置をもとに、前記部品の配置を決定する部品
    配置手順とを含んだ部品配置最適化方法。
  3. 【請求項3】 部品を配置すべき部品配置位置の設定を
    行う部品配置位置設定手順と、部品数が前記部品配置位
    置設定手順にて設定された部品配置位置の数と等しくな
    るように、他の部品と配線を持たないダミーの部品を導
    入するダミー導入手順と、前記部品配置位置の座標と同
    じ次元の期待位置座標ベクトルを前記各部品上に割り当
    てる期待位置座標割当手順と、前記部品配置位置より、
    まだ選択されていない部品配置位置を1つ選択する部品
    配置位置選択手順と、前記部品配置位置選択手順によっ
    て選ばれた部品配置位置に対して最もコスト関数値が小
    さな最適部品を、まだ選択されていない前記部品より1
    つ選択する最適部品選択手順と、前記最適部品選択手順
    にて選択された最適部品を、前記部品配置位置選択手順
    にて選択された部品配置位置に配置することに決定する
    配置決定手順と、前記最適部品の期待位置座標を、前記
    部品配置位置選択手順にて選択された部品配置位置に近
    づける座標調整手順と、前記最適部品以外の部品の期待
    位置座標を拘束条件に従って更新する座標更新手順と、
    前記部品すべての部品配置位置が選択されるまで前記部
    品配置位置選択手順から前記座標更新手順までの処理を
    繰り返し、すべての前記部品の配置を決定する配置決定
    手順と、前記配置決定手順を1回または複数回繰り返し
    て、そのうちで評価関数値が最も小さな配置を最終的な
    部品配置として決定する最終決定手順とを含んだ部品配
    置最適化方法。
  4. 【請求項4】 配置する部品を、その大きさが均一なブ
    ロックに仮想的に変換する変換手順と、同一の前記部品
    より変換された前記ブロックの間に、実際の配線とは別
    に仮想的な配線を仮定する仮想配線仮定手順と、前記ブ
    ロックを配置すべきブロック配置位置の設定を行うブロ
    ック配置位置設定手順と、ブロック数が前記ブロック配
    置位置設定手順にて設定されたブロック配置位置の数と
    等しくなるように、他のブロックと配線を持たないダミ
    ーのブロックを導入するダミー導入手順と、前記ブロッ
    ク配置位置の座標と同じ次元の期待位置座標ベクトルを
    前記各ブロック上に割り当てる期待位置座標割当手順
    と、前記ブロック配置位置より、まだ選択されていない
    ブロック配置位置を1つ選択するブロック配置位置選択
    手順と、前記ブロック配置位置選択手順によって選ばれ
    たブロック配置位置に対して最もコスト関数値が小さな
    最適ブロックを、まだ選択されていない前記ブロックよ
    り1つ選択する最適ブロック選択手順と、前記最適ブロ
    ック選択手順にて選択された最適ブロックを、前記ブロ
    ック配置位置選択手順にて選択されたブロック配置位置
    に配置することに決定する配置決定手順と、前記最適ブ
    ロックの期待位置座標を、前記ブロック配置位置選択手
    順にて選択されたブロック配置位置に近づける座標調整
    手順と、前記最適ブロック以外のブロックの期待位置座
    標を拘束条件に従って更新する座標更新手順と、前記ブ
    ロックすべてのブロック配置位置が選択されるまで前記
    ブロック配置位置選択手順から前記座標更新手順までの
    処理を繰り返し、すべての前記ブロックの配置を決定す
    る配置決定手順と、前記配置決定手順を1回または複数
    回繰り返して、そのうちで評価関数値が最も小さな配置
    を最終的なブロック配置として決定するブロック配置手
    順と、前記ブロック配置手順にて決定された前記ブロッ
    クの配置をもとに、前記部品の配置を決定する部品配置
    手順とを含んだ部品配置最適化方法。
  5. 【請求項5】 配置する部品を、その大きさの比が整数
    となるブロックに仮想的に変換する変換手順と、同一の
    前記部品より変換された前記ブロックの間に、実際の配
    線とは別に仮想的な配線を仮定する仮想配線仮定手順
    と、前記ブロックを配置すべきブロック配置位置の設定
    を行うブロック配置位置設定手順と、ブロック数が前記
    ブロック配置位置設定手順にて設定されたブロック配置
    位置の数と等しくなるように、他のブロックと配線を持
    たないダミーのブロックを導入するダミー導入手順と、
    前記ブロック配置位置の座標と同じ次元の期待位置座標
    ベクトルを前記各ブロック上に割り当てる期待位置座標
    割当手順と、前記ブロック配置位置より、まだ選択され
    ていないブロック配置位置を1つ選択するブロック配置
    位置選択手順と、前記ブロック配置位置選択手順によっ
    て選ばれたブロック配置位置に対して最もコスト関数値
    が小さな最適ブロックを、まだ選択されていない前記ブ
    ロックより1つ選択する最適ブロック選択手順と、前記
    最適ブロック選択手順にて選択された最適ブロックを、
    前記ブロック配置位置選択手順にて選択されたブロック
    配置位置に配置することに決定する配置決定手順と、前
    記最適ブロックの期待位置座標を、前記ブロック配置位
    置選択手順にて選択されたブロック配置位置に近づける
    座標調整手順と、前記最適ブロック以外のブロックの期
    待位置座標を拘束条件に従って更新する座標更新手順
    と、前記ブロックすべてのブロック配置位置が選択され
    るまで前記ブロック配置位置選択手順から前記座標更新
    手順までの処理を繰り返し、すべての前記ブロックの配
    置を決定する配置決定手順と、前記配置決定手順を1回
    または複数回繰り返して、そのうちで評価関数値が最も
    小さな配置を最終的なブロック配置として決定するブロ
    ック配置手順と、前記ブロック配置手順にて決定された
    前記ブロックの配置をもとに、前記部品の配置を決定す
    る部品配置手順とを含んだ部品配置最適化方法。
  6. 【請求項6】 前記ブロック配置手順が、複数の前記ブ
    ロックまたはブロックの集合を置き換えることによっ
    て、前記評価関数値をより小さくするように前記ブロッ
    クの配置を決定するものであることを特徴とする請求項
    1または2に記載の部品配置最適化方法。
  7. 【請求項7】 前記部品配置手順が、1つの前記部品は
    変換された前記ブロックの集合とその部品との重なり具
    合、および総配線長を考慮して前記部品の配置を決定す
    るものであることを特徴とする請求項1、2、4または
    5のいずれか1項に記載の部品配置最適化方法。
JP5139842A 1993-05-20 1993-05-20 部品配置最適化方法 Pending JPH06332983A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP5139842A JPH06332983A (ja) 1993-05-20 1993-05-20 部品配置最適化方法
US08/242,888 US5600555A (en) 1993-05-20 1994-05-16 Part arrangement optimizing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5139842A JPH06332983A (ja) 1993-05-20 1993-05-20 部品配置最適化方法

Publications (1)

Publication Number Publication Date
JPH06332983A true JPH06332983A (ja) 1994-12-02

Family

ID=15254790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5139842A Pending JPH06332983A (ja) 1993-05-20 1993-05-20 部品配置最適化方法

Country Status (2)

Country Link
US (1) US5600555A (ja)
JP (1) JPH06332983A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560505B1 (en) 1999-03-12 2003-05-06 Nec Toppan Circuit Solutions, Inc. Automatic parts placement system, method, and medium
JP2008129725A (ja) * 2006-11-17 2008-06-05 Toshiba Corp 半導体レイアウト設計装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035537A1 (en) * 1999-01-26 2002-03-21 Waller Matthew A. Method for economic bidding between retailers and suppliers of goods in branded, replenished categories
US6341269B1 (en) * 1999-01-26 2002-01-22 Mercani Technologies, Inc. System, method and article of manufacture to optimize inventory and merchandising shelf space utilization
JP2006285572A (ja) * 2005-03-31 2006-10-19 Toshiba Corp 半導体集積回路のレイアウト方法
US8838469B2 (en) * 2009-06-12 2014-09-16 Accenture Global Services Limited System and method for optimizing display space allocation of merchandising using regression analysis to generate space elasticity curves

Family Cites Families (6)

* Cited by examiner, † Cited by third party
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
US4630219A (en) * 1983-11-23 1986-12-16 International Business Machines Corporation Element placement method
US4829446A (en) * 1986-12-12 1989-05-09 Caeco, Inc. Method and apparatus for recording and rearranging representations of objects in a model of a group of objects located using a co-ordinate system
JPH02242474A (ja) * 1989-03-16 1990-09-26 Hitachi Ltd 素子配置最適化方法及び装置並びに最適配置判定方法及び装置
US5175693A (en) * 1989-06-01 1992-12-29 Kabushiki Kaisha Toshiba Method of designing semiconductor integrated circuit device
EP0431532B1 (en) * 1989-12-04 2001-04-18 Matsushita Electric Industrial Co., Ltd. Placement optimization system aided by CAD

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560505B1 (en) 1999-03-12 2003-05-06 Nec Toppan Circuit Solutions, Inc. Automatic parts placement system, method, and medium
JP2008129725A (ja) * 2006-11-17 2008-06-05 Toshiba Corp 半導体レイアウト設計装置

Also Published As

Publication number Publication date
US5600555A (en) 1997-02-04

Similar Documents

Publication Publication Date Title
US6668364B2 (en) Methods and apparatuses for designing integrated circuits
US7275233B2 (en) Methods and apparatuses for designing integrated circuits
US8966415B2 (en) Architectural physical synthesis
CN117236278B (zh) 一种基于数字孪生技术的芯片生产仿真方法及系统
JPH11505943A (ja) 集積回路設計システムにおける自動化されたメガセルの生成方法
JP2011076600A (ja) 多目的進化型アルゴリズムに基づく工学設計の最適化の方法およびシステム
JPH0793370A (ja) 遺伝子データベース検索システム
JPH06332983A (ja) 部品配置最適化方法
JP2012194910A (ja) メッシュ数予測方法、解析装置及びプログラム
KR101522478B1 (ko) 복수의 요소를 그룹화하는 방법, 프로그램 및 장치
US6915248B1 (en) Method and apparatus for transforming test stimulus
JP5056079B2 (ja) 設計方法及びプログラム
JP2002279005A (ja) 三次元解析モデル生成方法、装置、三次元解析モデル生成プログラム及びその記録媒体
US20050229124A1 (en) Distributed BDD reordering
Pandini et al. Congestion-aware logic synthesis
US20050071030A1 (en) Method and device for generating sheet metal model from solid model
JP2001052041A (ja) 多重制約を満たし多重目標機能を最適化する設計パラメータを取得する方法およびシステム
JP3215351B2 (ja) 配置方式
JP2002149717A (ja) 構造最適化方法および構造最適化プログラム記録媒体
CN117476094A (zh) 一种预测环状rna三维结构的方法
JP3703874B2 (ja) ファイル管理方法及びファイル管理装置
JP3364274B2 (ja) タスク割り当て装置
JP2007034878A (ja) 情報処理方法、情報処理装置および情報処理プログラム
JP2001067249A (ja) インストーラ及びインストール方法
JP2023111806A (ja) 応答曲面作成方法、プログラムおよび応答曲面作成装置