(57)【要約】【課題】マルチエージェントを応用し、自動でフロアプランを作成するＬＳＩフロアプラン設計支援システムを提供する。【解決手段】ＬＳＩフロアプラン設計支援システムにおいて、ＬＳＩを構成するブロック間の接続関係及び各ブロックのサイズに関する情報を含む設計データを中間データに変換する中間データ変換部と、ブロック配置、ＬＳＩの特性評価結果出力、当該特性評価結果出力に基づいて特性評価項目が所定の条件を満たしているか否かを判断する特性評価及びフロアプラン結果を出力するフェーズを含むフロアプラン設計のフロー手順を制御するフロー制御エージェント群と、ブロック配置の基本ルールを定義したブロックエージェント知識及び中間データに基づいて、各ブロックの配置をする複数のブロックエージェントから成るブロックエージェント群と、戦略エージェント知識に基づいて、ブロック全体の配置を制御する戦略エージェント群とを具備して構成する。【選択図】        図１
2004192197.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩフロアプラン設計支援システムであって、
ＬＳＩを構成するブロック間の接続関係及び各ブロックのサイズに関する情報を含む設計データを中間データに変換する中間データ変換部と、
ブロック配置、ＬＳＩの特性評価結果出力、当該特性評価結果出力に基づいて特性評価項目が所定の条件を満たしているか否かを判断する特性評価及びフロアプラン結果を出力するフェーズを含むフロアプラン設計のフロー手順を制御するフロー制御エージェント群と、
ブロック配置の基本ルールを定義したブロックエージェント知識及び前記中間データに基づいて、各ブロックの配置をする複数のブロックエージェントから成るブロックエージェント群と、
戦略エージェント知識に基づいて、ブロック全体の配置を制御する戦略エージェント群と、
を具備したことを特徴とするＬＳＩフロアプラン設計支援システム。
【請求項２】
前記戦略エージェント知識として、ＬＳＩ独自の仕様に関わる知識及び前記ブロックエージェント知識だけでは解決できない局面を解決する知識が含まれることを特徴とする請求項１記載のＬＳＩフロアプラン設計支援システム。
【請求項３】
前記フロー制御エージェント群は、前記フェーズの終了を判別する評価エージェントと、前記フェーズの終了に基づいて次のフェーズを選択する選択エージェントと、当該次のフェーズに該当する処理を実行する実行エージェントとを含むことを特徴とする請求項１記載のＬＳＩフロアプラン設計支援システム。
【請求項４】
前記フロアプラン設計のフェーズとして、前記特性評価で終了条件を満たしていない場合に前記中間データを更新するフェーズが含まれており、前記実行エージェントは、前記特性評価で終了条件を満たしていない特性評価項目について、その中間データの修正方法を定義した知識に基づいて、前記中間データを更新することを特徴とする請求項３記載のＬＳＩフロアプラン設計支援システム。
【請求項５】
前記ブロックエージェント群は、ブロックの面積及びブロックの動作周波数に基づく優先順位に従って、優先順位の高いブロックを優先的に配置することを特徴とする請求項１記載のＬＳＩフロアプラン設計支援システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩフロアプラン設計支援システムに関し、特に、最適な設計物を自動で作成するものである。
【０００２】
【従来の技術】
ＬＳＩシステム設計では、最初に論理設計が行われる。その成果物として、ブロック間の配線関係を示すネットリストが出力される。このネットリストには、各ブロックのサイズやブロック間の配線が定義されている。このネットリストを元に、一定の規則に従って、最適なブロック配置が行われる。このブロック配置をフロアプラン作成と呼ぶ。
【０００３】
従来、フロアプラン作業は、殆どが設計者の手作業で行われている。これは、フロアプラン作業において、ノウハウや経験が設計物に大きく影響するためである。もちろん、世の中には、フロアプラン設計支援ツールが存在し、人間がフロアプランを作成する手助けを行っている。例えば、特許文献１や特許文献２等があり、それぞれ、以下のような特徴をもつ。
【０００４】
特許文献１は、各ブロックの規模、配置を決定するフロアプランニング機能、各ブロックの面積と配置位置から配線長を算出し、評価関数を利用して、フロアプランの結果を評価する手段、フロアプランを変更する改善手段、変更したフロアプランを評価し、採用・不採用を判定して、フロアプランの更新及び繰り返しを行う制御手段、フロアプラン変更手段は、生起確率を与えて３つの変更手段から乱数により選択されことを開示している。その構成として、初期フロアプランニング決定部、フラアプランニング評価部及びフロアプランニング繰り返し改善部を開示している。
【０００５】
特許文献２は、回路特性、配置配線等に関する知識に基づくフロアプランルール、パターンレイアウトの設計ルールをもとに推論を行う機能、フロアプラン概略図を入力とし、適切な配置配線をモディファイする機能、モディファイされたフロアプラン図とアドバイスメッセージを出力する機能を開示している。その構成として、入力装置、出力装置、推論装置、表示装置、補助メモリ、フロアプラン推論機能がそれぞれ一つコンピュータ本体に接続または内蔵されており、フロアプラン知識ルールのデータ、フロアプラン知識ルール、セルブロックのデータを開示している。
【０００６】
【特許文献１】
特開平６−２４４２８０号公報
【０００７】
【特許文献２】
特開平２−２６４４５１号公報
【０００８】
【発明が解決しようとする課題】
しかしながら従来の技術には以下のような問題点がある。特許文献１では、フロアプランを最適にする手段が３つの手段に固定されており、その手法はランダムに選ばれる。このランダムに選ばれた手段が最適なものであるとは限らず、常に、最短経路で最適解を得ることができないと考えられ、問題である。特許文献２では、推論機構や、知識データベースを持ち最適なフロアプランを得ることができそうだが、この装置では初期フロアプランを人間が行わなければならない。しかし、この初期フロアプランが重要であり、この初期フロアプランの出来によってこのツールが効率良くフロアプランを調整してくれるか決まってくる。よって、初期フロアプランが手作業ということは、フロアプラン作業自体を殆ど人手で行うことになる。また、今日のような大規模のＬＳＩに対しては、推論機構が単一であるため処理が重く、品質の確保が難しいと考えられる。代表的なフロアプラン作成ツールにおいて上記のような問題点から、設計者の求める結果や性能が得られず、やはり人手メインにフロアプランを行っているのが現状である。しかし、近年、ＬＳＩは益々大規模化が進んでおり、人手フロアプランを行うことに対して限界が近づいている。
【０００９】
本発明の目的は、マルチエージェントを応用し、自動でフロアプランを作成するＬＳＩフロアプラン設計支援システムを提供することである。
【００１０】
【課題を解決するための手段】
本発明の一側面によれば、ＬＳＩフロアプラン設計システムであって、ＬＳＩを構成するブロック間の接続関係及び各ブロックのサイズに関する情報を含む設計データを入力する設計データ入力部と、前記設計データを中間データに変換する中間データ変換部と、ブロック配置、ＬＳＩの特性評価結果出力、当該特性評価結果出力に基づいて特性評価項目が所定の条件を満たしているか否かを判断する特性評価及びフロアプラン結果を出力するフェーズを含むフロアプラン設計のフロー手順を制御するフロー制御エージェント群と、ブロック配置の基本ルールを定義したブロックエージェント知識及び前記中間データに基づいて、各ブロックの配置をする複数のブロックエージェントから成るブロックエージェント群と、戦略エージェント知識に基づいて、ブロック全体の配置を制御する戦略エージェント群とを具備したことを特徴とするＬＳＩフロアプラン設計支援システムが提供される。
【００１１】
好ましくは、前記戦略エージェント知識は、ＬＳＩ独自の仕様に関わる知識及び前記ブロックエージェント知識だけでは解決できない局面を解決する知識である。
【００１２】
更に好ましくは、前記ブロックエージェント群は、ブロックの面積及びブロックの動作周波数に基づく優先順位に従って、優先順位の高いブロックを優先的に配置する。
【００１３】
【発明の実施の形態】
本発明の実施形態を説明する前に本発明の原理について説明する。図１は本発明の原理図である。図１に示すように、ＬＳＩフロアプラン設計支援システムは、設計データ２と、中間データ変換部４、中間データ６、フロー制御エージェント群８、ブロックエージェント群１０、戦略エージェント群１２及びシステム制御部１４を具備する。中間データ変換部４は、ＬＳＩを構成するブロック間の接続関係及び各ブロックのサイズに関する情報を含む設計データ２を中間データ６に変換する。
【００１４】
フロー制御エージェント群８は、ブロック配置、ＬＳＩの特性評価結果出力、当該特性評価結果出力に基づいて特性評価項目が所定の条件を満たしているか否かを判断する特性評価及びフロアプラン結果を出力するフェーズを含むフロアプラン設計のフロー手順を制御する。中間データ６に変換された時点では、フロー制御エージェント群８は、ブロック配置のフェーズが次のフェーズであると判断する。ブロックエージェント群１０を構成する各ブロックに対して生成されたブロックエージェントは、ブロック配置の基本ルールを定義したブロックエージェント知識及び中間データ６に基づいて、各ブロックの配置をする。戦略エージェント群１２は、戦略エージェント知識に基づいて、ブロック全体の配置を制御する。
【００１５】
ブロック配置が終了すると、フロー制御エージェント群８は、次に実行するべきフェーズがＬＳＩの特性評価結果出力であると判断して、ブロック配置されたＬＳＩの特性評価結果を出力する。フロー制御エージェント群８は、特性評価結果出力されると、特性評価項目毎に所定条件を満たしているかどうかを判断するべく特性評価のフェーズを実行する。特性評価項目で所定条件を満たしていない場合には、フロー制御エージェント群８は、特性評価項目が所定条件を満足するよう中間データ６を修正するフェーズを実行する。フロー制御エージェント群８は、中間データ６が修正されたので、次のフェーズがブロック配置のフェーズであると判断する。以下、ブロック配置、特性評価項目出力、特性評価、中間データ６の修正の各フェーズを全ての特性評価項目が所定条件を満足するまで実行する。このようにして、フロアプランの自動化が可能となる。
【００１６】
図２は本発明の実施形態によるＬＳＩフロアプラン設計支援システムの構成図である。図２に示すように、ＬＳＩフロアプラン設計支援システムは、設計データ５０、設計データ入力部５２、システム制御部５４、フロー制御エージェントインタフェース部５６、中間データ変換部５８、ブロックエージェントインタフェース部６０、戦略エージェントインタフェース部６２、フロー制御エージェント群６４、ブロックエージェント群６６、戦略エージェント群６８、中間データファイル７０、フロー制御知識ＤＢ７２、ブロックエージェント知識ＤＢ７４、戦略エージェント知識ＤＢ７６、設計データ／ログ出力部７８、表示部８０、設計データ８２及び結果ファイル８４を含む。ＬＳＩフロアプラン設計支援システムは、ワークステーションやパソコン並びにハードディスクやプリンタ等の周辺機器により実現される。
【００１７】
設計データ５０は、論理設計のアウトプットである、各ブロックのサイズ、プロックの動作周波数等のブロック情報及びブロック間の接続関係を示すネットリストである。設計データ入力部５２は、システム制御部５４を通して、設計データ５０を中間データ変換部５８に出力する。システム制御部５４は、設計データ入力部５２、設計データ／ログ出力部７８、フロー制御エージェントインタフェース部５６、中間データ変換部５８、ブロックエージェントインタフェース部６０及び戦略エージェントインタフェース部６２間のインタフェースをする。フロー制御エージェントインタフェース部５６は、次の機能を有する。（１）フロー制御エージェント群６４を生成する。（２）システム制御部５４とフロー制御エージェント群６４間のインタフェースをする。
【００１８】
中間データ変換部５８は、設計データ５０からフロアプラン作成用の中間データファイル７０に変換する。中間データファイル７０は、上述の中間データ変換部５８の出力データ７０＃１と後述のブロックエージェント群６６や戦略エージェント群６８によるフロアプラン結果データ７０＃２とがある。ブロックエージェントインタフェース部６０は、次の機能を有する。（１）ブロックエージェント群６６を生成する。（２）システム制御部５４とブロックエージェント群６６間のインタフェースをする。戦略エージェントインタフェース部６２は、次の機能を有する。（１）戦略エージェント群６８を生成する。（２）システム制御部５４と戦略エージェント群６８間のインタフェースをする。
【００１９】
図３は、図２中のフロー制御エージェント群６４を構成図である。図３に示すように、フロー制御エージェント群６４は、評価エージェント６４＃１、選択エージェント６４＃２及び実行エージェント６４＃３を有する。評価エージェント６４＃１は、次の機能を有する。（１）フロー制御ＤＢ７２中の解析知識ＤＢ７２＃１を参照して、どの処理種別（フェーズ）が終了したか及びフェーズが特性評価であるとき特性評価項目が終了条件を満足しているか否かを判断する。（２）終了したフェーズ又は特性評価項目が終了条件を満足しているか否かを選択エージェント６４＃２に通知する。
【００２０】
選択エージェント６４＃２は、評価エージェント５４＃１より上記通知を受けると、通知の内容を条件として、フロー制御ＤＢ７２中のフロー知識ＤＢ７２＃２を参照して、当該条件に該当する次の処理するべきフェーズを求める。条件としては、後述するように、中間データファイル７０＃１に更新がかかった、ブロック配置が終了した等がある。一方、フェーズとしては、後述するように、ブロック配置、特性評価結果出力、特性評価等がある。（３）当該フェーズを実行するように実行エージェント６４＃３に指示する。
【００２１】
実行エージェント６４＃３は、選択エージェント６４＃２より処理するべきフェーズを受け取ると、後述する実行知識ＤＢ６４＃３を参照して、当該フェーズに該当する行動を実行若しくは実行の制御を行う。例えば、フェーズが「ブロック配置」であるとき、行動すべき内容として、ブロックエージェント群６６と戦略エージェント群６８の生成及びこれらのエージェント群６６，６８が利用する知識が示されており、実行エージェント６４＃３は、フロー制御エージェントインタフェース部５６を通してブロックエージェントインタフェース部６０及び戦略エージェントインタフェース部６２にブロックエージェント群６６と戦略エージェント群６８の生成及び利用する知識を通知する。
【００２２】
ブロックエージェント群６６は、設計データ５０に含まれる各ブロックやハードマクロ等毎に生成されるブロックエージェントより構成される。各ブロックエージェントは、後述するブロックエージェント知識ＤＢ７４に格納された基本ルール、並びに中間データファイル７０＃１に格納された中間データより該当するブロックのブロックサイズ、動作周波数及びブロック間配線を元に、ブロックの配置及び再配置を行い、中間データファイル７０＃２の作成及び更新を行う。
【００２３】
戦略エージェント群６８は、実行時にユーザ指定した作製しようとしているＬＳＩの特性による戦略を司る戦略エージェント及び重なりが解決できない場合や今後の処理の方向性を決定するなどの状態となった場合のブロックエージェントに強制的に命令を行い解決に誘導する戦略を司る戦略エージェントから構成される。即ち、戦略エージェント群６８は、（１）戦略エージェント知識ＤＢ７６に格納された知識よりＬＳＩ製品毎の特性を反映したフロアプランを作成、（２）ブロックエージェントの知識だけでは解決できない局面の解決をする。
【００２４】
ＬＳＩ製品毎の特性を反映したルールには、後述するように、例えば、「ハードマクロが多数あるためハードマクロブロックを割り当てる」というルールがある。また、ブロックエージェントの知識だけでは解決できない局面の解決をするためのルールには、後述するように、例えば、重なりを解決するルールとして、「空きスペースを見つけ、全体をシフトさせる」というルールがある。
【００２５】
設計データ／ログ出力部７８は、フロアプラン結果データ７０＃２から設計データ８２への変換及び実行ログや特性評価結果を結果ファイル８４に出力する。表示部８０は、ブロック配置結果、評価結果等を画面に表示する。フロー制御知識ＤＢ７２はフロー制御のための知識データベースであり、図３に示すように、解析知識ＤＢ７２＃１、フロー知識ＤＢ７２＃２及び実行知識ＤＢ７２＃３から構成される。
【００２６】
図４は図３中の解析知識ＤＢ７２＃１の一部を示す図である。解析知識ＤＢ７２＃１の一部は、図４に示すように、仮定（ＩＦ）とフェーズの種類又はフェーズが特性評価であるときの特性評価で終了条件を満たしているか否か（ＴＨＥＮ）の関係を示すものである。例えば、仮定としては、「前回の保存の日付のデータと現在のデータとに差異があるがある」などである。フェーズの種類等としては、「中間データが入力（更新）された」、「ブロック配置が終了した」、「特性評価結果が出力された」、「特性評価で終了条件を満たしていない」、「特性評価で終了が選ばれた」等である。
【００２７】
図５は図３中の解析知識ＤＢ７２＃１の一部を示す図である。図５に示すように、解析知識ＤＢ７２＃１の一部は、評価項目と終了条件を示している。例えば、評価項目がＡＣ特性である場合、終了条件は、評価用ファイル名で示される特性評価の評価値１が３４％以上であること、評価値２が２３４５以上、２３４１未満であること、出力されるべき出力チェックメッセージが０００１，０００２，０００３であること、出力禁止メッセージ９９１０，９９１３，９９５０〜９９９９が出力されていないことである。
【００２８】
図６は図３中のフロー知識ＤＢ７２＃２の構成図である。図６に示すように、フロー知識ＤＢ７２＃２にはフェーズ項目と条件の関係が格納されている。フェーズ項目とは、次に処理すべき内容であり、例えば、「ブロック配置」、「特性評価結果出力」、「特性評価」等である。条件とは、フェーズの状態であり、例えば、「中間データに更新がかかった」、「ブロック配置が終了した」、「特性評価結果出力された」等である。
【００２９】
図７は図３中の実行知識ＤＢ７２＃３の一部の構成図である。図７に示すように、実行知識ＤＢ７２＃３は、フェーズ項目と行動との関係が格納されている。フェーズ項目とは、フロー知識ＤＢ７２＃２中のものと同様である。行動とは、フェーズ項目に該当する実行内容を示すものである。例えば、フェーズ項目が「ブロック配置」であるとき、行動として、「ブロックエージェントと戦略エージェントの生成」及びブロックエージェントが利用する知識及び戦略エージェントが利用する知識について定義されている。フェーズ項目が「特性評価結果出力」であるとき、行動として、評価項目及び評価手段が定義されている。評価項目は、「ＡＣ特性」、「タイミング」、「電源」等である。評価手段は、評価項目がＡＣ特性の場合、ＡＣ特性の評価手順を示すものであり、「ＡＣ特性評価ツールの起動」、「実行コマンド」等である。
【００３０】
図８は図３中の実行知識ＤＢ７２＃３の一部の構成図である。図８に示すように、実行知識ＤＢ７２＃３の一部は、評価項目が終了条件を満足しない場合の修正方法を示しており、評価項目、小項目、中間データ７０＃１の修正場所、修正値の計算式が定義されている。例えば、評価項目がＡＣ特性であるとき、評価値１はチップ接続ブロックの配置が不適当であるとき、範囲外の値が出力されることから、その入出力値が計算式１に従って算出されて、チップ接続ブロックの配置に関わる中間データファイル７０＃１が修正される。出力されるべき出力チェックメッセージが出力されていなとき、各出力チェックメッセージ毎に次のように処理される。０００１の場合は、計算式３により計算されて、接続関係（ブロック間の距離が一定以下に規制すること）に関わる中間データファイル７０＃１が修正される。０００２の場合は、計算式４により計算されて、結線強度に関わる中間データファイル７０＃１が修正される。０００３は計算式５により計算されて、チップ面積が最小となるよう中間データファイル７０＃１を修正する。出力禁止メッセージについては、各出力禁止メッセージ毎に次のように処理される。９９１０の場合は、計算式６より計算されて、ＲＡＭ配置禁止領域（ＲＡＭ配置を禁止する領域を定義すること）に関わる中間データファイル７０＃１が修正される。９９１３の場合は、計算式７により計算されて、電源配線領域（電源配線領域を許可／禁止する領域を定義すること）に関わる中間データファイル７０＃１が修正される。また、９９５０の場合は、計算式８により計算されて、チップ使用率に関わる中間データファイル７０＃１が修正される。
【００３１】
図９はブロックエージェント知識ＤＢ７４の構成図である。図９に示すように、ブロックエージェント知識ＤＢ７４は、ブロック配置の基本ルールが定義されている。例えば、「面積が大きい場合、最初に最適化」、「重なっている場合、近くの重ならない位置に移動する」、「結線本数が多いブロック同士は近い」等のルールである。
【００３２】
図１０は設計するＬＳＩ独自の仕様を反映させる図２中の戦略エージェント知識ＤＢ７６を示す図である。図１０に示すように、ＬＳＩ独自の仕様を反映させる知識として、例えば、「高集積性を最優先する」、「チップと接続のあるブロックから接続する」、「ハードマクロが多数あるためハードマクロブロックを割り当てる」等である。このＬＳＩの仕様としてＲＡＭ等のハードマクロで定義されたブロックが多数あり、ハードマクロブロックを新たに作成した方が良いときに、上記の最後のルールが適用される。
【００３３】
図１１はブロックエージェントの知識だけでは解決できない局面の解決のための図２中の戦略エージェント知識ＤＢ７６を示す図である。図１１に示すように、局所の解決の知識は、重なり解消方法やブロック収納方法等についての知識である。重なり解消方法としては、「一番大きいブロックを探し分割しても良い場合はブロック分割をする」、「空きスペースを見つけ、全体をシフトさせる」等である。ブロック収納方法としては、「結線度が高く一列に並ぶブロックを見つけ辺をそろえる」等である。これらの知識は、ブロックエージェントは基本的なルール沿ってブロック配置をするが、全体の状況を判断して動くことができないことから、グローバルな観点より判断するためである。
【００３４】
以下、ＬＳＩフロアプラン設計支援システムの動作説明をする。
【００３５】
図１２はフロアプランのフローチャートである。以下、この図面を参照して、ＬＳＩフロアプラン設計支援システムの動作説明をする。
【００３６】
（ａ）  中間データファイル７０＃１の作成
ステップＳ２において、中間データ変換部５８は、入力設計データ５０を入力して、中間データに変換する。ステップＳ４において、中間データを中間データファイル７０＃１に格納する。
【００３７】
（ｂ）  ブロックエージェント群６６及び戦略エージェント群６８の生成
図１３はブロックエージェント群６６及び戦略エージェント群６８の生成のフローチャートである。中間データファイル７０＃１が作成されると、システム制御部５４よりフロー制御インタフェース部５６に通知される。フロー制御インタフェース部５６は、フロー制御エージェント群６４を生成する。フロー制御エージェント群６４中の評価エージェント６４＃１は、中間データファイル７０＃１が作成されたので、「中間データに更新がかかった」旨を選択エージェント６４＃２に通知する。選択エージェント６４＃２は、条件が「中間データに更新がかかった」であるので、フェーズ項目「ブロック配置」を実行エージェント６４＃３に通知する。ステップＳ３０において、実行エージェント６４＃３はフェーズ項目が「ブロック配置」であるので、実行知識ＤＢ７２＃３より、ブロックエージェントと戦略エージェントの生成及びこれらのエージェントが利用する知識をフロー制御エージェントインタフェース部５６に通知する。ステップＳ３２において、システム制御部５４は、ブロックエージェントインタフェース部６０及び戦略エージェントインタフェース部６２を呼び出す。
【００３８】
ステップＳ３４において、ブロックエージェントインタフェース部６０は、中間データファイル７０を参照して、各ブロック毎のブロックエージェントから成るブロックエージェント群６６の生成及び利用するブロックエージェント知識ＤＢ７４を通知する。ステップＳ４０において、戦略ブロックエージェントインタフェース部６２は、戦略エージェント群６８の生成及び利用する戦略エージェント知識ＤＢ７６を通知する。
【００３９】
（ｃ）  ブロック配置
図１４は戦略エージェント群６８とブロックエージェント群６６の関係を示す図である。図１５はブロック配置のフローチャートである。ブロック配置は戦略エージェント群６８とブロックエージェント群６６が行う。ステップＳ１００において、ブロックエージェント群６６はＬＳＩ製品のルール（ミクロ問題）に関する知識をブロックエージェント知識ＤＢ７４より取り込む。ＬＳＩ製品のルールに関する知識として、図９に示したように、例えば、「結線本数が多いブロック同士は近い」、「面積が大きいブロックは最初に最適化」、「信号の流れを考慮する」等がある。これらのルールに従って、ブロックエージェント群６６を構成する各ブロックエージェントは、該当するブロックを配置する。ステップＳ１０２において、戦略エージェント群６８は、戦略エージェント知識ＤＢ７６中の図１０に示したＬＳＩ製品の独自の仕様を反映させるルール（マクロ問題）の監視を開始する。ステップＳ１０４において、戦略エージェント群６８は、戦略エージェント知識ＤＢ７６中の図１１に示した局所問題の発生を監視する。ステップＳ１０６において、ブロックエージェント群６６は、以下に示すように、ブロック配置をする。
【００４０】
図１６はブロック配置対象のＬＳＩのブロックＡ〜Ｆについて、ブロック間の接続本数を示すブロック説明図である。例えば、ブロックＢとブロックＣ間の接続本数が２０本であることを示している。図１７はブロックＡ〜Ｆの各ブロックの面積及びスピードを示すブロック説明図である。ここで、スピードは一例としてブロックの動作周波数により表している。図１８〜図２１はブロックエージェント知識を利用したブロック配置の経過を示す図である。図１８は、初期配置直後のブロック配置例を示す図である。「結線本数が多いブロック同士は近い」というルールに従って初期配置を行う場合、ブロックエージェント群６６は、既に配置されているブロックに最も接続本数が多いブロックを配置する。例えば、ブロックＡ〜Ｆについては、図１９に示すように、「結線本数が多いブロック同士は近い」というルールを受けて、図１６に示したブロック間の接続本数に従って、結線本数が多いブロック同士が近くなるように、ブロック配置を行っており、接続結線本数が多いブロック同士がさらに近くに寄っている。但し、ブロック間が重ならないというルールは未だ考慮されていないため、一部のブロックについては他のブロックと重なっている。
【００４１】
また、「面積が大きいブロックは最初に最適化」というルールから、最大面積のブロックから順にブロック配置の最適化が行われる。例えば、図１７に示すブロックＡ〜Ｆでは、ブロックＥの面積が最も大きいので、ブロックＥに該当するプロックエージェントはブロックＥの配置を最初に最適化する。図２０は、「面積が大きいブロックは最初に最適化」というルールから、ブロックＥが最適化され調整が入った図を示している。
【００４２】
また、ブロックエージェント群６６は、「スピードが高いものは優先度を高くする」というルールに従って、ブロック配置を行う。例えば、スピードが高いものは優先度を高くするとは、スピードの高いブロックの入力ピンに接続される他のブロックの出力ピンが近い位置となるように、スピードの高いブロックや当該他のブロックを移動したり、この移動に伴い、スピードの低いブロックを移動するように配置することをいう。例えば、図２１に示すように、このルールに従って、ブロックＢとブロックＤの位置を最適化したとき、ブロックＢ，Ｄよりも低速ブロックでブロックＢに重なるブロックＦを移動し、高速ブロックＥに接続されるブロックＤをブロックＥの近くに配置する。このように、スピードが高いブロックを優先的に配置する。
【００４３】
最後に、「重なっているブロックは近くの重ならない位置に移動する」というルールに従って、重なるブロックが無いようにブロック配置する。例えば、図２２に示すように、ブロックＦについては、他のブロックと重なっているので、ブロックＦが重ならないように近くの位置に移動する。このようにして、ルールに従って、ブロック配置を行う。しかし、設計するＬＳＩ独自の仕様を反映したり、ブロックエージェントの知識だけでは解決できない局面が発生する場合がある。そこで、戦略エージェント群６８は、局所的な行動基準や行動不能時の強制的行動をクローバルな視点で捉え、図１４に示すように、ブロックエージェント６６を制御することにより、設計するＬＳＩ独自の仕様を反映させたり、ブロックエージェントの知識だけではだけでは解決できない局面の解決をする。
【００４４】
図１５中のステップＳ１０８において、戦略エージェント群６８は、マクロ問題を満たしているか否かを判断する。マクロ問題を満たしていなければ、ステップＳ１２０に進む。ステップＳ１１０において、戦略エージェント群６８は、局所問題が発生していないかを判断する。局所問題が発生している場合は、ステップＳ１３０に戻る。
【００４５】
図２３は、戦略エージェント群６８による設計するＬＳＩ独自の仕様を反映させるブロック配置を説明する図である。ステップＳ１２０において、戦略エージェント群６８は、設計するＬＳＩ独自の仕様を反映させる。例えば、このＬＳＩの仕様として、ＲＡＭ等のハードマクロが多数ある場合には、ハードマクロブロックを新たに作成した方が良いため、「ハードマクロが多数あるためハードマクロブロックを割り当てる」というルールが定義されている。戦略エージェント群６８は、図２３に示すように、ブロックＡ〜Ｄがハードマクロである場合には、これらのブロックＡ〜Ｄを１つにしたブロックをハードマクロブロックとしてブロック領域を割り当てる。
【００４６】
ステップＳ１３０において、戦略エージェント群６８は、図１１に示した戦略エージェント知識に従って局所問題を解決する。図２４〜図２６は局所問題の解決法を説明するための図である。ここでは、ブロックエージェント群６６はブロックエージェント知識ＤＢ７４に格納された基本的なルールに沿って動作するが、全体の状況を判断してブロック配置を行うことはできない。例えば、図２４に示すようにブロックがＬＳＩチップの片側によってしまい、ブロックＦのように他のブロックと重なってしまい、ブロックの重なりが解決できない場合がある。このような場合は、次のようにしてブロック重なりを解決している。
【００４７】
戦略エージェント群６８は、重なりを解消するために、「いちばん大きいブロックを探し分割しても良い場合はブロック分割を行う」、「空きスペースを見つけ、全体をシフトさせる」等のルールを適用する。ここでは、図１１に示すように、「空きスペースを見つけ、全体をシフトさせる」というルールを適用する。このルールより戦略エージェント群６８は右側に空きスペースがあることを認識して、図２５に示すように、左側に寄っているブロック全体を右側にシフトし左側に空きスペースを作成する。その後、図２６に示すように、左側の空きスペースに一部のブロックＡ，Ｂ，Ｄ，Ｆを移動し、更に、重なっているブロックＦを移動することにより、ブロックの重なりを解決する。また、結線度が高く一列に並ぶブロックを見つけ、ブロックの辺が揃うようにブロックを移動することによりブロックを収納する。
【００４８】
ブロック配置によるフロアプラン結果は、中間データファイル７０＃２に格納される。ブロック配置が終了すると、戦略エージェント群６８は、戦略エージェントインタフェース部６２及びシステム制御部５４を通してフロー制御エージェントインタフェース部５６にブロック配置終了を通知する。フロー制御エージェントインタフェース部５６は、評価エージェント６２＃１にブロック配置終了メッセージを出力する。
【００４９】
（ｄ）  特性評価結果出力
評価エージェント６２＃１は、フロー制御エージェントインタフェース部５６よりブロック配置終了メッセージが有ったので、ブロック配置が終了したものと判断して、選択エージェント６２＃２にブロック配置終了を通知する。選択エージェント６２＃２は、条件が「ブロック配置が終了した」なので、フェーズ項目が特性評価結果出力であると判断し、「特性評価結果出力」を実行エージェント６２＃３に通知する。
【００５０】
図１２中のステップＳ８において、実行エージェント６２＃３は、フェーズ項目が「特性評価結果出力」なので、実行知識ＤＢ７２＃３を参照して、中間データファイル７０＃２に格納されたブロック配置に対して、ＡＣ特性、タイミング、電源等の各評価項目について、評価手段を用いて評価し、ステップＳ１０において、特性評価結果を出力する。評価エージェント６２＃１は、前回の実行が特性評価でＡＣ特性評価結果ファイル、タイミング評価結果ファイル、電源評価結果ファイルが存在しているので、「特性評価結果出力された」ことを選択エージェント６２＃２に通知する。選択エージェント６２＃２は、条件が「特性評価結果出力された」なので、次に実行するべきフェーズ項目が「特性評価」であることを実行エージェント６２＃３に通知する。
【００５１】
特性評価フェーズでは、実行知識ＤＢ７２＃３中に評価項目及び結果解析方法が定義されている。実行エージェント６２＃３は、フェーズ項目が「特性評価」なので、評価項目に関連した特性評価結果の解析を行う。例えば、ＡＣ特性評価では、ＡＣ特性のレポートファイル解析ツールがレポートファイルの解析を行って、ＡＣ特性の評価用ファイルを作成する。タイミング特性評価では、環境や入力ファイル等をパラメータとして外部の解析モジュールに与え、外部の解析モジュールがタイミング特性結果の解析を行って、タイミング特性結果の評価用ファイルを作成する。また、電源評価では、電源評価ツールを用いて、レポートファイルの解析を行って、評価用ファイルを作成する。
【００５２】
（ｅ）  特性評価
図５に示したように、解析知識ＤＢ７２＃１に評価項目及び終了条件が定義されている。評価項目がＡＣ特性の場合には、評価用ファイル名を参照して、評価用ファイルの特性評価について、その値、出力チェックメッセージ及び出力禁止メッセージが終了条件を満足しているか否かを判断する。評価項目がタイミング特性の場合には、評価用ファイル名を参照して、評価用ファイルのタイミング特性について、最大遅延、その値、出力チェックメッセージ及び出力禁止メッセージが終了条件を満足しているか否かを判断する。また、評価項目が電源特性の場合には、評価用ファイル名を参照して、評価用コードや出力チェックメッセージが終了条件を満足しているか否かを判断する。評価エージェント６２＃１は、ＡＣ特性、タイミング特性及び電源特性の全評価項目について、終了条件を満たしている場合、「特性評価で終了条件を満足した」と判断し、少なくとも、どれか１つの評価項目について、終了条件を満たしていない場合、「特性評価で終了条件を満たしていない」と判断する。
【００５３】
図１２中の中のステップＳ１４において、選択エージェント６２＃２は、「特性評価で終了条件を満たしていない」か「特性評価で終了が選ばれた」のいずれであるかを判断する。特性評価で終了が選ばれた場合は、ステップＳ２２に進み、結果レポート・フロアプラン結果出力フェーズに進む。特性評価で終了条件を満たしていない場合は、ステップＳ２０に進み、中間データの修正フェーズに進む。
【００５４】
（ｆ）  中間データの修正
図１２中のステップＳ２０において、実行エージェント６２＃３は、フェーズ項目が「中間データの修正」なので、実行知識ＤＢ７２＃３を参照して、終了条件を満足しない評価項目の小項目について、計算式により計算をして、修正場所に関わる中間データファイル７０＃１を修正する。終了条件を満足しない全ての小項目について中間データの修正を行う。
【００５５】
評価エージェント６２＃１は、前回の保存日付の中間データと現在の中間データの差異をチェックすると、中間データの修正により差異があるので、中間データ（入力）に更新がかかったものと判断する。選択エージェント６２＃２は条件が中間データ（入力）に更新がかかったであるので、図１２中のステップＳ６に戻り、ブロック配置のフェーズに進む。実行エージェント６２＃３は、修正箇所の影響範囲によって、初期配置からやり直す場合と、現在の状態から継続してブロック配置を実行する場合を判断する。以下、上述したと同様にして、終了条件が満足されるまで、ステップＳ６，Ｓ８，Ｓ１２，Ｓ１４，Ｓ２０を繰り返す。
【００５６】
（ｇ）  結果レポート・フロアプラン出力
実行エージェント６２＃３は、フェーズ項目が結果レポート・フロアプラン結果出力なので、フロー制御エージェントインタフェース部５６及びシステム制御部５４を通して、設計データ／ログ出力部７８に結果レポート・フロアプラン結果出力を指示する。図１２中のステップＳ２２において、設計データ／ログ出力部７８は、中間データファイル７０＃２より設計データ８２を出力し、特性評価結果レポートを結果ファイル８４に出力する。また、今までの実行ログを出力する。全ての出力を終えた後、フロー制御エージェントインタフェース部５６はフロー制御エージェント群６４を消滅させる。
【００５７】
図２７はブロックＡ〜Ｗについてのフロアプラン作成途中経過を示す図である。図２８は、フロアプラン結果を示す図である。図２７，２８中の数字はブロックの面機を表している。図２７に示すようにフロアプラン作成途中では、ブロック配置が最適化されておらず、チップ面積が大きくなっている。上述したようにブロックエージェント群６６及び戦略エージェント群６８によるブロック配置、特性評価結果、特性評価、中間データ修正のフェーズを繰り返すことにより、図２８に示すように、チップ面積、ブロック間の配線距離による遅延等の仕様を満たすフロアプラン結果が得られる。
【００５８】
本発明は以下の付記を含むものである。
【００５９】
（付記１）  ＬＳＩフロアプラン設計支援システムであって、
ＬＳＩを構成するブロック間の接続関係及び各ブロックのサイズに関する情報を含む設計データを中間データに変換する中間データ変換部と、
ブロック配置、ＬＳＩの特性評価結果出力、当該特性評価結果出力に基づいて特性評価項目が所定の条件を満たしているか否かを判断する特性評価及びフロアプラン結果を出力するフェーズを含むフロアプラン設計のフロー手順を制御するフロー制御エージェント群と、
ブロック配置の基本ルールを定義したブロックエージェント知識及び前記中間データに基づいて、各ブロック配置をする複数のブロックエージェントから成るブロックエジェント群と、
戦略エージェント知識に基づいて、ブロック全体の配置を制御する戦略エージェント群と、
前記フロー制御エージェント群、ブロック配置エージェント群及び戦略エージェント群間のインタフェースをするシステム制御部と、
を具備したことを特徴とするＬＳＩフロアプラン設計支援システム。
【００６０】
（付記２）  前記フロー制御エージェント群は、前記フェーズの終了を判別する評価エージェントと、前記フェーズの終了に基づいて次のフェーズを選択する選択エージェントと、当該次のフェーズに該当する処理を実行する実行エージェントとを含むことを特徴とする付記１記載のＬＳＩフロアプラン設計支援システム。
【００６１】
（付記３）  前記戦略エージェント知識は、ＬＳＩ独自の仕様に関わる知識および前記ブロックエージェント知識だけでは解決できない局面を解決する知識であることを特徴とする付記１記載のＬＳＩフロアプラン設計支援システム。
【００６２】
（付記４）  前記ブロックエージェント群は、ブロックの優先順位に基づいて、優先順位の高いブロックを優先的に配置することを特徴とする付記１記載のＬＳＩフロアプラン設計支援システム。
【００６３】
（付記５）  前記優先順位はブロックの面積及びブロックの動作周波数に基づいて定められることを特徴とする付記４記載のＬＳＩフロアプラン設計支援システム。
【００６４】
（付記６）  前記フロアプラン設計のフェーズとして、前記特性評価で終了条件を満たしていない場合に前記中間データを更新するフェーズが含まれており、前記実行エージェントは、前記特性評価で終了条件を満たしていない特性評価項目について、その中間データの修正方法を定義した知識に基づいて、前記中間データを更新することを特徴とする付記２記載のＬＳＩフロアプラン設計支援システム。
【００６５】
（付記７）  前記評価エージェントは、各特性評価項目が所定の条件である終了条件を示す評価エージェント知識に基づいて、当該特性評価項目が終了条件を満足しているか否かを判断することを特徴とする付記２記載のＬＳＩフロアプラン設計支援システム。
【００６６】
（付記８）  前記実行エージェントは、各フェーズ項目と当該フェーズでの実行内容を定義した実行エージェント知識に基づいて、該当フェーズでの実行を行うことを特徴とする付記２記載のＬＳＩフロアプラン設計支援システム。
【００６７】
（付記９）  前記ブロックエージェント知識だけでは解決できない局面に関する知識として、ブロックの重なりが生じた場合の重なり解消方法に関する知識が含まれることを特徴とする付記１記載のＬＳＩフロアプラン設計支援システム。
【００６８】
【発明の効果】
以上説明した本発明によれば、マルチエージェントを利用したフロアプラン設計システムでは、今までの人間のノウハウや知識に頼ってきた作業を自動的に行うことができる。また、設計対象のＬＳＩに関する特性を知識としてエージェントが利用するため、今後の技術の進歩による設計の辺かに容易に追従することができる。
【図面の簡単な説明】
【図１】本発明の原理図である。
【図２】本発明の実施形態によるフロアプラン設計システムの構成図である。
【図３】図２中のフロー制御エージェント群を示す図である。
【図４】図３中の解析ＤＢを示す図である。
【図５】図３中の解析ＤＢを示す図である。
【図６】図３中のフロー知識ＤＢを示す図である。
【図７】図３中の実行知識ＤＢを示す図である。
【図８】図３中の実行知識ＤＢを示す図である。
【図９】図２中のブロックエージェント知識ＤＢを示す図である。
【図１０】図２中の戦略エージェントＤＢを示す図である。
【図１１】図２中の戦略エージェントＤＢを示す図である。
【図１２】フロアプランのフローチャートである。
【図１３】ブロックエージェント群及び戦略エージェント群の生成を示す図である。
【図１４】戦略エージェント群とブロックエージェント群の関係を示す図である。
【図１５】ブロック配置のフローチャートである。
【図１６】ブロック説明図である。
【図１７】ブロック説明図である。
【図１８】ブロック配置例を示す図である。
【図１９】ブロック配置例を示す図である。
【図２０】ブロック配置例を示す図である。
【図２１】ブロック配置例を示す図である。
【図２２】ブロック配置例を示す図である。
【図２３】戦略エージェント群によるブロック配置例を示す図である。
【図２４】戦略エージェント群によるブロック配置例を示す図である。
【図２５】戦略エージェント群によるブロック配置例を示す図である。
【図２６】戦略エージェント群によるブロック配置例を示す図である。
【図２７】ブロック配置例を示す図である。
【図２８】ブロック配置例を示す図である。
【符号の説明】
２  設計データ
４  中間データ変換部
６  中間データ
８  フロー制御エージェント群
１０  ブロックエージェント群
１２  戦略エージェント群
【図１】
2004192197.tif 000003
【図２】
2004192197.tif 000004
【図３】
2004192197.tif 000005
【図４】
2004192197.tif 000006
【図５】
2004192197.tif 000007
【図６】
2004192197.tif 000008
【図７】
2004192197.tif 000009
【図８】
2004192197.tif 000010
【図９】
2004192197.tif 000011
【図１０】
2004192197.tif 000012
【図１１】
2004192197.tif 000013
【図１２】
2004192197.tif 000014
【図１３】
2004192197.tif 000015
【図１４】
2004192197.tif 000016
【図１５】
2004192197.tif 000017
【図１６】
2004192197.tif 000018
【図１７】
2004192197.tif 000019
【図１８】
2004192197.tif 000020
【図１９】
2004192197.tif 000021
【図２０】
2004192197.tif 000022
【図２１】
2004192197.tif 000023
【図２２】
2004192197.tif 000024
【図２３】
2004192197.tif 000025
【図２４】
2004192197.tif 000026
【図２５】
2004192197.tif 000027
【図２６】
2004192197.tif 000028
【図２７】
2004192197.tif 000029
【図２８】
2004192197.tif 000030