以下に、本発明にかかるレイアウト検証装置、レイアウト検証方法およびレイアウト検証プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
実施例1に係るレイアウト検証装置10について説明する。図1は、レイアウト検証装置10の全体構成を示す図である。レイアウト検証装置10は、欠陥の有無が未知のレイアウトパターンにおいて、その欠陥を検証する装置である。そして、図1に示すように、レイアウト検証装置10は、欠陥の検証に用いる識別モデルを生成する識別モデル生成装置20と、実際に欠陥の検証を行うレイアウト検証部60によって構成される。まず、識別モデル生成装置20について説明する。なお、以下の実施例では、欠陥の有無が未知のレイアウトパターンを「未知パターン」、欠陥に係る情報が付与されている、すなわち、欠陥の有無が既知のレイアウトパターンを「既知パターン」と表記する場合がある。
(識別モデル生成装置)
識別モデル生成装置20は、例えば、パーソナルコンピュータやサーバコンピュータ等のコンピュータなどである。識別モデル生成装置20は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。なお、本実施例1では、識別モデル生成装置20を1台のコンピュータとした場合を例として説明する。識別モデル生成装置20は、CAD(Computer Aided Design)装置などの設計者による集積回路の設計を支援する回路設計ソフトウェアが動作する設計装置であってもよい。図1に示すように、識別モデル生成装置20は、記憶部30と、制御部31とを有する。なお、図示しないが、識別モデル生成装置20は、入力部、表示部および通信I/F(インタフェース)を有してもよい。
記憶部30は、ハードディスク、SSD(Solid State Drive)、光ディスクなどの記憶装置である。なお、記憶部23は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。
記憶部30は、制御部31で実行されるOS(Operating System)や各種プログラムを記憶する。例えば、記憶部30は、識別モデル生成に用いる各種のプログラムを記憶する。さらに、記憶部30は、制御部31で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部30は、既知パターンデータ40と、ビットデータ41と、類似度データ42と、識別モデル情報43とを有する。
既知パターンデータ40は、既知パターン集合に関する一連の情報を記憶したデータである。そして、以下の実施例では、識別モデル生成装置20は、既知パターン集合として既知パターン集合P1,・・・,Pnの入力を受け付けたものとして説明する。既知パターン集合P1,・・・,Pnは、識別モデルの生成対象として入力されるものである。
既知パターンデータ40は、既知パターン集合P1,・・・,Pnにおいて、各既知パターンを構成する矩形や多角形の頂点座標リストを含む。例えば、各既知パターンPi(i=1,・・・,n)を構成する矩形や多角形の集合を、Pi:{P1,P2,・・・,Pk,PN}と表すことができる。また、多角形Pkの頂点座標を、Pk={(xk1,yk1),・・・,(xkn,ykn),Lk}と表すことができる。Lkは、多角形Pkが存在する配線層を識別するための記号である。
図2は、既知パターンデータ40に含まれる既知パターンの一例を示す図である。図2の例では、既知パターン毎に、既知パターンを構成する各構成部品の頂点座標リストが記録されている。この頂点座標リストには、構成部品を示す図形のそれぞれの頂点座標が1行毎に記録されている。例えば、図2の例では、既知パターンPATTERN1の頂点座標リストとして、矩形RECT1の4つの頂点座標や、多角形POLY2の7つの頂点座標が示されている。頂点座標リストとしては、GDS(Graphic Data System)、OASIS(Open Artwork System Interchange Standard)等の既存の図形データフォーマットを利用してもよい。
また、既知パターンデータ40には、各既知パターンにおける欠陥の有無に関する情報(以下の実施例において、「欠陥有無情報」と表記する場合がある)も含まれる。例えば、既知パターンデータ40には、既知パターン集合P1,・・・,Pnに対応付けて、欠陥有無情報e1,・・・,enも含まれる。なお、ここでは、欠陥有無情報として概念的な記号を用いているが、実際には、例えば、欠陥を有するレイアウトパターンには「YES」、欠陥なしのレイアウトパターンには「NO」が対応付けられることが考えられる。また、欠陥有無情報は、上記の座標等とともに入力されるものである。
また、既知パターンデータ40には、グラフ生成部51により各既知パターンから生成された配線層毎のドロネー三角形のグラフ情報も含まれる。さらに、既知パターンデータ40には、かかるグラフの各ノードを識別するためのラベルであって、各ノードの属性情報と各ノードに隣接するノード(隣接ノード)の属性である隣接情報を考慮したラベルも含まれる。レイアウトパターンや、そこから生成されるドロネー三角形は一種のグラフととらえることができ、そのようなグラフの頂点はノードと呼ばれる。なお、以下の実施例では、ノードのラベルを「ノードラベル」と表記する場合がある。ノードラベルは、後述する自ノード部52aにより基盤が生成され、隣接ノード部52bによりさらに処理が加えられることで生成される。
例えば、既知パターン集合P1,・・・,Pnから生成されたドロネー三角形D1,・・・,Dnにおいて、各ドロネー三角形Di=(V,E)(i=1,・・・,n)のように形式的に定義することができる。Vは、ノード集合であり、V:{v1,v2,・・・,vn,vi=(xi,yi)}と表すことができる。例えば、ノードviは、座標(xi,yi)に位置することを示す。Eは、枝集合であり、E={e1,e2,・・・,em,ej=(vj1,vj2)}と表すことができる。つまり、各枝ejは、2つのノードvj1とvj2の間の無向枝であることを示す。
また、ドロネー三角形D1,・・・,Dnの各ノードに対して、当該ノードの属性情報に基づいてラベルが生成された各ドロネー三角形Diは、Di=(V,E,l)(i=1,・・・,n)のように形式的に定義することができる。VおよびEは、上記の通りである。lは、各ノードラベルを示し、l:{l1,l2,・・・,ln,li∈Σ,Σ={0,1}p}と表すことができる。つまり、ノードラベルlは、l1からln要素を含み、長さpのビット列で表現されることを示す。
また、ドロネー三角形D1,・・・,Dnの各ノードラベル対して、さらに隣接情報が付与された各ドロネー三角形DLiも、例えば、DLi=(V,E,l)(i=1,・・・,n)のように形式的に定義することができる。VおよびEは、上記の通りである。各ノードラベルlは、l1からln要素を含み、さらに隣接情報が考慮されたためにビット数が増える。このときの、ビット列の長さをqとすると、l:{l1,l2,・・・,ln,li∈Σ,Σ={0,1}q}と表すことができる。すなわち、既知パターンデータ40は、ドロネー三角形DnおよびDLnに関する情報を記憶したデータである。
なお、後述するが、レイアウト検証部60の算出部93は、かかる既知パターンデータ40から、例えば、既知パターン毎にノードラベル情報を取得し、既知パターンと未知パターンとの類似度を算出する。
ビットデータ41は、自ノード部52aがノードそれぞれについて、自ノードの属性情報をビット列で表現したラベルを生成する際に用いるデータである。すなわち、ビットデータ41は、ラベル生成のためのルールを記憶したデータといえ、例えば、属性情報毎に所定のビット列が対応付けられている。
後述するが、自ノード部52aは、自ノードの属性情報に基づくラベルを生成する。その際に、自ノード部52aは、かかるビットデータ41を用いる。具体的には、自ノード部52aは、まず、自ノードの属性情報を特定する。そして、自ノード部52aは、特定した属性情報に対応するビット列をビットデータ41から用いることにより、ビット列で表現したラベルを生成し、生成したラベルを既知パターンデータ40として各既知パターンに対応付けて格納する。なお、自ノードとは、ラベル生成対象または以下に示す隣接情報付与対象となっているノードを示す。
ここで、図3Aは、ノードの属性情報とビット列との対応付けの一例を示す図である。図3Aに示すように、ノードの属性情報としては、「頂点種別」、「パターン中心からの距離」、「隣接ノード数」および「隣接ノード間最短距離」がある。
例えば、図3AのデータD1に示すように、ビットデータ41は、頂点種別とビット列とを対応付けて記憶する。上述したように、頂点とはノードのことを指す。ここで、図3Bは、頂点種別の一例を示す図である。頂点種別としては、図3Bのように、凸頂点、凹頂点、ビア頂点がある。また、これらを組み合わせて、凸頂点とビア頂点との両方に対応する頂点(凸頂点+ビア頂点)、凹頂点とビア頂点との両方に対応する頂点(凹頂点+ビア頂点)がある。そして、各頂点種別に対応するビット列は、任意に定められてよいが重複はしない。
また、図3AのデータD2に示すように、ビットデータ41は、パターン中心から自ノードまでの距離とビット列とを対応付けて記憶する。各パターン中心からの距離に対応するビット列は、任意に定められてよいが重複はしない。
また、図3AのデータD3に示すように、ビットデータ41は、ラベル生成対象のノードに対する隣接ノード数とビット列とを対応付けて記憶する。各隣接ノード数に対応するビット列は、任意に定められてよいが重複はしない。
また、図3AのデータD4に示すように、ビットデータ41は、自ノードとの距離が最短である隣接ノードとの距離である隣接ノード間最短距離と、ビット列とを対応付けて記憶する。各隣接ノード間最短距離に対応するビット列は、任意に定められてよいが重複はしない。
なお、属性情報は、必ずしも図3Aに示す4種類の属性情報だけである必要はない。例えば、属性情報として、「パターン中心からの方向」、「異図形ノード間最短距離」、「異図形ノード間最長距離」等があってもよい。「パターン中心からの方向」は、パターン中心から見た自ノードの方向を示す。また、図3Bにおいて配線を示すパターンA1およびA2は、異図形ととらえることができる。つまり、「異図形ノード間最短距離」は、自ノードを含む図形から見て、自ノードを含まない図形のノードの中で、自ノードとの距離が最短であるノードとの距離を示す。一方、「異図形ノード間最長距離」は、自ノードを含む図形から見て、自ノードを含まない図形のノードの中で、自ノードとの距離が最長であるノードとの距離を示す。そして、それぞれの属性情報についてビット列を対応付けたテーブルがビットデータ41としてさらに設定されてもよい。
図1に戻り、類似度データ42は、既知パターン集合P1,・・・,Pnにおける2つのレイアウトパターンの組合せであって、成立する全ての組合せにおける類似度をその組み合わせに対応付けて記憶したデータである。類似度データ42は、後述する算出部53により算出される。例えば、算出部53により既知パターンP1とP2との類似度が「0.66」と算出された場合には、「0.66」が既知パターンP1とP2との組み合わせに対応付けられ類似度データ42に格納される。また、類似度は、数値「0」〜「1」の範囲で表現され、数値「1」に近付くほど類似度は高くなる。
識別モデル情報43は、欠陥の検証に用いる識別モデルを記憶したデータである。識別モデル情報43には、後述する識別モデル生成部54により生成され、後述する式(4)で表現される。例えば、識別モデル43は、式(4)に示される重み係数αiの値と、フィッティング係数βとを対応付けたものとして格納される。
制御部31は、識別モデル生成装置20を制御するデバイスである。制御部31としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路を採用できる。制御部31は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部31は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部31は、受付部50と、グラフ生成部51と、ラベル生成部52と、算出部53と、識別モデル生成部54とを有する。
受付部50は、各種の受付を行う。例えば、受付部50は、図示しない所定の入力部を介して入力された既知パターン集合や、各既知パターンにおける欠陥有無情報を受け付ける。そして、受付部50は、受け付けた既知パターンを既知パターンデータ40として格納する。なお、受付部50は、入力部70を介して各種の受付を行うように構成されてもよい。
グラフ生成部51は、レイアウトパターンを構成する図形の頂点を結んでドロネー三角分割(Delaunay triangulation)を配線層毎に行って、図形の頂点を結んで得られる複数の三角形を求める。このような三角形は、ドロネー三角形と呼ばれる。グラフ生成部51は、例えば、既知パターン集合P1,・・・,Pnそれぞれから生成したドロネー三角形D1,・・・,Dnに関する情報(座標等)を既知パターンデータ40として、既知パターン集合P1,・・・,Pnのそれぞれに対応付けて格納する。
図4は、ドロネー三角分割の流れを説明する図である。図4(A)は、配線パターンの一例を示している。図4(B)は、図4(A)に示す配線パターンに対し生成されるボロノイ図(Voronoi diagram)を示している。図4(C)は、図4(A)に示す配線パターンもしくは図4(B)に示すボロノイ図に対し生成されるドロネー図(Delaunay diagram)である。なお、図4において、ドットのパターン部分は、配線部分を示している。
グラフ生成部51は、図4(A)に示すレイアウトパターンの配線部分の頂点座標を求め、求められた頂点座標から図4(B)に示すボロノイ図を生成する。ボロノイ図は、平面または空間上の点集合の各点について、どの点に最も近いかによって分割して生成される図である。そして、グラフ生成部51は、図4(B)に示すボロノイ図から、隣接する領域の母点(generatrix)同士を結ぶことにより、図4(C)に示すドロネー図を生成する。このドロネー図は、各図形間の相対位置関係を表現する。レイアウトパターンやドロネー三角形は、頂点であるノードとノード間をつなぐエッジにより構成されるため一種のグラフととらえることができる。
ラベル生成部52は、既知パターンに含まれるノード毎に、自ノードの属性情報および自ノードに隣接する隣接ノードとの属性情報である隣接情報とに基づいたラベルを生成する。図1に示すように、ラベル生成部52は、自ノード部52aと隣接ノード部52bとを有する。ここで、属性情報とは、図3Aに示した頂点種別、パターン中心からの距離、隣接ノード数および隣接ノード間最短距離である。
まず、自ノード部52aによる処理について説明する。自ノード部52aは、既知パターンに含まれるノード毎に、自ノードの属性情報に基づく基盤となるラベルを生成する。具体的には、自ノード部52aは、既知パターンから生成されたドロネー三角形のノード毎に、自ノードの属性情報を所定長のビット列表現したラベルを生成する。例えば、自ノード部52aは、ビットデータ41を参照し、記憶されているドロネー三角形D1,・・・,Dnそれぞれについてノード毎に、自ノードの属性情報を所定長のビット列で表現したラベルを生成する。そして、自ノード部52aは、生成したノードラベルの情報(ビット列)を既知パターンデータ40として、既知パターンP1,・・・,Pnに対応付けて格納する。
図5は、属性情報に基づくノードラベルの生成方法を説明する図である。図5に示すように、ノードAをラベル生成の対象である自ノードとして説明する。まず、自ノード部52aは、ノードAの属性情報として頂点種別を特定する。例えば、ノードAは、凹頂点であるとともに、ビア上に存在するためビア頂点でもあるため、自ノード部52aは、ノードAの頂点種別を「凹頂点+ビア頂点」と特定する。そして、自ノード部52aは、ビットデータ41を参照し、特定した頂点種別に対応するビット列を取得する。例えば、自ノード部52aは、図3Aに示すビットデータ41のD1より、「凹頂点+ビア頂点」に対応するビット列「100」を取得する。なお、このような頂点種別に基づくビット列要素をl1とする。
また、自ノード部52aは、属性情報としてパターン中心から自ノードまでの距離を求める。距離は、各ノードの座標から求めることができる。例えば、自ノード部52aは、ノードAはパターン中心からの距離「30」に位置すると算出したとする。そして、自ノード部52aは、ビットデータ41を参照し、算出したパターン中心からの距離に対応するビット列を取得する。例えば、自ノード部52aは、図3Aに示すビットデータ41のD2より、パターン中心からの距離「30」に対応するビット列「000」を取得する。なお、このようなパターン中心からの距離に基づくビット列要素をl2とする。
また、自ノード部52aは、属性情報として自ノードに対する隣接ノード数を求める。図5の例では、自ノード部52aは、ノードAに対する隣接ノード数「7」を算出する。そして、自ノード部52aは、ビットデータ41を参照し、算出した隣接ノード数に対応するビット列を取得する。例えば、自ノード部52aは、図3Aに示すビットデータ41のD3より、隣接ノード数「7」に対応するビット列「111」を取得したとする。なお、このような隣接ノード数に基づくビット列要素をl3とする。
また、自ノード部52aは、属性情報として自ノードとの距離が最短である隣接ノードとの距離である隣接ノード間最短距離を求める。図5の例では、ノードAに対する隣接ノードのうち、ノードAとの距離が最短であるノードはパターン中心である。すなわち、自ノード部52aは、ノードAおよび各隣接ノードの座標に基づいて、隣接ノード間最短距離がパターン中心との距離「30」と算出する。そして、自ノード部52aは、ビットデータ41を参照し、算出した隣接ノード間最短距離に対応するビット列を取得する。例えば、自ノード部52aは、図3Aに示すビットデータ41のD4より、隣接ノード間最短距離「30」に対応するビット列「000」を取得する。なお、このような隣接ノード間最短距離に基づくビット列要素をl4とする。
ここで、自ノード部52aは、各ビット列要素l1〜l4を用いてノードラベルを生成する。具体的には、自ノード部52aは、各要素を順に結合することにより、ノードラベル「100000111000」を生成する。このようにして、自ノード部52aは、長さ12(12ビット)のビット列を生成する。なお、自ノード部52aによって生成されるビット列は、12ビットである必要はなく、例えば、16ビット等でもよい。つまり、ビット列を構成する要素が上記のように4つである必要はない。例えば、図3Aに示すビットデータ41として、データD1〜D4だけでなく、さらに多くの属性情報に関するテーブルを登録しておいてもよい。例えば、パターン中心に対する自ノードの方向(パターン中心からの方向)にビット列を対応付けたテーブルが登録されてもよい。これにより、ラベル生成部は、かかる属性情報に対応した要素分さらに長いビット列をノードラベルとして生成する。また、自ノード部52aは、このようなラベル生成処理を、記憶されている既知パターン集合それぞれの全てのノードについて行う。
次に、隣接ノード部52bによる処理について説明する。隣接ノード部52bは、自ノード部52aにより自ノードの属性情報に基づき生成されたノードラベル毎に、さらに隣接情報を付与する。隣接情報とは、自ノードに隣接する隣接ノードとの属性情報が表現された所定長のビット列である。具体的には、隣接ノード部52bは、自ノードの属性情報が表現された所定長のビット列と、隣接ノードとの属性情報が表現された所定長のビット列とを重なりなく結合することにより、属性情報に基づく基盤ラベルにさらに隣接情報を付与したノードラベルを生成する。この点について、図6Aおよび6Bを用いて説明する。
図6Aは、自ノードと隣接ノードとの接続関係を示す図である。また、図6Bは、自ノードラベルに隣接情報を付与する方法を説明する図である。図6Aに示すグラフG1は、既知パターンPnから生成されたドロネー三角形に基づくグラフであるとする。自ノードをv0として、v0における属性情報に基づき生成されたノードラベルに隣接情報を付与する例について以下で説明する。
図6Aより、自ノードv0と隣接する隣接ノードは、ノードv1、v2、v3およびv4である。ここで、図6BのF1に着目すると、自ノードv0と隣接するノードのラベルである隣接ノードラベルL(v1)〜L(v4)の長さは「r」として示されている。また、自ノードラベルL(v0)の長さは「p」として示されている。ノードの長さは、ビット数を示すが、ここでは概念的な記号で示すことにする。隣接ノード部52bは、自ノードラベルと隣接ノードラベルとの排他的論理和(XOR)により、近接ハッシュラベルを求める。算出された近接ハッシュラベルは、自ノードラベルを左詰めとして隣接ノードラベルが重なりなく付与されるため、その長さは「r+p」で示される。しかし、単に、自ノードラベルと隣接ノードラベルとをXORしてもこのような重なりのない構造のビット列のラベル(以下の実施例では、「ビットラベル」と表記する場合がある)は得られない。そこで、図6BのF2を用いて、隣接ノード部52bによるさらに具体的な処理を示す。
まず、隣接ノード部52bは、隣接ノードラベルL(v1)〜L(v4)全てをXORしたビットラベルである隣接ノードハッシュラベルNを算出する(ステップS1)。また、隣接ノード部52bは、自ノードラベルL(v0)を左詰めしたビットラベルL(v0)’を算出する(ステップS2)。左詰めするとは、HTMLタグとして「LEFTALIGN」を入力することに相当する。例えば、隣接ノード部52bは、4ビットのビット列「1000」で示される自ノードラベルL(v0)を、7ビットのビット列に左詰めしたビットラベルとして算出する場合には、7ビットのビット列「0000000」を用いて、かかるビット列に対し「1000」を左詰めした「1000000」を、ビットラベルL(v0)’として算出することになる。
次に、隣接ノード部52bは、隣接ノードハッシュラベルNと左詰めしたビットラベルL(v0)’とのXORを算出する(ステップS3)。これにより、隣接ノード部52bは、自ノードラベルL(v0)において隣接情報をハッシュして付与したラベルである隣接情報考慮ハッシュラベルN(v0)を算出する。そして、このような処理は、下記の(1)式によって示される。
N(v0)=XOR(XOR(L(v1),L(v2),L(v3),L(v4)),LEFTALIGNL(v0)) (1)
そして、隣接ノード部52bは、隣接情報を付与したラベル情報を既知パターンデータ40として、既知パターンPnに対応付けて格納する。また、隣接ノード部52bは、このような隣接情報付与処理を、記憶されている既知パターン集合それぞれの全てのノードラベルについて行う。なお、隣接ノード部52bにより隣接情報が付与されたノードラベルを有するドロネー三角形を、以下の実施例では、「隣接情報考慮ラベル付ドロネー三角形」と表記する場合がある。例えば、既知パターンPnに対応した隣接情報考慮ラベル付ドロネー三角形は、隣接情報考慮ラベル付ドロネー三角形DLnと表記できる。そして、隣接ノード部52bは、このような隣接情報付与処理を、記憶されている既知パターン集合それぞれの全てのノードラベルについて行う。
このように、隣接ノード部52bは、自ノードに対して隣接する全ての隣接ノードのラベルをXORする。そして、隣接ノード部52bは、かかるXORによって得られたビットラベル(隣接ノードハッシュラベル)と、自ノードラベルを左詰めした新たなビットラベルとをXORすることにより、自ノードラベルにおける隣接情報考慮ハッシュラベルを算出する。すなわち、隣接ノード部52bは、自ノードラベルを示すビット列に対し、隣接ノードラベルのハッシュ値であるビット列を隣接情報として付与する。これにより、隣接ノード部52bは、ビットラベルが一致することによるハッシュ衝突を回避することができるので、例えば、後述する類似度算出等に基づくレイアウト検証の精度を向上させることができる。
なお、隣接ノード部52bは、隣接情報を付与した自ノードのラベルに対し、さらにかかる自ノードの近傍に位置するノードのラベル情報である近傍ノードラベルを付与してもよい。例えば、図6Aの例では、自ノードv0に対しノードv5、v6、v7およびv8は、隣接していないが近傍に存在している近傍ノードといえる。隣接ノード部52bは、上記のように算出した隣接情報考慮ハッシュラベルN(v0)に対し、さらに近傍ノードラベルL(v5)〜L(v8)をXORしたハッシュ値を近傍情報として付与してもよい。
そして、隣接ノード部52bは、かかる処理を所定回数繰り返してよい。例えば、自ノードv0からエッジを1ステップ進めたノードが隣接ノードv1〜v4である。また、自ノードv0から隣接ノードv1〜v4を経由してエッジを2ステップ進めたノードが近傍ノードv5〜v8である。例えば、レイアウト検証装置10に繰り返し回数「1」が設定されている場合、隣接ノード部52bは、自ノードv0からエッジを1ステップ進めたノードである隣接ノードv1〜v4に基づく隣接情報を、自ノードラベルL(v0)に付与した隣接情報考慮ハッシュラベルN(v0)を算出する。また、レイアウト検証装置10に繰り返し回数「2」が設定されている場合、隣接ノード部52bは、まず、自ノードラベルL(v0)に隣接情報を付与した隣接情報考慮ハッシュラベルN(v0)を算出する。次に、隣接ノード部52bは、自ノードv0からエッジを2ステップ進めたノードである近傍ノードのラベルL(v5)〜L(v8)をXORしたハッシュ値を近傍情報として、隣接情報考慮ハッシュラベルN(v0)とのXORにより付与する。
次に、隣接ノード部52bの隣接情報付与処理について具体的な値を用いて説明する。図7は、2つのグラフにおけるノードラベルを比較する図である。そして、各グラフのノードには、自ノード部52aにより、例えば、4ビットのビット列で表現された属性情報に基づくノードラベルが生成されているものとする。上記では、自ノード部52aは、12ビットのビットラベルを生成する例を示したが、ここでは説明を簡単にするために4ビットのビットラベルとする。
ここで、隣接ノード部52bによる処理後のノードラベルは、7ビットで表現されるものとする。7ビットのうち4ビットは自ノードラベルに対応するため、残り3ビットが隣接ノードラベルに基づく隣接情報に対応する。なお、隣接ノード部52bによる処理後のノードラベルを何ビットとするかは、予めレイアウト検証装置10に対して任意の値が設定されるものであってよい。例えば、隣接ノード部52bによる処理前のノードラベルが12ビットで表現されているなら、処理後を16ビットとしてもよいし、24ビットとしてもよい。
図7のグラフG2を用いて、隣接ノード部52bによって自ノードv0のノードラベルL(v0)に隣接情報が付与される例について説明する。上記のように、隣接ノード部52bによる処理後のノードラベル、すなわち、隣接情報配慮ハッシュラベルN(v0)は、7ビットで表現され、そのうち左4ビットは、自ノードラベルL(v0)に対応し、残り3ビットは、隣接ノードラベルL(v1)とL(v2)とをXORしたハッシュ値Nに対応するものとする。
具体的には、隣接ノード部52bは、まず、隣接ノードラベルL(v1)とL(v2)とから上位3ビットを取得する。すなわち、隣接ノード部52bは、ノードラベルL(v1)の上位3ビット「111」およびノードラベルL(v2)の上位3ビット「110」を取得する。そして、隣接ノード部52bは、これらをXORした値であるハッシュ値「001」を算出する。
次に、隣接ノード部52bは、自ノードラベルL(v0)を7ビットのビット列に対し左詰めしたノードラベルL(v0)’を算出する。具体的には、隣接ノード部52bは、ノードラベルL(v0)を示すビット列「1000」を用いて、かかる4ビットのビット列を7ビットのビット列に対し左詰めしたノードラベルL(v0)’である「1000000」を算出する。
そして、隣接ノード部52bは、隣接ノードラベルのハッシュ値Nと左詰めしたノードラベルL(v0)’とのXORにより、自ノードラベルv0の隣接情報考慮ハッシュラベルN(v0)を算出する。具体的には、隣接ノード部52bは、「001」と「1000000」とのXORにより、自ノードラベルv0における隣接情報考慮ハッシュラベル「1000001」を算出する。このような7ビットのビット列は、隣接ノード部52bにより、左4ビットを自ノードv0のビットラベル「1000」に対して、隣接ノードv1とv2に基づくハッシュ値「001」を隣接情報として付与したものとして算出される。なお、グラフG3においても同様の処理により、例えば、自ノードv3における隣接ハッシュラベル「0001000」が算出される。
ここで、グラフG2とG3を比較した場合、一見同形であるが、属性情報および隣接情報に基づくビット列で表現されたノードラベルを比較すると異なる場合がある。つまり、グラフG2とG3では、ノードv0とノードv3とが対応することが考えられるが、隣接情報考慮ハッシュラベル値で比較すると、その値は異なりハッシュ衝突しない。このことを利用して、レイアウト検証装置10は、2つのグラフの類似度を精度よく算出することにつなげることができる。
ここで、隣接情報の付与に関するスケーラビリティについて説明する。例えば、既知手法として、あるノードに対する近傍ハッシュを求めるために、d個の近接ノードを扱い、d+1個のビットラベルに対してXORを適応するものがある。ここで、近傍ハッシュの長さをpとすると、その長さpの近傍ハッシュは、ノード次数dに線形の時間で計算が可能である(O(pd))。一方、本実施例1では、図6Bに示したように、長さpのラベルに対し長さrの隣接情報を付与するため、隣接ノード部52bにより隣接情報が付与されたノードラベルの長さは、p+r≦2pとなる。すなわち、実施例1に係るレイアウト検証装置10では、隣接情報の付与に関する計算量は、O((p+r)d)≦O(2pd)=2×O(pd)となり、既知手法の2倍以内の計算時間に収めることができるうえに、上記のように検証精度も向上させることができる。また、実施例1に係るレイアウト検証装置10でも、ノード次数dに線形の時間で計算が可能である。
図1に戻り、算出部53は、所定の2つのレイアウトパターンの類似度を算出する。具体的には、算出部53は、既知パターン集合における2つのパターンの組合せであって、成立する全ての組合せにおける類似度を算出する。例えば、算出部53は、既知パターン集合P1,・・・,Pnに対応する隣接情報考慮ラベル付ドロネー三角形D1,・・・,Dnに基づくグラフにおいて、2つのグラフの組合せであって、成立する全ての組合せにおける類似度を算出する。なお、算出部53は、既知パターンデータ40からノードラベル情報を取得し、各組合せの類似度を算出し、算出した類似度を類似度データ42としてその組み合わせに対応付けて格納する。
図8は、2つのグラフの類似度算出方法を説明する図である。グラフG4およびG5は、所定の2つの既知パターンからそれぞれ生成されたドロネー三角形に基づくグラフである。
算出部53は、グラフ毎に各ノードのラベルでソートしたノードリストを生成し、生成したノードリストを用いて、2つのグラフにおいてどれだけのノードラベルが一致しているかを示すマッチング値kを算出する。また、算出部53は、算出結果である類似度を類似度データ42として格納する。
なお、算出部53は、ノードラベルの一致の判定基準をチューニング可能とする。具体的には、算出部53は、ノードリストにおいて対応するノードラベルの完全な一致に基づくマッチング値kの算出と、ノードリストにおいて対応するノードラベルの上位所定数一致に基づくマッチング値kの算出とを切り替えて行うことができる。
算出部53は、ノードリストにおいて対応するノードラベルの完全な一致に基づくマッチング値kを算出する場合、下記の(2)式を用いて算出する。cは、一致したラベルの数を示す。n1およびn2は各ノードリストの長さを示す。
k=c/(n1+n2−c) (2)
また、算出部53は、ノードリストにおいて対応するノードラベルの上位所定数一致に基づくマッチング値kを算出する場合、下記の(3)式を用いて算出する。size(n1,n2)は、比較するグラフのノード数の最小値、最大値、平均値等である。
k=c/size(n1,n2) (3)
ここで、算出部53の具体的な処理について説明する。例えば、グラフG4およびG5は、図8に示すような隣接情報が付与されたノードラベルを有するとする。ここでは、説明を簡単にするために、かかるノードラベルを4ビットのビットラベルとする。
算出部53は、基数ソートを用いて、グラフG4およびG5それぞれに対応するノードリストL4およびL5を生成する。算出部53によって生成されたノードリストL4およびL5を図8にさらに示す。図8の例では、ノードリストL4およびL5において、同番号のノードラベルが対応していることを示す。
以下では、まず、算出部53による対応するノードラベルの完全な一致に基づくマッチング値kの算出処理について説明する。算出部53は、生成したノードリストL4およびL5を参照し、対応するノードラベル同士が完全に一致しているか否かを判定する。そして、算出部53は、対応するノードラベル同士が完全に一致している場合には、カウンターcを「1」増やす。また、算出部53は、対応するノードラベル同士が一致していない場合には、カウンターcを増やさない。そして、算出部53は、最終的に求めたカウンターcの値を用いてマッチング値を算出する。
具体的には、算出部53は、まず、ノードリストL4およびL5の1番目のノードラベルを比較する。算出部53は、ノードラベル「0001」で完全一致していると判定し、カウンターcを1増やしてカウンターc「1」とする。次に、算出部53は、2番目のノードラベルを比較する。算出部53は、ノードラベル「0010」で完全一致していると判定し、カウンターcをさらに1増やしてカウンターc「2」とする。次に、算出部53は、3番目のノードラベルを比較する。算出部53は、ノードラベル「0100」と「0101」は一致していないと判定し、カウンターcを増やさずカウンターc「2」のままとする。算出部53は、このような操作を、最後(6番目)まで繰り返す。そして、算出部53は、1、2、4番目のノードラベルが完全一致していることから、最終的に、カウンターc「3」を取得する。
そして、算出部53は、(2)式を用いてマッチング値kを算出する。図8の例では、c=3、n1=6、n2=6となることから、算出部53は、k=3/(6+6−3)より、マッチング値k「0.33」を算出する。すなわち、算出部53は、グラフG4に対応するレイアウトパターンとグラフG5に対応するレイアウトパターンとの類似度「0.33」を得ることになる。なお、かかる2つのレイアウトパターンが同一である場合、c=n1=n2となることから、算出部53は、k=6/(6+6−6)より、マッチング値k「1」となることから、類似度「1」を得る。
次に、算出部53による対応するノードラベルの上位所定数一致に基づくマッチング値kの算出について説明する。ここでは、算出部53は、上位3ビットの一致を判定するものとする。算出部53は、生成したノードリストL4およびL5を参照し、対応するノードラベルの上位3ビットが一致しているか否かを判定する。そして、算出部53は、対応するノードラベルの上位3ビットが一致している場合には、カウンターcを「1」増やす。また、算出部53は、対応するノードラベルの上位3ビットが一致していない場合には、カウンターcを増やさない。そして、算出部53は、最終的に求めたカウンターcの値を用いてマッチング値kを算出する。
具体的には、算出部53は、まず、ノードリストL4およびL5の1番目のノードラベルを比較する。算出部53は、ノードラベル「0001」と「0001」との上位3ビットが「000」で一致していると判定し、カウンターcを1増やしてカウンターc「1」とする。次に、算出部53は、2番目のノードラベルを比較する。算出部53は、ノードラベル「0010」と「0010」との上位3ビットが「001」で一致していると判定し、カウンターcをさらに1増やしてカウンターc「2」とする。次に、算出部53は、3番目のノードラベルを比較する。算出部53は、ノードラベル「0100」と「0101」との上位3ビットが「010」で一致していると判定し、カウンターcをさらに1増やしてカウンターc「3」とする。算出部53は、このような操作を、最後(6番目)まで繰り返す。そして、算出部53は、1、2、3、4番目のノードラベルにおいて上位3ビットが一致していることから、最終的に、カウンター「4」を取得する。
そして、算出部53は、(3)式を用いてマッチング値kを算出する。図8の例では、c=4、また、比較するグラフG4およびG5のノード数の最小値を用いるとすると、size(n1,n2)=min(n1,n2)=6となる。このため、算出部53は、k=4/6より、マッチング値k「0.66」を算出する。すなわち、算出部53は、グラフG4に対応するレイアウトパターンとグラフG5に対応するレイアウトパターンとの類似度「0.66」を得る。
なお、図8の例では、グラフG4およびG5においてノード数が同じであるため、マッチング値kの算出に用いるノード数の最小値および最大値はいずれも「6」となる。しかし、算出部53は、例えば、グラフG4のノード数「10」、グラフG5のノード数「5」である場合は、size(n1,n2)=max(n1,n2)=10、または、size(n1,n2)=min(n1,n2)=5を用いることになる。
図1に戻り、識別モデル生成部54は、欠陥の有無が未知のレイアウトパターンにおいて欠陥を検証する識別モデルを生成する。例えば、識別モデル生成部54は、既知パターン集合P1,・・・,Pnに対応する隣接情報考慮ラベル付ドロネー三角形D1,・・・,DLnにおいて、各ドロネー三角形とかかる既知パターンそれぞれの欠陥有無情報との組み合わせに基づく学習データセットT={(DLi,ei),i=1,・・・,n}を生成する。また、識別モデル生成部54は、隣接情報考慮ラベル付ドロネー三角形DL1,・・・,DLnの類似度に基づく全部分カーネル行列Kを生成する。例えば、識別モデル生成部54は、隣接情報考慮ラベル付ドロネー三角形集合DL1,・・・,DLnの各組合せの類似度計算によってカーネル行列Kの各要素Kij=K(DLi,DLj)を計算する。
K(DLi,DLj)は、既知パターン集合P1,・・・,Pnのうち、既知パターンPiとPj(i≠j)との類似度に基づくカーネル行列を示す。そして、識別モデル生成部54は、学習データセットTとカーネル行列Kijから、下記の(4)式によって示される識別モデルf(DL)を生成する。αiは、各演算式の重み係数であり、βは、識別モデルと学習データセットTのフィッティング係数である。
識別モデル生成部54は、αiをパラメータとし、例えば、最小二乗法、サポートベクタ回帰といった既知の回帰分析手法を用いた機械学習によりフィッティングを行い、f(DL)に近い値が得られる重み係数αiの値を求める。このようにして、識別モデル生成装置50は、求めた重み係数αiの値を代入した(4)式を識別モデルとして生成する。そして、識別モデル生成部54は、例えば、重み係数αiの値と、フィッティング係数βの値とを対応付けたものを、識別モデル情報43として格納する。
次に、本実施例1に係る識別モデル生成装置20が実行する処理の流れを図9を参照しながら説明する。図9は、識別モデル生成に関する全体的な処理の流れを示したフローチャートである。
受付部50は、既知パターン集合P1,・・・,Pnに関するデータおよび各既知パターンにおける欠陥有無情報の入力を受け付けたか否かを判定する(S101)。既知パターン集合P1,・・・,Pnに関するデータとは、各既知パターンPiを構成する矩形や多角形の集合Pi:{P1,P2,・・・,Pk,PN}や、例えば、各多角形Pkの頂点座標(xkn,ykn)やその多角形が存在する配線層の識別情報Lkである。また、既知パターンP1,・・・,Pnのそれぞれに対応する欠陥有無情報e1,・・・,enである。
受付部50は、各種情報を受け付けたと判定した場合には(S101;Yes)、受け付けた情報を既知パターンデータ40として格納するとともに、グラフ生成部51へと処理を移行する。一方、受付部50は、既知パターン集合P1,・・・,Pnに関するデータを受け付けていないと判定した場合には(S101;No)、受け付けるまで待機する。
グラフ生成部51は、既知パターン集合P1,・・・,Pnに対応するドロネー三角形D1,・・・,Dnを生成する(S102)。具体的には、グラフ生成部51は、既知パターン集合P1,・・・,Pnそれぞれにおいて、各既知パターンを構成する図形の頂点を結んでドロネー三角分割を行い、図形の頂点を結んで得られる複数の三角形を求める。また、グラフ生成部51は、生成したドロネー三角形D1,・・・,Dnそれぞれにおける座標等の各種情報を、既知パターンデータ40として既知パターン集合P1,・・・,Pnそれぞれに対応付けて格納するとともに、ラベル生成部52へ処理を移行する。
ラベル生成部52は、既知パターンに含まれるノード毎に、自ノードの属性情報および自ノードに隣接する隣接ノードとの属性情報である隣接情報とに基づいたラベルを生成する。
まず、ラベル生成部52における自ノード部52aが、既知パターン集合P1,・・・,Pnから生成されたドロネー三角形D1,・・・,Dnそれぞれについてノード毎に、自ノードの属性情報を所定長のビット列で表現した基盤となるラベルを生成する(S103)。なお、自ノード部52aによるラベル生成処理は、S201〜S208で詳細に説明する。
自ノード部52aは、自ノードの属性情報に基づくラベルを生成した各ドロネー三角形Di(Di=(V,E,l))の各ノードラベルlの値(ビット列)を、既知パターンデータ40として既知パターン集合P1,・・・,Pnそれぞれに対応付けて格納する。そして、自ノード部52aは、隣接ノード部52bへ処理を移行する。
次に、ラベル生成部52における隣接ノード部52bは、ドロネー三角形D1,・・・,Dnそれぞれについて、自ノード部52aにより自ノードの属性情報に基づき生成されたノードラベル毎に、さらに隣接情報を付与する(S104)。隣接情報とは、自ノードに隣接する隣接ノードとの属性情報が表現された所定長のビット列である。具体的には、隣接ノード部52bは、自ノードの属性情報が表現された所定長のビット列と、隣接ノードとの属性情報が表現された所定長のビット列とを重なりなく結合することで、属性情報に基づく基盤ラベルにさらに隣接情報を付与したノードラベルを生成する。なお、隣接ノード部52bによる隣接情報付与処理は、S301〜S310で詳細に説明する。
隣接ノード部52bは、隣接情報を付与した各ドロネー三角形DLi{DLi=(V,E,l),i=1,・・・,n}の各ノードラベルlの値(ビット列)を、既知パターンデータ40として既知パターン集合P1,・・・,Pnそれぞれに対応付けて格納する。そして、隣接ノード部52bは、算出部53へ処理を移行する。
算出部53は、所定の2つのレイアウトパターンの類似度を算出する。具体的には、算出部53は、既知パターン集合P1,・・・,Pnにおける2つのパターンの組合せであって、成立する全ての組合せにおける類似度を算出する(S105)。そして、算出部53は、算出した類似度を類似度データ42として格納するとともに、識別モデル生成部54へ処理を移行する。なお、算出部53による類似度算出処理は、S401〜S405で詳細に説明する。
識別モデル生成部54は、未知パターンにおける欠陥を検証するための識別モデルを生成する(S106)。具体的には、識別モデル生成部54は、学習データセットTとカーネル行列Kとを用いて、(4)式に示す識別モデルを生成する。そして、識別モデル生成部54は、生成した識別モデルにおいて重み係数αiの値と、フィッティング係数βの値とを対応付けたものを識別モデル情報43として格納し、処理を終了する。
次に、ラベル生成部52によるラベル生成処理の詳細な流れについて説明する。上述したように、ラベル生成部52は、自ノード部52aと、隣接ノード部52bとによって構成され、これら各部の処理により、最終的には属性情報および隣接情報に基づくノードラベルを生成する。
自ノード部52aは、既知パターン集合P1,・・・,Pnから生成されたドロネー三角形D1,・・・,Dnそれぞれについてノード毎に、自ノードの属性情報を所定長のビット列表現した基盤となるラベルを生成する。図10は、自ノードの属性情報に基づくラベル生成の手順を示すフローチャートである。なお、ここでは、既知パターン集合のうちの一つである既知パターンP1に対応するドロネー三角形D1のノード毎に、ラベルを生成する例について説明する。しかし、ラベル生成部52は、実際は、既知パターンデータ40に格納されている全ての既知パターン(既知パターン集合P1,・・・,Pn)について同様の処理を行う。
まず、自ノード部52aは、既知パターンデータ40からドロネー三角形D1の情報を取得し、ノードのインデックスi=1と設定する(S201)(ノードv1を自ノードとして処理を行うための命令)。そして、自ノード部52aは、ラベル生成対象である自ノードviの頂点種別を特定し、特定した頂点種別に対応するビット列要素(l1)をビットデータ41から取得する(S202)。
次に、自ノード部52aは、ノードviのパターン中心からの距離を求め、求めた距離に対応するビット列要素(l2)をビットデータ41から取得する(S203)。また、自ノード部52aは、ノードviに対する隣接ノード数を求め、求めた数に対応するビット列要素(l3)をビットデータ41から取得する(S204)。また、自ノード部52aは、ノードviとの距離が最短である隣接ノードとの距離である隣接ノード間最短距離を求め、求めた数に対応するビット列要素(l4)をビットデータ41から取得する(S205)。そして、自ノード部52aは、ビット列要素l1〜l4を順に結合することにより、ノードviの属性情報に基づくノードラベルlviを生成する(S206)。このようなノードラベルは、隣接情報を付与するうえでの基盤となるラベルである。
ドロネー三角形D1がn個のノードを有しているとすると、自ノード部52aは、かかるn個のノード全てにS202〜206の処理を行ったか否かを判定する。つまり、自ノード部52aは、i=nであるか否かを判定する(S207)。自ノード部52aは、i=nである場合には(S207;Yes)、S202〜206の処理を終了し、自ノードの属性情報に基づくラベルが生成されたドロネー三角形D1(D1=V,E,l)を得る。そして、自ノード部52aは、生成したノードラベルの値を既知パターンデータ40として、既知パターンP1に対応付けて格納するとともに、隣接ノード部52bの処理S301へ移行する(S208)。一方、自ノード部52aは、i=nでない場合には(S207;No)、i=i+1としてS202〜206の処理を繰り返す(S209)。すなわち、自ノード部52aは、i=nを満たすまでS202〜206の処理を繰り返すことになる。なお、自ノード部52aによる自ノードの属性情報に基づくラベル生成処理は、必ずしもS202〜206の順で行われる必要はなく、これらの順は、任意の順で行われてよい。
上述したように、ここでは、既知パターン集合のうち、一つの既知パターンP1に対応するドロネー三角形D1のノード毎に、ラベルを生成する例について説明した。しかし、記憶されている全ての既知パターンに対応するドロネー三角形について、このようなラベル生成処理が行われる必要がある。そこで、自ノード部52aは、一つの既知パターンの全てのノードに、自ノードの属性情報に基づくラベル生成処理を行った時点で、次の既知パターンを取得し、その全てのノードに自ノードの属性情報に基づくラベル生成処理を行うことを繰り返すよう設定されてよい。これにより、自ノード部52aは、既知パターン集合P1,・・・,Pnそれぞれについて、全てのノードに自ノードの属性情報に基づくラベルを生成する。
次に、隣接ノード部52bによる隣接情報付与処理の詳細な流れについて説明する。隣接ノード部52bは、既知パターン集合P1,・・・,Pnから生成されたドロネー三角形D1,・・・,Dnそれぞれについて、自ノード部52aにより自ノードの属性情報に基づき生成されたノードラベル毎に、さらに隣接情報を付与する。具体的には、隣接ノード部52bは、自ノードの属性情報が表現された所定長のビット列と、隣接ノードとの属性情報が表現された所定長のビット列とを重なりなく結合することで、属性情報に基づく基盤ラベルにさらに隣接情報を付与したノードラベルを生成する。図11は、隣接情報付与の手順を示すフローチャートである。なお、ここでも、既知パターン集合のうちの一つである既知パターンP1に対応するドロネー三角形D1のノード毎に、隣接情報を付与する例について説明する。
まず、隣接ノード部52bは、既知パターンデータ40からドロネー三角形D1の情報を取得し、ノードのインデックスi=1と設定する(S301)(ノードv1を自ノードとして処理を行うための命令)。また、隣接ノード部52bは、繰り返し数itr=1と設定する(S302)。繰り返し数とは、上述したように、隣接情報付与対象の自ノードviに対し、エッジ何ステップ先のノードまでの情報を考慮するために処理を繰り返すかを示すものである。例えば、itr=1の場合には、隣接ノード部52bは、ノードviのラベルに、ノードviの隣接ノードに関する隣接情報を付与する。また、itr=2の場合には、隣接ノード部52bは、隣接情報を付与したノードviのラベルにさらに、ノードviから2ステップ先の近傍ノードに関する近傍情報を付与するために処理を繰り返す。なお、繰り返し数は、レイアウト検証装置10に予め設定されてよい。
そして、隣接ノード部52bは、ノードviの隣接ノードvil,・・・,vimのラベルlil,・・・,limについて、隣接情報を付与するために必要な部分ビット列bil,・・・,bimを取り出す(S303)。なお、上位何ビット取り出すかは、レイアウト検証装置10に対し予め任意の値が設定されてよい。次に、隣接ノード部52bは、取り出した部分ビット列bil,・・・,bimのXORにより、隣接ノードハッシュラベルNiを算出する(S304)。このような、隣接ノードハッシュラベルNiがノードviの隣接情報ということになる。
次に、隣接ノード部52bは、ノードviのノードラベルlviを左詰めしたラベルlvi’を算出する(S305)。例えば、ノードラベルlviが12ビットのビットラベルであるとし、付与処理後のノードラベルを16ビットのビットラベルで表現するようレイアウト検証装置10に予め設定されているとする。この場合、隣接ノード部52bは、16ビットのビットラベルに対して、12ビットのノードラベルlviを左詰したノードラベルlvi’を算出する。
そして、隣接ノード部52bは、隣接ノードハッシュラベルNiとノードラベルlvi’とのXORにより、ノードラベルlviに隣接情報を付与したラベルである隣接情報考慮ハッシュラベルlvi_newを算出する(S306)。
ここで、隣接ノード部52bは、設定されている繰り返し数itr=Rを満たしているか否かを判定する(S307)。隣接ノード部52bは、繰り返し数itr=Rが満たされていないと判定した場合(S307;No)は、itr=itr+1としてS303〜306の処理を繰り返す(S308)。すなわち、隣接ノード部52bは、ノードviからエッジ2ステップ進めたところに存在する各ノードを隣接ノードと見なし(実際は、近傍ノード)、S303〜306の処理を繰り返す。そして、隣接ノード部52bは、itr=Rを満たすまでかかる処理を繰り返すことになる。
一方、隣接ノード部52bは、繰り返し数itr=Rが満たされていると判定した場合(S307;Yes)、ドロネー三角形D1が有するn個のノード全てに隣接情報を付与したか否かを判定する。つまり、隣接ノード部52bは、i=nであるか否かを判定する(S309)。隣接ノード部52bは、i=nでないと判定した場合には(S309;No)、i=i+1としてS303〜306の処理を繰り返す(S310)。すなわち、隣接ノード部52bは、i=nを満たすまでS303〜306の処理を繰り返すことになる。
一方、隣接ノード部52bは、i=nである場合には(S309;Yes)、S303〜306の処理を終了し、隣接情報考慮ラベル付ドロネー三角形DL1(DL1=V,E,l)を得る。そして、隣接ノード部52bは、隣接情報を付与したノードラベルの値を既知パターンデータ40として、既知パターンP1に対応付けて格納するとともに、算出部53の処理S401へ移行する(S311)。
なお、隣接ノード部52bは、自ノード部52aと同様に、一つの既知パターンの全てのノードラベルに、隣接情報付与処理を行った時点で、次の既知パターンを取得し、その全てのノードラベルに、隣接情報付与処理を行うことを繰り返すよう設定されてよい。これにより、隣接ノード部52bは、既知パターン集合P1,・・・,Pnそれぞれについて、全てのノードラベルに、隣接情報付与処理を行う。
次に、算出部53による類似度算出処理の詳細な流れについて説明する。算出部53は、所定の2つのレイアウトパターンの類似度を算出する。具体的には、算出部53は、記憶されている既知パターン集合(既知パターン集合P1,・・・,Pn)における2つのパターンの組合せであって、成立する全ての組合せにおける類似度を算出する。例えば、算出部53は、既知パターン集合P1,・・・,Pnに対応する隣接情報考慮ラベル付ドロネー三角形DL1,・・・,DLnに基づくグラフにおいて、2つのグラフの組合せであって、成立する全ての組合せにおける類似度を算出する。
ここでは、算出部53は、既知パターンP1に基づく隣接情報考慮ラベル付ドロネー三角形DL1と、既知パターンP2に基づく隣接情報考慮ラベル付ドロネー三角形DL2との類似度を算出する場合を例に挙げる。図12は、類似度算出の手順を示すフローチャートである。
まず、算出部53は、既知パターンデータ40から、隣接情報考慮ラベル付ドロネー三角形DL1と、隣接情報考慮ラベル付ドロネー三角形DL2とのノードラベル情報を取得する(S401)。
次に、算出部53は、各ドロネー三角形毎に、各ノードのラベルで基数ソートしたノードリストを生成する(S402)。そして、算出部53は、2つのノードリストにおいて対応するノードラベルが一致しているか否かを判定していくことにより(S403)、2つのドロネー三角形においてどれだけのノードラベルが一致しているかを示すマッチング値kを算出する(S404)。このとき、算出部53がノードリストにおいて対応するノードラベルが完全に一致しているか否かを判定する、または、ノードリストにおいて対応するノードラベルの上位所定数が一致しているか否かを判定するかは任意に設定されてよい。
続いて、算出部53は、かかるマッチング値kを既知パターンP1とP2との類似度として類似度データ42に格納するとともに、識別モデル生成部54の処理S106へ移行する(S405)。なお、ここでは、算出部53は、既知パターンP1とP2との類似度を算出する例について説明したが、上述したように、既知パターン集合P1,・・・,Pnにおいて成立する全ての組合せでの類似度を算出する。
(レイアウト検証部)
図1に戻り、レイアウト検証部60について説明する。レイアウト検証部60は、上述してきた識別モデル生成装置20により生成された既知パターンの類似度に基づく識別モデルを用いて、未知パターンにおける欠陥を検証する。例えば、レイアウト検証部60は、かかる識別モデルを用いて、未知パターンにおける欠陥の有無を識別する。以下では、レイアウト検証部60の欠陥検証に関する一連の処理について説明する。
なお、上述してきた識別モデル生成装置20は、既知パターンの集合を受け付け、各既知パターンに対応するドロネー三角形それぞれのノードにおいて、属性情報および隣接情報に基づくラベルを生成する。そして、識別モデル生成装置20は、生成したノードラベルを用いて算出した各既知パターン同士の類似度に基づいて識別モデルを生成する。これに対し、レイアウト検証部60は、検証対象である未知パターンを受け付け、受け付けた未知パターンに対応するドロネー三角形において、ノードの属性情報および隣接情報に基づくラベルを生成する。そして、レイアウト検証部60は、生成したノードラベルを用いて、既知パターンとの類似度算出や、欠陥の有無に関する検証を行う。このため、レイアウト検証部60の多くの部位は、識別モデル生成装置20の部位と同様の処理を行うと対応する。なお、同様の処理を行う部位についての詳細な説明は省略する。
レイアウト検証部60は、例えば、パーソナルコンピュータやサーバコンピュータ等のコンピュータなどである。レイアウト検証部60は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。なお、本実施例1では、レイアウト検証部60を1台のコンピュータとした場合を例として説明する。レイアウト検証部60は、CAD装置などの設計者による集積回路の設計を支援する回路設計ソフトウェアが動作する設計装置であってもよい。図1に示すように、レイアウト検証部60は、入力部70と、表示部71と、通信I/F(インタフェース)部72と、記憶部73と、制御部74とを有する。
入力部70は、各種の情報を入力する入力デバイスである。入力部70としては、マウスやキーボード等の操作の入力を受け付ける入力デバイスが挙げられる。入力部70は、各種の入力を受け付ける。例えば、入力部70は、未知パターンおける欠陥の有無判定に関する各種の入力を受け付ける。入力部70は、ユーザからの操作入力を受け付け、受け付けた操作内容を示す操作情報を制御部74に入力する。
表示部71は、各種情報を表示する表示デバイスである。表示部71としては、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)等の表示デバイスが挙げられる。表示部71は、各種情報を表示する。例えば、表示部71は、登録画面や、操作画面、検証結果画面など各種の画面を表示する。
通信I/F部72は、他の装置との間で通信制御を行うインタフェースである。通信I/F部72は、不図示のネットワークを介して他の装置と各種情報を送受信する。例えば、通信I/F部72としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部73は、ハードディスク、SSD、光ディスクなどの記憶装置である。なお、記憶部73は、RAM、フラッシュメモリ、NVSRAM等のデータを書き換え可能な半導体メモリであってもよい。
記憶部73は、制御部74で実行されるOS(Operating System)や各種プログラムを記憶する。例えば、記憶部73は、後述する欠陥の検証に用いる各種のプログラムを記憶する。さらに、記憶部73は、制御部74で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部73は、未知パターンデータ80と、ビットデータ81と、類似度データ82とを記憶する。
未知パターンデータ80は、例えば、一つの未知パターンPuに関する情報を記憶したデータである。未知パターンPuは、レイアウトパターンの検証対象として入力部70を介して入力される。未知パターンデータ80は、未知パターンPuを構成する矩形や多角形の頂点座標リストを含む。例えば、未知パターンPuを構成する矩形や多角形の集合を、Pu:{P1,P2,・・・,Pk,PN}と表すことができる。また、多角形Pkの頂点座標を、Pk={(xk1,yk1),・・・,(xkn,ykn),Lk}と表すことができる。Lkは、多角形Pkが存在する配線層を識別するための記号である。ここで、図2は、既知パターンデータ40に含まれる既知パターンの一例を示す図であるが、未知パターンにも対応するものである。
また、未知パターンデータ80には、グラフ生成部91により未知パターンPuから生成された配線層毎のドロネー三角形のグラフ情報も含まれる。さらに、未知パターンデータ80には、かかるグラフの各ノード毎に生成された、属性情報および隣接情報に基づくラベルも含まれる。
例えば、未知パターンPuから生成されたドロネー三角形Duにおいて、Du=(V,E)のように形式的に定義することができる。Vは、ノード集合であり、V:{v1,v2,・・・,vn,vi=(xi,yi)}と表すことができる。ここで、各ノードviは、座標(xi,yi)に位置することを示す。Eは、枝集合であり、E={e1,e2,・・・,em,ej=(vj1,vj2)}と表すことができる。つまり、各枝ejは、2つのノードvj1とvj2の間の無向枝であることを示す。
また、ドロネー三角形Duの各ノードに対して、当該ノードの属性情報に基づいてラベルが生成されたドロネー三角形Duは、Du=(V,E,l)のように形式的に定義することができる。VおよびEは、上記の通りである。lは、各ノードラベルを示し、l:{l1,l2,・・・,ln,li∈Σ,Σ={0,1}p}と表すことができる。つまり、ノードラベルlは、l1からln要素を含み、長さpのビット列で表現されることを示す。
また、ドロネー三角形Duの各ノードラベル対して、さらに隣接情報が付与された各ドロネー三角形DLuも、例えば、DLu=(V,E,l)のように形式的に定義することができる。VおよびEは、上記の通りである。各ノードラベルlは、l1からln要素を含み、さらに隣接情報が考慮されたためにビット数が増える。このときの、ビット列の長さをqとすると、l:{l1,l2,・・・,ln,li∈Σ,Σ={0,1}q}と表すことができる。すなわち、未知パターンデータ80は、ドロネー三角形DnおよびDLnに関する情報を記憶したデータである。
ビットデータ81は、自ノード部92aがノードそれぞれについて、自ノードの属性情報をビット列で表現したラベルを生成する際に用いるデータであり、属性情報毎に所定のビット列が対応付けられている。すなわち、ビットデータ81は、ラベル生成のためのルールを記憶したデータといえる。また、ビットデータ81は、識別モデル生成装置20のビットデータ41に対応し、データ内容は図3Aに示した通りである。
類似度データ82は、検証対象として入力された未知パターンと、既知パターンとの類似度をその組み合わせに対応付けて記憶したデータである。
欠陥情報83は、検証部94により検証された結果を記憶したデータである。例えば、欠陥情報83は、未知パターンにおける欠陥の有無に関する情報やその情報の信頼度といった検証結果を記憶したデータである。
制御部74は、レイアウト検証部60を制御するデバイスである。制御部74としては、CPU、MPU等の電子回路や、ASIC、FPGA等の集積回路を採用できる。制御部74は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部74は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部74は、受付部90と、グラフ生成部91と、ラベル生成部92と、算出部93と、検証部94と、提示部95とを有する。
受付部90は、各種の受付を行う。例えば、受付部90は、未知パターンデータ80として用いる未知パターンの入力を受け付ける。例えば、受付部90は、図示しない入力画面を表示させ、入力画面から未知パターンデータ80として用いる未知パターンの入力を受付ける。入力された未知パターンは、未知パターンデータ80として記憶される。
グラフ生成部91は、レイアウトパターンを構成する図形の頂点を結んでドロネー三角分割を配線層毎に行って、図形の頂点を結んで得られる複数の三角形を求める。すなわち、グラフ生成部91は、識別モデル生成装置20のグラフ生成部51と同様の処理を行う部位であるため詳細な説明は省略する。なお、グラフ生成部91は、例えば、未知パターンPuから生成したドロネー三角形Duに関する情報(座標等)を未知パターンデータ80として、未知パターンPuに対応付けて格納する。
ラベル生成部92は、未知パターンに含まれるノード毎に、自ノードの属性情報および自ノードに隣接する隣接ノードとの属性情報である隣接情報とに基づいたラベルを生成する。図1に示すように、ラベル生成部92は、自ノード部92aと隣接ノード部92bとを有する。
自ノード部92aは、未知パターンに含まれるノード毎に、自ノードの属性情報に基づく基盤となるラベルを生成する。具体的には、自ノード部92aは、未知パターンから生成されたドロネー三角形のノード毎に、自ノードの属性情報を所定長のビット列表現したラベルを生成する。例えば、自ノード部92aは、グラフ生成部91により未知パターンPuから生成されたドロネー三角形Duのノード毎に、自ノードの属性情報を所定長のビット列表現したラベルを生成する。そして、自ノード部92aは、生成したラベル情報を未知パターンデータ80として、未知パターンPuに対応付けて格納する。
また、隣接ノード部92bは、自ノード部92aにより自ノードの属性情報に基づき生成されたノードラベル毎に、さらに隣接情報を付与する。上述したように、隣接情報とは、自ノードに隣接する隣接ノードとの属性情報が表現された所定長のビット列である。具体的には、隣接ノード部92bは、自ノードの属性情報が表現された所定長のビット列と、隣接ノードとの属性情報が表現された所定長のビット列とを重なりなく結合することにより、属性情報に基づく基盤ラベルにさらに隣接情報を付与したノードラベルを生成する。例えば、隣接ノード部92bは、ドロネー三角形Duにおいて、自ノード部92aにより自ノードの属性情報に基づいて生成されたノードラベル毎に、当該ノードラベルと重ならないよう隣接情報を付与する。そして、隣接ノード部92bは、隣接情報を付与したラベル情報を未知パターンデータ80として、未知パターンPuに対応付けて格納する。
以上のことから、対象が未知パターンか既知パターンであるかの違いだけであり、ラベル生成部92における自ノード部92aおよび隣接ノード部92bは、識別モデル生成装置20の自ノード部52aおよび隣接ノード部52bと同様の処理を行う部位である。よって、詳細な説明は省略する。
算出部93は、所定の2つのレイアウトパターンの類似度を算出する。具体的には、算出部93は、未知パターンと、既知パターンデータ40に格納されている全ての既知パターンとの類似度を算出する。例えば、算出部93は、未知パターンPuと、既知パターン集合P1,・・・,Pnにおける全ての既知パターンとの類似度を算出する。つまり、算出部93は、既知パターンデータ40から一つの既知パターン(例えば、既知パターンP1)を取得し、未知パターンPuとの類似度を算出する。そして、算出部93は、未知パターンPuと既知パターンP1といった組み合わせに対応付けて、算出した類似度を類似度データ82として格納する。次に、算出部93は、既知パターンデータ40から別の一つの既知パターンを取得し、同様に未知パターンPuとの類似度を算出し、算出結果を格納する。算出部93は、このような処理を全ての組合せについて行う。
具体的な処理としては、算出部93は、例えば、未知パターンPuに対応するドロネー三角形Duと、既知パターンP1に対応するドロネー三角形Duにおいて、対応するノードラベルのマッチング値kを算出する。ここで、算出部53の説明で記載したように、算出部93は、対応するノードにおいて、そのビット列の完全一致を判定するか、あるいは、上位所定数一致を判定するかをチューニング可能にされる。そして、算出部93は、算出したマッチング値kを類似度として格納する。
以上のことから、未知パターンと既知パターンとの類似度を算出する、または、既知パターン同士の類似度を算出するかの違いだけであって、算出部93は、算出部53と同様の処理を行う部位である。よって、詳細な説明は省略する。
検証部94は、算出部93により算出された未知パターンと既知パターンとの各組合せの類似度と、識別モデル生成部54により生成された識別モデルとを用いて、未知パターンの欠陥の有無を検証する。また、検証部94は、検証結果の信頼度を算出する。
具体的には、検証部94は、上記の(4)式として示した識別モデルf(DL)に基づく下記の(5)式を解くことにより、例えば、隣接情報考慮ラベル付ドロネー三角形DLu、すなわち、未知パターンPuに対する欠陥の有無を判定する。
検証部94は、既知パターン集合P1,・・・,Pnに基づく隣接情報考慮ラベル付ドロネー三角形集合DL1,・・・,DLnと、未知パターンPuに基づく隣接情報考慮ラベル付ドロネー三角形集合DLuとの類似度に基づくカーネル行列K(DLi,DLu)を生成する。そして、検証部94は、生成したカーネル行列を(5)式に代入することで、(5)式の解を得る。
そして、検証部94は、f(DLu)≧0の場合は、欠陥ありと識別し、f(DLu)<0の場合は、欠陥なしと識別する。また、検証部94は、このような欠陥に関する情報の信頼度として|f(DLu)|を算出する。また、検証部94は、このような欠陥に関する情報やその情報の信頼度を欠陥情報83として、未知パターンPuに対応付けて格納する。
提示部95は、算出部93により算出された類似度に基づいて、既知パターンを未知パターンとの類似度が高い順に提示する。このとき、提示部95は、検証部94により求められた欠陥の有無に関する情報やその情報の信頼度も提示する。例えば、提示部95は、検証部94から未知パターンPuの検証終了を示す信号を受け付けた場合に、類似度データ82を参照し、未知パターンPuとの類似度の大きさに応じた順位付けを各既知パターンに対して行う。そして、提示部95は、例えば、各順位に既知パターン名と、パターンの図面と、類似度とを対応付け、表示部71を介して提示する。また、提示部95は、欠陥情報83から、未知パターンPuの欠陥の有無に関する情報やその情報の信頼度を取得し、表示部71を介して提示する。
ここで、図13に、表示部71により表示された画面の一例を示す。図13は、未知パターンの欠陥に関する情報と、既知パターンを未知パターンとの類似度の高い順に表示した画面の一例を示す図である。図13の例は、検証部94が未知パターン「U10022」は欠陥ありと識別し、その検証結果の信頼度を「0.97」と算出したことを示している。また、図13の例は、算出部93が未知パターン「U10022」と、既知パターン「P025」、「P002」、「P008」、「P027」それぞれとの類似度を、「0.99」、「0.98」、「0.97」、「0.58」と算出したことを示す。さらに、図13の例は、提示部95が、未知パターン「U10022」との類似度の大きさに応じた順位として、「P025:1位」、「P002:2位」、「P008:3位」、「P027:4位」といった順位付けを行ったことを示す。
なお、図13では、表示部71を介して順位1位〜4位までの既知パターンを提示する例を示しているが、この例に限らず、例えば、1〜10位までであってもよい。すなわち、どの順位まで提示するかは、提示部95に対し任意に設定されてよい。
次に、本実施例1に係るレイアウト検証部60が実行する処理の流れを図14を参照しながら説明する。ここでは、図14は、未知パターンPuにおける欠陥の検証に関する全体的な処理の流れを示したフローチャートである。なお、各部の詳細なフローについては、図10〜図12を用いて上記しているためここでは省略する。
受付部90は、未知パターンPuに関するデータ入力を受け付けたか否かを判定する(S501)。未知パターンPuに関するデータとは、未知パターンPuを構成する矩形や多角形の集合Pu:{P1,P2,・・・,Pk,PN}や、例えば、各多角形Pkの頂点座標(xkn,ykn)やその多角形が存在する配線層の識別情報Lk等である。
受付部90は、未知パターンPuに関するデータを受け付けたと判定した場合には(S501;Yes)、受け付けた情報を未知パターンデータ80として格納するとともに、グラフ生成部91へと処理を移行する。一方、受付部90は、未知パターンPuに関するデータを受け付けていないと判定した場合には(S501;No)、受け付けるまで待機する。
グラフ生成部91は、未知パターンPuに対するドロネー三角形Duを生成する(S502)。具体的には、グラフ生成部91は、未知パターンPuを構成する図形の頂点を結んでドロネー三角分割を行い、図形の頂点を結んで得られる複数の三角形を求める。また、グラフ生成部91は、生成したドロネー三角形Duにおける座標等の各種情報を、未知パターンデータ80として未知パターンPuに対応付けて格納するとともに、ラベル生成部92へ処理を移行する。
ラベル生成部92は、未知パターンに含まれるノード毎に、自ノードの属性情報および自ノードに隣接する隣接ノードとの属性情報である隣接情報とに基づいたラベルを生成する。
まず、ラベル生成部92における自ノード部92aが、未知パターンPuから生成されたドロネー三角形Duについてノード毎に、自ノードの属性情報を所定長のビット列で表現した基盤となるラベルを生成する(S503)。
自ノード部92aは、自ノードの属性情報に基づくラベルを生成したドロネー三角形Du(Du=(V,E,l))の各ノードラベルlの値(ビット列)を、未知パターンデータ80として未知パターンPuに対応付けて格納する。そして、自ノード部92aは、隣接ノード部92bへ処理を移行する。
次に、ラベル生成部92における隣接ノード部92bは、ドロネー三角形Duそれぞれについて、自ノード部92aにより自ノードの属性情報に基づき生成されたノードラベル毎に、さらに隣接情報を付与する(S504)。隣接情報とは、自ノードに隣接する隣接ノードとの属性情報が表現された所定長のビット列である。具体的には、隣接ノード部92bは、自ノードの属性情報が表現された所定長のビット列と、隣接ノードとの属性情報が表現された所定長のビット列とを重なりなく結合することで、属性情報に基づく基盤ラベルにさらに隣接情報を付与したノードラベルを生成する。
隣接ノード部92bは、隣接情報を付与したドロネー三角形DLu(DLu=(V,E,l))の各ノードラベルlの値(ビット列)を、未知パターンデータ80として、未知パターンPuに対応付けて格納する。そして、隣接ノード部92bは、算出部93へ処理を移行する。
算出部93は、所定の2つのレイアウトパターンの類似度を算出する。具体的には、算出部93は、未知パターンと、既知パターンデータ40に格納されている全ての既知パターンとの類似度を算出する(S505)。例えば、算出部93は、未知パターンデータ80から未知パターンPuの属性情報および隣接情報に基づくノードラベルを取得する。また、算出部93は、既知パターンデータ40から1つの既知パターンの属性情報および隣接情報に基づくノードラベルを取得する。そして、算出部93は、各パターンについて、取得したノードラベルを基数ソートし、未知パターンPuと所定の1つの既知パターンとで対応するノードラベルの一致を判定することによりマッチング値kを算出する。算出部93は、算出したマッチング値kを類似度データ82として、未知パターンPuと既知パターンの組合せに対応付けて格納する。そして、算出部93は、既知パターンデータ40から別の1つの既知パターンのノードラベルを取得することにより、未知パターンPuとの類似度を算出することを繰り返し、全ての既知パターンに対してこれを行う。
検証部94は、未知パターンの欠陥を検証する。具体的には、検証部94は、算出部93により算出された未知パターンと既知パターンとの各組合せの類似度と、識別モデル生成部54により生成された識別モデルとを用いて、未知パターンの欠陥の有無を検証する(S506)。また、検証部94は、検証結果である欠陥の有無に関する情報の信頼度も算出する。具体的には、検証部94は、上記の(5)式に、かかる類似度に基づくカーネル行列を代入することで、欠陥の有無を示す解を算出する。そして、検証部94は、求めた欠陥に関する情報やその情報の信頼度を欠陥情報83として、未知パターンPuに対応付けて格納するとともに、提示部95へ処理を移行する。
提示部95は、算出部93により算出された類似度に基づいて、既知パターンを未知パターンとの類似度が高い順に提示する(S507)。このとき、提示部95は、検証部94により求められた欠陥の有無に関する情報やその情報の信頼度も提示する。例えば、提示部95は、検証部94から未知パターンPuの検証終了を示す信号を受け付けた場合に、類似度データ82を参照し、未知パターンPuとの類似度の大きさに応じた順位付けを各既知パターンに対して行う。また、提示部95は、欠陥情報83から、未知パターンPuの欠陥の有無に関する情報やその情報の信頼度を取得する。そして、提示部95は、例えば、既知パターン名、パターン図面、類似度を順位に対応付け、未知パターンPuの欠陥の有無に関する情報やその情報の信頼度とともに提示する。
上述してきたように、レイアウト検証装置10は、ラベル生成部92(ラベル生成部52)と、算出部93(算出部53)と、検証部94とを有する。ラベル生成部92は、第一のレイアウトパターンに含まれるノード毎に、当該ノードの属性情報および当該ノードに隣接するノードとの属性情報とに基づいたラベルを生成する。算出部93は、欠陥に係る情報が付与された第二のレイアウトパターンと、第一のレイアウトパターンとの類似度を、ラベルを用いて算出する。検証部94は、類似度に基づいて第一のレイアウトパターンの欠陥を検証する。これにより、レイアウト検証装置10は、第一のレイアウトパターンを精度よく検証することができる。
また、レイアウト検証装置10においてラベル生成部92は、自ノードの属性情報が表現された所定長のビット列と、隣接するノードの属性情報が表現された所定長のビット列とを、重なりなく結合して前記ラベルを生成する。これにより、レイアウト検証装置10は、各ノードについて、自ノードの属性情報と隣接情報とを考慮した一つのノードラベルとして表現することができるため、例えば、特徴項目が増えることによる検証の際のオーバーフィッティングを回避することができる。このためレイアウト検証装置10は、類似度を高精度に算出することにつなげることができる。
また、レイアウト検証装置10においてラベル生成部92は、属性情報として、配線であるかビアであるかを示す情報、凸点であるか凹点であるかを示す情報、パターン中心からの距離、隣接するノードの個数、隣接するノード間の最短距離のいずれか一つまたは複数に基づいて、ラベルを生成する。これにより、レイアウト検証装置10は、各ノードについて、自ノードの複数の属性情報と隣接情報とを考慮した一つのノードラベルとして表現することができるため、例えば、特徴項目が増えることによる検証の際のオーバーフィッティングを回避することができる。このため、レイアウト検証装置10は、類似度を高精度に算出することにつなげることができる。
また、レイアウト検証装置10において識別モデル生成部54は、複数の第二のレイアウトパターンと欠陥の有無とを対応付けたデータセットと、第二のレイアウトパターン同士の類似度に基づく類似度行列とを用いて、欠陥の有無を識別する識別モデルを生成する。これにより、レイアウト検証装置10は、第一のレイアウトパターンにおける欠陥の有無の検証を高精度に行うことができる。
また、レイアウト検証装置10において提示部95は、第二のレイアウトパターンを、第一のレイアウトパターンとの類似度が高い順に提示する。これにより、レイアウト検証装置10は、ユーザに対し、第一のレイアウトパターンとの類似度の大きさに応じて第二のレイアウトパターンをその類似度とともに複数一度に視認させることができるため、ユーザの満足度を高めることができる。