(57)【要約】【課題】  本発明の課題は、図形検索の際に、検索開始付近の領域の検索をデータ規模に依存せずに高速に行うことを目的とする。【解決手段】  上記課題は、所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データをトレースして得られる該図形データに関する情報を含む第１のトレース情報を記憶した記憶部と、前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始して、当該図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する制御部とを有することを特徴とする図形検索装置により達成される。【選択図】  図１２
2013206178.tif 000002
【特許請求の範囲】
【請求項１】
所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データをトレースして得られる該図形データに関する情報を含む第１のトレース情報を記憶した記憶部と、
前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始して、当該図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する制御部と
を有することを特徴とする図形検索装置。
【請求項２】
前記記憶部は、前記所定領域内をトレース方向に対して垂直方向に区切られたトレース毎に、該トレース方向に従ってトレースされる複数の図形データのうち、最初の図形データへのリンクと、該図形データによって示される図形の長さ及び幅の最大長及び最大幅とを、該トレースを特定するトレース番号に対応付けた第２のトレース情報を記憶し、
前記制御部によって制御される、前記記憶部に記憶された前記第２のトレース情報を参照することによって、前記隣り合う検索範囲から前記最大幅以上離れたトレースの図形データをスキップし、また、前記トレース方向の座標のうち該隣り合う検索範囲から前記最大長以上に離れた場所を始点とする図形データをスキップすることによって前記検索範囲を前記隣り合う検索範囲へとシフトさせて検索した、該隣り合う検索範囲で対象となるトレースのトレース番号と、該トレース内で検索対象となる図形データへのリンクとで前記第１のトレース情報を更新する検索部
を有することを特徴とする請求項１記載の図形検索装置。
【請求項３】
前記検索部は、
前記図形データが前記隣り合う検索範囲から前記最大幅以上離れているトレースをスキップする場合、該トレースのトレース番号が、前記隣り合う検索範囲外であり、かつ、該隣り合う検索範囲の上位のトレース番号をオーバしている場合には、マイナスの移動方向に設定し、該隣り合う検索範囲外であり、かつ、該隣り合う検索範囲の下位のトレース番号より小さい場合には、プラスの移動方向に設定することによって、該隣り合う検索範囲内のトレースに絞り込むトレース絞込部
を有することを特徴とする請求項２記載の図形検索装置。
【請求項４】
前記検索部は、
前記トレース絞込部によって絞り込まれた前記隣り合う検索範囲内のトレース毎の前記図形データの検索で、該図形データが前記トレース方向の座標のうち該隣り合う検索範囲から前記最大長以上に離れている図形データをスキップする場合、該隣り合う検索範囲から前記トレース方向の前方でオーバして該隣り合う検索範囲外となる場合にはマイナスの移動方向に設定し、該隣り合う検索範囲から該トレース方向の後方で該隣り合う検索範囲外となる場合にはプラスの移動方向に設定することによって、該隣り合う検索範囲内の図形データに絞り込む図形データ絞込部
を有することを特徴とする請求項３記載の図形検索装置。
【請求項５】
前記検索部は、スキップ後の前記設定された移動方向への移動量を、前記隣り合う検索範囲に到達するか又は該隣り合う検索範囲を通り過ぎるまで増加させ、該隣り合う検索範囲を通り過ぎた場合に減らすことを特徴とする請求項３又は４記載の図形検索装置。
【請求項６】
前記制御部は、前記所定領域を再帰的に４つの領域に分割したセル毎に、該セル内の図形データに対して前記検索を行うことを特徴とする請求項１乃至５のいずれか一項記載の図形検索装置。
【請求項７】
コンピュータによって実行される図形検索方法であって、
記憶部に記憶された、所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データ間を辿るトレースによって得られる該図形データに関する情報を含む第１のトレース情報を参照し、
前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始し、
前記図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する
を有することを特徴とする図形検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形検索を高速に行うことに関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integration）の設計では、ＬＳＩの製造に係る配線、ビア等の２次元空間の大量の図形データを管理し、図形データを検索することが行われている。形状及び大きさが多種にわたる大量の２次元空間の図形データが管理されている。管理されている図形データに対する図形検索では、図形データから次の図形データへと辿りながら（以下、トレースと言う）、目標の図形データを検索することが行われる。
【０００３】
高速検索を実現するために、図形データが存在する２次元空間の領域を再帰的に４つの領域（セル又はバケット）に分割し（四分木）、各セル内に図形データを格納して管理することにより、検索範囲の図形データを絞り込むこと、また、検索の効率化を図るために、全体の図形データを基準座標によってソートし、その後に処理対象となるトレース範囲に含まれるデータを小さな領域に振り分ける分割統治による検索等が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−１５６３７号公報
【特許文献２】特開２００７−２３３６５８号公報
【特許文献３】特開２００９−１０４７５５号公報
【特許文献４】特許第３６４９４３０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に図形を検索する場合、限られた狭い範囲に存在する図形データを検索するが、データ規模が膨大になると分割する領域の階層が深くなり、分割数が多くなる。これにより検索しようとする目標の図形データまで辿りつく為の処理が多くなり、検索スピードが低下する。
【０００６】
複数の領域（セル）に跨る図形データが存在する場合、図形データの格納方法として次のような２種類が考えられる。
（１）図形データを分割せず、図形データが格納可能な上位階層の領域（セル）に図形データを格納する方法
（２）最下位の領域に収まるように図形データを分割して管理する方法
である。
【０００７】
複数の領域に跨る図形データが多数存在する場合、上記（１）の方法では、検索領域の対象外となる図形データが上位の領域に多数存在する可能性がある。このケースにおいて、上位に存在するデータに対して、検索の範囲内に存在するか否かの絞り込みに対する処理が増加する問題がある。
【０００８】
また、上記（２）の方法では、図形データが分割されることにより、管理対象となる図形データ数が増加する。例えば、ＬＳＩの製造データなどに使用される図形データでは領域の端から端までを結ぶ配線や、微小な区間の配線など、多種多様な配線図形が存在しており、そのような図形データにおいて上記（２）の方法を採用した場合、図形データの規模が倍以上に膨れ上がる恐れがある。
【０００９】
図形データをソートしてバイナリサーチで目的の範囲を検索する手法も考えられるが、大規模データにおいては四分木の方法に比べて更に検索効率が低下してしまう恐れがある。
【００１０】
また、ＬＳＩの製造データなどの検証処理では、領域全体に対して局所的な領域をシフトしながら図形を検索し、設計ルール上の問題が無いかを検査するが、データ規模が膨大な場合、検索のたびに領域の絞り込み処理が必要となり、検索処理のオーバーヘッドが大きいと言った問題がある。
【００１１】
１つの側面では、本発明は、図形検索の際に、検索開始付近の局所的な領域の検索を高速に行うことを目的とする。
【課題を解決するための手段】
【００１２】
開示の図形検索装置は、所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データをトレースして得られる該図形データに関する情報を含む第１のトレース情報を記憶した記憶部と、前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始して、当該図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する制御部とを有する。
【００１３】
また、上記課題を解決するための手段として、コンピュータに上記図形検索装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及び図形検索方法とすることもできる。
【発明の効果】
【００１４】
１つの実施形態によれば、図形検索の際に、検索開始付近の領域の検索を高速に行うことができる。
【図面の簡単な説明】
【００１５】
【図１】配線層の例を示す図である。
【図２】配線の図形例を示す図である。
【図３】ラインデータを座標によってソートする場合の概念をイメージ化した図である。
【図４】ソート例を説明するための図である。
【図５】メタルデータテーブルのデータ構造例を示す図である。
【図６】ＶＩＡデータテーブルのデータ構造例を示す図である。
【図７】Ｘ方向配線層２ｂのトレーステーブルを作成した場合のイメージ図である。
【図８】Ｍａｘ長及びＭａｘ幅の例を示す図である。
【図９】トレーステーブルのデータ構成例を示す図である。
【図１０】検索範囲と図形データとの関係を説明するための図である。
【図１１】検索方法を説明するための図である。
【図１２】局所トレーステーブルを用いた検索方法を説明するための図（その１）である。
【図１３】局所トレーステーブルを用いた検索方法を説明するための図（その２）である。
【図１４】局所トレーステーブルのデータ構造例を示す図である。
【図１５】図形検索装置のハードウェア構成を示す図である。
【図１６】図形検索装置の機能構成例を示す図である。
【図１７】図形検索処理の概略を説明するためのフローチャート図である。
【図１８】図形検索処理を詳述するためのフローチャート図である。
【図１９】図１８のステップＳ１３でのトレーステーブルの作成処理を説明するためのフローチャート図である。
【図２０】図１８のステップＳ１５でのトレースの絞込処理を説明するためのフローチャート図である。
【図２１】図１８のステップＳ１８での図形データの絞込処理を説明するためのフローチャート図である。
【図２２】図１８のステップＳ２１での処理を説明するためのフローチャート図である。
【図２３】リンクアップデートを説明するための図である。
【図２４】処理時間の比較を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて説明する。本実施例において、ＬＳＩの製造データなどのように多様な図形が存在し、データ規模（数）が膨大な図形データにおいて、局所領域に含まれる図形を高速に検索し、図形検索に必要なメモリの増加を少なく抑えられ、局所的な領域をシフトしながら検索する動作において効率的な検索を行う。
【００１７】
以下に、多数の配線層によって構成されるＬＳＩに関する２次元の図形データにおいて、ある特定の図形を検索するために、下記の２つの絞込みにより検索する、本実施例に係る図形検索方法について説明する。
【００１８】
図１に示されるＬＳＩ２では、配線がＹ方向に配線されたＹ方向配線層２ａと、Ｘ方向に配線されたＸ方向配線層２ｂとが交互に積層され構成される。このようなＬＳＩ２の配線及びビアに関する図形データに対して、下記の絞り込みを行う。
（１）全図形データを１次元の単純なソートにより整列させておく。全図形データは、配線方向、及び、予め定められた基準点（図２（Ｂ））に基づいてソートされる。
（２）上記（１）でソートされた図形データをグループ化したトレーステーブルを作成する。Ｘ方向配線層２ｂに対して同一Ｙ座標の図形データがグループ化され、Ｙ方向配線層２ａに対して同一Ｘ座標の図形データがグループ化される。Ｘ方向配線層２ｂに対する同一Ｙ座標、Ｙ方向配線層２ａに対する同一Ｘ座標を、以下単に同一トレースと言う。また、Ｘ方向又はＹ方向に図形データから図形データへとトレースされるトレース方向は、配線の方向に相当する。
【００１９】
また、上記（２）の同一トレース毎のラインデータの検索には、
（２−１）局所的にシフトする場合はスキップサーチ（図１１（Ｂ））、
又は、
（２−２）１回のみのサーチではバイナリサーチ（図１１（Ａ））
を採用する。
【００２０】
特に、（２−１）局所的にシフトする場合はスキップサーチと、局所的に（１）のトレーステーブルを組み合わせることで、データ総数に依存しない検索を可能とすることにより、検索領域の絞込み処理の効率化を図ることが可能となる。
【００２１】
バイナリサーチの場合はＯ（ｌｏｇ  ｎ）、四分木の場合はＯ（ｌｏｇ  ｎ）の処理時間となるがスキップサーチと局所的トレーステーブルとの組み合わせにおいて、検索開始点の近傍に検索対象が存在するケースでは、図形データの総数ｎに依存しない計算時間で検索が可能となる。
（１）先ず、図形データを座標によってソートする。配線方向に従って、図形の左下のＸＹ座標（左下座標）を基準点として用いて、図形データを基準点でソートする。
【００２２】
図２は、配線の図形例を示す図である。図２（Ａ）に示す配線の図形例において、Ｘ方向の長さをＸｌｅｎ、Ｙ  方向の長さをＹｌｅｎで示している。ＶＩＡも同様である。図２（Ｂ）では、トレース方向の決め方を説明する。図２（Ｂ）において、ＸｌｅｎがＹｌｅｎより小さい場合（Ｘｌｅｎ＜Ｙｌｅｎ）、トレース方向はＹ方向であると判断する。一方、ＸｌｅｎがＹｌｅｎより大きい場合（Ｘｌｅｎ＞Ｙｌｅｎ）、トレース方向はＸ方向であると判断する。Ｘｌｅｎ＝Ｙｌｅｎの場合は、予めＸ方向、Ｙ方向のどちらかに属するように定めておく。基準点はいずれの場合も左下座標である。
【００２３】
判断したトレース方向に従って、図形の基準点を用いて図形データをソートする。ソート方法には、図形データを直接ソートする方法と、データを示すインデックスをソートする方法の２種類が考えられる。どちらの方法を採用してもよい。
【００２４】
図形データをソートする例について説明する。図３は、ラインデータを座標によってソートする場合の概念をイメージ化した図である。図３において、Ｘ方向配線層２ｂの場合、図形データは、左下からスタートし右上の図形データで終わるような順番にソートされる。
【００２５】
図４は、ソート例を説明するための図である。図４（Ａ）は、Ｘ方向配線層２ｂの１段分の配線の配置例である。配線Ａ、Ｂ、Ｃ、及びＤが、この順で、左から右へと配置されているとする。
【００２６】
図４（Ｂ）では、図４（Ａ）の配線Ａ、Ｂ、Ｃ、及びＤのラインデータをデータ格納領域４内で直接ソートする例を示している。図４（Ｂ）において、ラインデータが、基準点に基づいて、配線Ｄ、Ａ、Ｃ、及びＢの順にデータ格納領域４内で直接ソートされることによって、配線Ａ、Ｂ、Ｃ、及びＤの順に格納される。
【００２７】
図４（Ｃ）では、配線Ｄ、Ａ、Ｃ、及びＢの順にデータ格納領域４内に格納されたラインデータを直接ソートするのではなく、各配線をインデックスで示すインデックステーブル４−２をソートする例を示している。ソートされたインデックスによって、配線Ａ、Ｂ、Ｃ、及びＤの順を示す。このソート例では、データ格納領域４内の配線Ｄ、Ａ、Ｃ、及びＢの順に変わりない。
【００２８】
次に、トレーステーブルについて説明する。
（２）トレーステーブル
データ量が膨大となる場合では、検索領域の絞り込みを狭くし、検索効率を上げる目的で同一トレースの図形データをグループ化するためにトレーステーブルを作成する。Ｘ方向配線層２ｂの場合、Ｙ座標がトレース座標となる。Ｙ方向配線層２ａの場合、Ｘ座標がトレース座標となる。
【００２９】
先ず、トレーステーブルを作成する際に参照されるデータテーブルの例について説明する。図５は、メタルデータテーブルのデータ構造例を示す図である。図５に示すメタルデータテーブル５１は、配線毎のデータを記憶するテーブルであり、配線層、方向、左下座標（基準点）、右上座標、及び属性等の項目を有する。
【００３０】
配線層には、多層階のうちどの層かを指定する値が示される。方向には、Ｙ方向配線層２ａであれば「Ｙ」が示され、Ｘ方向配線層２ｂであれば「Ｘ」が示される。左下座標は、配線の左下の座標（ＭｉｎＸ、ＭｉｎＹ）で示され、基準点として使用される。右上座標は、配線の右上の座標（ＭａｘＸ、ＭａｘＹ）で示される。属性には、配線の電気的特性等が示される。ＭｉｎＸとＭａｘＸとで配線の幅Ｘｌｅｎを取得でき、ＭｉｎＹとＭａｘＹとで配線の幅Ｙｌｅｎを取得できる。
【００３１】
図５のデータ構造例では、配線層「１」はＸ方向配線層２ｂであり、左下座標（１００、１００）と右上座標（３００、１５０）とで特定される配線と、左下座標（４００、１００）と右上座標（５００、１５０）とで特定される配線と、左下座標（６００、１００）と右上座標（９００、２００）とで特定される配線等が配置されていることを示している。
【００３２】
図６は、ＶＩＡデータテーブルのデータ構造例を示す図である。図６に示すＶＩＡデータテーブル５２は、ＶＩＡ（ビア）毎のデータを記憶するテーブルであり、配線層、左下座標（基準点）、右上座標、及び属性等の項目を有する。
【００３３】
配線層には、多層階のうちどの層かを指定する値が示される。左下座標は、ＶＩＡの左下の座標（ＭｉｎＸ、ＭｉｎＹ）で示され、基準点として使用される。右上座標は、ＶＩＡの右上の座標（ＭａｘＸ、ＭａｘＹ）で示される。属性には、ＶＩＡの電気的特性等が示される。ＭｉｎＸとＭａｘＸとでＶＩＡの幅Ｘｌｅｎを取得でき、ＭｉｎＹとＭａｘＹとでＶＩＡの幅Ｙｌｅｎを取得できる。
【００３４】
図６のデータ構造例では、配線層「１」には、左下座標（１００、１００）と右上座標（２００、２００）とで特定されるＶＩＡと、左下座標（４００、１００）と右上座標（５００、２００）とで特定されるＶＩＡと、左下座標（６００、１００）と右上座標（７００、２００）とで特定されるＶＩＡ等が配置されていることを示している。
【００３５】
上述したような、メタルデータテーブル５１と、ＶＩＡデータテーブル５２とを、配線層毎に、左下座標を基準点としてソートし、同一トレース座標をグループ化する。図７は、Ｘ方向配線層２ｂのトレーステーブルを作成した場合のイメージ図である。図７に示すように、Ｘ方向配線層２ｂのトレーステーブル５３では、同一Ｙ座標の図形データ５がグループ化される。
【００３６】
グループ内の図形データ５は、基準点に基づいてソートされることにより、左から右へとリンクされたイメージ図で示している。
【００３７】
また、作成したトレーステーブル５３では、図８に示すように、各グループの図形データ５の中において、最大の長さを示すＭａｘ長と、最大の幅を示すＭａｘ幅とを記憶する。
【００３８】
図９は、トレーステーブルのデータ構成例を示す図である。図９において、トレーステーブル５３は、グループ毎にトレースに関するデータを記憶し管理するテーブルであり、トレース番号、トレース座標（Ｙ）、データ範囲、データ数、Ｍａｘ長、Ｍａｘ幅、リンク等の項目を有する。
【００３９】
トレース番号は、各トレースを識別するための番号を示す。トレース座標（Ｙ）は、グループ化される図形データのＹ座標を示す。データ範囲は、データ開始点とデータ終了点とを有する。データ開始点は、配置される図形のうち、同一トレース内のうち基準点のＹ座標が最も小さい値を示す。データ終了点は、配置される図形のうち、同一トレース内のうち基準点のＹ座標が最も大きい値を示す。
【００４０】
データ数は、同一トレース内の図形データ５の個数を示す。Ｍａｘ長は、同一トレース内の図形データ５の長さＸｌｅｎのうちの最大長さを示す。Ｍａｘ幅は、同一トレース内の図形データ５の幅Ｙｌｅｎのうちの最大幅を示す。Ｍａｘ長及びＭａｘ幅は、検索範囲の絞り込みに使用する。
【００４１】
リンクは、同一トレース内で、最初にリンクする図形データ５を特定するStartLinkと、最後にリンクする図形データ５を特定するEndLinkとを有する。トレース座標（Ｙ）で示される範囲（トレース座標範囲）のＹ座標を有する図形データ５のうち、基準点のＸ座標が最小の図形データ５（即ち、トレースの先頭の図形データ５）を特定する図形データ番号がStartLinkに設定され、基準点のＸ座標が最大の図形データ５（即ち、トレースの最後の図形データ５）を特定する図形データ番号がEndLinkに設定される。各トレースにおける図形データ５間のリンクは、ソートした順に従えばよい。
【００４２】
上述したデータ構成例において、StartLinkとEndLinkとから、図形データ数を求めてもよい。また、図形データ数とStartLinkとが存在すれば、EndLinkを計算で求めるようにしてもよい。説明の簡略化の為に、トレーステーブル５３は図形データ数と、StartLink及びEndLinkとを有する構成としているが、図形データ数、StartLink、EndLinkのいずれか１つを省略してもよい。
【００４３】
図９に示すトレーステーブル５３は、トレースに幅を持たせた構造の例を示している。１つのトレーステーブル５３が管理する座標を所定間隔（例えば、１００毎）とすることができる。
（３）検索方法
一般的に、検索処理は対象となる矩形の領域を指示して対象となる図形データを検索する。トレーステーブル５３を利用する場合の検索範囲と図形データ５との関係について説明する。
【００４４】
図１０は、検索範囲と図形データとの関係を説明するための図である。図１０の例において、検索範囲６の領域と接触する図形データ５を取り出す際に、基準点のＹ座標が検索範囲６内に含まれるか否かを調査する為にＭａｘ幅を使用する（トレース絞込）。Ｍａｘ幅が検索範囲６に達しないトレースは調査する必要がない（スキップする）。
【００４５】
Ｍａｘ長はＸ座標の範囲を絞り込む為に使用する（図形データ絞込）。Ｍａｘ長以上に離れた場所でＸ座標を始点とする図形データ５は無視（スキップ）することができる。また、トレース内のＭａｘ幅だけではなく、トレーステーブル５３でその配線層における全てのトレースの中でのＭａｘ幅を記憶しておくことで、検索範囲６の対象となる図形データ５の絞り込みを容易化（高速化）することができる。
【００４６】
各トレース内のＸ方向の検索に対してはバイナリサーチ又はスキップサーチ（後述）を行う。どちらのサーチを採用するかは、１回のサーチのみの場合はバイナリサーチを使用し、局所的な範囲をシフトしながら連続してサーチする場合はスキップサーチを使用する。
【００４７】
図１１は、検索方法を説明するための図である。図１１（Ａ）では、バイナリサーチの一例が示されている。バイナリサーチでは、検索範囲６の対象となる図形データ５のデータ数がｎの場合、ｎ／２＊＊ｉ（ｉ＝１、２、３、・・・）の移動量でサーチする。
【００４８】
図１１（Ｂ）では、スキップサーチの一例が示されている。スキップサーチでは、検索の開始点より目標に到達するか、又は、目標を通り過ぎるまでは、２、４、６、８などのように移動量を増加させ、目標を通り過ぎた場合はバイナリサーチのように移動量を減らして探索を行う。この例では、２の倍数で移動量を変化させているが、３、４等の倍数を選択することも可能である。
【００４９】
スキップサーチでは、サーチの開始点に近い部分にターゲットが存在する場合には、バイナリサーチより効率的に検索を行うことが可能である。バイナリサーチでは検索時の移動回数はデータ数ｎに依存しているが、スキップサーチではデータ数ｎに依存しないサーチを可能とする。
（４）局所トレースデータ
局所トレーステーブルを用いて局所的な領域をシフトしながら検索を行う。図１２及び図１３は、局所トレーステーブルを用いた検索方法を説明するための図である。図１２及び図１３中、検索範囲１から検索範囲２へと変わる場合のトレーステーブル５３、局所トレーステーブル５４、図形データ５との関係を示している。トレーステーブル５３では、簡易的にトレース番号１、２、３、・・・のみを示している。
【００５０】
局所トレーステーブル５４は、検索範囲に関係するトレースの情報と、基準点が検索範囲より小さくかつ検索範囲に接するか、又は、近傍に存在する図形データ５へのリンクを保持するテーブルである。
【００５１】
図１２では、検索範囲１から検索範囲２へと変わる前の、検索範囲１を処理する場合の例を示している。図１２に例示されるように局所トレーステーブル５４では、基準点が検索範囲１より小さくかつ検索範囲に接するか、又は、近傍に存在する図形データ５へリンクされる。局所トレーステーブル５４には、トレース番号１、４、５、６、及び７が保持される。一方、それ以外のトレース番号２、３等の図形データ５は、検索範囲１に接触しないため、局所トレーステーブル５４には登録されない。
【００５２】
検索範囲１から検索範囲２へと変わると、図１３に例示されるように局所トレーステーブル５４では、基準点が検索範囲２より小さくかつ検索範囲に接するか、又は、近傍に存在する図形データ５へリンクされる。局所トレーステーブル５４には、トレース番号１、４、５、６、及び７が保持される。一方、それ以外のトレース番号２、３等の図形データ５は、検索範囲２に接触しないため、局所トレーステーブル５４には登録されない。
【００５３】
最初の検索において、図１２に例示されるように、検索範囲１に対して対象となる図形データ５に関して、トレース番号と図形データ５へのリンクとが、局所トレーステーブル５４に保持される。次の検索時において、検索範囲２のトレース方向に変化が無い場合、或いは、変化があってもトレース座標範囲が前回のトレース範囲に含まれている場合は、前回記憶した局所トレーステーブル５４の内容を利用してスキップサーチにて近傍のサーチを行う。このサーチ結果を次回の検索用に記憶する。
【００５４】
このように局所領域をシフトしながら検索を行うケースでは、局所トレーステーブル５４とスキップサーチとを組み合せることで、対象となる図形データ５のデータ数の絞り込みを効率的に行うことができる。また、大規模データにおいては大幅な高速化が可能となる。
【００５５】
図１４は、局所トレーステーブルのデータ構造例を示す図である。図１４において、局所トレーステーブル５４は、トレース番号、リンク等の項目を有する。局所トレーステーブル５４のトレース番号を用いてトレーステーブル５３を参照し、トレーステーブル５３に記憶されているデータ範囲（データ開始点及びデータ終了点）、Ｍａｘ長、Ｍａｘ幅等のデータを参照しながら、対象となる図形データ５へのリンクを記憶して管理する。
【００５６】
インデックステーブル４−２（図４）が作成される場合には、リンクはインデックス（例えば、図形データ５の番号）を示す。
【００５７】
本実施例の四文木への適用について説明する。
（５）四分木への適用
（１）〜（４）の機構は単体でも利用可能であるが、四分木への応用も可能である。
【００５８】
四分木のセルのサイズを大きくすると、検索対象の図形データ５のデータ数が増えるために、一般的に検索時間が増加する。
【００５９】
セルのサイズを大きめに設定し、セル内の図形データ５に対して（１）〜（４）を適用することで検索効率を落とさずに、更に、データ分割によるデータ規模増大を抑えながら、かつ、局所領域をシフトしながら検索を行うケースに対しても高速な検索が可能となる。
【００６０】
以下、上述した本実施例に係る処理を行う図形検索装置について説明する。
（６）図形検索装置
図形検索装置１００（図１５）にて行われる図形検索処理は、ＬＳＩ設計における配線処理などの２次元空間の図形処理、又は、設計者の指示に応じて行われる処理である。
【００６１】
図１５は、図形検索装置のハードウェア構成を示す図である。図１５において、図形検索装置１００は、コンピュータによって制御される端末であって、ＣＰＵ（Central Processing Unit）１１と、主記憶装置１２と、補助記憶装置１３と、入力装置１４と、表示装置１５と、出力装置１６と、通信インターフェース１７と、ドライブ１８とを有し、バスＢに接続される。
【００６２】
ＣＰＵ１１は、主記憶装置１２に格納されたプログラムに従って図形検索装置１００を制御する。主記憶装置１２には、ＲＡＭ（Random Access Memory）及びＲＯＭ（Read-Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、主記憶装置１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００６３】
補助記憶装置１３には、ハードディスクドライブが用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置１３に格納されているプログラムの一部が主記憶装置１２にロードされ、ＣＰＵ１１に実行されることによって、各種処理が実現される。記憶部１３０は、主記憶装置１２及び／又は補助記憶装置１３を有する。
【００６４】
入力装置１４は、マウス、キーボード等を有し、ＬＳＩ２の設計者が図形検索装置１００による処理に必要な各種情報を入力するために用いられる。表示装置１５は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。出力装置１６は、プリンタ等を有し、ユーザからの指示に応じて各種情報を出力するために用いられる。通信インターフェース１７は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、外部装置との間の通信制御をするための装置である。
【００６５】
図形検索装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によって図形検索装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライブ１８にセットされると、ドライブ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがバスＢを介して補助記憶装置１３にインストールされる。そして、プログラムが起動されると、補助記憶装置１３にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００６６】
図１６は、図形検索装置の機能構成例を示す図である。図１６において、図形検索装置１００は、制御部２１と、図形データ取込部２２と、検索範囲入力部２３と、検索部２４と、検索結果出力部２５とを有する。制御部２１と、図形データ取込部２２と、検索範囲入力部２３と、検索部２４と、検索結果出力部２５の夫々は、対応するプログラムをＣＰＵ１１が実行することによって行われる処理によって実現される。図形データ取込部２２と、検索範囲入力部２３と、検索部２４と、検索結果出力部２５とは、夫々、制御部２２によって制御される。
【００６７】
また、記憶部１３０は、データベース３１、データ格納領域４、インデックステーブル４−２、トレーステーブル５３、局所トレーステーブル５４、前回検索範囲５５、今回検索範囲５６、検索結果５７等を有する。
【００６８】
制御部２１は、トレーステーブル５３と局所トレーステーブル５４とを用いた図形検索処理全体の制御を行い、図形データ取込部２２と、検索範囲入力部２３と、検索部２４と、検索結果出力部２５とを制御する。
【００６９】
図形データ取込部２２は、データベース３１から読み込んだ配線及びＶＩＡの図形データ５を、各配線層のトレース毎に、基準点を用いてトレース方向にソートして、データ格納領域４に格納する。データベース３１から読み込んだ図形データ５は、データ格納領域４のメタルデータテーブル５１及びＶＩＡデータテーブル５２として格納される。図形データ５は、テーブル５１及び５２内でソートされる。
【００７０】
又は、インデックステーブル４−２を用いる場合、図形データ取込部２２は、ソートせずに、インデックステーブル４−２の図形データ５を指し示すインデックスをソートして格納する。この場合、ソート処理時のデータ移動量を少なくすることが可能となり（図４）、大規模なデータにおいてはソート時間を短縮することができる。
【００７１】
検索範囲入力部２３によって、検索対象の座標の範囲が指定される。検索部２４は、前回の検索範囲を示す前回検索範囲５５と、新規に指定された検索範囲を示す今回検索範囲５６との差分を判断して、局所トレースが使用可能な場合は、局所トレーステーブル５４を使用してスキップサーチを実施する。検索範囲に大幅なずれがある場合、又は局所トレーステーブル５４が作成されていない場合についてはバイナリサーチを使用し、局所トレーステーブル５４を作成しながら検索対象の抽出を行う。後述される図２０及び図２１のフローチャートでは、処理の簡略化のためにバイナリサーチを使用せず、スキップサーチを行うフローとなっている。データ規模が小さい場合、このように処理の簡略化のためにスキップサーチで統一しても性能差はでない。
【００７２】
検索結果出力部２５は、検索部２４で抽出されたデータを保持する。
【００７３】
データベース３１は、ＬＳＩ２の配線、ＶＩＡ（ビア）の形状等の図形データ５を含めて、ＬＳＩ２の製造に係るデータを記憶し管理するためのデータベースである。図形データ取込部２２によって、配線、ＶＩＡ（ビア）の図形データ５が取り込まれデータ格納領域４に格納されソートされる。
【００７４】
インデックステーブル４−２は、図４（Ｃ）で説明したように、図形データＡ〜Ｄの夫々を示すインデックスがソートされて格納される。図形データ取込部２２によって、データ格納領域４内のメタルデータテーブル５１及びＶＩＡデータテーブル５２に格納される図形データ５を直接ソートする場合、インデックステーブル４−２は不要となる。
【００７５】
トレーステーブル５３は、図９で説明したように、予めソートされた図形データ５のうち、各トレースの先頭の図形データ５へリンクする。データ格納領域４又はインデックステーブル４−２において、各トレースの先頭の図形データ５へリンクする。
【００７６】
局所トレーステーブル５４は、図１４で説明したように、検索範囲に対して対象となるトレース番号と図形データ５へのリンクとを格納し管理する。局所トレーステーブル５４は、検索処理中にアップデートされ、前回の検索で使用したデータを示す。
【００７７】
前回検索範囲５５は前回の検索範囲を示し、今回検索範囲５６は新規に指定された検索範囲を示す。前回検索範囲５５と今回検索範囲５６とは、検索部２４によって参照される。検索結果５７は、検索範囲内であると判断された図形データ５を含む。
【００７８】
図形検索装置１００による図形検索処理の概略について図１７で説明する。図１７は、図形検索処理の概略を説明するためのフローチャート図である。図１７に示す図形検索処理において、図形データ取込部２２は、図形データ５をデータベース３１から読み込み、データ格納領域４に記憶して（ステップＳ１）、データ格納領域４内、又は、インデックステーブル４−２を用いてソートする（ステップＳ２）。
【００７９】
制御部２１は、検索範囲入力部２３によって、検索範囲を入力する（ステップＳ４）。制御部２１は、検索部２４に、入力された検索範囲で対象となるトレースを検索させ（ステップＳ５）、また、図形データ５を検索する（ステップＳ６）。検索結果５７が記憶部１３０に記憶される。そして、制御部２１は、検索結果出力部２５によって、検索範囲で対象となる図形データ５を含む検索結果５７を出力させる（ステップＳ７）。
【００８０】
制御部２１は、検索終了か否かを判断する（ステップＳ８）。制御部２１は、検索が終了していない場合、ステップＳ４へと戻り、上記同様の処理を繰り返す。一方、制御部２１は、検索が終了した場合、この図形検索処理を終了する。
【００８１】
図１８は、図形検索処理を詳述するためのフローチャート図である。図１８において、図形データ取込部２２は、データベース３１より図形データ５を読み込んで、データ格納領域４に格納する（ステップＳ１１）。
【００８２】
図形データ取込部２２は、基準点を用いて図形データ５をソートする（ステップＳ１２）。インデックステーブル４−２が存在する場合は、図形データ５を指し示すインデックスを作成してインデックステーブル４−２に記憶した後に、図形の基準点に基づいてインデックステーブル４−２をソートする。
【００８３】
制御部２１は、図形データ取込部２２によってソートされたインデックステーブル４−２又はデータ格納領域４に記憶される図形データ５を参照して、図７に示すように、トレース毎に先頭の図形データ５へリンクするトレーステーブル５３を作成する（ステップＳ１３）。また、この時、同一トレース内に含まれる図形データ５のなかで、最大となる長さ（Ｍａｘ長）と、最大となる幅（Ｍａｘ幅）とがトレーステーブル５３に記憶される。制御部２１によるトレーステーブル５３の作成処理は、図１９で詳述される。
【００８４】
検索範囲入力部２３は、配線処理又は設計者による指示に応じて図形の検索範囲を示す（Ｘｍｉｎ、Ｙｍｉｎ）及び（Ｘｍａｘ、Ｙｍａｘ）を入力し、記憶部１３０に今回検索範囲５６として記憶する（ステップＳ１４）。
【００８５】
制御部２１は、検索部２４によって、トレースを絞り込む（ステップＳ１５）。図１０に示すように、検索範囲となるトレース座標を調査するための最初のトレース番号が求められる（トレースの頭出し）。検索部２４によるトレースの絞込処理は、図２０で詳述される。
【００８６】
ステップＳ１５にて頭出ししたトレース番号からトレース番号の最後までループする（ステップＳ１６：ループ１）。ループ毎に、トレースが検索範囲外であるか否かが判断される（ステップＳ１７：トレース座標の範囲チェック）。トレースが検索範囲外か否かは、図１０に示されるように、検索範囲６に対してＭａｘ幅が評価されることにより判断される。トレースが検索範囲外である場合、制御部２１は、ループ１を抜けて、ステップＳ２２へと進む。
【００８７】
トレースが検索範囲外でない場合、制御部２１は、検索部２４によって、検索範囲外のトレースにグループ化される図形データ５を読み飛ばし、検索対象となるトレース毎に図形データ５の頭出し（図１２及び図１３）を行うことによって、図形データ５の絞込処理を行う（ステップＳ１８）。この図形データ５の絞込処理では、図１０に示されるＭａｘ長が参照される。検索部２４による図形データ５の絞込処理は、図２１で詳述される。
【００８８】
検索対象となる図形データ５の検索を同一トレースの最後までループする（ステップＳ１９：ループ２）。制御部２１は、図形データ５の基準点が検索範囲内であるか否かを判断する（ステップＳ２０）。基準点が検索範囲を超えている場合、制御部２１は、ループ２を抜けて、ステップＳ２２へと進む。
【００８９】
一方、図形データ５の基準点が検索範囲内の場合、制御部２１は、検索部２４によって、検索範囲内の図形データ５を含む検索結果５７を記憶部１３０に記憶し、また、同時に局所トレーステーブル５４を作成する（ステップＳ２１）。検索範囲内の候補となりうる全ての図形データ５がチェックされ、検索範囲と図形データ５の矩形が重なる場合に記憶部１３０に記憶される。
【００９０】
ループ２及びループ１を終了すると、制御部２１は、検索結果出力部２５によって、記憶部１３０に記憶された検索結果５７を出力させる（ステップＳ２２）。検索結果出力部２５は、設計者によって検索範囲が指定された場合、検索結果５７を表示装置１５又は出力装置１６に検索結果５７の内容を出力する。
【００９１】
図１９は、図１８のステップＳ１３でのトレーステーブルの作成処理を説明するためのフローチャート図である。図１９において、制御部２１は、処理トレースＴＲＣを初期化する（ステップＳ３１）。
【００９２】
制御部２１は、全図形データの最後までループする（ステップＳ３２：ループ１）。制御部２１は、データ格納領域４から順に図形データ５を読み出して、制御部２１は、配線の方向（トレース方向）がＸ方向であるか否かを判断する（ステップＳ３３）。配線の方向（トレース方向）は、図５に示すように、メタルデータテーブル５１の方向の値が参照される。
【００９３】
Ｘ方向を示す場合、制御部２１は、処理トレースＴＲＣにＭｉｎＹ（基準点のＹ座標）を設定し（ステップＳ３４）、トレーステーブル５３を作成する際の作成モードにＸ方向を設定する（ステップＳ３５）。一方、Ｙ方向を示す場合、制御部２１は、処理トレースＴＲＣにＭｉｎＸ（基準点のＸ座標）を設定し（ステップＳ３６）、トレーステーブル５３を作成する際の作成モードにＹ方向を設定する（ステップＳ３７）。
【００９４】
その後、制御部２１は、処理トレースＴＲＣが前回と同一か否かを判断する（ステップＳ３８）。処理トレースＴＲＣが前回と同一の場合、制御部２１は、ステップＳ４１へと進む。処理トレースＴＲＣが前回と同一でない場合、制御部２１は、トレーステーブル５３に新たな処理トレースＴＲＣを追加する（ステップＳ３９）。新たな処理トレースＴＲＣのStartLinkに図形データ５の図形データ番号を設定する（ステップＳ４０）。
【００９５】
制御部２１は、トレーステーブル５３の処理トレースＴＲＣのEndLinkに図形データ５の図形データ番号を設定し（ステップＳ４１）、処理トレースＴＲＣの図形データ数を１インクリメントする（ステップＳ４２）。
【００９６】
制御部２１は、トレーステーブル５３の処理トレースＴＲＣのＭａｘ長、Ｍａｘ幅をアップデートする（ステップＳ４３）。制御部２１は、データ格納領域４から読み出した図形データ５のＸｌｅｎがＭａｘ長より大のとき、処理トレースＴＲＣのＭａｘ長をＸｌｅｎでアップデートし、ＹｌｅｎがＭａｘ幅より大のとき、処理トレースＴＲＣのＭａｘ幅をＹｌｅｎでアップデートする。
【００９７】
制御部２１は、データ格納領域４に格納されている図形データ５の全てに対して処理を終了した場合、このトレーステーブル５３の作成処理を終了する。
【００９８】
図２０は、図１８のステップＳ１５でのトレースの絞込処理を説明するためのフローチャート図である。トレースの絞込処理では、検索範囲となるトレース座標を調査するための最初のトレース番号を取得する。
【００９９】
図２０において、検索部２４は、前回の結果が利用可能か否かを判断する（ステップＳ５１）。前回の結果が利用可能な場合、検索部２４は、局所トレーステーブル５４を利用して、スタート位置を調整する（ステップＳ５２）。前回の局所トレーステーブル５４（前回のトレース範囲）が利用可能な場合、つまり、前回と今回とで一部でも検索範囲がオーバラップする場合、前回の局所トレーステーブル５４を利用して、トレースの頭出しを行う場合のトレースの初期値とする。
【０１００】
一方、前回の結果が利用できない場合、検索部２４は、スタート位置を０番号のトレースに設定する（ステップＳ５３）。前回の局所トレーステーブル５４（前回のトレース範囲）が無関係な場合、スキップサーチの開始点を先頭（０）に設定する。尚、このフローでは、スキップサーチを使用するフローとなっているが、スキップサーチではなく、バイナリサーチを行うことも可能である。
【０１０１】
検索部２４は、トレーステーブル５３を参照して、スタート位置のトレースから、検索範囲で対象となるトレースを特定する（ステップＳ５４：ループ１）。検索部２４は、トレーステーブル５３からスタート位置のトレースから順にトレースを１つ読み出して、座標範囲を計算する（ステップＳ５５）。トレーステーブル５３を作成する際の作成モードがＸ方向の場合、検索部２４は、同一トレース内の図形のＭａｘ幅とトレース座標とからこのトレース内に含まれる図形の範囲を計算する。
【０１０２】
そして、検索部２４は、このトレースが検索範囲内であるか否かを判断する（ステップＳ５６：図１０）。検索範囲内である場合、検索部２４は、トレースを微調整し（ステップＳ５６−２）、このトレースの絞込処理を終了する。検索部２４は、トレースが検索範囲となった場合に検索範囲の先頭となるトレースを求める為に、マイナス方向へトレースを移動してトレース内の図形データ５の範囲をチェックしながらトレースの開始点を求める。例えば、スキップサーチを使用する場合は、トレース毎のＭａｘ幅とは別に、全トレースでのＭａｘ幅（トレース毎のＭａｘ幅の中で最大となるＭａｘ幅）を使用して範囲を狭めてゆく。そのトレースが検索範囲に関係するかしないかはトレース毎の判断が必要となる為、全トレースでのＭａｘ幅を用いた絞込を行った後に、各トレース単位に詳細なチェックを行う。そのトレース単位のチェックで使用するトレースの開始点を調整する。
【０１０３】
一方、検索範囲外である場合、検索部２４は、範囲をオーバしたか否かを判断する（ステップＳ５７）。範囲をオーバした場合、検索部２４は、移動方向を−（マイナス）に設定し（ステップＳ５８）、オーバフラグをＯＮに設定する（ステップＳ５９）。
【０１０４】
スキップサーチの途中で検索範囲の上位のトレース番号をオーバした場合には、移動量を増加−＞減少へ切り替える必要がある。範囲をオーバした場合は、記憶部１３０内のオーバフラグをＯＮにし、後続の処理にて移動量の計算に使用する。
【０１０５】
一方、範囲をオーバしていない場合、検索部２４は、移動方向＋（プラス）に設定する（ステップＳ６０）。検索部２４は、スキップサーチのトレース番号が、検索範囲から外れた場合、かつ、検索範囲の上位のトレース番号をオーバした場合に、次にチェックするトレースを現在のトレースから−（マイナス）方向に、それ以外（即ち、検索範囲から外れた場合、かつ、検索範囲の下位のトレース番号より小さい場合）は＋（プラス）方向に設定する。
【０１０６】
検索部２４は、オーバフラグがＯＮか否かを判断する（ステップＳ６１）。オーバフラグがＯＮの場合、検索部２４は、バイナリサーチのように移動量を１／２（移動量（Ｎ）＝Ｎ／２）で絞り込む（ステップＳ６２）。一方、オーバフラグがＯＦＦの場合、検索部２４は、Ｋ倍（Ｋは２以上の定数）により移動量を増加させる（ステップＳ６３）。
【０１０７】
そして、検索部２４は、現在のトレース番号と、ステップＳ５８又はＳ６０で求めた移動方向、ステップＳ６２又はＳ６３で求めた移動量から、次にチェックするトレース番号を算出し（ステップＳ６４）、ステップＳ５５へと戻り、上述同様の処理を繰り返す（ループ１）。検索部２４は、ステップＳ５４のループ１が終了した場合、トレーステーブル５３に対象となるトレースが存在しないと判断して（ステップＳ６５）、このトレースの絞込処理を終了する。
【０１０８】
図２１は、図１８のステップＳ１８での図形データ５の絞込処理を説明するためのフローチャート図である。図２１では、インデックステーブル４−２を利用する場合で説明する。
【０１０９】
図２１において、検索部２４は、前回の結果が利用可能か否かを判断する（ステップＳ７１）。前回の結果が利用可能な場合、検索部２４は、局所トレーステーブル５４を利用して、スタート位置を調整する（ステップＳ７２）。前回の局所トレーステーブル５４（前回のトレース範囲）が利用可能な場合、つまり、前回検索範囲５５と今回検索範囲５６とで一部でも検索範囲がオーバラップする場合、前回の局所トレーステーブル５４を利用して、トレースの頭出しを行う場合のトレースの初期値とする。
【０１１０】
一方、前回の結果が利用できない場合、検索部２４は、スタート位置を０番号のトレースに設定する（ステップＳ７３）。前回の局所トレーステーブル５４（前回のトレース範囲）が無関係な場合、スキップサーチの開始点を先頭（０）に設定する。尚、このフローでは、スキップサーチを使用するフローとなっているが、スキップサーチではなく、バイナリサーチを行うことも可能である。
【０１１１】
検索部２４は、図１８のステップＳ１６で決定した検索対象のトレーステーブル５３のトレース内に存在する図形データをスキップサーチで検索する（ステップＳ７４：ループ１）。
【０１１２】
検索部２４は、トレーステーブル５３からスタート位置のトレースから順にトレースを１つ読み出して、トレース内の図形データ５のＭａｘ長から検索範囲に対して図形データ５の基準点がどこに有るべきかを計算する（ステップＳ７５）。トレーステーブル５３を作成する際の作成モードがＸ方向の場合、トレース内のＭａｘ長と検索範囲の座標（MinX）から調べるべき図形の基準点がどこに有るべきかを求める。基準点（ｘ座標）ＳＸ＝ＭｉｎＸ  −  Ｍａｘ長で求められる。
【０１１３】
そして、検索部２４は、図形データ５が検索範囲内であるか否かを判断する（ステップＳ７６：図１０）。トレース内の図形データ５の基準点をＰｏｓＸとすると、
ＰｏｓＸ  ＞  ＳＸ
となる図形データ５を検索して、更に、図形データ５の長さを使用して、図形データ５が検索範囲に入るか否かを判断する。最初に見つかった図形データ５を以降の検索開始点とする。
【０１１４】
検索範囲内である場合、検索部２４は、開始の図形データ５を微調整し（ステップＳ７６−２）、この図形データ５の絞込処理を終了する。検索部２４は、図形データ５が検索範囲となった場合に検索範囲の先頭となる図形データ５を求める為にマイナス方向へトレースを移動してトレース内の図形データ５の範囲をチェックしながら先頭の図形データ５を求める。
【０１１５】
一方、検索範囲外である場合、検索部２４は、範囲をオーバしたか否かを判断する（ステップＳ７７）。検索範囲をオーバした場合、検索部２４は、移動方向を−（マイナス）に設定し（ステップＳ７８）、オーバフラグをＯＮに設定する（ステップＳ７９）。
【０１１６】
スキップサーチの途中でトレース方向の座標（トレース方向が、Ｘ方向であればｘ座標、Ｙ方向であればｙ座標）に対して検索範囲をオーバした場合には、移動量を増加−＞減少へ切り替える必要がある。検索範囲をオーバした場合は、記憶部１３０内のオーバフラグをＯＮにし、後続の処理にて移動量の計算に使用する。
【０１１７】
一方、検索範囲をオーバしていない場合、検索部２４は、移動方向＋（プラス）に設定する（ステップＳ８０）。検索部２４は、検索範囲から外れた場合、かつ、検索範囲をオーバした場合に、次にチェックする図形データ５を現在の図形データ５から−（マイナス）方向に、それ以外は＋（プラス）方向に設定する。
【０１１８】
検索部２４は、オーバフラグがＯＮか否かを判断する（ステップＳ８１）。オーバフラグがＯＮの場合、検索部２４は、バイナリサーチのように移動量を１／２（移動量（Ｎ）＝Ｎ／２）で絞り込む（ステップＳ８２）。一方、オーバフラグがＯＦＦの場合、検索部２４は、Ｋ倍（Ｋは２以上の定数）により移動量を増加させる（ステップＳ８３）。
【０１１９】
そして、検索部２４は、現在の図形データ５の番号と、ステップＳ７８又はＳ８０で求めた移動方向、ステップＳ８２又はＳ８３で求めた移動量とから、次にチェックする図形データ５の番号を算出し（ステップＳ８４）、ステップＳ７５へと戻り、上述同様の処理を繰り返す（ループ１）。検索部２４は、ステップＳ７４のループ１が終了した場合、インデックステーブル４−２に対象となる図形データ５が存在しないと判断して（ステップＳ８５）、このトレースの絞込処理を終了する。
【０１２０】
図２２は、図１８のステップＳ２１での図形データ５の絞込処理を説明するためのフローチャート図である。図２２に示すフローは、同一トレース内の図形データ５毎に行われ、局所とレーステーブル５４のリンクアップデートと、検索結果５７を保存する処理とを行う。図２２において、検索部２４は、図形データ５が検索範囲に接触するか否かを判断する（ステップＳ９１）。
【０１２１】
検索範囲に接触する場合、検索部２４は、記憶部１３０に記憶されている接触フラグがＯＮに設定されているか否かをチェックすることによって、図形データ５が最初に接触した図形データ５であるのか否かを判断する（ステップＳ９２）。図形データ５が最初に接触した図形データ５でないと判断した場合（接触フラグがＯＮである場合）、検索部２４は、ステップＳ９５へと進む。
【０１２２】
一方、図形データ５が最初に接触した図形データ５であると判断した場合（接触フラグがＯＦＦの場合）、検索部２４は、局所トレーステーブル５４に図形データ５へのリンクを設定して（ステップＳ９３）、接触フラグをＯＮに設定する（ステップＳ９４）。
【０１２３】
検索部２４は、記憶部１３０内の検索結果５７に図形データ５を追加して記憶して（ステップＳ９５）、この図形データ５の絞込処理を終了する。図形データ５を特定する番号を検索結果５７に記憶してもよい。
【０１２４】
検索範囲に接触しない場合、検索部２４は、局所トレーステーブル５４のリンクをシフトさせて（ステップＳ９６）、この図形データ５の絞込処理を終了する。
【０１２５】
ステップＳ９３及びＳ９６のリンクアップデートについて図２３で説明する。図２３は、リンクアップデートを説明するための図である。図２３（Ａ）では、ステップＳ９３での処理によって、局所トレーステーブル５４が最初の図形データ５にリンクしている状態を示している。検索範囲に接触する最初の図形データ５が、局所トレーステーブル５４の検索範囲の対象となるトレース毎にリンクされている。
【０１２６】
また、図２３（Ｂ）では、ステップＳ９６での処理によって、検索範囲に接触する図形データ５が現われない間に、局所トレーステーブル５４のリンクをシフトする動きを示している。作成モードがＸ方向の場合、検索範囲に接触する図形データ５が現われない間は、局所トレーステーブル５４のリンクはＸ方向へシフトしながらアップデートされる。
【０１２７】
局所トレーステーブル５４のリンクがアップデートされることによって、局所的な領域８ａがシフトされる。
【０１２８】
制御部２１は、図形データ取込部２２と、検索範囲入力部２３と、検索部２４と、検索結果出力部２５とを制御することによって、図形データ５が存在する２次元空間の領域を再帰的に４つの領域（セル又はバケット）に分割した（四分木）セル毎に、セル内に存在する図形データ５に対して、上述した図形検索処理を行うこともできる。
【０１２９】
図２４は、処理時間の比較を示す図である。図２４において、横軸にデータ数を示し、縦軸に処理時間（マイクロ秒）を示す。本実施例を適用したスキップサーチ（■）は、本実施例の適用のないバイナリーサーチ（◆）と比較して、データ数の増加に伴う処理時間の増加を大幅に少なくすることができる。
【０１３０】
上述したように、本実施例に係る図形検索装置１００では、ＬＳＩ２の製造データなどのように２次元空間の大量の図形データ５を管理し、図形検索処理を行う際に、図形データ５を１次元の単純なソートにより整列させた後、座標範囲を管理するトレーステーブル５３と、前回の検索開始点（リンクした図形データ５）を管理する局所的な検索用の局所トレーステーブル５４とを用いたスキップサーチによって、局所的な領域８ａの図形データをシフトしながら繰り返して検索する。このような本実施例に係るスキップサーチによって、省メモリかつ図形データ５の総数に依存しない高速な検索を可能とする。
【０１３１】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０１３２】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データをトレースして得られる該図形データに関する情報を含む第１のトレース情報を記憶した記憶部と、
前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始して、当該図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する制御部と
を有することを特徴とする図形検索装置。
（付記２）
前記記憶部は、前記所定領域内をトレース方向に対して垂直方向に区切られたトレース毎に、該トレース方向に従ってトレースされる複数の図形データのうち、最初の図形データへのリンクと、該図形データによって示される図形の長さ及び幅の最大長及び最大幅とを、該トレースを特定するトレース番号に対応付けた第２のトレース情報を記憶し、
前記制御部によって制御される、前記記憶部に記憶された前記第２のトレース情報を参照することによって、前記隣り合う検索範囲から前記最大幅以上離れたトレースの図形データをスキップし、また、前記トレース方向の座標のうち該隣り合う検索範囲から前記最大長以上に離れた場所を始点とする図形データをスキップすることによって前記検索範囲を前記隣り合う検索範囲へとシフトさせて検索した、該隣り合う検索範囲で対象となるトレースのトレース番号と、該トレース内で検索対象となる図形データへのリンクとで前記第１のトレース情報を更新する検索部
を有することを特徴とする付記１記載の図形検索装置。
（付記３）
前記検索部は、
前記図形データが前記隣り合う検索範囲から前記最大幅以上離れているトレースをスキップする場合、該トレースのトレース番号が、前記隣り合う検索範囲外であり、かつ、該隣り合う検索範囲の上位のトレース番号をオーバしている場合には、マイナスの移動方向に設定し、該隣り合う検索範囲外であり、かつ、該隣り合う検索範囲の下位のトレース番号より小さい場合には、プラスの移動方向に設定することによって、該隣り合う検索範囲内のトレースに絞り込むトレース絞込部
を有することを特徴とする付記２記載の図形検索装置。
（付記４）
前記検索部は、
前記トレース絞込部によって絞り込まれた前記隣り合う検索範囲内のトレース毎の前記図形データの検索で、該図形データが前記トレース方向の座標のうち該隣り合う検索範囲から前記最大長以上に離れている図形データをスキップする場合、該隣り合う検索範囲から前記トレース方向の前方でオーバして該隣り合う検索範囲外となる場合にはマイナスの移動方向に設定し、該隣り合う検索範囲から該トレース方向の後方で該隣り合う検索範囲外となる場合にはプラスの移動方向に設定することによって、該隣り合う検索範囲内の図形データに絞り込む図形データ絞込部
を有することを特徴とする付記３記載の図形検索装置。
（付記５）
前記検索部は、スキップ後の前記設定された移動方向への移動量を、前記隣り合う検索範囲に到達するか又は該隣り合う検索範囲を通り過ぎるまで増やし、該隣り合う検索範囲を通り過ぎた場合に減らすことを特徴とする付記３又は４記載の図形検索装置。
（付記６）
前記制御部は、前記所定領域を再帰的に４つの領域に分割したセル毎に、該セル内の図形データに対して前記検索を行うことを特徴とする付記１乃至５のいずれか一項記載の図形検索装置。
（付記７）
複数の前記所定領域が積層され、
前記制御部は、
各所定領域内を層毎に定めたトレース方向に対して垂直方向に区切ったトレース毎に、ソート結果を参照して、該トレース方向に従って前記図形データをトレースすることによって、前記最初の図形データへのリンクと、同一トレース内の図形データのうちの前記最大長及び前記最大幅とを取得して、該リンクと該最大長及び該最大幅とを前記トレース番号に対応付けた前記第２のトレース情報を記憶部に作成する
ことを特徴とする付記２記載の図形検索装置。
（付記８）
前記所定領域はＬＳＩの配線層の領域であり、前記図形データは該配線層に配置される配線を表すデータであり、
前記制御部は、前記層毎に配置される前記配線の長さ及び幅の大きい方を前記トレース方向に設定する
ことを特徴とする付記２乃至７のいずれか一項記載の図形検索装置。
（付記９）
コンピュータによって実行される図形検索方法であって、
記憶部に記憶された、所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データ間を辿るトレースによって得られる該図形データに関する情報を含む第１のトレース情報を参照し、
前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始し、
前記図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する
を有することを特徴とする図形検索方法。
（付記１０）
記憶部に記憶された、所定領域に含まれる複数の領域の１つを検索範囲として、前記検索範囲に含まれる複数の図形データの各々をソートしたソート結果に基づいて前記検索範囲に含まれる図形データ間を辿るトレースによって得られる該図形データに関する情報を含む第１のトレース情報を参照し、
前記記憶部に記憶された前記第１のトレース情報に含まれる情報に対応する図形データから開始し、
前記図形データを含む検索範囲に隣り合う検索範囲に向けて該図形データの検索を行って、前記第１のトレース情報の更新を行う処理を制御する
処理をコンピュータに実行させる図形検索プログラム。
【符号の説明】
【０１３３】
４            データ格納領域
５            図形データ
１１          ＣＰＵ
１２          主記憶装置
１３          補助記憶装置
１４          入力装置
１５          表示装置
１６          出力装置
１８          ドライブ
１９          記憶媒体
２１          制御部
２２          図形データ取込部
２３          検索範囲入力部
２４          検索部
２５          検索結果出力部
３１          データベース
５３          トレーステーブル
５４          局所トレーステーブル
５５          前回検索範囲
５６          今回検索範囲
５７          検索結果
１００        図形検索装置
１３０        記憶部
【図１】
2013206178.tif 000003
【図２】
2013206178.tif 000004
【図３】
2013206178.tif 000005
【図４】
2013206178.tif 000006
【図５】
2013206178.tif 000007
【図６】
2013206178.tif 000008
【図７】
2013206178.tif 000009
【図８】
2013206178.tif 000010
【図９】
2013206178.tif 000011
【図１０】
2013206178.tif 000012
【図１１】
2013206178.tif 000013
【図１２】
2013206178.tif 000014
【図１３】
2013206178.tif 000015
【図１４】
2013206178.tif 000016
【図１５】
2013206178.tif 000017
【図１６】
2013206178.tif 000018
【図１７】
2013206178.tif 000019
【図１８】
2013206178.tif 000020
【図１９】
2013206178.tif 000021
【図２０】
2013206178.tif 000022
【図２１】
2013206178.tif 000023
【図２２】
2013206178.tif 000024
【図２３】
2013206178.tif 000025
【図２４】
2013206178.tif 000026