[go: up one dir, main page]

JP3556260B2 - LSI element arrangement method and apparatus - Google Patents

LSI element arrangement method and apparatus Download PDF

Info

Publication number
JP3556260B2
JP3556260B2 JP00946194A JP946194A JP3556260B2 JP 3556260 B2 JP3556260 B2 JP 3556260B2 JP 00946194 A JP00946194 A JP 00946194A JP 946194 A JP946194 A JP 946194A JP 3556260 B2 JP3556260 B2 JP 3556260B2
Authority
JP
Japan
Prior art keywords
branch
solution
solution candidate
data
candidate group
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
Application number
JP00946194A
Other languages
Japanese (ja)
Other versions
JPH06314316A (en
Inventor
恵一 半田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP00946194A priority Critical patent/JP3556260B2/en
Publication of JPH06314316A publication Critical patent/JPH06314316A/en
Application granted granted Critical
Publication of JP3556260B2 publication Critical patent/JP3556260B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Semiconductor Integrated Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、LSI設計における素子の自動配置システムに関し、特に、回路図上の素子の位置関係が保存される素子配置方法及び素子配置装置に関する。
【0002】
【従来の技術】
LSI設計において、回路図(スケマティック)上の素子の位置関係をある程度保存した上で、全素子をいかに小さい面積の領域内に配置するかは非常に重要なポイントである。従来の手作業による素子配置はそのような高密度配置を実現するが、熟練と多くの作業時間が必要とされる。
【0003】
そこで、近年、短時間で最適或いは近似最適な素子配置を実現すべく、自動素子配置装置の研究開発が活発化し、シミュレーテッド・アニーリング法等種々の自動素子配置方法が提案されている。例えば、佐々木、諏佐、“アナログ・セル生成における素子配置手法”、電子情報通信学会技術研究報告、VLD90−94、1990年において、自動配置の手順が開示され、その他遺伝アルゴリズムを応用した多くの手法が提案されている。
【0004】
遺伝アルゴリズムとは、生物の遺伝のメカニズムに着想を得て提案された確率的探索の1手法であり、初期解候補群の生成後、各解候補の適応度の評価、及び次期解候補群を生成するための選択・交叉・突然変異によって、新しい解候補群を逐次的に生成/評価して、より適応度の高い解候補を探索していくアルゴリズムとして知られている。
【0005】
しかし、LSIにおける素子配置は回路に含まれる素子数が数千個〜数万個以上と膨大であるため、これらの自動配置システムでは全体的な回路構成を考慮した処理による素子配置の(近似)最適化は困難である。従って、従来では、回路全体を小さな配置対象の部分回路に分割し、その配置対象の部分回路毎に配置処理を行う方法を取っている。この方法は、例えば、回路全体を小さな配置対象の部分回路に分割し、回路図の左又は右から順に、配置対象の部分回路毎に配置処理を行うという方法である。回路全体をどのように配置対象の部分回路に分割するかは回路配置の最終結果に大きく影響するが、その分割方法は必ずしも確立されておらず、試行錯誤或いは経験的に把握したルールによっている。但し、回路図がそれぞれ独立の機能を持つ小さな部分回路からなっている場合は、分割方法が確立されている。更に、分割して得られる各々の配置対象の部分回路に対応する配置結果をいかに無駄なく接続し、回路全体に対する配置結果の性能を高めるかは、解決されていない。
【0006】
従って、従来の自動配置システムが与える素子配置結果は、(近似)最適としては精度の低いレベルにあり、従来の手作業による設計に比較して必ずしも満足できるものではない。集積度の点で最終的には手作業による設計とほぼ同程度の結果が得られる手法もあるが、完全自動ではなく試行錯誤的操作を要し、解が得られるまでの処理に長時間を要する。
【0007】
佐々木等は、素子の隣接性等の制約条件に関する評価値(以下、素子配置結果の評価値を「コスト」という)と、配置された素子が占める面積に関するコスト、或いは、素子間配線の配線長に関するコスト等を定義するための数種類の評価関数(以下、「コスト関数」という)とを導入し、コスト関数により算出されたコストをできるだけ最小化するような配置結果をシミュレーテッドアニーリング法を応用して求める手法を開示している。その際、佐々木等は、各コスト関数の重要度に応じた重み係数を乗じて総和を取り、1つのコスト関数として扱うという方法を採用している。
【0008】
しかし、佐々木等は、各コスト関数に対して重要度に応じて順番を付けることは可能であっても、その重要度を重み係数として定量化する手法或いは指針は決して開示しておらず、もっぱら経験的に設定/修正しているのが実情である。
【0009】
更に、遺伝アルゴリズムを適用した手法においては、1つの制約条件に関連するコスト関数に基づいて計算される適応度という評価値を用いるにとどまり、数種類の制約条件をいかに取り込むかが課題となっている。
【0010】
上記のように、従来のLSIの素子配置方法においては、各種制約条件に関連する数種類のコスト関数すべてに関して最適もしくは近似最適な配置結果を求めることができない。
【0011】
配置結果の質を判断する1つの基準として、素子同士がなるべく横方向(すなわちx方向)に整列しているか否かがある。それは、素子が横方向に整列していた方が配線がしやすい、無駄な面積が少なくて済む、等の理由による。しかし、素子同士をなるべく横方向に整列する具体的な方法は開示されていない。
【0012】
【発明が解決しようとする課題】
上記のように、従来のLSIの素子配置方法においては、質の高い配置結果を得るには、多くの問題点を有する。
本発明の目的は、回路全体を考慮した高品質の素子配置結果を高速に与えるLSIの素子配置方法及び装置を提供することである。
【0013】
具体的には、
(a) 素子配置上の制約条件に関連するすべてのコスト関数に関して最適もしくは近似最適な配置結果を与えること、
(b) 隣合う配置対象の部分回路の間の接続関係或いは位置関係等の相対的な関係を考慮しつつ、各配置対象の部分回路の素子配置に対して遺伝アルゴリズムを並列的に適用すること、
(c) 横方向に隣合うことにより面積の縮小と配線のし易さに貢献するような素子のペアを、アルゴリズムの処理過程において、徐々に横方向に整列させ、横方向への整列性に優れた質の高い配置結果を効率よく求めること、
により、回路全体を考慮した高品質の素子配置結果を高速に与えるLSIの素子配置方法及び装置を提供することを目的とする。
【0014】
【課題を解決するための手段】
本発明は、上記の課題を解決するために次のような手段を講じた。
本発明の第1局面に係るLSIの素子配置方法は、回路図に含まれる素子列からなるブランチの並び順に従って素子を配置するLSI素子配置方法において、前記回路図を入力し、記憶手段に記憶するステップと、前記記憶手段に記憶された前記回路図に含まれる所定数のブランチのデータを含む部分回路を、前記回路図の所定の端部側から順に前記記憶手段から読み出す第1のステップと、前記読み出された前記ブランチのデータに遺伝アルゴリズムを用いた素子配置操作を施して前記ブランチ内の素子配置を演算により求め、当該演算結果に基づいて前記部分回路に含まれるブランチ数より少ない数のブランチにおける素子配置座標データを決定する第2のステップと、前記第2のステップで素子配置が未決定のブランチと、前記記憶手段から読み出されて追加される素子配置が未決定のブランチとから次の部分回路を得る第3のステップとを含み、前記第2のステップと前記第3のステップとを繰り返してブランチの素子配置座標データを順次決定していくことを特徴とする。
【0015】
本発明の第1局面に係るLSI素子配置装置は、回路図に含まれる素子列からなるブランチの並び順に従って素子を配置するLSI素子配置装置であって、前記回路図に含まれる所定数のブランチのデータを含む部分回路を、前記回路図の所定の端部側から順に抽出する部分回路データ抽出手段と、部分回路データ抽出手段によって抽出された前記ブランチのデータに遺伝アルゴリズムを用いた素子配置操作を施して前記部分回路に含まれるブランチより少ない数のブランチの配置を演算により決定しながら、ブランチの配置座標データを順次記録していくことにより、前記ブランチのデータに含まれる全素子の配置座標データを含む素子配置結果を生成する素子配置手段とを具備し、前記部分回路データ抽出手段は、2回目以降の部分回路を読み出す場合には、前記素子配置手段で配置が未決定のブランチを含む部分回路を抽出することを特徴とする
本発明の第1局面に係るLSIの素子配置方法において、第2のステップは、前記第1のステップで抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の第1解候補を含む第1解候補群を生成する初期解候補群生成ステップと、前記各第1解候補毎に、少なくとも素子配置面積に関する第1コストと、素子の位置関係に関する第2コストと、を含む複数のコストをそれぞれ評価する評価ステップと、前記第1解候補群から、前記各第1解候補毎に第1コストに基づいて所定の関数により選択確率を算出し、所定数より大きい複数の第2解候補の選択をして、前記第2解候補を含む第2解候補群を生成する第1生成ステップと、前記第2解候補群から、前記各第2解候補毎に第2コストに基づいて所定の関数により選択確率を算出し、前記第1解候補の数より大きく前記第2解候補の数より小さい複数の第3解候補の選択をして、前記第3解候補を含む第3解候補群を生成する第2生成ステップと、前記第2生成ステップを、全てのコストについて最後の解候補群を生成するまで繰り返す第3生成ステップとを含むことを特徴とする。
【0016】
本発明の第1局面に係るLSI素子配置装置において、前記素子配置手段は、前記抽出手段で抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の第1解候補を含む第1解候補群を生成する初期解候補群生成手段と、前記各第1解候補毎に、少なくとも素子配置面積に関する第1コストと素子の位置関係に関する第2コストとを含む複数のコストをそれぞれ評価する評価手段と、前記第1解候補群から、前記各第1解候補毎に第1コストに基づいて所定の関数により選択確率を算出し、所定数より大きい複数の第2解候補の選択をして、前記第2解候補を含む第2解候補群を生成する第1生成手段と、前記第2解候補群から、前記各第2解候補毎に第2コストに基づいて所定の関数により選択確率を算出し、前記第1解候補の数より大きく前記第2解候補の数より小さい複数の第3解候補の選択をして、前記第3解候補を含む第3解候補群を生成する第2生成手段と、前記第2生成手段を、全てのコストについて最後の解候補群を生成するまで繰り返す手段とを含むことを特徴とする。
【0019】
本発明の第2局面に係るLSIの素子配置方法は、第1局面に係る第2のステップが、前記第1のステップで抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の解候補を含む解候補群を生成する解候補群生成ステップと、前記解候補群に関連する全素子の前記第1座標に対応する第1座標軸に対して垂直な第2座標軸の第2座標を各解候補毎にコンパクション操作により決定する第2座標決定ステップと、所定の確率に従い、前記解候補群の各解候補に対して、隣接する前記ブランチに含まれる素子のうち前記第1座標同士が近接する素子のペアを探索する探索ステップと、前記近接する素子のペアが見つかった場合には、当該素子の第1座標値を同一値に調整する調整ステップとを含むことを特徴とする。
【0020】
本発明の第2局面に係るLSIの素子配置装置は、第1局面に係る素子配置手段が、前記部分回路データ抽出手段で抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の解候補を含む解候補群を生成する解候補群生成手段と、前記解候補群に関連する全素子の前記第1座標に対応する第1座標軸に対して垂直な第2座標軸の第2座標を各解候補毎にコンパクション操作により決定する第2座標決定手段と、所定の確率に従い、前記解候補群の各解候補に対して、隣接する前記ブランチに含まれる素子のうち前記第1座標同士が近接する素子のペアを探索する探索手段と、前記近接する素子のペアが見つかった場合には、当該素子の第1座標値を同一値に調整する調整手段とを含むことを特徴とする。
【0021】
【作用】
上記手段を講じた結果、次のような作用が生じる。
本発明の第1局面に係るLSIの素子配置方法及び装置によれば、回路全体を所定数(例えば、m個)のブランチから構成される配置対象の部分回路に対して、m個より少ない個数(例えば、(m−n)個)のブランチの重畳部分を持って素子を配置する。従って、本発明の第1局面に係るLSIの素子配置方法及び装置によれば、局所的な最適化を連続して行うので、回路全体を考慮した素子配置が可能であり、更に、ブランチの特徴を生かした遺伝アルゴリズムを用いた素子配置方法と相俟って、例えば、配置された素子が占める面積をコスト関数に用いた場合は素子面積が高密度化された、質の高い素子配置結果を効率よく求めることができる。
【0022】
上記のLSIの素子配置方法及び装置によれば、最適化手法として遺伝アルゴリズムを採用し、各解候補毎のコストが評価された後の各世代における解候補の選択をする場合に、コスト関数をその重要度に応じた順番で適用することにより、解候補をふるいにかけて絞り込んでいくので、すべてのコスト関数に対して最適もしくは近似最適な解を効率よく求めることが可能となる。
【0024】
本発明の第2局面に係るLSIの素子配置方法及び装置によれば、LSIにおける素子の自動配置において、ブランチの特徴を生かした遺伝アルゴリズムを適用する際に、遺伝的操作の1つとして、各世代の各解候補のコード(染色体)に対して、予め指定された確率に従い、隣合うブランチ内でy座標が近接している素子のペアを探し、もしそのようなペアがあればその2素子のy座標を同一の値とするという操作を行う。この操作によって、横に隣合うことにより面積の縮小や配線のし易さ等に貢献するような素子のペアが徐々にx方向に整列していくので、最終的にx方向への整列性に優れた質の高い配置結果を効率良く求めることが可能となる。
【0025】
【実施例】
図面参照して本発明の実施例を説明する。
図1は、本発明の第1実施例に係るLSI素子配置装置の概略構成を示すブロック図である。
【0026】
概略的には、このLSI素子配置装置は、配置対象を入力し、入力した配置対象を記憶する図示しない記憶部を有する入力部10と、記憶部にアクセスできる部分回路データ抽出部20と、前記部分回路データ抽出部20の後段に連結された素子配置部30と、前記素子配置部30の後段に連結された配置結果ファイル作成部40と、前記配置結果ファイル作成部40によって作成された配置結果ファイルの内容を出力する出力部50とを具備する。
【0027】
図1に示すLSI素子配置装置の動作を説明する。この場合において、素子配置対象として図2の回路図を例に用いる。
以下の説明において、「ブランチ」とは、回路図において、電源線とグランド線との間に連結されているいくつかの素子から形成される素子列のことをいう。このブランチが、自動素子配置において扱われる最小の単位となる。
【0028】
例えば図2の回路図では、回路を曲線l1〜l6により分割して生成した第1ブランチB1〜第7ブランチB7が示されている。電源線62とグランド線64との間の電流路を形成する5個の素子R1−Q1−R2−Q2−R3からなる第1ブランチB1、グランドまで到達しないR4−Q3−R5からなる第2ブランチB2、電源線−グランド線間パスにR14が分岐接続されたR13−Q10−R14−Q11からなる第7ブランチB7等である。
【0029】
図1のLSI素子配置装置の概略的な動作手順を説明する。図1に示すLSI素子配置装置は、回路図の左側の端のm個のブランチからなる配置対象の部分回路に基づいて詳細は後述する遺伝アルゴリズムを用いた手法により左側の端のn個(<m)のブランチに属する素子の配置座標を決定する。次に配置対象の部分回路をブランチn個分だけ右側にスライドして同様に次のn個のブランチに属する素子の配置座標を決定する。この動作を繰り返して、回路全体を配置対象の部分回路で走査することにより、全素子の配置を実施する。
【0030】
具体的な動作手順を図3を参照して説明する。
素子のサイズや種類、ネットリスト、ブランチ情報等、配置の対象とする回路図に関するデータを入力部10から読み込む(ステップA1)。この場合において、ブランチ情報は、予め設計者によって回路図にマニュアルで指定されても良いし、ステップA2以降において、部分回路データ抽出部20で設定することもできる。
【0031】
入力部10を介してユーザは、本発明に係るLSIの素子配置システムを用いて実施した図2の回路図の自動配置結果の一例を示す図4に外枠として示されている素子の配置可能領域60の高さ(幅については特に指定しない)や詳細は後述するパラメータm、n或いは素子配置部30に関するパラメータ等を設定する(ステップA2)
次に、部分回路データ抽出部20は、回路図の左側の端の所定数(この場合は、m個)のブランチからなる回路を、配置対象の部分回路として決定する(ステップA3)。本実施例において、説明の便宜上、m=5とする。例えば、図2の回路では、第1ブランチB1〜第5ブランチB5からなる回路が配置対象の部分回路として決定される
前記部分回路データ抽出部20は、ステップA3で決定された配置対象の部分回路に関連するデータを前記入力部10から入力する(ステップA4)。
【0032】
素子配置部30は、ステップA4で抽出された配置対象の部分回路に関するデータに基づいて、詳述は後述する遺伝アルゴリズムを用いた素子配置方法により、配置対象の部分回路に含まれる全素子に対する自動配置を行う(ステップA5)。
【0033】
配置結果ファイル作成部40は、ステップA5により求められた解すなわち前記配置対象の部分回路に含まれる各素子の配置座標のうち、前記配置対象の部分回路の左側のn個のブランチに属する素子の配置座標のみが、最終的な配置座標として、配置結果ファイルに記録される(ステップA6)。
【0034】
すなわち、本実施例において、n=2とすれば、図2の回路では、前記配置対象の部分回路を構成する第1ブランチB1〜第5ブランチB5のうちの第1ブランチB1に含まれる素子R1、Q1、R2、Q2、R3及び第2ブランチB2に含まれる素子R4、Q3、R5の座標のみが、これらの素子の最終的な座標として決定される。第3ブランチB3〜第5ブランチB5に属する素子については、ここでは座標の決定はされない。
【0035】
ステップA5の配置処理を一度も受けていない未処理ブランチが“0”でない場合はステップA4〜ステップA6が繰り返され、未処理ブランチ数が“0”である場合はステップA9に動作を移す(ステップA7)。
【0036】
前記部分回路データ抽出部20は、配置対象の部分回路からステップA6で座標が決定されたn個のブランチを除去し、残りの部分(すなわちステップA6で配置座標の決定がされずに保留された(m−n)個のブランチ)に、ステップA5の処理を未だ一度も受けていない未処理ブランチのうちの左からn個のブランチを付加して、これを新たなm個のブランチからなる配置対象の部分回路として決定する(ステップA8)。
【0037】
ステップA8において、例えば、ステップA6で保留された第3ブランチB3〜第5ブランチB5に未処理ブランチである第6のブランチB6及び第7ブランチB7を付け加えて、第3ブランチB3〜第7ブランチB7の5個のブランチからなる新たな配置対象の部分回路を次の配置対象として決定する。
【0038】
ステップA8の配置対象の部分回路更新からステップA6の素子の配置座標決定までのステップを繰り返し、この処理が一巡される毎に新たなn個分のブランチに属する素子の配置座標が決定されていく。
【0039】
ステップA7において、未処理ブランチ数が“0”である場合、前記配置結果ファイル作成部40は、直前でのステップA6で配置座標の決定がされずに保留された残りの全素子の配置座標を、最終的な配置座標として決定して、関連するデータを配置結果ファイルに記録する(ステップA9)。この手順により、配置対象の回路に含まれる全素子の配置座標が決定され、配置結果ファイルが完成される。
【0040】
ステップA9において、例えば、図2では、2回目のステップA6において、このときの配置対象の部分回路に含まれる第3ブランチB3〜第7ブランチB7のうちの第3ブランチB3及び第4ブランチB4に含まれる素子の配置結果の座標が最終的な座標として決定され、第5ブランチB5〜第7ブランチB7の3個のブランチに含まれる素子の配置結果の座標は最終的な座標としての決定が保留されている。そして、その決定が保留された第5ブランチB5〜第7ブランチB7に含まれる素子の配置結果の座標が、このステップで最終的な配置座標として決定される。
【0041】
出力部50は、前記配置結果ファイルの内容を所定のデバイスに出力する(ステップA10)。出力部50は、モニター画面、プリンター、データ通信網或いは情報記憶媒体のいずれでもよい。
【0042】
前記処理ループの所定数回目のループのステップA8すなわち最後のステップA8において、未処理ブランチの個数がnでなく、新たな配置対象の部分回路に含まれるブランチ数がm個でないときは、以降の処理は当該個数をもって実施されるようにしてもよい。
【0043】
ここで、入力部10の記憶部に格納されているデータを用いて、ステップA2で設定するパラメータの一部或いは全部を変更して再実行させることも可能である。この場合、ステップA1は不要である。更に、前記パラメータm、nを、常に一定にするのではなく、回路図の特徴に応じて局所的に適宜変動させてもよい。
【0044】
加えて、図3に示される第1実施例に関する動作は、一例であり適宜修正可能である。例えば、ステップA7をステップA6の前に持ってきて、条件が“Yes”の場合には、ステップA6とステップA9を合体した動作すなわちステップA5において与えられた全素子に関する配置結果の記録をするように構成しても同様の効果が得られる。
【0045】
上記のように、本発明の第1実施例によれば、回路全体を配置対象の部分回路により重畳部分を持って走査しながら素子配置していくので、従来と異なり、局所的な最適化の連続という意味で回路全体を考慮して配置していくことができる。
【0046】
図5は、素子配置部30の概略構成を示す図である。
素子配置部30は、配置対象の部分回路に関する初期解候補群生成部31と、初期解候補群生成部31の後段に連結されたX座標決定部32と、前記X座標決定部32に連結された適応度評価部33と、前記適応度評価部33に連結され前記X座標決定部32にデータを与える解候補群更新部34と、前記適応度評価部33に連結され、最適解もしくは近似最適解を選定して出力する(近似)最適解選定部35とを有する。前記解候補群更新部34は、選択部36と交叉部37と突然変異部38とを具備する。
【0047】
素子配置部30の動作説明に先立ち、以下の説明に用いる語句の定義を行う。「遺伝アルゴリズム」は、生物の遺伝のメカニズムに着想を得て提案された確率的探索の一手法であり、初期解候補群の生成後、各解候補の適応度の評価、及び次期解候補群を生成するための選択、交叉又は突然変異により、新しい解候補群を逐次的に生成/評価して、より適応度の高い解を探索していくアルゴリズムをいう。
【0048】
「解候補」は、与えられた問題に対する解の候補であり、例えば、[1、0、0、0]或いは[A、B、C、D]のような数列或いはデータ列からなる。第1実施例の場合は、配置すべき素子のy座標の候補値の数列である。具体的には、各解候補は、回路図に含まれる各素子の基準点(例えば素子の左下端の点)のy座標の候補値を、ブランチの回路図上での左側からの並び順、及びブランチ内での素子の回路図の下方からの並び順に従って並べてコーディングした数値列(解候補の染色体、又はコードと呼ぶ)で表される。y座標には、配置可能領域の高さを複数等分(例えば50等分)して得られる格子座標を用いる。以下では、素子の左下端の点を各素子の基準点とし、y座標は0以上49以下の整数を用いる。
【0049】
「解候補群」は、解候補の集合である。
「初期解候補」は、解候補の初期値である。
「適応度」は、コスト等に基づいた所定の評価関数(以下、「適応度関数」という)により算出される解候補毎の解としての評価値である。適応度が大きいほど良い解候補である。適応度は各世代毎にその世代の解候補の間で相対的に定義しても良い。
【0050】
「選択」は、適応度により決定される確率に基づいて、全解候補のうちから2つの解候補を選択することである。
「交叉」は、選択された2つの解候補の間で所定のルールに基づいて互いのいくつかの成分を交換することである。この交叉によって、新たな2つの解候補が生成される。
【0051】
「突然変異」は、所定の確率に基づいてある解候補のある成分のみに所定の算術的操作を施すことである。この突然変異によって、初期解候補群により探索範囲が限定されてしまうことが回避される。
【0052】
素子配置部30の概略的な動作手順を説明する。
素子配置部30は、複数個の解候補からなる初期世代の解候補群を後述の手法により生成し、その各々の解候補を評価し、この解候補群に基づいて、後述する手順により同数の新たな解候補群すなわち新世代の解候補群を生成し、その新世代の解候補群を評価し、それに基づいてさらなる新世代の解候補群を生成して、さらなる新世代の解候補群が評価されるというように、一定の条件が成立するまでそのような手順を繰り返し実行し、最終的に1つの解候補をこの素子配置問題の解として選定する。
【0053】
素子配置部30の遺伝アルゴリズムを用いた詳細な素子配置手順(すなわちステップA5)を、図6を参照して説明する。
初期解候補群生成部31は、初期世代の解候補群を作成する(ステップB1)。但し、初期解候補群生成部31は、初期世代の解候補群を作成する際に、初回と初回以外とでは異なる動作を実行するので、まず、初回の動作を説明する。
【0054】
初回においては、部分回路データ抽出部20は、抽出した前記配置対象の部分回路に関する素子のデータを初期解候補群生成部31に初めて与える。初期解候補群生成部31は、当該配置対象の部分回路に属するブランチの回路図上での左側からの並び順、更にはブランチ内での素子の回路図の下方からの並び順に従って、それら素子のy座標の候補値を並べて表現した解候補を所定数だけ生成する。このようにして生成された複数個の解候補からなる集合が初期世代の解候補群である。
【0055】
図2を参照して上記の動作を具体的に説明する。
初期解候補群生成部31は、最初に自動配置の対象となる第1ブランチB1〜第5ブランチB5からなる配置対象の部分回路の左に位置する第1ブランチB1内で下に位置する素子R1から上に位置する素子R3まで各々のy座標を昇順にランダムに発生させ(例えば11、14、23、28、37)、以後第5ブランチB5まで同様の処理を行う。そして、初期解候補群生成部31は、発生されたy座標の候補値を発生順にすべて連結して1つの解候補を生成する。
【0056】
前述したように、発生させるy座標の値は、ここでは、0以上49以下の整数を用いるが、予め配置可能領域をはみだすような場合を考慮して、例えば0以上41以下の整数だけを用いることにしても良い(図2の例では、2以上のy座標値を持つ素子は配置可能領域をはみ出してしまう)。但し、このようにしても、例えば図2の素子R7のような高さの大きい素子の場合は、配置可能領域からはみ出してしまうことが有り得る。(実際、R7がとり得るy座標の値は0以上28以下である)。そのような場合は、領域内にぎりぎりにおさまるように修正しても良い(例えば、R7に35が割り当てられた場合は、28に修正する)。
【0057】
以下に初期解候補群生成部31によって生成された解候補群の一例を示す。

Figure 0003556260
1つの解候補は、前記配置対象の部分回路に含まれる19個の素子にそれぞれ対応する19個のy座標の候補値を有し、この数列の左側からR1、Q1、R2、Q2、R3、R4、Q3、R5、…というように対応している。セミコロンは、単にブランチの区切りを説明するために便宜上付した記号であり、解候補に含まれる文字データではない。
【0058】
この場合において、y座標の生成は、素子の配置可能領域60の他に、各素子の種類、サイズ或いはデザインルール等を考慮した許容範囲以内で発生されたランダム値より実施されるようにしてもよい。
【0059】
上記のようにして、初回における解候補群の生成が行われる。次に、初回以降の動作を説明する。
部分回路データ抽出部20は、配置対象の部分回路をブランチn個分だけ右に移動して得られる新たな配置対象の部分回路に含まれる素子のデータを初期解候補群生成部31に与える。初期解候補群生成部31は、所定数の解候補からなる集合を初期世代の解候補群とする。
【0060】
この場合において、初期解候補群生成部31は、初回の動作のように関連するすべての素子に関してランダムに解候補群を生成するのではなく、現在対象としている配置対象の部分回路と前回対象とした配置対象の部分回路の間で重畳している(m−n)個のブランチに属する素子のy座標は、前回の自動素子配置ステップA5の最終回目で得られた解候補群におけるy座標の値をそのまま継承することによって解候補群を生成する。この値の継承は、同一番号を有する新旧の解候補の間で行われる。新しく追加されたn個のブランチの部分については、初回の動作と同様の手法でy座標の値を生成する。
【0061】
以下、図2を用いて初期解候補群生成部31の2回目以降の初期解候補群生成の動作を具体的に説明する。
2回目の配置対象の部分回路の初期解候補群を生成する場合、自動配置の対象となるのは第3ブランチB3〜第7ブランチB7からなる配置対象の部分回路であり、初回に自動配置の対象となったのは第1ブランチB1〜第5ブランチB5からなる配置対象の部分回路であるので、新旧の配置対象の部分回路間で重畳する3個のブランチは、第3ブランチB3〜第5ブランチB5である。従って、今回の解候補の第3ブランチB3〜第5ブランチB5の部分に含まれる素子のy座標の候補値については、初回の解候補の該当部分の値をそのまま継承し、新たに加えられた第6のブランチB6〜第7ブランチB7については、前述の初回の動作と同様の手法で生成する。
【0062】
Figure 0003556260
となる。ここで、各解候補の上部の符号は該当するブランチを示す。
【0063】
X座標決定部32は、ステップB1では未定であった各素子のX座標をコンパクションによって決定する(ステップB2)。ここでは、コンパクション方法として、例えば、佐々木等の文献に記載されているような、いわゆる1次元コンパクションを用いて説明する。コンパクションは、当該配置対象の部分回路内の左側に位置するブランチから順次的に、ブランチ内で下に位置する素子から逐次的に、或いは左側の素子に接続を持つ素子を優先させて、素子を1つずつ−X方向すなわち水平に左の方向に移動して詰めるように配置する手法であり、コンパクトな配置面積を与えるX軸方向の配置手法である。なお、素子を左に平行移動した際に、上下に少しずらすだけで更に左に移動できる場合は、そのような移動を行うことによって、更にコンパクトな配置をすることが可能となる。
【0064】
このコンパクションによって配置できる範囲は、前記配置結果ファイルに記憶されている配置済みの素子の座標、素子の配置可能領域及びデザインルール等により決定されてもよい。
【0065】
コンパクションに関する制約として、移動中のブランチに属する素子は、1つ(又は2つ)前の既に配置されたブランチに属する最も左に位置する素子のX座標より左側にならない範囲で、左側に詰めるようにして配置するという条件を付加してもよい。この場合には、回路図上の素子の位置関係が良好に保存される。
【0066】
適応度評価部33により、所定の評価関数に従って、各解候補の適応度が算出される(ステップB3)。評価関数については、例えば、当該配置対象の部分回路に属する全素子のコンパクションの最右の素子(最も右側の領域を占めている素子)の右端の座標をコストとして考えると、この値は、各解候補の面積の大きさの1つの評価指標として評価関数に採用できる。そこで、例えば、解候補wの適応度f(w)を、
f(w)=(現世代の全解候補の面積に関するコストの最大値)−(解放補wの面積に関するコスト)
のように定義してもよい。
【0067】
面積に関するコストの他に、ブランチにおける素子の上下関係をなるべく保存するために用いるオーダーコスト等が必要であるが、それらについては第2実施例で詳述することにし、ここでは割愛する。
【0068】
ステップB4において、処理ループ回数が図3のステップA2で設定された所定の回数以下であれば、ステップB5〜ステップB7を繰り返して新たな解候補群を生成する。
【0069】
ステップB5において、選択部36は、各解候補毎に適応度に基づいて決定される選択確率に従って、全解候補のうちから交叉すべき2つの解候補を選択し、選択された2つの解候補を、親1及び親2とする。
【0070】
この場合において、例えば、解候補wの選択確率P(w)を、
P(w)=f(w)/(全fの総和)
により与えてもよい。
【0071】
選択の手法として実数区間[0,1)を、各解候補の選択確率に応じた数値範囲に分割し(例えば、[0,0.1)、[0.1,0.3)、…、[0.97,1))、[0,1)間で一様に発生させた乱数が含まれる数値範囲に対応する解候補を選択するようにしても良い(例えば、乱数が0.15ならば、第2番目の解候補を選択する)。
【0072】
この場合には、所定の乱数により、まず解候補1が選択され、次に解候補4が選択されたとすると、次のように、解候補1が親1、解候補2が親2とされる。
Figure 0003556260
ステップB6において、交叉部37は、選択された親1及び親2に対して互いの成分を交換する交叉を施し、新たな解候補である子1及び子2を生成する。
【0073】
交叉は選択された2つの解候補に含まれる各ブランチ毎に以下のように実施される。
まず、ブランチ毎に予め設定された交叉率に従って、交叉が施されるか施されないかが決定される。ここで、各ブランチの交叉率は、例えば、0.2、0.2、0.5、0.5、0.8、のように、左に位置するブランチに対するものほど低い値であってもよい。
【0074】
次に、交叉が施されることが決定したブランチ間でのみ交叉が実施される。
交叉には種々の方法があるが、一様交叉を施す場合を説明する。一様交叉は、“0”又は“1”を等しい確率で発生する手段を用いて、該当するブランチの素子数と等しい長さを有するマスクパターンを生成し、マスクパターン上の“1”を示す位置に対応する成分に関して、親1及び親2の間での交換を行う。
【0075】
以下に、左から2番目のブランチ、4番目のブランチ、5番目のブランチに対して一様交叉が施される例を示す。このとき生成されたマスクパターンは、“010”、“1101”、“0011”とする。
Figure 0003556260
突然変異部38は、生成された子1及び子2に対してそれぞれ、突然変異操作すなわち算術的操作を施す(ステップB7)。
【0076】
この突然変異は各解候補に含まれる各ブランチ毎に以下のように実施される。まず、ブランチ毎に予め設定された突然変異率に従って、突然変異が施されるか施されないかが決定される。各ブランチの突然変異は、交叉と同様に、0.1、0.1、0.3、0.3、0.5のように、左に位置するブランチに対するものほど低い値であってもよい。
【0077】
次に、突然変異が施されることが決定したブランチにおいてのみ突然変異が実施される。
突然変異には種々の方法が考えられるが、ブランチ内からランダムに選んだ1つの成分の値に小さな値αを加えるという方法を用いても良い。ここではαは突然変異を行う都度、例えば{+3、+2、+1、−1、−2、−3}の中からランダムに選択されるものとする。但し、この場合に、例えば+3することによって配置可能領域をはみ出るような場合は、他の値の中から選択し直すことにする。
【0078】
子1の左から3番目と5番目のブランチに対して突然変異が発生したときの例を示す(3番目のブランチに対しては、第1成分に−2を加え、5番目のブランチに対しては、第4成分に+1を加えている)。
【0079】
子1については、
Figure 0003556260
である。
【0080】
突然変異率は初期値を与えて、世代を経る毎にその値を徐々に減少させ、最終世代では0に近い値となるように設定してもよい。
解候補の数と同数の子が生成されるまで、ステップB5〜ステップB7、すなわち選択、交叉及び突然変異を繰り返す。そして、子の集団を、新世代の解候補群とする(ステップB8)。
【0081】
以上の新世代の解候補群の生成(所定回数のステップB5〜ステップB7のループ)、この解候補群に対するコンパクション(ステップB2)及びその適応度の評価(ステップB3)の処理ループが繰り返され、より良い解候補に収束されていく。
【0082】
そして、処理ループ回数が図3のステップA2において設定された回数に達した場合、処理ループを脱出して、ステップB9に移る(ステップB4)。
ステップB9において、最適解選定部35により、その最終世代の解候補のうちから適応度が最大すなわちコストが最小の解候補を最良の解として選定し、その解候補に関連するデータを出力する。
【0083】
上記の動作において、図6のステップB4の後に、ステップB8からステップB5に制御が移る前に、適応度のスケーリングをしてもよい。スケーリングは決定された適応度を何らかの関数により拡大或いは縮小することである。スケーリングとして、
f´=af+b
とする線形スケーリングを用いてもよいし、
f´=f
とするべき乗スケーリングを用いてもよい。
【0084】
上記の第1実施例において、前記部分回路データ抽出部20が、その都度、対象となる配置対象の部分回路に含まれる全m個のブランチに関連するデータを抽出して前記素子配置部30に与えているが、前記素子配置部30が、その回に対象とする配置対象の部分回路に含まれるブランチに関連するデータのうち、次回に対象となる配置対象の部分回路との間で重畳する(m−n)個のブランチに関連する必要なデータを保持しておき、前記部分回路データ抽出部20は、次回に対象となる配置対象の部分回路に新たに付け加えられるn個のブランチに関連するデータのみを抽出して前記素子配置部30に与えても良い。
【0085】
上記のように、第1実施例によれば、回路全体を配置対象の部分回路により重畳部分を持って走査しながら素子配置していくので、従来と異なり、局所的な最適化の連続という意味で回路全体を考慮した配置ができ、例えば、配置された素子が占める面積をコスト関数に用いた場合には、素子面積の高密度化を実現することができる。更に本発明によれば、配置対象の部分回路の自動素子配置にブランチの特徴を生かした遺伝アルゴリズムによる配置手法を用いているので、効率的な素子配置が可能となる。
【0086】
以下、図面を参照しながら第2実施例を説明する。
第2実施例において、装置構成及び適用する回路例は第1実施例と同様であるので、図面と詳細な説明は省略する。
【0087】
第2実施例の詳細な動作手順を、図7及び図8のフローチャートを用いて説明する。ここで、図3及び図6と同じ動作については同じ符号を付し、詳細な説明は省略する。
【0088】
素子のサイズや種類、ネットリスト、ブランチ情報等、配置の対象とする回路図に関するデータを入力部10から読み込む(ステップA1)。
入力部10を介してユーザは、本発明に係るLSIの素子配置システムを用いて実施した図2の回路図の自動配置結果の一例を示す図9に外枠として示されている素子の配置可能領域60の高さや詳細は後述するパラメータa、b、n或いは素子配置部30に関するパラメータ等を設定する(ステップA2)
初期解候補群生成部31は、初期世代の解候補群を作成する(ステップB1)。本第2実施例において生成された解候補群の例を以下に示す。
Figure 0003556260
1つの解候補は、第1実施例と同様に、前記配置対象の部分回路(本第2実施例では図2の回路全体を1つの部分回路とみなして説明する)に含まれる25個の素子にそれぞれ対応する25個のy座標の値を有し、この数列の左側からR1、Q1、R2、Q2、R3、R4、Q3、R5、…というように対応している。ここで、各世代における解候補の個数nには、通常、30〜100の値を用いるのが効果的である。本第2実施例では、n=50として説明する。
【0089】
X座標決定部32は、ステップB1では未定であった各素子のX座標を決定する(ステップB2)。
適応度評価部33により、所定のコスト関数に従って、各解候補のコストが評価される(ステップC1)。コスト関数は、数種類のものを定義し、おのおのについて評価が実施される。
【0090】
コストは各解候補の評価値であり、本第2実施例においては、値の小さい評価値を有するものほど良い解候補であるものと仮定して説明する。ここでは、コストの例として、素子の隣接性に関するコスト(以下、「ペアコスト」と称する)、配置面積に関するコスト、仮想配線長に関するコスト、及びブランチにおける素子の上下関係に関するコスト(以下、「オーダーコスト」と称する)の4種類のコストを用いて説明する。
【0091】
ペアコストは、ステップA2において入力される素子の隣接性に関する制約条件によって計算される。素子の隣接性に関する制約条件とは、例えば、
1.素子R2と素子R4はなるべく隣接するように配置する
2.素子Q8と素子Q9はなるべく隣接するように配置する
というような条件であり、優先的に隣接させたい2素子に対して予め配置許容範囲を設定しておき、例えば、その許容範囲から外れた部分の面積を、その2素子に係わるコストとする。そして、すべての優先的に隣接させたい2素子に係わるコストを算出して総和を求め、その値をコストとする。
【0092】
配置面積に関するコストは、第1実施例と同様である。
仮想配線長に関するコストは、例えば、ネット毎に、そのネットに関連する全端子を含む最小長方形の周囲の長さの1/2(但し、関連する全端子を含む最小図形が1線分の場合は、その長さ)と定義し、すべてのネットに対する総和をそのコストとする。
【0093】
オーダーコストは、ブランチにおける素子の上下関係をなるべく保存するために用いられ、例えば、同じブランチ上で上下に隣合う2素子の基準点のy座標の大小関係が逆転している場合に、そのずれをコストとする。
【0094】
コスト関数により算出されるコストには、それらの重要性に従って順位付けがされており、その順位は後述の選択操作において用いられる。ここでは、配置面積に関するコスト(コスト1とする)、仮想配線長に関するコスト(コスト2とする)、ペアコスト及びオーダーコスト(コスト3とする)の順に、重要性が高いものとする。ペアコストとオーダーコストの重要性は同程度と仮定する。
【0095】
選択部36により、解候補群に対して、各解候補の有するコストに基づいた確率を用いて選択操作が施される(ステップC2)。選択操作を図8を参照して説明する。
【0096】
最も重要性の高いコスト1すなわち配置面積に関するコストを用いてa個の解候補からなる集合Aを生成する(ステップD1)。この場合において、a>nとし、ここでは、a=70とする。
【0097】
まず、各解候補毎に、その解候補のコスト1を用いて適応度を算出する。適応度については、例えば、解候補wの適応度f(w)を、
f(w)=(現世代の全解候補のコスト1のうちのの最大値)−(解候補wのコスト1)
のように定義してもよい。
【0098】
全n個の解候補について適応度が算出されたら、この適応度に基づいて、各解候補が選択される確率を決定する。例えば、解候補wの選択確率P(w)を、
P(w)=f(w)/(全fの総和)
により与えてもよい。
【0099】
次に、解候補wの選択確率P(w)を用いて、n個の解候補のうちからa個の解候補を選択する。この場合において、もとの解候補の集合の要素数nより、集合Aの要素数aの方が大きいので、集合Aには必ず重複する解候補が存在する。
【0100】
この選択の手法については、第1実施例の中で述べた選択の手法と同様の手法により、解候補を選択するようにしてもよい。そして、乱数をa回発生させて、該当するa個の解候補からなる集合Aを生成する。
【0101】
2番目に重要性の高いコスト2すなわち仮想配線長に関するコストを用いて同様の操作を施して、a個の解候補からなる集合Aから、b個の解候補からなる集合Bを生成する(ステップD2)。ここで、b<a、かつ、b>nとし、この場合には、b=60とする。
【0102】
コスト3すなわちペアコスト及びオーダーコストを用いて同様の操作を施す。このように重要度が同程度のコストが数種類ある場合は、それぞれのコストを、例えば、0以上1以下の実数値に換算して、その和をコスト3と考え、適応度を定義する。この適応度に基づく選択確率によって、b個の解候補からなる集合Bから、n個の解候補からなる集合Cを生成して、この選択操作を完了する(ステップD3)。そして、このn個の解候補を含む集合Cを、次の交叉操作のための親の集合Zとする。
【0103】
ここでは、前述のコスト1〜コスト3を用いて、交叉操作について説明したがコストが2種類の場合は、ステップD2を省けばよい。
重要性の異なるコストが4種類以上の場合は、ステップD2に該当するステップを適宜挿入すればよい。その際、前述の操作は高い重要性を有するコストから順に実施する。この場合、第s番目に重要性の高いコストsを用いて選択される解候補の数U(s)は、
U(1)> … U(s−1)>U(s)>U(s+1) … >n
の関係を満たせばよい。
【0104】
また、予め相対的な重み付けが容易にできる複数のコストに対しては、それらを1つのコストとみなしても良い。例えば、ペアコストとオーダーコストの相対的な重み付けが4:3となるように与えることができる問題(配置対象)に対しては、まずそれぞれのコストを例えば0以上1以下の実数値に換算して、換算されたペアコストの4倍と、換算されたオーダーコストの3倍との和を1つのコストとみなしても良い。
【0105】
交叉部37は、選択操作により生成された集合Zに含まれるn個の親すなわち解候補に対して互いの成分を交換する交叉を施し、新たな解候補であるn個の子を生成する(ステップB6)。
【0106】
まず、集合Zに含まれる親を2個ずつ組にして、n/2組のペアを生成する。その際、どの親同士をペアにするかは任意或いはランダムとする。これら親のペアを、
(親1、親2)、(親3、親4)、…、(親n−1、親n)
で表す。第2実施例ではn=50としたので、25組の親のペアすなわち
(親1、親2)…(親49、親50)
が生成される。
【0107】
次に、各親のペアに対して第1実施例と同様に、予め設定された交叉率に基づいて、交叉操作を行う。
上記のようにして、各親のペアから2個の子を生成し、合計n個の子が生成される。第2実施例では、子1〜子50が生成される。
【0108】
突然変異部38は、交叉が施されて生成されたn個の子に対して、第1実施例と同様に、突然変異操作を施す(ステップB7)。
ステップB2からステップB7に至る一連の操作からなる処理ループの繰り返し回数が所定の回数に達したかを判断し、達しない場合はステップB2のコンパクションに移って処理ループを繰り返し、達した場合にはステップC3の終了処理に移る(ステップB4)。
【0109】
上記処理ループが一巡する毎に新しい解候補群が生成され、より良い解候補が探索されて、最適解もしくは近似最適解に収束していく。
終了処理を施す(ステップC3)。具体的には、ステップB2からステップC2までの操作と同一の操作を実施し、選択操作によって得られるn個の解候補の中から最小のコストを有する解候補を解として選定する。
【0110】
出力部50は、前記配置結果ファイルの内容を所定のデバイスに出力する(ステップA10)。
上記のように、本発明の第2実施例によれば、最適化手法として遺伝アルゴリズムを採用し、各世代における解候補の選択の際にコスト関数をその重要度に応じた順番で適用することにより、解候補をふるいにかけて絞り込む手法を用いるので、すべてのコスト関数に関し最適もしくは近似最適な解を効率よく求めることが可能となる。
【0111】
図9には、本発明に係るLSIの素子配置システムを用いて実施した図2の回路図の自動配置結果の一例を示す。
以下、図面を参照しながら第3実施例を説明する。
【0112】
第3実施例において、装置構成及び適用する回路例は第1実施例と同様であるので、図面と詳細な説明は省略する。
図10は本発明の第3実施例の概略動作を示すフローチャートであり、図11は図10のフローチャートの中の遺伝アルゴリズムの概略を示すフローチャートであり、基本的には、図6と同じ動作を示す。図12は図10のフローチャートを用いた図2の回路図に対する1つの配置結果を示す図である。
【0113】
以下、図10及び図11を参照して第3実施例の概略動作を説明する。
素子のサイズや種類、ネットリスト、ブランチ情報等、配置の対象とする回路図に関するデータ、素子配置部30に関すパラメータ、及びステップE5で用いる終了条件等を入力する(ステップE1)。終了条件は、本実施例においては、ステップE3に示すように、任意の配置対象の部分回路に対する遺伝アルゴリズムの世代数の合計が総世代数k以下か否かであるとする。
【0114】
全体の回路図を複数個のブランチから成る配置対象の部分回路に分割する(ステップE2)。以下の説明では、簡単のため配置対象の部分回路は全て3ブランチから成るとする。従って図2の回路では、(R1、Q1、R2、Q2、R3)、(R4、Q3、R5)、(R6、Q4、R7)の3ブランチ、(R8、Q5、R9、Q6)、(R10、Q7、Q8、R11)、(Q9、R12)の3ブランチ及び、(R13、Q10、R14、Q11)から始まる3ブランチ、の3つの配置対象の部分回路に分割する。3番目の配置対象の部分回路については一般性を失わずに、(R13、Q10、R14、Q11)の右側にも回路が続いているものとして、3ブランチから成るものと仮定する。最右端の配置対象の部分回路については1又は2ブランチから成ることがあるが、そのような例外的なケースについて述べることは本質的ではないのでここでは省略する。
【0115】
上記のようにして分割された各配置対象の部分回路に対して、それぞれ、遺伝アルゴリズムが起動され、図11の概略フローチャートに従って配置改善を行う(ステップE3)。ステップE3における遺伝アルゴリズムは配置対象の部分回路の総数(qとする)だけあり、それぞれ別個のプロセッサで並列に実行される。尚、各遺伝アルゴリズムは予め指定された数jだけ世代交代を行う。ここではj=10とする。図11に示す遺伝アルゴリズムの処理の具体的な説明は後述する。
【0116】
第3実施例は、各遺伝アルゴリズムをそれぞれ別個に実行する間に、例えば、j=10世代毎に隣の部分回路の配置結果の情報を参照する実施例である。これによって、回路全体の配置の性能を考慮することを目的とする。すなわち、
(i)各部分回路に対して、それぞれ遺伝アルゴリズムをj=10世代実行する(ステップE3)。
(ii)各部分回路に対する最後の世代(すなわち10x 世代目、但し、i=1、2、…)の最良の配置結果をそれぞれ共有メモリにコピーする(ステップE4)。ここで、コピーとは、以前のデータに新しいデータを上書きするという操作である。
上記のステップE3及びステップE4を最後の世代が総世代になるまで繰り返す(ステップE5)。すなわち、ステップE5では、最後の世代が総世代数k以下か否かを判定し、もし総世代数k以下ならばステップE3へ、さもなくば、ステップE6の出力へと進む(ステップE5)。ここではk=j×100=10×100=1000とする。つまりステップE3からステップE5に至るループは計100回繰り返されることになる。
【0117】
ステップE3の遺伝アルゴリズムがステップE5に続く処理として実行される場合は、i番目(2≦i≦q)の配置対象の部分回路に対する遺伝アルゴリズムは、共有メモリにコピーされている(i−1)番目の配置対象の部分回路の配置結果の情報を参照する。
【0118】
ステップE5の判定がNOの場合は、その時点の各配置対象の部分回路に対する最良解、即ち、共有メモリに最後にコピーされた各配置対象の部分回路に対する配置結果の情報をそれぞれ出力する(ステップE6)。これによって回路の全ての素子に対する最終的な配置座標が決定される。
【0119】
ステップE3の遺伝アルゴリズムについて図11の概略フローに従って説明する。以下の説明において、第1実施例と全く同じ動作内容については、詳細な説明は省略する。
【0120】
ステップE3は、ステップE2で決定される配置対象の部分回路の総数qだけあり、それぞれが図11の概略フローに従って第3実施例では並列に実行されることを特徴とする。
【0121】
第1実施例と同様に、配置対象の部分回路に属す各ブランチ毎に素子の並び順に従い、そのy座標を並べて表現した複数個の解候補から成る初期世代を生成する(ステップB1)。
【0122】
ステップB1の初期世代生成は、ステップE3の処理が初めて適用されるときだけ必要となるものであり、2回目以降のステップE3〜E5の処理ループにおいては使用されない。
【0123】
各解候補に対してx座標を決定するために第1実施例と同様のコンパクションを行う(ステップB2)。この場合において、本第3実施例では、1番目の配置対象の部分回路に属するブランチのコンパクションに関しては、図12のように配置領域の左縁を越えてはならないという条件を付加する。2番目以降の配置対象の部分回路のブランチのコンパクションについては、ステップE3の処理が初めて適用されるときは前記の1番目の配置対象の部分回路に対する場合と同様の条件を付加し、ステップE5の処理の後、再びステップE3の処理が適用される場合は、共有メモリにコピーされている左隣の配置対象の部分回路、すなわち(i−1)番目の配置対象の部分回路の配置結果に対して素子をコンパクションで詰めていく。
【0124】
所定のコスト関数から定義される適応度関数に従って、第1実施例又は第2実施例と同様に、各解候補の適応度が算出される(ステップB3)。第3実施例においては、仮想配線長に関するコスト、配置面積に関するコスト、オーダーコスト、ペアコスト等を、例えば各コストに重みを付けて和をとり、その総和を解候補のコストとする。
【0125】
コストは小さいほど良いので例えば、解候補wの適応度f(w)を、
f(w)=(現世代の全解候補のコストのうちの最大値)−(解候補wのコスト)
のように定義する。i(i≧2)番目の配置対象の部分回路に対するコスト計算の際に、i番目と(i−1)番目の配置対象の部分回路間の接続関係によるコストも考慮することとする。例えば、仮想配線長に関しては、i番目と(i−1)番目の配置対象の部分回路を接続しているネットの長さも加算することとする。ここで参照する(i−1)番目の配置対象の部分回路の配置結果の情報は、共有メモリにコピーされているものを使用する。
【0126】
以下、ステップB5〜ステップB8を繰り返して新たな解候補群を生成する。ステップB3で算出された適応度に基づいて決定される選択確率に従って、全解候補の中から交叉すべき2つの解候補を選択する(ステップB5)。
【0127】
ステップB5で選択された親1、親2に対して予め設定された交叉率に基づいて交叉を施し、子を2つ生成する。それらの子を子1、子2とする(ステップB6)。
【0128】
ステップB6で生成された子1、子2に対してそれぞれ、予め設定された突然変異率に基づいて突然変異を施す(ステップB7)。
解候補の数と同数の子が生成されるまで、ステップB5〜ステップB7すなわち選択・交叉・突然変異を繰り返す(ステップB8)。子の集団を、新世代の解候補群とする。
【0129】
ステップB3、B5、B6及びB7を第2実施例のステップC1、C2、B6及びB7に置き換えて、ステップB4の判断操作を選択操作の後に位置させても良い。
【0130】
以上の新世代の解候補群の生成、この解候補群に対するコンパクション及びその適応度の評価の処理ループ(世代)がj回繰り返され、より良い解候補に収束されていく。そして、現在対象としているi番目の配置対象の部分回路に対する世代数の合計、すなわちステップE3の処理が初めてi番目の配置対象の部分回路に適用されてからの処理ループ回数の合計が前述の指定数jの倍数、即ちj、2j、3j、…、100jの何れかに達した場合、処理ループを脱出して、ステップB9の処理に移る。ステップB4ではそのための判定を行う。
【0131】
ステップB9では、そこまでのj回の処理ループの最後の世代の適応度最大の、即ちコスト最小の解候補を最良解とし、その解候補に関するデータを出力する。
【0132】
上記のステップE3の遺伝アルゴリズムが全ての配置対象の部分回路に対して並列に実行される。
上記のように、第3実施例によれば、回路全体を複数個のブランチからなる配置対象の部分回路に分割し、それぞれの配置対象の部分回路の素子配置に対しては直前の配置対象の部分回路の、予め指定された世代数j毎の最良解の配置結果の情報をも参照することによって、隣合う配置対象の部分回路の間の相対的な関係を考慮しつつ、各配置対象の部分回路の素子配置に対して遺伝アルゴリズムを並列的に適用するので、回路全体を考慮した質の高い配置結果を高速に求めることが可能となる。
【0133】
以下、図面を参照しながら第4実施例を説明する。
第4実施例において、装置構成及び適用する回路例は第1実施例と同様であるので、図面と詳細な説明は省略する。
【0134】
図13は本発明の第4実施例の動作を示すフローチャートであり、図14は図13のフローチャートの中のy座標の調整の概略を示すフローチャートであり、図15は図13のフローチャートを用いた、図2の回路図に対する1つの配置結果の例を示す図である。
【0135】
第4実施例の動作を図13及び図14を参照して説明する。図13において図3及び図6と同じ動作には同じ符号を付し、詳細な説明は省略する。
素子のサイズや種類、ネットリスト、ブランチ情報等、配置の対象とする回路図に関するデータや素子配置部30に関するパラメータ及びステップFで用いるパラメータ等を、第1実施例と同様に、入力部10から読み込む(ステップA1)。
【0136】
第1実施例と同様に、配置対象の回路図に属する各ブランチ毎に、素子の並び順に従い、そのy座標を並べて表現した複数の解候補からなる初期世代を生成する(ステップB1)。
【0137】
第1実施例と同様に、各解候補に対してx座標を決定するためにコンパクションを行う(ステップB2)。
所定のコスト関数から定義される適応度関数に従って、第1実施例と同様に、各解候補に対する適応度が算出される(ステップB3)。コスト関数については、第1〜第3実施例と同様である。
【0138】
以下、ステップB5〜ステップB8を繰り返して新たな解候補群を生成する。ステップB5〜ステップB8(ステップFを除く)は、第1実施例と同じであるので、詳細な説明は省略する。
【0139】
ステップB3で算出された適応度に基づいて決定される選択確率に従って、全解候補の中から交叉すべき2つの解候補(親1、親2)を選択する(ステップB5)。
【0140】
ステップB5で選択された親1、親2に対して予め設定された交叉率に従って交叉を施し、子1及び子2を生成する(ステップB6)。
ステップB6で生成された子1、子2に対してそれぞれ、予め指定された突然変異率によって突然変異が施され、子1’、子2’が生成される(ステップB7)。
【0141】
ステップB7で生成された子1’、子2’に対してそれぞれ、予め指定された確率δに従い、隣合うブランチ内でy座標が近接している素子のペアを探し、もしそのようなペアがあればその2素子のy座標を同一の値とする(y座標調整する)、という操作を行う(ステップF)。
【0142】
解候補の数と同数の子が生成されるまで、ステップB5〜ステップFすなわち選択・交叉・突然変異・y座標調整を繰り返す(ステップB8)。子の集団を、新世代の解候補群とする。
【0143】
以上の新世代の解候補群の生成、この解候補群に対するコンパクション及びその適応度の計算の処理ループ(世代)が予め設定された世代数だけ繰り返され、より良い解候補に収束されていく。ここでこの処理ループの脱出条件として、「予め設定された世代数に達した場合」という条件の他に、「全ての個体が同じ適応度を持った場合」という条件を付加してもよい。
【0144】
最終世代における最良解の配置結果の情報、即ち各素子の配置座標を出力する(ステップB9)。
以下、図14に従ってステップFのy座標の調整につき具体的に説明する。
【0145】
ループ回数として用いるパラメータiの値を1に設定する(ステップF1)。
0以上1以下の実数の一様乱数値rを発生させる(ステップF2)。
rが、予め指定されたy座標調整に関する確率δよりも小さい場合はステップF4へ、さもなくば、ステップF6へ進む(ステップF3)。この場合において、例えば、r=0.4、δ=0.7ならばステップF4に進む。δの値は図13の遺伝アルゴリズムの全世代に亙って定数としても良いし、或いは世代が進む毎に少しずつ増大させていく等、動的に変化させても良い。増大させると、一般に、後半の世代に行くほどx方向の整列度の度合いが高まることになる。
【0146】
i番目と(i+1)番目のブランチのコードを比較してy座標の差の絶対値が1以上p以下であるペアy(i,k)、y(i+1,h)を1組探す。複数組あるときはランダムに1組を選択する(ステップF4)。
【0147】
ここで、y(j,m)はj番目のブランチのm番目の要素を意味する記号である。pの値はy座標の近接の度合いを反映し、本実施例では、p=2として説明する。即ち、
|y(i,k)−y(i+1,h)|=1又は=2
であれば、i番目のブランチのk番目の素子と、(i+1)番目のブランチのh番目の素子が近接していると判断する。
【0148】
例えば、i=1のとき、子1’において1番目のブランチのコードが、
0 10 15 27 37
であり、2番目のブランチのコードが
0 26 30
である場合に、1番目と2番目のブランチのコードを比較すると、|y(1,4)−y(2,2)|=|27−26|=1であるので、1番目のブランチの4番目の素子と、2番目のブランチの2番目の素子は近接していることが分かる。
【0149】
上記のような近接ペアy(i、k)、y(i+1、h)の探し方は、例えば、i番目のブランチの要素y(i、a)と(i+1)番目のブランチの要素y(i+1、b)をランダムに選択し、それら2要素の差の絶対値が1以上p以下であるか否かという条件をチェックする、という操作を例えば高々10回繰り返し、その途中過程で1組でも条件を満たすものがあれば、そのペアを近接ペアとして採用する、という方法を採用しても良い。或いは、チェック時間は増えるが、考え得る全てのペアをチェックして、条件に合うペアを1つ選択するという方法を採用しても良い。
【0150】
ステップF4において近接しているペアy(i,k)、y(i+1,h)が探索された場合は、それらのうちの一方の値を他方にコピー(上書き)する(ステップF5)。即ち、
(a)y(i,k)の値をy(i+1,h)にコピーするか、又は
(b)y(i+1,h)の値をy(i,k)にコピーする。
(a)、(b)のどちらを実行するかはランダムとする。例えばステップF4の説明で用いたペアy(1,4)、y(2,2)に対して、(a)を実行すると、子1’の2番目のブランチのコードは
0 27 30
となり、1番目のブランチの4番目の素子と、2番目のブランチの2番目の素子が、互いの基準点が同一の水平線(y=27)上に位置しているという意味で、横に隣合うことになる。
【0151】
上記のようにして、y座標調整の対象になった2個の素子のy座標の値は、ステップF2〜ステップF7のループを抜けでるまでは、再び変更されることはないものとする。従って、上記の(a)、(b)の選択の例外として、もしy(i、k)が値の変更を許されていない場合は、(a)を選択することになる。
【0152】
このように、一旦y座標調整の対象となった2素子のy座標は、iがブランチの総数未満の間は、再変更しないことにより、例えば隣合うブランチのコードが
0 25 40; 0 26 36; 5 26
の場合、まず「i=1の時」2番目のブランチの2番目の値が一旦25に調整され、次に「i=2の時」再びその値が26に戻るという無駄な操作は回避されることになる。例えば、次のようにブランチのコードが変化する。
0 25 40; 0 26 36; 5 26 (i=1;(a)を実行)
→ 0 25 40; 0 25 36; 5 26 (i=2;(b)を実行)
→ 0 25 40; 0 26 36; 5 26
ステップF4において近接しているペアが探索されなかった場合は、ステップF5においては何も実行しない。
【0153】
パラメータiの値に1を加える(ステップF6)。
以上のステップF2〜ステップF6の操作を、(ブランチの総数−1)回繰り返す(ステップF7)。図2の例では7−1=6回繰り返す。
【0154】
図14に記載の方法では、パラメータiを初期値1から1ずつ増加させることにより、ブランチの左側から順次、y座標調整を施しているが、それとは逆に、iの初期値を(ブランチの総数−1)として1ずつ減少させることによって、ブランチの右側から順次、y座標調整を施すという方法を用いても良い。更には、1以上、(ブランチの総数−1)以下のiの値をランダムに「ブランチの総数×δ」個選び、ステップF4、ステップF5の操作を行うという方法を用いても良い。
【0155】
上記のように、第4実施例によれば、ブランチの特徴を生かした遺伝アルゴリズムを適用する際に、遺伝的操作の1つとして、y座標の調整を行うことにより、横に隣合うことによって面積の縮小と配線のし易さを増すような素子のペアが徐々にx方向に整列していくので、最終的にx方向への整列性に優れた質の高い配置結果を効率よく求めることが可能となる。
【0156】
本発明は上述した実施例に限定されない。
実施例においては、左側のブランチに属する素子から順に配置する場合について説明したが、もちろんその反対に右側から配置する場合でも、本発明は同様に適用でき、同様の効果が得られる。
【0157】
図7において、ステップB4の判断操作をステップC2の選択操作とステップB6の交叉操作との間に移動し、ステップC3の終了処理を最良解の選定処理とし、ステップB4の判断操作における所定回数を1増加しても、等価なフローチャートとなる。
【0158】
図6、図7、図11及び図13で用いた遺伝アルゴリズムの手法は非常に基本的なものであり、他の種々の遺伝アルゴリズムの手法が適用可能である。例えば前世代の最良解を無条件で次世代に残すというエリート戦略や、初期の世代で局所解に陥ることを防ぐためのスケーリングや期待値戦略などの各種の技法を盛り込めることは勿論のことである。第1〜第4実施例では新しい世代を生成する際に親の数(例えば50)から、親と同数(50)の子を生成し、そうして得られた子の集団を新世代の解候補群としているが、この方法の代わりに子を例えば20個生成し、それらを親の集団に追加して得られる70個の解候補からなる集団から適応度の高い順に50個の個体を選出し、それらを新世代の解候補群としてもよいことは勿論のことである。
【0159】
また、上記実施例では、個別に説明したが、これに限らず、例えば、第1実施例と第2実施例、第1実施例及び第2実施例と第4実施例、第3実施例と第4実施例、或いは、第1実施例と第4実施例、と云ったように自由に組み合わせて適用することができる。他には、第2実施例と第3実施例、或いは、第2実施例及び第3実施例と第4実施例という組合せも可能である。
更に、本発明は上述した実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【0160】
【発明の効果】
本発明によれば次のような効果が得られる。
本発明の第1局面に係るLSIの素子配置方法及び装置によれば、回路全体を所定数(例えば、m個)のブランチから構成される配置対象の部分回路に対して、m個より少ない個数(例えば、(m−n)個)のブランチの重畳部分を持って素子を配置する。従って、本発明の第1局面に係るLSIの素子配置方法及び装置によれば、局所的な最適化を連続して行うので、回路全体を考慮した素子配置が可能であり、更に、ブランチの特徴を生かした遺伝アルゴリズムを用いた素子配置方法と相俟って、例えば、配置された素子が占める面積をコスト関数に用いた場合は素子面積が高密度化された、質の高い素子配置結果を効率よく求めることができる。
【0161】
上記のLSIの素子配置方法及び装置によれば、最適化手法として遺伝アルゴリズムを採用し、各解候補毎のコストが評価された後の各世代における解候補の選択をする場合に、コスト関数をその重要度に応じた順番で適用することにより、解候補をふるいにかけて絞り込んでいくので、すべてのコスト関数に対して最適もしくは近似最適な解を効率よく求めることが可能となる。
【0163】
本発明の第2局面に係るLSIの素子配置方法及び装置によれば、LSIにおける素子の自動配置において、ブランチの特徴を生かした遺伝アルゴリズムを適用する際に、遺伝的操作の1つとして、各世代の各解候補のコード(染色体)に対して、予め指定された確率に従い、隣合うブランチ内でy座標が近接している素子のペアを探し、もしそのようなペアがあればその2素子のy座標を同一の値とするという操作を行う。この操作によって、横に隣合うことにより面積の縮小や配線のし易さ等に貢献するような素子のペアが徐々にx方向に整列していくので、最終的にx方向への整列性に優れた質の高い配置結果を効率良く求めることが可能となる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係るLSI素子配置装置の構成を示すブロック図。
【図2】本発明に係るLSI素子配置装置を適用する回路図の一例。
【図3】図1に示す素子配置装置の動作を示すフローチャート。
【図4】本発明に係るLSI素子配置装置を用いて実施した図2の回路図の自動配置結果の一例。
【図5】素子配置部30の概略構成を示す図。
【図6】図1に示すLSI素子配置装置の素子配置手段の動作を詳しく示すフローチャート。
【図7】本発明の第2実施例に係るLSI素子配置装置の動作を示すフローチャート。
【図8】第2実施例の選択手段の動作を示すフローチャート。
【図9】本発明に係るLSI素子配置装置を用いて実施した図2の回路図の自動配置結果の一例。
【図10】本発明の第3実施例の処理工程を示すフローチャート。
【図11】図10のフローチャートの中の遺伝アルゴリズムの概略を示すフローチャート。
【図12】図10のフローチャートを用いた図2の回路図に対する1つの配置結果を示す図。
【図13】本発明の第4実施例の処理工程を示すフローチャート。
【図14】図13のフローチャートの中のy座標の調整の概略を示すフローチャート。
【図15】図13のフローチャートを用いた図2の回路図に対する1つの配置結果。
【符号の説明】
10…入力部、20…部分回路データ抽出部、30…素子配置部、
31…初期解候補群生成部、32…X座標決定部、33…適応度評価部、
34…解候補群更新部、35…(近似)最適解選定部、36…選択部、
37…交叉部、38…突然変異部、40…配置結果ファイル作成部、
50…出力部。[0001]
[Industrial applications]
The present invention relates to a system for automatically arranging elements in an LSI design, and more particularly to an element arranging method and an element arranging apparatus in which the positional relationship of elements on a circuit diagram is stored.
[0002]
[Prior art]
In LSI design, it is very important to place all elements in a small area region after preserving the positional relationship of elements on a circuit diagram (schematic) to some extent. Conventional element placement by hand achieves such high density placement, but requires skill and a large amount of work time.
[0003]
Therefore, in recent years, research and development of an automatic element placement apparatus have been activated in order to realize optimum or approximate optimum element placement in a short time, and various automatic element placement methods such as a simulated annealing method have been proposed. For example, Sasaki, Susa, "Element placement method in analog cell generation", IEICE Technical Report, VLD90-94, 1990, the procedure of automatic placement was disclosed, and many other methods applying genetic algorithms. Has been proposed.
[0004]
A genetic algorithm is a method of stochastic search proposed based on the genetic mechanism of living organisms. After generating an initial solution candidate group, evaluating the fitness of each solution candidate and evaluating the next solution candidate group It is known as an algorithm for sequentially generating / evaluating a new solution candidate group by selection / crossover / mutation for generation and searching for a solution candidate having higher fitness.
[0005]
However, since the number of elements included in a circuit is enormous, from several thousand to tens of thousands or more, the element arrangement in an LSI requires an approximate (approximate) element arrangement by processing in consideration of the entire circuit configuration in these automatic arrangement systems. Optimization is difficult. Therefore, in the related art, a method is used in which the entire circuit is divided into small partial circuits to be placed and placement processing is performed for each partial circuit to be placed. This method is, for example, a method in which the entire circuit is divided into small placement target partial circuits, and placement processing is performed for each placement target partial circuit in order from the left or right in the circuit diagram. How to divide the entire circuit into partial circuits to be arranged has a great effect on the final result of circuit arrangement, but the division method is not always established, and it is based on trial and error or rules obtained empirically. However, when the circuit diagram is composed of small partial circuits having independent functions, a division method is established. Further, it has not been solved how to efficiently connect the placement results corresponding to the respective partial circuits to be placed obtained by dividing and improve the performance of the placement results for the entire circuit.
[0006]
Therefore, the element placement result provided by the conventional automatic placement system is at a low level of accuracy (approximately) and is not always satisfactory compared to the conventional manual design. Although there is a method that can finally achieve a result similar to that of manual design in terms of the degree of integration, it requires trial and error operations instead of fully automatic operation, and it takes a long time to process until a solution is obtained. It costs.
[0007]
Sasaki et al. Describe an evaluation value relating to constraint conditions such as element adjacency (hereinafter, an evaluation value of an element arrangement result is referred to as “cost”), a cost relating to an area occupied by arranged elements, or a wiring length of element-to-element wiring. And several kinds of evaluation functions (hereinafter referred to as "cost functions") for defining costs and the like, and applying a simulated annealing method to a placement result that minimizes the cost calculated by the cost functions as much as possible. It discloses a method to obtain the same. At that time, Sasaki et al. Adopt a method of multiplying by a weighting factor according to the importance of each cost function to obtain a sum and treat the sum as one cost function.
[0008]
However, Sasaki et al., Although it is possible to assign an order to each cost function according to importance, never disclose a method or guideline for quantifying the importance as a weighting factor. The fact is that it is empirically set / corrected.
[0009]
Further, in the method to which the genetic algorithm is applied, the problem is how to use only an evaluation value of fitness calculated based on a cost function related to one constraint condition and how to incorporate several types of constraint conditions. .
[0010]
As described above, in the conventional LSI element placement method, it is not possible to obtain an optimum or approximate optimum placement result for all of several types of cost functions related to various constraints.
[0011]
One criterion for judging the quality of the arrangement result is whether or not the elements are aligned in the horizontal direction (that is, the x direction) as much as possible. This is because, when the elements are arranged in the horizontal direction, wiring is easier, and a useless area is reduced. However, a specific method of aligning the elements in the horizontal direction as much as possible is not disclosed.
[0012]
[Problems to be solved by the invention]
As described above, the conventional method of arranging the elements of the LSI has many problems in order to obtain a high-quality arrangement result.
SUMMARY OF THE INVENTION An object of the present invention is to provide a method and an apparatus for arranging LSI elements, which provide a high-speed element arrangement result in consideration of the entire circuit at high speed.
[0013]
In particular,
(A) providing an optimal or approximate optimal arrangement result with respect to all cost functions related to constraints on element arrangement;
(B) Applying a genetic algorithm in parallel to the element arrangement of each placement target partial circuit while considering the relative relationship such as the connection relationship or the positional relationship between adjacent placement target partial circuits. ,
(C) The element pairs that contribute to the reduction of the area and the ease of wiring by being adjacent in the horizontal direction are gradually aligned in the horizontal direction during the processing of the algorithm, and the alignment in the horizontal direction is improved. Efficiently seeking excellent and high quality placement results,
Accordingly, it is an object of the present invention to provide a method and an apparatus for arranging an LSI, which provide a high-quality element arrangement result in consideration of the entire circuit at a high speed.
[0014]
[Means for Solving the Problems]
The present invention has taken the following measures in order to solve the above problems.
An LSI element arranging method according to a first aspect of the present invention is directed to an LSI element arranging method for arranging elements according to an arrangement order of branches including element arrays included in a circuit diagram,Inputting the circuit diagram and storing it in a storage unit; and storing the circuit diagram in the storage unit.The data of a predetermined number of branches included in the circuit diagram isIncluding the partial circuit,Of the circuit diagramPredetermined end sideA first step of reading from the storage means in order from the first, and performing an element arrangement operation using a genetic algorithm on the read data of the branch.Calculating the element arrangement in the branch, and determining the element arrangement coordinate data in a smaller number of branches than the number of branches included in the partial circuit based on the operation result.A second step toSaidA third step of obtaining a next partial circuit from a branch whose element arrangement is not determined in the second step and a branch whose element arrangement is read from the storage means and added and whose element arrangement is not determined,The second step and the third step are repeated to sequentially determine the element arrangement coordinate data of the branch.It is characterized by the following.
[0015]
An LSI element placement apparatus according to a first aspect of the present invention is an LSI element placement apparatus that places elements in accordance with the order of branches composed of element rows included in a circuit diagram, and includes a predetermined number of branches included in the circuit diagram. DataIncluding the partial circuit,Of the circuit diagramPredetermined end sideA partial circuit data extracting means for sequentially extracting the data from the branch, and performing an element arrangement operation using a genetic algorithm on the data of the branch extracted by the partial circuit data extracting means.The arrangement coordinate data of the branches is sequentially recorded while determining the arrangement of branches smaller than the branches included in the partial circuit by calculation.Device arrangement means for generating an element arrangement result including arrangement coordinate data of all elements included in the data of the branch.If the partial circuit data extracting means reads the partial circuit after the second time, the partial circuit data extracting means extracts the partial circuit including the branch whose arrangement has not been determined by the element arranging means.Characterized by
In the LSI element placement method according to the first aspect of the present invention, the second step uses the data of the branch extracted in the first step to determine a predetermined number of all elements included in the data of the branch. An initial solution candidate group generating step of generating a first solution candidate group including a plurality of first solution candidates consisting of candidate values of the first coordinates, and for each of the first solution candidates, a first cost relating to at least an element arrangement area. An evaluation step of evaluating a plurality of costs including a second cost relating to a positional relationship between elements, and a predetermined function based on a first cost for each of the first solution candidates from the first solution candidate group. A first generation step of calculating a selection probability, selecting a plurality of second solution candidates larger than a predetermined number, and generating a second solution candidate group including the second solution candidate; and , Each of the second solution candidates Calculating a selection probability by a predetermined function based on the second cost, and selecting a plurality of third solution candidates larger than the number of the first solution candidates and smaller than the number of the second solution candidates; A second generation step of generating a third solution candidate group including solution candidates; and a third generation step of repeating the second generation step until a last solution candidate group is generated for all costs. I do.
[0016]
In the LSI element placement device according to the first aspect of the present invention, the element placement unit uses the data of the branch extracted by the extraction unit to determine predetermined first coordinates of all the elements included in the data of the branch. Initial solution candidate group generating means for generating a first solution candidate group including a plurality of first solution candidates consisting of the following candidate values, and for each of the first solution candidates, at least a first cost relating to an element arrangement area and an element position An evaluation means for evaluating a plurality of costs including a second cost relating to the relationship; and calculating a selection probability by a predetermined function from the first solution candidate group based on a first cost for each of the first solution candidates. A first generation unit for selecting a plurality of second solution candidates larger than a predetermined number and generating a second solution candidate group including the second solution candidates; Based on the second cost for each solution candidate A selection probability is calculated by a predetermined function, a plurality of third solution candidates larger than the number of the first solution candidates and smaller than the number of the second solution candidates are selected, and a third solution including the third solution candidates is selected. A second generation unit for generating a candidate group, and a unit for repeating the second generation unit until a final solution candidate group is generated for all costs.
[0019]
Of the present invention2nd phaseAccording to the LSI element arrangement method according to the first aspect, the second step according to the first aspect uses the data of the branch extracted in the first step to determine a predetermined first one of all the elements included in the data of the branch. A solution candidate group generating step of generating a solution candidate group including a plurality of solution candidates consisting of candidate values of one coordinate, and a vertical direction with respect to a first coordinate axis corresponding to the first coordinates of all elements related to the solution candidate group A second coordinate determination step of determining a second coordinate of a suitable second coordinate axis for each solution candidate by a compaction operation, and, in accordance with a predetermined probability, each solution candidate of the solution candidate group is included in the adjacent branch. A search step of searching for a pair of elements whose first coordinates are close to each other among the elements, and an adjusting step of adjusting the first coordinate value of the element to the same value when the pair of close elements is found. To And wherein the Mukoto.
[0020]
Of the present invention2nd phaseThe device placement device for an LSI according to the first aspect, wherein the device placement unit according to the first aspect uses the data of the branch extracted by the partial circuit data extraction unit to determine a predetermined number of devices included in the data of the branch. Solution candidate group generation means for generating a solution candidate group including a plurality of solution candidates each consisting of a candidate value of one coordinate, and a solution candidate group generating means for generating a solution candidate group that is perpendicular to a first coordinate axis corresponding to the first coordinates of all elements related to the solution candidate group A second coordinate determining means for determining a second coordinate of the second coordinate axis by a compaction operation for each solution candidate, and a branch included in the branch adjacent to each solution candidate of the solution candidate group according to a predetermined probability. Searching means for searching for a pair of elements whose first coordinates are close to each other among the elements; and adjusting means for adjusting the first coordinate value of the element to the same value when the pair of adjacent elements is found. Including And butterflies.
[0021]
[Action]
As a result of taking the above-described measures, the following operation occurs.
According to the method and the device for arranging elements of an LSI according to the first aspect of the present invention, the number of sub-circuits less than m is determined for the partial circuit to be arranged composed of a predetermined number (for example, m) of branches. The elements are arranged with overlapping portions of (for example, (mn) branches). Therefore, according to the method and apparatus for arranging elements of an LSI according to the first aspect of the present invention, local optimization is continuously performed, so that element arranging in consideration of the entire circuit is possible. Combined with the element placement method using a genetic algorithm that takes advantage of, for example, when the area occupied by the placed elements is used for a cost function, the element area is increased in density, and a high-quality element placement result is obtained. It can be obtained efficiently.
[0022]
According to the above-described LSI element placement method and apparatus, when a genetic algorithm is adopted as an optimization method and a solution candidate in each generation is selected after the cost of each solution candidate has been evaluated, a cost function is selected. By applying the solutions in order according to their importance, the solution candidates are sieved and narrowed down, so that optimal or approximate optimal solutions can be efficiently obtained for all cost functions.
[0024]
Of the present invention2nd phaseAccording to the method and apparatus for arranging elements of an LSI according to the present invention, when applying a genetic algorithm taking advantage of the characteristics of a branch in the automatic arrangement of elements in an LSI, one of the genetic operations is performed as one of the genetic operations. For a code (chromosome), according to a predetermined probability, a pair of elements whose y coordinates are close to each other in an adjacent branch is searched, and if there is such a pair, the y coordinates of the two elements are determined to be the same. Perform the operation of setting the value. By this operation, the element pairs that are adjacent to each other and contribute to the reduction of the area and the ease of wiring are gradually aligned in the x direction, and finally the alignment in the x direction is improved. It is possible to efficiently obtain an excellent quality placement result.
[0025]
【Example】
An embodiment of the present invention will be described with reference to the drawings.
FIG. 1 is a block diagram showing a schematic configuration of an LSI element placement apparatus according to a first embodiment of the present invention.
[0026]
Schematically, this LSI element placement apparatus includes an input unit 10 having a storage unit (not shown) for inputting a placement target and storing the input placement target, a partial circuit data extraction unit 20 capable of accessing the storage unit, An element arranging unit 30 connected to the subsequent stage of the partial circuit data extracting unit 20, an arrangement result file creating unit 40 connected to a stage subsequent to the element arranging unit 30, and an arrangement result created by the arrangement result file creating unit 40; An output unit 50 that outputs the contents of the file.
[0027]
The operation of the LSI element placement device shown in FIG. 1 will be described. In this case, the circuit diagram of FIG. 2 is used as an example of an element arrangement target.
In the following description, “branch” refers to an element row formed from several elements connected between a power supply line and a ground line in a circuit diagram. This branch is the smallest unit handled in automatic element placement.
[0028]
For example, in the circuit diagram of FIG. 2, the first branch B1 to the seventh branch B7 generated by dividing the circuit by the curves 11 to 16 are shown. A first branch B1 including five elements R1-Q1-R2-Q2-R3 forming a current path between the power supply line 62 and the ground line 64, and a second branch including R4-Q3-R5 that does not reach the ground. B2, a seventh branch B7 composed of R13-Q10-R14-Q11 in which R14 is branched and connected to the path between the power supply line and the ground line.
[0029]
A schematic operation procedure of the LSI device arrangement device of FIG. 1 will be described. The LSI element placement device shown in FIG. 1 is based on a placement target partial circuit composed of m branches at the left end of the circuit diagram, and uses the genetic algorithm described later in detail to obtain n (<< The arrangement coordinates of the elements belonging to the branch m) are determined. Next, the partial circuit to be arranged is slid to the right by n branches, and the arrangement coordinates of the elements belonging to the next n branches are similarly determined. By repeating this operation and scanning the entire circuit with the partial circuit to be arranged, the arrangement of all elements is performed.
[0030]
A specific operation procedure will be described with reference to FIG.
Data relating to a circuit diagram to be placed, such as element size and type, netlist, branch information, and the like, are read from the input unit 10 (step A1). In this case, the branch information may be manually specified in the circuit diagram by the designer in advance, or may be set by the partial circuit data extraction unit 20 after step A2.
[0031]
Through the input unit 10, the user can place an element shown as an outer frame in FIG. 4 showing an example of an automatic placement result of the circuit diagram of FIG. 2 implemented using the LSI element placement system according to the present invention. The height (the width is not particularly specified) of the region 60, the parameters m and n described later in detail, the parameters related to the element placement unit 30, and the like are set (step A2).
Next, the partial circuit data extraction unit 20 determines a circuit including a predetermined number (in this case, m) branches at the left end of the circuit diagram as a partial circuit to be arranged (step A3). In this embodiment, m = 5 for convenience of explanation. For example, in the circuit of FIG. 2, a circuit including the first branch B1 to the fifth branch B5 is determined as a partial circuit to be arranged.
The partial circuit data extraction unit 20 inputs data related to the partial circuit to be arranged determined in step A3 from the input unit 10 (step A4).
[0032]
Based on the data on the partial circuit to be arranged extracted in step A4, the element arranging unit 30 performs automatic element arranging using a genetic algorithm, which will be described in detail later, based on the data for all the elements included in the partial circuit to be arranged. An arrangement is performed (step A5).
[0033]
The placement result file creator 40 determines, among the solutions obtained in step A5, that is, the placement coordinates of the elements included in the partial circuit to be placed, of the elements belonging to the n branches on the left side of the partial circuit to be placed. Only the arrangement coordinates are recorded in the arrangement result file as final arrangement coordinates (step A6).
[0034]
That is, if n = 2 in the present embodiment, in the circuit of FIG. 2, the element R1 included in the first branch B1 of the first branch B1 to the fifth branch B5 constituting the partial circuit to be arranged is used. , Q1, R2, Q2, R3 and only the coordinates of the elements R4, Q3, R5 included in the second branch B2 are determined as the final coordinates of these elements. The coordinates of the elements belonging to the third branch B3 to the fifth branch B5 are not determined here.
[0035]
If the unprocessed branch that has never undergone the placement processing in step A5 is not “0”, steps A4 to A6 are repeated, and if the number of unprocessed branches is “0”, the operation is moved to step A9 (step A7).
[0036]
The partial circuit data extraction unit 20 removes the n branches whose coordinates have been determined in step A6 from the partial circuit to be placed, and retains the remaining portions (that is, the branch coordinates are not determined in step A6 and are reserved). (Mn) branches, add n branches from the left among unprocessed branches that have not yet undergone the processing of step A5, and arrange them with new m branches It is determined as a target partial circuit (step A8).
[0037]
In step A8, for example, the sixth branch B6 and the seventh branch B7 which are unprocessed branches are added to the third branch B3 to the fifth branch B5 reserved in step A6, and the third branch B3 to the seventh branch B7 are added. Is determined as the next placement target.
[0038]
The steps from the update of the partial circuit to be arranged in step A8 to the determination of the element arrangement coordinates in step A6 are repeated, and the arrangement coordinates of the elements belonging to the new n branches are determined each time this process is performed. .
[0039]
When the number of unprocessed branches is “0” in step A7, the arrangement result file creating unit 40 determines the arrangement coordinates of all the remaining elements that have been reserved without being determined in step A6. Is determined as final arrangement coordinates, and related data is recorded in an arrangement result file (step A9). By this procedure, the arrangement coordinates of all the elements included in the circuit to be arranged are determined, and the arrangement result file is completed.
[0040]
In step A9, for example, in FIG. 2, in the second step A6, the third and fourth branches B3 to B4 of the third to seventh branches B7 included in the partial circuit to be arranged at this time are The coordinates of the arrangement results of the included elements are determined as the final coordinates, and the coordinates of the arrangement results of the elements included in the three branches from the fifth branch B5 to the seventh branch B7 are not determined as the final coordinates. Have been. Then, the coordinates of the placement results of the elements included in the fifth branch B5 to the seventh branch B7 for which the determination is suspended are determined as the final placement coordinates in this step.
[0041]
The output unit 50 outputs the contents of the arrangement result file to a predetermined device (Step A10). The output unit 50 may be any of a monitor screen, a printer, a data communication network, or an information storage medium.
[0042]
In step A8 of the predetermined number of loops of the processing loop, that is, in the last step A8, when the number of unprocessed branches is not n and the number of branches included in the partial circuit to be newly placed is not m, The processing may be performed with the number.
[0043]
Here, it is also possible to change some or all of the parameters set in step A2 using the data stored in the storage unit of the input unit 10 and re-execute. In this case, step A1 is unnecessary. Further, the parameters m and n may not be always constant but may be locally and appropriately varied according to the characteristics of the circuit diagram.
[0044]
In addition, the operation of the first embodiment shown in FIG. 3 is an example, and can be appropriately modified. For example, step A7 is brought before step A6, and when the condition is "Yes", the operation of combining step A6 and step A9, that is, the arrangement result for all the elements given in step A5 is recorded. The same effect can be obtained even if the above configuration is adopted.
[0045]
As described above, according to the first embodiment of the present invention, elements are arranged while scanning the entire circuit with a partial circuit to be arranged with a superimposed portion. The arrangement can be performed in consideration of the entire circuit in the sense of continuity.
[0046]
FIG. 5 is a diagram illustrating a schematic configuration of the element arrangement unit 30.
The element placement unit 30 is connected to the initial solution candidate group generation unit 31 relating to the partial circuit to be placed, an X coordinate determination unit 32 connected to a stage subsequent to the initial solution candidate group generation unit 31, and the X coordinate determination unit 32. A fitness evaluation unit 33, a solution candidate group update unit 34 connected to the fitness evaluation unit 33 and providing data to the X coordinate determination unit 32, and an optimal solution or an approximate optimal solution connected to the fitness evaluation unit 33. And an (approximate) optimal solution selecting unit 35 for selecting and outputting a solution. The solution candidate group update unit 34 includes a selection unit 36, a crossover unit 37, and a mutation unit 38.
[0047]
Prior to the description of the operation of the element arrangement unit 30, terms used in the following description will be defined. "Genetic algorithm" is a method of probabilistic search proposed inspired by the genetic mechanism of living organisms. After generating an initial solution candidate group, evaluating the fitness of each solution candidate, and evaluating the next solution candidate group Is an algorithm that successively generates / evaluates a new solution candidate group by selection, crossover, or mutation to generate a solution, and searches for a solution with higher fitness.
[0048]
The “solution candidate” is a solution candidate for a given problem, and is composed of, for example, a sequence or data sequence such as [1, 0, 0, 0] or [A, B, C, D]. In the case of the first embodiment, it is a sequence of y-coordinate candidate values of elements to be arranged. Specifically, each solution candidate calculates the candidate value of the y coordinate of the reference point (for example, the lower left point of the element) of each element included in the circuit diagram in the order of arrangement from the left side on the circuit diagram of the branch, And a numerical sequence (referred to as a chromosome or a code of a solution candidate) coded in accordance with the arrangement order of the elements in the branch from the bottom of the circuit diagram. As the y coordinate, a grid coordinate obtained by dividing the height of the allocable area into a plurality of equal parts (for example, 50 equal parts) is used. In the following, the lower left point of the element is used as the reference point of each element, and the y coordinate uses an integer of 0 or more and 49 or less.
[0049]
“Solution candidate group” is a set of solution candidates.
“Initial solution candidate” is an initial value of a solution candidate.
The “fitness” is an evaluation value as a solution for each solution candidate calculated by a predetermined evaluation function based on cost or the like (hereinafter, referred to as “fitness function”). The higher the fitness, the better the solution candidate. The fitness may be relatively defined for each generation among solution candidates of that generation.
[0050]
“Selection” is to select two solution candidates from all solution candidates based on the probability determined by the fitness.
"Crossover" is to exchange some components of two selected solution candidates with each other based on a predetermined rule. By this crossover, two new solution candidates are generated.
[0051]
“Mutation” means performing a predetermined arithmetic operation only on a certain component of a certain solution candidate based on a predetermined probability. This mutation prevents the search range from being limited by the initial solution candidate group.
[0052]
A schematic operation procedure of the element arrangement unit 30 will be described.
The element arrangement unit 30 generates a solution candidate group of an initial generation composed of a plurality of solution candidates by a method described later, evaluates each solution candidate, and, based on the solution candidate group, generates the same number of solutions by a procedure described later. A new solution candidate group, that is, a new generation solution candidate group, is generated, the new generation solution candidate group is evaluated, and a further new generation solution candidate group is generated based on the new solution candidate group. As described above, such a procedure is repeatedly executed until a certain condition is satisfied, and one solution candidate is finally selected as a solution of this element arrangement problem.
[0053]
The detailed element arrangement procedure of the element arrangement unit 30 using the genetic algorithm (that is, step A5) will be described with reference to FIG.
The initial solution candidate group generation unit 31 creates an initial generation solution candidate group (step B1). However, since the initial solution candidate group generation unit 31 performs different operations between the first time and the first time when creating the initial generation solution candidate group, the first operation will be described first.
[0054]
In the first time, the partial circuit data extracting unit 20 gives the extracted element data relating to the partial circuit to be placed to the initial solution candidate group generating unit 31 for the first time. The initial solution candidate group generation unit 31 determines the order of the branches belonging to the partial circuit to be arranged from the left side on the circuit diagram, and further according to the order of the elements in the branch from the bottom of the circuit diagram. A predetermined number of solution candidates are generated by arranging the candidate values of the y coordinate of. The set of a plurality of solution candidates generated in this manner is a solution candidate group of the initial generation.
[0055]
The above operation will be specifically described with reference to FIG.
The initial solution candidate group generation unit 31 firstly arranges the element R1 located below the first branch B1 located to the left of the partial circuit to be arranged including the first branch B1 to the fifth branch B5 to be automatically arranged. The y-coordinates are randomly generated in ascending order from the element R3 to the element R3 located above (for example, 11, 14, 23, 28, and 37), and the same processing is performed up to the fifth branch B5. Then, the initial solution candidate group generation unit 31 generates one solution candidate by connecting all the generated y coordinate candidate values in the order of occurrence.
[0056]
As described above, the value of the y coordinate to be generated uses an integer of 0 or more and 49 or less here, but in consideration of a case where the value exceeds the arrangeable area in advance, for example, only an integer of 0 or more and 41 or less is used. (In the example of FIG. 2, an element having a y-coordinate value of 2 or more protrudes from the arrangeable area.) However, even in this case, for example, in the case of an element having a large height such as the element R7 in FIG. 2, the element may protrude from the arrangeable area. (Actually, the value of the y coordinate that R7 can take is 0 or more and 28 or less). In such a case, the correction may be made so as to be barely within the area (for example, when 35 is assigned to R7, the correction is made to 28).
[0057]
An example of the solution candidate group generated by the initial solution candidate group generation unit 31 is shown below.
Figure 0003556260
One solution candidate has 19 candidate y-coordinate values respectively corresponding to the 19 elements included in the partial circuit to be arranged, and R1, Q1, R2, Q2, R3, R4, Q3, R5,... The semicolon is simply a symbol added for the sake of convenience to explain the branch delimiter, and is not character data included in the solution candidate.
[0058]
In this case, the y-coordinate may be generated from a random value generated within an allowable range in consideration of the type, size, design rule, and the like of each element, in addition to the element allocable area 60. Good.
[0059]
As described above, the first generation of the solution candidate group is performed. Next, the operation after the first time will be described.
The partial circuit data extraction unit 20 provides the initial solution candidate group generation unit 31 with element data included in a new partial circuit to be arranged obtained by moving the partial circuit to be arranged to the right by n branches. The initial solution candidate group generation unit 31 sets a set including a predetermined number of solution candidates as an initial generation solution candidate group.
[0060]
In this case, the initial solution candidate group generation unit 31 does not randomly generate the solution candidate group for all the related elements as in the first operation, but instead of the partial circuit of the current placement target and the previous target, The y-coordinates of the elements belonging to the (m−n) branches superimposed between the partial circuits to be arranged are the y-coordinates of the y-coordinates in the solution candidate group obtained in the last time of the previous automatic element arrangement step A5. A solution candidate group is generated by inheriting the value as it is. The inheritance of this value is performed between new and old solution candidates having the same number. For the newly added n branches, the y-coordinate value is generated in the same manner as in the first operation.
[0061]
Hereinafter, the operation of the initial solution candidate group generation unit 31 for generating the initial solution candidate group for the second time and thereafter will be specifically described with reference to FIG.
When generating the initial solution candidate group of the partial circuit to be placed for the second time, the target of automatic placement is the partial circuit to be placed consisting of the third branch B3 to the seventh branch B7, Since the target is the partial circuit to be arranged including the first branch B1 to the fifth branch B5, the three branches superimposed between the new and old partial circuits to be arranged are the third branch B3 to the fifth branch B5. Branch B5. Therefore, as for the candidate value of the y coordinate of the element included in the third branch B3 to the fifth branch B5 of the current solution candidate, the value of the corresponding portion of the first solution candidate is inherited as it is and newly added. The sixth to seventh branches B6 to B7 are generated in the same manner as in the first operation described above.
[0062]
Figure 0003556260
It becomes. Here, the symbol above each solution candidate indicates the corresponding branch.
[0063]
The X coordinate determination unit 32 determines the X coordinate of each element that has not been determined in step B1 by compaction (step B2). Here, as the compaction method, for example, a so-called one-dimensional compaction described in a document by Sasaki et al. Will be described. The compaction is performed sequentially from the branch located on the left side in the partial circuit to be arranged, sequentially from the element located lower in the branch, or by giving priority to the element having connection to the element on the left side, and This is a method of arranging one unit at a time in the −X direction, that is, moving leftward in the horizontal direction, and is an arrangement method in the X-axis direction that provides a compact arrangement area. If the element can be moved to the left only by slightly shifting it up and down when it is translated to the left, such a movement makes it possible to achieve a more compact arrangement.
[0064]
The range that can be arranged by this compaction may be determined based on the coordinates of the arranged elements, the area where the elements can be arranged, the design rules, and the like stored in the arrangement result file.
[0065]
As a restriction on compaction, elements belonging to the moving branch are packed to the left within a range not to the left of the X coordinate of the leftmost element belonging to the immediately preceding (or two) previously arranged branch. The condition of disposition may be added. In this case, the positional relationship of the elements on the circuit diagram is well preserved.
[0066]
The fitness evaluation unit 33 calculates the fitness of each solution candidate according to a predetermined evaluation function (step B3). For the evaluation function, for example, considering the rightmost coordinates of the rightmost element (element occupying the rightmost region) of the compaction of all elements belonging to the partial circuit to be arranged as a cost, this value is The evaluation function can be adopted as one evaluation index of the size of the area of the solution candidate. Therefore, for example, the fitness f (w) of the solution candidate w is
f (w) = (maximum cost related to area of all solution candidates in the current generation) − (cost related to area of open complement w)
May be defined as follows.
[0067]
In addition to the cost related to the area, an order cost and the like used for preserving the vertical relationship of the elements in the branch as much as possible are necessary. These will be described in detail in the second embodiment, and are omitted here.
[0068]
In step B4, if the number of processing loops is equal to or less than the predetermined number set in step A2 of FIG. 3, steps B5 to B7 are repeated to generate a new solution candidate group.
[0069]
In step B5, the selection unit 36 selects two solution candidates to be crossed out of all the solution candidates according to the selection probability determined based on the fitness for each solution candidate, and selects the two selected solution candidates. Are parent 1 and parent 2.
[0070]
In this case, for example, the selection probability P (w) of the solution candidate w is
P (w) = f (w) / (sum of all f)
May be given by
[0071]
As a selection method, the real number section [0, 1) is divided into numerical ranges according to the selection probability of each solution candidate (for example, [0, 0.1), [0.1, 0.3),. A solution candidate corresponding to a numerical range including a random number uniformly generated between [0.97, 1)) and [0, 1) may be selected (for example, if the random number is 0.15, If so, the second solution candidate is selected).
[0072]
In this case, assuming that solution candidate 1 is selected first and solution candidate 4 is selected next by a predetermined random number, solution candidate 1 is set as parent 1 and solution candidate 2 is set as parent 2 as follows. .
Figure 0003556260
In step B6, the crossover unit 37 performs crossover for exchanging the components of the selected parent 1 and parent 2 to generate child 1 and child 2, which are new solution candidates.
[0073]
The crossover is performed as follows for each branch included in the two selected solution candidates.
First, it is determined whether crossover is performed or not according to a crossover rate preset for each branch. Here, the crossover rate of each branch is lower, such as 0.2, 0.2, 0.5, 0.5, 0.8, for the branch located on the left, for example. Good.
[0074]
Next, crossover is performed only between branches that are determined to be crossed.
There are various methods for crossover, and a case where uniform crossover is performed will be described. Uniform crossing generates a mask pattern having a length equal to the number of elements in the corresponding branch by using a means for generating “0” or “1” with equal probability, and indicates “1” on the mask pattern. The component corresponding to the position is exchanged between parent 1 and parent 2.
[0075]
The following shows an example in which the second branch, the fourth branch, and the fifth branch from the left are uniformly crossed. The mask patterns generated at this time are “010”, “1101”, and “0011”.
Figure 0003556260
The mutation unit 38 performs a mutation operation, that is, an arithmetic operation, on each of the generated child 1 and child 2 (step B7).
[0076]
This mutation is performed as follows for each branch included in each solution candidate. First, it is determined whether a mutation is performed or not according to a mutation rate preset for each branch. The mutation for each branch may be lower for the branch located to the left, such as 0.1, 0.1, 0.3, 0.3, 0.5, similar to crossover .
[0077]
Next, the mutation is performed only in the branch that has been determined to be mutated.
Although various methods can be considered for the mutation, a method of adding a small value α to the value of one component randomly selected from within the branch may be used. Here, it is assumed that α is randomly selected from, for example, {+3, +2, +1, −1, −2, −3} each time a mutation is performed. However, in this case, in the case where the area that can be arranged is protruded by, for example, +3, the value is selected again from other values.
[0078]
Here is an example in which mutations have occurred in the third and fifth branches from the left of child 1 (for the third branch, -2 is added to the first component, and for the fifth branch, +1 is added to the fourth component).
[0079]
About child 1,
Figure 0003556260
It is.
[0080]
The mutation rate may be set so that an initial value is given, the value is gradually reduced every generation, and the value is close to 0 in the final generation.
Steps B5 to B7, that is, selection, crossover, and mutation are repeated until the same number of children as the number of solution candidates are generated. Then, the child group is set as a new generation solution candidate group (step B8).
[0081]
The above-described processing loop of generating a new generation solution candidate group (a loop of a predetermined number of steps B5 to B7), compacting the solution candidate group (step B2), and evaluating the fitness (step B3) is repeated. It is converged to a better solution candidate.
[0082]
Then, when the number of processing loops reaches the number set in step A2 in FIG. 3, the process exits the processing loop and proceeds to step B9 (step B4).
In step B9, the optimal solution selecting unit 35 selects a solution candidate having the highest fitness, that is, the lowest cost, from the solution candidates of the final generation as the best solution, and outputs data related to the solution candidate.
[0083]
In the above operation, after step B4 in FIG. 6, the fitness may be scaled before control is transferred from step B8 to step B5. Scaling is scaling up or down the determined fitness by some function. As scaling,
f '= af + b
Linear scaling may be used, or
f '= fk
Power scaling may be used.
[0084]
In the first embodiment, the partial circuit data extracting unit 20 extracts data relating to all m branches included in the target partial circuit to be placed each time, and sends the data to the element placement unit 30. As described above, the element placement unit 30 superimposes the data related to the branch included in the partial circuit to be placed at that time with the partial circuit to be placed next time. Necessary data related to (mn) branches is held, and the partial circuit data extraction unit 20 associates the n new branches with the n additional branches to be added to the next target partial circuit to be placed. Only the data to be processed may be extracted and provided to the element placement unit 30.
[0085]
As described above, according to the first embodiment, elements are arranged while scanning the entire circuit with a partial circuit to be arranged with a superimposed portion. Thus, for example, when the area occupied by the arranged elements is used for a cost function, it is possible to realize a high-density element area. Further, according to the present invention, an automatic element arrangement of a partial circuit to be arranged uses an arrangement method based on a genetic algorithm utilizing characteristics of branches, so that efficient element arrangement is possible.
[0086]
Hereinafter, a second embodiment will be described with reference to the drawings.
In the second embodiment, since the device configuration and an example of a circuit to be applied are the same as those in the first embodiment, the drawings and detailed description are omitted.
[0087]
The detailed operation procedure of the second embodiment will be described with reference to the flowcharts of FIGS. Here, the same operations as those in FIG. 3 and FIG.
[0088]
Data relating to a circuit diagram to be placed, such as element size and type, netlist, branch information, and the like, are read from the input unit 10 (step A1).
Through the input unit 10, the user can place an element shown as an outer frame in FIG. 9 showing an example of an automatic placement result of the circuit diagram of FIG. 2 implemented using the LSI element placement system according to the present invention. For the height and details of the region 60, parameters a, b, and n, which will be described later, or parameters related to the element placement unit 30 are set (step A2).
The initial solution candidate group generation unit 31 creates an initial generation solution candidate group (step B1). An example of the solution candidate group generated in the second embodiment is shown below.
Figure 0003556260
As in the first embodiment, one solution candidate includes 25 elements included in the partial circuit to be arranged (in the second embodiment, the entire circuit of FIG. 2 is described as one partial circuit). , Respectively, and from the left side of the sequence, R1, Q1, R2, Q2, R3, R4, Q3, R5,... Here, it is generally effective to use a value of 30 to 100 as the number n of solution candidates in each generation. In the second embodiment, the description will be made on the assumption that n = 50.
[0089]
The X coordinate determination unit 32 determines the X coordinate of each element that has not been determined in step B1 (step B2).
The fitness evaluation unit 33 evaluates the cost of each solution candidate according to a predetermined cost function (Step C1). Several types of cost functions are defined, and each is evaluated.
[0090]
The cost is the evaluation value of each solution candidate, and in the second embodiment, the description will be made on the assumption that the smaller the evaluation value, the better the solution candidate. Here, as examples of costs, costs related to the adjacency of elements (hereinafter, referred to as “pair costs”), costs related to the layout area, costs related to the virtual wiring length, and costs related to the vertical relationship of the elements in the branch (hereinafter, “order”) This is described using four types of costs.
[0091]
The pair cost is calculated based on the constraint condition regarding the adjacency of the elements input in step A2. The constraints on the adjacency of elements are, for example,
1. The element R2 and the element R4 are arranged as adjacent as possible.
2. The element Q8 and the element Q9 are arranged as adjacent as possible.
In such a condition, an arrangement allowable range is set in advance for two elements to be preferentially adjacent to each other, and, for example, an area of a portion outside the allowable range is set as a cost related to the two elements. Then, the costs relating to all the two elements to be preferentially adjacent to each other are calculated to obtain the sum, and that value is used as the cost.
[0092]
The cost related to the layout area is the same as in the first embodiment.
The cost related to the virtual wiring length is, for example, for each net, 1 / of the circumference of the smallest rectangle including all the terminals related to the net (however, when the minimum figure including all the related terminals is one line segment) Is its length), and its sum is the cost for all nets.
[0093]
The order cost is used to preserve the vertical relationship of the elements in the branch as much as possible. For example, when the magnitude relationship of the y-coordinates of the reference points of two vertically adjacent elements on the same branch is reversed, the order cost is shifted. Is the cost.
[0094]
The costs calculated by the cost function are ranked according to their importance, and the ranking is used in a selection operation described later. Here, it is assumed that the cost related to the layout area (cost 1), the cost related to the virtual wiring length (cost 2), the pair cost, and the order cost (cost 3) are in order of importance. It is assumed that pair costs and order costs are equally important.
[0095]
The selecting unit 36 performs a selecting operation on the solution candidate group using a probability based on the cost of each solution candidate (step C2). The selection operation will be described with reference to FIG.
[0096]
A set A consisting of a solution candidates is generated using the most important cost 1, that is, the cost related to the layout area (step D1). In this case, a> n, and here, a = 70.
[0097]
First, the fitness is calculated for each solution candidate using the cost 1 of the solution candidate. For the fitness, for example, the fitness f (w) of the solution candidate w is
f (w) = (the maximum value among the costs 1 of all solution candidates of the current generation) − (cost 1 of solution candidate w)
May be defined as follows.
[0098]
After the fitness is calculated for all n solution candidates, the probability of selecting each solution candidate is determined based on the fitness. For example, the selection probability P (w) of the solution candidate w is
P (w) = f (w) / (sum of all f)
May be given by
[0099]
Next, a solution candidates are selected from the n solution candidates using the selection probability P (w) of the solution candidate w. In this case, since the number a of elements in the set A is larger than the number n of elements in the original set of solution candidates, the set A always includes duplicate solution candidates.
[0100]
As for this selection method, a solution candidate may be selected by the same method as the selection method described in the first embodiment. Then, a random number is generated a times, and a set A including a corresponding solution candidates is generated.
[0101]
A similar operation is performed using the second most important cost 2, that is, the cost related to the virtual wiring length, to generate a set B including b solution candidates from a set A including a solution candidates (step). D2). Here, b <a and b> n, and in this case, b = 60.
[0102]
The same operation is performed using the cost 3, that is, the pair cost and the order cost. When there are several types of costs having the same degree of importance as described above, each cost is converted into a real value of, for example, 0 or more and 1 or less, and the sum is considered as cost 3, and the fitness is defined. Based on the selection probability based on the fitness, a set C including n solution candidates is generated from a set B including b solution candidates, and the selection operation is completed (step D3). Then, the set C including the n solution candidates is set as a parent set Z for the next crossover operation.
[0103]
Here, the crossover operation has been described using the costs 1 to 3 described above, but if there are two types of costs, step D2 may be omitted.
When there are four or more types of costs having different importance, a step corresponding to step D2 may be appropriately inserted. At this time, the above-mentioned operations are performed in order from the one having the highest importance. In this case, the number U (s) of solution candidates selected using the s-th most significant cost s is:
U (1)> ... U (s-1)> U (s)> U (s + 1) ...> n
What is necessary is to satisfy the relationship.
[0104]
Also, a plurality of costs for which relative weighting can be easily performed in advance may be regarded as one cost. For example, for a problem (arrangement target) that can be given so that the relative weight between the pair cost and the order cost is 4: 3, first, each cost is converted into a real value of 0 or more and 1 or less. The sum of four times the converted pair cost and three times the converted order cost may be regarded as one cost.
[0105]
The crossover unit 37 crosses the n parents, that is, the solution candidates included in the set Z generated by the selection operation, to exchange their components with each other, and generates n children as new solution candidates ( Step B6).
[0106]
First, n / 2 pairs are generated by grouping two parents included in the set Z. At this time, which parents are paired is arbitrary or random. These parent pairs
(Parent 1, parent 2), (parent 3, parent 4), ..., (parent n-1, parent n)
Expressed by In the second embodiment, since n = 50, 25 parent pairs, that is,
(Parent 1, parent 2) ... (parent 49, parent 50)
Is generated.
[0107]
Next, as in the first embodiment, a crossover operation is performed on each parent pair based on a preset crossover rate.
As described above, two children are generated from each parent pair, and a total of n children are generated. In the second embodiment, children 1 to 50 are generated.
[0108]
The mutation unit 38 performs a mutation operation on the n children generated by the crossover, as in the first embodiment (step B7).
It is determined whether the number of repetitions of a processing loop including a series of operations from step B2 to step B7 has reached a predetermined number. If not, the process proceeds to compaction in step B2 and the processing loop is repeated. The process moves to the end process of step C3 (step B4).
[0109]
A new solution candidate group is generated each time the processing loop makes a round, a better solution candidate is searched for, and the solution solution converges to an optimal solution or an approximate optimal solution.
A termination process is performed (step C3). Specifically, the same operation as the operation from step B2 to step C2 is performed, and a solution candidate having the minimum cost is selected as a solution from n solution candidates obtained by the selection operation.
[0110]
The output unit 50 outputs the contents of the arrangement result file to a predetermined device (Step A10).
As described above, according to the second embodiment of the present invention, a genetic algorithm is adopted as an optimization method, and a cost function is applied in an order according to its importance when selecting a solution candidate in each generation. Accordingly, since a method of sifting and narrowing down solution candidates is used, it is possible to efficiently obtain an optimal or approximate optimal solution for all cost functions.
[0111]
FIG. 9 shows an example of an automatic placement result of the circuit diagram of FIG. 2 implemented using the LSI element placement system according to the present invention.
Hereinafter, a third embodiment will be described with reference to the drawings.
[0112]
In the third embodiment, the device configuration and an example of a circuit to be applied are the same as those in the first embodiment, and thus the drawings and detailed description are omitted.
FIG. 10 is a flowchart showing a schematic operation of the third embodiment of the present invention, and FIG. 11 is a flowchart showing an outline of the genetic algorithm in the flowchart of FIG. 10. Basically, the same operation as FIG. Show. FIG. 12 is a diagram showing one arrangement result for the circuit diagram of FIG. 2 using the flowchart of FIG.
[0113]
Hereinafter, the schematic operation of the third embodiment will be described with reference to FIGS.
Data on a circuit diagram to be placed, such as element size and type, netlist, branch information, etc., parameters related to the element placement unit 30, and termination conditions used in step E5 are input (step E1). In this embodiment, the termination condition is, as shown in step E3, whether or not the total number of generations of the genetic algorithm for an arbitrary partial circuit to be arranged is equal to or less than the total number of generations k.
[0114]
The entire circuit diagram is divided into partial circuits to be arranged, each of which includes a plurality of branches (step E2). In the following description, for the sake of simplicity, it is assumed that all of the partial circuits to be arranged include three branches. Therefore, in the circuit of FIG. 2, three branches (R1, Q1, R2, Q2, R3), (R4, Q3, R5), (R6, Q4, R7), (R8, Q5, R9, Q6), (R10 , Q7, Q8, R11) and (Q9, R12) and three branches starting from (R13, Q10, R14, Q11). Without loss of generality, the third partial circuit to be placed is assumed to have three branches, assuming that the circuit continues on the right side of (R13, Q10, R14, Q11). The partial circuit to be arranged at the rightmost end may be composed of one or two branches, but it is not essential to describe such an exceptional case, so that it is omitted here.
[0115]
The genetic algorithm is activated for each of the partial circuits to be arranged divided as described above, and the arrangement is improved according to the schematic flowchart of FIG. 11 (step E3). The genetic algorithm in step E3 has the same number as the total number (q) of partial circuits to be arranged, and is executed in parallel by separate processors. Note that each genetic algorithm performs generation alternation by a predetermined number j. Here, j = 10. A specific description of the processing of the genetic algorithm shown in FIG. 11 will be described later.
[0116]
The third embodiment is an embodiment in which the information of the arrangement result of the adjacent partial circuit is referred to, for example, every j = 10 generations while each genetic algorithm is executed separately. This aims to consider the performance of the arrangement of the entire circuit. That is,
(I) Execute the genetic algorithm j = 10 generations for each partial circuit (step E3).
(Ii) The last generation for each subcircuit (ie, 10xi  The best allocation result of the generation (i = 1, 2,...) Is copied to the shared memory (step E4). Here, copying is an operation of overwriting previous data with new data.
The above steps E3 and E4 are repeated until the last generation becomes the total generation (step E5). That is, in step E5, it is determined whether or not the last generation is less than or equal to the total number of generations k. If it is less than or equal to the total number of generations k, the process proceeds to step E3, otherwise the process proceeds to the output of step E6 (step E5). Here, it is assumed that k = j × 100 = 10 × 100 = 1000. That is, the loop from step E3 to step E5 is repeated 100 times in total.
[0117]
When the genetic algorithm of step E3 is executed as a process following step E5, the genetic algorithm for the i-th (2 ≦ i ≦ q) placement target partial circuit is copied to the shared memory (i−1). The information of the placement result of the second partial circuit to be placed is referred to.
[0118]
If the determination in step E5 is NO, the best solution for each placement target partial circuit at that time, that is, information on the placement result for each placement target partial circuit that was last copied to the shared memory is output (step S5). E6). This determines the final layout coordinates for all elements of the circuit.
[0119]
The genetic algorithm of step E3 will be described according to the schematic flow of FIG. In the following description, a detailed description of the same operation contents as in the first embodiment will be omitted.
[0120]
Step E3 is characterized by the total number q of the partial circuits to be placed determined in step E2, and each is executed in parallel in the third embodiment according to the schematic flow of FIG.
[0121]
As in the first embodiment, an initial generation consisting of a plurality of solution candidates in which the y-coordinates are arranged is generated in accordance with the arrangement order of the elements for each branch belonging to the partial circuit to be arranged (step B1).
[0122]
The generation of the initial generation in step B1 is necessary only when the processing of step E3 is applied for the first time, and is not used in the processing loop of steps E3 to E5 after the first time.
[0123]
The same compaction as in the first embodiment is performed for each solution candidate to determine the x coordinate (step B2). In this case, in the third embodiment, a condition is added that compaction of a branch belonging to the first partial circuit to be placed must not exceed the left edge of the placement area as shown in FIG. For the compaction of the branches of the partial circuits to be placed after the second, when the processing of step E3 is applied for the first time, the same conditions as those for the first partial circuit to be placed are added. After the process, if the process of step E3 is applied again, the placement result of the left-side placement target partial circuit copied to the shared memory, that is, the (i−1) -th placement target partial circuit is compared with the placement result. The element is packed by compaction.
[0124]
According to the fitness function defined from the predetermined cost function, the fitness of each solution candidate is calculated in the same manner as in the first embodiment or the second embodiment (step B3). In the third embodiment, the cost relating to the virtual wiring length, the cost relating to the layout area, the order cost, the pair cost, and the like are summed up by, for example, weighting each cost, and the sum thereof is set as the cost of the solution candidate.
[0125]
The smaller the cost, the better. For example, the fitness f (w) of the solution candidate w is
f (w) = (maximum value of the costs of all solution candidates of the current generation) − (cost of solution candidate w)
Is defined as In the cost calculation for the i-th (i ≧ 2) placement target partial circuit, the cost due to the connection relationship between the i-th and (i−1) -th placement target partial circuit is also taken into consideration. For example, regarding the virtual wiring length, the length of the net connecting the i-th and (i-1) -th placement target partial circuits is also added. The information of the placement result of the (i-1) -th placement target partial circuit referred to here uses the information copied to the shared memory.
[0126]
Hereinafter, steps B5 to B8 are repeated to generate a new solution candidate group. According to the selection probability determined based on the fitness calculated in step B3, two solution candidates to be crossed are selected from all solution candidates (step B5).
[0127]
Crossover is performed on the parent 1 and parent 2 selected in step B5 based on a preset crossover rate to generate two children. These children are designated as child 1 and child 2 (step B6).
[0128]
The child 1 and the child 2 generated in step B6 are mutated based on a preset mutation rate (step B7).
Steps B5 to B7, that is, selection, crossover, and mutation are repeated until the same number of children as the number of solution candidates are generated (step B8). The group of offspring is defined as a new generation solution candidate group.
[0129]
Steps B3, B5, B6, and B7 may be replaced with steps C1, C2, B6, and B7 of the second embodiment, and the determination operation of step B4 may be located after the selection operation.
[0130]
The processing loop (generation) of generation of the new generation solution candidate group, compaction of the solution candidate group, and evaluation of the fitness is repeated j times to converge to a better solution candidate. The total number of generations for the i-th placement target partial circuit that is currently targeted, that is, the total number of processing loops since the processing in step E3 is first applied to the i-th placement target partial circuit is the above-mentioned designation. If the number reaches a multiple of the number j, that is, any of j, 2j, 3j,..., 100j, the process exits the processing loop and proceeds to the process of step B9. At step B4, a determination for that is made.
[0131]
In step B9, the solution candidate with the highest fitness, that is, the lowest cost in the last generation of the j processing loops up to that point is set as the best solution, and data on the solution candidate is output.
[0132]
The genetic algorithm of the above step E3 is executed in parallel for all the partial circuits to be arranged.
As described above, according to the third embodiment, the entire circuit is divided into partial circuits to be arranged, each of which includes a plurality of branches. By also referring to the information of the placement result of the best solution for each of the predetermined number of generations j of the partial circuits, each placement target of each placement target is considered while considering the relative relationship between the adjacent placement target partial circuits. Since the genetic algorithm is applied in parallel to the element arrangement of the partial circuit, a high-quality arrangement result considering the entire circuit can be obtained at high speed.
[0133]
Hereinafter, a fourth embodiment will be described with reference to the drawings.
In the fourth embodiment, the configuration of the device and an example of a circuit to be applied are the same as those in the first embodiment, and thus the drawings and detailed description are omitted.
[0134]
FIG. 13 is a flowchart showing the operation of the fourth embodiment of the present invention, FIG. 14 is a flowchart showing an outline of the adjustment of the y coordinate in the flowchart of FIG. 13, and FIG. 15 is a flowchart using the flowchart of FIG. 3 is a diagram showing an example of one arrangement result with respect to the circuit diagram of FIG.
[0135]
The operation of the fourth embodiment will be described with reference to FIGS. In FIG. 13, the same operations as those in FIGS. 3 and 6 are denoted by the same reference numerals, and the detailed description will be omitted.
As with the first embodiment, data on a circuit diagram to be placed, parameters relating to the element placement unit 30, parameters used in step F, and the like, such as element size and type, net list, branch information, etc., are input from the input unit 10 as in the first embodiment. Read (step A1).
[0136]
As in the first embodiment, for each branch belonging to the circuit diagram to be arranged, an initial generation including a plurality of solution candidates in which the y-coordinates are arranged and expressed in accordance with the arrangement order of the elements is generated (step B1).
[0137]
As in the first embodiment, compaction is performed for each solution candidate to determine the x coordinate (step B2).
According to the fitness function defined from the predetermined cost function, the fitness for each solution candidate is calculated as in the first embodiment (step B3). The cost function is the same as in the first to third embodiments.
[0138]
Hereinafter, steps B5 to B8 are repeated to generate a new solution candidate group. Steps B5 to B8 (except for step F) are the same as those in the first embodiment, and a detailed description thereof will be omitted.
[0139]
According to the selection probability determined based on the fitness calculated in step B3, two solution candidates (parent 1 and parent 2) to be crossed are selected from all solution candidates (step B5).
[0140]
The parent 1 and the parent 2 selected in step B5 are crossed in accordance with a preset crossover rate to generate children 1 and 2 (step B6).
The child 1 and the child 2 generated in Step B6 are mutated according to a mutation rate specified in advance, and a child 1 'and a child 2' are generated (Step B7).
[0141]
For each of the child 1 'and the child 2' generated in step B7, according to a predetermined probability δ, a pair of elements whose y coordinates are close to each other in an adjacent branch is searched. If there is, the operation of setting the y coordinate of the two elements to the same value (adjusting the y coordinate) is performed (step F).
[0142]
Steps B5 to F, ie, selection, crossover, mutation, and y coordinate adjustment are repeated until the same number of children as the number of solution candidates are generated (step B8). The group of offspring is a new generation solution candidate group.
[0143]
The processing loop (generation) of generation of the new generation solution candidate group, compaction of this solution candidate group, and calculation of the fitness thereof is repeated by a preset number of generations, and converges to a better solution candidate. Here, as a condition for exiting this processing loop, a condition that “all individuals have the same fitness” may be added in addition to the condition “when the number of generations reaches a preset number”.
[0144]
The information of the arrangement result of the best solution in the last generation, that is, the arrangement coordinates of each element is output (step B9).
Hereinafter, the adjustment of the y coordinate in step F will be specifically described with reference to FIG.
[0145]
The value of the parameter i used as the number of loops is set to 1 (step F1).
A real random number r of 0 or more and 1 or less is generated (step F2).
If r is smaller than the probability δ relating to the y-coordinate adjustment specified in advance, the process proceeds to step F4; otherwise, the process proceeds to step F6 (step F3). In this case, for example, if r = 0.4 and δ = 0.7, the process proceeds to step F4. The value of δ may be a constant over the entire generation of the genetic algorithm of FIG. 13 or may be dynamically changed, for example, it is gradually increased with each generation. When the number is increased, generally, the degree of alignment in the x direction increases toward the latter generation.
[0146]
The code of the i-th branch and the code of the (i + 1) -th branch are compared, and a pair y (i, k) and y (i + 1, h) whose absolute value of the difference between the y coordinates is 1 or more and p or less is searched for. When there are a plurality of sets, one set is selected at random (step F4).
[0147]
Here, y (j, m) is a symbol meaning the m-th element of the j-th branch. The value of p reflects the degree of proximity of the y coordinate, and in the present embodiment, p = 2 will be described. That is,
| Y (i, k) -y (i + 1, h) | = 1 or = 2
If, the k-th element in the i-th branch and the h-th element in the (i + 1) -th branch are determined to be close to each other.
[0148]
For example, when i = 1, the code of the first branch in child 1 'is
0 10 15 27 37
And the code on the second branch is
0 26 30
, When comparing the codes of the first and second branches, | y (1,4) −y (2,2) | = | 27−26 | = 1, so that It can be seen that the fourth element is close to the second element of the second branch.
[0149]
The method of searching for the adjacent pairs y (i, k) and y (i + 1, h) as described above is performed by, for example, the element y (i, a) of the i-th branch and the element y (i + 1) of the (i + 1) -th branch. , B) is randomly selected, and the operation of checking whether the absolute value of the difference between these two elements is not less than 1 and not more than p is repeated, for example, at most 10 times. If there is one that satisfies the condition, a method of adopting the pair as a close pair may be adopted. Alternatively, a method of checking all conceivable pairs and selecting one pair that satisfies the condition may be adopted although the check time increases.
[0150]
If the adjacent pairs y (i, k) and y (i + 1, h) are found in step F4, one of them is copied (overwritten) to the other (step F5). That is,
(A) copy the value of y (i, k) to y (i + 1, h), or
(B) Copy the value of y (i + 1, h) to y (i, k).
Which of (a) and (b) is executed is random. For example, when (a) is executed on the pair y (1,4) and y (2,2) used in the description of step F4, the code of the second branch of the child 1 'becomes
0 27 30
The fourth element of the first branch and the second element of the second branch are adjacent to each other in the sense that their reference points are located on the same horizontal line (y = 27). Will fit.
[0151]
As described above, it is assumed that the y-coordinate values of the two elements subjected to the y-coordinate adjustment are not changed again until the processing exits the loop of steps F2 to F7. Therefore, as an exception to the above selections (a) and (b), if y (i, k) is not allowed to change the value, (a) will be selected.
[0152]
As described above, the y-coordinate of the two elements once subjected to the y-coordinate adjustment is not changed again while i is less than the total number of branches, so that, for example, the code of the adjacent branch is
0 25 40; 0 26 36; 526
In the case of, useless operation of first adjusting the second value of the second branch "when i = 1" to 25 and then returning the value to "26 when i = 2" is avoided. Will be. For example, the code of the branch changes as follows.
0 25 40; 0 26 36; 5 26 (i = 1; execute (a))
→ 0 25 40; 0 25 36; 526 (i = 2; execute (b))
→ 0 25 40; 0 26 36; 526
If no adjacent pair is found in step F4, nothing is executed in step F5.
[0153]
One is added to the value of the parameter i (step F6).
The above operations of steps F2 to F6 are repeated (total number of branches -1) times (step F7). In the example of FIG. 2, 7-1 = 6 repetitions.
[0154]
In the method described in FIG. 14, the y-coordinate adjustment is sequentially performed from the left side of the branch by increasing the parameter i by one from the initial value 1. On the contrary, the initial value of i is set to ( A method of sequentially performing y-coordinate adjustment from the right side of the branch by reducing the number by 1 as the total number-1) may be used. Furthermore, a method of randomly selecting “the total number of branches × δ” i values of 1 or more and (total number of branches−1) or less, and performing the operations of step F4 and step F5 may be used.
[0155]
As described above, according to the fourth embodiment, when applying a genetic algorithm that takes advantage of the characteristics of a branch, by adjusting the y coordinate as one of the genetic operations, Since the element pairs that reduce the area and increase the ease of wiring gradually align in the x direction, it is necessary to efficiently obtain high-quality placement results with excellent alignment in the x direction. Becomes possible.
[0156]
The invention is not limited to the embodiments described above.
In the embodiment, the case of arranging the elements in order from the branch on the left side has been described. However, of course, the present invention can be similarly applied to the case of arranging the elements from the right side, and the same effects can be obtained.
[0157]
In FIG. 7, the judgment operation in step B4 is moved between the selection operation in step C2 and the crossover operation in step B6, and the end process in step C3 is set as the best solution selection process. Even if it is increased by 1, an equivalent flowchart is obtained.
[0158]
The genetic algorithm methods used in FIGS. 6, 7, 11 and 13 are very basic, and various other genetic algorithm methods are applicable. For example, it is possible to incorporate various techniques such as an elite strategy that leaves the best solution of the previous generation unconditionally in the next generation, scaling and expectation strategy to prevent falling into a local solution in the early generation. is there. In the first to fourth embodiments, when a new generation is generated, the same number (50) of children as the parent are generated from the number of parents (for example, 50), and a group of obtained children is obtained as a solution of the new generation. A candidate group is used. Instead of this method, for example, 20 children are generated and added to the parent group, and 50 individuals are selected in descending order of fitness from a group consisting of 70 solution candidates obtained. Of course, they may be used as a new generation solution candidate group.
[0159]
Further, the above embodiments have been described individually, but are not limited thereto. For example, the first and second embodiments, the first and second embodiments, the fourth embodiment, the third embodiment, and the like. The fourth embodiment, or the first and fourth embodiments can be freely combined and applied. In addition, a combination of the second embodiment and the third embodiment, or a combination of the second embodiment and the third and fourth embodiments is also possible.
Furthermore, the present invention is not limited to the above-described embodiments, and can be implemented with various modifications without departing from the scope of the invention.
[0160]
【The invention's effect】
According to the present invention, the following effects can be obtained.
According to the method and the device for arranging elements of an LSI according to the first aspect of the present invention, the number of sub-circuits less than m is determined for the partial circuit to be arranged composed of a predetermined number (for example, m) of branches. The elements are arranged with overlapping portions of (for example, (mn) branches). Therefore, according to the method and apparatus for arranging elements of an LSI according to the first aspect of the present invention, local optimization is continuously performed, so that element arranging in consideration of the entire circuit is possible. Combined with the element placement method using a genetic algorithm that takes advantage of, for example, when the area occupied by the placed elements is used for a cost function, the element area is increased in density, and a high-quality element placement result is obtained. It can be obtained efficiently.
[0161]
According to the above-described LSI element placement method and apparatus, when a genetic algorithm is adopted as an optimization method and a solution candidate in each generation is selected after the cost of each solution candidate has been evaluated, a cost function is selected. By applying the solutions in order according to their importance, the solution candidates are sieved and narrowed down, so that optimal or approximate optimal solutions can be efficiently obtained for all cost functions.
[0163]
Of the present invention2nd phaseAccording to the method and apparatus for arranging elements of an LSI according to the present invention, when applying a genetic algorithm taking advantage of the characteristics of a branch in the automatic arrangement of elements in an LSI, one of the genetic operations is performed as one of the genetic operations. For a code (chromosome), according to a predetermined probability, a pair of elements whose y coordinates are close to each other in an adjacent branch is searched, and if there is such a pair, the y coordinates of the two elements are determined to be the same. Perform the operation of setting the value. By this operation, the element pairs that are adjacent to each other and contribute to the reduction of the area and the ease of wiring are gradually aligned in the x direction, and finally the alignment in the x direction is improved. It is possible to efficiently obtain an excellent quality placement result.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of an LSI element placement device according to a first embodiment of the present invention.
FIG. 2 is an example of a circuit diagram to which an LSI element placement device according to the present invention is applied.
FIG. 3 is a flowchart showing an operation of the element arrangement device shown in FIG. 1;
FIG. 4 is an example of an automatic arrangement result of the circuit diagram of FIG. 2 implemented using the LSI element arrangement apparatus according to the present invention.
FIG. 5 is a diagram showing a schematic configuration of an element arrangement unit 30.
FIG. 6 is a flowchart showing in detail the operation of an element arrangement unit of the LSI element arrangement apparatus shown in FIG.
FIG. 7 is a flowchart showing the operation of the LSI device placement apparatus according to the second embodiment of the present invention.
FIG. 8 is a flowchart showing the operation of the selection means of the second embodiment.
FIG. 9 is an example of a result of automatic placement of the circuit diagram of FIG. 2 performed using the LSI element placement apparatus according to the present invention.
FIG. 10 is a flowchart showing processing steps according to a third embodiment of the present invention.
FIG. 11 is a flowchart showing an outline of a genetic algorithm in the flowchart of FIG. 10;
FIG. 12 is a diagram showing one arrangement result for the circuit diagram of FIG. 2 using the flowchart of FIG. 10;
FIG. 13 is a flowchart showing processing steps according to a fourth embodiment of the present invention.
FIG. 14 is a flowchart showing an outline of adjustment of ay coordinate in the flowchart of FIG. 13;
15 shows one arrangement result for the circuit diagram of FIG. 2 using the flowchart of FIG. 13;
[Explanation of symbols]
10 input unit, 20 partial circuit data extraction unit, 30 element placement unit,
31: initial solution candidate group generation unit, 32: X coordinate determination unit, 33: fitness evaluation unit
34: solution candidate group updating unit, 35: (approximate) optimal solution selecting unit, 36: selecting unit,
37 crossover part, 38 mutation part, 40 arrangement result file creation part,
50 ... output unit.

Claims (15)

回路図に含まれる素子列からなるブランチの並び順に従って素子を配置するLSI素子配置装置において、
前記回路図に含まれる所定数のブランチのデータを含む部分回路を、前記回路図の所定の端部側から順に抽出する部分回路データ抽出手段と、
部分回路データ抽出手段によって抽出された前記ブランチのデータに遺伝アルゴリズムを用いた素子配置操作を施して前記部分回路に含まれるブランチより少ない数のブランチの配置を演算により決定しながら、ブランチの配置座標データを順次記録していくことにより、前記ブランチのデータに含まれる全素子の配置座標データを含む素子配置結果を生成する素子配置手段と、を具備し、
前記部分回路データ抽出手段は、2回目以降の部分回路を読み出す場合には、前記素子配置手段で配置が未決定のブランチを含む部分回路を抽出することを特徴とするLSI素子配置装置。
In an LSI element placement device for arranging elements according to the order of branches composed of element rows included in a circuit diagram,
Partial circuit data extraction means for sequentially extracting a partial circuit including data of a predetermined number of branches included in the circuit diagram from a predetermined end side of the circuit diagram,
While performing an element arrangement operation using a genetic algorithm on the data of the branch extracted by the partial circuit data extraction means, the arrangement coordinates of the branches are determined by calculation to determine the arrangement of the branches having fewer branches than the branches included in the partial circuit. Element arrangement means for sequentially recording data to generate an element arrangement result including arrangement coordinate data of all elements included in the data of the branch,
An LSI element placement device, wherein the partial circuit data extracting means extracts a partial circuit including a branch whose placement has not been determined by the element placing means when reading out the second and subsequent partial circuits.
前記素子配置手段による前記素子配置結果に基づいて配置結果ファイルを作成する配置結果ファイル作成手段を更に具備することを特徴とする請求項1記載のLSI素子配置装置。2. The LSI element arrangement apparatus according to claim 1, further comprising an arrangement result file creating means for creating an arrangement result file based on said element arrangement result by said element arrangement means. 所定の第1の正の整数mと、前記第1の正の整数より小さい第2の正の整数nとを予めセットするセット手段を更に具備し、
前記部分回路データ抽出手段は、前記ブランチのデータを最初に抽出する場合には、前記ブランチのデータを前記回路図の前記端部から連続してm個抽出する手段と、2回目以降は、1つ前に抽出されたブランチのデータのうち前記端部側からn個を除いたブランチのデータを含めて連続してm個のブランチのデータを抽出する手段と、最後の抽出において、ブランチのデータがm個未満である場合には、全てのデータを抽出する手段とを含み、
前記配置結果ファイル作成手段は、前記素子配置手段で生成された前記素子配置結果に含まれるブランチのデータのうちから前記端部に最も近く位置する連続するn個のブランチのデータに含まれる素子に関連する素子配置結果のみを記録する手段と、最後の回は、前記素子配置手段で生成された前記素子配置結果に含まれる全素子に関連する素子配置結果を記録する手段とを含むことを特徴とする請求項2記載のLSI素子配置装置。
Further comprising setting means for presetting a predetermined first positive integer m and a second positive integer n smaller than the first positive integer,
When extracting the branch data first, the partial circuit data extracting means continuously extracts m pieces of the branch data from the end of the circuit diagram. Means for continuously extracting data of m branches including the data of the branch extracted from the end portion except for n branches from the data of the branch extracted immediately before; and, in the final extraction, the data of the branch. Is less than m, means for extracting all data,
The arrangement result file creating unit may include, among the data of the branches included in the element arrangement result generated by the element arrangement unit, the elements included in the data of the n consecutive branches closest to the end. The apparatus includes means for recording only the relevant element arrangement result, and the last time includes means for recording the element arrangement result relating to all the elements included in the element arrangement result generated by the element arrangement means. 3. The LSI element arrangement device according to claim 2, wherein
所定の第1の正の整数mと、前記第1の正の整数より小さい第2の正の整数nとを予めセットするセット手段を更に具備し、
前記部分回路データ抽出手段は、前記ブランチのデータを最初に抽出する場合には、前記ブランチのデータを前記回路図の前記端部から連続してm個抽出する手段と、2回目以降は、1つ前に抽出されたブランチのデータの前記端部側の次のn個のブランチのデータを抽出する手段と、最後の抽出において、ブランチのデータがn個未満である場合には、全てのデータを抽出する手段とを含み、
前記配置結果ファイル作成手段は、前記素子配置手段で生成された前記素子配置結果に含まれるブランチのデータのうちから前記端部に最も近く位置する連続するn個のブランチのデータに含まれる素子に関連する素子配置結果のみを記録する手段と、最後の回は、前記素子配置手段で生成された前記素子配置結果に含まれる全素子に関連する素子配置結果を記録する手段とを含むことを特徴とする請求項2記載のLSI素子配置装置。
Further comprising setting means for presetting a predetermined first positive integer m and a second positive integer n smaller than the first positive integer,
When extracting the branch data first, the partial circuit data extracting means continuously extracts m pieces of the branch data from the end of the circuit diagram. Means for extracting data of the next n branches on the end side of the data of the branch extracted immediately before, and, if the number of branches is less than n in the last extraction, all data Means for extracting
The arrangement result file creating unit may include, among the data of the branches included in the element arrangement result generated by the element arrangement unit, the elements included in the data of the n consecutive branches closest to the end. The apparatus includes means for recording only the relevant element arrangement result, and the last time includes means for recording the element arrangement result relating to all the elements included in the element arrangement result generated by the element arrangement means. 3. The LSI element arrangement device according to claim 2, wherein
前記素子配置手段は、前記部分回路データ抽出手段で抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の解候補を含む解候補群を生成する解候補群生成手段と、前記解候補群に関連する全素子の前記第1座標に対応する第1座標軸に対して垂直な第2座標軸の第2座標を各解候補毎に決定する第2座標決定手段と、前記第2座標が決定された各解候補の解の適応度を評価する適応度評価手段と、解候補群の中から適応度の最も良い解候補を解として選定して、前記回路図に含まれるブランチに関連する素子配置結果を出力する近似最適解選定手段とを含むことを特徴とする請求項1乃至請求項4記載のLSI素子配置装置。The element arranging unit includes a plurality of solution candidates including candidate values of predetermined first coordinates of all elements included in the branch data, using the data of the branch extracted by the partial circuit data extracting unit. Solution candidate group generating means for generating a solution candidate group; and a second coordinate of a second coordinate axis perpendicular to a first coordinate axis corresponding to the first coordinate of all elements related to the solution candidate group for each solution candidate. A second coordinate determining means, a fitness evaluation means for evaluating the fitness of the solution of each solution candidate for which the second coordinates have been determined, and a solution candidate having the best fitness from the solution candidate group. 5. The LSI element placement apparatus according to claim 1, further comprising an approximate optimum solution selection unit that outputs a result of element placement related to a branch included in the circuit diagram. 前記解候補群生成手段は、前記適応度が評価された解候補群と関連する適応度とに基づいて、2つの解候補を選択する選択手段と、前記選択された2つの解候補間で、所定数の成分を互いに交換する交叉手段と、前記交換が施された解候補の所定数の成分に所定の算術的操作を施す突然変異手段とを含むことを特徴とする請求項5記載のLSI素子配置装置。The solution candidate group generation unit includes a selection unit that selects two solution candidates based on the solution candidate group whose fitness is evaluated and a fitness value related to the solution candidate group. 6. The LSI according to claim 5, further comprising crossover means for exchanging a predetermined number of components with each other, and mutation means for performing a predetermined arithmetic operation on a predetermined number of components of said exchanged solution candidates. Element placement device. 前記解候補群生成手段は、前記部分回路データ抽出手段において抽出された前記ブランチのデータのうち、1つ前に行われた素子配置操作を行ったブランチのデータに関連する素子と重複するブランチのデータに関連する素子の前記第1座標の値をそのまま継承して当該解候補群を生成する手段を含むことを特徴とする請求項5記載のLSI素子配置装置。The solution candidate group generating means may include, among the data of the branch extracted by the partial circuit data extracting means, a branch overlapping with an element related to the data of the branch on which the previous element placement operation has been performed. 6. The LSI element placement apparatus according to claim 5, further comprising means for generating the solution candidate group by inheriting a value of the first coordinate of an element related to data as it is. 前記素子配置手段は、前記部分回路データ抽出手段で抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の解候補を含む解候補群を生成する解候補群生成手段と、前記解候補群に関連する全素子の前記第1座標に対応する第1座標軸に対して垂直な第2座標軸の第2座標を各解候補毎にコンパクション操作により決定する第2座標決定手段と、所定の確率に従い、前記解候補群の各解候補に対して、隣接する前記ブランチに含まれる素子のうち前記第1座標同士が近接する素子のペアを探索する探索手段と、前記近接する素子のペアが見つかった場合には、当該素子の第1座標値を同一値に調整する調整手段とを含むことを特徴とする請求項1乃至請求項4記載のLSI素子配置装置。The element arranging unit includes a plurality of solution candidates including candidate values of predetermined first coordinates of all elements included in the branch data, using the data of the branch extracted by the partial circuit data extracting unit. Solution candidate group generating means for generating a solution candidate group; and a second coordinate of a second coordinate axis perpendicular to a first coordinate axis corresponding to the first coordinate of all elements related to the solution candidate group for each solution candidate. A second coordinate determining means for determining by a compaction operation, and, according to a predetermined probability, for each solution candidate of the solution candidate group, an element of which the first coordinates are close to each other among elements included in the adjacent branch. 4. The apparatus according to claim 1, further comprising: a search unit that searches for a pair, and an adjustment unit that adjusts a first coordinate value of the element to the same value when the pair of adjacent elements is found. LS described in 4 Element arrangement device. 前記調整手段は、調整後の第1座標値に対して、新たな解候補群に対する第1座標の調整を行うまで前記第1座標の値を保持する手段を含むことを特徴とする請求項8記載のLSI素子配置装置。9. The method according to claim 8, wherein the adjusting unit includes a unit that holds the adjusted first coordinate value until the first coordinate of a new solution candidate group is adjusted. An LSI element arrangement device as described in the above. 前記素子配置手段は、前記配置対象の部分回路に含まれる各素子に対応する第1座標の候補値を、前記1端からのブランチの並び順及びそのブランチ内の素子の並び順に従って並べてコーディングした数値列を前記解候補として設定する手段を含み、
前記選択手段は、前記解候補に関連する適応度に基づいて各解候補毎に決定された確率に従って行う手段を含み、
前記交叉手段は、ブランチ毎に、そのブランチが前記配置対象の部分回路データ抽出手段によって当該配置対象の部分回路に新たに加えられた順番に基づいて決定される交叉率に従って行う手段を含み、
前記突然変異手段は、ブランチ毎に、前記順番に基づいて決定される突然変異率に従って行う手段を含むことを特徴とする請求項1記載のLSI素子配置装置。
The element arrangement means codes candidate values of the first coordinates corresponding to each element included in the partial circuit to be arranged in accordance with the order of the branches from the one end and the order of the elements in the branch. Means for setting a numerical sequence as the solution candidate,
The selecting means includes means for performing according to the probability determined for each solution candidate based on the fitness associated with the solution candidate,
The crossover means includes, for each branch, means for performing the branch in accordance with a crossover rate determined based on the order in which the branch is newly added to the partial circuit to be arranged by the partial circuit data extraction means to be arranged,
2. The LSI element placement apparatus according to claim 1, wherein said mutation means includes means for performing, for each branch, a mutation rate determined based on the order.
前記素子配置手段は、前記抽出手段で抽出された前記ブランチのデータを用いて、前記ブランチのデータに含まれる全素子の所定の第1座標の候補値からなる複数の第1解候補を含む第1解候補群を生成する初期解候補群生成手段と、前記各第1解候補毎に、少なくとも素子配置面積に関する第1コストと素子の位置関係に関する第2コストとを含む複数のコストをそれぞれ評価する評価手段と、前記第1解候補群から、前記各第1解候補毎に第1コストに基づいて所定の関数により選択確率を算出し、所定数より大きい複数の第2解候補の選択をして、前記第2解候補を含む第2解候補群を生成する第1生成手段と、前記第2解候補群から、前記各第2解候補毎に第2コストに基づいて所定の関数により選択確率を算出し、前記第1解候補の数より大きく前記第2解候補の数より小さい複数の第3解候補の選択をして、前記第3解候補を含む第3解候補群を生成する第2生成手段と、前記第2生成手段を、全てのコストについて最後の解候補群を生成するまで繰り返す手段とを含むことを特徴とする請求項1記載のLSI素子配置装置。The element arranging unit uses the data of the branch extracted by the extracting unit to include a plurality of first solution candidates including predetermined first coordinate candidate values of all elements included in the branch data. Initial solution candidate group generating means for generating one solution candidate group; and evaluating, for each of the first solution candidates, a plurality of costs including at least a first cost relating to an element arrangement area and a second cost relating to a positional relationship between elements. An evaluation means for calculating a selection probability from the first solution candidate group by a predetermined function based on a first cost for each of the first solution candidates, and selecting a plurality of second solution candidates larger than a predetermined number. A first generation unit configured to generate a second solution candidate group including the second solution candidate; and a predetermined function based on a second cost for each of the second solution candidates from the second solution candidate group. Calculate the selection probability and calculate the first solution candidate A second generation unit that selects a plurality of third solution candidates larger than the number of second solution candidates and generates a third solution candidate group including the third solution candidates; Means for repeating until the last solution candidate group is generated for all costs. 前記素子配置手段は、前記評価手段の実行前に前記第1解候補群に関連する全素子の第2座標を各第1解候補毎にコンパクション操作により決定する第2座標決定手段と、前記第3生成手段の実行後に、前記最後の解候補群に含まれる解候補の数の1/2組の解候補ペアを選択的に形成し、それぞれの前記解候補ペアをなす解候補間でいくつかの成分を互いに交換する交叉手段と、前記交換が施された前記各解候補の所定の成分に所定の算術的操作を施して、新しい解候補群を生成する突然変異手段と、前記突然変異手段で生成された新しい解候補群に対して、前記第2座標決定手段から突然変異手段を所定回数繰り返す手段とを更に含むことを特徴とする請求項11記載のLSI素子配置装置。A second coordinate determining unit configured to determine second coordinates of all elements related to the first solution candidate group by a compaction operation for each first solution candidate before execution of the evaluation unit; 3 After execution of the generating means, one-half solution candidate pairs of the number of solution candidates included in the last solution candidate group are selectively formed, and some of the solution candidate pairs forming each of the solution candidate pairs are selected. Crossover means for exchanging components of each other, a mutation means for performing a predetermined arithmetic operation on a predetermined component of each of the solution candidates subjected to the exchange to generate a new solution candidate group, and the mutation means 12. The LSI element placement apparatus according to claim 11, further comprising: means for repeating the mutation means from the second coordinate determination means a predetermined number of times for the new solution candidate group generated in the step (c). 前記評価手段は、素子の隣接性に関するコストと、素子面積に関するコストと、仮想配線長に関するコストとを更に含むコストを評価する手段を含むことを特徴とする請求項11又は請求項12記載のLSI素子配置装置。13. The LSI according to claim 11, wherein the evaluation unit includes a unit that evaluates a cost further including a cost related to an element adjacency, a cost related to an element area, and a cost related to a virtual wiring length. Element placement device. 前記第2座標決定手段は、コンパクション操作により、前記解候補に関連する各素子の第2座標を決定する手段を含むことを特徴とする請求項5記載のLSI素子配置装置。6. The LSI element placement apparatus according to claim 5, wherein said second coordinate determination means includes means for determining, by compaction operation, second coordinates of each element related to said solution candidate. 前記セット手段でセットする前記第1の正の整数m及び前記第2の正の整数nは、局所的に変動する値としてセットする手段を含むことを特徴とする請求項3又は請求項4記載のLSI素子配置装置。5. The apparatus according to claim 3, wherein said first positive integer m and said second positive integer n set by said setting means include means for setting as a locally fluctuating value. LSI device placement device.
JP00946194A 1993-02-12 1994-01-31 LSI element arrangement method and apparatus Expired - Fee Related JP3556260B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00946194A JP3556260B2 (en) 1993-02-12 1994-01-31 LSI element arrangement method and apparatus

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2446993 1993-02-12
JP5-43898 1993-03-04
JP4389893 1993-03-04
JP5-24469 1993-03-04
JP00946194A JP3556260B2 (en) 1993-02-12 1994-01-31 LSI element arrangement method and apparatus

Publications (2)

Publication Number Publication Date
JPH06314316A JPH06314316A (en) 1994-11-08
JP3556260B2 true JP3556260B2 (en) 2004-08-18

Family

ID=27278490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00946194A Expired - Fee Related JP3556260B2 (en) 1993-02-12 1994-01-31 LSI element arrangement method and apparatus

Country Status (1)

Country Link
JP (1) JP3556260B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4771925B2 (en) * 2006-11-30 2011-09-14 繁寿 中武 Integrated circuit design apparatus and integrated circuit design program
JP7220222B2 (en) * 2018-01-22 2023-02-09 ディー-ウェイブ システムズ インコーポレイテッド Systems and methods for improving analog processor performance

Also Published As

Publication number Publication date
JPH06314316A (en) 1994-11-08

Similar Documents

Publication Publication Date Title
US5465218A (en) Element placement method and apparatus
Tseng et al. A discrete particle swarm optimization for lot-streaming flowshop scheduling problem
Deb et al. Self-adaptive simulated binary crossover for real-parameter optimization
Xu et al. GoodFloorplan: Graph convolutional network and reinforcement learning-based floorplanning
Noman et al. Accelerating differential evolution using an adaptive local search
US6085032A (en) Advanced modular cell placement system with sinusoidal optimization
CN115758981A (en) Layout planning method based on reinforcement learning and genetic algorithm
CN102063536B (en) Collaborative design method for power/ground network and layout planning based on pattern matching
Yin et al. An exact schema theorem for adaptive genetic algorithm and its application to machine cell formation
Singha et al. Optimization of floor-planning using genetic algorithm
JP3556260B2 (en) LSI element arrangement method and apparatus
JP4755516B2 (en) Process organization method
Katayama et al. An evolutionary approach for the maximum diversity problem
Katz et al. You-only-randomize-once: shaping statistical properties in constraint-based PCG
Zhang et al. Analog module placement realizing symmetry constraints based on a radiation decoder
Chen et al. Fixed-outline floorplanning using robust evolutionary search
Xue et al. Escaping local optima in global placement
Liang et al. Solving cutting stock problems by evolutionary programming
Azizi et al. Hybrid simulated annealing in flow shop scheduling: a diversification and intensification approach
Shanavas et al. Evolutionary algorithmical approach for VLSI floorplanning problem
Furdu Genetic algorithm for ordered decision diagrams optimization
Cheng et al. CSF: Fixed-outline Floorplanning Based on the Conjugate Subgradient Algorithm Assisted by Q-Learning
Du et al. JigsawPlanner: Jigsaw-like Floorplanner for Eliminating Whitespace and Overlap among Complex Rectilinear Modules
Fortuna et al. Evolutionary optimization algorithms
JPH09106392A (en) Device and method for operating approximate function

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040303

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040408

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: 20040507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040512

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

Free format text: PAYMENT UNTIL: 20090521

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees