JP2004259105A - 集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 - Google Patents
集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 Download PDFInfo
- Publication number
- JP2004259105A JP2004259105A JP2003050676A JP2003050676A JP2004259105A JP 2004259105 A JP2004259105 A JP 2004259105A JP 2003050676 A JP2003050676 A JP 2003050676A JP 2003050676 A JP2003050676 A JP 2003050676A JP 2004259105 A JP2004259105 A JP 2004259105A
- Authority
- JP
- Japan
- Prior art keywords
- block
- agent
- floor plan
- fitness
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】最適で品質の高いフロアプランを短時間で作成でき、データや制約の変更に対しても大幅な変更なしに対応できるLSI用フロアプラン設計支援方法を提供すること。
【解決手段】フロアプラン全体を監視する戦略エージェント/その支配下で機能ブロック毎に用意されブロックの位置を管理するブロックエージェントを作成し、戦略エージェントがブロックの配置に関する制約を選択すると、各ブロックエージェントが各制約について対応する機能ブロックの制約に対する適応度をブロックの位置の関数として表す適応度関数を生成して合成し、合成した適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置する。戦略エージェントは、配置後にフロアプランの必要条件を満たすかを判断し、満たす場合にはフロアプランの設計を終了し、満たさない場合には制約を選択し直す。
【選択図】 図7
【解決手段】フロアプラン全体を監視する戦略エージェント/その支配下で機能ブロック毎に用意されブロックの位置を管理するブロックエージェントを作成し、戦略エージェントがブロックの配置に関する制約を選択すると、各ブロックエージェントが各制約について対応する機能ブロックの制約に対する適応度をブロックの位置の関数として表す適応度関数を生成して合成し、合成した適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置する。戦略エージェントは、配置後にフロアプランの必要条件を満たすかを判断し、満たす場合にはフロアプランの設計を終了し、満たさない場合には制約を選択し直す。
【選択図】 図7
Description
【0001】
【発明の属する技術分野】
本発明は、1チップ上に複数の機能ブロックが搭載されるLSI等の集積回路用のフロアプラン設計支援方法、この方法を実現するためのプログラム、及び装置に関する。
【0002】
【従来の技術】
この種の集積回路のフロアプラン設計支援方法としては、例えば特許文献1、特許文献2に記載のものが知られている。特許文献1に記載の自動フロアプランニング装置は、各ブロックの規模、配置を決定するフロアプランニング手段と、各ブロックの面積と配置位置から配線長を算出し、評価関数を利用してフロアプランの結果を評価する手段と、フロアプランを変更する3つの変更手段と、変更したフロアプランを評価し採用不採用を判定して、フロアプランの更新および繰り返しを行う制御手段とを備える。変更方法は、生起確率を与えて3つの変更手段から乱数を用いて選択される。
【0003】
また、特許文献2に記載のフロアプラン設計支援装置は、入力装置、出力装置、推論装置、表示装置、補助メモリ、フロアプラン推論機能がそれぞれ一つコンピュータ本体に接続または内蔵されて構成され、これらに付随してフロアプラン知識ルールのデータ、フロアプラン知識ルール、セルブロックのデータを備えている。フロアプラン概略図(手書き)を入力とし、回路特性、配置配線等に関する知識に基づくフロアプランルール、パターンレイアウトの設計ルールをもとに推論を行い、適切な配置配線をモディファイする。そして、モディファイされたフロアプラン図とアドバイスメッセージを出力する。
【0004】
【特許文献1】特開平6−244280号公報
【特許文献2】特開平2−264451号公報
【0005】
【発明が解決しようとする課題】
しかしながら、上述した特許文献1に記載された自動フロアプランニング装置では、フロアプランを最適にする変更手段が3つに固定されており、それらの手段からランダムに選ばれる。このランダム性のため、最短経路で最適解を得ることが難しい。
【0006】
また、特許文献2に記載されたフロアプラン設計支援装置では、推論機構が単一であるため処理速度が遅く、処理量の大きい大規模なLSIに対しては短時間で品質の高いフロアプランを得ることができない。
【0007】
さらに、LSI技術の向上に伴ってLSI設計用のCADソフトが改版されると、改版のたびにフロアプラン時に必要になるデータや、機能ブロックを配置する際に考慮する制約に変更・追加があるが、上述した従来の装置では、改版時に一度完成した従前のシステムに対して大幅な変更が必要となりコストがかかる。
【0008】
本発明は、上記の従来技術の課題に鑑み、最適で品質の高いフロアプランを短時間で作成することができ、しかも、CADソフトの改版時に必要とされるデータや配置の制約等に変更があった場合にも、システムの大幅な変更なしに対応できる集積回路用フロアプラン設計支援方法、及びこの方法を実現するための装置、プログラムを提供することを目的とする。
【0009】
【課題を解決するための手段】
この発明にかかる集積回路用フロアプラン設計支援方法は、上記の目的を達成させるため、1つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援方法において、チップのサイズ及び各機能ブロックの配置に関するデータを入力するデータ入力ステップと、フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で機能ブロック毎に1つずつ用意され、対応する機能ブロックのチップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、入力されたデータに基づいて戦略エージェントが機能ブロックの配置に関する制約を複数選択する制約選択ステップと、戦略エージェントにより選択された制約に基づき、各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、各ブロックエージェントが、合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、戦略エージェントが、配置ステップ後の各機能ブロックの配置がフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には制約選択ステップに戻って処理を繰り返すことを特徴とする。
【0010】
上記の構成によれば、階層的に組織された複数のエージェントを用いたマルチエージェント(「外部から制御されず,自身の規律に従って動作する実行主体が,複数集まって1つの機能を実現するシステム」)を応用することにより、最適な集積回路のフロアプランを自動的に作成すると同時に、システムへの機能追加や変更を容易に実現可能とする。
【0011】
また、終了判定ステップで必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、制約選択ステップで選択されていた制約の一部をより厳しくして適応度関数生成ステップからの処理を繰り返すようにしてもよい。
【0012】
さらに、各ブロックエージェントが単独で解決できない問題が生じた場合に、戦略エージェントは、制約選択ステップにおいて、各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより問題を解決するようにすることが望ましい。
【0013】
戦略エージェントによって与えられる制約は、例えば、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと(「重なり除去」)、機能ブロックがチップ上に配置されること(「チップ上配置)、の少なくとも1つを含む。
【0014】
ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理することが望ましい。この場合、適応度関数生成ステップでは、X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成すればよい。
【0015】
なお、本発明は、上記のような設計支援方法のみでなく、この方法を実現するための装置、あるいは、コンピュータをこのような装置として機能させるコンピュータプログラムとして実現することもできる。
【0016】
【発明の実施の形態】
以下、この発明にかかる集積回路用フロアプラン設計支援方法の実施形態を説明する。実施形態のフロアプラン設計支援方法は、1チップ上に複数の機能ブロック(ハードマクロ等を含む)を適正に配置するため、フロアプラン全体を監視する戦略エージェントと、この戦略エージェントの支配下で機能ブロック毎に1つずつ用意された複数のブロックエージェントとを用いた階層的なマルチエージェント構成を採用している。図1は、実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【0017】
フロアプラン設計支援装置は、図1に示すように、装置全体を制御するシステム制御部1と、チップのサイズ及び各機能ブロックの配置に関するデータをシステム制御部に入力するデータ入力部2と、システム制御部1に入力されたデータに基づいて機能ブロックの配置に関する制約を複数選択する戦略エージェント3と、戦略エージェント3の支配下で機能ブロックの位置を管理する複数のブロックエージェント4と、システム制御部1から戦略エージェント3に伝達される指令を中継するエージェントインターフェイス部5と、戦略エージェント3及びブロックエージェント4により決定されたフロアプランのデータを出力するデータ出力部6と、入出力データや処理の経過等を表示する表示部7とを備えている。
【0018】
データ入力部2からは、チップに関してはチップ名、高さ、幅、ピン位置、各機能ブロックについては、ブロック名、高さ、幅、配線に関してはネット名、接続ピン名等を含む設計データ、フロアプラン設計時の各機能ブロック配置の複数の制約からいずれの制約を選択するかのデータ、各機能ブロックの配置の決定に利用される適応度関数の生成・合成に関するデータ等が入力されてシステム制御部1に転送される。
【0019】
エージェントインターフェース部5は、システム制御部1からの指令を受け、単一の戦略エージェント3と、チップ上に配置される機能ブロックのそれぞれに対応した複数のブロックエージェント4とを生成し、戦略エージェント3に対してフロアプラン設計の実行を指令する。図2に示されるように、エージェントシステム全体への命令はエージェントインターフェース部5を通して戦略エージェント3のみに対して発せられる。戦略エージェント3は、機能ブロックの配置に関する制約と、この制約を満たすために生成される適応度関数の傾き(詳しくは後述)をブロックエージェント4に渡すことにより、ブロックエージェント4を制御する。
【0020】
戦略エージェント3は、ブロックエージェント4の状態やLSI特性、フロアプランの進行状況、チップ制約など一つのブロックデータからは判別できないフロアプラン全体の構成をグローバルな視点から監視する。また、戦略エージェント3は、ブッロクエージェントを制御して実行を開始させ、停止させ、あるいは、ブロックエージェント4に与える制約を設定する。具体的には、機能ブロックの配置に関する制約を複数選択すると共に、適応度関数の傾きも選択する。
【0021】
戦略エージェント3で使用する知識(戦略エージェント知識)は、上記の制約や、傾き等の選択条件のデータ入力部2から入力された情報に基づいて作成される。戦略エージェント知識には、フロアプラン設計に必要な全ての制約、その中で絶対満たさなければいけない制約(終了条件制約)、制約の選択条件、及び選択からの除外時間が含まれる。
【0022】
ブロックエージェント4は、チップ上に配置される機能ブロック毎に1つずつ用意され、互いに直交するX軸、Y軸の二次元座標を用いて対応する機能ブロックの適正な配置位置を求める。ブロックエージェント4は、X軸、Y軸の各軸別に1つの制約に対して1つ又は複数の適応度関数を生成する適応度関数生成部8と、生成された適応度関数をX軸、Y軸の各軸別について、それぞれ1つに合成して合成適応度関数を生成する適応度関数合成部9とを備えている。適応度関数合成部9は、生成された適応度関数を状況に応じて論理積や論理和等の適切な演算により合成する。
【0023】
これらの適応度関数生成部8、合成部9で利用される知識(ブロックエージェント知識)は、外部のファイルやデータ入力部を介して入力された適応度関数生成・合成データに基づいて作成される。適応度関数は、特定のブロックエージェント4に対応する自ブロックの位置と制約の解消度(適応度)とをX軸とY軸とに射影した式である。各ブロックエージェント4は、適応度関数のみを用いて各機能ブロックの配置を決定する。なお、ブロックエージェント4は、現在までの状況やフロアプランの進行状況に合わせて、作成する適応度関数を許容範囲内で修正することができる。
【0024】
データ出力部6は、フロアプラン設計処理の結果データと、処理の履歴を記録したログファイルとを出力する。表示部7は、生成・修正された適応度関数や合成適応度関数を表示し、経過や問い合わせに対する回答を表示する。
【0025】
次に、ブロックエージェント4の適応度関数生成部8において生成される適応度関数の定義の具体例について説明する。実施形態では、各ブロックエージェントに与えられる制約として、「チップ上配置」(機能ブロックがチップの上に配置されなければならないという制約)、「重なり除去」(各機能ブロックは互いに重複してはならないという制約)、そして、「配線距離」(各機能ブロック間、機能ブロックとチップの端子間の配線はできる限り短い方がよいという制約)の3種類を用いる。各ブロックエージェント4は、これらの各制約について達成度を評価するための適応度関数を生成する。以下、各制約に関する適応度関数の生成について説明する。
【0026】
最初に座標系の定義を説明する。各ブロックエージェントは、図3(A)に示すように、長方形のチップ基板の一方の辺をX軸、これと直交する辺をY軸とする二次元座標を用いて対応する機能ブロックの位置を管理する。ここではチップの図中左上の角を原点(0,0)とし、右側に向かってX座標が増加し、下側に向かってY座標が増加するものとする。右下の角の座標を(XEnd,YEnd)とする。
【0027】
チップ上に配置される長方形の機能ブロックAについては、左上の角の座標(AX,AY)と、X軸方向のサイズALX、Y軸方向のサイズALYとによりチップ上で占める場所が特定される。適応度関数は、このブロックAの左上の座標(AX,AY)がどのような値をとるときに、各制約をどの程度満足させることができるかを示す関数である。適応度関数は、制約を完全に満たすときに最大値「1」、制約を全く満たしていないときに最小値「0」をとるように定義される。
【0028】
例えば、図3(A)の例でブロックAのX軸方向における「チップ上配置」の制約に関する適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint2より大きい側では「0」、Point1とPoint2との間では「1」となる。適応度関数は、関数の値が変化するポイントを順番に羅列して生成される。各ポイントについて、
PointX=(X座標、1つ前のPointから当該Pointまでの値、傾きの有無)
のデータが中間データとして格納され、これに基づいて適応度関数が生成される。「傾きなし(N)」とは、適応度関数に「0」と「1」以外の値を許容しない場合であり、制約を満たさない場合を全て同一の状態として捉えることを意味する。これに対して「傾きあり(A)」とは、適応度関数の「0」と「1」との間に中間値を認めて徐々に変化させる場合であり、制約を満たさない場合にも、その満たさない程度を関数値に反映させることを意味する。「チップ上配置」の制約については、傾きは考慮しない。
【0029】
図3の例における「チップ上配置」の制約については、
Point1=(0, 0, N),
Point2=(XEnd−ALX, 1, N),
Point3=(XEnd, 0, N)
のデータを与えることにより適応度関数が生成される。
【0030】
次に、「重なり除去」の適応条件に関する適応度関数の生成につき、図4及び図5を参照して説明する。なお、図4は「傾きなし」、図5は「傾きあり」の場合を示す。
【0031】
図4(A)に示すように、チップ(図示せず)上にブロックAとブロックBとを配置する場合、ブロックAの配置位置を決定するブロックエージェント4は、ブロックBを既存の位置で固定して考え、自ブロックAを図中左側から右側に移動させた際にAXがどのような値をとるときにブロックAの右端がブロックBの左端と重なり、どのような値をとるときに重なりが解消されるかを適応度関数として表す。
【0032】
図4(A)の例でブロックAのX軸方向における「重なり除去」の制約に関する「傾きなし」の適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint2より大きい側では「1」、これらの間では「0」となる。そこで、図4(B)の例における「傾きなし」の「重なり除去」の制約については、Point1=(BX−ALX, 1, N),
Point2=(BX+BLX, 0, N),
Point3=(XEnd, 1, N)
のデータを与えることにより適応度関数が生成される。
【0033】
同様に、図5(A)の例でブロックAのX軸方向における「重なり除去」の制約に関する「傾きあり」の適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint3より大きい側では「1」、Point1からPoint2にかけてはAXが増加するにしたがって「1」から漸減し、Point2の位置で「0」、そして、Point2からPoint3にかけてはAXが増加するにしたがって「0」から漸増する。そこで、図5(B)の例における「傾きあり」の「重なり除去」の制約については、
Point1=(BX−ALX, 1, N),
Point2=(BX−ALX+(ALX+BLX)/2, 0, A),
Point3=(BX+BLX, 1, A),
Point4=(XEnd, 1, N)
のデータを与えることにより適応度関数が生成される。
【0034】
なお、図4、図5の例では、X軸方向の適応度関数の生成についてのみ説明したが、同様にしてY軸方向についても適応度関数が生成される。また、上記の例では特定のブロックエージェントが対象とする1つの機能ブロック(自ブロック)に対して他ブロックを1つのみ示したが、実際には他ブロックが多数存在するのが一般的である。そのような場合には、他ブロック1つに対して1つの適応度関数を生成し、1つの自ブロックに対して他ブロックの数だけ適応度関数が生成される。さらに、「重なり除去」の制約に関する適用度関数には「傾きあり」の例も示したが、これは設計途中で制約を緩和してレイアウトの自由度を確保するためであり、最終的なフロアプランとして出力される場合には、機能ブロックが重なることは許されないため、終了条件制約としては「重なり除去」の制約も「チップ上配置」の制約も「傾きなし」で満たされる必要がある。
【0035】
「配線距離」の適応条件に関する適応度関数については個別の図示を省略するが、自ブロックに接続される配線1本ごとにX軸、Y軸に関する適応度関数が1つずつ生成される。配線距離は短いほど望ましいが、上記の「チップ上配置」の制約や「重なり除去」の制約と比較すると、クリティカルな境界は存在しない。したがって、最終的なフロアプランを出力する際にも、「傾きあり」の条件で考慮すればよい。
【0036】
各ブロックエージェント4の適応度関数合成部は、全ての制約に関する適応度関数をX軸、Y軸ごとに合成して合成適応度関数を得る。関数が1制約・1軸につき複数個生成された場合は、1制約・1軸ごとに適応度関数合成部に関数全部を渡し、関数合成データの条件によって合成を行う。例えば、「チップ上配置」及び「重なり除去」の制約に関しては複数の適応度関数の値を積算して制約単位の合成適応度関数とし、「配線距離」の制約に関しては複数の適応度関数の値を加算して制約単位の合成適応度関数とする。
【0037】
その後、再び適応度関数合成部9を使用し、制約ごとに求めた合成適応度関数を全て軸ごとに合成し、当該ブロックに関する総合的な合成適応度関数を求める。合成方法は、例えば、自ブロックの重なり面積が10%未満、且つ、「重なり除去」の「傾きなし」が選択されている場合には、制約毎単位の合成適応度関数の値の論理積を総合的な合成適応度関数とし、「重なり除去」の「傾きあり」が選択されている場合には、制約毎単位の合成適応度関数の値の加算を総合的な合成適応度関数とする。
【0038】
図6(A)は、チップ上に2つの機能ブロックA,Bを配置した例を示している。これらのブロック間には1本の配線が接続されている。ブロックAを着目するブロックエージェント4により配置される自ブロック、ブロックBを他ブロックとする。図6(B),(C),(D)は、X軸方向に関する各種の適応度関数を示す。図6(B)は、図5(B)に示したものと同様の「重なり除去(傾きあり)」の制約に関する適応度関数、図6(C)は、図3(B)に示したものと同様の「チップ上配置」の制約に関する適応度関数、図6(D)は「配線距離」の制約に関する適応度関数の値をそれぞれ示している。図6(E)は、これら3つの制約単位の適応度関数の論理積として求められた総合的な合成適応度関数、図6(F)は、これら3つの制約単位の適応度関数を加算して求められた総合的な合成適応度関数を示す。
【0039】
ブロックエージェント4は、軸ごとに生成された2つの合成適応度関数を用い、関数の値が最も高い地点に自ブロックAを配置し、結果を中間データに反映させる。この際、ブロックエージェント4は、配置距離の差分(前回の配置位置の座標と、今回の配置位置の座標との差分)のログを取っておき、ブロック情報の一部として利用する。中間データは、ブロックエージェントの働きによって刻々と変化する各機能ブロックの位置をX軸、Y軸の二次元座標として保持している。各ブロックエージェントは、対応する機能ブロック(自ブロック)の位置をポインタに基づいて中間データから読み込むと共に、「重なり除去」の条件を考慮する際に必要となる他ブロックの位置をポインタに基づいて中間データから読み込む。また、中間データを適時、データ出力部6や表示部7に渡すことにより、フロアプラン・ログデータを画面等に出力してもよい。
【0040】
次に、図7〜図9に示すフローチャートにしたがって、実施形態の装置の作用を説明する。図7は、全体の制御の流れを示すメインのフローチャート、図8は、エージェント部による適応度関数生成、合成のサブルーチン、図9は、ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンを示す。
【0041】
ステップS1では、データ入力部2を介してフロアプラン設計に必要なデータが入力される。ステップS2では、システム制御部1がエージェントインターフェース部5を通して、戦略エージェント3、ブロックエージェント群4を作成する。同時に、戦略エージェント3は、知識である制約条件データを読み込み、ブロックエージェント群4は、知識である適応度関数定義・修正・合成データを読み込み、各エージェントの知識も作成する。ブロックエージェントの知識には、適応度関数の定義と制約を緩める条件と割合、合成方法の選択条件が含まれている。更に、ブロックエージェントには適応度関数生成部8、適応度関数合成部9を持たせる。
【0042】
ステップS3では、戦略エージェント3がフロアプランの基本的な制約やLSIのチップ特性などから加わる制約と適応度関数の傾きを選択する。選択時にはエージェント特有の知識と推論を利用することで、複数の条件からの選択を可能とする。また、選択時に、ブロックエージェントの状態などや、フロアプラン全体の進行状況、チップ上の状況を考慮することで、ブロックエージェント4がループに陥ることを防ぐ。選択方法は、戦略エージェント3が、ブロックエージェント4の状態と、中間データ上にあるチップ情報等を判断基準として用いて、知識から制約と傾きを選択する。その後、戦略エージェント3がブロックエージェントに制約を与え、実行を開始させる。
【0043】
制約の選択基準の具体例を以下に示す。例えば、「重なり除去」(傾きなし)の制約は、全ブロックの重なり割合が10%未満、配置回数が20回以上の時、連続選択回数5回未満、ループ状態(後述する)を発見していないという3つの条件を全て満たす場合に選択される。また、「重なり除去」(傾きあり)の制約は、「重なり除去」(傾きなし)が非選択であり、且つ、ループ状態を発見していない場合に選択される。「チップ上配置」(傾きなし)の制約は、ブロックエージェントの繰り返し回数が20回を超えている場合に選択される。また、「配線距離」の制約については、一度終了条件を満たした場合は傾きを半分にする。
【0044】
ステップS4では、各ブロックエージェント4が戦略エージェント3から与えられた制約と傾き、中間データ、ブロックエージェントの状態等を適応度関数生成部8に与え、適応度関数を生成する。ブロックエージェントの状態とは、前回の行動、同様な行動の繰り返し回数等の情報を示す。適応度関数の作成(生成・合成)フローチャートを図8に示す。
【0045】
図8のフローチャートでは、ステップS101で各制約、X・Y軸、必要なら対応ブロックごとに各軸に射影した上限1、下限0とする適応度関数を生成する。関数の生成方法は、前述のように、適応度関数の変化(適応度関数の変化するPointと適応度)を関数定義データから入手し、このデータと、中間データから、X軸方向、Y軸方向それぞれに射影した関数を全ブロックについて生成する。
【0046】
ステップS102では、必要に応じて自ブロックの現在までの状況とブロックの情報を元に適応度関数に修正を加える。例えば、戦略エージェント3が制約をゆるくした方がいいと判断した場合には、極小(=0)としていた値に一定の値を加算して傾きを緩めることにより制約を緩くすることができる。例えば図10は、「重なり除去」の制約を「傾きあり」で考慮する際に、極小値に一定の値を加算する例を示している。図10(A)は、図5(B)と同様の加算なしの状態、図10(B)は極小値に0.2を加算した状態、図10(C)は極小値に0.5を加算した状態を示す。これらの加算値は、適応度関数修正データを基準にして戦略エージェント3が判断する。加算することにより、極小値が0でなくなるため、他の制約との兼ね合いで重なりがある位置が選択される可能性が高くなる。
【0047】
修正は、例えば「重なり除去」(傾きあり・なし)の制約については、ブロックエージェントの繰り返し回数が10回を超えている場合に0.2を加算し、「チップ上配置」(傾きなし)の制約については、自ブロックの平均配線距離がチップ辺半分以上の場合に極小値に0.2を加算し、ブロック位置がチップ周辺部であり、且つ、全ブロックの重なり割合が10%以上の場合に極小値に0.2を加算し、配置差分の距離が連続20回「0」になっている場合に極小値に0.2を加算する。修正による制約緩和は、1イテレーション、すなわち、全ブロックエージェントが一回ずつ配置処理を実行する間であり、その時間が経過すると修正は取り消される。
【0048】
ステップS103では、各軸の適応度関数を制約毎に加算して制約単位の合成適応度関数を生成し、ステップS104では、これらを軸毎に合成して総合的な合成適応度関数を生成し、ステップS105では、合成された結果の関数を出力して図7のフローチャートに戻る。
【0049】
図7のステップS5では、合成適応度関数に基づいて各ブロックエージェント4が各機能ブロックを関数値の最も高い位置に配置する。続いてステップS6では、ブロックエージェント4がループ状態(機能ブロックが複数の特定位置に繰り返し配置され、最適位置に落ち着かない状態)に陥っていないか否かを判定する。判定のフローチャートは図9に示されている。
【0050】
図9のステップS201では、対象となる機能ブロックが前回から移動したか否かを判断する。移動していなければ、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。移動した場合には、ステップS202において現在位置と同じ位置に配置されたことがあるか否かをログから検索する。ここでは、M回分の位置のログを確保しておく。
【0051】
ステップS203では、同じ位置を発見したか否かを確認する。発見されない場合には、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。N回前に発見された場合には、i回前の位置P(i)と(i+N)回前の位置P(i+N)とを比較する。この比較をiが0〜(N−1)になるまで繰り返す。ここで、Nの最大値は M /2とする。
【0052】
ステップS204の比較の結果、全てが同じ位置であった場合(S205, Yes)には、ループ状態に陥っていると判断できるため、「ループ発見」を戻り値に図7のフローチャートに戻る。全てが同じ位置でなかった場合(S205, No)には、ステップS206でさらに前のログに同じ位置がないか否かを判断する。同じ位置がなければ(S206, No)、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。N回前に同じ位置が発見された場合には、再びステップS204に戻って比較処理を繰り返す。
【0053】
図7のステップS7では、図9のフローチャートからの戻り値により、ループを発見したか否かを判断する。ループを発見していなければ(S7、No)、ステップS8で戦略エージェント3が、ブロックエージェント4の状況を見て、フロアプランの設計が完成したかどうか終了判定を行う。終了条件は、フロアプランで最低限満たさなければいけない必要条件である制約、すなわち前記のように少なくとも「重なり除去」(傾きなし)、「チップ上配置」(傾きなし)を満たしているに満たされる。ループが発見された場合(S7, Yes)、及び終了条件を満たしていない場合(S8, No)には、再度、ステップS3で戦略エージェント3が制約を選択するところからやり直す。
【0054】
終了条件を満たしている場合(S8, Yes)には、戦略エージェント3はフロアプランの完了と判断してフロアプラン設計処理を一時停止させ、システム制御部1がユーザにフロアプランを終了してよいか否かを問合せる。もし、ユーザからOKが出れば、フロアプラン設計処理を終了する。OKでない場合には、戦略エージェント3は、例えば「配線距離」の制約について前記の条件「一度終了条件を満たした場合は傾きを半分にする」にしたがって制約をより厳しく設定し(S11)、ステップS4からの処理を続ける。
【0055】
制約選択の例として、選択時に一時的に特定の条件を選択しないことで、ブロックエージェント4だけで解決できない場面を戦略エージェント3が解決する例を図11〜図13に示す。
図11は、配線距離が長すぎて前述した「自ブロックの平均配線距離がチップ辺半分以上」の制約を満たすことができず、ブロックエージェント4がチップ上配置の制約を緩めた場合と、一定時間がたち、制約を戻した場合とで2つの位置の間を交互に移動してループ状態に陥っている。このような状態は、図9に示すループ発見の処理により戦略エージェント3により発見される。
【0056】
ループ状態は、ブロックエージェント4のログの位置情報から発見する。例えば、以下のようなログが記録されていれば、ループ状態を発見することができる。
P(0) = (70, 50)
P(1) = (10, 20)
P(2) = (10, 20)
P(3) = (70, 50)
P(4) = (70, 50)
P(5) = (10, 20)
P(6) = (10, 20)
P(7) = (70, 50)
【0057】
ループ状態が発見されているため、「重なり除去」を選択する前記の条件「ループ状態を発見していない」を満たすことができず、戦略エージェント3は「重なり除去」の制約を除外する。これより、ブロックエージェント4は、図12に示すように、ブロック同士の重なりを考慮せずに、自ブロックを配置することができる。これによりループ状態を脱するため、戦略エージェント3は「重なり除外」の制約を選択する。これにより、図13に示すように、他ブロックが移動して重なりが解消されている。このような制約の選択・除外により、フロアプラン全体をより適切な配置にすることができる。
【0058】
また、戦略エージェント3が制約を緩くすることにより、ブロックエージェント4のみでは解決できない問題を解決する例を図14〜図17に示す。図14はフロアプラン設計の所定の中間段階における各ブロックの配置を示す。配線距離が長いため、好ましい状態ではないが、ブロックエージェントのみでは、自ブロックは図14の状態で安定して移動しない。そこで、「配置差分の距離が連続20回「0」になっている」(つまり、動かなかった)ことがログから明らかになると、「チップ上配置」の制約が極小値に0.2加算することにより緩和される。これにより、ブロックエージェント4は、チップ上配置の制約を深く考慮に入れずに配線距離を短縮するよう自ブロックを配置する。配線の最短化のために、図15の配置が一時的に得られるが、他ブロックが移動して図16の状態となり、1イタレーション後、「チップ上配置」の制約が戻ると、図17の配置となる。このような処理により、「チップ上配置」の制約を満たしつつ、図14と比較して配線距離を短くすることができる。
【0059】
上述した実施形態の構成によれば、設計者のノウハウが知識として組み込まれたマルチエージェントを利用しているため(エージェントの自律性、社会性)、状況に応じた判断で、選択や修正を行うことができる。そのため複数の制約全てを考慮した、妥当なフロアプランを生成できる。また、機能ブロックの配置決定には適応度関数しか利用しないため、LSI設計手法の変更、個別対応、誤動作による修正等に伴ってLSI設計用のCADソフトが改版された場合にも、適応度関数生成・修正・合成データと、制約選択データとを修正するだけで対応できるため、従来のようなシステムの大幅な変更は不要となり、改版時のCADシステム設計者の負担を軽減させることができる。また、知識である制約選択条件や適応度関数生成・修正・合成の方法は、外部ファイルから読み込むことでシステムの修正なしに追加、削除、修正が容易となる。
【0060】
さらに、従来は初期状態を適切に生成しないと、後の最適化が困難であったが、実施形態の装置では、各機能ブロックを重ねて同一箇所に配置するような初期状態から、適用度関数を用いて各ブロックを移動させることにより、最適な配置が可能となる。
【0061】
なお、上記の実施形態では、制約条件として、「重なり除去」、「チップ上配置」、「配線距離」の3条件を主として例示したが、他の条件を合わせて考慮してもよい。例えば、各機能ブロックの動作するクロック周波数を制約条件として含むこともできる。また、チップの特定部分のみの使用を避けるため、チップ内の区域別の使用率を制約条件として含めてもよい。
【0062】
(付記1) 1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援方法において、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援方法。
【0063】
(付記2) さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記1に記載の集積回路用フロアプラン設計支援方法。
【0064】
(付記3) 前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記1又は2に記載の集積回路用フロアプラン設計支援方法。
【0065】
(付記4) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記1〜3のいずれかに記載の集積回路用フロアプラン設計支援方法。
【0066】
(付記5) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記1〜5のいずれかに記載の集積回路用フロアプラン設計支援方法。
【0067】
(付記6) コンピュータを、1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置として機能させる集積回路用フロアプラン設計支援プログラムにおいて、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記戦略エージェントが入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援プログラム。
【0068】
(付記7) さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記6に記載の集積回路用フロアプラン設計支援方法。
【0069】
(付記8) 前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記6又は7に記載の集積回路用フロアプラン設計支援プログラム。
【0070】
(付記9) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記6〜8のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【0071】
(付記10) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記6〜9のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【0072】
(付記11) 1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置において、
装置全体を制御するシステム制御部と、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを前記システム制御部に入力するデータ入力部と、
前記システム制御部に入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択し、フロアプラン全体を監視する戦略エージェントと、
該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントと、
前記戦略エージェント及びブロックエージェントにより決定されたフロアプランのデータを出力する出力手段とを備え、
前記各ブロックエージェントは、前記戦略エージェントが選択した複数の制約を受け取り、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成部と、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成部とを備え、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置ことを特徴とする集積回路用フロアプラン設計支援装置。
【0073】
(付記12) 前記戦略エージェントは、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより、前記各ブロックエージェントが単独で解決できない問題を解決することを特徴とする付記11に記載の集積回路用フロアプラン設計支援装置。
【0074】
(付記13) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記11または12に記載の集積回路用フロアプラン設計支援装置。
【0075】
(付記14) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成部は、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成部は、複数の適応度関数を各軸ごとに合成することを特徴とする付記1〜5のいずれかに記載の集積回路用フロアプラン設計支援装置。
【0076】
【発明の効果】
以上説明したように、本発明によれば、マルチエージェントにより適応度関数を生成・合成してフロアプランを設計することにより、最適で品質の高いフロアプランを短時間で作成することができる。また、フロアプランの各制約への対応を制約の選択条件と制約ごとの適応度関数の生成で行っているため、今後のLSI技術発展に伴う制約の変更に対しても、容易に対応することができる。
【図面の簡単な説明】
【図1】実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【図2】図1の装置内のエージェントシステムを示すブロック図である。
【図3】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「チップ上配置」に関する適応度関数を示すグラフである。
【図4】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「重なり除去」(傾きなし)に関する適応度関数を示すグラフである。
【図5】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「重なり除去」(傾きあり)に関する適応度関数を示すグラフである。
【図6】(A)はチップ上に2つの機能ブロックを配置した例を示す平面図、(B),(C),(D)はX軸方向に関する各種の適応度関数を示すグラフ、(E)、(F)は合成適応度関数を示すグラフである。
【図7】実施形態にかかる設計装置の全体の制御の流れを示すメインのフローチャートである。
【図8】エージェント部による適応度関数生成、合成のサブルーチンである。
【図9】ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンである。
【図10】「重なり除去」の制約を考慮する際に、極小値に一定の値を加算して修正する例を示すグラフである。
【図11】ブロックエージェントがループ状態にある場合のチップ上のブロックの配置図である。
【図12】図11の状態から「重なり除去」の制約を解除した場合のチップ上のブロックの配置図である。
【図13】図12の状態から「重なり除去」の制約を再度選択した場合のチップ上のブロックの配置図である。
【図14】ブロックエージェントが「配線距離」を短縮できずに安定した場合のチップ上のブロックの配置図である。
【図15】図14の状態から「チップ上配置」の制約を緩和した場合のチップ上のブロックの配置図である。
【図16】図15の状態から「配線距離」を短縮した場合のチップ上のブロックの配置図である。
【図17】図16の状態から「チップ上配置」の制約を戻した場合のチップ上のブロックの配置図である。
【符号の説明】
1 システム制御部
2 データ入力部
3 戦略エージェント
4 ブロックエージェント
5 エージェントインターフェース部
6 データ出力部
7 表示部
8 適応度関数生成部
9 適応度関数合成部
【発明の属する技術分野】
本発明は、1チップ上に複数の機能ブロックが搭載されるLSI等の集積回路用のフロアプラン設計支援方法、この方法を実現するためのプログラム、及び装置に関する。
【0002】
【従来の技術】
この種の集積回路のフロアプラン設計支援方法としては、例えば特許文献1、特許文献2に記載のものが知られている。特許文献1に記載の自動フロアプランニング装置は、各ブロックの規模、配置を決定するフロアプランニング手段と、各ブロックの面積と配置位置から配線長を算出し、評価関数を利用してフロアプランの結果を評価する手段と、フロアプランを変更する3つの変更手段と、変更したフロアプランを評価し採用不採用を判定して、フロアプランの更新および繰り返しを行う制御手段とを備える。変更方法は、生起確率を与えて3つの変更手段から乱数を用いて選択される。
【0003】
また、特許文献2に記載のフロアプラン設計支援装置は、入力装置、出力装置、推論装置、表示装置、補助メモリ、フロアプラン推論機能がそれぞれ一つコンピュータ本体に接続または内蔵されて構成され、これらに付随してフロアプラン知識ルールのデータ、フロアプラン知識ルール、セルブロックのデータを備えている。フロアプラン概略図(手書き)を入力とし、回路特性、配置配線等に関する知識に基づくフロアプランルール、パターンレイアウトの設計ルールをもとに推論を行い、適切な配置配線をモディファイする。そして、モディファイされたフロアプラン図とアドバイスメッセージを出力する。
【0004】
【特許文献1】特開平6−244280号公報
【特許文献2】特開平2−264451号公報
【0005】
【発明が解決しようとする課題】
しかしながら、上述した特許文献1に記載された自動フロアプランニング装置では、フロアプランを最適にする変更手段が3つに固定されており、それらの手段からランダムに選ばれる。このランダム性のため、最短経路で最適解を得ることが難しい。
【0006】
また、特許文献2に記載されたフロアプラン設計支援装置では、推論機構が単一であるため処理速度が遅く、処理量の大きい大規模なLSIに対しては短時間で品質の高いフロアプランを得ることができない。
【0007】
さらに、LSI技術の向上に伴ってLSI設計用のCADソフトが改版されると、改版のたびにフロアプラン時に必要になるデータや、機能ブロックを配置する際に考慮する制約に変更・追加があるが、上述した従来の装置では、改版時に一度完成した従前のシステムに対して大幅な変更が必要となりコストがかかる。
【0008】
本発明は、上記の従来技術の課題に鑑み、最適で品質の高いフロアプランを短時間で作成することができ、しかも、CADソフトの改版時に必要とされるデータや配置の制約等に変更があった場合にも、システムの大幅な変更なしに対応できる集積回路用フロアプラン設計支援方法、及びこの方法を実現するための装置、プログラムを提供することを目的とする。
【0009】
【課題を解決するための手段】
この発明にかかる集積回路用フロアプラン設計支援方法は、上記の目的を達成させるため、1つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援方法において、チップのサイズ及び各機能ブロックの配置に関するデータを入力するデータ入力ステップと、フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で機能ブロック毎に1つずつ用意され、対応する機能ブロックのチップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、入力されたデータに基づいて戦略エージェントが機能ブロックの配置に関する制約を複数選択する制約選択ステップと、戦略エージェントにより選択された制約に基づき、各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、各ブロックエージェントが、合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、戦略エージェントが、配置ステップ後の各機能ブロックの配置がフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には制約選択ステップに戻って処理を繰り返すことを特徴とする。
【0010】
上記の構成によれば、階層的に組織された複数のエージェントを用いたマルチエージェント(「外部から制御されず,自身の規律に従って動作する実行主体が,複数集まって1つの機能を実現するシステム」)を応用することにより、最適な集積回路のフロアプランを自動的に作成すると同時に、システムへの機能追加や変更を容易に実現可能とする。
【0011】
また、終了判定ステップで必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、制約選択ステップで選択されていた制約の一部をより厳しくして適応度関数生成ステップからの処理を繰り返すようにしてもよい。
【0012】
さらに、各ブロックエージェントが単独で解決できない問題が生じた場合に、戦略エージェントは、制約選択ステップにおいて、各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより問題を解決するようにすることが望ましい。
【0013】
戦略エージェントによって与えられる制約は、例えば、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと(「重なり除去」)、機能ブロックがチップ上に配置されること(「チップ上配置)、の少なくとも1つを含む。
【0014】
ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理することが望ましい。この場合、適応度関数生成ステップでは、X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成すればよい。
【0015】
なお、本発明は、上記のような設計支援方法のみでなく、この方法を実現するための装置、あるいは、コンピュータをこのような装置として機能させるコンピュータプログラムとして実現することもできる。
【0016】
【発明の実施の形態】
以下、この発明にかかる集積回路用フロアプラン設計支援方法の実施形態を説明する。実施形態のフロアプラン設計支援方法は、1チップ上に複数の機能ブロック(ハードマクロ等を含む)を適正に配置するため、フロアプラン全体を監視する戦略エージェントと、この戦略エージェントの支配下で機能ブロック毎に1つずつ用意された複数のブロックエージェントとを用いた階層的なマルチエージェント構成を採用している。図1は、実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【0017】
フロアプラン設計支援装置は、図1に示すように、装置全体を制御するシステム制御部1と、チップのサイズ及び各機能ブロックの配置に関するデータをシステム制御部に入力するデータ入力部2と、システム制御部1に入力されたデータに基づいて機能ブロックの配置に関する制約を複数選択する戦略エージェント3と、戦略エージェント3の支配下で機能ブロックの位置を管理する複数のブロックエージェント4と、システム制御部1から戦略エージェント3に伝達される指令を中継するエージェントインターフェイス部5と、戦略エージェント3及びブロックエージェント4により決定されたフロアプランのデータを出力するデータ出力部6と、入出力データや処理の経過等を表示する表示部7とを備えている。
【0018】
データ入力部2からは、チップに関してはチップ名、高さ、幅、ピン位置、各機能ブロックについては、ブロック名、高さ、幅、配線に関してはネット名、接続ピン名等を含む設計データ、フロアプラン設計時の各機能ブロック配置の複数の制約からいずれの制約を選択するかのデータ、各機能ブロックの配置の決定に利用される適応度関数の生成・合成に関するデータ等が入力されてシステム制御部1に転送される。
【0019】
エージェントインターフェース部5は、システム制御部1からの指令を受け、単一の戦略エージェント3と、チップ上に配置される機能ブロックのそれぞれに対応した複数のブロックエージェント4とを生成し、戦略エージェント3に対してフロアプラン設計の実行を指令する。図2に示されるように、エージェントシステム全体への命令はエージェントインターフェース部5を通して戦略エージェント3のみに対して発せられる。戦略エージェント3は、機能ブロックの配置に関する制約と、この制約を満たすために生成される適応度関数の傾き(詳しくは後述)をブロックエージェント4に渡すことにより、ブロックエージェント4を制御する。
【0020】
戦略エージェント3は、ブロックエージェント4の状態やLSI特性、フロアプランの進行状況、チップ制約など一つのブロックデータからは判別できないフロアプラン全体の構成をグローバルな視点から監視する。また、戦略エージェント3は、ブッロクエージェントを制御して実行を開始させ、停止させ、あるいは、ブロックエージェント4に与える制約を設定する。具体的には、機能ブロックの配置に関する制約を複数選択すると共に、適応度関数の傾きも選択する。
【0021】
戦略エージェント3で使用する知識(戦略エージェント知識)は、上記の制約や、傾き等の選択条件のデータ入力部2から入力された情報に基づいて作成される。戦略エージェント知識には、フロアプラン設計に必要な全ての制約、その中で絶対満たさなければいけない制約(終了条件制約)、制約の選択条件、及び選択からの除外時間が含まれる。
【0022】
ブロックエージェント4は、チップ上に配置される機能ブロック毎に1つずつ用意され、互いに直交するX軸、Y軸の二次元座標を用いて対応する機能ブロックの適正な配置位置を求める。ブロックエージェント4は、X軸、Y軸の各軸別に1つの制約に対して1つ又は複数の適応度関数を生成する適応度関数生成部8と、生成された適応度関数をX軸、Y軸の各軸別について、それぞれ1つに合成して合成適応度関数を生成する適応度関数合成部9とを備えている。適応度関数合成部9は、生成された適応度関数を状況に応じて論理積や論理和等の適切な演算により合成する。
【0023】
これらの適応度関数生成部8、合成部9で利用される知識(ブロックエージェント知識)は、外部のファイルやデータ入力部を介して入力された適応度関数生成・合成データに基づいて作成される。適応度関数は、特定のブロックエージェント4に対応する自ブロックの位置と制約の解消度(適応度)とをX軸とY軸とに射影した式である。各ブロックエージェント4は、適応度関数のみを用いて各機能ブロックの配置を決定する。なお、ブロックエージェント4は、現在までの状況やフロアプランの進行状況に合わせて、作成する適応度関数を許容範囲内で修正することができる。
【0024】
データ出力部6は、フロアプラン設計処理の結果データと、処理の履歴を記録したログファイルとを出力する。表示部7は、生成・修正された適応度関数や合成適応度関数を表示し、経過や問い合わせに対する回答を表示する。
【0025】
次に、ブロックエージェント4の適応度関数生成部8において生成される適応度関数の定義の具体例について説明する。実施形態では、各ブロックエージェントに与えられる制約として、「チップ上配置」(機能ブロックがチップの上に配置されなければならないという制約)、「重なり除去」(各機能ブロックは互いに重複してはならないという制約)、そして、「配線距離」(各機能ブロック間、機能ブロックとチップの端子間の配線はできる限り短い方がよいという制約)の3種類を用いる。各ブロックエージェント4は、これらの各制約について達成度を評価するための適応度関数を生成する。以下、各制約に関する適応度関数の生成について説明する。
【0026】
最初に座標系の定義を説明する。各ブロックエージェントは、図3(A)に示すように、長方形のチップ基板の一方の辺をX軸、これと直交する辺をY軸とする二次元座標を用いて対応する機能ブロックの位置を管理する。ここではチップの図中左上の角を原点(0,0)とし、右側に向かってX座標が増加し、下側に向かってY座標が増加するものとする。右下の角の座標を(XEnd,YEnd)とする。
【0027】
チップ上に配置される長方形の機能ブロックAについては、左上の角の座標(AX,AY)と、X軸方向のサイズALX、Y軸方向のサイズALYとによりチップ上で占める場所が特定される。適応度関数は、このブロックAの左上の座標(AX,AY)がどのような値をとるときに、各制約をどの程度満足させることができるかを示す関数である。適応度関数は、制約を完全に満たすときに最大値「1」、制約を全く満たしていないときに最小値「0」をとるように定義される。
【0028】
例えば、図3(A)の例でブロックAのX軸方向における「チップ上配置」の制約に関する適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint2より大きい側では「0」、Point1とPoint2との間では「1」となる。適応度関数は、関数の値が変化するポイントを順番に羅列して生成される。各ポイントについて、
PointX=(X座標、1つ前のPointから当該Pointまでの値、傾きの有無)
のデータが中間データとして格納され、これに基づいて適応度関数が生成される。「傾きなし(N)」とは、適応度関数に「0」と「1」以外の値を許容しない場合であり、制約を満たさない場合を全て同一の状態として捉えることを意味する。これに対して「傾きあり(A)」とは、適応度関数の「0」と「1」との間に中間値を認めて徐々に変化させる場合であり、制約を満たさない場合にも、その満たさない程度を関数値に反映させることを意味する。「チップ上配置」の制約については、傾きは考慮しない。
【0029】
図3の例における「チップ上配置」の制約については、
Point1=(0, 0, N),
Point2=(XEnd−ALX, 1, N),
Point3=(XEnd, 0, N)
のデータを与えることにより適応度関数が生成される。
【0030】
次に、「重なり除去」の適応条件に関する適応度関数の生成につき、図4及び図5を参照して説明する。なお、図4は「傾きなし」、図5は「傾きあり」の場合を示す。
【0031】
図4(A)に示すように、チップ(図示せず)上にブロックAとブロックBとを配置する場合、ブロックAの配置位置を決定するブロックエージェント4は、ブロックBを既存の位置で固定して考え、自ブロックAを図中左側から右側に移動させた際にAXがどのような値をとるときにブロックAの右端がブロックBの左端と重なり、どのような値をとるときに重なりが解消されるかを適応度関数として表す。
【0032】
図4(A)の例でブロックAのX軸方向における「重なり除去」の制約に関する「傾きなし」の適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint2より大きい側では「1」、これらの間では「0」となる。そこで、図4(B)の例における「傾きなし」の「重なり除去」の制約については、Point1=(BX−ALX, 1, N),
Point2=(BX+BLX, 0, N),
Point3=(XEnd, 1, N)
のデータを与えることにより適応度関数が生成される。
【0033】
同様に、図5(A)の例でブロックAのX軸方向における「重なり除去」の制約に関する「傾きあり」の適応度関数の値は、同図(B)に示すように、AXがPoint1より小さい側、及びPoint3より大きい側では「1」、Point1からPoint2にかけてはAXが増加するにしたがって「1」から漸減し、Point2の位置で「0」、そして、Point2からPoint3にかけてはAXが増加するにしたがって「0」から漸増する。そこで、図5(B)の例における「傾きあり」の「重なり除去」の制約については、
Point1=(BX−ALX, 1, N),
Point2=(BX−ALX+(ALX+BLX)/2, 0, A),
Point3=(BX+BLX, 1, A),
Point4=(XEnd, 1, N)
のデータを与えることにより適応度関数が生成される。
【0034】
なお、図4、図5の例では、X軸方向の適応度関数の生成についてのみ説明したが、同様にしてY軸方向についても適応度関数が生成される。また、上記の例では特定のブロックエージェントが対象とする1つの機能ブロック(自ブロック)に対して他ブロックを1つのみ示したが、実際には他ブロックが多数存在するのが一般的である。そのような場合には、他ブロック1つに対して1つの適応度関数を生成し、1つの自ブロックに対して他ブロックの数だけ適応度関数が生成される。さらに、「重なり除去」の制約に関する適用度関数には「傾きあり」の例も示したが、これは設計途中で制約を緩和してレイアウトの自由度を確保するためであり、最終的なフロアプランとして出力される場合には、機能ブロックが重なることは許されないため、終了条件制約としては「重なり除去」の制約も「チップ上配置」の制約も「傾きなし」で満たされる必要がある。
【0035】
「配線距離」の適応条件に関する適応度関数については個別の図示を省略するが、自ブロックに接続される配線1本ごとにX軸、Y軸に関する適応度関数が1つずつ生成される。配線距離は短いほど望ましいが、上記の「チップ上配置」の制約や「重なり除去」の制約と比較すると、クリティカルな境界は存在しない。したがって、最終的なフロアプランを出力する際にも、「傾きあり」の条件で考慮すればよい。
【0036】
各ブロックエージェント4の適応度関数合成部は、全ての制約に関する適応度関数をX軸、Y軸ごとに合成して合成適応度関数を得る。関数が1制約・1軸につき複数個生成された場合は、1制約・1軸ごとに適応度関数合成部に関数全部を渡し、関数合成データの条件によって合成を行う。例えば、「チップ上配置」及び「重なり除去」の制約に関しては複数の適応度関数の値を積算して制約単位の合成適応度関数とし、「配線距離」の制約に関しては複数の適応度関数の値を加算して制約単位の合成適応度関数とする。
【0037】
その後、再び適応度関数合成部9を使用し、制約ごとに求めた合成適応度関数を全て軸ごとに合成し、当該ブロックに関する総合的な合成適応度関数を求める。合成方法は、例えば、自ブロックの重なり面積が10%未満、且つ、「重なり除去」の「傾きなし」が選択されている場合には、制約毎単位の合成適応度関数の値の論理積を総合的な合成適応度関数とし、「重なり除去」の「傾きあり」が選択されている場合には、制約毎単位の合成適応度関数の値の加算を総合的な合成適応度関数とする。
【0038】
図6(A)は、チップ上に2つの機能ブロックA,Bを配置した例を示している。これらのブロック間には1本の配線が接続されている。ブロックAを着目するブロックエージェント4により配置される自ブロック、ブロックBを他ブロックとする。図6(B),(C),(D)は、X軸方向に関する各種の適応度関数を示す。図6(B)は、図5(B)に示したものと同様の「重なり除去(傾きあり)」の制約に関する適応度関数、図6(C)は、図3(B)に示したものと同様の「チップ上配置」の制約に関する適応度関数、図6(D)は「配線距離」の制約に関する適応度関数の値をそれぞれ示している。図6(E)は、これら3つの制約単位の適応度関数の論理積として求められた総合的な合成適応度関数、図6(F)は、これら3つの制約単位の適応度関数を加算して求められた総合的な合成適応度関数を示す。
【0039】
ブロックエージェント4は、軸ごとに生成された2つの合成適応度関数を用い、関数の値が最も高い地点に自ブロックAを配置し、結果を中間データに反映させる。この際、ブロックエージェント4は、配置距離の差分(前回の配置位置の座標と、今回の配置位置の座標との差分)のログを取っておき、ブロック情報の一部として利用する。中間データは、ブロックエージェントの働きによって刻々と変化する各機能ブロックの位置をX軸、Y軸の二次元座標として保持している。各ブロックエージェントは、対応する機能ブロック(自ブロック)の位置をポインタに基づいて中間データから読み込むと共に、「重なり除去」の条件を考慮する際に必要となる他ブロックの位置をポインタに基づいて中間データから読み込む。また、中間データを適時、データ出力部6や表示部7に渡すことにより、フロアプラン・ログデータを画面等に出力してもよい。
【0040】
次に、図7〜図9に示すフローチャートにしたがって、実施形態の装置の作用を説明する。図7は、全体の制御の流れを示すメインのフローチャート、図8は、エージェント部による適応度関数生成、合成のサブルーチン、図9は、ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンを示す。
【0041】
ステップS1では、データ入力部2を介してフロアプラン設計に必要なデータが入力される。ステップS2では、システム制御部1がエージェントインターフェース部5を通して、戦略エージェント3、ブロックエージェント群4を作成する。同時に、戦略エージェント3は、知識である制約条件データを読み込み、ブロックエージェント群4は、知識である適応度関数定義・修正・合成データを読み込み、各エージェントの知識も作成する。ブロックエージェントの知識には、適応度関数の定義と制約を緩める条件と割合、合成方法の選択条件が含まれている。更に、ブロックエージェントには適応度関数生成部8、適応度関数合成部9を持たせる。
【0042】
ステップS3では、戦略エージェント3がフロアプランの基本的な制約やLSIのチップ特性などから加わる制約と適応度関数の傾きを選択する。選択時にはエージェント特有の知識と推論を利用することで、複数の条件からの選択を可能とする。また、選択時に、ブロックエージェントの状態などや、フロアプラン全体の進行状況、チップ上の状況を考慮することで、ブロックエージェント4がループに陥ることを防ぐ。選択方法は、戦略エージェント3が、ブロックエージェント4の状態と、中間データ上にあるチップ情報等を判断基準として用いて、知識から制約と傾きを選択する。その後、戦略エージェント3がブロックエージェントに制約を与え、実行を開始させる。
【0043】
制約の選択基準の具体例を以下に示す。例えば、「重なり除去」(傾きなし)の制約は、全ブロックの重なり割合が10%未満、配置回数が20回以上の時、連続選択回数5回未満、ループ状態(後述する)を発見していないという3つの条件を全て満たす場合に選択される。また、「重なり除去」(傾きあり)の制約は、「重なり除去」(傾きなし)が非選択であり、且つ、ループ状態を発見していない場合に選択される。「チップ上配置」(傾きなし)の制約は、ブロックエージェントの繰り返し回数が20回を超えている場合に選択される。また、「配線距離」の制約については、一度終了条件を満たした場合は傾きを半分にする。
【0044】
ステップS4では、各ブロックエージェント4が戦略エージェント3から与えられた制約と傾き、中間データ、ブロックエージェントの状態等を適応度関数生成部8に与え、適応度関数を生成する。ブロックエージェントの状態とは、前回の行動、同様な行動の繰り返し回数等の情報を示す。適応度関数の作成(生成・合成)フローチャートを図8に示す。
【0045】
図8のフローチャートでは、ステップS101で各制約、X・Y軸、必要なら対応ブロックごとに各軸に射影した上限1、下限0とする適応度関数を生成する。関数の生成方法は、前述のように、適応度関数の変化(適応度関数の変化するPointと適応度)を関数定義データから入手し、このデータと、中間データから、X軸方向、Y軸方向それぞれに射影した関数を全ブロックについて生成する。
【0046】
ステップS102では、必要に応じて自ブロックの現在までの状況とブロックの情報を元に適応度関数に修正を加える。例えば、戦略エージェント3が制約をゆるくした方がいいと判断した場合には、極小(=0)としていた値に一定の値を加算して傾きを緩めることにより制約を緩くすることができる。例えば図10は、「重なり除去」の制約を「傾きあり」で考慮する際に、極小値に一定の値を加算する例を示している。図10(A)は、図5(B)と同様の加算なしの状態、図10(B)は極小値に0.2を加算した状態、図10(C)は極小値に0.5を加算した状態を示す。これらの加算値は、適応度関数修正データを基準にして戦略エージェント3が判断する。加算することにより、極小値が0でなくなるため、他の制約との兼ね合いで重なりがある位置が選択される可能性が高くなる。
【0047】
修正は、例えば「重なり除去」(傾きあり・なし)の制約については、ブロックエージェントの繰り返し回数が10回を超えている場合に0.2を加算し、「チップ上配置」(傾きなし)の制約については、自ブロックの平均配線距離がチップ辺半分以上の場合に極小値に0.2を加算し、ブロック位置がチップ周辺部であり、且つ、全ブロックの重なり割合が10%以上の場合に極小値に0.2を加算し、配置差分の距離が連続20回「0」になっている場合に極小値に0.2を加算する。修正による制約緩和は、1イテレーション、すなわち、全ブロックエージェントが一回ずつ配置処理を実行する間であり、その時間が経過すると修正は取り消される。
【0048】
ステップS103では、各軸の適応度関数を制約毎に加算して制約単位の合成適応度関数を生成し、ステップS104では、これらを軸毎に合成して総合的な合成適応度関数を生成し、ステップS105では、合成された結果の関数を出力して図7のフローチャートに戻る。
【0049】
図7のステップS5では、合成適応度関数に基づいて各ブロックエージェント4が各機能ブロックを関数値の最も高い位置に配置する。続いてステップS6では、ブロックエージェント4がループ状態(機能ブロックが複数の特定位置に繰り返し配置され、最適位置に落ち着かない状態)に陥っていないか否かを判定する。判定のフローチャートは図9に示されている。
【0050】
図9のステップS201では、対象となる機能ブロックが前回から移動したか否かを判断する。移動していなければ、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。移動した場合には、ステップS202において現在位置と同じ位置に配置されたことがあるか否かをログから検索する。ここでは、M回分の位置のログを確保しておく。
【0051】
ステップS203では、同じ位置を発見したか否かを確認する。発見されない場合には、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。N回前に発見された場合には、i回前の位置P(i)と(i+N)回前の位置P(i+N)とを比較する。この比較をiが0〜(N−1)になるまで繰り返す。ここで、Nの最大値は M /2とする。
【0052】
ステップS204の比較の結果、全てが同じ位置であった場合(S205, Yes)には、ループ状態に陥っていると判断できるため、「ループ発見」を戻り値に図7のフローチャートに戻る。全てが同じ位置でなかった場合(S205, No)には、ステップS206でさらに前のログに同じ位置がないか否かを判断する。同じ位置がなければ(S206, No)、ループ状態ではないため、「ループなし」を戻り値に図7のフローチャートに戻る。N回前に同じ位置が発見された場合には、再びステップS204に戻って比較処理を繰り返す。
【0053】
図7のステップS7では、図9のフローチャートからの戻り値により、ループを発見したか否かを判断する。ループを発見していなければ(S7、No)、ステップS8で戦略エージェント3が、ブロックエージェント4の状況を見て、フロアプランの設計が完成したかどうか終了判定を行う。終了条件は、フロアプランで最低限満たさなければいけない必要条件である制約、すなわち前記のように少なくとも「重なり除去」(傾きなし)、「チップ上配置」(傾きなし)を満たしているに満たされる。ループが発見された場合(S7, Yes)、及び終了条件を満たしていない場合(S8, No)には、再度、ステップS3で戦略エージェント3が制約を選択するところからやり直す。
【0054】
終了条件を満たしている場合(S8, Yes)には、戦略エージェント3はフロアプランの完了と判断してフロアプラン設計処理を一時停止させ、システム制御部1がユーザにフロアプランを終了してよいか否かを問合せる。もし、ユーザからOKが出れば、フロアプラン設計処理を終了する。OKでない場合には、戦略エージェント3は、例えば「配線距離」の制約について前記の条件「一度終了条件を満たした場合は傾きを半分にする」にしたがって制約をより厳しく設定し(S11)、ステップS4からの処理を続ける。
【0055】
制約選択の例として、選択時に一時的に特定の条件を選択しないことで、ブロックエージェント4だけで解決できない場面を戦略エージェント3が解決する例を図11〜図13に示す。
図11は、配線距離が長すぎて前述した「自ブロックの平均配線距離がチップ辺半分以上」の制約を満たすことができず、ブロックエージェント4がチップ上配置の制約を緩めた場合と、一定時間がたち、制約を戻した場合とで2つの位置の間を交互に移動してループ状態に陥っている。このような状態は、図9に示すループ発見の処理により戦略エージェント3により発見される。
【0056】
ループ状態は、ブロックエージェント4のログの位置情報から発見する。例えば、以下のようなログが記録されていれば、ループ状態を発見することができる。
P(0) = (70, 50)
P(1) = (10, 20)
P(2) = (10, 20)
P(3) = (70, 50)
P(4) = (70, 50)
P(5) = (10, 20)
P(6) = (10, 20)
P(7) = (70, 50)
【0057】
ループ状態が発見されているため、「重なり除去」を選択する前記の条件「ループ状態を発見していない」を満たすことができず、戦略エージェント3は「重なり除去」の制約を除外する。これより、ブロックエージェント4は、図12に示すように、ブロック同士の重なりを考慮せずに、自ブロックを配置することができる。これによりループ状態を脱するため、戦略エージェント3は「重なり除外」の制約を選択する。これにより、図13に示すように、他ブロックが移動して重なりが解消されている。このような制約の選択・除外により、フロアプラン全体をより適切な配置にすることができる。
【0058】
また、戦略エージェント3が制約を緩くすることにより、ブロックエージェント4のみでは解決できない問題を解決する例を図14〜図17に示す。図14はフロアプラン設計の所定の中間段階における各ブロックの配置を示す。配線距離が長いため、好ましい状態ではないが、ブロックエージェントのみでは、自ブロックは図14の状態で安定して移動しない。そこで、「配置差分の距離が連続20回「0」になっている」(つまり、動かなかった)ことがログから明らかになると、「チップ上配置」の制約が極小値に0.2加算することにより緩和される。これにより、ブロックエージェント4は、チップ上配置の制約を深く考慮に入れずに配線距離を短縮するよう自ブロックを配置する。配線の最短化のために、図15の配置が一時的に得られるが、他ブロックが移動して図16の状態となり、1イタレーション後、「チップ上配置」の制約が戻ると、図17の配置となる。このような処理により、「チップ上配置」の制約を満たしつつ、図14と比較して配線距離を短くすることができる。
【0059】
上述した実施形態の構成によれば、設計者のノウハウが知識として組み込まれたマルチエージェントを利用しているため(エージェントの自律性、社会性)、状況に応じた判断で、選択や修正を行うことができる。そのため複数の制約全てを考慮した、妥当なフロアプランを生成できる。また、機能ブロックの配置決定には適応度関数しか利用しないため、LSI設計手法の変更、個別対応、誤動作による修正等に伴ってLSI設計用のCADソフトが改版された場合にも、適応度関数生成・修正・合成データと、制約選択データとを修正するだけで対応できるため、従来のようなシステムの大幅な変更は不要となり、改版時のCADシステム設計者の負担を軽減させることができる。また、知識である制約選択条件や適応度関数生成・修正・合成の方法は、外部ファイルから読み込むことでシステムの修正なしに追加、削除、修正が容易となる。
【0060】
さらに、従来は初期状態を適切に生成しないと、後の最適化が困難であったが、実施形態の装置では、各機能ブロックを重ねて同一箇所に配置するような初期状態から、適用度関数を用いて各ブロックを移動させることにより、最適な配置が可能となる。
【0061】
なお、上記の実施形態では、制約条件として、「重なり除去」、「チップ上配置」、「配線距離」の3条件を主として例示したが、他の条件を合わせて考慮してもよい。例えば、各機能ブロックの動作するクロック周波数を制約条件として含むこともできる。また、チップの特定部分のみの使用を避けるため、チップ内の区域別の使用率を制約条件として含めてもよい。
【0062】
(付記1) 1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援方法において、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援方法。
【0063】
(付記2) さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記1に記載の集積回路用フロアプラン設計支援方法。
【0064】
(付記3) 前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記1又は2に記載の集積回路用フロアプラン設計支援方法。
【0065】
(付記4) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記1〜3のいずれかに記載の集積回路用フロアプラン設計支援方法。
【0066】
(付記5) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記1〜5のいずれかに記載の集積回路用フロアプラン設計支援方法。
【0067】
(付記6) コンピュータを、1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置として機能させる集積回路用フロアプラン設計支援プログラムにおいて、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記戦略エージェントが入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援プログラム。
【0068】
(付記7) さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記6に記載の集積回路用フロアプラン設計支援方法。
【0069】
(付記8) 前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記6又は7に記載の集積回路用フロアプラン設計支援プログラム。
【0070】
(付記9) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記6〜8のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【0071】
(付記10) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記6〜9のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【0072】
(付記11) 1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置において、
装置全体を制御するシステム制御部と、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを前記システム制御部に入力するデータ入力部と、
前記システム制御部に入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択し、フロアプラン全体を監視する戦略エージェントと、
該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントと、
前記戦略エージェント及びブロックエージェントにより決定されたフロアプランのデータを出力する出力手段とを備え、
前記各ブロックエージェントは、前記戦略エージェントが選択した複数の制約を受け取り、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成部と、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成部とを備え、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置ことを特徴とする集積回路用フロアプラン設計支援装置。
【0073】
(付記12) 前記戦略エージェントは、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより、前記各ブロックエージェントが単独で解決できない問題を解決することを特徴とする付記11に記載の集積回路用フロアプラン設計支援装置。
【0074】
(付記13) 前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも1つを含むことを特徴とする付記11または12に記載の集積回路用フロアプラン設計支援装置。
【0075】
(付記14) 前記ブロックエージェントは、互いに直交するX軸、Y軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成部は、前記X軸、Y軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成部は、複数の適応度関数を各軸ごとに合成することを特徴とする付記1〜5のいずれかに記載の集積回路用フロアプラン設計支援装置。
【0076】
【発明の効果】
以上説明したように、本発明によれば、マルチエージェントにより適応度関数を生成・合成してフロアプランを設計することにより、最適で品質の高いフロアプランを短時間で作成することができる。また、フロアプランの各制約への対応を制約の選択条件と制約ごとの適応度関数の生成で行っているため、今後のLSI技術発展に伴う制約の変更に対しても、容易に対応することができる。
【図面の簡単な説明】
【図1】実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【図2】図1の装置内のエージェントシステムを示すブロック図である。
【図3】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「チップ上配置」に関する適応度関数を示すグラフである。
【図4】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「重なり除去」(傾きなし)に関する適応度関数を示すグラフである。
【図5】(A)はチップ上に配置された機能ブロックを示す平面図、(B)は「重なり除去」(傾きあり)に関する適応度関数を示すグラフである。
【図6】(A)はチップ上に2つの機能ブロックを配置した例を示す平面図、(B),(C),(D)はX軸方向に関する各種の適応度関数を示すグラフ、(E)、(F)は合成適応度関数を示すグラフである。
【図7】実施形態にかかる設計装置の全体の制御の流れを示すメインのフローチャートである。
【図8】エージェント部による適応度関数生成、合成のサブルーチンである。
【図9】ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンである。
【図10】「重なり除去」の制約を考慮する際に、極小値に一定の値を加算して修正する例を示すグラフである。
【図11】ブロックエージェントがループ状態にある場合のチップ上のブロックの配置図である。
【図12】図11の状態から「重なり除去」の制約を解除した場合のチップ上のブロックの配置図である。
【図13】図12の状態から「重なり除去」の制約を再度選択した場合のチップ上のブロックの配置図である。
【図14】ブロックエージェントが「配線距離」を短縮できずに安定した場合のチップ上のブロックの配置図である。
【図15】図14の状態から「チップ上配置」の制約を緩和した場合のチップ上のブロックの配置図である。
【図16】図15の状態から「配線距離」を短縮した場合のチップ上のブロックの配置図である。
【図17】図16の状態から「チップ上配置」の制約を戻した場合のチップ上のブロックの配置図である。
【符号の説明】
1 システム制御部
2 データ入力部
3 戦略エージェント
4 ブロックエージェント
5 エージェントインターフェース部
6 データ出力部
7 表示部
8 適応度関数生成部
9 適応度関数合成部
Claims (5)
- 1つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援方法において、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援方法。 - さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする請求項1に記載の集積回路用フロアプラン設計支援方法。
- 前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも1つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより前記問題を解決することを特徴とする請求項1又は2に記載の集積回路用フロアプラン設計支援方法。
- コンピュータを、1つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置として機能させる集積回路用フロアプラン設計支援プログラムにおいて、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援プログラム。 - 1つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援装置において、
装置全体を制御するシステム制御部と、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを前記システム制御部に入力するデータ入力部と、
前記システム制御部に入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択し、フロアプラン全体を監視する戦略エージェントと、
該戦略エージェントの支配下で前記機能ブロック毎に1つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントと、
前記戦略エージェント及びブロックエージェントにより決定されたフロアプランのデータを出力する出力手段とを備え、
前記各ブロックエージェントは、前記戦略エージェントが選択した複数の制約を受け取り、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成部と、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成部とを備え、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置ことを特徴とする集積回路用フロアプラン設計支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003050676A JP2004259105A (ja) | 2003-02-27 | 2003-02-27 | 集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003050676A JP2004259105A (ja) | 2003-02-27 | 2003-02-27 | 集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004259105A true JP2004259105A (ja) | 2004-09-16 |
Family
ID=33116029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003050676A Pending JP2004259105A (ja) | 2003-02-27 | 2003-02-27 | 集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004259105A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022511491A (ja) * | 2018-12-04 | 2022-01-31 | グーグル エルエルシー | ニューラルネットワークを使用した集積回路フロアプランの生成 |
-
2003
- 2003-02-27 JP JP2003050676A patent/JP2004259105A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022511491A (ja) * | 2018-12-04 | 2022-01-31 | グーグル エルエルシー | ニューラルネットワークを使用した集積回路フロアプランの生成 |
JP7234370B2 (ja) | 2018-12-04 | 2023-03-07 | グーグル エルエルシー | ニューラルネットワークを使用した集積回路フロアプランの生成 |
US11675940B2 (en) | 2018-12-04 | 2023-06-13 | Google Llc | Generating integrated circuit floorplans using neural networks |
JP7413580B2 (ja) | 2018-12-04 | 2024-01-15 | グーグル エルエルシー | ニューラルネットワークを使用した集積回路フロアプランの生成 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6446239B1 (en) | Method and apparatus for optimizing electronic design | |
US5197015A (en) | System and method for setting capacitive constraints on synthesized logic circuits | |
US5402357A (en) | System and method for synthesizing logic circuits with timing constraints | |
US20020006695A1 (en) | Method of optimizing integrated circuits, apparatus for designing semiconductors, and program object for designing integrated circuits | |
JP2004502259A (ja) | 階層型金属末端、包囲、および曝露をチェックする方法およびシステム | |
JP2007027290A (ja) | 半導体集積回路のレイアウト設計方法 | |
JP2010066871A (ja) | 半導体集積回路のレイアウト設計方法及びレイアウト設計装置 | |
JPH08221451A (ja) | データパス回路のレイアウト設計方法 | |
JP2006301961A (ja) | 半導体集積回路の自動フロアプラン手法 | |
US7996794B2 (en) | Mask data processing method for optimizing hierarchical structure | |
KR19980063723A (ko) | 아키텍쳐 시스템 디자인 방법 | |
US7962884B2 (en) | Floorplanning apparatus and computer readable recording medium storing floorplanning program | |
JP2004259105A (ja) | 集積回路用フロアプラン設計支援方法、設計支援プログラム及び設計支援装置 | |
US9594859B1 (en) | Apparatus and associated methods for parallelizing clustering and placement | |
JP2010062227A (ja) | 自動配線装置、自動配線方法および自動配線プログラム | |
JP5326471B2 (ja) | クロック信号供給回路の設計方法、情報処理装置およびプログラム | |
US20040143813A1 (en) | System development supporting apparatus, system development supporting method, and computer-readable recorded medium | |
US6792583B1 (en) | Information processing apparatus, information processing system, and storage media | |
JP4733059B2 (ja) | 集積回路設計装置、集積回路設計方法及び集積回路設計プログラム | |
JP3763700B2 (ja) | 高位合成装置 | |
Kuehlmann et al. | High-Level State Machine Specification and Synthesis. | |
JP5614000B2 (ja) | 配線設計方法、設計装置及びプログラム | |
US20120226890A1 (en) | Accelerator and data processing method | |
Bastarrica et al. | Product line architecture for a family of meshing tools | |
JP2011192001A (ja) | 高位合成装置及び高位合成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080617 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080624 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081118 |