(57)【要約】【課題】１チップのデータを必要とせずに、ボトムアップ手法マクロ開発において、フレキシブルに端子位置の最適化を実施する。【解決手段】ＩＣチップ内にあるマクロの仮マクロサイズを決め（Ｓ１）、このマクロの端子をそれぞれ接続対象ごとにグループ分けし（Ｓ３）、グループごとに前記マクロを囲むような形で配置領域を設定した（Ｓ４）配置情報１１を作成し、この配置情報１１をもとに、所定配置条件の下で前記マクロの端子位置の最適配置座標を算出することにより、前記端子配置の最適化を実施することを特徴とする。【選択図】　図１
2004086755.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣチップ内にある所定マクロの端子をそれぞれ接続対象ごとにグループ分けし、グループごとに前記マクロを囲むような形で配置領域を設定した配置情報を作成し、この配置情報をもとに、所定配置条件の下で前記マクロの端子位置の最適配置座標を算出することにより、前記端子配置の最適化を実施することを特徴とするマクロの端子配置の最適化方法。
【請求項２】
所定配置条件が、マクロの各辺端部に所定寸法の配線禁止領域をそれぞれ設け、かつ、前記マクロの端子の幅およびこれら端子間の最小間隔を基にした請求項１記載のマクロの端子配置の最適化方法。
【請求項３】
マクロの仮フロアプランからそのマクロのサイズを決定し、このサイズ情報を基に、次のステップで、前記マクロの端子配置を行い、その端子配置情報を作成する際、前記マクロの端子の情報を入力し、これら端子を接続対象ごとにグループ分けし、これら端子グループごとに端子配置領域を設定して前記端子配置情報を作成する請求項１または２記載のマクロの端子配置の最適化方法。
【請求項４】
ＩＣチップ内にある所定マクロの仮フロアプランからそのマクロの端子配置のサイズを決定し、そのマクロの端子情報から各端子をグループ分けし、この端子の端子グループ情報から各端子グループの領域を設定して端子配置情報を作成して、前記マクロの端子配置の最適化を実施することを特徴とするマクロの端子配置の最適化方法。
【請求項５】
マクロの端子配置情報を作成した後、この端子配置情報から各端子グループの領域、ピン情報を読込んで前記マクロの端子グループの各辺上の領域をそれぞれ判定し、これら各辺上の領域にない場合前記領域設定をやり直し、前記各辺上の領域にある場合、前記マクロの各コーナ部分の平地禁止領域を除いて前記各辺上の前記マクロの端子配置領域を計算して前記仮フロアプランの端子配置領域情報を作成する請求項４記載のマクロの端子配置の最適化方法。
【請求項６】
仮フロアプランの端子配置領域情報を作成した後、この端子配置領域情報から各端子グループの領域、ピン情報を読込んで前記マクロの端子幅寸法、端子間最小間隔の条件から前記端子配置領域内に各端子が収まるかとうか判定し、前記端子配置領域内に各端子が収まらない場合には、前記領域設定をやり直し、前記端子配置領域内に各端子が収まる場合には、前記マクロの前記各辺上の領域をそれぞれ判定し、これら各辺上の領域にない場合前記領域設定をやり直し、前記各辺上の領域にある場合、各端子位置座標を前記全端子について計算し、さらにこれを前記全端子グループについて計算して最適化端子位置情報を作成する請求項４記載のマクロの端子配置の最適化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マクロの端子配置の最適化方法に関し、特に１チップのデータを必要とぜずに、フレキシブルに端子位置の最適化をしたマクロの端子配置の最適化方法に関する。
【０００２】
【従来の技術】
一般に、半導体集積回路ＩＣのレイアウトを行う場合、そのＩＣのチップサイズは、出来るだけ縮小して配置されることが必要である。このチップサイズ縮小化が要求される中で、このチップ内に搭載されるマクロ同士の端子位置関係が　配線効率の面で重要となっている。このマクロ同士の端子位置関係を求める従来技術を説明する前に、まず、端子位置の最適化を行っていない従来例１の技術について説明する。
【０００３】
図１０はこの端子位置の最適化を行っていない場合のチップの平面図である。この図では、図１０のように、最適化の対象となる対象マクロ２ｂの上辺の端子数を７ピン、右辺の端子数を８ピン、下辺の端子数を７ピン、左辺の端子数を８ピンというように各辺の端子数を指定することが可能である。また、マクロ２ｂの各辺のコーナーの端子配置禁止領域２６ａを上辺ではｄ１、ｄ８、右辺ではｄ６、ｄ７、下辺ではｄ４、ｄ５、左辺ではｄ２、ｄ３というように指定することもできる。
【０００４】
しかし、この端子配置禁止領域２６ａを細かく指定することができず、例えば、上辺の左から３ピンまでを左よりに配置し、残りの４ピンを右よりに配置したい場合などは、端子位置の座標をテキストエディタなどで、直接修正して対応している。この場合、膨大な労力を要し、人為的ミスを誘発する恐れがある。
【０００５】
次に、端子配置を最適化させる従来例２の技術として、特開平８−４４７８４号公報に記載されたものがある。この技術について、図１１を用いて説明する。モジュール配置ステップＳ１０１、ネットリスト作成ステップＳ１０２を実施し、１チップレベルのチップレイアウト用ネットリスト４１を作成する。次に、実際の配線長の算出ステップＳ１０３と配置位置からの配線長を推定するステップＳ１０４のそれぞれの値をステップＳ１０５で比較し、実際の配線長が配置位置から推定した配線長より長かった場合は、モジュール端子および端子方向を抽出するステップＳ１０６を経由して、端子位置方向の最適化ルーチンＳ１０７を実施する。これが短かった場合は、ステッＳ１０５の端子位置、配線経路がそのまま、端子位置方向指定データ４２として採用される。
【０００６】
【発明が解決しようとする課題】
この従来例のマクロの端子配置方法では、１チップのフロアプランデータを使用して、マクロの端子位置の最適化を行う為、１チップのフロアプランデータが無い状況でのボトムアップ手法におけるマクロ開発においては、適用することができない。
【０００７】
本発明の目的は、１チップのデータ（ネットリスト、フロアプラン）を必要とせずに、ボトムアップ手法マクロ開発において、フレキシブルに端子位置の最適化を実施できるマクロの端子配置の最適化方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明のマクロの端子配置の最適化方法の構成は、ＩＣチップ内にある所定マクロの端子をそれぞれ接続対象ごとにグループ分けし、グループごとに前記マクロを囲むような形で配置領域を設定した配置情報を作成し、この配置情報をもとに、所定配置条件の下で前記マクロの端子位置の最適配置座標を算出することにより、前記端子配置の最適化を実施することを特徴とする。
【０００９】
本発明において、所定配置条件が、マクロの各辺端部に所定寸法の配線禁止領域をそれぞれ設け、かつ、前記マクロの端子の幅およびこれら端子間の最小間隔を基にすることができ、また、マクロの仮フロアプランからそのマクロのサイズを決定し、このサイズ情報を基に、次のステップで、前記マクロの端子配置を行い、その端子配置情報を作成する際、前記マクロの端子の情報を入力し、これら端子を接続対象ごとにグループ分けし、これら端子グループごとに端子配置領域を設定して前記端子配置情報を作成することができる。
【００１０】
本発明の他のマクロの端子配置の最適化方法の構成は、ＩＣチップ内にある所定マクロの仮フロアプランからそのマクロの端子配置のサイズを決定し、そのマクロの端子情報から各端子をグループ分けし、この端子の端子グループ情報から各端子グループの領域を設定して端子配置情報を作成し；この端子配置情報から各端子グループの領域、ピン情報を読込んで前記マクロの端子グループの各辺上の領域をそれぞれ判定し、これら各辺上の領域にない場合前記領域設定をやり直し、前記各辺上の領域にある場合、前記マクロの各コーナ部分の平地禁止領域を除いて前記各辺上の前記マクロの端子配置領域を計算して前記仮フロアプランの端子配置領域情報を作成し；この端子配置領域情報から各端子グループの領域、ピン情報を読込んで前記マクロの端子幅寸法、端子間最小間隔の条件から前記端子配置領域内に各端子が収まるかとうか判定し、前記端子配置領域内に各端子が収まらない場合には、前記領域設定をやり直し、前記端子配置領域内に各端子が収まる場合には、前記マクロの前記各辺上の領域をそれぞれ判定し、これら各辺上の領域にない場合前記領域設定をやり直し、前記各辺上の領域にある場合、各端子位置座標を前記全端子について計算し、さらにこれを前記全端子グループについて計算して最適化端子位置情報を作成することを特徴とする。
【００１１】
本発明の構成によれば、ＩＣのマクロの端子をそれぞれの接続対象からグループ分けし、この端子身グループごとに端子配置領域を設定した端子配置情報を基に端子位置の最適化を実施することができ、また、ＩＣ１チップの概略構成を基に設計者自身が領域分けをするため、１チップのデータ（ネットリスト、フロアプラン）を必要とせず、ボトムアップ手法マクロ開発において、フレキシブルに端子位置の最適化を実施することができる。
【００１２】
【発明の実施の形態】
次に本発明の実施形態を図面により詳細に説明する。図１は本発明の一実施形態を説明する概要フロー図であり、図２は図１のマクロ設計を説明するチップの平面図である。現状では、マクロ設計は、図２に示すような、チップ１上での設計対象となる対象マクロ２とその他のマクロ３〜マクロ７の位置関係を示した概略図を元に端子位置を決めている。この概略図は、計画（フロアプラン）の図であり、１チップのデータ（ネットリスト、フロアプラン）としては存在していない。
【００１３】
本実施形態の方法により、マクロの端子位置の最適化を実施した場合、図３のような端子位置の移動を一括処理で実行することができる。すなわち、図３（ａ）のように、マクロ２ａの各辺に端子数７，８，７，８ピンがある場合、図３（ｂ）のように、端子数７，５，３……８ピンとピン配置を変えたマクロ２ａに移動できる。
【００１４】
図１のフローについて説明する。まず、ステップＳ１で、仮マクロのサイズを決定し、このステップＳ１のサイズ情報を基に、ステップＳ２で、端子配置を行い、端子配置情報（フレーム）１１を作成する。この場合、まず、端子グループの情報を入力するステップＳ３から端子を接続対象ごとにグループ分けし、次の端子グループ配置ステップＳ４で、端子グループごとに端子配置領域を設定し、端子配置情報１１を作成する。この端子配置情報１１の一例を、図４（ａ）のリストに示す。この端子配置情報１１は、サイズ、各端子グループ（Ｇ１〜Ｇ６）ごとの配置領域座標、ピン（Ｐｉｎ）番号、ピン数から構成される。例えば、端子グループＧ１では、配置領域座標が（Ｘ１１，Ｙ１１）から（Ｘ１２，Ｙ１２）までで、ピン番号１〜７が７ピンあることを示す。
【００１５】
端子配置情報を図的に表現した場合、図５の配置図のようになる。それぞれの端子グループ（　Ｇ１〜Ｇ６）　ごとに端子配置領域両端の二点の座標を持つ、例えば、端子グループＧ１の場合、端子（Ｘ１１，Ｙ１１）と端子（Ｘ１２，Ｙ１２）の二点の座標を持っており、端子配置領域は、その二点座標の間の領域となる。
【００１６】
図５のように、マクロ２ａからマクロのサイズ・外形変更を考慮してマクロ内に収まるサイズで端子配置情報１１を設け、各端子グループ（Ｇ１〜Ｇ６）の端子配置領域を配置する。作成した情報をもとに、端子配置ステップＳ２の後のデータに対して端子位置最適化ステップＳ５を実行することで、それ以降のフロー（電源配線ステップＳ６など）は、端子位置が最適化された状態で実行され、最終的に端子位置が最適化されたフロアプラン１０が完成する。
【００１７】
端子位置の最適化は、図６，７のフローチャートを用いて詳細に説明する。まず、図６のフローにより、前半の処理を説明する。端子情報（Ｐｉａｓｓ）１２の端子をグループ分けステップＳ１１でそれぞれの接続対象ごとにグループ分けし、端子番号、端子数の端子グループ情報１３を作成する。また、端子配置情報のサイズ決定ステップＳ１０で、仮フロアプラン１０ａからマクロのサイズ・外形変更を考慮してマクロが内に収まるサイズを決定する。次に、端子グループ領域設定ステップＳ１２で、図２によるチップ上でのマクロ位置概要情報１４をもとに、サイズ内でマクロ２を囲むように端子グループ情報１３のグループごとの配置領域情報を設定し、図４（ａ）に示すような端子配置情報１１を作成する。
【００１８】
この端子配置情報１１を図的に表現した一例として、図５の配置図のようになる。この場合、図５の端子情報２５は対象マクロ２ａに対して、６つの端子グループ（Ｇ１〜Ｇ６）の端子配置領域を設定している。
【００１９】
次に、端子配置情報１１を基に、実際のマクロ辺上に端子配置情報１１のそれぞれの端子グループの端子配置領域を設定する。この端子グループの数をｎとし、ステップＳ１３で、ｎ＝１の場合から次のステップＳ１４を開始する。この端子グループの領域情報読み込みステップＳ１４で端子グループの配置領域，ピン情報を読み取る。すなわち、グループＧ（ｎ）：（Ｘｎ１，Ｙｎ１）（Ｘｎ２，Ｙｎ２）から、Ｘ軸の値Ｘ１＝Ｘｎ１，Ｘ２＝Ｘｎ２，Ｙ軸の値Ｙ１＝Ｙｎ１，Ｙ２＝Ｙｎ２を読み取る。
【００２０】
この読み取った座標から、ステップＳ１５，１６でそれぞれ配置領域情報がマクロの左右辺に対してのものか（Ｘ１＝Ｘ２の場合、Ｙ軸に平行な領域）、上下辺に対してのもの（Ｙ１＝Ｙ２の場合、Ｘ軸に平行な領域）を判断する。その時、マクロのどの辺に対しても、対応していない場合ＮはステップＳ１２に戻り、端子配置領域情報設定のやり直しが必要となる。
【００２１】
ステップＳ１５，１６から、それぞれ、左右辺に対する領域の場合はステップＳ１７へ、上下辺に対する領域の場合はステップＳ１８へ進み、それぞれのマクロ辺上端子配置領域算出ステップＳ１７，１８で、マクロの端子配置領域とマクロコーナー端子配置禁止領域の条件１６にもとづき、マクロ端子配置領域上（図３参照）に端子グループごとの端子配置領域を設定する。
【００２２】
ここで言うマクロ端子配置領域とは、マクロ辺上に配置される端子の中心を結んだ線上のことをいう。具体的には、マクロ配置領域の一辺の両サイドから、各辺の端からＤ（μｍ）が配線禁止領域となるという配置禁止条件１６で与えられるマクロコーナー端子配置禁止領域Ｄ（μｍ）を差し引いた領域で、端子配置情報の端子グループの端子配置領域の一辺に対する割合と同じ割合になるように端子グループの端子配置領域の座標を算出する。
【００２３】
すなわち、ステップＳ１７では、端子配置情報１５の配置領域を基にマクロ辺上の端子配置領域を算出し、この場合、Ｘ’ｎ１　＝ＸＭ　，Ｘ’ｎ２　＝ＸＭ　とすると、，Ｙ’ｎ１　＝Ｙ１×（ＹＭ　−２Ｄ）／Ｙ＋Ｄ，Ｙ’ｎ２　＝Ｙ２×（ＹＭ　−２Ｄ）／Ｙ＋Ｄとなる。また、ステップＳ１８でも、端子配置情報１５の配置領域を基にマクロ辺上の端子配置領域を算出し、この場合、Ｙ’ｎ１＝ＹＭ　，Ｙ’ｎ２＝ＹＭ　とすると、Ｘ’ｎ１　＝Ｘ１×（ＸＭ　−２Ｄ）／Ｘ＋Ｄ，Ｘ’ｎ２　＝Ｘ２×（ＸＭ　−２Ｄ）
／Ｘ＋Ｄとなる。
【００２４】
図５のように、各端子グループごとの端子配置領域を割り当てる。次の配置ステップＳ１９で、全ての端子グループに端子配置領域が割り当てられたかチェックし、全ての端子グループの割り当てが済まなければステップＳ２０で、ｎ＝ｎ＋１として、ステップＳ１４に戻り、割り当てが全て終ると、端子配置領域情報１８が完成する。この場合の端子配置領域情報１８の一例を、図４（ｂ）のリストに示す。すなわち、端子グループＧＭ１では、配置領域座標が（Ｘ’１１　，Ｙ’１１　）から（Ｘ’１２　，Ｙ’１２　）までで、ピン番号１〜７が７ピンあることを示す。
【００２５】
次に、図７のフロー図になり、ステップＳ２１で、ｎ＝１から始める。まず、ステップＳ２２で、端子配置領域情報１８のグループの端子配置領域、Ｐｉｎ情報を読み込む。すなわち、グループＧ（ｎ）：（Ｘ’ｎ１　，Ｙ’ｎ１　）（Ｘ’ｎ２，Ｙ’ｎ２　）　ＰＩＮｎｕｍｂｅｒ（Ａｎ―Ｂｎ）Ｐｎピンから、Ｘ軸の値Ｘ１＝Ｘ’ｎ１，Ｘ２＝Ｘ’ｎ２　，Ｙ軸の値Ｙ１＝Ｙ’ｎ１　，Ｙ２＝Ｙ’ｎ２　，グループ最小端子番号：Ａｎ，グループ最大端子番号：Ｂｎ，端子数：Ｐｎを読み取る。
【００２６】
さらに、ステップＳ２３で、端子の大きさ（幅）Ｗ（μｍ）と端子間の最小スペースＨ（μｍ）の最小スペース条件１９をもとに、端子配置領域内にグループの端子が全て配置しきれるかをチェックする。すなわち、左右辺領域の場合（Ｘ１＝Ｘ２）、Ｙ２−Ｙ１＞Ｐｎ×（Ｗ＋Ｈ）、上下辺領域の場合（Ｙ１＝Ｙ２）、Ｘ２−Ｘ１＞Ｐｎ×（Ｗ＋Ｈ）かどうか、それぞれチェックする。
【００２７】
これが、配置しきれないと判断された場合、ステップＳ１２に戻り、領域設定のやり直しが必要となる。配置されると判断された場合は、ステップＳ２４で、ｉ＝　Ａｎとして、各端子グループに属する端子を端子配置領域に配置した座標を算出するため、ステップＳ２５，２６に進む。そして、それぞれグループの端子配置領域が左右辺上にあるか（Ｘ１＝Ｘ２）、また上下辺上にあるか（Ｙ１＝Ｙ２）かチェックし、左右辺上にある場合は、ステップＳ２７へ、上下辺上にある場合は、ステップＳ２８へ進み、それぞれの端子配置座標算出ステップＳ２７，２８でグループの端子全てを端子配置領域に配置した時のそれぞれの端子の配置座標を算出する。
【００２８】
ステップＳ２７では、端子配置領域幅Ｌ：Ｙ２−Ｙ１で、Ｐｉｎ（ｉ）　が、（Ｘ１，｛Ｙ１＋Ｌ／２Ｐｎ＋（ｉ−Ａｎ）Ｌ／Ｐｎ｝）となり、ステップＳ２８では、端子配置領域幅Ｌ：Ｘ２−Ｘ１で、Ｐｉｎ（ｉ）　が、
（｛Ｘ１＋Ｌ／２Ｐｎ＋（ｉ−Ａｎ）Ｌ／Ｐｎ｝，Ｙ１）となる。
【００２９】
すなわち、図８の配置図のように、マクロ２ａからコーナ端子配置禁止領域２６を除いて各端子クループＧ１〜Ｇ６を配置した端子配置情報（フレーム）２５を求める。
【００３０】
次のステップＳ３０で、各端子クループの全ての端子に対して処理したかチェックし（ｉ＝Ｂｎ）、していなければ、ステップＳ３１で、ｉ＝ｉ＋１としてステップＳ２５に戻り、全ての端子に対して処理が済めば、さらにステップＳ３２で、全ての端子グループに対して処理したかチェックし（ｎは端子グループ数）、していなければ、ステップＳ３３で、ｎ＝ｎ＋１としてステップＳ２２に戻る。このようにして、端子グループの全ての端子配置座標を算出できたかチェックし、全ての端子の最適化実施後の座標データである最適化端子位置情報２０が完成する。この座標データは、例えば、図４（ｃ）のように、ピン番号とその座標が示され、Ｐｉｎ１（Ｘ１，Ｙ１），Ｐｉｎ２（Ｘ２，Ｙ２）となる。
【００３１】
最後に、仮のフロアプラン１０ａの端子位置最適化情報ＰＡＤＬＩＢ２１の端子の座標データに対してステップＳ３４で，最適化端子位置情報の端子座標を更新し、端子位置最適化情報ＰＡＤＬＩＢ２２を作成する。この端子位置最適化ＰＡＤＬＩＢ２２を用いて、フロアプランをやり直すことによって、チップ上での周辺マクロに対して、最適な端子配置位置でのフロアプランデータを作成することができる。
【００３２】
本発明は本実施形態以外にも適用できる。例えば、マクロサイズ・形が変更された場合でも、同じ端子配置情報を用いて、端子位置の最適化を実施することができる。すなわち、図９の平面図ように、マクロ形状を事情により正方形マクロ３１から長方形マクロ３２に変更しなければならない場合、あるいは逆に長方形から正方形に変更しなければならない場合、端子位置の最適化はマクロ形状が正方形マクロ３１の時でも長方形マクロ３２の時でも、同じ端子配置情報２５を用いて対応することができる。
【００３３】
この端子配置の最適化は、端子配置情報の各辺に対する端子配置領域の割合で、マクロ辺上に端子配置領域を設定するので、形状が変更された場合でも、その形状での各辺に対して端子配置情報の割合で領域を設定し、端子配置座標を算出することができる。
【００３４】
【発明の効果】
以上説明したように、本発明の構成によれば、　端子位置の最適化を実施するにあたり、１チップのデータを必要としないため、ボトムアップ設計におけるマクロの端子位置の最適化を実施することができ、また、工数を減らすことができるという効果がある。さらに、マクロサイズ・形状が変更された場合でも、同じ端子配置情報を用いることができ、速やかに端子位置の最適化を実施することができるという効果がある。
【００３５】
例えば、従来は：端子位置を手修正で、１パターンのＴＡＴ：約１日間／１人であったが、本発明の方法によれば、：端子配置情報により一括処理で端子位置を移動でき、１パターンのＴＡＴ：約３０分間／１人で可能となる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態を説明する処理工程のフロー図。
【図２】図１のレイアウトを説明するチップの平面図。
【図３】（ａ）（ｂ）は図２の端子配置を説明するチップの平面図。
【図４】（ａ）〜（ｃ）は図２の座標　　を説明するチップのリスト図。
【図５】図２の端子配置の最適化を説明するチップの平面図。
【図６】図１の端子配置の最適化を説明する第１の処理工程のフロー図。
【図７】図１の端子配置の最適化を説明する第２の処理工程のフロー図。
【図８】図７の座標の算出を説明するチップの平面図。
【図９】本発明の第２の実施形態を説明するチップの形状が異なる平面図。
【図１０】従来例の端子配置を説明するチップの平面図。
【図１１】従来例の端子位置最適化の方法を説明するフロー図。
【符号の説明】
１　　チップ
２，２ａ，２ｂ　　対象マクロ
３〜８　　マクロ
１０　　フロアプラン
１０ａ　　仮フロアプラン
１１，１５，２５　　端子配置情報（フレーム）
１２　　端子情報（Ｐｉａｓｓ）
１３　　端子グループ情報
１４　　マクロ配置概要情報
１６　　配置禁止条件
１８　　端子配置領域情報
１９　　最小スペース条件
２０　　最適化端子位置情報
２１，２２　　端子位置最適化情報
２６，２６ａ　　端子配置禁止領域
３１　　方形マクロ
３２　　長方形マクロ
４１　　レイアウト用ネットリスト
４２　　端子位置方向指定データ
Ｓ１〜Ｓ５，Ｓ１０〜Ｓ３５，Ｓ１０１〜Ｓ１０７　　処理ステップ
【図１】
2004086755.tif 000003
【図２】
2004086755.tif 000004
【図３】
2004086755.tif 000005
【図４】
2004086755.tif 000006
【図５】
2004086755.tif 000007
【図６】
2004086755.tif 000008
【図７】
2004086755.tif 000009
【図８】
2004086755.tif 000010
【図９】
2004086755.tif 000011
【図１０】
2004086755.tif 000012
【図１１】
2004086755.tif 000013