(57)【要約】【課題】マクロの向きが変更されても、マクロ内に配置されている複数のセルの向きおよびセル間の接続線が維持可能とし、向きの異なるマクロの生成の容易化を図ること。【解決手段】設計支援装置は、複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、セルの端子の配置位置を第１の端子の配置位置として検出する。設計支援装置は、複数の向きのうち、第１の端子が用いられる一の向きと異なる他の向きで用いられるセルの第２の端子の位置を、一の向きから他の向きへの変化量と第１の端子の配置位置に基づいて算出する。設計支援装置は、第１の端子の配置位置と、第２の端子の配置位置と、セルのレイアウトデータとを関連付ける。設計支援装置が、第２の端子の配置位置に端子を挿入する。具体的には、所定のビア層のビアが第２の端子の配置位置に挿入される。設計支援装置が、第１の端子と第２の端子とを接続する。【選択図】図１
2011076154.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出手段、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１の配置位置に基づいて算出する算出手段、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け手段、
前記関連付け手段により関連付けられた関連付け結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項２】
前記コンピュータを、
前記関連付け手段により前記レイアウトデータと関連付けられた第２の配置位置ごとに、前記第２の配置位置へ前記端子を挿入する挿入手段、
前記挿入手段により前記第２の配置位置へ挿入された端子と前記第１の配置位置に配置されている端子とを接続する接続手段、として機能させ、
前記出力手段は、
前記接続手段により接続された接続後のセルのレイアウトデータを出力することを特徴とする請求項１に記載の設計支援プログラム。
【請求項３】
前記算出手段は、
前記第１の配置位置から、前記セルの中心位置を中心にして９０度回転させた位置を前記セルの第２の配置位置として算出し、
前記関連付け手段は、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付けることを特徴とする請求項１または２に記載の設計支援プログラム。
【請求項４】
複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出手段と、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１の配置位置に基づいて算出する算出手段と、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け手段と、
前記関連付け手段により関連付けられた関連付け結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項５】
コンピュータが、
複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出工程と、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出工程により検出された第１の配置位置に基づいて算出する算出工程と、
前記算出工程により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け工程と、
前記関連付け工程により関連付けられた関連付け結果を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【請求項６】
一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援するコンピュータを、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出手段、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出手段により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出手段、
前記セルごとに、前記第１のセル配置位置と前記算出手段により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動手段、
前記接続線ごとに、前記第１の接続線配置位置から前記算出手段により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動手段、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項７】
一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援する設計支援装置であって、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出手段と、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出手段により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出手段と、
前記セルごとに、前記第１のセル配置位置と前記算出手段により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動手段と、
前記接続線ごとに、前記第１の接続線配置位置から前記算出手段により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動手段と、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項８】
一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援するコンピュータが、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出工程と、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出工程により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出工程により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出工程と、
前記セルごとに、前記第１のセル配置位置と前記算出工程により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動工程と、
前記接続線ごとに、前記第１の接続線配置位置から前記算出工程により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動工程と、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力工程と、
を実行することを特徴とする設計支援方法。
【請求項９】
一の向きで用いられている第１の端子と、
前記第１の端子と電気的に接続され、前記一の向きと異なる他の向きで用いられている第２の端子と、
を備えることを特徴とする半導体素子。
【請求項１０】
複数の向きで配置されるマクロであって、
前記複数の向きのうち、一の向きで用いられている第１の端子と、前記複数の向きのうち、前記一の向きと異なる他の向きで用いられ、前記第１の端子と電気的に接続されている第２の端子とを備える複数の半導体素子、を備え、
前記半導体素子が、前記マクロの向きに関わらず前記一の向きで配置されていることを特徴とするマクロ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウトデータの設計を支援する設計支援プログラム、設計支援装置、設計支援方法、半導体素子、およびマクロに関する。
【背景技術】
【０００２】
従来、半導体集積回路のレイアウトでは、歩留まりの向上化やばらつきの低減化を図るためにトランジスタを形成するゲートの向きやピッチが揃えられて配置されている（下記特許文献１参照。）。
【０００３】
マスタースライス方式では、ゲートの向きやピッチを変えずに四方から配線が可能な構造が知られている（下記特許文献２，３参照。）。スタンダードセル方式では、マスタースライス方式とは異なりマクロを利用することができる。マクロは、半導体集積回路内で設計者により所望の場所に縦向きや横向きに配置される。したがって、縦向きのマクロが横向きに配置されるとマクロ内のゲートの向きが変わってしまうため、縦向きのマクロと横向きのマクロの２種類のマクロがあらかじめ用意されていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０４−１６３９６３号公報
【特許文献２】特開昭５８−１６６７４２号公報
【特許文献３】特許第３２７５３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のスタンダードセル方式では、利用者がマクロの向きに応じて２種類のマクロをそれぞれ設計しなければならなかった。従来では、２種類のマクロのうち、一方のマクロから他方のマクロへセルの配置位置およびセル間の接続線の配置位置を単に座標変換すると図２３に示すような問題点があった。
【０００６】
図２３は、従来例を示す説明図である。従来例１では、縦向きに配置されているマクロが、単に縦向きから横向きに変換されると、配線の接続関係は維持されるが、マクロ内に配置されているセルの向きが変わってしまう問題点があった。従来例２では、縦向きに配置されているマクロ内に用いられる各セルが、セルの向きが維持されるように変換されるとセル間の接続関係が変わってしまう（丸印で囲われた箇所）問題点があった。したがって、従来では、上述したように同一機能であっても縦向きのマクロと横向きのマクロの２種類のマクロをそれぞれ設計しなければならず、利用者（設計者）の手間が発生する問題点があった。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の端子の配置位置として検出する検出手段と、前記複数の向きのうち、前記第１の端子が用いられる一の向きと異なる他の向きで用いられる前記セルの第２の端子の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１の端子の配置位置に基づいて算出する算出手段と、前記算出手段により算出された第２の端子の配置位置と、前記第１の端子の配置位置と、前記レイアウトデータと、を関連付ける関連付け手段と、前記関連付け手段により関連付けられた関連付け結果を出力する出力手段と、を備える設計支援装置が提供される。
【発明の効果】
【０００８】
開示の本設計支援プログラム、設計支援装置、および設計支援方法によれば、マクロの向きを変化させても、マクロ内に配置されているセルの向きおよびセル間の接続関係を維持可能とし、向きの異なるマクロの生成を容易化できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１の一例を示す説明図である。
【図２】セルのレイアウトデータの一例を示す説明図である。
【図３】実施の形態１にかかる設計支援装置のハードウェア構成を示すブロック図である。
【図４】実施の形態１にかかる設計支援装置の機能的構成を示すブロック図である。
【図５】検出結果と算出結果の一例を示す説明図である。
【図６】接続結果を示す説明図である。
【図７】設計支援装置４００による設計支援処理手順の一例を示すフローチャートである。
【図８】実施の形態２にかかる設計支援装置の機能的構成を示すブロック図である。
【図９】第１のセル配置位置および第１の接続線配置位置が検出される具体例を示す説明図である。
【図１０】セル１の第２のセル配置位置が算出される具体例を示す説明図である。
【図１１】平行移動処理によりセル１が再配置される具体例を示す説明図である。
【図１２】接続線１の第２の接続線配置位置が算出される具体例を示す説明図である。
【図１３】回転移動処理により接続線１が再配置される具体例を示す説明図である。
【図１４】移動処理後のレイアウトデータの出力例を示す説明図である。
【図１５】設計支援装置８００による設計支援処理手順の一例を示すフローチャートである。
【図１６】第１の端子と第２の端子を備えるインバータの例を示す説明図である。
【図１７】第１の端子がインバータの中心位置に配置されている例を示す説明図である。
【図１８】第１の端子と第２の端子を備える２入力のＮＡＮＤの例を示す説明図である。
【図１９】第１の端子がＮＡＮＤの中心位置に配置されている例を示す説明図である。
【図２０】第１の端子と第２の端子を備える抵抗素子の例を示す説明図である。
【図２１】第１の端子と第２の端子を備える容量素子の例を示す説明図である。
【図２２】縦向きのマクロと横向きのマクロを示す説明図である。
【図２３】従来例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる設計支援プログラム、設計支援装置、設計支援方法、半導体素子、およびマクロの好適な実施の形態を詳細に説明する。
【００１１】
まず、実施の形態１では、縦向きと横向きで配置されるマクロ内で用いられ、縦向きで用いられる第１の端子の配置位置と縦向きから横向きへの変化量に基づいて、横向きで用いられる第２の端子の配置位置を自動で特定する例を示す。さらに、第２の端子の配置位置へ端子を自動で挿入し、第１の端子と接続することで、第１の端子と第２の端子とを備えるセルを自動で生成する例を示す。
【００１２】
つぎに、実施の形態２では、実施の形態１で生成された複数のセルが配置されている縦向きのマクロから、横向きのマクロを自動で生成する例を示す。
【００１３】
そして、実施の形態３では、縦向きと横向きで配置されるマクロ内で用いられ、縦向きでは第１の端子を用い、横向きでは第２の端子を用いる半導体素子について説明する。
【００１４】
最後に、実施の形態４では、実施の形態３で示す複数の半導体素子が配置されているマクロについて説明する。
【００１５】
（実施の形態１）
図１は、実施の形態１の一例を示す説明図である。まず、＜１＞設計支援装置は、複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、セルの端子の配置位置を第１の端子の配置位置として検出する。図１では、入力信号が外部から入力されるＩＮの第１の端子の配置位置と、出力信号を出力するＯＵＴの第１の端子の配置位置とが検出される。本実施の形態では、端子として所定層のビアが検出される。レイアウトデータの中心位置を原点（０，０）として、ＩＮの第１の端子の配置位置は、（−ａ，０）であり、ＯＵＴの第１の端子の配置位置は、（ａ，０）である。
【００１６】
そして、＜２＞設計支援装置は、複数の向きのうち、第１の端子が用いられる一の向きと異なる他の向きで用いられるセルの第２の端子の位置を、一の向きから他の向きへの変化量と第１の端子の配置位置に基づいて算出する。
【００１７】
ここで、マクロの向きについて説明する。まず、レイアウト設計では、レイアウト設計を実施するためのツールによりあらかじめレイアウトデータ上には、Ｘ軸やＹ軸が指定されている。そして、指定されたＸ軸とＹ軸の座標を用いて配線や素子の配置位置が決定されている。本実施の形態では、縦がレイアウトデータ上のＹ軸方向を示し、横がレイアウトデータ上のＸ軸を示している。そして、本実施の形態では、マクロの縦方向の長さが横方向の長さよりも長い場合、縦向きのマクロ（または、縦向きに配置されているマクロ）と定義し、横方向の長さが長い場合、横向きのマクロ（または、横向きに配置されているマクロ）と定義している。マクロの向きが縦向きと横向きのみの場合、第１の端子の配置位置からレイアウトデータの中心位置を中心にして９０度回転させた位置が第２の端子の配置位置である。
【００１８】
つぎに、＜３＞設計支援装置は、第１の端子の配置位置と、第２の端子の配置位置と、セルのレイアウトデータとを関連付ける。具体的には、第１の端子の配置位置と第２の端子の配置位置とを図１に示すような表として関連付け、表にレイアウトデータを関連付けてもよい。そして、設計支援装置は、関連付けられた関連付け結果を出力する。
【００１９】
さらに、設計支援装置が、第２の端子の配置位置に端子を挿入する。具体的には、所定のビア層のビアが第２の端子の配置位置に挿入される。そして、設計支援装置が、第１の端子と第２の端子とを接続する。これにより、一の向きと他の向きとの２種類の向きでのマクロを容易に作成することができる。
【００２０】
（セルのレイアウトデータ）
図２は、セルのレイアウトデータの一例を示す説明図である。実施の形態１では、セルのレイアウトデータの一例としてインバータのレイアウトデータ２００を用いる。まず、図２では、回路シンボルで示すようにインバータの入力端子が、ＩＮであり、出力端子が、ＯＵＴである。インバータでは、ＩＮに入力された信号が反転されてＯＵＴから出力される。
【００２１】
そして、レイアウトデータ２００では、拡散層の領域と、Ｐｏｌｙ（Ｐｏｌｙｉｍｉｄｅ）層のゲートと、ＬＡ層の配線と、ＬＢ層の配線と、ＮＡ層のビアと、ＮＢ層のビアと、ＮＣ層のビアとにより形成されている。拡散層の領域とＬＡ層の配線は、ＮＡ層のビアを介して接続され、Ｐｏｌｙ層のゲートとＬＡ層の配線は、ＮＡ層のビアを介して接続され、ＬＡ層の配線とＬＢ層の配線は、ＮＢ層のビアを介して接続される。本実施の形態では、セルの境界を示すセル枠（セルの外周）は、すべて正方形である。インバータのトランジスタレベルの回路は公知であり、さらに、当該トランジスタレベルの回路を実現するレイアウトデータ２００は、公知であるため説明を省略する。そして、本実施の形態では、ＮＣ層のビアが、端子である。図２では、ＩＮの第１の端子と、ＯＵＴの第１の端子が示されている。なお、本実施の形態１では、セルの中心位置が原点である。
【００２２】
さらに、理解の容易化のために矢印Ａ方向からのレイアウトデータ２００の３次元イメージ図を示す。なお、最下層に記載の白いブロックが、拡散層の領域である。従来では、ＩＮの第１の端子が外部（たとえば、他のセル）からの接続線であるＬＢ層よりも上層の配線と接続され、ＩＮの第１の端子を介して外部から信号がインバータに入力される。そして、ＯＵＴの第１の端子が、外部からの接続線であるＬＢ層よりも上層の配線と接続され、インバータからＯＵＴの第１の端子を介して外部へ信号が出力される。
【００２３】
なお、レイアウトデータ２００は、コンピュータがアクセス可能な記憶装置に記憶されている。
【００２４】
（設計支援装置のハードウェア構成）
図３は、実施の形態１にかかる設計支援装置のハードウェア構成を示すブロック図である。図３において、設計支援装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、ディスプレイ３０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０９と、キーボード３１０と、マウス３１１と、スキャナ３１２と、プリンタ３１３と、を備えている。また、各構成部はバス３００によってそれぞれ接続されている。
【００２５】
ここで、ＣＰＵ３０１は、設計支援装置の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００２６】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２７】
ディスプレイ３０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。当該ディスプレイ３０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２８】
Ｉ／Ｆ３０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク３１４に接続され、このネットワーク３１４を介して他の装置に接続される。そして、Ｉ／Ｆ３０９は、ネットワーク３１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２９】
キーボード３１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３０】
スキャナ３１２は、画像を光学的に読み取り、設計支援装置内に画像データを取り込む。なお、スキャナ３１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ３１３は、画像データや文書データを印刷する。プリンタ３１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００３１】
（実施の形態１にかかる設計支援装置の機能的構成）
図４は、実施の形態１にかかる設計支援装置の機能的構成を示すブロック図である。設計支援装置４００は、検出部４０１と、算出部４０２と、関連付け部４０３と、挿入部４０４と、接続部４０５、出力部４０６と、を含む構成である。各機能（検出部４０１〜出力部４０６）は、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０９により、各機能を実現する。
【００３２】
まず、検出部４０１は、複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、セルの端子の配置位置を第１の配置位置として検出する機能を有する。ここでは、レイアウトデータにあらかじめ配置されているセルの端子を、第１の端子とし、あらたに挿入される端子を第２の端子と称する。検出部４０１は、図１にて示した＜１＞の機能である。具体的には、たとえば、検出部４０１が、レイアウトデータ２００の中心位置を原点（０，０）として、ＩＮの第１の端子の配置位置である（−ａ，０）と、ＯＵＴの第１の端子の配置位置である（ａ，０）を検出する。
【００３３】
また、第１の端子の配置位置がセルの中心位置の場合、複数の向きで第１の端子を用いることができるため、あらたな端子が不要であるため、後述する算出部４０２〜接続部４０５による処理が不要である。
【００３４】
そして、算出部４０２は、複数の向きのうち、第１の端子が用いられる一の向きと異なる他の向きで用いられるセルの第２の端子の配置位置を、一の向きから他の向きへの変化量と検出部４０１により検出された第１の端子の配置位置に基づいて算出する機能を有する。算出部４０２は、図１にて示した＜２＞の機能である。
【００３５】
具体的には、たとえば、算出部４０２が、ＩＮの第１の端子の配置位置に基づいて、ＩＮの第２の端子の配置位置を算出する。本実施の形態では、マクロの向きが縦向きと横向きであるため、算出部４０２が、第１の端子の配置位置に基づいて、第１の端子の配置位置から原点を中心にして９０度回転させた位置をＩＮの第２の端子の配置位置として算出する。具体的には、算出部４０２が、下記式（１）に第１の端子の配置位置を代入することで第１の端子の配置位置から９０度回転させた位置を算出する。
【００３６】
【数１】
2011076154.tif 000003
【００３７】
よって、ベクトルＰが第１の端子の配置位置であり、第１の端子の配置位置がＰ（ｘ，ｙ）の場合、第２の端子の配置位置は、Ｐ’（−ｙ，ｘ）である。図にて算出結果を示す。
【００３８】
図５は、検出結果と算出結果の一例を示す説明図である。図５では、レイアウトデータ２００が簡略化され、各端子の配置位置のみが示されている。まず、検出結果では、ＩＮの第１の端子の配置位置としてＰ１（−ａ，０）が検出され、ＯＵＴの第１の端子位置として、Ｐ２（ａ，０）が検出されている。
【００３９】
つぎに、算出結果では、Ｐ１（−ａ，０）からセルの中心位置を中心にして９０度回転させたＰ１’（０，−ａ）がＩＮの第２の端子の配置位置として算出されている。そして、算出結果では、Ｐ２（ａ，０）から９０度回転させた位置であるＰ２’（０，ａ）がＯＵＴの第２の端子の配置位置として算出される。なお、算出結果は、一旦、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００４０】
つぎに、関連付け部４０３は、算出部４０２により算出された第２の端子の配置位置と、第１の端子の配置位置と、レイアウトデータ２００とを関連付ける機能を有する。関連付け部４０３は、図１にて示した＜３＞の機能である。具体的には、たとえば、関連付け部４０３が、レイアウトデータ２００と、第１の端子の配置位置と、第２の端子の配置位置と、を有する表を生成する。表の一例は、図１にて示しているため、説明を省略する。
【００４１】
そして、出力部４０６は、関連付け部４０３により関連付けられた関連付け結果を出力する機能を有する。具体的には、たとえば、上述した表を出力する。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【００４２】
つぎに、挿入部４０４は、レイアウトデータ２００と関連付け部４０３により関連付けられている第２の端子の配置位置ごとに、レイアウトデータ２００内の第２の端子の配置位置へ端子を挿入する機能を有する。具体的には、たとえば、挿入部４０４が、第２の端子の配置位置ごとに、レイアウトデータ２００内の第２の端子の配置位置へＮＣ層のビアを挿入する。
【００４３】
そして、接続部４０５は、挿入部４０４により第２の端子が挿入された第２の端子の配置位置と、第２の端子の配置位置に関連付けられている第１の端子の配置位置に基づいて、第１の端子と第２の端子とを接続する機能を有する。具体的には、たとえば、接続部４０５が、ＩＮの第１の端子であるＮＣ層のビアとＩＮの第２の端子であるＮＣ層のビアとを、ＬＢ層の配線と、ＮＢ層のビアと、ＬＡ層の配線を介して接続する。そして、ＯＵＴの第１の端子であるＮＣ層のビアとＯＵＴの第２の端子であるＮＣ層のビアとを、ＬＢ層の配線と、ＮＢ層のビアと、ＬＡ層の配線を介して接続する。
【００４４】
なお、ＣＰＵ３０１が実行可能な自動配置配線ツールへ関連付け結果を与え、ＣＰＵ３０１が自動配置配線ツールを実行することで挿入部４０４と接続部４０５の処理を実現してもよい。
【００４５】
図６は、接続結果を示す説明図である。レイアウトデータ６００では、第２の端子が挿入されて、それぞれの第１の端子と接続されている。矢印Ａ方向からのレイアウトデータ６００の３次元イメージ図では、ＮＣ層よりも下層の配線層であるＬＡ層の配線を介して、ＩＮの第１の端子とＩＮの第２の端子とが接続され、ＯＵＴの第１の端子とＯＵＴの第２の端子が接続されている。
【００４６】
（設計支援装置４００の設計支援処理手順）
図７は、設計支援装置４００による設計支援処理手順の一例を示すフローチャートである。まず、複数の向きで配置されるマクロ内に配置されるセルのレイアウトデータを記憶装置から取得し（ステップＳ７０１）、検出部４０１により、セルの第１の端子の配置位置を検出する（ステップＳ７０２）。ここでは、レイアウトデータからセル内の端子ごとに、端子の配置位置が第１の端子の配置位置として検出される。
【００４７】
つぎに、未選択の第１の端子があるか否かを判断する（ステップＳ７０３）。未選択の第１の端子があると判断された場合（ステップＳ７０３：Ｙｅｓ）、未選択の第１の端子から１つの第１の端子を選択する（ステップＳ７０４）。
【００４８】
そして、第１の端子の配置位置が原点（セルの中心位置）か否かを判断する（ステップＳ７０５）。原点（セルの中心位置）であると判断された場合（ステップＳ７０５：Ｙｅｓ）、出力部４０６により、第１の端子と第２の端子が共通であることを出力し（ステップＳ７０６）、ステップＳ７０３へ戻る。第１の端子が原点（セルの中心位置）の場合、第１の端子と第２の端子の位置が同一となるため、算出部４０２〜接続部４０５による処理は不要である。
【００４９】
一方、原点（セルの中心位置）でないと判断された場合（ステップＳ７０５：Ｎｏ）、算出部４０２により、第１の端子の配置位置に基づいて第２の端子の配置位置を算出する（ステップＳ７０７）。そして、第２の端子の配置位置が他の端子の配置位置と重なるか否かを判断し（ステップＳ７０８）、重なると判断された場合（ステップＳ７０８：Ｙｅｓ）、他の端子と重なることを出力し（ステップＳ７０９）、ステップＳ７０３へ戻る。
【００５０】
一方、ステップＳ７０８において、重ならないと判断された場合（ステップＳ７０８：Ｎｏ）、関連付け部４０３により、第１の端子の配置位置と、第２の端子の配置位置と、レイアウトデータとを、関連付ける（ステップＳ７１０）。そして、挿入部４０４により、第２の端子の配置位置に端子を挿入する（ステップＳ７１１）。具体的には、所定ビア層のビアが挿入される。そして、第１の端子と第２の端子とを、指定された端子層より下層である配線層の配線を介して接続し（ステップＳ７１２）、ステップＳ７０３へ戻る。
【００５１】
一方、未選択の第１の端子がないと判断された場合（ステップＳ７０３：Ｎｏ）、出力部４０６により、出力処理を実行し（ステップＳ７１３）、一連の処理を終了する。
【００５２】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態２では、第１の端子と第２の端子とを備えるセルが、マクロの向きに応じて何れか一方のビアを用いて設計されたマクロを、他の向きに変換させる。実施の形態２では、マクロを縦向きから横向きに自動で変換する。これにより、マクロ内に配置されているセルの向きが維持され、かつ配線の接続関係が維持される。なお、実施の形態２では、実施の形態１で示した構成と同一構成については同一符号を付し、説明を省略する。
【００５３】
（実施の形態２にかかる設計支援装置の機能的構成）
図８は、実施の形態２にかかる設計支援装置の機能的構成を示すブロック図である。設計支援装置８００は、検出部８０１と、算出部８０２と、平行移動部８０３と、回転移動部８０４と、出力部８０５と、を含む構成である。各機能（検出部８０１〜出力部８０５）は、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０９により、実現する。まず、設計支援装置８００の設計支援対象となるマクロのレイアウトデータの一例と検出部８０１について図９を用いて説明する。
【００５４】
図９は、第１のセル配置位置および第１の接続線配置位置が検出される具体例を示す説明図である。まず、設計支援装置８００の設計支援対象であるマクロのレイアウトデータ９００について説明する。レイアウトデータ９００では、１目盛りがａである。レイアウトデータ９００には、縦向きに配置されているマクロであり、縦向きで用いられる第１の端子と、横向きで用いられる第２の端子とを備える複数のセル１〜３が縦向きで配置されている。
【００５５】
各セルの外形（セル枠）は、一の向きの長さと他の向きの長さが同一の長さの形状である。たとえば、外形としては、正方形、円などが挙げられる。本実施の形態２では、セル１〜３のように正方形を用いて説明する。セルの境界を示すセル枠が正方形であり、すべて同一形状である。なお、本実施の形態２では、レイアウトデータ９００の原点（０，０）は左下の位置である。
【００５６】
そして、各セル内に配置されているＮＣ層の□が、第１の端子を示し、ＮＣ層の○が第２の端子を示している。対となる□（第１の端子）と○（第２の端子）は、ＮＣ層よりも下層の配線を介して接続されている。レイアウトデータ９００では、□（第１の端子）と○（第２の端子）とのうち、□（第１の端子）を用いてセル間が接続されている。セル１とセル２とを接続線１が接続し、セル１とセル３とを接続線２が接続し、セル２とセル３とを接続線３が接続している。実際には、レイアウトデータ９００は、物理情報であり、レイアウトデータ９００内には、各セルの配置位置と、各接続線の配置位置が記述されている。接続線１を例に挙げると、接続線１はコの字型であるため、４つの端点の座標がレイアウトデータ９００には記述されている。なお、レイアウトデータ９００は、ＣＰＵ３０１がアクセス可能な記憶装置に記憶されている。
【００５７】
検出部８０１は、レイアウトデータ９００から、セルごとにセルの中心位置を第１のセル配置位置として検出する機能を有する。さらに、検出部８０１は、当該レイアウトデータ９００から、セル間の接続線を第１の接続線配置位置として検出する機能を有する。
【００５８】
具体的には、たとえば、検出部８０１が、セル１の中心位置であるＣ１（２ａ，１０ａ）をセル１の第１のセル配置位置として検出する。さらに、検出部８０１が、セル２の中心位置であるＣ２（２ａ，６ａ）をセル２の第１のセル配置位置として検出し、セル３の中心位置であるＣ３（２ａ，２ａ）をセル３の第１のセル配置位置として検出する。また、後述する平行移動部８０３の平行移動処理を実行するために、セル１の場合、セル１の中心位置と共にＦ１（０，１２ａ）とＦ２（０，８ａ）とが検出される。なお、Ｆ１とＦ２に限らず、セルの中心位置とさらに他の少なくとも１つの位置が検出されればよい。
【００５９】
そして、たとえば、検出部８０１が、レイアウトデータ９００から、セル間の接続線ごとに、接続線の配置位置を、第１の接続線配置位置として検出する。接続線１の第１の接続線配置位置が、Ｌ１（１ａ，１１ａ）とＬ２（１ａ、７ａ）である。実際には、接続線１はコの字型であるため、上述したようにレイアウトデータ９００には接続線１の情報として端点である４つの座標が記述されている。よって、接続線１の向きを変更するためには、４つの座標をすべて移動させる位置に変換させる必要があるが、後述する算出部８０２および回転移動部８０４の処理は、どの位置であっても同一であるため、Ｌ１とＬ２のみを例に挙げて説明する。
【００６０】
接続線２の第１の接続線配置位置が、Ｌ３（３ａ，９ａ）とＬ４（１ａ，３ａ）であり、接続線３の第１の接続線配置位置が、Ｌ５（３ａ，１ａ）とＬ６（３ａ，５ａ）である。接続線１と同様に、接続線２では、Ｌ３とＬ４、接続線３では、Ｌ５とＬ６のみでは接続線２と接続線３の向きを変更できないが、後述する算出部８０２および回転移動部８０４の処理は、同一であるため、その他の位置を省略して説明する。
【００６１】
図８の説明に戻って、算出部８０２は、セルごとに、縦向きから横向きへの変化量と検出部８０１により検出された第１のセル配置位置とに基づいて横向きのマクロでの第２のセル配置位置を算出する。たとえば、算出部８０２は、第１のセル配置位置に基づいて、セルの指定位置を中心にして第１のセル配置位置から９０度回転させた位置を第２のセル配置位置として算出する。ここでは、指定位置が、マクロの原点である。具体的には、たとえば、算出部８０２が、下記式（２）に第１のセル配置位置を代入することで算出する。
【００６２】
【数２】
2011076154.tif 000004
【００６３】
ベクトルＣが第１のセル配置位置であり、第１のセル配置位置がＣ（ｘ，ｙ）の場合、式（２）を用いると第２のセル配置位置は、Ｃ’（−ｙ，ｘ）である。図１０にて算出結果を示す。
【００６４】
図１０は、セル１の第２のセル配置位置が算出される具体例を示す説明図である。図１０では、理解の容易化のため、セル間を接続する配線を省略している。セル１の第１のセル配置位置であるＣ１（２ａ，１０ａ）から原点を中心にして９０度回転させたセル１の第２のセル配置位置は、Ｃ１’（−１０ａ，２ａ）である。図示していないが、セル２の第２のセル配置位置は、Ｃ２’（−６ａ，２ａ）であり、セル３の第２のセル配置位置は、Ｃ３’（−２ａ，２ａ）である。
【００６５】
さらに、算出部８０２は、セルの中心位置を除く他の配置位置の横向きのマクロでの第２のセル配置位置を算出する機能を有する。Ｆ１を例に挙げると、具体的には、算出部８０２が、下記式（３）へセル１の第２のセル配置位置であるＣ１’と、Ｆ１と、Ｃ１とを代入することでＦ１の第２のセル配置位置であるＦ１’を算出する。
【００６６】
【数３】
2011076154.tif 000005
【００６７】
Ｆ１とＣ１との差が、（−２ａ，２ａ）であるため、Ｆ１’が、（−１２ａ，４ａ）である。算出部８０２がＦ１と同様にＦ２の第２のセル配置位置であるＦ２’を算出すると、Ｆ２’は、（１２ａ，０）である。なお、セル２とセル３についても、算出部８０２の処理は同一であるため説明を省略する。
【００６８】
図８に戻って、つぎに、平行移動部８０３は、セルごとに第１のセル配置位置と算出部８０２により算出された第２のセル配置位置に基づいて、セルの平行移動処理を実行する機能を有する。図１１を用いて平行移動部８０３の具体的な処理を説明する。
【００６９】
図１１は、平行移動処理によりセル１が再配置される具体例を示す説明図である。具体的には、たとえば、平行移動部８０３が、セル１の第１のセル配置位置をセル１の第２のセル配置位置に変換する。セル１の中心位置が、Ｃ１（２ａ，１０ａ）からＣ１’（−１０ａ，２ａ）に変換されている。さらに、たとえば、平行移動部８０３が、セルの配置位置をＦ１からＦ１’に変換し、Ｆ２からＦ２’に変換する。これにより、セル１が、平行移動される。図示しないが、セル２およびセル３もセル１と同様に平行移動部８０３により平行移動される。
【００７０】
図８に戻って、つぎに、算出部８０２は、セル間の接続線ごとに、縦向きから横向きへの変化量と検出部８０１により検出された第１の接続線配置位置に基づいて、横向きでの第２の接続線配置位置を算出する。本実施の形態では、第２の接続線配置位置は、マクロの原点を中心にして第１の接続線配置位置から９０度回転させた位置である。具体的には、たとえば、算出部８０２が、接続線ごとに下記式（４）へ第１の接続線配置位置を代入することで算出する。
【００７１】
【数４】
2011076154.tif 000006
【００７２】
上記式（４）に記述されているベクトルＬが第１の接続線配置位置であり、第１の接続線配置位置がＬ（ｘ，ｙ）の場合、第２の接続線配置位置は、Ｌ’（−ｙ，ｘ）である。図にて算出結果を示す。
【００７３】
図１２は、接続線１の第２の接続線配置位置が算出される具体例を示す説明図である。接続線１の端点であるＬ１（１ａ，１１ａ）に基づいて算出されるＬ１の第２の接続線配置位置が、Ｌ１’（−１１ａ，１ａ）である。そして、接続線１の端点であるＬ２（１ａ，７ａ）に基づいて算出されるＬ２の第２の接続線配置位置が、Ｌ２’（−７ａ，１ａ）である。
【００７４】
図８に戻って、回転移動部８０４は、接続線ごとに第１の接続線配置位置から第２の接続線配置位置へ回転移動処理を実行する機能を有する。
【００７５】
図１３は、回転移動処理により接続線１が再配置される具体例を示す説明図である。具体的には、たとえば、回転移動部８０４が、接続線１のＬ１をＬ１’に変換し、接続線のＬ２をＬ２’に変換する。図１３では、接続線１が、マクロの原点を中心にして９０度回転させた位置に再配置されている。なお、図示しないが、接続線１と同様に接続線２と接続線３もマクロの原点を中心にして９０度回転させた位置に再配置される。
【００７６】
図１４は、移動処理後のレイアウトデータの出力例を示す説明図である。移動処理後のレイアウトデータ１４００は、横向きに配置されているマクロである。レイアウトデータ９００では、第１の端子（□の端子）が用いられているが、移動処理後のレイアウトデータ１４００では、第２の端子（○の端子）が用いられている。そして、レイアウトデータ９００と、移動処理後のレイアウトデータ１４００とは、配置されている各セルの向きが同一であり、セル間の各接続線の形状が同一である。これにより、マクロの向きが変換されてもセルの向きを維持することができ、かつセル間の接続線を維持することができ、マクロが配置される向きに応じて、利用者が再配線する手間を省くことができる。
【００７７】
図８に戻って、出力部８０５は、平行移動処理および回転移動処理後のレイアウトデータを出力する。具体的には、たとえば、出力部８０５が、移動処理後のレイアウトデータ１４００を出力する。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【００７８】
さらに、利用者が、移動処理後のレイアウトデータ１４００とマクロのネットリストを用いてＬＶＳ（Ｌａｙｏｕｔ  Ｖｓ  Ｓｃｈｅｍａｔｉｃ）を実施することで、マクロ内の配線の接続関係が維持されているかを確認してもよい。
【００７９】
本実施の形態２では、マクロの向きが縦向きの場合、第１の端子を用い、横向きの場合、第２の端子を用いているが、これに限らず、マクロの向きが横向きの場合、第１の端子を用い、縦向きの場合、第２の端子を用いてもよい。本実施の形態では、マクロが縦向きの場合、マクロ内のセルが縦向きであり、マクロが横向きの場合、マクロ内のセルが横向きであるが、これに限らず、マクロ内のセルに用いられているトランジスタの向きが揃っていれば種々変更可能である。
【００８０】
（設計支援装置８００による設計支援処理手順）
図１５は、設計支援装置８００による設計支援処理手順の一例を示すフローチャートである。まず、マクロのレイアウトデータから未選択のセルがあるか否かを判断し（ステップＳ１５０１）、未選択のセルがあると判断された場合（ステップＳ１５０１：Ｙｅｓ）、未選択のセルから１つのセルを選択する（ステップＳ１５０２）。
【００８１】
つぎに、検出部８０１により、セルの中心位置を第１のセル配置位置として検出し（ステップＳ１５０３）、算出部８０２により、第１のセル配置位置から９０度回転させた第２のセル配置位置を算出する（ステップＳ１５０４）。そして、平行移動部８０３により、第１のセル配置位置と第２のセル配置位置に基づいてセルの平行移動処理を実行し（ステップＳ１５０５）、ステップＳ１５０１に戻る。
【００８２】
一方、ステップＳ１５０１において、未選択のセルがないと判断された場合（ステップＳ１５０１：Ｎｏ）、検出部８０１により、レイアウトデータから、未選択の接続線があるか否かを判断する（ステップＳ１５０６）。
【００８３】
ステップＳ１５０６において、未選択の接続線があると判断された場合（ステップＳ１５０６：Ｙｅｓ）、未選択の接続線の中から１つの接続線を選択する（ステップＳ１５０７）。そして、検出部８０１により、接続線の配置位置を第１の接続線配置位置として検出し（ステップＳ１５０８）、算出部８０２により、第１の接続線配置位置から９０度回転させた第２の接続線配置位置を算出する（ステップＳ１５０９）。
【００８４】
つづいて、回転移動部８０４により、第１の接続線配置位置と第２の接続線配置位置に基づいて、回転移動処理を実行し（ステップＳ１５１０）、ステップＳ１５０６へ戻る。これにより、接続線が、第１の接続線配置位置からマクロの原点を中心にして９０度回転させた第２の接続線配置位置に再配置される。
【００８５】
一方、ステップＳ１５０６において、未選択の接続線がないと判断された場合（ステップＳ１５０６：Ｎｏ）、出力処理を実行し（ステップＳ１５１１）、一連の処理を終了する。
【００８６】
（実施の形態３）
実施の形態３では、一の向きと他の向きで配置されるマクロ内で用いられる半導体素子であって、一の向きで用いられる第１の端子と他の向きで用いられる第２の端子とを備える半導体素子について説明する。実施の形態３では、インバータと、２入力のＮＡＮＤと、Ｐｏｌｙ抵抗と、容量とを、例として図示する。
【００８７】
図１６は、第１の端子と第２の端子を備えるインバータの例を示す説明図である。インバータは、入力端子としてＩＮと、出力端子としてＯＵＴを備えている。インバータは、拡散層の領域と、Ｐｏｌｙ層のゲートと、ＬＡ層の配線と、ＬＢ層の配線と、ＮＡ層のビアと、ＮＢ層のビアと、ＮＣ層のビアとにより形成されている。インバータの構成については、公知であるため詳細な説明を省略する。まず、インバータでは、ＩＮの第１の端子とＩＮの第２の端子を備え、ＩＮの第１の端子とＩＮの第２の端子とがＬＡ層の配線を介して接続されている。そして、インバータでは、ＯＵＴの第１の端子とＯＵＴの第２の端子を備え、ＩＮの第１の端子とＩＮの第２の端子がＬＡ層の配線を介して接続されている。
【００８８】
インバータでは、第１の端子または第２の端子うち、いずれか一方の端子が、外部の信号線に直接接続され、他方の端子が、一方の端子を介してのみ外部の信号線に電気的に接続される。図１６では、外部の信号線を示していないが、外部の信号線とは、ＮＣ層のビアを介してＬＢ層の配線と接続可能な配線層の配線であり、外部からＩＮに入力される信号やＯＵＴから外部へ出力される信号である。そして、第２の端子の配置位置は、第１の端子の配置位置から、インバータの中心位置を中心にして９０度回転させた位置である。
【００８９】
図１７は、第１の端子がインバータの中心位置に配置されている例を示す説明図である。図１７で示すインバータでは、ＩＮの第１の端子の配置位置が、インバータの中心位置に配置されている。セルの中心位置に配置されている場合、ＩＮの第１の端子とＩＮの第２の端子とは同一である。
【００９０】
図１８は、第１の端子と第２の端子を備える２入力のＮＡＮＤの例を示す説明図である。ＮＡＮＤは、入力端子としてＩＮ１とＩＮ２を、出力端子としてＯＵＴを有し、ＩＮ１、ＩＮ２、ＯＵＴごとに第１の端子および第２の端子を有している。マクロの向きに基づいて、第１の端子と第２の端子のうち、いずれか一方の端子が、外部の信号線と直接接続される。なお、２入力のＮＡＮＤの構成については、公知であるため詳細な説明を省略する。
【００９１】
図１９は、第１の端子がＮＡＮＤの中心位置に配置されている例を示す説明図である。図１９で示すＮＡＮＤでは、ＯＵＴの第１の端子が、ＮＡＮＤの中心位置に配置されている。第１の端子が中心位置に配置されているため、第１の端子と第２の端子とは、同一である。
【００９２】
図２０は、第１の端子と第２の端子を備える抵抗素子の例を示す説明図である。図２０に示す抵抗素子は、Ｐｏｌｙ抵抗素子であり、外部の信号線と接続されるＡとＢを有し、ＡおよびＢごとに第１の端子および第２の端子を有している。マクロの向きに基づいて、第１の端子と第２の端子のうち、いずれか一方の端子が外部の信号線と直接接続される。なお、抵抗素子の構成については、公知であるため詳細な説明を省略する。
【００９３】
図２１は、第１の端子と第２の端子を備える容量素子の例を示す説明図である。容量素子は、外部の信号線と接続されるＡとＢを有し、ＡおよびＢごとに第１の端子および第２の端子を有している。マクロの向きに基づいて、第１の端子と第２の端子のうち、いずれか一方の端子が外部の信号線と直接接続される。なお、容量の構成については、公知であるため詳細な説明を省略する。
【００９４】
（実施の形態４）
最後に、実施の形態４では、縦向きのマクロと横向きのマクロについて説明する。
【００９５】
図２２は、縦向きのマクロと横向きのマクロを示す説明図である。縦向きのマクロと横向きのマクロの２種類のマクロでは、いずれも素子１と素子２と素子３が配置され、素子１〜３が同一向きである。素子１，２，３では、第１の端子（□）と第２の端子（○）とを備えている。そして、縦向きのマクロでは、第１の端子が用いられ、横向きのマクロでは、第２の端子が用いられている。さらに、横向きのマクロと縦向きのマクロでは、素子間を接続する接続線が同一形状である。
【００９６】
以上実施の形態１で説明したように、設計支援プログラム、設計支援装置、および設計支援方法によれば、一の向きで用いるセルの端子の第１の配置位置と一の向きから他の向きへの変化量に基づいて他の向きで用いる端子の第２の配置位置を算出する。そして、第１の配置位置と第２の端子位置を関連付けることにより、マクロが配置される向きを一の向きから他の向きに変化させても、向きおよび接続関係が維持可能なセルを利用者の操作により容易に生成することができる。これにより、向きの異なるマクロの生成の容易化を図ることができる。
【００９７】
また、マクロが配置される向きを変化させても、向きおよび接続関係が維持可能なセルが自動で生成される。したがって、生成されたセルを用いて一の向きで配置されているマクロを利用者の操作により設計することで、他の向きで配置されるマクロを、容易に生成することができ、利用者が、再配線する手間を省くことができる。
【００９８】
また、第１の配置位置から、セルの中心位置を中心にして９０度回転させた位置を第２の配置位置として自動で特定して、第１の端子と第２の端子を備えるセルが自動で生成される。したがって、利用者が、マクロの向きに応じてマクロ内のセルを再配線する手間を省くことができる。これにより、マクロが配置される向きが、縦向きから横向きへ、横向きから縦向きへ変更されても、セルの向きおよびセル間の接続関係を維持することができる。
【００９９】
以上実施の形態２で説明したように、設計支援プログラム、設計支援装置、および設計支援方法によれば、一の向きで配置されているマクロ内のセルを平行移動させ、セル間の接続線を回転移動させることで、他の向きで配置されるマクロを自動で生成する。これにより、マクロ内で用いられているセルおよびセル間の接続線が再配置される。したがって、利用者が、他の向きのマクロを再配線する手間を省くことができ、利用者が、横向きと縦向きの２種類のマクロを容易に得ることができる。
【０１００】
また、セルごとにセルの中心位置を、セルの中心位置から９０度回転させた位置へ平行移動させ、セル間の接続線ごとに接続線の配置位置を、接続線の配置位置から９０度回転させた位置へ回転移動させる。これにより、マクロが配置される向きが変化しても、マクロ内に配置されているセルの向きおよびセル間の接続線が維持される。したがって、向きの異なるマクロを容易に生成することができ、設計者が、向きに応じてマクロを再配線する手間を省くことができる。
【０１０１】
また、セルの外形が、一の向きの長さと他の向きの長さが同一長さとなる形状である。これにより、各セルの面積が異なっていても、セルの平行移動およびセル間の接続線の回転移動を容易に実施することができる。
【０１０２】
以上実施の形態３で説明した半導体素子では、複数の向きで配置されているマクロに用いられ、一の向きで用いられている半導体素子の第１の端子と、一の向きと異なる他の向きで用いられている半導体素子の第２の端子と、を備える。これにより、同一機能で、配置される向きのみが異なる２種類のマクロでは、半導体素子の向きが同一であり、半導体素子間の接続線が同一形状である。したがって、同一機能で向きが異なる２種類のマクロの特性の差を小さくすることができる。
【０１０３】
また、第２の端子の配置位置が、第１の端子の配置位置から半導体素子の中心位置を中心にして９０度回転させた位置である。たとえば、縦向きで配置されるマクロと横向きで配置されるマクロのうち、一方の向きのマクロでは、第１の端子を用い、他方の向きのマクロでは、第２の端子を用いる。これにより、２種類のマクロ内の半導体素子の向きを同一とし、かつ半導体素子間の接続線を同一形状とすることができる。
【０１０４】
第１の端子の配置位置が半導体素子の中心位置の場合、第１の端子と第２の端子を同一にする。これにより、マクロの向きに関係なく、半導体素子の向きを揃えることができる。
【０１０５】
以上実施の形態４で説明したマクロでは、一の向きで用いられる第１の端子と、一の向きと異なる他の向きで用いられる第２の端子とを備える複数のセルが一の向きで配置されている。これにより、向きの異なる２種類のマクロ内に配置されている半導体素子の向きが同一であり、かつ半導体素子間の各接続線が２種類のマクロにおいて同一形状であるため、２種類のマクロの特性の差を小さくすることができる。
【０１０６】
なお、本実施の形態１，２で説明した設計支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０８】
（付記１）コンピュータを、
複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出手段、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１の配置位置に基づいて算出する算出手段、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け手段、
前記関連付け手段により関連付けられた関連付け結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【０１０９】
（付記２）前記コンピュータを、
前記関連付け手段により前記レイアウトデータと関連付けられた第２の配置位置ごとに、前記第２の配置位置へ前記端子を挿入する挿入手段、
前記挿入手段により前記第２の配置位置へ挿入された端子と前記第１の配置位置に配置されている端子とを接続する接続手段、として機能させ、
前記出力手段は、
前記接続手段により接続された接続後のセルのレイアウトデータを出力することを特徴とする付記１に記載の設計支援プログラム。
【０１１０】
（付記３）前記算出手段は、
前記第１の配置位置から、前記セルの中心位置を中心にして９０度回転させた位置を前記セルの第２の配置位置として算出し、
前記関連付け手段は、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付けることを特徴とする付記１または２に記載の設計支援プログラム。
【０１１１】
（付記４）複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出手段と、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１の配置位置に基づいて算出する算出手段と、
前記算出手段により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け手段と、
前記関連付け手段により関連付けられた関連付け結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【０１１２】
（付記５）コンピュータが、
複数の向きで配置されるマクロ内で用いられるセルのレイアウトデータから、前記セルの端子の配置位置を第１の配置位置として検出する検出工程と、
前記複数の向きのうち、前記第１の配置位置で用いられる一の向きと異なる他の向きで用いられる前記端子の第２の配置位置を、前記一の向きから前記他の向きへの変化量と前記検出工程により検出された第１の配置位置に基づいて算出する算出工程と、
前記算出工程により算出された第２の配置位置と、前記第１の配置位置と、前記レイアウトデータとを関連付ける関連付け工程と、
前記関連付け工程により関連付けられた関連付け結果を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【０１１３】
（付記６）一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援するコンピュータを、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出手段、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出手段により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出手段、
前記セルごとに、前記第１のセル配置位置と前記算出手段により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動手段、
前記接続線ごとに、前記第１の接続線配置位置から前記算出手段により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動手段、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【０１１４】
（付記７）前記算出手段は、
前記セルごとに、前記第１のセル配置位置から前記マクロの指定位置を中心にして９０度回転させた位置を第２のセル配置位置として算出し、前記接続線ごとに、前記第１の接続線配置位置から前記マクロの原点を中心にして９０度回転させた位置を第２の接続線配置位置として算出し、
前記平行移動手段は、
前記セルごとに、前記第１のセル配置位置と前記算出手段により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行し、
前記回転移動手段は、
前記接続線ごとに、前記第１の接続線配置位置から前記算出手段により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行することを特徴とする付記６に記載の設計支援プログラム。
【０１１５】
（付記８）前記セルの外形が、一の向きの長さと他の向きの長さが同一長さとなる形状であることを特徴とする付記６または７に記載の設計支援プログラム。
【０１１６】
（付記９）一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援する設計支援装置であって、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出手段と、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出手段により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出手段により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出手段と、
前記セルごとに、前記第１のセル配置位置と前記算出手段により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動手段と、
前記接続線ごとに、前記第１の接続線配置位置から前記算出手段により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動手段と、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力手段と、
を備えることを特徴とする設計支援装置。
【０１１７】
（付記１０）一の向きで用いられる端子と、前記一の向きと異なる他の向きで用いられる端子とを備える複数のセルが前記一の向きで配置されているマクロのレイアウトデータを用いる設計を支援するコンピュータが、
前記レイアウトデータから、前記セルごとに、前記セルの中心位置を第１のセル配置位置として検出し、前記セル間の接続線ごとに、前記接続線の配置位置を第１の接続線配置位置として検出する検出工程と、
前記セルごとに、前記一の向きから前記他の向きへの変化量と前記検出工程により検出された第１のセル配置位置とに基づいて前記他の向きでの第２のセル配置位置を算出し、前記接続線ごとに、前記変化量と前記検出工程により検出された第１の接続線配置位置に基づいて前記他の向きでの第２の接続線配置位置を算出する算出工程と、
前記セルごとに、前記第１のセル配置位置と前記算出工程により算出された第２のセル配置位置に基づいて、前記セルの平行移動処理を実行する平行移動工程と、
前記接続線ごとに、前記第１の接続線配置位置から前記算出工程により算出された第２の接続線配置位置への前記接続線の回転移動処理を実行する回転移動工程と、
前記平行移動処理および前記回転移動処理後のレイアウトデータを出力する出力工程と、
を実行することを特徴とする設計支援方法。
【０１１８】
（付記１１）一の向きで用いられている第１の端子と、
前記第１の端子と電気的に接続され、前記一の向きと異なる他の向きで用いられている第２の端子と、
を備えることを特徴とする半導体素子。
【０１１９】
（付記１２）前記第２の端子の配置位置が、前記第２の端子と電気的に接続されている前記第１の端子の配置位置から、前記半導体素子の中心位置を中心にして９０度回転させた位置であることを特徴とする付記１１に記載の半導体素子。
【０１２０】
（付記１３）複数の向きで用いられる端子が半導体素子の中心位置に配置されていることを特徴とする半導体素子。
【０１２１】
（付記１４）複数の向きで配置されるマクロであって、
前記複数の向きのうち、一の向きで用いられている第１の端子と、前記複数の向きのうち、前記一の向きと異なる他の向きで用いられ、前記第１の端子と電気的に接続されている第２の端子とを備える複数の半導体素子、を備え、
前記半導体素子が、前記マクロの向きに関わらず前記一の向きで配置されていることを特徴とするマクロ。
【符号の説明】
【０１２２】
２００  レイアウトデータ
４００  設計支援装置
４０１  検出部
４０２  算出部
４０３  関連付け部
４０４  挿入部
４０５  接続部
４０６  出力部
８００  設計支援装置
８０１  検出部
８０２  算出部
８０３  平行移動部
８０４  回転移動部
８０５  出力部
９００  レイアウトデータ
１４００  移動処理後のレイアウトデータ
【図１】
2011076154.tif 000007
【図２】
2011076154.tif 000008
【図３】
2011076154.tif 000009
【図４】
2011076154.tif 000010
【図５】
2011076154.tif 000011
【図６】
2011076154.tif 000012
【図７】
2011076154.tif 000013
【図８】
2011076154.tif 000014
【図９】
2011076154.tif 000015
【図１０】
2011076154.tif 000016
【図１１】
2011076154.tif 000017
【図１２】
2011076154.tif 000018
【図１３】
2011076154.tif 000019
【図１４】
2011076154.tif 000020
【図１５】
2011076154.tif 000021
【図１６】
2011076154.tif 000022
【図１７】
2011076154.tif 000023
【図１８】
2011076154.tif 000024
【図１９】
2011076154.tif 000025
【図２０】
2011076154.tif 000026
【図２１】
2011076154.tif 000027
【図２２】
2011076154.tif 000028
【図２３】
2011076154.tif 000029