(57)【要約】【課題】最適で品質の高いフロアプランを短時間で作成でき、データや制約の変更に対しても大幅な変更なしに対応できるＬＳＩ用フロアプラン設計支援方法を提供すること。【解決手段】フロアプラン全体を監視する戦略エージェント／その支配下で機能ブロック毎に用意されブロックの位置を管理するブロックエージェントを作成し、戦略エージェントがブロックの配置に関する制約を選択すると、各ブロックエージェントが各制約について対応する機能ブロックの制約に対する適応度をブロックの位置の関数として表す適応度関数を生成して合成し、合成した適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置する。戦略エージェントは、配置後にフロアプランの必要条件を満たすかを判断し、満たす場合にはフロアプランの設計を終了し、満たさない場合には制約を選択し直す。【選択図】  図７
2004259105.tif 000002
【特許請求の範囲】
【請求項１】
１つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援方法において、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援方法。
【請求項２】
さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする請求項１に記載の集積回路用フロアプラン設計支援方法。
【請求項３】
前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも１つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより前記問題を解決することを特徴とする請求項１又は２に記載の集積回路用フロアプラン設計支援方法。
【請求項４】
コンピュータを、１つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置として機能させる集積回路用フロアプラン設計支援プログラムにおいて、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援プログラム。
【請求項５】
１つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援装置において、
装置全体を制御するシステム制御部と、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを前記システム制御部に入力するデータ入力部と、
前記システム制御部に入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択し、フロアプラン全体を監視する戦略エージェントと、
該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントと、
前記戦略エージェント及びブロックエージェントにより決定されたフロアプランのデータを出力する出力手段とを備え、
前記各ブロックエージェントは、前記戦略エージェントが選択した複数の制約を受け取り、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成部と、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成部とを備え、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置ことを特徴とする集積回路用フロアプラン設計支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１チップ上に複数の機能ブロックが搭載されるＬＳＩ等の集積回路用のフロアプラン設計支援方法、この方法を実現するためのプログラム、及び装置に関する。
【０００２】
【従来の技術】
この種の集積回路のフロアプラン設計支援方法としては、例えば特許文献１、特許文献２に記載のものが知られている。特許文献１に記載の自動フロアプランニング装置は、各ブロックの規模、配置を決定するフロアプランニング手段と、各ブロックの面積と配置位置から配線長を算出し、評価関数を利用してフロアプランの結果を評価する手段と、フロアプランを変更する３つの変更手段と、変更したフロアプランを評価し採用不採用を判定して、フロアプランの更新および繰り返しを行う制御手段とを備える。変更方法は、生起確率を与えて３つの変更手段から乱数を用いて選択される。
【０００３】
また、特許文献２に記載のフロアプラン設計支援装置は、入力装置、出力装置、推論装置、表示装置、補助メモリ、フロアプラン推論機能がそれぞれ一つコンピュータ本体に接続または内蔵されて構成され、これらに付随してフロアプラン知識ルールのデータ、フロアプラン知識ルール、セルブロックのデータを備えている。フロアプラン概略図（手書き）を入力とし、回路特性、配置配線等に関する知識に基づくフロアプランルール、パターンレイアウトの設計ルールをもとに推論を行い、適切な配置配線をモディファイする。そして、モディファイされたフロアプラン図とアドバイスメッセージを出力する。
【０００４】
【特許文献１】特開平６−２４４２８０号公報
【特許文献２】特開平２−２６４４５１号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した特許文献１に記載された自動フロアプランニング装置では、フロアプランを最適にする変更手段が３つに固定されており、それらの手段からランダムに選ばれる。このランダム性のため、最短経路で最適解を得ることが難しい。
【０００６】
また、特許文献２に記載されたフロアプラン設計支援装置では、推論機構が単一であるため処理速度が遅く、処理量の大きい大規模なＬＳＩに対しては短時間で品質の高いフロアプランを得ることができない。
【０００７】
さらに、ＬＳＩ技術の向上に伴ってＬＳＩ設計用のＣＡＤソフトが改版されると、改版のたびにフロアプラン時に必要になるデータや、機能ブロックを配置する際に考慮する制約に変更・追加があるが、上述した従来の装置では、改版時に一度完成した従前のシステムに対して大幅な変更が必要となりコストがかかる。
【０００８】
本発明は、上記の従来技術の課題に鑑み、最適で品質の高いフロアプランを短時間で作成することができ、しかも、ＣＡＤソフトの改版時に必要とされるデータや配置の制約等に変更があった場合にも、システムの大幅な変更なしに対応できる集積回路用フロアプラン設計支援方法、及びこの方法を実現するための装置、プログラムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
この発明にかかる集積回路用フロアプラン設計支援方法は、上記の目的を達成させるため、１つのチップに複数の機能ブロックを搭載して構成される集積回路用のフロアプラン設計支援方法において、チップのサイズ及び各機能ブロックの配置に関するデータを入力するデータ入力ステップと、フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で機能ブロック毎に１つずつ用意され、対応する機能ブロックのチップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、入力されたデータに基づいて戦略エージェントが機能ブロックの配置に関する制約を複数選択する制約選択ステップと、戦略エージェントにより選択された制約に基づき、各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、各ブロックエージェントが、合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、戦略エージェントが、配置ステップ後の各機能ブロックの配置がフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には制約選択ステップに戻って処理を繰り返すことを特徴とする。
【００１０】
上記の構成によれば、階層的に組織された複数のエージェントを用いたマルチエージェント（「外部から制御されず，自身の規律に従って動作する実行主体が，複数集まって１つの機能を実現するシステム」）を応用することにより、最適な集積回路のフロアプランを自動的に作成すると同時に、システムへの機能追加や変更を容易に実現可能とする。
【００１１】
また、終了判定ステップで必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、制約選択ステップで選択されていた制約の一部をより厳しくして適応度関数生成ステップからの処理を繰り返すようにしてもよい。
【００１２】
さらに、各ブロックエージェントが単独で解決できない問題が生じた場合に、戦略エージェントは、制約選択ステップにおいて、各ブロックエージェントに与えた複数の制約のうちの少なくとも１つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより問題を解決するようにすることが望ましい。
【００１３】
戦略エージェントによって与えられる制約は、例えば、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと（「重なり除去」）、機能ブロックがチップ上に配置されること（「チップ上配置）、の少なくとも１つを含む。
【００１４】
ブロックエージェントは、互いに直交するＸ軸、Ｙ軸の二次元座標により対応する機能ブロックの位置を管理することが望ましい。この場合、適応度関数生成ステップでは、Ｘ軸、Ｙ軸のそれぞれに関して適応度関数を生成すると共に、適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成すればよい。
【００１５】
なお、本発明は、上記のような設計支援方法のみでなく、この方法を実現するための装置、あるいは、コンピュータをこのような装置として機能させるコンピュータプログラムとして実現することもできる。
【００１６】
【発明の実施の形態】
以下、この発明にかかる集積回路用フロアプラン設計支援方法の実施形態を説明する。実施形態のフロアプラン設計支援方法は、１チップ上に複数の機能ブロック（ハードマクロ等を含む）を適正に配置するため、フロアプラン全体を監視する戦略エージェントと、この戦略エージェントの支配下で機能ブロック毎に１つずつ用意された複数のブロックエージェントとを用いた階層的なマルチエージェント構成を採用している。図１は、実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【００１７】
フロアプラン設計支援装置は、図１に示すように、装置全体を制御するシステム制御部１と、チップのサイズ及び各機能ブロックの配置に関するデータをシステム制御部に入力するデータ入力部２と、システム制御部１に入力されたデータに基づいて機能ブロックの配置に関する制約を複数選択する戦略エージェント３と、戦略エージェント３の支配下で機能ブロックの位置を管理する複数のブロックエージェント４と、システム制御部１から戦略エージェント３に伝達される指令を中継するエージェントインターフェイス部５と、戦略エージェント３及びブロックエージェント４により決定されたフロアプランのデータを出力するデータ出力部６と、入出力データや処理の経過等を表示する表示部７とを備えている。
【００１８】
データ入力部２からは、チップに関してはチップ名、高さ、幅、ピン位置、各機能ブロックについては、ブロック名、高さ、幅、配線に関してはネット名、接続ピン名等を含む設計データ、フロアプラン設計時の各機能ブロック配置の複数の制約からいずれの制約を選択するかのデータ、各機能ブロックの配置の決定に利用される適応度関数の生成・合成に関するデータ等が入力されてシステム制御部１に転送される。
【００１９】
エージェントインターフェース部５は、システム制御部１からの指令を受け、単一の戦略エージェント３と、チップ上に配置される機能ブロックのそれぞれに対応した複数のブロックエージェント４とを生成し、戦略エージェント３に対してフロアプラン設計の実行を指令する。図２に示されるように、エージェントシステム全体への命令はエージェントインターフェース部５を通して戦略エージェント３のみに対して発せられる。戦略エージェント３は、機能ブロックの配置に関する制約と、この制約を満たすために生成される適応度関数の傾き（詳しくは後述）をブロックエージェント４に渡すことにより、ブロックエージェント４を制御する。
【００２０】
戦略エージェント３は、ブロックエージェント４の状態やＬＳＩ特性、フロアプランの進行状況、チップ制約など一つのブロックデータからは判別できないフロアプラン全体の構成をグローバルな視点から監視する。また、戦略エージェント３は、ブッロクエージェントを制御して実行を開始させ、停止させ、あるいは、ブロックエージェント４に与える制約を設定する。具体的には、機能ブロックの配置に関する制約を複数選択すると共に、適応度関数の傾きも選択する。
【００２１】
戦略エージェント３で使用する知識（戦略エージェント知識）は、上記の制約や、傾き等の選択条件のデータ入力部２から入力された情報に基づいて作成される。戦略エージェント知識には、フロアプラン設計に必要な全ての制約、その中で絶対満たさなければいけない制約（終了条件制約）、制約の選択条件、及び選択からの除外時間が含まれる。
【００２２】
ブロックエージェント４は、チップ上に配置される機能ブロック毎に１つずつ用意され、互いに直交するＸ軸、Ｙ軸の二次元座標を用いて対応する機能ブロックの適正な配置位置を求める。ブロックエージェント４は、Ｘ軸、Ｙ軸の各軸別に１つの制約に対して１つ又は複数の適応度関数を生成する適応度関数生成部８と、生成された適応度関数をＸ軸、Ｙ軸の各軸別について、それぞれ１つに合成して合成適応度関数を生成する適応度関数合成部９とを備えている。適応度関数合成部９は、生成された適応度関数を状況に応じて論理積や論理和等の適切な演算により合成する。
【００２３】
これらの適応度関数生成部８、合成部９で利用される知識（ブロックエージェント知識）は、外部のファイルやデータ入力部を介して入力された適応度関数生成・合成データに基づいて作成される。適応度関数は、特定のブロックエージェント４に対応する自ブロックの位置と制約の解消度（適応度）とをＸ軸とＹ軸とに射影した式である。各ブロックエージェント４は、適応度関数のみを用いて各機能ブロックの配置を決定する。なお、ブロックエージェント４は、現在までの状況やフロアプランの進行状況に合わせて、作成する適応度関数を許容範囲内で修正することができる。
【００２４】
データ出力部６は、フロアプラン設計処理の結果データと、処理の履歴を記録したログファイルとを出力する。表示部７は、生成・修正された適応度関数や合成適応度関数を表示し、経過や問い合わせに対する回答を表示する。
【００２５】
次に、ブロックエージェント４の適応度関数生成部８において生成される適応度関数の定義の具体例について説明する。実施形態では、各ブロックエージェントに与えられる制約として、「チップ上配置」（機能ブロックがチップの上に配置されなければならないという制約）、「重なり除去」（各機能ブロックは互いに重複してはならないという制約）、そして、「配線距離」（各機能ブロック間、機能ブロックとチップの端子間の配線はできる限り短い方がよいという制約）の３種類を用いる。各ブロックエージェント４は、これらの各制約について達成度を評価するための適応度関数を生成する。以下、各制約に関する適応度関数の生成について説明する。
【００２６】
最初に座標系の定義を説明する。各ブロックエージェントは、図３（Ａ）に示すように、長方形のチップ基板の一方の辺をＸ軸、これと直交する辺をＹ軸とする二次元座標を用いて対応する機能ブロックの位置を管理する。ここではチップの図中左上の角を原点（０，０）とし、右側に向かってＸ座標が増加し、下側に向かってＹ座標が増加するものとする。右下の角の座標を（ＸＥｎｄ，ＹＥｎｄ）とする。
【００２７】
チップ上に配置される長方形の機能ブロックＡについては、左上の角の座標（ＡＸ，ＡＹ）と、Ｘ軸方向のサイズＡＬＸ、Ｙ軸方向のサイズＡＬＹとによりチップ上で占める場所が特定される。適応度関数は、このブロックＡの左上の座標（ＡＸ，ＡＹ）がどのような値をとるときに、各制約をどの程度満足させることができるかを示す関数である。適応度関数は、制約を完全に満たすときに最大値「１」、制約を全く満たしていないときに最小値「０」をとるように定義される。
【００２８】
例えば、図３（Ａ）の例でブロックＡのＸ軸方向における「チップ上配置」の制約に関する適応度関数の値は、同図（Ｂ）に示すように、ＡＸがＰｏｉｎｔ１より小さい側、及びＰｏｉｎｔ２より大きい側では「０」、Ｐｏｉｎｔ１とＰｏｉｎｔ２との間では「１」となる。適応度関数は、関数の値が変化するポイントを順番に羅列して生成される。各ポイントについて、
ＰｏｉｎｔＸ＝（Ｘ座標、１つ前のＰｏｉｎｔから当該Ｐｏｉｎｔまでの値、傾きの有無）
のデータが中間データとして格納され、これに基づいて適応度関数が生成される。「傾きなし（Ｎ）」とは、適応度関数に「０」と「１」以外の値を許容しない場合であり、制約を満たさない場合を全て同一の状態として捉えることを意味する。これに対して「傾きあり（Ａ）」とは、適応度関数の「０」と「１」との間に中間値を認めて徐々に変化させる場合であり、制約を満たさない場合にも、その満たさない程度を関数値に反映させることを意味する。「チップ上配置」の制約については、傾きは考慮しない。
【００２９】
図３の例における「チップ上配置」の制約については、
Ｐｏｉｎｔ１＝（０，  ０，  Ｎ），
Ｐｏｉｎｔ２＝（ＸＥｎｄ−ＡＬＸ，  １，  Ｎ），
Ｐｏｉｎｔ３＝（ＸＥｎｄ，  ０，  Ｎ）
のデータを与えることにより適応度関数が生成される。
【００３０】
次に、「重なり除去」の適応条件に関する適応度関数の生成につき、図４及び図５を参照して説明する。なお、図４は「傾きなし」、図５は「傾きあり」の場合を示す。
【００３１】
図４（Ａ）に示すように、チップ（図示せず）上にブロックＡとブロックＢとを配置する場合、ブロックＡの配置位置を決定するブロックエージェント４は、ブロックＢを既存の位置で固定して考え、自ブロックＡを図中左側から右側に移動させた際にＡＸがどのような値をとるときにブロックＡの右端がブロックＢの左端と重なり、どのような値をとるときに重なりが解消されるかを適応度関数として表す。
【００３２】
図４（Ａ）の例でブロックＡのＸ軸方向における「重なり除去」の制約に関する「傾きなし」の適応度関数の値は、同図（Ｂ）に示すように、ＡＸがＰｏｉｎｔ１より小さい側、及びＰｏｉｎｔ２より大きい側では「１」、これらの間では「０」となる。そこで、図４（Ｂ）の例における「傾きなし」の「重なり除去」の制約については、Ｐｏｉｎｔ１＝（ＢＸ−ＡＬＸ，  １，  Ｎ），
Ｐｏｉｎｔ２＝（ＢＸ＋ＢＬＸ，  ０，  Ｎ），
Ｐｏｉｎｔ３＝（ＸＥｎｄ，  １，  Ｎ）
のデータを与えることにより適応度関数が生成される。
【００３３】
同様に、図５（Ａ）の例でブロックＡのＸ軸方向における「重なり除去」の制約に関する「傾きあり」の適応度関数の値は、同図（Ｂ）に示すように、ＡＸがＰｏｉｎｔ１より小さい側、及びＰｏｉｎｔ３より大きい側では「１」、Ｐｏｉｎｔ１からＰｏｉｎｔ２にかけてはＡＸが増加するにしたがって「１」から漸減し、Ｐｏｉｎｔ２の位置で「０」、そして、Ｐｏｉｎｔ２からＰｏｉｎｔ３にかけてはＡＸが増加するにしたがって「０」から漸増する。そこで、図５（Ｂ）の例における「傾きあり」の「重なり除去」の制約については、
Ｐｏｉｎｔ１＝（ＢＸ−ＡＬＸ，  １，  Ｎ），
Ｐｏｉｎｔ２＝（ＢＸ−ＡＬＸ＋（ＡＬＸ＋ＢＬＸ）／２，  ０，  Ａ），
Ｐｏｉｎｔ３＝（ＢＸ＋ＢＬＸ，  １，  Ａ），
Ｐｏｉｎｔ４＝（ＸＥｎｄ，  １，  Ｎ）
のデータを与えることにより適応度関数が生成される。
【００３４】
なお、図４、図５の例では、Ｘ軸方向の適応度関数の生成についてのみ説明したが、同様にしてＹ軸方向についても適応度関数が生成される。また、上記の例では特定のブロックエージェントが対象とする１つの機能ブロック（自ブロック）に対して他ブロックを１つのみ示したが、実際には他ブロックが多数存在するのが一般的である。そのような場合には、他ブロック１つに対して１つの適応度関数を生成し、１つの自ブロックに対して他ブロックの数だけ適応度関数が生成される。さらに、「重なり除去」の制約に関する適用度関数には「傾きあり」の例も示したが、これは設計途中で制約を緩和してレイアウトの自由度を確保するためであり、最終的なフロアプランとして出力される場合には、機能ブロックが重なることは許されないため、終了条件制約としては「重なり除去」の制約も「チップ上配置」の制約も「傾きなし」で満たされる必要がある。
【００３５】
「配線距離」の適応条件に関する適応度関数については個別の図示を省略するが、自ブロックに接続される配線１本ごとにＸ軸、Ｙ軸に関する適応度関数が１つずつ生成される。配線距離は短いほど望ましいが、上記の「チップ上配置」の制約や「重なり除去」の制約と比較すると、クリティカルな境界は存在しない。したがって、最終的なフロアプランを出力する際にも、「傾きあり」の条件で考慮すればよい。
【００３６】
各ブロックエージェント４の適応度関数合成部は、全ての制約に関する適応度関数をＸ軸、Ｙ軸ごとに合成して合成適応度関数を得る。関数が１制約・１軸につき複数個生成された場合は、１制約・１軸ごとに適応度関数合成部に関数全部を渡し、関数合成データの条件によって合成を行う。例えば、「チップ上配置」及び「重なり除去」の制約に関しては複数の適応度関数の値を積算して制約単位の合成適応度関数とし、「配線距離」の制約に関しては複数の適応度関数の値を加算して制約単位の合成適応度関数とする。
【００３７】
その後、再び適応度関数合成部９を使用し、制約ごとに求めた合成適応度関数を全て軸ごとに合成し、当該ブロックに関する総合的な合成適応度関数を求める。合成方法は、例えば、自ブロックの重なり面積が１０％未満、且つ、「重なり除去」の「傾きなし」が選択されている場合には、制約毎単位の合成適応度関数の値の論理積を総合的な合成適応度関数とし、「重なり除去」の「傾きあり」が選択されている場合には、制約毎単位の合成適応度関数の値の加算を総合的な合成適応度関数とする。
【００３８】
図６（Ａ）は、チップ上に２つの機能ブロックＡ，Ｂを配置した例を示している。これらのブロック間には１本の配線が接続されている。ブロックＡを着目するブロックエージェント４により配置される自ブロック、ブロックＢを他ブロックとする。図６（Ｂ），（Ｃ），（Ｄ）は、Ｘ軸方向に関する各種の適応度関数を示す。図６（Ｂ）は、図５（Ｂ）に示したものと同様の「重なり除去（傾きあり）」の制約に関する適応度関数、図６（Ｃ）は、図３（Ｂ）に示したものと同様の「チップ上配置」の制約に関する適応度関数、図６（Ｄ）は「配線距離」の制約に関する適応度関数の値をそれぞれ示している。図６（Ｅ）は、これら３つの制約単位の適応度関数の論理積として求められた総合的な合成適応度関数、図６（Ｆ）は、これら３つの制約単位の適応度関数を加算して求められた総合的な合成適応度関数を示す。
【００３９】
ブロックエージェント４は、軸ごとに生成された２つの合成適応度関数を用い、関数の値が最も高い地点に自ブロックＡを配置し、結果を中間データに反映させる。この際、ブロックエージェント４は、配置距離の差分（前回の配置位置の座標と、今回の配置位置の座標との差分）のログを取っておき、ブロック情報の一部として利用する。中間データは、ブロックエージェントの働きによって刻々と変化する各機能ブロックの位置をＸ軸、Ｙ軸の二次元座標として保持している。各ブロックエージェントは、対応する機能ブロック（自ブロック）の位置をポインタに基づいて中間データから読み込むと共に、「重なり除去」の条件を考慮する際に必要となる他ブロックの位置をポインタに基づいて中間データから読み込む。また、中間データを適時、データ出力部６や表示部７に渡すことにより、フロアプラン・ログデータを画面等に出力してもよい。
【００４０】
次に、図７〜図９に示すフローチャートにしたがって、実施形態の装置の作用を説明する。図７は、全体の制御の流れを示すメインのフローチャート、図８は、エージェント部による適応度関数生成、合成のサブルーチン、図９は、ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンを示す。
【００４１】
ステップＳ１では、データ入力部２を介してフロアプラン設計に必要なデータが入力される。ステップＳ２では、システム制御部１がエージェントインターフェース部５を通して、戦略エージェント３、ブロックエージェント群４を作成する。同時に、戦略エージェント３は、知識である制約条件データを読み込み、ブロックエージェント群４は、知識である適応度関数定義・修正・合成データを読み込み、各エージェントの知識も作成する。ブロックエージェントの知識には、適応度関数の定義と制約を緩める条件と割合、合成方法の選択条件が含まれている。更に、ブロックエージェントには適応度関数生成部８、適応度関数合成部９を持たせる。
【００４２】
ステップＳ３では、戦略エージェント３がフロアプランの基本的な制約やＬＳＩのチップ特性などから加わる制約と適応度関数の傾きを選択する。選択時にはエージェント特有の知識と推論を利用することで、複数の条件からの選択を可能とする。また、選択時に、ブロックエージェントの状態などや、フロアプラン全体の進行状況、チップ上の状況を考慮することで、ブロックエージェント４がループに陥ることを防ぐ。選択方法は、戦略エージェント３が、ブロックエージェント４の状態と、中間データ上にあるチップ情報等を判断基準として用いて、知識から制約と傾きを選択する。その後、戦略エージェント３がブロックエージェントに制約を与え、実行を開始させる。
【００４３】
制約の選択基準の具体例を以下に示す。例えば、「重なり除去」（傾きなし）の制約は、全ブロックの重なり割合が１０％未満、配置回数が２０回以上の時、連続選択回数５回未満、ループ状態（後述する）を発見していないという３つの条件を全て満たす場合に選択される。また、「重なり除去」（傾きあり）の制約は、「重なり除去」（傾きなし）が非選択であり、且つ、ループ状態を発見していない場合に選択される。「チップ上配置」（傾きなし）の制約は、ブロックエージェントの繰り返し回数が２０回を超えている場合に選択される。また、「配線距離」の制約については、一度終了条件を満たした場合は傾きを半分にする。
【００４４】
ステップＳ４では、各ブロックエージェント４が戦略エージェント３から与えられた制約と傾き、中間データ、ブロックエージェントの状態等を適応度関数生成部８に与え、適応度関数を生成する。ブロックエージェントの状態とは、前回の行動、同様な行動の繰り返し回数等の情報を示す。適応度関数の作成（生成・合成）フローチャートを図８に示す。
【００４５】
図８のフローチャートでは、ステップＳ１０１で各制約、Ｘ・Ｙ軸、必要なら対応ブロックごとに各軸に射影した上限１、下限０とする適応度関数を生成する。関数の生成方法は、前述のように、適応度関数の変化（適応度関数の変化するＰｏｉｎｔと適応度）を関数定義データから入手し、このデータと、中間データから、Ｘ軸方向、Ｙ軸方向それぞれに射影した関数を全ブロックについて生成する。
【００４６】
ステップＳ１０２では、必要に応じて自ブロックの現在までの状況とブロックの情報を元に適応度関数に修正を加える。例えば、戦略エージェント３が制約をゆるくした方がいいと判断した場合には、極小（＝０）としていた値に一定の値を加算して傾きを緩めることにより制約を緩くすることができる。例えば図１０は、「重なり除去」の制約を「傾きあり」で考慮する際に、極小値に一定の値を加算する例を示している。図１０（Ａ）は、図５（Ｂ）と同様の加算なしの状態、図１０（Ｂ）は極小値に０．２を加算した状態、図１０（Ｃ）は極小値に０．５を加算した状態を示す。これらの加算値は、適応度関数修正データを基準にして戦略エージェント３が判断する。加算することにより、極小値が０でなくなるため、他の制約との兼ね合いで重なりがある位置が選択される可能性が高くなる。
【００４７】
修正は、例えば「重なり除去」（傾きあり・なし）の制約については、ブロックエージェントの繰り返し回数が１０回を超えている場合に０．２を加算し、「チップ上配置」（傾きなし）の制約については、自ブロックの平均配線距離がチップ辺半分以上の場合に極小値に０．２を加算し、ブロック位置がチップ周辺部であり、且つ、全ブロックの重なり割合が１０％以上の場合に極小値に０．２を加算し、配置差分の距離が連続２０回「０」になっている場合に極小値に０．２を加算する。修正による制約緩和は、１イテレーション、すなわち、全ブロックエージェントが一回ずつ配置処理を実行する間であり、その時間が経過すると修正は取り消される。
【００４８】
ステップＳ１０３では、各軸の適応度関数を制約毎に加算して制約単位の合成適応度関数を生成し、ステップＳ１０４では、これらを軸毎に合成して総合的な合成適応度関数を生成し、ステップＳ１０５では、合成された結果の関数を出力して図７のフローチャートに戻る。
【００４９】
図７のステップＳ５では、合成適応度関数に基づいて各ブロックエージェント４が各機能ブロックを関数値の最も高い位置に配置する。続いてステップＳ６では、ブロックエージェント４がループ状態（機能ブロックが複数の特定位置に繰り返し配置され、最適位置に落ち着かない状態）に陥っていないか否かを判定する。判定のフローチャートは図９に示されている。
【００５０】
図９のステップＳ２０１では、対象となる機能ブロックが前回から移動したか否かを判断する。移動していなければ、ループ状態ではないため、「ループなし」を戻り値に図７のフローチャートに戻る。移動した場合には、ステップＳ２０２において現在位置と同じ位置に配置されたことがあるか否かをログから検索する。ここでは、Ｍ回分の位置のログを確保しておく。
【００５１】
ステップＳ２０３では、同じ位置を発見したか否かを確認する。発見されない場合には、ループ状態ではないため、「ループなし」を戻り値に図７のフローチャートに戻る。Ｎ回前に発見された場合には、ｉ回前の位置Ｐ（ｉ）と（ｉ＋Ｎ）回前の位置Ｐ（ｉ＋Ｎ）とを比較する。この比較をｉが０〜（Ｎ−１）になるまで繰り返す。ここで、Ｎの最大値は  Ｍ  ／２とする。
【００５２】
ステップＳ２０４の比較の結果、全てが同じ位置であった場合（Ｓ２０５，  Ｙｅｓ）には、ループ状態に陥っていると判断できるため、「ループ発見」を戻り値に図７のフローチャートに戻る。全てが同じ位置でなかった場合（Ｓ２０５，  Ｎｏ）には、ステップＳ２０６でさらに前のログに同じ位置がないか否かを判断する。同じ位置がなければ（Ｓ２０６，  Ｎｏ）、ループ状態ではないため、「ループなし」を戻り値に図７のフローチャートに戻る。Ｎ回前に同じ位置が発見された場合には、再びステップＳ２０４に戻って比較処理を繰り返す。
【００５３】
図７のステップＳ７では、図９のフローチャートからの戻り値により、ループを発見したか否かを判断する。ループを発見していなければ（Ｓ７、Ｎｏ）、ステップＳ８で戦略エージェント３が、ブロックエージェント４の状況を見て、フロアプランの設計が完成したかどうか終了判定を行う。終了条件は、フロアプランで最低限満たさなければいけない必要条件である制約、すなわち前記のように少なくとも「重なり除去」（傾きなし）、「チップ上配置」（傾きなし）を満たしているに満たされる。ループが発見された場合（Ｓ７，  Ｙｅｓ）、及び終了条件を満たしていない場合（Ｓ８，  Ｎｏ）には、再度、ステップＳ３で戦略エージェント３が制約を選択するところからやり直す。
【００５４】
終了条件を満たしている場合（Ｓ８，  Ｙｅｓ）には、戦略エージェント３はフロアプランの完了と判断してフロアプラン設計処理を一時停止させ、システム制御部１がユーザにフロアプランを終了してよいか否かを問合せる。もし、ユーザからＯＫが出れば、フロアプラン設計処理を終了する。ＯＫでない場合には、戦略エージェント３は、例えば「配線距離」の制約について前記の条件「一度終了条件を満たした場合は傾きを半分にする」にしたがって制約をより厳しく設定し（Ｓ１１）、ステップＳ４からの処理を続ける。
【００５５】
制約選択の例として、選択時に一時的に特定の条件を選択しないことで、ブロックエージェント４だけで解決できない場面を戦略エージェント３が解決する例を図１１〜図１３に示す。
図１１は、配線距離が長すぎて前述した「自ブロックの平均配線距離がチップ辺半分以上」の制約を満たすことができず、ブロックエージェント４がチップ上配置の制約を緩めた場合と、一定時間がたち、制約を戻した場合とで２つの位置の間を交互に移動してループ状態に陥っている。このような状態は、図９に示すループ発見の処理により戦略エージェント３により発見される。
【００５６】
ループ状態は、ブロックエージェント４のログの位置情報から発見する。例えば、以下のようなログが記録されていれば、ループ状態を発見することができる。
Ｐ（０）  ＝  （７０，  ５０）
Ｐ（１）  ＝  （１０，  ２０）
Ｐ（２）  ＝  （１０，  ２０）
Ｐ（３）  ＝  （７０，  ５０）
Ｐ（４）  ＝  （７０，  ５０）
Ｐ（５）  ＝  （１０，  ２０）
Ｐ（６）  ＝  （１０，  ２０）
Ｐ（７）  ＝  （７０，  ５０）
【００５７】
ループ状態が発見されているため、「重なり除去」を選択する前記の条件「ループ状態を発見していない」を満たすことができず、戦略エージェント３は「重なり除去」の制約を除外する。これより、ブロックエージェント４は、図１２に示すように、ブロック同士の重なりを考慮せずに、自ブロックを配置することができる。これによりループ状態を脱するため、戦略エージェント３は「重なり除外」の制約を選択する。これにより、図１３に示すように、他ブロックが移動して重なりが解消されている。このような制約の選択・除外により、フロアプラン全体をより適切な配置にすることができる。
【００５８】
また、戦略エージェント３が制約を緩くすることにより、ブロックエージェント４のみでは解決できない問題を解決する例を図１４〜図１７に示す。図１４はフロアプラン設計の所定の中間段階における各ブロックの配置を示す。配線距離が長いため、好ましい状態ではないが、ブロックエージェントのみでは、自ブロックは図１４の状態で安定して移動しない。そこで、「配置差分の距離が連続２０回「０」になっている」（つまり、動かなかった）ことがログから明らかになると、「チップ上配置」の制約が極小値に０．２加算することにより緩和される。これにより、ブロックエージェント４は、チップ上配置の制約を深く考慮に入れずに配線距離を短縮するよう自ブロックを配置する。配線の最短化のために、図１５の配置が一時的に得られるが、他ブロックが移動して図１６の状態となり、１イタレーション後、「チップ上配置」の制約が戻ると、図１７の配置となる。このような処理により、「チップ上配置」の制約を満たしつつ、図１４と比較して配線距離を短くすることができる。
【００５９】
上述した実施形態の構成によれば、設計者のノウハウが知識として組み込まれたマルチエージェントを利用しているため（エージェントの自律性、社会性）、状況に応じた判断で、選択や修正を行うことができる。そのため複数の制約全てを考慮した、妥当なフロアプランを生成できる。また、機能ブロックの配置決定には適応度関数しか利用しないため、ＬＳＩ設計手法の変更、個別対応、誤動作による修正等に伴ってＬＳＩ設計用のＣＡＤソフトが改版された場合にも、適応度関数生成・修正・合成データと、制約選択データとを修正するだけで対応できるため、従来のようなシステムの大幅な変更は不要となり、改版時のＣＡＤシステム設計者の負担を軽減させることができる。また、知識である制約選択条件や適応度関数生成・修正・合成の方法は、外部ファイルから読み込むことでシステムの修正なしに追加、削除、修正が容易となる。
【００６０】
さらに、従来は初期状態を適切に生成しないと、後の最適化が困難であったが、実施形態の装置では、各機能ブロックを重ねて同一箇所に配置するような初期状態から、適用度関数を用いて各ブロックを移動させることにより、最適な配置が可能となる。
【００６１】
なお、上記の実施形態では、制約条件として、「重なり除去」、「チップ上配置」、「配線距離」の３条件を主として例示したが、他の条件を合わせて考慮してもよい。例えば、各機能ブロックの動作するクロック周波数を制約条件として含むこともできる。また、チップの特定部分のみの使用を避けるため、チップ内の区域別の使用率を制約条件として含めてもよい。
【００６２】
（付記１）  １つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援方法において、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記データ入力ステップで入力されたデータに基づき、前記戦略エージェントが前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援方法。
【００６３】
（付記２）  さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記１に記載の集積回路用フロアプラン設計支援方法。
【００６４】
（付記３）  前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも１つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記１又は２に記載の集積回路用フロアプラン設計支援方法。
【００６５】
（付記４）  前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも１つを含むことを特徴とする付記１〜３のいずれかに記載の集積回路用フロアプラン設計支援方法。
【００６６】
（付記５）  前記ブロックエージェントは、互いに直交するＸ軸、Ｙ軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記Ｘ軸、Ｙ軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記１〜５のいずれかに記載の集積回路用フロアプラン設計支援方法。
【００６７】
（付記６）  コンピュータを、１つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置として機能させる集積回路用フロアプラン設計支援プログラムにおいて、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを入力するデータ入力ステップと、
フロアプラン全体を監視する戦略エージェント、及び該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントを作成するエージェント生成ステップと、
前記戦略エージェントが入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択する制約選択ステップと、
前記戦略エージェントにより選択された制約に基づき、前記各ブロックエージェントが、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成ステップと、
前記各ブロックエージェントが、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成ステップと、
前記各ブロックエージェントが、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置するブロック配置ステップと、
前記戦略エージェントが、前記配置ステップ後の前記各機能ブロックがフロアプランの必要条件を満たしているか否かを判断する終了判定ステップとを有し、前記必要条件を満たしている場合にはフロアプランの設計を終了し、満たしていない場合には前記制約選択ステップに戻って処理を繰り返すことを特徴とする集積回路用フロアプラン設計支援プログラム。
【００６８】
（付記７）  さらに、前記終了判定ステップで前記必要条件を満たすと判断された場合に、ユーザーへの問い合わせをする問い合わせステップを含み、ユーザーが処理の続行を指示した場合には、前記制約選択ステップで選択されていた制約の一部をより厳しくして前記適応度関数生成ステップからの処理を繰り返すことを特徴とする付記６に記載の集積回路用フロアプラン設計支援方法。
【００６９】
（付記８）  前記各ブロックエージェントが単独で解決できない問題が生じた場合に、前記戦略エージェントは、前記制約選択ステップにおいて、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも１つを必要に応じて除外し、あるいは緩和することにより前記問題を解決することを特徴とする付記６又は７に記載の集積回路用フロアプラン設計支援プログラム。
【００７０】
（付記９）  前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも１つを含むことを特徴とする付記６〜８のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【００７１】
（付記１０）  前記ブロックエージェントは、互いに直交するＸ軸、Ｙ軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成ステップでは、前記Ｘ軸、Ｙ軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成ステップでは、複数の適応度関数を各軸ごとに合成することを特徴とする付記６〜９のいずれかに記載の集積回路用フロアプラン設計支援プログラム。
【００７２】
（付記１１）  １つのチップに複数の機能ブロックを搭載して構成される集積回路用フロアプラン設計支援装置において、
装置全体を制御するシステム制御部と、
前記チップのサイズ及び前記各機能ブロックの配置に関するデータを前記システム制御部に入力するデータ入力部と、
前記システム制御部に入力されたデータに基づいて前記機能ブロックの配置に関する制約を複数選択し、フロアプラン全体を監視する戦略エージェントと、
該戦略エージェントの支配下で前記機能ブロック毎に１つずつ用意され、対応する機能ブロックの前記チップ上での配置位置を決定する複数のブロックエージェントと、
前記戦略エージェント及びブロックエージェントにより決定されたフロアプランのデータを出力する出力手段とを備え、
前記各ブロックエージェントは、前記戦略エージェントが選択した複数の制約を受け取り、これらの制約のそれぞれについて、対応する機能ブロックの当該制約に対する適応度を当該機能ブロックの位置の関数として表す適応度関数を生成する適応度関数生成部と、生成された複数の適応度関数を合成して合成適応度関数を生成する適応度関数合成部とを備え、前記合成適応度関数に基づいて最も適応度の高い位置に対応する機能ブロックを配置ことを特徴とする集積回路用フロアプラン設計支援装置。
【００７３】
（付記１２）  前記戦略エージェントは、前記各ブロックエージェントに与えた複数の制約のうちの少なくとも１つを必要に応じて一時的に除外し、あるいは一時的に緩和することにより、前記各ブロックエージェントが単独で解決できない問題を解決することを特徴とする付記１１に記載の集積回路用フロアプラン設計支援装置。
【００７４】
（付記１３）  前記戦略エージェントによって与えられる制約は、各機能ブロック間や機能ブロックとチップ端子間の配線距離、特定の機能ブロックが他の機能ブロックと位置的に重ならないこと、機能ブロックがチップ上に配置されること、の少なくとも１つを含むことを特徴とする付記１１または１２に記載の集積回路用フロアプラン設計支援装置。
【００７５】
（付記１４）  前記ブロックエージェントは、互いに直交するＸ軸、Ｙ軸の二次元座標により対応する機能ブロックの位置を管理し、前記適応度関数生成部は、前記Ｘ軸、Ｙ軸のそれぞれに関して適応度関数を生成すると共に、前記適応度関数合成部は、複数の適応度関数を各軸ごとに合成することを特徴とする付記１〜５のいずれかに記載の集積回路用フロアプラン設計支援装置。
【００７６】
【発明の効果】
以上説明したように、本発明によれば、マルチエージェントにより適応度関数を生成・合成してフロアプランを設計することにより、最適で品質の高いフロアプランを短時間で作成することができる。また、フロアプランの各制約への対応を制約の選択条件と制約ごとの適応度関数の生成で行っているため、今後のＬＳＩ技術発展に伴う制約の変更に対しても、容易に対応することができる。
【図面の簡単な説明】
【図１】実施形態にかかる集積回路用フロアプラン設計支援装置のシステム全体の構成を示すブロック図である。
【図２】図１の装置内のエージェントシステムを示すブロック図である。
【図３】（Ａ）はチップ上に配置された機能ブロックを示す平面図、（Ｂ）は「チップ上配置」に関する適応度関数を示すグラフである。
【図４】（Ａ）はチップ上に配置された機能ブロックを示す平面図、（Ｂ）は「重なり除去」（傾きなし）に関する適応度関数を示すグラフである。
【図５】（Ａ）はチップ上に配置された機能ブロックを示す平面図、（Ｂ）は「重なり除去」（傾きあり）に関する適応度関数を示すグラフである。
【図６】（Ａ）はチップ上に２つの機能ブロックを配置した例を示す平面図、（Ｂ），（Ｃ），（Ｄ）はＸ軸方向に関する各種の適応度関数を示すグラフ、（Ｅ）、（Ｆ）は合成適応度関数を示すグラフである。
【図７】実施形態にかかる設計装置の全体の制御の流れを示すメインのフローチャートである。
【図８】エージェント部による適応度関数生成、合成のサブルーチンである。
【図９】ブロックエージェントがループ状態に陥っているか否かを判定するためのサブルーチンである。
【図１０】「重なり除去」の制約を考慮する際に、極小値に一定の値を加算して修正する例を示すグラフである。
【図１１】ブロックエージェントがループ状態にある場合のチップ上のブロックの配置図である。
【図１２】図１１の状態から「重なり除去」の制約を解除した場合のチップ上のブロックの配置図である。
【図１３】図１２の状態から「重なり除去」の制約を再度選択した場合のチップ上のブロックの配置図である。
【図１４】ブロックエージェントが「配線距離」を短縮できずに安定した場合のチップ上のブロックの配置図である。
【図１５】図１４の状態から「チップ上配置」の制約を緩和した場合のチップ上のブロックの配置図である。
【図１６】図１５の状態から「配線距離」を短縮した場合のチップ上のブロックの配置図である。
【図１７】図１６の状態から「チップ上配置」の制約を戻した場合のチップ上のブロックの配置図である。
【符号の説明】
１  システム制御部
２  データ入力部
３  戦略エージェント
４  ブロックエージェント
５  エージェントインターフェース部
６  データ出力部
７  表示部
８  適応度関数生成部
９  適応度関数合成部
【図１】
2004259105.tif 000003
【図２】
2004259105.tif 000004
【図３】
2004259105.tif 000005
【図４】
2004259105.tif 000006
【図５】
2004259105.tif 000007
【図６】
2004259105.tif 000008
【図７】
2004259105.tif 000009
【図８】
2004259105.tif 000010
【図９】
2004259105.tif 000011
【図１０】
2004259105.tif 000012
【図１１】
2004259105.tif 000013
【図１２】
2004259105.tif 000014
【図１３】
2004259105.tif 000015
【図１４】
2004259105.tif 000016
【図１５】
2004259105.tif 000017
【図１６】
2004259105.tif 000018
【図１７】
2004259105.tif 000019