(57)【要約】【課題】マクロセルの配置を自動化するとともに、設計工数と設計コストを削減する。【解決手段】半導体レイアウト設計装置は、演算処理装置１と、表示装置２と、ネットリスト記憶装置３と、ライブラリ情報記憶装置４と、フロアプラン情報記憶装置５と、テクノロジ情報記憶装置６と、フロアプラン評価結果記憶装置７とを備える。ブロックごとに、他のブロックに向かう力線ベクトルを求めて合成力線ベクトルを算出し、その合成力線ベクトルのｘ成分の大きさとｙ成分の大きさとを比較した結果により、ブロック内のマクロセルの配置を決定するため、他の配線の妨げにならないような効率的なマクロセルの配置を行うことができる。このため、マクロセルの配線を大幅にやり直す頻度が少なくなり、設計工数と設計コストの削減が図れる。【選択図】図１
2008129725.tif 000002
【特許請求の範囲】
【請求項１】
ネットリスト、ライブラリ情報、フロアプラン情報およびテクノロジー情報に基づいて、スタンダードセルおよびマクロセルを含む複数のブロック同士の配線接続本数を抽出するブロック間接続情報抽出手段と、
配置領域内に前記複数のブロックを概略配置するブロック概略配置手段と、
前記複数のブロックのそれぞれについて、他のブロックとの位置関係と他のブロックとの配線接続本数とに基づいて、ブロック内のマクロセルの配置位置を設定するセル配置設定手段と、を備えることを特徴とする半導体レイアウト設計装置。
【請求項２】
着目ブロックの代表点から他のブロックの代表点に向かう方向を持ち、前記他のブロックとの距離と前記他のブロックとの配線接続本数との乗算値の大きさを持つ力線ベクトルを生成する力線ベクトル生成手段を備え、
前記セル配置設定手段は、前記力線ベクトルの２軸方向の大きさを比較した結果に基づいて、着目ブロック内のマクロセルの配置位置を設定することを特徴とする請求項１に記載の半導体レイアウト設計装置。
【請求項３】
着目ブロックに配線接続される２以上のブロックが存在する場合、着目ブロックから各ブロックに向かう前記力線ベクトルのそれぞれを合成するベクトル合成手段を備え、
前記セル配置設定手段は、前記ベクトル合成手段にて合成された合成力線ベクトルの２軸方向の大きさを比較した結果に基づいて、着目ブロック内のマクロセルの配置位置を決定することを特徴とする請求項２に記載の半導体レイアウト設計装置。
【請求項４】
前記複数のブロックのそれぞれについて、前記セル配置設定手段にて設定されたマクロセルをすべて含む範囲を示すマクロ配置領域を抽出するマクロ配置領域抽出手段と、
各ブロックの前記マクロ配置領域同士が少なくとも一部重なっているか否かを判定する重なり判定手段と、
前記重なり判定手段にて重なっていると判定されると、重なりがなくなるように、重なっているマクロ配置領域を移動するか、重なっているマクロ配置領域のサイズを変更する重なり解消手段と、を備えることを特徴とする請求項１乃至３のいずれかに記載の半導体レイアウト設計装置。
【請求項５】
前記重なり解消手段の処理を所定回数行ってもマクロ配置領域の重なりがなくならない場合、ブロック内のマクロセルの配置位置を再度設定し直すセル再配置設定手段を備えることを特徴とする請求項４に記載の半導体レイアウト設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体基板上の配置領域にマクロセルを配置する半導体レイアウト設計装置に関する。
【背景技術】
【０００２】
近年のＬＳＩ設計では、多数のマクロセルを用いることが多いが、その配置処理はエンジニアが手作業で行うのが一般的である。マクロセルの配置処理は、Ｉ／Ｏの配置とブロックの概略配置を行った後に行われる。マクロセルの配置処理の後に配置最適化処理を行うと、ブロックの概略配置を行った時点でのブロックの配置とはかなり変わってしまうため、配置最適化処理を行った後に、再びブロックやマクロセルの配置の調整を行う必要がある。この調整作業も、エンジニアが手作業で行うことが多いため、調整のやり方によって、最終的に得られるフロアプランの品質に大きなばらつきが生じるという問題があった（特許文献１，２参照）。
【０００３】
また、従来のＬＳＩ設計では、マクロセルの配置を決定するまでの調整作業にかなりの時間がかかっていたため、設計工数と設計コストが高くなるという問題があった。
【特許文献１】特開平６−２４４２８０
【特許文献２】特開２００６−１９００６２
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、マクロセルの配置を自動化するとともに、設計工数と設計コストを削減可能な半導体レイアウト設計装置を提供するものである。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、ネットリスト、ライブラリ情報、フロアプラン情報およびテクノロジー情報に基づいて、スタンダードセルおよびマクロセルを含む複数のブロック同士の配線接続本数を抽出するブロック間接続情報抽出手段と、配置領域内に前記複数のブロックを概略配置するブロック概略配置手段と、前記複数のブロックのそれぞれについて、他のブロックとの位置関係と他のブロックとの配線接続本数とに基づいて、ブロック内のマクロセルの配置位置を設定するセル配置設定手段と、を備えることを特徴とする半導体レイアウト設計装置が提供される。
【発明の効果】
【０００６】
本発明によれば、マクロセルの配置を自動化でき、かつ設計工数と設計コストを従来よりも削減することができる。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照しながら、本願発明の実施形態について説明する。
【０００８】
（第１の実施形態）
図１は本願発明の第１の実施形態に係る半導体レイアウト設計装置の概略構成を示すブロック図である。図１の半導体レイアウト設計装置は、演算処理装置１と、表示装置２と、ネットリスト記憶装置３と、ライブラリ情報記憶装置４と、フロアプラン情報記憶装置５と、テクノロジ情報記憶装置６と、フロアプラン評価結果記憶装置７とを備えている。演算処理装置１と各記憶装置はネットワーク回線８にて接続されており、演算処理装置１はネットワーク回線８を経由して各記憶装置との間で各種データを送受する。なお、ネットワーク回線８ではなく、演算処理装置１の内部バスや外部バスに各記憶装置を接続してもよい。
【０００９】
演算処理装置１は、インタフェース部１１と、ブロック間接続情報抽出部１２と、ブロック概略配置部１３と、セル配置設定部１４と、力線ベクトル生成部１５と、ベクトル合成部１６と、マクロ配置領域抽出部１７と、重なり判定部１８と、重なり解消部１９と、再配置設定部２０とを有する。
【００１０】
インタフェース部１１は、ネットリスト記憶装置３に記憶されたネットリストと、ライブラリ情報記憶装置４に記憶されたライブラリ情報と、フロアプラン情報記憶装置５に記憶されたフロアプラン情報と、テクノロジ情報記憶装置６に記憶されたテクノロジ情報とを取り込む処理と、フロアプランの評価結果をフロアプラン評価結果記憶装置７に送出する処理とを行う。
【００１１】
ここで、ネットリストとは、半導体基板上に形成される半導体回路の接続情報を記述したデータである。ライブラリ情報とは、配置領域に配置可能なスタンダードセル、マクロセルおよびゲートなどの回路情報である。フロアプラン情報とは、各フロアプランがどのようなスタンダードセルやマクロセルを配置しているかを示す情報である。テクノロジ情報とは、配置領域に配置される配線幅や信号伝搬遅延時間などの情報である。
【００１２】
ブロック間接続情報抽出部１２は、ブロック同士の配線接続本数を抽出する。ここで、ブロックとは、論理的に関連する複数のスタンダードセルやマクロセルを含む領域であり、配置領域には複数のブロックが配置される。
【００１３】
セル配置設定部１４は、複数のブロックのそれぞれについて、他のブロックとの位置関係と他のブロックとの配線接続本数とに基づいて、ブロック内のマクロセルの配置位置を設定する。
【００１４】
力線ベクトル生成部１５は、着目ブロックの代表点から他のブロックの代表点に向かう方向を持ち、他のベクトルとの距離と他のブロックとの配線接続本数との乗算値の大きさを持つ力線ベクトルを生成する。
【００１５】
ベクトル合成部１６は、着目ブロックに配線接続される２以上のブロックが存在する場合、着目ブロックから各ブロックに向かう力線ベクトルのそれぞれを合成する。
【００１６】
マクロ配置領域抽出部１７は、複数のブロックのそれぞれについて、セル配置設定部１４にて設定されたマクロセルをすべて含む範囲を示すマクロ配置領域を抽出する。
【００１７】
重なり判定部１８は、各ブロックのマクロ配置領域同士が少なくとも一部重なっているか否かを判定する。
【００１８】
重なり解消部１９は、重なり判定部１８にて重なっていると判定されると、重なりがなくなるように、重なっているマクロ配置領域を移動するか、重なっているマクロ配置領域のサイズを変更する。
【００１９】
再配置設定部２０は、重なり解消部１９の処理を所定回数行ってもマクロ配置領域の重なりがなくならない場合、ブロック内のマクロセルの配置位置を再度設定し直す。
【００２０】
なお、本実施形態では、図１の力線ベクトル生成部１５、ベクトル合成部１６、マクロ配置領域抽出部１７、重なり判定部１８、重なり解消部１９および再配置設定部２０は必須ではないため、省略してもよい。
【００２１】
図２は図１の半導体レイアウト設計装置におけるマクロセルの配置処理の詳細な処理手順を示すフローチャートである。このフローチャートを実行する前に、ブロック概略配置部１３によるブロックの概略配置が行われる。
【００２２】
まず、ブロック間の力線ベクトルを算出する（ステップＳ１）。例えば、図３はブロックａ，ｂ間の力線ベクトルを示す図である。図３では、ブロックａの代表点からブロックｂの代表点に向かう直線ベクトルを力線ベクトルと定義している。この力線ベクトルは（１）式で表される。
【数１】
2008129725.tif 000003
【００２３】
ここで、ブロックの代表点とは、例えばブロックの中心点でもよいし、ブロック内のセル配置が決まっていれば、そのセル配置の重心位置でもよい。ブロックａ，ｂの代表点同士の距離をDist（ａ，ｂ）、ブロックａ，ｂ間の配線接続本数をConn（ａ，ｂ）とすると、ブロック間の力線ベクトルの大きさは、以下の（２）式で表される。
【数２】
2008129725.tif 000004
【００２４】
（２）式のブロック間の距離Dist（ａ，ｂ）と配線接続本数Conn（ａ，ｂ）は、ブロック内のセル配置密度やブロック間の配線接続本数の大小（混雑度）によって重みをつけることができる。例えば、ブロックを複数のグリッドに分割して、各グリッドごとにセル密度を求め、距離Dist（ａ，ｂ）を計算する際に、各グリッドのセル密度で重み付けをしてもよい。
【００２５】
次に、あるブロック（着目ブロック）ｉから複数の他のブロックに向かう力線ベクトルがある場合には、これらすべての力線ベクトルを合成した力線ベクトル（以下、合成力線ベクトル）を算出する（ステップＳ２）。この処理は、図１のベクトル合成部１６にて行う。
【００２６】
例えば、図４のブロックｉの力線ベクトルは、ブロックｉからブロックａに向かう力線ベクトルとブロックｉからブロックｂに向かう力線ベクトルとを合成したベクトルになる。このブロックｉの合成力線ベクトルは、以下の（３）式で表される。
【数３】
2008129725.tif 000005
【００２７】
このように、ブロックｉにおける合成力線ベクトルは、他のブロックとの力線ベクトルの和で表される。（３）式を一般化して、ブロックｉから他のｎ個のブロックに向かう力線ベクトルがあるとすると、ブロックｉの合成力線ブロックは、以下の（４）式で表される。
【数４】
2008129725.tif 000006
【００２８】
次に、ブロックｉの合成力線ベクトルのｘ成分の絶対値とｙ成分の絶対値を算出する（ステップＳ３）。
【００２９】
例えば、図４では、（４）式に示すブロックｉの合成力線ベクトルのｘ成分の絶対値をｆ_x(i)、ｙ成分の絶対値をｆ_y(i)としている。
【００３０】
次に、ｘ成分の絶対値ｆ_x(i)がｙ成分の絶対値ｆ_y(i)よりかなり大きいか否かを判定する（ステップＳ４）。ステップＳ４の判定がＹＥＳであれば、図５に示すように、ブロックｉの長辺（ｘ軸）方向の接続を妨げないように、短辺（ｙ軸）方向に沿ってマクロセルを配置する。このとき、各マクロセルが重ならないように配置する（ステップＳ５）。
【００３１】
図５では、マクロセルＡ，Ｂ，Ｃ，Ｄを短辺に沿って配置する例を示している。マクロセルＡ〜Ｄは、合成力線ベクトルのｘ軸成分ベクトルの基端側で、かつブロックｉの短辺に沿って配置される。
【００３２】
このように、合成力線ベクトルのｘ成分の絶対値ｆ_x(i)がｙ成分の絶対値ｆ_y(i)よりもかなり大きい場合は、ブロック間のｘ軸方向のブロック間距離が長いか、ブロック間の配線接続本数が多いと考えられることから、ｘ軸方向に沿ってマクロセルを配置することはなるべく避けて、ｙ軸方向に沿ってマクロセルを配置する。
【００３３】
一方、図２のステップＳ４の判定がＮＯの場合、合成力線ベクトルのｘ成分の絶対値ｆ_x(i)がｙ成分の絶対値ｆ_y(i)よりかなり小さいか否かを判定する（ステップＳ６）。ステップＳ６の判定がＹＥＳであれば、図６に示すように、ブロックｉの短辺（ｙ軸）方向の接続を妨げないように、長辺（ｘ軸）方向に沿ってマクロセルＡ〜Ｄを配置する。このとき、各マクロセルが重ならないように配置する（ステップＳ７）。より具体的には、マクロセルは、合成力線ベクトルのｙ軸成分ベクトルの基端側で、かつブロックｉの長辺に沿って配置される。
【００３４】
このように、合成力線ベクトルのｙ成分の絶対値ｆ_y(i)がｘ成分の絶対値ｆ_x(i)よりもかなり大きい場合は、ブロック間のｙ軸方向のブロック間距離が短いか、ブロック間の配線接続本数が多いと考えられることから、ｙ軸方向に沿ってマクロセルを配置することはなるべく避けて、ｘ軸方向に沿ってマクロセルを配置する。
【００３５】
一方、図２のステップＳ６の判定がＮＯの場合は、合成力線ベクトルのｘ成分の絶対値ｆ_x(i)とｙ成分の絶対値ｆ_y(i)が略等しいことを示している。この場合は、図７に示すように、ブロックｉのｘ軸方向とｙ軸方向に沿って、Ｌ字状にマクロセルＡ〜Ｄを配置する（ステップＳ８）。このとき、各マクロセルが重ならないように配置する。より具体的には、マクロセルは、合成力線ベクトルのｘ軸成分ベクトルとｙ軸成分ベクトルの基端側で、かつブロックｉの長辺および短辺に沿って配置される。
【００３６】
このように、合成力線ベクトルのｘ成分の絶対値ｆ_x(i)とｙ成分の絶対値ｆ_y(i)が略等しい場合には、ｘ軸方向とｙ軸方向に均等にマクロセルを配置し、両軸方向のセル密度が均等になるようにする。
【００３７】
以上の処理により、ブロックｉ内にマクロセルを配置することができる。同様の処理は他のブロックについても行われる。
【００３８】
このように、第１の実施形態では、ブロックごとに、他のブロックに向かう力線ベクトルを求めて合成力線ベクトルを算出し、その合成力線ベクトルのｘ成分の大きさとｙ成分の大きさとを比較した結果により、ブロック内のマクロセルの配置を決定するため、他の配線の妨げにならないような効率的なマクロセルの配置を行うことができる。このため、マクロセルの配線を大幅にやり直す頻度が少なくなり、設計工数と設計コストの削減が図れる。
【００３９】
（第２の実施形態）
第２の実施形態は、マクロセルの配置を自動化するとともに、ブロック同士のマクロセルの重なりが生じないようにマクロセルを配置するものである。
【００４０】
第２の実施形態による半導体レイアウト設計装置は、図１と同様のブロック構成を持つため、以下では第１の実施形態との相違点を中心に説明する。
【００４１】
図８は第２の実施形態による半導体レイアウト設計装置の処理手順を示すフローチャートである。まず、ネットリスト、ライブラリ情報、フロアプラン情報およびテクノロジ情報を取得した後、配置領域にＩ／Ｏを配置する（ステップＳ１１）。このステップＳ１１の処理は、従来と同じであり、図１の演算処理装置１が行う。次に、ブロック間接続情報抽出部１２は、スタンダードセルやマクロセルを含むブロック同士の接続情報（より具体的には、配線接続本数）を抽出する（ステップＳ１２）。次に、演算処理装置１は、自動Ｐ＆Ｒツールを実行して、配置領域にスタンダードセルとマクロセルを概略配置する（ステップＳ１３）。概略配置の目的は、配線長が短いブロック相対位置を決定することである。Ｐ＆Ｒツールがブロック相対位置を最適化できるように、マクロセルも固定せずに自動配置する。このステップＳ１３は図１のブロック概略配置部１３が行う。
【００４２】
次に、演算処理装置１は、配置領域にマクロセルの配置を行う（ステップＳ１４）。このステップＳ１４の処理については後に詳述する。次に、演算処理装置１は、作成した候補フロアプランごとにスタンダードセルの初期配置を行う（ステップＳ１５）。
【００４３】
次に、演算処理装置１は、フロアプランの評価値を算出した後、評価値の最も小さなフロアプランを選択する（ステップＳ１６）。
【００４４】
次に、演算処理装置１は、ステップＳ１６で選択したフロアプランにおけるスタンダードセルの初期配置に対して、セル配置やセル駆動能力の調整、ゲート段数の改善、バッファセルの挿入などの最適化処理を行い、タイミング改善処理を行う（ステップＳ１７）。
【００４５】
次に、演算処理装置１は、ステップＳ１７の最適化処理を行った後のフロアプランに対して、配線性とタイミング性能を検証する（ステップＳ１８）。検証した結果、配線性やタイミング性能に問題がある場合にはステップＳ１４に移行して、再度マクロセルの配置をやり直す。一方、検証した結果、問題がなければ図８の処理を終了し、フロアプランが決定される。
【００４６】
図９は図８のステップＳ１４の詳細な処理手順の一例を示すフローチャートである。このフローチャートでは、マクロセルの重なりが起きないようにマクロセルを配置する処理を行う。
【００４７】
まず、ブロックの配置位置を抽出する（ステップＳ３１）。このステップＳ３１では、まず各ブロックについて代表点の座標を算出する。代表点としては、例えばブロックの中心点を用いる。ブロックに所属する各マクロセルの中心座標（ｘ，ｙ）の中で、最小および最大のｘ座標をそれぞれｘmin，ｘmaxとし、最小および最大のｙ座標をそれぞれｙmin，ｙmaxとすると、各マクロセルの中心座標（ｘ，ｙ）は、以下の（５）式で表される。
ｃ（ｘ，ｙ）＝（（ｘmin＋ｘmax）／２，（ｙmin＋ｙmax）／２）    …（５）
【００４８】
ここで、ブロックの代表点は、ブロックの中心や重心でもよいし、あるいはブロックに所属する各マクロセルの平均座標位置でもよい。あるブロックに所属するマクロセル数がｎ個あり、各マクロセルの中心座標が（ｘi，ｙi）であるとき、各マクロセルの平均座標Ａ（ｘ，ｙ）は以下の（６）式で表される。
Ａ（ｘ，ｙ）＝（Σｘi／ｎ，Σｙi／ｎ）    …（６）
【００４９】
また、代表点は、ブロックに所属する各マクロセル座標の平均位置でもよい。あるブロックに所属するセル数がｎ個あり、各マクロセルの中心座標を（ｘi，ｙi）、各マクロセルの面積をａiとすると、ブロックの重心座標Ｇ（ｘ、ｙ）は以下の（７）式で算出される。
Ｇ（ｘ，ｙ）＝（Σ（ｘi×ａi）／Σａi，Σ（ｙi×ａi）／Σａi）    …（７）
【００５０】
ブロック内のマクロセルの面積がマクロセルごとに大きく異なっている場合や、ブロック内のマクロセルが分散して配置されている場合には、重心を代表点として用いるのが有効と考えられる。
【００５１】
上記の手順でブロックの代表点の座標が算出されると、次に、各ブロックの配置位置と領域を決定する。あるブロックの代表点を（ｘrep，ｙrep）とし、ブロック内の各マクロセルの中心座標のうち、最小および最大のｘ座標をそれぞれｘmin，ｘmaxとし、最小および最大のｙ座標をそれぞれｙmin，ｙmaxとすると、そのブロック内の矩形状の配置領域の左下の座標（ｘll，ｙll）と右上の座標（ｘur，ｙur）は、それぞれ以下の（８）〜（１１）式で表される。
ｘll＝ｘrep＋（ｘmin−ｘrep）／２    …（８）
ｙll＝ｙrep＋（ｙmin−ｙrep）／２    …（９）
ｘur＝ｘrep＋（ｘmax−ｘrep）／２    …（１０）
ｙur＝ｙrep＋（ｙmax−ｙrep）／２    …（１１）
【００５２】
以上の手順により、ステップＳ３１において、ブロックの配置位置が抽出される。
【００５３】
ステップＳ３１の処理が終わると、次に、各ブロックごとに力線ベクトルの算出を行う（ステップＳ３２）。このステップＳ３２では、図２のステップＳ１と同様の手順で力線ベクトルを算出する。
【００５４】
次に、各ブロック内に含まれるマクロセルのサイズを比較し、例えば大きいマクロセルを内蔵するブロックから降順に各ブロックをソートする（ステップＳ３３）。そして、ソートした順にブロックを一つ選択する（ステップＳ３４）。
【００５５】
次に、ステップＳ３４で選択したブロック内に、第１の実施形態（図２のフローチャート）と同様の手順で、マクロセルの配置形状を設定する（ステップＳ３５）。次に、ブロック内にマクロセルを初期配置する（ステップＳ３６）。
【００５６】
次に、マクロセルの種類（例えば、サイズ）に応じて、マクロセルをいくつかのグループに分類する（ステップＳ３７）。これらのマクロセルグループを降順にソートする（ステップＳ３８）。次に、ソートした順にマクロセルグループのうち一つを選択する（ステップＳ３９）。
【００５７】
次に、ステップＳ３６で初期配置されたマクロセルのうち、ステップＳ３９で選択したマクロセルグループ内の各マクロセルの配置位置を調整する（ステップＳ４０）。次に、すべてのマクロセルグループについて配置位置の調整を行ったか否かを判定する（ステップＳ４１）。まだ調整を行っていないマクロセルグループが存在する場合にはステップＳ３９に戻り、存在しない場合には、配置領域内に配置された全マクロセルを含むマクロ配置領域を抽出する（ステップＳ４２）。
【００５８】
例えば、図１０（ａ）はステップＳ３１〜Ｓ４１の処理によって得られたブロック内のマクロセルの配置位置を示す図である。図１０（ａ）のマクロセルｍ１，ｍ２，ｍ３はマクロセルグループＧ１に所属し、マクロセルｍ４，ｍ５，ｍ６，ｍ７はマクロセルグループＧ２に所属し、マクロセルｍ８，ｍ９，１０はマクロセルグループＧ３に所属している。
【００５９】
上述したステップＳ４２では、図１０（ａ）における全マクロセルｍ１〜ｍ１０を含むマクロ配置領域を抽出する。例えば、図１０（ｂ）に示すように、全マクロセルｍ１〜ｍ１０の頂点すべてを含む矩形領域３１をマクロ配置領域として抽出する。
【００６０】
次に、ステップＳ４２で抽出したマクロ配置領域と他のブロックのマクロ配置領域とが重なっているか否かを判定する（ステップＳ４３）。図１１はブロックａのマクロ配置領域３１とブロックｂのマクロ配置領域３２とが部分的に重なっている例を示す図である。図１１では、重複した領域を符号３３で表している。
【００６１】
ステップＳ４３にて、マクロ配置領域同士が重なっていると判定されると、マクロ配置領域同士の重なり判定処理を予め定めた所定回数だけ行ったか否かを判定する（ステップＳ４４）。ステップＳ４４の判定がＮＯであれば、マクロ配置領域を移動したりサイズ変更を行って、重なりをなくす処理を行う（ステップＳ４５）。
【００６２】
図１２および図１３はマクロ配置領域同士の重なりの検出とマクロ配置領域の移動の一例を説明する図である。図１２はブロックａのマクロ配置領域の一部がブロックｂのマクロ配置領域と重なっている例を示している。この重なりをなくすには、図１３（ａ）に示すようにブロックｂ内のマクロ配置領域３２を右側に移動する手法と、図１３（ｂ）に示すようにマクロ配置領域３２を上側に移動する手法と、図１３（ｃ）に示すようにマクロ配置領域３２を下側に移動する手法と、図１３（ｄ）に示すようにマクロ配置領域３２を左側に移動する手法が考えられる。
【００６３】
これら図１３（ａ）〜図１３（ｄ）の４通りのうち、重なりをなくすための移動距離が最小になるものを最終的に選択して、マクロ配置領域を移動させる。
【００６４】
一方、図１４は上述したステップＳ４５でマクロ配置領域のサイズ変更を行う場合の処理を説明する図である。図１４は３つのブロックａ，ｂ，ｃが隣接配置されており、ブロックａ，ｃ内のマクロ配置領域の位置が固定である例を示している。初期状態では、図１４（ａ）に示すように、ブロックａ内のマクロ配置領域３１とブロックｂ内のマクロ配置領域３２とが一部重なっている。このため、図１４（ｂ）では、ブロックｂ内のマクロ配置領域３２を右に移動させた例を示している。この結果、ブロックｂ内のマクロ配置領域３２はブロックｃ内のマクロ配置領域３４と一部重なる。
【００６５】
そこで、図１４（ｃ）に示すように、ブロックｂ内のマクロ配置領域３２のサイズを圧縮（小さく）して、ブロックａ，ｃ内のマクロ配置領域３１，３４と重ならないようにする。より具体的には、図１４（ｂ）の移動方向とは逆方向にマクロ配置領域３２を圧縮して、両側のマクロ配置領域３１，３４と重ならないようにする。
【００６６】
図１４（ｄ）は、図１４（ｃ）で圧縮したマクロ配置領域３２内にマクロセルを配置した例を示している。一部のマクロセルは、マクロ配置領域３２の外に配置されているが、これは、ブロックの力線ベクトルと平行な方向には、マクロ配置領域外を超えてマクロセルを配置してもよいことにしているためである。
【００６７】
以上の手順により図９のステップＳ４５の処理が終了すると、再度ステップＳ３９に移行して、配置領域内のマクロセルグループを選択した後、ステップＳ４０〜Ｓ４３の処理を再度順に行う。
【００６８】
一方、ステップＳ４４の判定がＮＯの場合、すなわち、配置領域同士の重なり判定処理を所定回数行った場合には、現状のマクロセルの配置では重なりを除去できないと判断して、マクロセルの配置形状を変更する処理を行う（ステップＳ４６）。
【００６９】
ここで、マクロセルの配置形状は、第１の実施形態で説明したように、力線ベクトルの大きさと方向によって決められる。例えば、図９のステップＳ３５の処理にて図５のような配置形状にした場合に、結果としてマクロ配置領域の重なりを除去できなかった場合は、図６や図７のようなマクロセルの配置形状を選択する。
【００７０】
ステップＳ４６の処理が終了すると、ステップＳ３９に移行して、ステップＳ３９〜Ｓ４３の処理を再度順に行う。
【００７１】
一方、図９のステップＳ４３の判定がＮＯの場合、すなわち、マクロ配置領域同士が重なっていない場合、ブロック内のマクロセルの位置を固定にする（ステップＳ４７）。
【００７２】
次に、すべてのブロックについて、ステップＳ３４〜Ｓ４７の処理を行ったか否かを判定する（ステップＳ４８）。まだ処理を行っていないブロックが存在する場合には、ステップＳ３４に戻って、ソート順にブロックを一つ選択して、ステップＳ３５〜Ｓ４７の処理を行う。
【００７３】
このように、第２の実施形態では、力線ベクトルに基づいてブロック内に配置されたマクロ配置領域の一部が他のブロックのマクロ配置領域と重なるか否かを検出し、重なりが生じないように、マクロ配置領域を移動したり、あるいはマクロ配置領域のサイズ変更を行うため、エンジニアが手作業でマクロセルの調整を行わなくて済み、設計工数と設計コストの削減が図れる。
【００７４】
図１の演算処理装置１は、一台のコンピュータで実現してもよいし、複数のコンピュータで構成してもよい。また、演算処理装置１内に含まれる各部１１〜１８は、ハードウェアで実現してもよいし、ソフトウェアで実現してもよい。ソフトウェアで実現する場合、各部１１〜１８の処理動作を行うプログラムをコンピュータに読み込ませてコンピュータに実行させればよい。
【図面の簡単な説明】
【００７５】
【図１】第１の実施形態に係る半導体レイアウト設計装置の概略構成を示すブロック図。
【図２】図１の半導体レイアウト設計装置におけるマクロセルの配置処理の詳細な処理手順を示すフローチャート。
【図３】ブロックａ，ｂ間の力線ベクトルを示す図。
【図４】合成力線ベクトルを説明する図。
【図５】短辺（ｙ軸）方向に沿ってマクロセルを配置する例を示す図。
【図６】長辺（ｘ軸）方向に沿ってマクロセルを配置する例を示す図。
【図７】Ｌ字状にマクロセルを配置する例を示す図。
【図８】第２の実施形態による半導体レイアウト設計装置の処理手順を示すフローチャート。
【図９】図８のステップＳ１４の詳細な処理手順の一例を示すフローチャート。
【図１０】（ａ）はステップＳ３１〜Ｓ４１の処理によって得られたブロック内のマクロセルの配置位置を示す図、（ｂ）はマクロ配置領域を示す図。
【図１１】ブロックａのマクロ配置領域３１とブロックｂのマクロ配置領域３２とが部分的に重なっている例を示す図。
【図１２】ブロックａのマクロ配置領域の一部がブロックｂのマクロ配置領域と重なっている例を示す図。
【図１３】（ａ）〜（ｄ）はマクロ配置領域を移動させる例を示す図。
【図１４】ステップＳ４５でマクロ配置領域のサイズ変更を行う場合の処理を説明する図。
【符号の説明】
【００７６】
１  演算処理装置
２  表示装置
３  ネットリスト記憶装置
４  ライブラリ情報記憶装置
５  フロアプラン情報記憶装置
６  テクノロジ情報記憶装置
７  フロアプラン評価結果記憶装置
１１  インタフェース部
１２  ブロック間接続情報抽出部
１３  ブロック概略配置部
１４  セル配置設定部
１５  力線ベクトル生成部
１６  ベクトル合成部
１７  マクロ配置領域抽出部
１８  重なり判定部
１９  重なり解消部
２０  再配置設定部
【図１】
2008129725.tif 000007
【図２】
2008129725.tif 000008
【図３】
2008129725.tif 000009
【図４】
2008129725.tif 000010
【図５】
2008129725.tif 000011
【図６】
2008129725.tif 000012
【図７】
2008129725.tif 000013
【図８】
2008129725.tif 000014
【図９】
2008129725.tif 000015
【図１０】
2008129725.tif 000016
【図１１】
2008129725.tif 000017
【図１２】
2008129725.tif 000018
【図１３】
2008129725.tif 000019
【図１４】
2008129725.tif 000020