(57)【要約】【課題】  レイアウト対称制約を効率よく検証するレイアウト対称制約検証方法および装置を提供する。【解決手段】  入力されたレイアウトデータに対して、対称素子ペアの形状の一致等を検証する第１の検証ステップと、素子の相対位置関係がレイアウト対称制約と矛盾していないかを検証する第２の検証ステップと、素子の配置がレイアウト対称制約を満たしているかどうかを図形的に検証する第３の検証ステップとにより、レイアウト対称制約の検証が行われる。また、それぞれの検証ステップでエラーが発生した場合には、そのエラーの原因が特定され、設計者に提示されることにより、レイアウト設計の効率化が実現される。【選択図】  図２
2006058958.tif 000002
【特許請求の範囲】
【請求項１】
回路に含まれる素子の配置の対称性を検証する方法であって、
共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力するレイアウト対称制約入力ステップと、
前記素子の形状情報および前記素子の配置情報を含むレイアウトデータを入力するレイアウトデータ入力ステップと、
前記レイアウトデータに含まれる素子の形状情報に基づき、前記対称素子ペアを構成する素子同士の形状が一致することを検証する第１の検証ステップと、
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の相対位置関係を求め、求めた前記相対位置関係が前記レイアウト対称制約を満たすことを検証する第２の検証ステップと、
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の配置が前記レイアウト対称制約を満たすことを図形的に検証する第３の検証ステップとを備えた、レイアウト対称制約検証方法。
【請求項２】
前記レイアウト対称制約は、前記素子自身が前記対称軸に対して対称に配置されるべき自己対称素子の情報をさらに含むことを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項３】
前記第１の検証ステップは、前記対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致することを検証するステップを含むことを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項４】
前記第３の検証ステップは、前記対称素子ペアを構成する素子の重心を結ぶ線分の中点が、前記対称軸上にあることを検証することを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項５】
前記第３の検証ステップは、前記自己対称素子の重心が、前記対称軸上にあることを検証することを特徴とする、請求項２に記載のレイアウト対称制約検証方法。
【請求項６】
前記第２の検証ステップは、前記素子の相対位置関係を、シーケンスペアを用いて表現し、求めた前記シーケンスペアを用いて、前記素子の相対位置関係が前記レイアウト対称制約を満たすことを検証することを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項７】
前記第２の検証ステップは、前記素子の相対位置関係を、前記素子の水平方向の位置関係を表す第１のグラフと、前記素子の垂直方向の位置関係を表す第２のグラフとを用いて表現し、求めた前記第１のグラフおよび前記第２のグラフを用いて、前記素子の相対位置関係が前記レイアウト対称制約を満たすことを検証することを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項８】
前記第２の検証ステップは、前記素子の相対位置関係を、上、下、左、右、右上、左下、左上および右下の８方位を用いて表現し、求めた前記８方位を用いて、前記素子の相対位置関係が前記レイアウト対称制約を満たすことを検証することを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項９】
前記レイアウトデータが前記素子に結線される配線の情報を含み、かつ、前記レイアウト対称制約が前記対称軸に対して対称となるべき前記配線からなる対称配線ペアの情報を含み、前記配線の対称性を検証するステップをさらに含むことを特徴とする、請求項１に記載のレイアウト対称制約検証方法。
【請求項１０】
回路に含まれる素子の配置の対称性を検証する方法であって、
共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力するステップと、
前記素子の形状情報および前記素子の配置情報を含むレイアウトデータを入力するステップと、
前記レイアウトデータに基づき、素子の配置を表示するステップと、
前記対称軸を指定するステップと、
指定した前記対称軸を前記素子の配置と重ねて表示するステップと、
前記レイアウトデータに含まれる素子の形状情報に基づき、前記対称素子ペアを構成する素子同士の形状が一致することを検証するステップと、
前記レイアウト対称制約に含まれる全ての素子が、前記対称軸に対して、対称性を満たすことを図形的に検証するステップとを備えた、レイアウト対称制約検証方法。
【請求項１１】
前記レイアウト対称制約は、前記素子自身が前記対称軸に対して対称に配置されるべき自己対称素子の情報をさらに含むことを特徴とする、請求項１０に記載のレイアウト対称制約検証方法。
【請求項１２】
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の相対位置関係を求め、求めた前記相対位置関係が前記レイアウト対称制約を満たすことを検証するステップをさらに含む、請求項１０に記載のレイアウト対称制約検証方法。
【請求項１３】
回路に含まれる素子の配置の対称性を検証する装置であって、
共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力するレイアウト対称制約入力手段と、
前記素子の形状情報および前記素子の配置情報を含むレイアウトデータを入力するレイアウトデータ入力手段と、
前記レイアウトデータに含まれる素子の形状情報に基づき、前記対称素子ペアを構成する素子同士の形状が一致することを検証する第１の検証手段と、
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の相対位置関係を求め、求めた前記相対位置関係が前記レイアウト対称制約を満たすことを検証する第２の検証手段と、
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の配置が前記レイアウト対称制約を満たすことを図形的に検証する第３の検証手段とを備えた、レイアウト対称制約検証装置。
【請求項１４】
前記レイアウト対称制約は、前記素子自身が前記対称軸に対して対称に配置されるべき自己対称素子の情報をさらに含むことを特徴とする、請求項１３に記載のレイアウト対称制約検証装置。
【請求項１５】
前記第１の検証手段は、前記対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致することを検証する手段を含むことを特徴とする、請求項１３に記載のレイアウト対称制約検証装置。
【請求項１６】
回路に含まれる素子の配置の対称性を検証する装置であって、
共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力する手段と、
前記素子の形状情報および前記素子の配置情報を含むレイアウトデータを入力する手段と、
前記レイアウトデータに基づき、素子の配置を表示する手段と、
前記対称軸を指定する手段と、
指定した前記対称軸を前記素子の配置と重ねて表示する手段と、
前記レイアウトデータに含まれる素子の形状情報に基づき、前記対称素子ペアを構成する素子同士の形状が一致することを検証する手段と、
前記レイアウト対称制約に含まれる全ての素子が、前記対称軸に対して、対称性を満たすことを図形的に検証する手段とを備えた、レイアウト対称制約検証装置。
【請求項１７】
前記レイアウト対称制約は、前記素子自身が前記対称軸に対して対称に配置されるべき自己対称素子の情報をさらに含むことを特徴とする、請求項１６に記載のレイアウト対称制約検証装置。
【請求項１８】
前記レイアウトデータに含まれる素子の配置情報に基づき、前記素子の相対位置関係を求め、求めた前記相対位置関係が前記レイアウト対称制約を満たすことを検証する手段をさらに含む、請求項１６に記載のレイアウト対称制約検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウト対称制約検証方法およびレイアウト対称制約検証装置に関し、より特定的には、アナログ回路、デジタル回路などの半導体集積回路のレイアウトが、対称であるか否かを検証するレイアウト対称制約検証方法およびレイアウト対称制約検証装置に関する。
【背景技術】
【０００２】
半導体集積回路の設計には、様々なレイアウト（素子の配置）制約を考慮して設計する必要がある。例えば、差動信号を用いたアナログ回路では、レイアウトの対称性を考慮して設計する必要がある。このようなレイアウト制約を考慮した自動レイアウト方法は、従来から多数提案されている。このような、自動レイアウト方法を用いた場合でも、レイアウト結果が本当にレイアウト制約を満足している事を検証する方法、特にレイアウトの対称性を検証する方法は、現在も課題として残されている。
【０００３】
また、従来のレイアウト設計では、レイアウト制約の確認は、対称素子間の距離の測定や、目視といった人手作業で行っていた。また、エラーが検出された場合、設計者自身が模索することによりエラーを解消していた。
【０００４】
そこで、レイアウト制約を検証する方法が要望されている。さらには、エラーの原因を設計者に知らせることも重要なことである。
【０００５】
設計者にとって有用なエラー情報の一例として、例えば、レイアウト対称制約の検証処理の過程でエラーが発生した場合、そのエラーが素子同士の位置関係の修正が必要なエラー（比較的重度のエラー）か、それとも、一部の素子の位置を微調整することにより解消されるエラー（比較的軽度のエラー）であるのか、エラーの種類を知らせるというようなことが考えられる。レイアウト設計の初期段階で、比較的重度のエラーを解消することができれば、レイアウト設計を効率よく行うことが可能になるからである。
【０００６】
以下に、エラーの判別方法として従来から行われている人手による方法を、図を参照しながら説明する。図２８は、あるアナログ回路の素子の配置を示す。図中の矩形Ａ、Ｂ、Ｃ、ＤおよびＨは、アナログ素子を示し、破線２８００および２８０１は、対称軸を示す。ただし、従来のレイアウト設計では、設計者は頭の中で対称軸を想定するだけで、レイアウトデータとして対称軸を描画することは無かった。よって破線２８００および２８０１は、あくまでも説明のためのものである。図２８の例では、簡単のため対称軸はＹ軸と平行であるとする。図２８には、素子同士が対称性を必要とする対称素子ペアである素子Ａおよび素子Ｃと、同じく対称素子ペアである素子Ｂおよび素子Ｄと、素子自身が対称性を必要とする自己対称素子Ｈとが配置されている。これら全ての素子が同じ対称軸を共有するグループであるとする。このように、素子が対称軸を共有する制約をレイアウト対称制約と呼ぶ。簡単のため、上記のレイアウト対称制約を式（１）のように記述する。
γ＝（（Ａ，Ｃ），（Ｂ，Ｄ），Ｈ）・・・（１）
【０００７】
対称軸がＹ軸に平行であることから、この場合の対称性の確認には、レイアウト対称制約に含まれる対称素子ペアを構成する素子の重心のＹ座標が一致することと、対称素子ペアを構成する素子の重心を結ぶ線分の中点のＸ座標、および、自己対称素子の重心のＸ座標が全て一致することとを確認すればよい。
【０００８】
設計者が図２８（ａ）に示されるように素子を配置した場合には、素子Ａの重心のＹ座標と素子Ｃの重心のＹ座標、および、素子Ｂの重心のＹ座標と素子Ｄの重心のＹ座標は一致しており、また、素子Ａの重心と素子Ｃの重心とを結ぶ線分の中点のＸ座標、素子Ｂの重心と素子Ｄの重心とを結ぶ線分の中点のＸ座標、および、素子Ｈの重心のＸ座標も一致している。したがって、対称素子ペア（Ａ，Ｃ）、（Ｂ，Ｄ）、および、自己対称素子Ｈは、対称軸２８００に対して対称であり、式（１）で表されるレイアウト対称制約を満たしている。
【０００９】
一方、設計者が図２８（ｂ）および（ｃ）に示されるように素子を配置した場合には、素子Ａの重心と素子Ｃの重心とを結ぶ線分の中点のＸ座標と、素子Ｈの重心のＸ座標とは一致しており、対称軸２８００上にあるが、素子Ｂの重心と素子Ｄの重心とを結ぶ線分の中点のＸ座標は、対称軸２８０１上にあり、これらのレイアウトは、レイアウト対称制約を満たしていない。したがって、上記の２つの例の場合、素子の配置にエラーが発生している。
【００１０】
図２８（ｂ）および（ｃ）におけるエラーの原因をそれぞれ検証すると、図２８（ｂ）の場合では、素子Ｄは、素子Ｃの左側に配置されなければならず、図２８（ｂ）における配置エラーは、素子の位置関係を変更しなければならない比較的重度なエラーであることが分かる。一方、図２８（ｃ）の場合では、素子Ｄの位置を少し右にずらす微調整で修復できる比較的軽度なエラーであることが分かる。
【００１１】
図２８の例のように、素子の数が少ない場合には、人手による方法で、エラーが素子の位置関係を変更しなければならない比較的重度なエラーであるのか、素子の位置を微調整するだけで解消できる比較的軽度なエラーであるのか、エラーの種類の判別が可能である。しかし、対象とする回路の規模が大きい場合や回路が複雑な場合には、人手で素子の位置関係の正当性等を確認することは困難である。それゆえ、回路の規模が大きい場合や回路が複雑な場合においても有効なエラーの判別方法が望まれている。
【００１２】
そこで、素子の相対位置関係をシーケンスペアで表すことにより、素子の対称性を検証する方法が提案されている。シーケンスペアは、２次元平面上に配置された矩形の相対位置関係を、順列ペア（α，β）で表したものである。以下、図２９を用いてシーケンスペアについて説明する。
【００１３】
矩形Ｘと矩形Ｙが２次元空間に配置されている場合、矩形Ｘは、矩形Ｙの上側、下側、左側、右側のいずれかの位置にある（図２９（ａ）参照）。この場合、矩形Ｘが矩形Ｙの左に位置することを、シーケンスペアを用いて表すと、（α，β）＝（ＸＹ，ＸＹ）となる。また、矩形Ｘが矩形Ｙの右側に位置することを（ＹＸ，ＹＸ）と、矩形Ｘが矩形Ｙの上側に位置することを（ＸＹ，ＹＸ）と、矩形Ｘが矩形Ｙの下側に位置することを（ＹＸ，ＸＹ）と表す。
【００１４】
３個以上の矩形が２次元に配置されている場合には、２個の矩形についてシーケンスペアを求める手順を繰り返し適用することにより、シーケンスペア（α，β）を求めることができる。ここで、αおよびβは、３個以上の矩形の並びである。例えば、図２９（ｂ）に示される矩形の相対位置は、シーケンスペアを用いて、（α，β）＝（ＥＣＡＢＦＤ，ＦＣＤＥＡＢ）と表現される。なお、シーケンスペアについては、例えば、非特許文献１などの文献に詳しく説明されている。
【００１５】
素子の対称性をシーケンスペアを用いて検証する方法の一つとして、非特許文献２に記載の方法がある。この方法では、まず、レイアウト対称制約が与えられている素子の配置を、シーケンスペア（α，β）で表現する。次に、レイアウト対称制約が与えられている素子のグループに含まれる、任意の素子Ｘと素子Ｙについて、αにおける素子Ｘの位置をα（Ｘ）、βにおける素子Ｘの位置をβ（Ｘ）と記述する。さらに、素子Ｘと対称軸に対して対称な素子をｓｙｍ（Ｘ）、素子Ｙと対称軸に対して対称な素子をｓｙｍ（Ｙ）と記述する（素子Ｘが自己対称素子である場合は、Ｘ＝ｓｙｍ（Ｘ）である）。
【００１６】
非特許文献２には、これらの対称素子ペアが、レイアウト対称制約を満足するためには、素子Ｘ、Ｙについて、以下の式（２）を満たすことが必要であるということが記載されている。
α（Ｘ）＜α（Ｙ）⇔β（ｓｙｍ（Ｙ））＜β（ｓｙｍ（Ｘ））・・・（２）
【００１７】
しかしながら、式（２）はレイアウト対称制約を満たす必要条件ではあるが、十分条件ではない。以下、図３０を用いて式（２）がレイアウト対称制約を満足する十分条件でないことを説明する。図３０では、レイアウト対称制約γ＝（（Ａ，Ｃ），（Ｂ，Ｄ））が与えられているとする。次に、これら素子の配置をシーケンスペアで表現すると（α，β）＝（ＡＢＤＣ，ＡＢＤＣ）となる。
【００１８】
レイアウト対称制約γにおける任意の素子の組み合わせ（Ａ，Ｂ）、（Ａ，Ｃ）、（Ａ，Ｄ）、（Ｂ，Ｃ）、（Ｂ，Ｄ）および（Ｃ，Ｄ）は、全て式（２）を満足している。例えば、（Ａ，Ｂ）では、α（Ａ）＝１、α（Ｂ）＝２であり、ｓｙｍ（Ａ）＝Ｃ、ｓｙｍ（Ｂ）＝Ｄであるから、β（Ｃ）＝４、β（Ｄ）＝３となり、α（Ａ）＜α（Ｂ）のときβ（Ｄ）＜β（Ｃ）であるから式（２）を満たしている。
【００１９】
なお、ここでは省略するが、他の素子の組み合わせについても同様の結果が得られる。しかし、図３０では、ＢとＤは明らかに対称軸３０００に対して対称ではない。したがって、式（２）はレイアウト対称制約を満たす十分条件ではないことが分かる。
【００２０】
また、レイアウト対称制約を検証する従来の方法としては、例えば、特許文献１に記載されている方法が知られている。特許文献１は、レイアウト対称制約の矛盾を検出する方法として、有向グラフの正のサイクルを見つけ出す手法と線形計画問題とを用いた検証方法を開示している。
【特許文献１】特開平６−１１０９７８号公報
【非特許文献１】梶谷「配置の数理：多数の長方形を最小面積に詰め込む」電子情報通信学会研究会，ＶＬＤ９８−９３，１９９８年９月，ｐ．７−１４
【非特許文献２】Ｆ．バラサ（Ｆ．Ｂａｌａｓａ）他、「シーケンスペアによる表現を用いたアナログレイアウト設計のためのモジュールの配置（Ｍｏｄｕｌｅ  Ｐｌａｃｅｍｅｎｔ  ｆｏｒ  Ａｎａｌｏｇ  Ｌａｙｏｕｔ  Ｕｓｉｎｇ  ｔｈｅ  Ｓｅｑｕｅｎｃｅ−Ｐａｉｒ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）」、第３６回デザイン・オートメイション・カンファレンス予稿集（Ｐｒｏｃ．３６ｔｈ  ＤＡＣ．）、１９９９年６月、ｐ．２７４−２７９
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、特許文献１に記載のレイアウト対称制約検証方法は、検証処理に時間がかかるという問題があった。また、レイアウトすべき回路が大規模かつ複雑な場合、従来からの人手による設計では、レイアウトの対称性の検証は困難であった。さらに、設計した回路がレイアウト対称制約を満足しない場合に、その原因が例えば素子の位置関係を変更しなければいけない比較的重度のエラーであるのか、それとも素子の位置の微調整によって解消する比較的軽度のエラーであるのかといった、エラーの種類を設計者に知らせることは、レイアウト設計の効率化を図るうえで重要である。
【００２２】
それ故に、本発明は、従来人手では困難であった半導体集積回路のレイアウト対称性の検証方法および装置について、エラーの種類を設計者に提示し、より効率良くレイアウト設計を行うことを可能にするレイアウト対称制約検証方法およびレイアウト対称制約検証装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明のレイアウト対称制約検証方法は、共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含む、レイアウト対称制約を入力するレイアウト対称制約入力ステップと、素子の形状情報および素子の配置情報を含むレイアウトデータを入力するレイアウトデータ入力ステップと、レイアウトデータに含まれる素子の形状情報に基づき、対称素子ペアを構成する素子同士の形状が一致することを検証する第１の検証ステップと、レイアウトデータに含まれる素子の配置情報に基づき、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証する第２の検証ステップと、レイアウトデータに含まれる素子の配置情報に基づき、素子の配置がレイアウト対称制約を満たすことを図形的に検証する第３の検証ステップとを備える。
【００２４】
本発明のレイアウト対称制約検証方法は、上記のレイアウト対称制約が、素子自身が対称軸に対して対称に配置されるべき自己対称素子の情報を含んでいてもよい。
【００２５】
また、上記の第１の検証ステップは、対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致することを検証するステップを含むことが好ましい。
【００２６】
特に、上記の第３の検証ステップは、対称素子ペアを構成する素子の重心を結ぶ線分の中点が、対称軸上にあることを検証することが好ましい。
【００２７】
さらに、上記の第３の検証ステップは、レイアウト対称制約に自己対称素子が含まれる場合、自己対称素子の重心が対称軸上にあることを検証することが好ましい。
【００２８】
また、上記の第２の検証ステップは、素子の相対位置関係を、シーケンスペアを用いて表現し、求めたシーケンスペアを用いて、素子の相対位置関係がレイアウト対称制約を満たすことを検証してもよい。
【００２９】
あるいは、上記の第２の検証ステップは、素子の相対位置関係を、素子の水平方向の位置関係を表す第１のグラフと、素子の垂直方向の位置関係を表す第２のグラフとを用いて表現し、求めた第１のグラフおよび第２のグラフを用いて、素子の相対位置関係がレイアウト対称制約を満たすことを検証してもよい。
【００３０】
また、上記の第２の検証ステップは、素子の相対位置関係を、上、下、左、右、右上、左下、左上および右下の８方位を用いて表現し、求めた８方位を用いて、素子の相対位置関係がレイアウト対称制約を満たすことを検証してもよい。
【００３１】
また、本発明のレイアウト対称制約検証方法は、レイアウトデータに素子に結線される配線の情報が含まれ、かつ、レイアウト対称制約に対称軸に対して対称となるべき配線からなる対称配線ペアの情報が含まれる場合には、配線の対称性を検証するステップをさらに含むことが好ましい。
【００３２】
また、本発明のレイアウト対称制約検証方法は、共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力するステップと、素子の形状情報および素子の配置情報を含むレイアウトデータを入力するステップと、レイアウトデータに基づき、素子の配置を表示するステップと、対称軸を指定するステップと、指定した対称軸を素子の配置と重ねて表示するステップと、レイアウトデータに含まれる素子の形状情報に基づき、対称素子ペアを構成する素子同士の形状が一致することを検証するステップと、レイアウト対称制約に含まれる全ての素子が、対称軸に対して、対称性を満たすことを図形的に検証するステップとを備えていてもよい。
【００３３】
また、本発明のレイアウト対称制約検証方法は、上記のレイアウト対称制約が、素子自身が対称軸に対して対称に配置されるべき自己対称素子の情報を含んでいてもよい。
【００３４】
さらに、本発明のレイアウト対称制約検証方法は、上記のレイアウトデータに含まれる素子の配置情報に基づき、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証するステップを備えていてもよい。
【００３５】
本発明のレイアウト対称制約検証装置は、共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力するレイアウト対称制約入力手段と、素子の形状情報および素子の配置情報を含むレイアウトデータを入力するレイアウトデータ入力手段と、レイアウトデータに含まれる素子の形状情報に基づき、対称素子ペアを構成する素子同士の形状が一致することを検証する第１の検証手段と、レイアウトデータに含まれる素子の配置情報に基づき、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証する第２の検証手段と、レイアウトデータに含まれる素子の配置情報に基づき、素子の配置がレイアウト対称制約を満たすことを図形的に検証する第３の検証手段とを備える。
【００３６】
本発明のレイアウト対称制約検証装置は、上記のレイアウト対称制約が、素子自身が対称軸に対して対称に配置されるべき自己対称素子の情報を含んでいてもよい。
【００３７】
また、本発明のレイアウト対称制約検証装置は、上記の第１の検証手段が、対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致することを検証する手段を含むことが好ましい。
【００３８】
あるいは、本発明のレイアウト対称制約検証装置は、共通の対称軸に対して対称に配置されるべき２個の素子からなる対称素子ペアの情報を含むレイアウト対称制約を入力する手段と、素子の形状情報および素子の配置情報を含むレイアウトデータを入力する手段と、レイアウトデータに基づき、素子の配置を表示する手段と、対称軸を指定する手段と、指定した対称軸を素子の配置と重ねて表示する手段と、レイアウトデータに含まれる素子の形状情報に基づき、対称素子ペアを構成する素子同士の形状が一致することを検証する手段と、レイアウト対称制約に含まれる全ての素子が、対称軸に対して、対称性を満たすことを図形的に検証する手段とを備えていてもよい。
【００３９】
本発明のレイアウト対称制約検証装置は、上記のレイアウト対称制約が、素子自身が対称軸に対して対称に配置されるべき自己対称素子の情報を含んでいてもよい。
【００４０】
さらに、本発明のレイアウト対称制約検証装置は、上記のレイアウトデータに含まれる素子の配置情報に基づき、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証する手段を備えていてもよい。
【発明の効果】
【００４１】
本発明のレイアウト対称制約検証方法は、対称素子ペアを構成する素子同士の形状が一致することと、対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致することを検証する第１の検証ステップと、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証する第２の検証ステップと、素子の配置がレイアウト対称制約を満たすことを図形的に検証する第３の検証ステップとを備えることにより、従来人手では困難であった素子の数の多い回路や複雑な回路のレイアウト対称制約の検証を確実に行うことができる。
【００４２】
また、本発明のレイアウト対称制約検証方法は、素子の相対位置関係を求め、求めた相対位置関係がレイアウト対称制約を満たすことを検証する第２の検証ステップを備えることにより、素子の配置がレイアウト対称制約を満たさない場合において、その原因が素子の位置関係を変更しなければならない比較的重度なエラーであるのか、素子の位置を微調整するだけで解消できる比較的軽度なエラーであるのか、エラーの種類の判別を可能にする。エラーの種類が設計者に提示されることにより、レイアウト設計の効率化を図ることができる。
【００４３】
さらに、本発明のレイアウト対称制約検証方法は、第２の検証ステップにおいて、シーケンスペアを用いることにより、相対位置関係の判定を高速に行うことができる。したがって、素子の相対位置関係がレイアウト対称制約を満たさない場合のエラーの検出が高速に行える。
【００４４】
また、本発明のレイアウト対称制約検証方法は、共通の対称軸に対して対称に配置されるべき配線についても、対称性を検証することができる。
【００４５】
さらに、本発明のレイアウト対称制約検証方法では、対称軸が設計者によって指定され、画面に表示されることにより、レイアウト対称制約を満たしていない素子が特定される。レイアウト対称制約を満たしていない素子が設計者に提示されることにより、レイアウト設計の効率化を図ることができる。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照して、本発明の第１〜第６の実施形態に係るレイアウト対称制約検証方法を説明する。
【００４７】
各実施形態に係る方法は、図１に示すレイアウト対称制約検証装置を用いて実行される。図１に示すレイアウト対称制約検証装置１００は、処理部（ＣＰＵ）１０１、データ蓄積部１０２、ＲＯＭ１０３、ＲＡＭ１０４、入力部１０５、および、表示部１０６を備える。データ蓄積部１０２には、対称軸に対して対称に配置されるべき対称素子ペアの情報、素子自身が対称軸に対して対称に配置されるべき自己対称素子の情報、共通の対称軸に対して対称に配置されるべき素子の情報を含むレイアウト対称制約、素子の形状情報や素子の配置情報などを含むレイアウトデータ、などの設計データが蓄積される。ＲＯＭ１０３には、レイアウト対称制約検証用のプログラムおよびデータが記憶されている。処理部１０１は、データ蓄積部１０２に蓄積されるデータに対して、ＲＯＭ１０３に記憶されているプログラムに基づいて、各種処理を行う。また、ＲＡＭ１０４は、ワークメモリとして機能する。入力部１０５は、プログラムの実行、エラーの解消、対称軸の指定などのコマンドを入力する。表示部１０６は、処理部１０１で処理されたレイアウト設計の結果を表示する。
【００４８】
（第１の実施形態）
図２は、本発明の第１の実施形態に係るレイアウト対称制約検証方法の処理手順を示すフローチャートである。以下、図２のフローチャートを用いて、本実施形態を説明する。
【００４９】
まず、入力部１０５を通して、設計者からプログラムの実行命令が入力されると、処理部１０１は、共通の対称軸に対して対称に配置されるべき対称素子ペアおよび自己対称素子の情報、すなわちレイアウト対称制約を、データ蓄積部１０２から入力する（ステップＳ２００）。次に、処理部１０１は、素子の形状情報および素子の配置情報を含むレイアウトデータを、データ蓄積部１０２から入力する（ステップＳ２０１）。表示部１０６は、レイアウトデータに基づいて、素子の配置を画面に表示する（ステップＳ２０２）。
【００５０】
例えば、ステップＳ２００およびステップＳ２０１において、処理部１０１に入力されるレイアウトデータが、図３のようなものであったとすると、処理部１０１には、対称素子ペア（Ａ，Ｃ）、（Ｂ，Ｄ）および（Ｅ，Ｆ）と、自己対称素子ペアＨおよびＩと、レイアウト対称制約γ＝（（Ａ，Ｃ），（Ｂ，Ｄ），（Ｅ，Ｆ），Ｈ，Ｉ）と、素子Ａ〜Ｉの形状情報および配置情報とが入力される。なお、図３では、簡単のために素子の数が少ない例を示すが、素子の数が多い場合においても、本実施形態のレイアウト対称制約検証方法は有効である。
【００５１】
その後、処理部１０１は、第１〜第３の検証処理を実行する（ステップＳ２０３〜ステップＳ２０５）。処理部１０１は、第１の検証処理では、対称素子ペアを構成する素子同士の形状の一致と、対称素子ペアを構成する素子の重心のＸ座標またはＹ座標の一致とを検証し、第２の検証処理では、素子の相対位置関係がレイアウト対称制約を満たしているかを検証し、第３の検証処理では、素子の配置がレイアウト対称制約を満たすかを図形的に検証する。以下、図４〜図９を参照して、第１〜第３の検証処理の詳細を説明する。
【００５２】
図４は、第１の検証処理の詳細を示すフローチャートである。第１の検証処理では、図４に示すように、処理部１０１は、まず、対称素子ペアを構成する素子同士の形状が一致するか否かを調べる（ステップＳ４００）。ステップＳ４００では、処理部１０１は、設計者からの指示に従って、素子を回転させたり、上下左右に移動させたりした上で、対称素子ペアの形状が一致するか否かを調べてもよい。
【００５３】
素子同士の形状が一致しない場合、処理部１０１は、エラーを検出し、表示部１０６にエラーメッセージを表示する命令を出力する。表示部１０６は、処理部１０１の命令に基づいて、対称素子ペアを構成する素子同士の形状が一致しない旨のエラーメッセージを表示する（ステップＳ４０１）。ここで、処理部１０１は、第１の検証処理を終了する。
【００５４】
ステップＳ４００で全ての素子の形状が一致すると判断された場合、処理部１０１は、対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致するかを検証する（ステップＳ４０２）。ここでは、対称軸がＹ軸に平行な場合には、対称素子ペアを構成する素子の重心のＹ座標が一致するか否かが調べられ、また、対称軸がＸ軸に平行な場合には、対称素子ペアを構成する素子の重心のＸ座標が一致するか否かが調べられる。対称素子ペアを構成する素子の重心のＸ座標またはＹ座標が一致しない場合は、処理部１０１は、エラーを検出し、表示部１０６にエラーメッセージを表示する命令を出力する。
【００５５】
表示部１０６は、処理部１０１の命令に基づいて、対称素子ペアの重心のＸ座標またはＹ座標が一致しない旨のエラーメッセージを表示する（ステップＳ４０３）。設計者は、このエラーメッセージをもとに、入力部１０５を介して素子の配置を変更する。処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ４０４）、再度検証を行う（ステップＳ４０２）。全てのエラーが解消されると、処理部１０１は、第１の検証処理を終了する。
【００５６】
例えば、ステップＳ２０１において入力されたレイアウトデータが、図５に示されるようなものであった場合、対称素子ペアである素子ＡとＣの形状が一致していない。したがって、この場合、表示部１０６は、素子ＡとＣの形状が一致しないという旨のエラー表示する。
【００５７】
また、図５に示される素子の配置では、対称素子ペアである素子ＢとＤの重心のＹ座標が一致していない。したがって、この場合、表示部１０６は、素子ＢとＤの重心のＹ座標が一致しないという旨のエラーを表示する。
【００５８】
図６は、第２の検証処理の詳細を示すフローチャートである。第２の検証処理では、図６に示すように、処理部１０１は、素子の相対位置関係をシーケンスペアを用いて表現する（ステップＳ６００）。続いて、処理部１０１は、シーケンスペアを用いて表現した素子の相対位置関係が、ステップＳ２００において入力されたレイアウト対称制約を満たしているかを検証する（ステップＳ６０１）。ここでは、上述した式（２）を用いて検証が行われ、レイアウト対称制約に含まれる全ての素子の組み合わせについて、式（２）が満たされれば、素子の相対位置関係は、レイアウト対称制約を満たしていると判断される。
【００５９】
ステップＳ６０１の検証において、式（２）を満たさない素子の組み合わせが存在する場合、処理部１０１は、エラーと判断し、表示部１０６にエラーメッセージを表示する命令を出力する。表示部１０６は、処理部１０１からの命令に基づいて、相対位置関係がレイアウト対称制約を満たしていない旨のエラーメッセージを表示する。設計者が入力部１０５を介して素子の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ６０３）、再度検証を行う（ステップＳ６００およびステップＳ６０１）。全てのエラーが解消されると、処理部１０１は、第２の検証処理を終了する。
【００６０】
例えば、ステップＳ２０１において入力されたレイアウトデータが、図７に示されるようなものであった場合、（Ａ，Ｃ）および（Ｅ，Ｆ）が、式（２）の条件を満たしていない。したがって、表示部１０６は、素子Ａ、Ｃ、ＥおよびＦの相対位置関係が、レイアウト対称制約を満たしていない旨のエラーを表示する。
【００６１】
図８は、第３の検証処理の詳細を示すフローチャートである。第３の検証処理では、図８に示すように、処理部１０１は、まず、全ての対称素子ペアについて、対称素子ペアを構成する素子の重心を結ぶ線分の中点の座標を求め、求めた結果をＲＡＭ１０４に書き込む（ステップＳ８００）。次に、処理部１０１は、全ての自己対称素子の重心の座標を求め、求めた結果をＲＡＭ１０４に書き込む（ステップＳ８０１）。最後に、処理部１０１は、対称素子ペアを構成する素子の重心を結ぶ線分の中点のＸ座標の値（またはＹ座標の値）と、自己対称素子の重心のＸ座標の値（またはＹ座標の値）が全て一致するかを検証する（ステップＳ８０２）。
【００６２】
ここで、処理部１０１は、対称軸がＹ座標に平行な場合においては、Ｘ座標の値の一致を検証し、対称軸がＸ座標に平行な場合においては、Ｙ座標の値の一致を検証する。このステップＳ８０２の検証において、Ｘ座標またはＹ座標の値が一致しない対称素子ペアあるいは自己対称素子が検出された場合、処理部１０１は、表示部１０６にエラーメッセージを表示する命令を出力する。
【００６３】
表示部１０６は、処理部１０１からの命令に基づいて、全ての中点および重心のＸ座標またはＹ座標が一致していない旨のエラーメッセージを表示する（ステップＳ８０３）。設計者が入力部１０５を介して素子の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ８０４）、再度検証を行う（ステップＳ８００〜ステップＳ８０２）。全てのエラーが解消されると、処理部１０１は、第３の検証処理を終了する。
【００６４】
例えば、ステップＳ２０１において入力されたレイアウトデータが、図９に示されるようなものであった場合、素子ＡとＣを結ぶ線分の中点、および、自己対称素子Ｈの重心のＸ座標が、他の対称素子ペアの中点のＸ座標、および、自己対称素子の重心のＸ座標と一致していない。したがって、表示部１０６は、対称素子ペアの中点のＸ座標、および、自己対称素子の重心のＸ座標が一致していない旨のエラーメッセージを表示する。
【００６５】
以上に示すように、本実施形態に係るレイアウト対称制約検証方法によれば、各検証処理のステップにおいてエラーが表示されることにより、どのようなエラーが発生しているか容易に確認することができる。また、素子の相対位置関係がレイアウト対称制約を満たさないというエラーが検出されることにより、設計者は、検出されたエラーが比較的軽度なものであるのか、それとも重度のものであるのかを確認することができる。特に、シーケンスペア用いることによって、相対位置関係が高速に判定されるので、レイアウト設計の効率化を図ることができる。
【００６６】
なお、本実施形態では、対称軸が１つの場合を例に挙げて説明したが、回路内に対称軸が複数存在する場合には、処理部１０１がそれら複数の対称軸に対応したレイアウト対称制約を入力し、入力したレイアウト対称制約を検証することにより、この回路内のそれぞれの対称軸について、レイアウトの対称性を検証することができる。
【００６７】
（第２の実施形態）
次に、本発明の第２の実施形態に係るレイアウト対称制約検証方法を説明する。本実施形態に係るレイアウト対称制約検証方法と、第１の実施形態に係るレイアウト対称制約検証方法との相違点は、第２の検証処理にあるので、ここでは、第２の検証処理のみを説明する。
【００６８】
本実施形態では、第１の実施形態とは異なり、素子の相対位置関係は、節の集合と枝の集合とで構成されるグラフである水平グラフＧＨ（Ｎ，Ｅ）、および、垂直グラフＧＶ（Ｎ，Ｅ）によって（Ｎは節（ｎｏｄｅ）を、Ｅは枝（ｅｄｇｅ）を表す）表現される。
【００６９】
図１０は、本実施形態に係る第２の検証処理の詳細を示すフローチャートである。第２の検証処理では、図１０に示すように、処理部１０１は、まず、レイアウト対称制約に含まれる素子の配置情報を抽出する（ステップＳ１０００）。次に、処理部１０１は、抽出された素子が１つだけ含まれるように、素子が配置された２次元領域を分割する（ステップＳ１００１）。次に、処理部１０１は、分割された領域に対して、素子の相対位置関係を表現する水平グラフおよび垂直グラフを作成する（ステップＳ１００２）。
【００７０】
水平グラフとは、２次元平面上に配置された矩形の水平方向の相対位置をグラフで表現したものである。また、垂直グラフとは、２次元平面上に配置された矩形の垂直方向の相対位置をグラフで表現したものである。これらのグラフを作成するときには、矩形が配置されている２次元領域が、矩形を１個ずつ含む複数の領域に分割される（図１１（ａ）参照）。これらの領域の辺には、Ｘ軸に平行なもの（以下、水平辺と称す）とＹ軸に平行なもの（以下、垂直辺と称す）とが含まれる。
【００７１】
水平グラフは、各垂直辺に対応した節を有する。また、ある領域が２本の垂直辺を有する場合、水平グラフは、この領域内に位置する矩形の名称をラベルとして、これらの２本の垂直辺に対応した２個の節を接続する枝を有する（図１１（ｂ）参照）。なお、図１１（ｂ）の水平グラフにおいては、最も左に位置する垂直辺に対応した節をｌとし、最も右に位置する垂直辺に対応した節をｒとした。
【００７２】
これと同様に、垂直グラフは、各水平辺に対応した節を有する。また、ある領域が２本の水平辺を有する場合、垂直グラフは、この領域内に位置する矩形の名称をラベルとして、これら２本の水平辺に対応した２個の節を接続する枝を有する（図１１（ｃ）参照）。なお、図１１（ｃ）の垂直グラフにおいては、最も上に位置する水平辺に対応した節をｓとし、最も下に位置する水平辺に対応した節をｄとした。
【００７３】
以上のように作成された水平グラフに対して、処理部１０１は、左からの深さ優先探索、および、右からの深さ優先探索を行う（ステップＳ１００３およびステップＳ１００４）。以下、左からの深さ優先探索を例に、相対位置関係の検証方法を、図１２のフローチャートを用いて説明する。
【００７４】
図１２は、水平グラフに対して、左からの深さ優先探索を行う方法を示すフローチャートである。以下、図１２のフローチャートを用いて、左からの深さ優先探索の方法を説明する。まず、処理部１０１は、節ｌを起点とする深さ優先探索を開始する（ステップＳ１２００）。次に、処理部１０１は、深さ優先探索を一つ進め、進めた結果をＸとする（ステップＳ１２０１）。ここで、処理部１０１は、Ｘが節であるかどうかを確認する（ステップＳ１２０３）。探索対象が節である場合、処理部１０１は、探索対象Ｘの情報をＲＡＭ１０４に書き込む（ステップＳ１２０４）。探索対象ＸをＲＡＭ１０４に書き込む処理は、ＲＡＭ１０４をＦＩＦＯメモリのように使用し、探索対象の情報を探索した順番に書き込むことによって行われる。
【００７５】
探索対象Ｘが枝である場合には（ステップＳ１２０３のＮｏ）、処理部１０１は、探索対象Ｘが対称素子ペアを構成する素子に対応した枝であるかどうかを調べる（ステップＳ１２０５）。探索対象Ｘが、対称素子ペアを構成する素子（以下、素子Ａと称す）に対応した枝（以下、枝Ａと称す）である場合には、処理部１０１は、素子Ａと対称素子ペアを構成する素子Ａ’に対応した枝Ａ’が探索済みであるかを調べる（ステップＳ１２０６）。枝Ａ’が未探索である場合には、処理部１０１は、探索対象Ｘの情報をＲＡＭ１０４に書き込み（ステップＳ１２０７）、さらに探索を進める。枝Ａ’が探索済みである場合には、処理部１０１は、未探索の節に接続された節に戻り（ステップＳ１２０８）、さらに探索を進める。
【００７６】
探索対象Ｘが枝であって、かつ、対称素子ペアを構成する素子に対応した枝でない場合には（ステップＳ１２０５のＮｏ）、探索対象Ｘは自己対称素子に対応した枝であるので（ステップＳ１２０５のＮｏ）、処理部１０１は、探索対象Ｘの情報をＲＡＭ１０４に書き込み（ステップＳ１２０９）、未探索の節に接続された節に戻る（ステップＳ１２１０）。以上に説明した深さ優先探索は、探索対象が無くなるまで行われる。探索対象が無くなると、処理部１０１は、探索処理を終了する（ステップＳ１２０２のＹｅｓ）。右からの深さ優先探索（ステップＳ１００４）は、節ｒを起点として、上記と同様の手順で行われる。
【００７７】
図１２（ｂ）に示される水平グラフについて、左からの深さ優先探索を行うと、処理部１０１は、まず、起点である節ｌの情報をＲＡＭ１０４に書き込む。次に、探索を一つ進めると、探索対象Ｘは枝Ｅとなる。素子Ｅは素子Ｆと対称素子ペアであるので、ステップＳ１２０６において、処理部１０１は、枝Ｆが探索済みであるかを調べる。この時点では、枝Ｆは未探索であるので、処理部１０１は、枝Ｅの情報をＲＡＭ１０４に書き込み、探索を続ける。
【００７８】
上記の方法で探索が続行され、探索対象が素子Ｈに対応した枝Ｈなった場合、素子Ｈは自己対称素子であるので、処理部１０１は、枝Ｈの情報をＲＡＭ１０４に書き込み、未探索の節に接続された節に戻る。また、枝Ｂの探索が終わり、探索対象が枝Ｄになった場合、素子Ｄと対称素子ペアを構成する素子Ｂに対応した枝Ｂの探索は済んでいるので、処理部１０１は、未探索の節に接続された節に戻る。
【００７９】
処理部１０１は、水平グラフを用いたレイアウト対称制約の検証を終えると、次に、垂直グラフを用いたレイアウト対称制約の検証を行う（ステップＳ１００５）。処理部１０１は、垂直グラフについて、節ｓ（ソース）から節ｄ（ドレイン）に向かう正方向に探索を行う。
【００８０】
処理部１０１は、任意の素子ＡおよびＢと、これらの素子と対称素子ペアを構成する素子Ａ’および素子Ｂ’とについて、素子Ａを素子Ｂより先に探索する経路が存在するとき、素子Ａ’を素子Ｂ’より先に探索する経路が存在することを確認する。素子Ｂ’を素子Ａ’より先に探索する経路が存在する場合には、処理部１０１は、素子の相対位置関係がレイアウト対称制約を満たしていないと判断し、エラー情報をＲＡＭ１０４に書き込む。
【００８１】
ステップＳ１００４の処理が終了した時点で、ＲＡＭ１０４には、水平グラフの左からの探索結果と、水平グラフの右からの探索結果とが蓄積されている。処理部１０１は、これら２つの探索結果に基づき、素子の相対位置関係がレイアウト対称制約を満たしているかを判定する（ステップＳ１００６）。ステップＳ１００６では、処理部１０１は、全ての対称素子ペアについて、対称素子ペアを構成する素子同士が、左からの探索結果と右からの探索結果とにおいて、同じ順番で現れる場合に、素子の相対位置関係がレイアウト対称制約を満たしていると判断し、それ以外の場合には、素子の相対位置関係がレイアウト対称制約を満たしていないと判断する。
【００８２】
また、ステップＳ１００５の処理が終了した時点で、ＲＡＭ１０４には、ステップＳ１００５におけるエラー情報が蓄積されている場合がある。そこで、処理部１０１は、ＲＡＭ１０４を参照し、垂直グラフによるレイアウト対称制約の検証結果を判定する。ここで、このエラー情報がＲＡＭ１０４に蓄積されている場合には、処理部１０１は、素子の相対位置関係がレイアウト対称制約を満たしていないと判断する（ステップＳ１００６のＮｏ）。
【００８３】
素子の相対位置関係がレイアウト対称制約を満たしていない場合には、処理部１０１は、エラーメッセージを表示する命令を表示部１０６に出力する。表示部１０６は、処理部１０１からの命令に基づいて、相対位置関係がレイアウト対称制約を満たさない旨のエラーメッセージを表示する（ステップＳ１００７）。設計者が入力部１０５を介して素子の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ１００８）、再度検証を行う（ステップＳ１０００〜ステップＳ１００６）。全てのエラーが解消されると、処理部１０１は、第２の検証処理を終了する。
【００８４】
例えば、図１１（ｂ）に示す水平グラフについて深さ優先探索を行った場合、図１３に示すような、左からの探索結果１３００と、右からの探索結果１３０１とが得られる。この場合、対称素子ペア（Ａ，Ｃ）について検討すると、素子Ａのデータは、左からの探索結果１３００の４番目に現れ、素子Ｃのデータは、右からの探索結果１３０１の４番目に現れる。このように、素子ＡとＣは、左からの探索結果１３００と右からの探索結果において同じ順序で現れる。対称素子ペア（Ｂ，Ｄ）および（Ｅ，Ｆ）についても、これと同様である。
【００８５】
また、自己対称素子Ｈについて検討すると、素子Ｈのデータは、左からの探索結果１３００の６番目に現れるとともに、右からの探索結果１３０１の６番目に現れる。このように、素子Ｈのデータは、左からの探索結果１３００と右からの探索結果１３０１において同じ順序で現れる。自己対称素子Ｉについても、これと同様である。したがって、処理部１０１は、ステップＳ１００６において、図１１（ｂ）に示す水平グラフに基づき、素子の相対位置関係がレイアウト対称制約を満たしていると判断する。
【００８６】
これに対して、例えば、図１４（ａ）に示す素子の配置のレイアウトデータについて、水平グラフを作成すると、図１４（ｂ）のようになる。このグラフに対して、左からの深さ優先探索および右からの深さ優先探索を行うと、図１４（ｃ）に示すような、左からの探索結果１４００と、右からの探索結果１４０１とが得られる。この場合、対称素子ペア（Ａ，Ｃ）および（Ｅ，Ｆ）の探索された順番が異なることから、処理部１０１は、相対位置関係がレイアウト対称制約を満たしていないと判断する。
【００８７】
なお、ここでは、対称軸がＹ座標と平行な場合を例に挙げて説明をしたが、対称軸がＸ軸に平行な場合おいても、同じ手順で相対位置関係の検証を行うことができる。対称軸がＸ軸に平行な場合は、垂直グラフを用いて深さ優先探索を行うことにより、相対位置関係にレイアウト対称制約との矛盾がないかを検証することができる。この場合の深さ優先探索の手順は、図１２のフローチャートに示したものと同じである。
【００８８】
以上に示したように、本実施形態に係るレイアウト対称制約検証方法においても、第１の実施形態に係るレイアウト対称制約検証方法と同様に、各検証処理のステップにおいてエラーが表示されることにより、設計者はどのようなエラーが発生しているのかを容易に確認することができる。特に、水平グラフおよび垂直グラフ用いることによって、素子の相対位置関係がレイアウト対称制約を満たさないエラーが検出されることにより、設計者は、検出されたエラーが比較的軽度なものであるのか、それとも重度のものであるのかを知ることができ、レイアウト設計の効率化を図ることができる。
【００８９】
（第３の実施形態）
次に、本発明の第３の実施形態に係るレイアウト対称制約検証方法を説明する。本実施形態に係るレイアウト対称制約検証方法と、第１の実施形態に係るレイアウト対称制約検証方法との相違点は、第２の検証処理にあるので、ここでは、第２の検証処理のみを説明する。本実施形態では、第１の実施形態とは異なり、上、下、左、右、右上、左下、左上および右下の８方位を用いて、素子の相対位置関係が表現される。
【００９０】
図１５は、８方位の条件を示す。図１５（ａ）は、素子Ａ、Ｂが占める範囲を示した図である。ここでは、素子Ａの左辺のｘ座標をｘ１１と表記し、右辺のｘ座標をｘ１２と表記する。また、素子Ａの下辺のｙ座標をｙ１１、上辺のｙ座標をｙ１２と表記する。素子Ｂについても、図に示されるように、範囲を表記する。
【００９１】
図１５（ｂ）は、素子Ｂの素子Ａに対する相対位置を８方位で表した場合において、８方位とその条件を示したテーブルである。例えば、ｘ１１≧ｘ２２かつｙ１１≧ｙ２２である場合に、素子Ｂは素子Ａの左下であるとする。他の相対位置関係についても、これと同様である。
【００９２】
図１６は、本実施形態に係る第２の検証処理の詳細を示すフローチャートである。第２の検証処理では、図１６に示すように、処理部１０１は、まず、レイアウトデータから任意の対称素子ペア２組を選択する（ステップＳ１６００）。ここでは、選択された２組の対称素子ペアを（Ａ，Ａ’）および（Ｂ，Ｂ’）とする。次に、処理部１０１は、素子Ａ対する素子Ｂの相対位置を８方位を用いて表現する（ステップＳ１６０１）。次に、処理部１０１は、素子Ａ’に対する素子Ｂ’の相対位置を８方位を用いて表現する（ステップＳ１６０２）。
【００９３】
次に、処理部１０１は、素子Ａに対する素子Ｂの８方位による相対位置と、素子Ａ’に対する素子Ｂ’の８方位による相対位置とがレイアウト対称制約を満たしているかを、以下の条件に基づいて検証する（ステップＳ１６０３）。８方位による素子の相対位置関係がレイアウト対称制約を満たす条件は、対称軸がＹ軸の場合には、対称軸を境に素子Ａに対する素子Ｂの相対位置と、素子Ａ’に対する素子Ｂ’の相対位置とが左右反転していることである。また、対称軸がＸ軸の場合には、対称軸を境に素子Ａに対する素子Ｂの相対位置と、素子Ａ’に対する素子Ｂ’の相対位置とが上下反転していることである。
【００９４】
８方位による素子の相対位置関係が、レイアウト対称制約を満たしていない場合、処理部１０１は、エラーを検出し、表示部１０６にエラーメッセージを表示する命令を出力する。表示部１０６は、処理部１０１からの命令に基づいて、相対位置関係がレイアウト対称制約を満たさない旨のエラーメッセージを表示する（ステップＳ１６０４）。設計者が入力部１０５を介して素子の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ１６０５）、再度検証を行う（ステップＳ１６００〜ステップＳ１６０３）。上記の検証処理が全ての対称素子ペアについて行われると、処理部１０１は、第２の検証処理を終了する（ステップＳ１６０６のＹｅｓ）。
【００９５】
以下、図１７に具体的な例を示しながら、８方位による素子の相対位置関係がレイアウト対称制約を満たしているか検証する方法を説明する。図１７は、図３と同様のレイアウト対称制約γ＝（（Ａ，Ｃ），（Ｂ，Ｄ），（Ｅ，Ｆ），Ｈ，Ｉ）をもつレイアウトデータを示す図である。なお、対称軸１７００および８方位の領域を区切る補助線１７０１〜１７０８は、説明用に表記したものである。
【００９６】
図１７（ａ）の素子Ａと、素子Ａと対称素子ペアである素子Ｃを用いて、第２の検証処理を行う場合について説明する。まず、素子Ａおよび素子Ｂと、これらの素子とそれぞれ対称素子ペアを構成する素子Ｃおよび素子Ｄとについて検証する。図１７（ａ）において、素子Ｂの素子Ａに対する相対位置は、右下である。続いて、上記の２素子と対称素子ペアを構成する素子について相対位置関係を調べると、素子Ｄの素子Ｃに対する相対位置は、左下である。
【００９７】
また、素子Ａおよび素子Ｅと、これらの素子とそれぞれ対称素子ペアを構成する素子Ｃおよび素子Ｆとについても同様に検証すると、素子Ｅの素子Ａに対する相対位置は、左であり、素子Ｆの素子Ｃに対する相対位置は、右である。これらの結果から、素子Ａ、ＢおよびＥ、並びに、これらの素子とそれぞれ対称素子ペアを構成する素子Ｃ、ＤおよびＦの相対位置関係は、レイアウト対称制約を満たしていることが分かる。
【００９８】
一方、図１７（ｂ）に示されるような素子の配置について、８方位を用いて第２の検証処理を行うと、素子Ｂの素子Ａに対する相対位置は、右下であり、素子Ｄの素子Ｃに対する相対位置も、右下である。また、素子Ｅの素子Ａに対する相対位置は、左であり、素子Ｆの素子Ｃに対する相対位置も右である。これらの結果から、素子Ａ、ＢおよびＥ、並びに、これらの素子とそれぞれ対称素子ペアを構成する素子Ｃ、ＤおよびＦの相対位置関係は、レイアウト対称制約を満たしていないことが分かる。
【００９９】
以上のように、本実施形態に係るレイアウト対称制約検証方法においても、第１および第２の実施形態に係るレイアウト対称制約検証方法と同様に、各検証処理のステップにおいてエラーが表示されることにより、設計者はどのようなエラーが発生しているのかを容易に確認することができる。特に、８方位を用いることによって、素子の相対位置関係がレイアウト対称制約を満たさないエラーが検出されることにより、設計者は検出されたエラーが比較的軽度なものであるのか、それとも重度のものであるのかを確認することができ、効率よくレイアウト設計を行うことができる。
【０１００】
（第４の実施形態）
次に、本発明の第４の実施形態に係るレイアウト対称制約検証方法を説明する。本実施形態に係るレイアウト対称制約検証方法も、概ね第１の実施形態に係るレイアウト対称制約検証方法と同様の手順により実行される。したがって、ここでは、第１の実施形態との相違点を中心に説明する。
【０１０１】
本実施形態に係るレイアウト対称制約検証方法を図１８を用いて説明する。レイアウト対称制約（ステップＳ２００）の入力およびレイアウトデータの入力（ステップＳ２０１）については、第１の実施形態と同じ処理であるので、ここでは説明を省略する。
【０１０２】
次に、処理部１０１は、第１〜第３の検証処理を実行する（ステップＳ１８００〜ステップＳ１８０２）。図１９〜図２１は、第１〜第３の検証処理の詳細を示すフローチャートである。図１９〜図２１に示すように、本実施形態の第１〜第３の検証処理では、第１の実施形態と同様の処理が実行される。ただし、本実施形態の第２の検証処理では、シーケンスペア、水平グラフおよび垂直グラフ、並びに、８方位のいずれを用いて素子の相対位置関係を表現してもよい（ステップＳ２０００）。
【０１０３】
また、本実施形態では、エラーを検出したときには、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む（図１９のステップＳ１９０１、Ｓ１９０３、図２０のステップＳ２００２、図２１のステップＳ２１０３）。図１９〜図２１に示すその他の処理は、第１〜第３の実施形態と同じであるので、ここでは説明を省略する。
【０１０４】
第１、第２および第３の検証が完了した後、処理部１０１は、入力されたレイアウトデータに基づき、表示部１０６に素子の配置を表示する命令を出力する。表示部１０６は、処理部１０１からの命令に基づき、素子の配置を表示する（ステップＳ１８０３）。次に、処理部１０１は、ＲＡＭ１０４に記憶されたエラー情報を参照し、エラーが存在するかを調べる（ステップＳ１８０４）。エラー情報が存在する場合には（ステップＳ１８０４のＹｅｓ）、処理部１０１は、存在する全てのエラー情報を表示する命令を、表示部１０６に出力する。表示部１０６は、命令に基づき、エラーのリストを表示する（ステップＳ１８０５）。次に、設計者によって解消するエラーが選択され、素子の配置が入力部１０５を介して変更されると、処理部１０１は、入力された処理に基づいて、レイアウトデータを変更する（ステップＳ１８０６）。
【０１０５】
次に、処理部１０１は、変更されたレイアウトデータに対して、第１〜第３の検証処理を再度行う（ステップＳ１８００〜ステップＳ１８０２）。それぞれの検証処理でエラーが検出されると、処理部１０１は、検出されたエラー情報をＲＡＭ１０４に書き込む。再度、全ての検証を行う理由は、エラー解消のためにレイアウトデータが変更されると、新たなエラーが発生する可能性があるからである。
【０１０６】
第１〜第３の検証処理が完了すると、処理部１０１は、再度エラーが存在するかを確認し（ステップＳ１８０４）、存在する場合には、表示部１０６に命令を出力する。表示部１０６は、命令に基づき、エラーのリストを表示する（ステップＳ１８０５）。処理部１０１は、以上のステップＳ１８００〜ステップＳ１８０６までの手順を、全てのエラーが解消されるまで行う。全てのエラーが解消されると（ステップＳ１８０４のＮｏ）、処理部１０１は、レイアウト対称制約の検証を終了する。
【０１０７】
以上に示すように、本実施形態に係るレイアウト対称制約検証方法によれば、各検証処理で発生したエラーのリストを表示することにより、設計者はどのようなエラーが発生しているか容易に確認することができる。また、設計者によって素子の配置が変更された後、処理部１０１が第１〜第３の検証処理を再検証することにより、素子の配置の変更によって新たに発生したエラーを検出することができる。
【０１０８】
（第５の実施形態）
次に、本発明の第５の実施形態に係るレイアウト対称制約検証方法を説明する。図２２は、本実施形態に係るレイアウト対称制約検証方法を示すフローチャートである。図２２に示すフローチャートは、図２に示すフローチャートに、ステップＳ２２００およびステップＳ２２０１を追加したものである。
【０１０９】
本実施形態に係るレイアウト対称制約検証方法は、図２２のフローチャートの手順に従って実行される。本実施形態においても、まず、処理部１０１は、レイアウト対称制約およびレイアウトデータを入力する。ただし、本実施形態では、レイアウト対称制約およびレイアウトデータは、素子の情報に加えて、対称軸に対して対称となるべき配線（以下、対称配線ペアと称す）の情報を含む。
【０１１０】
次に、表示部１０６は、素子の配置を表示し（ステップＳ２０２）、処理部１０１は、第１、第２または第３の実施形態と同様の方法で、第１〜第３の検証処理（ステップＳ２０３〜ステップＳ２０４）を実行する。これらの検証によって、素子はレイアウト対称制約を満たすように配置される。
【０１１１】
素子についてのレイアウト対称制約の検証が完了すると、処理部１０１は、入力されたレイアウトデータに基づいて、配線の配置を表示する命令を表示部１０６に出力する。表示部１０６は、命令に基づき、配線の配置を表示する（ステップＳ２２００）。続いて、配線についての対称性が検証される。
【０１１２】
図２３は、配線の対称性の検証処理の詳細を示すフローチャートである。図２３に示すように、まず、処理部１０１は、レイアウト対称制約に含まれる対称配線ペアから、配線を１つ選択する（ステップＳ２３００）。この配線（以下、配線ａと称す）は、素子または他の配線と複数の箇所で接合する（以下、この接合箇所を接合点と称す）。処理部１０１は、配線ａの複数の接合点から１個の接合点（以下、Ｐｎ（ａ）と称す）を選択し、また、配線ａと対称配線ペアを構成する配線ａ’の複数の接合点から、接合点Ｐｎ（ａ）と対称となるべき接合点（以下、Ｑｎ（ａ’）と称す）を選択する（ステップＳ２３０１）。
【０１１３】
配線の対称性は、素子のレイアウト対称制約から対称軸が確定しているため、この対称軸に対して検証される。対称軸がＹ軸に平行な場合には、処理部１０１は、点Ｐｎ（ａ）およびＱｎ（ａ’）のＹ座標が一致するかを検証する（ステップＳ２３０２）。また、対称軸がＸ軸に平行な場合には、処理部１０１は、点Ｐｎ（ａ）およびＱｎ（ａ’）のＸ座標が一致するかを検証する。ステップＳ２３０２において、これらの点のＹ座標またはＸ座標が一致しないと判断された場合には、処理部１０１は、ＲＡＭ１０４にエラー情報を書き込む（ステップＳ２３０３）。
【０１１４】
次に、処理部１０１は、点Ｐｎ（ａ）およびＱｎ（ａ’）を結ぶ線分の中点が、対称軸上にあるかを検証する（ステップＳ２３０４）。点Ｐｎ（ａ）およびＱｎ（ａ’）を結ぶ線分の中点が、対称軸上にない場合には、処理部１０１は、ＲＡＭ１０４にエラー情報を書き込む（ステップＳ２３０５）。上記のステップＳ２３０１〜ステップＳ２３０５は、配線ａおよび配線ａ’の全ての接合点について繰り返される（ステップＳ２３０６）。
【０１１５】
以上の手順が全ての対称配線ペアについて行われる（ステップＳ２３０７のＹｅｓ）と、処理部１０１は、エラー情報がＲＡＭ１０４に存在するかどうかを調べ、エラーが存在する場合には（ステップＳ２３０８のＹｅｓ）、エラーのリストを表示する命令を表示部１０６に出力する。表示部１０６は、この命令に基づきエラーのリストを表示する（ステップＳ２３０９）。設計者が、入力部１０５を介して配線の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ２３１０）、再度検証を行う（ステップＳ２３００〜ステップＳ２３０７）。全てのエラーが解消されると（ステップＳ２３０８のＮｏ）、処理部１０１は、配線の対称性の検証を終了する。
【０１１６】
以下、図２４に具体的な例を示しながら、配線の対称性の検証処理を説明する。素子のレイアウト対称制約の検証が終了した後、図３に示されるような素子が配置されたとする。素子の対称性から対称軸３００が決まる。次に、ステップＳ２２００において、レイアウトデータに基づき配線の配置を表示する。ここでは、図２４（ａ）に示されるような配線が配置されたとする。
【０１１７】
次に、図２４（ａ）に示される配線について、図２３のフローチャートに従って対称性を検証する。まず、ステップＳ２３００において、対称配線ペアから配線ａと、配線ａと対称配線ペアを構成する配線ａ’とが選択されたとする。次に、ステップＳ２３０１において、処理部１０１は、配線ａと素子Ｂとの接合点Ｐ１（ａ）、および、配線ａ’と素子Ｄとの接合点Ｑ１（ａ’）について、Ｙ座標が一致するかを検証する。点Ｐ１（ａ）と点Ｑ１（ａ’）のＹ座標は一致しているので、エラーとは判断されない。
【０１１８】
続いて、処理部１０１は、点Ｐ１（ａ）と点Ｑ１（ａ’）とを結ぶ線分の中点が対称軸上にあるかどうかを検証する。点Ｐ１（ａ）と点Ｑ１（ａ’）とを結ぶ線分の中点は、対称軸上にあるので、エラーとは判断されない。次に、処理部１０１は、配線ａと素子Ａとの接合点Ｐ２（ａ）と、配線ａ’と素子Ｃとの接合点Ｑ２（ａ’）とについて、同様に検証する。これらの点についても対称性は満たされており、エラーとは判断されない。したがって、配線ａと、配線ａと対称配線ペアを構成する配線ａ’とは、対称軸３００について対称である。
【０１１９】
同様に、配線ｂとｂ’、配線ｃとｃ’、および、配線ｄとｄ’も、対称軸３００について対称であることが分かる。したがって、この場合、処理部１０１は、エラーは存在しないと判断し、表示部１０６にはエラーのリストは表示されない。したがって、設計者は、配線ａ〜ｄと配線ａ’〜ｄ’がレイアウト対称制約を満たしていることを認識することができる。
【０１２０】
一方、ステップＳ２２００において、図２４（ｂ）に示されるように配線が配置されたとする。この配線について、配線の対称性を検証した場合、配線ａと配線ａ’とについては、ステップＳ２３０４において、点Ｐ２（ａ）と点Ｑ２（ａ’）を結ぶ線分の中点が対称軸３００上にないというエラーが検出され、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む。また、配線ｃと配線ｃ’とについては、ステップＳ２３０２において、点Ｐ２（ｃ）と点Ｑ２（ｃ’）のＹ座標が一致しないというエラーが検出され、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む。配線ｂと配線ｂ’および配線ｄと配線ｄ’については、エラーとは判断されない。
【０１２１】
したがって、ステップＳ２３０８において、処理部１０１は、ＲＡＭ１０４にエラー情報が記憶されていると判断し、表示部１０６にエラーを表示する旨の命令を出力する。表示部１０６は、配線ａと配線ａ’については、点Ｐ２（ａ）と点Ｑ２（ａ’）とを結ぶ線分の中点が、対称軸３００上にないことを表示し、また、配線ｃと配線ｃ’については、点Ｐ２（ｃ）と点Ｑ２（ｃ’）のＹ座標が一致しないことを表示する。
【０１２２】
以上のように、本実施形態に係るレイアウト対称制約検証方法を用いることによって、対称性が必要な対称配線ペアについてもレイアウト対称制約の検証を行うことができる。また、エラーの原因となっている配線の特定や、どのようなエラーによってレイアウト対称制約が満たされていないかが表示されることにより、レイアウト設計の効率化が実現される。
【０１２３】
なお、本実施形態に係るレイアウト対称制約検証方法では、素子のレイアウト対称制約の検証方法は、第１の実施形態と同様の方法であるとしたが、本実施形態に係るレイアウト対称制約検証方法では、素子のレイアウト対称制約の検証方法は、第２、第３および第４の実施形態に係るレイアウト対称制約検証方法を用いてもよい。
【０１２４】
（第６の実施形態）
次に、本発明の第６の実施形態に係るレイアウト対称制約検証方法の手順を、図２５を参照しながら説明する。本実施形態に係るレイアウト対称制約検証方法の特徴は、従来のレイアウト対称制約検証方法では表示されなかった対称軸を画面に表示し、レイアウト対称制約を検証することである。本実施形態も第１の実施形態と類似する点が多く、したがって、ここでも第１の実施形態との相違点を中心に説明する。
【０１２５】
レイアウト対称制約およびレイアウトデータの処理部１０１への入力（ステップＳ２００およびステップＳ２０１）については、第１の実施形態と同じであるので説明を省略する。表示部１０６は、処理部１０１に入力されたレイアウトデータに基づき、素子の配置を表示する（ステップＳ２０２）。
【０１２６】
次に、入力部１０５を介して対称軸を指定するコマンドが入力される（ステップＳ２５００）と、処理部１０１は、入力された対称軸の情報に基づき、対称軸を表示する旨の命令を表示部１０６に出力する。表示部１０６は、この命令に基づき対称軸を表示する（ステップＳ２５０１）。
【０１２７】
次に、処理部１０１は、対称素子ペアを構成する素子同士の形状が一致するかを検証する（ステップＳ２５０２）。ここでは、処理部１０１は、第１の実施形態における第１の検証処理と同様の手順により、素子の形状の一致を検証する。最後に、処理部１０１は、対称軸を用いてレイアウト対称制約を検証する（ステップＳ２５０３）。
【０１２８】
図２６は、対称軸を用いたレイアウト対称制約の検証処理の詳細を示すフローチャートである。以下、図２６に示されるフローチャートを用いて、対称軸を用いたレイアウト対称制約の検証方法を説明する。処理部１０１は、まず、レイアウト対称制約に含まれる対称素子ペアから、対称性を検証する素子を１つ選択する（ステップＳ２６００）。
【０１２９】
次に、処理部１０１は、この素子（以下、素子Ａと称す）と、素子Ａと対称素子ペアを構成する素子Ａ’の重心のＹ座標（またＸ座標）が一致するかを検証する（ステップＳ２６０１）。ここで、処理部１０１は、対称軸がＹ座標に平行な場合には、重心のＹ座標の一致を検証し、また、対称軸がＸ座標に平行な場合には、重心のＸ座標の一致を検証する。ステップＳ２６０１において、これらの素子の重心のＹ座標（またはＸ座標）が一致しない場合には、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む（ステップＳ２６０２）。
【０１３０】
次に、処理部１０１は、素子Ａと素子Ａ’の重心を結ぶ線分の中点が、対称軸上にあるかどうかを検証する（ステップＳ２６０３）。これらの素子の重心を結ぶ線分の中点が、対称軸上にない場合には、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む（ステップＳ２６０４）。上記のステップＳ２６００〜ステップＳ２６０４の処理は、レイアウト対称制約に含まれる全ての対称素子ペアについて繰り返される（ステップＳ２６０５）。
【０１３１】
レイアウト対称制約に含まれる全ての対称素子ペアについて、レイアウト対称制約の検証が終了すると（ステップＳ２６０５のＹｅｓ）、次に、レイアウト対称制約に含まれる全ての自己対称素子について、レイアウト対称制約が検証される。
【０１３２】
処理部１０１は、まず、レイアウト対称制約に含まれる自己対称素子から、対称性を検証する素子を１つ選択する（ステップＳ２６０６）。次に、処理部１０１は、この素子（以下、素子Ｂと称す）の重心が対称軸上にあるかどうかを検証する（ステップＳ２６０７）。素子Ｂの重心が対称軸上にない場合には、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む（ステップＳ２６０８）。上記のステップＳ２６０６〜ステップＳ２６０８の処理は、レイアウト対称制約に含まれる全ての自己対称素子について繰り返される（ステップＳ２６０９）。
【０１３３】
以上のステップが、レイアウト対称制約に含まれる全ての素子について行われると（ステップＳ２６０９のＹｅｓ）、処理部１０１は、エラー情報がＲＡＭ１０４に存在しているかどうかを調べ（ステップＳ２６１０）、エラー情報が存在する場合には、エラーのリストを表示する命令を表示部１０６に出力する。表示部１０６は、この命令に基づきエラーのリストを表示する（ステップＳ２６１１）。設計者が、入力部１０５を介して素子の配置を変更すると、処理部１０１は、設計者が入力した処理に基づいてレイアウトデータを変更し（ステップＳ２６１２）、再度検証を行う（ステップＳ２６００〜ステップＳ２６１０）。全てのエラーが解消されると（ステップＳ２６１０のＮｏ）、処理部１０１は、対称軸を用いたレイアウト対称制約の検証処理を終了する。
【０１３４】
従来のレイアウト設計では、図２７（ａ）のように、対称軸が画面に表示されることはなかった。したがって、設計者は、対称軸を想定しながら素子の配置を行っていた。図２７（ａ）に示される素子の配置のレイアウト対称制約が、γ＝（（Ａ，Ｃ），（Ｂ，Ｄ），（Ｅ，Ｆ），Ｈ，Ｉ）であるとすると、ここでは、レイアウト対称制約に対して、複数のエラーが発生している。しかし、対称軸が表示されていないために、どの素子が正しく配置されているのかを特定するのは非常に困難である。
【０１３５】
これに対して、本実施形態に係るレイアウト対称制約検証方法では、図２７（ｂ）に示されるように、対称軸が設計者によって指定され、指定された対称軸が表示される。対称軸が指定されることにより、まず、どの対称素子ペアあるいは自己対称素子が、レイアウト対称制約を満たしていないかが特定される。さらに、設計者に対して、どの素子の配置が対称性を満たしていないかが、容易に分かるように提示される。これらのことから、本実施形態に係るレイアウト対称制約検証方法を用いることにより、レイアウト対称制約の検証の処理速度が向上され、レイアウト設計の効率化が実現される。
【０１３６】
なお、本実施形態では、素子の相対位置関係を用いたレイアウト対称制約の検証を行わない方法について説明したが、シーケンスペア、水平および垂直グラフ、または８方位を用いた素子の相対位置関係の検証と、本実施形態の対称軸を用いた検証方法とを併用することにより、特に素子の数が多い場合や回路が複雑な場合において、より効率的にレイアウト対称制約の検証を行うことができる。
【０１３７】
なお、上記第１〜第６の実施形態については、以下のような変形例を構成することができる。まず、上記各実施形態では、素子の形状の一致についての検証が行われるが、素子の形状が完全に一致していなくてもよい場合には、形状の違いを誤差として数値化することにより、多少形状が違う素子についても、その誤差が許容される範囲内であれば、処理部１０１がエラーとみなさないように、レイアウト対称制約検証用のプログラムを設定することも可能である。
【０１３８】
また、全ての実施形態において、対称軸は、Ｙ軸またはＸ軸に平行であるとしたが、対称軸は、任意の直線であってもよい。この場合、対称素子ペアの重心のＸ座標またはＹ座標の一致を検証する手順と、対称素子ペアの重心を結ぶ線分の中点のＸ座標またはＹ座標の一致を検証する手順の代わりに、レイアウト対称制約に含まれる対称素子ペアの重心を結ぶ線分の中点が対称軸となる直線上の点であり、また、対称素子ペアの重心を結ぶ線分がこの直線と直交することを検証すればよい。
【０１３９】
また、形状の一致は、対称軸に対してミラー反転の場合だけでなく、ミラー反転でなくても形状が一致していれば、処理部１０１がエラーとみなさないように、レイアウト対称制約検証用のプログラムを設定することも可能である。
【０１４０】
また、全ての実施形態において、素子は矩形としたが、素子は矩形以外の多角形であってもよい。素子の重心が容易に求められないような多角形の場合には、その多角形を包含するような矩形を用いて、その素子を表現することにより（対称素子ペアの場合は、素子と、その素子と対称素子ペアを構成する素子とが合同な矩形によって同様に包含されることが必要である）、本発明のレイアウト対称制約検証方法を用いることができる。
【０１４１】
また、全ての実施形態において、１つの素子を１つの矩形で表現したが、例えば、拡散層を共有した複数のトランジスタなど、複数の素子がひとかたまりに配置されている場合には、このひとかたまりの複数の素子を１つの矩形で表現することも可能である。
【０１４２】
また、素子同士の距離を規定の値以内にして設計する場合には、本発明の図形的に検証する第３の検証や対称軸を用いた検証において、素子同士の距離を設定することにより、規定値以内に設計することが可能である。
【０１４３】
また、対称軸に対して電流の向きを揃える必要がある対称素子ペアについては、本発明の形状の一致についての検証において、素子同士の形状の一致に加えて、電流の向きの一致を確認することを手順に加えることにより、電流の向きが対称軸に対して対称な素子の配置を行うことができる。
【産業上の利用可能性】
【０１４４】
本発明に係るレイアウト対称制約検証方法およびその装置は、レイアウト対称制約を効率よく検証することが可能であるため、アナログ回路やデジタル回路などの半導体集積回路のレイアウト設計などに利用できる。
【図面の簡単な説明】
【０１４５】
【図１】本発明の各実施形態に係るレイアウト対称制約検証方法を実行するために使用されるレイアウト対称制約検証装置の構成を示すブロック図
【図２】本発明の第１の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図３】本発明の第１の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約を検証される素子の配置の例を示す図
【図４】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第１の検証の手順を示すフローチャート
【図５】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第１の検証でエラーが発生する素子の配置の例を示す図
【図６】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図７】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第２の検証でエラーが発生する素子の配置の例を示す図
【図８】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第３の検証の手順を示すフローチャート
【図９】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第３の検証でエラーが発生する素子の配置の例を示す図
【図１０】本発明の第２の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図１１】本発明の第２の実施形態に係るレイアウト対称制約検証方法における水平グラフによる検証の手順を示すフローチャート
【図１２】（ａ）本発明の第２の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約を検証される素子の配置の例と（ｂ）水平グラフの一例を示す図と（ｃ）垂直グラフの一例を示す図
【図１３】本発明の第２の実施形態に係るレイアウト対称制約検証方法における水平グラフによる検証の結果を示す図
【図１４】本発明の第２の実施形態に係るレイアウト対称制約検証方法における第２の検証でエラーが発生する素子の配置の例を示す図
【図１５】本発明の第３の実施形態に係るレイアウト対称制約検証方法において使用する８方位の定義を示す図
【図１６】本発明の第３の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図１７】本発明の第３の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約を検証される素子の配置の例を示す図
【図１８】本発明の第４の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図１９】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第１の検証の手順を示すフローチャート
【図２０】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図２１】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第３の検証の手順を示すフローチャート
【図２２】本発明の第５の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図２３】本発明の第５の実施形態に係るレイアウト対称制約検証方法における配線の対称性を検証する手順を示すフローチャート
【図２４】本発明の第５の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約を検証される配線の配置の例を示す図
【図２５】本発明の第６の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図２６】本発明の第６の実施形態に係るレイアウト対称制約検証方法における対称軸を用いたレイアウト対称制約を検証する手順を示すフローチャート
【図２７】本発明の第６の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約を検証される素子の配置の例を示す図
【図２８】従来のレイアウト対称制約検証方法を示す図
【図２９】シーケンスペアによる相対位置関係の表現方法を示す図
【図３０】レイアウト対称制約を満たさないレイアウトの一例を示す図
【符号の説明】
【０１４６】
１００  レイアウト対称制約検証装置
１０１  処理部
１０２  データ蓄積部
１０３  ＲＯＭ
１０４  ＲＡＭ
１０５  入力部
１０６  表示部
【図１】
2006058958.tif 000003
【図２】
2006058958.tif 000004
【図３】
2006058958.tif 000005
【図４】
2006058958.tif 000006
【図５】
2006058958.tif 000007
【図６】
2006058958.tif 000008
【図７】
2006058958.tif 000009
【図８】
2006058958.tif 000010
【図９】
2006058958.tif 000011
【図１０】
2006058958.tif 000012
【図１１】
2006058958.tif 000013
【図１２】
2006058958.tif 000014
【図１３】
2006058958.tif 000015
【図１４】
2006058958.tif 000016
【図１５】
2006058958.tif 000017
【図１６】
2006058958.tif 000018
【図１７】
2006058958.tif 000019
【図１８】
2006058958.tif 000020
【図１９】
2006058958.tif 000021
【図２０】
2006058958.tif 000022
【図２１】
2006058958.tif 000023
【図２２】
2006058958.tif 000024
【図２３】
2006058958.tif 000025
【図２４】
2006058958.tif 000026
【図２５】
2006058958.tif 000027
【図２６】
2006058958.tif 000028
【図２７】
2006058958.tif 000029
【図２８】
2006058958.tif 000030
【図２９】
2006058958.tif 000031
【図３０】
2006058958.tif 000032
【手続補正書】
【提出日】平成17年4月18日(2005.4.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
設計者が図２８（ａ）に示されるように素子を配置した場合には、素子Ａの重心のＹ座標と素子Ｃの重心のＹ座標、および、素子Ｂの重心のＹ座標と素子Ｄの重心のＹ座標は一致しており、また、素子Ａの重心と素子Ｃの重心とを結ぶ線分の中点のＸ座標、素子Ｂの重心と素子Ｄの重心とを結ぶ線分の中点のＸ座標、および、素子Ｈの重心のＸ座標も一致している。したがって、対称素子ペア（Ａ，Ｃ）、（Ｂ，Ｄ）、および、自己対称素子Ｈは、破線２８００に対して対称であり、式（１）で表されるレイアウト対称制約を満たしている。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
一方、設計者が図２８（ｂ）および（ｃ）に示されるように素子を配置した場合には、素子Ａの重心と素子Ｃの重心とを結ぶ線分の中点のＸ座標と、素子Ｈの重心のＸ座標とは一致しており、破線２８００上にあるが、素子Ｂの重心と素子Ｄの重心とを結ぶ線分の中点のＸ座標は、破線２８０１上にあり、これらのレイアウトは、レイアウト対称制約を満たしていない。したがって、上記の２つの例の場合、素子の配置にエラーが発生している。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
図１１（ｂ）に示される水平グラフについて、左からの深さ優先探索を行うと、処理部１０１は、まず、起点である節ｌの情報をＲＡＭ１０４に書き込む。次に、探索を一つ進めると、探索対象Ｘは枝Ｅとなる。素子Ｅは素子Ｆと対称素子ペアであるので、ステップＳ１２０６において、処理部１０１は、枝Ｆが探索済みであるかを調べる。この時点では、枝Ｆは未探索であるので、処理部１０１は、枝Ｅの情報をＲＡＭ１０４に書き込み、探索を続ける。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
一方、図１７（ｂ）に示されるような素子の配置について、８方位を用いて第２の検証処理を行うと、素子Ｂの素子Ａに対する相対位置は、右下であり、素子Ｄの素子Ｃに対する相対位置も、右下である。また、素子Ｅの素子Ａに対する相対位置は、左であり、素子Ｆの素子Ｃに対する相対位置も左である。これらの結果から、素子Ａ、ＢおよびＥ、並びに、これらの素子とそれぞれ対称素子ペアを構成する素子Ｃ、ＤおよびＦの相対位置関係は、レイアウト対称制約を満たしていないことが分かる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１２９
【補正方法】変更
【補正の内容】
【０１２９】
次に、処理部１０１は、この素子（以下、素子Ａと称す）と、素子Ａと対称素子ペアを構成する素子Ａ’の重心のＹ座標（またはＸ座標）が一致するかを検証する（ステップＳ２６０１）。ここで、処理部１０１は、対称軸がＹ座標に平行な場合には、重心のＹ座標の一致を検証し、また、対称軸がＸ座標に平行な場合には、重心のＸ座標の一致を検証する。ステップＳ２６０１において、これらの素子の重心のＹ座標（またはＸ座標）が一致しない場合には、処理部１０１は、エラー情報をＲＡＭ１０４に書き込む（ステップＳ２６０２）。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１３５
【補正方法】変更
【補正の内容】
【０１３５】
これに対して、本実施形態に係るレイアウト対称制約検証方法では、図２７（ｂ）に示されるように、対称軸が設計者によって指定され、指定された対称軸２７００が表示される。対称軸が指定されることにより、まず、どの対称素子ペアあるいは自己対称素子が、レイアウト対称制約を満たしていないかが特定される。さらに、設計者に対して、どの素子の配置が対称性を満たしていないかが、容易に分かるように提示される。これらのことから、本実施形態に係るレイアウト対称制約検証方法を用いることにより、レイアウト対称制約の検証の処理速度が向上され、レイアウト設計の効率化が実現される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１４５
【補正方法】変更
【補正の内容】
【０１４５】
【図１】本発明の各実施形態に係るレイアウト対称制約検証方法を実行するために使用されるレイアウト対称制約検証装置の構成を示すブロック図
【図２】本発明の第１の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図３】本発明の第１の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約が検証される素子の配置の例を示す図
【図４】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第１の検証の手順を示すフローチャート
【図５】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第１の検証でエラーが発生する素子の配置の例を示す図
【図６】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図７】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第２の検証でエラーが発生する素子の配置の例を示す図
【図８】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第３の検証の手順を示すフローチャート
【図９】本発明の第１の実施形態に係るレイアウト対称制約検証方法における第３の検証でエラーが発生する素子の配置の例を示す図
【図１０】本発明の第２の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図１１】（ａ）本発明の第２の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約が検証される素子の配置の例を示す図と（ｂ）水平グラフの一例を示す図と（ｃ）垂直グラフの一例を示す図
【図１２】本発明の第２の実施形態に係るレイアウト対称制約検証方法における水平グラフによる検証の手順を示すフローチャート
【図１３】本発明の第２の実施形態に係るレイアウト対称制約検証方法における水平グラフによる検証の結果を示す図
【図１４】（ａ）本発明の第２の実施形態に係るレイアウト対称制約検証方法における第２の検証でエラーが発生する素子の配置の例を示す図と（ｂ）その水平グラフの一例を示す図と（ｃ）水平グラフによる検証の結果を示す図
【図１５】本発明の第３の実施形態に係るレイアウト対称制約検証方法において使用する８方位の定義を示す図
【図１６】本発明の第３の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図１７】本発明の第３の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約が検証される素子の配置の例を示す図
【図１８】本発明の第４の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図１９】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第１の検証の手順を示すフローチャート
【図２０】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第２の検証の手順を示すフローチャート
【図２１】本発明の第４の実施形態に係るレイアウト対称制約検証方法における第３の検証の手順を示すフローチャート
【図２２】本発明の第５の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図２３】本発明の第５の実施形態に係るレイアウト対称制約検証方法における配線の対称性を検証する手順を示すフローチャート
【図２４】本発明の第５の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約が検証される配線の配置の例を示す図
【図２５】本発明の第６の実施形態に係るレイアウト対称制約検証方法を示すフローチャート
【図２６】本発明の第６の実施形態に係るレイアウト対称制約検証方法における対称軸を用いたレイアウト対称制約を検証する手順を示すフローチャート
【図２７】本発明の第６の実施形態に係るレイアウト対称制約検証方法によってレイアウト対称制約が検証される素子の配置の例を示す図
【図２８】従来のレイアウト対称制約検証方法を示す図
【図２９】シーケンスペアによる相対位置関係の表現方法を示す図
【図３０】レイアウト対称制約を満たさないレイアウトの一例を示す図