(57)【特許請求の範囲】
【請求項１】
部品リストとネットリストからなる回路データとその対となる配置データを記憶したデータベースと、新規回路データと前記データベース中の回路データとを各部品または各ネットに対応した属性と属性値とからなるノードおよび各ノードペアに対応した属性と属性値とからなるエッジの組からなるグラフに変換するグラフ変換手段と、前記変換されたグラフ間のマッチングをそれぞれ行い、マッチング度を求めるマッチング手段と、前記新規回路データから変換されたグラフとマッチング度の高い回路データをデータベースから検索する検索手段と、前記検索した回路データの対となる配置データに沿って、前記新規回路データを配置する配置手段とを具備することを特徴とする自動配置装置。
【請求項２】
前記グラフ変換手段は、新規回路データとデータベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、前記ノードおよびエッジにおける属性として少なくとも部品種類毎の部品数を含み、その値を属性値とするグラフ表現にそれぞれ変換することを特徴とする請求項１記載の自動配置装置。
【請求項３】
前記グラフ変換手段は、新規回路データとデータベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、ノードにおける属性として少なくとも部品種類を含み、その部品種類の名称を属性値とし、前記エッジにおける属性として少なくとも配線本数を含み、その値を属性値とするグラフ表現にそれぞれ変換することを特徴とする請求項１記載の自動配置装置。
【請求項４】
新規回路データとデータベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、前記新規回路データのネット数と前記データベース中の回路データのネット数との積と、前記新規回路データの部品数と前記データベース中の回路データの部品数との積とを比較して、前者の積が小さい場合、各ネットに対応した属性と属性値からなるノードとノードペアに対応した属性と属性値とからなるエッジとからグラフにそれぞれ変換し、後者の積が小さい場合、各部品に対応した属性と属性値とからなるノードと各ノードペアに対応した属性と属性値とからなるエッジからグラフにそれぞれ変換することを特徴とする請求項１記載の自動配置装置。
【請求項５】
変換されたグラフ間のマッチングを行うマッチング手段は、ニューラルネットまたはシミュレーテッドアニーリング法を用いることを特徴とする請求項１乃至４のいずれかに記載の自動配置装置。
【請求項６】
ニューラルネットを用いたマッチング手段は、ニューラルネットのパラメータや初期状態を設定し、前記設定されたパラメータに基づいて現在のマッチング状態を示す前記ニューラルネットの状態を更新し、前記ニューラルネットの状態が収束しているかどうかを判定し、収束していない場合は前記ニューラルネットの温度を更新し、前記ニューラルネットの状態の更新と収束判定を繰り返すことを特徴とする請求項５記載の自動配置装置。
【請求項７】
検索した回路データの対となる配置データに沿って前記新規回路データを配置する配置手段は、シミュレーテッドアニーリング法を用いることを特徴とする請求項１乃至６のいずれかに記載の自動配置装置。
【請求項８】
検索した回路データの対となる配置データに沿って前記新規回路データを配置する配置手段は、前記回路データの部品と前記新規回路データの部品とを対応づけ、少なくともその対応関係と前記配置データを用いて前記新規回路データに対しての配置を評価するコスト関数を生成し、前記コスト関数を最小化することを特徴とする請求項１乃至７のいずれかに記載の自動配置装置。
【請求項９】
コスト関数の最小化を行なう際に、少なくとも初期配置を生成し、部品または部品群を移動または回転させることにより配置を更新することを特徴とする請求項８に記載の自動配置装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、構造を持った情報である回路データをグラフ表現に変換し、グラフ間のマッチングを行なうことで、回路マッチングを行うことにより、新規に作成した回路データを熟練者のように配置することができるグラフ表現変換方法及びその装置、並びに自動配置方法及びその装置に関するものである。
【０００２】
【従来の技術】
ＣＡＤの普及にともなって、専門家による設計事例（回路データと配置データを含む）はデータベースに蓄積されつつある。各々の設計事例は設計の専門家のノウハウを含んだ貴重な情報である。こうした設計事例データベースを有効利用できれば、ノウハウを共有することが可能となり、設計の効率化を促進できる。
【０００３】
このような観点から、最近では、内容情報と属性情報のペアで構成される回路データとその対となる配置データ（部品の配置情報）とからなる設計事例を管理するためのシステムが開発されている。
【０００４】
ここで、内容情報とは、回路そのものを表現した構造をもった情報であり、一般のＣＡＤにおいては、部品リストとネットリストから構成される。ここで、部品リストとは、回路を構成する個々の部品を番号付けしたリストである。このため、回路を構成する部品の数をNpで表すと、部品リストのリスト数はＮｐに一致する。各々の部品に対しては、抵抗やコンデンサなどの部品種類の情報や、ピン数の情報等が記述されている（実際のＣＡＤでは、部品リストを簡素化するために、マスタリストが使われる。このマスタリストは、部品種類を番号付けしたリストであり、各々の部品種類に対しては、部品の形状、ピン数、ピンの位置などの詳細な情報が記述されている。ここでは部品リスト中にピン数の情報を含めているが、実際には、部品リスト中の部品種類の情報から、マスタリストにアクセスすることによって得られる情報である。）。また、ネットリストとは、部品のピン間の結線であるネットを番号付けしたリストである。このため、回路中のネット数をＮｎで表すと、ネットリストのリスト数はＮｎに一致する。各々のネットに対しては、そのネットでつながる部品の番号やピン番号などの情報が記述されている。
【０００５】
図３（ａ）に、Ｎｐ＝６個の部品とＮｎ＝３本のネットから構成される回路１０１、および、その回路１０１を部品リスト１０２とネットリスト１０３のペアで表現した例を示す。ここで、回路（図３（ａ））における斜線の四角形は部品を示し、内部の数字は部品番号を示す。また、部品内の円形はピンを示し、ピン内の数字はピン番号を示す。さらに、ピン間を結ぶ直線はネット、ネット上の数字はネット番号を示しており、１つのネットで結ばれているピンは同電位である。このように、部品リスト（図３（ｂ））には、回路１０１を構成するNp=6個の部品の各々に対して、部品種類とピン数が、ネットリスト（図３（ｃ））には、Nn=3本のネットの各々に対して、そのネットを構成する部品の番号とピン番号が記述されている。
【０００６】
また、属性情報とは、設計者、設計日、対象製品（属性値としてはテレビやラジカセなどをとる）、実装する基板のサイズや材質、部品点数などを属性とした属性・属性値で表現される情報である。
【０００７】
こうした内容情報と属性情報とのペアで構成される回路データ（と配置データを含む設計事例）を管理する管理システムは、その属性情報に基づいてリレーショナルデータベース化したものであり、内容情報は、属性情報に付随するかたちで蓄積されている。このため、管理システムでは、一般に、属性情報を頼りに、必要な回路データを検索する。例えば、テレビのプリント基板回路を設計したい場合、属性“対象製品”に属性値“テレビ”を入力することで、管理システム中のテレビに関わる回路データを引き出すことが可能となり、必要な回路データやその対となる配置データを参照できる。
【０００８】
このように、リレーショナルデータベースを基本とした管理システムでは、回路データの属性情報を利用し、属性に対する属性値を入力することで過去に設計した回路データやその対となる配置データを検索する。
【０００９】
【発明が解決しようとする課題】
しかしながら、管理システムが検索の頼りにしている属性情報には、専門家のノウハウという貴重な情報が充分には反映されていない。専門家のノウハウが豊かに反映されているのは、むしろ、内容情報であろうが、現状の管理システムでは、この内容情報を頼りにした検索を行なうことができない。これは、リレーショナルデータベースが扱うことのできる属性・属性値という単純な表現方法で、構造を持った内容情報を表現すると、検索する際に必要となる内容情報どうしのマッチングに問題が生じるためである。例えば、回路１のある抵抗部品は、回路２に含まれる多数の抵抗部品の内、どの抵抗部品に対応するかという問題が生じるためである。このため、内容情報を検索する際には、まず、属性情報で回路データの絞り込みを行ない、次に、絞り込まれた回路データの内容情報をユーザ自身が１つずつ眺め、必要な内容情報を見つけ出す必要がある。回路データが蓄積されつつある現状から今後を推察すると、たとえ、属性情報による絞り込みを行なっても、内容情報の検索には、莫大な労力と時間が払われることになるであろう。
【００１０】
本発明は、構造を持った情報である回路データをグラフに変換し、グラフ間のマッチングを行なうことで、回路マッチングを行い、熟練者が作成した回路データとその配置データを記憶したデータベースからマッチング度の高い回路データを検索し、検索した回路データの対となる配置データに沿って、新規に作成した回路データを熟練者と同様な配置することができるグラフ表現変換方法及びその装置並びに自動配置方法及びその装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
この目的を達成するために本発明は、部品リストとネットリストからなる回路データとその配置データをデータベースに記憶し、新規回路データと前記データベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換し、変換されたグラフ間のマッチングを行い、マッチング度の高い回路データを検索し、検索した回路データの対となる配置データに沿って、新規回路データを配置するようにしたものである。
【００１２】
この発明によれば、構造を持った情報である回路データをグラフに変換し、グラフ間のマッチングを行なうことで、回路マッチングを行い、熟練者が作成した回路データとその配置データを記憶したデータベースからマッチング度の高い回路データを検索し、検索した回路データの対となる配置データに沿って、新規回路データを配置することができ、熟練者と同様な配置ができるものである。
【００５０】
【発明の実施の形態】
請求項１に記載の発明は、部品リストとネットリストからなる回路データとその対となる配置データを記憶したデータベースと、新規回路データと前記データベース中の回路データとを各部品または各ネットに対応した属性と属性値とからなるノードおよび各ノードペアに対応した属性と属性値とからなるエッジの組からなるグラフに変換するグラフ変換手段と、前記変換されたグラフ間のマッチングをそれぞれ行い、マッチング度を求めるマッチング手段と、前記新規回路データから変換されたグラフと前記マッチング度の高い回路データを前記データベースから検索する検索手段と、前記検索した回路データの対となる配置データに沿って、前記新規回路データを配置する配置手段とを具備するもので、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５１】
請求項２に記載の発明は、請求項１記載の自動配置装置において、前記グラフ変換手段は、新規回路データと前記データベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、前記ノードおよびエッジにおける属性として少なくとも部品種類毎の部品数を含み、その値を属性値とするグラフ表現にそれぞれ変換するもので、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５２】
請求項３に記載の発明は、請求項１記載の自動配置装置において、前記グラフ変換手段は、新規回路データとデータベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、ノードにおける属性として少なくとも部品種類を含み、その部品種類の名称を属性値とし、前記エッジにおける属性として少なくとも配線本数を含み、その値を属性値とするグラフ表現にそれぞれ変換するもので、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５３】
請求項４に記載の発明は、請求項１記載の自動配置装置において、
新規回路データとデータベース中の回路データとをノードとエッジとからなるグラフにそれぞれ変換する際に、前記新規回路データのネット数と前記データベース中の回路データのネット数との積と、前記新規回路データの部品数と前記データベース中の回路データの部品数との積とを比較して、前者の積が小さい場合、各ネットに対応した属性と属性値からなるノードとノードペアに対応した属性と属性値とからなるエッジとからグラフにそれぞれ変換し、後者の積が小さい場合、各部品に対応した属性と属性値とからなるノードと各ノードペアに対応した属性と属性値とからなるエッジからグラフにそれぞれ変換するもので、前記マッチング手段はノード数が少なくなった方のグラフ間でマッチングを行うとしたもので、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５４】
請求項５に記載の発明は、請求項１乃至４のいずれかに記載の自動配置装置において、変換されたグラフ間のマッチングを行うマッチング手段は、ニューラルネットまたはシミュレーテッドアニーリング法を用いるとしたもので、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５５】
請求項６に記載の発明は、請求項５記載の自動配置装置において、ニューラルネットを用いたマッチング手段は、ニューラルネットのパラメータや初期状態を設定し、設定されたパラメータに基づいて現在のマッチング状態を示すニューラルネットの状態を更新し、ニューラルネットの状態が収束しているかどうかを判定し、収束していない場合はニューラルネットの温度を更新し、ニューラルネットの状態を更新と収束判定を繰り返すものであり、回路マッチングを高速に実行し、熟練者と同様な配置ができるという作用を有する。
【００５６】
請求項７に記載の発明は、請求項１乃至６のいずれかに記載の自動配置装置において、検索した回路データの対となる配置データに沿って、新規回路データを配置する配置手段は、シミュレーテッドアニーリング法を用いるものであり、熟練者と同様な配置ができるという作用を有する。
【００５７】
請求項８に記載の発明は、請求項１乃至７のいずれかに記載の自動配置装置において、検索した回路データの対となる配置データに沿って、新規回路データを配置する配置手段は、前記回路データの部品と前記新規回路データの部品とを対応づけ、少なくともその対応関係と前記配置データを用いて新規回路データに対しての配置を評価するコスト関数を生成し、前記コスト関数を最小化するものであり、熟練者と同様な配置ができるという作用を有する。
【００５８】
請求項９に記載の発明は、請求項８に記載の自動配置装置において、コスト関数の最小化を行なう際に、少なくとも初期配置を生成し、部品または部品群を移動または回転させることにより配置を更新するものであり、熟練者と同様な配置ができるという作用を有する。
【００８５】
以下、本発明の実施の形態について、図１から図１２を用いて説明する。
【００８６】
（実施の形態１）
図１は、本発明の実施の形態１の自動配置システムのブロック図を示す。
図１において、１０は回路データを自動的に配置データに変換する自動配置装置、１１は回路データを設計するＣＡＤ、１２は自動配置装置で配置した配置データを基に部品の実装を行う実装機、１３はＣＰＵ、１４はディスプレイ／キーボード、１５はメモリ、１６はプログラム等を読み込むためのＦＤ（フロッピィディスク）ユニット、１７はＣＡＤ１１で作成された新規回路データ、１８は回路データとその対となる配置データを記憶した回路データベース、１９は新規回路データを自動配置したデータを記録した配置データ、２０はバス、２１〜２３はＩ／Ｆユニット、２４はＣＡＤ１１、自動配置装置１０および実装機１２のデータを転送するネットワークで構成されている。
【００８７】
前記のように構成された自動配置装置の動作について、図２のフローチャートを用いて説明する。
【００８８】
ここで、本自動配置装置の動作説明に先立ち、回路データの表現方法として、ネット表現と部品表現について説明する。
【００８９】
ネット表現とは、回路をグラフで表現する方法であり、ネットをノードに対応させ、ネットに付随する情報を対応するノードに反映させ、さらに、ノードペア、すなわち、ネットペアをエッジに対応させ、ネットペアが共有する情報を対応するエッジに反映させた、グラフによる回路の表現方法である。前記、ネットに付随する情報としては、ネットでつながる部品の部品種類の情報、ピンの情報、ネットの太さの情報など様々な情報が存在するが、以下では、簡単のため、部品種類（コンデンサやＩＣなど）の情報のみを扱うこととする。ピンの情報、ネットの太さの情報など、他の情報も扱うことができるように拡張することは容易である。同様に、前記のネットペアが共有する情報としても、様々な情報が存在するが、以下では、簡単のため、部品種類の情報のみを扱うこととする。この場合においても同様に、その他の情報も扱うことができるように拡張することは容易である。
【００９０】
次に、部品表現とは、回路をグラフで表現する方法であり、部品をノードに対応させ、部品に付随する情報を対応するノードに反映させ、さらに、ノードペア、すなわち、部品ペアをエッジに対応させ、部品ペアが共有する情報を対応するエッジに反映させた、グラフによる回路の表現方法である。前記、部品に付随する情報としては、その部品の部品種類の情報、ピンの情報など様々な情報が存在するが、以下では、簡単のため、部品種類（コンデンサやＩＣなど）の情報のみを扱うこととする。ピンの情報など、他の情報も扱うことができるように拡張することは容易である。同様に、前記の部品ペアが共有する情報としても、結線の有無、種類、太さ、本数などの様々な情報が存在するが、以下では、簡単のため、結線の本数の情報のみを扱うこととする。この場合においても同様に、その他の情報も扱うことができるように拡張することは容易である。
【００９１】
まず、新規回路データ１７から新規の回路データ（以降、回路１と呼ぶ）を読み込む（Ｓ２０１）。
次に、回路データベース１８中の回路データ（以降、回路２と呼ぶ）を読み込む（Ｓ２０２）。
【００９２】
次に、表現選択処理（Ｓ２０３）は、回路データ１のネット数と回路２のネット数との積と、回路１の部品数と回路２の部品数との積とを比較し、前者の積が小さい場合にはネット表現を選択し、後者の積が小さい場合には部品表現を選択する（Ｓ２０３）。
【００９３】
ネット表現を選択した場合、ネット表現用ノード生成処理（Ｓ２０４）とネット表現用エッジ生成処理（Ｓ２０５）で、２つの回路をネット表現に従ったグラフにそれぞれ変換する。部品表現を選択した場合、部品表現用ノード生成処理（Ｓ２０６）と部品表現用エッジ生成処理（Ｓ２０７）で、２つの回路を部品表現に従ったグラフにそれぞれ変換する。
【００９４】
まず、ネット表現を選択した場合において、図３（ａ）に示す回路（部品リスト図３（ｂ）とネットリスト図３（ｃ））を受けた場合を例題とし、ネット表現用ノード生成処理（Ｓ２０４）とネット表現用エッジ生成処理（Ｓ２０５）を説明する。
【００９５】
ネット表現用ノード生成処理（Ｓ２０４）は、回路(図３(a))を受けることにより、この回路のネット数はＮｎ＝３、部品種類数は５（フィルタ、レジスタ、トランジスタ、コンデンサ、ＩＣ）であることを認識する。これらの情報を利用し、ネット表現用ノード生成処理は、ネットｉ（ｉ＝１，．．．，Ｎｎ）に対応させてノードｎｉ（ｉ＝１，．．．，Ｎｎ）を生成する。したがって、Ｎｎ＝３個のノードを生成することになる。各ノードｎｉには、必要な数以上の属性・属性値ペアを用意しておく。なお、図３(a)の回路だけをグラフに変換する場合、部品種類数は５であることから、５つ以上の属性・属性値ペアを用意しておけばよく、以下では、５つの属性・属性値ペアを用意したものとして説明をする（実際には、回路１と回路2のノードの表現を一致させるため、２つの回路で使われている部品種類数以上の属性・属性値ペアを用意しておく必要がある。）。
【００９６】
次に、各ノードｎｉに対し、ネットｉに属している部品を部品種類毎に分類する。部品種類毎に得られた部品数の実体（実現値、整数）が属性値となる。すなわち、各ノードにおける属性・属性値ペアは、部品種類での”部品数”を属性、その実体を属性値とした表現となる。図４は、図３（ａ）に示した回路をネット表現に従ったグラフで表したものであり、ノードｎｉはネットｉに対応している。例えば、ネット１は３つの部品１（フィルタ）、２（レジスタ）、３（トランジスタ）から構成されるため、ノードｎ１は｛フィルタ数＝１、レジスタ数＝１、トランジスタ数＝１、コンデンサ数＝０、ＩＣ数＝０｝と表現される（Ｓ２０４）。
【００９７】
ネット表現用エッジ生成処理（Ｓ２０５）は、各ノードペア｛ｎｉ、ｎｊ｝（ｉ,j＝１，．．．，Ｎｎ，ｉ≠ｊ）に対して、エッジｅｉｊを付加する。各エッジｅｉｊは、それを構成する２つのノードｎｉおよびｎｊ、すなわち、２つのネットｉおよびｊの共有部品の情報を反映する。例えば、図３（ａ）の回路において、ネット１と２は、部品３のトランジスタを共有している。よって、図４に示されるよう、ネット１と２のペアに対応するエッジｅ１２は、｛フィルタ数＝０、レジスタ数＝０、トランジスタ数＝１、コンデンサ数＝０、ＩＣ数＝０｝と表現される。すなわち、エッジｅｉｊにおける属性・属性値ペアは、２つのネットｉおよびｊが共有している部品種類毎での”部品数”を属性、その実体を属性値とした表現となる（Ｓ２０５）。
【００９８】
このように、ネット表現用ノード生成処理（Ｓ２０４）とネット表現用エッジ生成処理（Ｓ２０５）をとおして、回路１（新規回路データ１７）と回路２（回路データベース１０８中の回路データ）をネット表現に従ったグラフに変換する。
【００９９】
以上は、回路データの表現方法としてネット表現を選択した場合を説明したが、次に、部品表現を選択した場合において、同じ回路（図３（ａ））を例題とし、部品表現用ノード生成処理（Ｓ２０６）と部品表現用エッジ生成処理（Ｓ２０７）を説明する。
【０１００】
まず、部品表現用ノード生成処理（Ｓ２０６）は、（図３（ａ））の回路を受けることにより、この回路の部品数はＮｐ＝６であることを認識する。この情報を利用し、部品表現用ノード生成処理は、部品ｉ（ｉ＝１，．．．，Ｎｐ）に対応させてノードｎｉ（ｉ＝１，．．．，Ｎｐ）を生成する。したがって、Ｎｐ＝６個のノードを生成することになる。各ノードｎｉは、部品ｉの部品種類を属性とし、コンデンサやトランジスタなどのシンボリックな値を属性値とした属性・属性値ペアで表現される。図５は、図３（ａ）の回路を部品表現に従ったグラフで表したものであり、ノードｎｉは部品ｉに対応していることがわかる（Ｓ２０６）。
【０１０１】
部品表現用エッジ生成処理（Ｓ２０７）は、各ノードペア｛ｎｉ、ｎｊ｝（ｉ,j＝１，．．．，Ｎｐ，ｉ≠ｊ）に対して、エッジｅｉｊを付加する。各エッジｅｉｊは、それを構成する２つのノードｎｉおよびｎｊ、すなわち、２つの部品ｉおよびｊ間の結線本数の情報を反映する。例えば、図３（ａ）の回路において、部品１と２はネット１でつながっており、結線が１本存在する。したがって、図５に示されるよう、部品１と２のペアに対応するエッジｅ１２は結線本数１と表現される。なお、図３（ａ）の回路においては、結線本数は１本以下なので、エッジに付加する情報として結線の有無の情報を扱う場合と等価の表現となる。この場合は、結線本数１のとき、結線有りと解釈し、結線本数０のとき、結線なしと解釈すればよい（Ｓ２０７）。
【０１０２】
このように、部品表現用ノード生成処理と部品表現用エッジ生成処理をとおして、回路１（新規回路データ１７）と回路２（回路データベース１０８中の回路データ）を部品表現に従ったグラフに変換する。
【０１０３】
以上のように、回路（回路データ）は、ネット表現や部品表現を用いることにより、グラフで表現できる。したがって、以下で説明する回路マッチングは、グラフマッチングに帰着する。グラフマッチングにおいては、グラフの規模（ノード数）が少ない方が容易となる。したがって、ノード数が少なくなる方の表現方法（ネット表現または部品表現）を用いた方が良い。図３（ａ）の回路をネット表現で表すとノード数は３個となり、部品表現で表すとノード数は６個となる。よって、この場合は、ネット表現を用いた方がグラフマッチングを実行する上でよい。
【０１０４】
次に、グラフマッチング処理が、ニューラルネットである場合について説明する。以下では、マッチングを行なおうとする回路１（新規の回路データ。この回路を任意のブロックまたは機能ブロック毎に分割した部分回路データでもよい。）のグラフと回路２（データベース中の回路データであり、この回路を任意のブロックまたは機能ブロック毎に分割した部分回路データでもよい。）のグラフとをそれぞれ、G1(ns1,es1)とG2(ns2,es2)で表す。ここで、グラフGi(nsi,esi)(i=1,2)におけるノード数を|nsi|で表すことにすると、nsiとesiは、それぞれ、ノードの集合｛nij|j=1,...,|nsi|｝とエッジの集合｛eijk|j=1,...,|nsi|,k=1,...,|nsi|,j≠k｝を示す。
【０１０５】
まず、初期化処理（Ｓ２０８）は、このマッチング問題を解くために、|ns1| ×|ns2|個の素子から構成されるニューラルネットを生成する。素子ij(i=1,...,|ns1|,j=1,...,|ns2|)の出力xijは0から1までの値をとるものとし、その大きさに、グラフG1(ns1,es1)のノードn1iがG2(ns2,es2)のノードn2jに対応するという仮説の強さを反映させる。以下では、素子の出力xijをまとめてxと表し、ニューラルネットの状態と呼ぶ。なお、ここでは、前記の通り、素子の出力xijは０から１までの値をとる場合を説明するが、この制限は本質的なものではなく、他の実数値を取る場合にも、容易に拡張できる。
【０１０６】
初期化処理（Ｓ２０８）は、|ns1|×|ns2|個の素子から構成されるニューラルネットを生成した後に、各素子の出力xijに０から１までの値をとる乱数を与えることで、ニューラルネットの初期状態を設定する。さらに、後述の状態更新処理（Ｓ２０９）、収束判定処理（Ｓ２１０）、および、温度更新処理（Ｓ２１１）における様々なパラメータの値を設定する役割も持っている。
【０１０７】
さらに、この初期化処理（Ｓ２０８）は、ニューラルネットの素子間の重みや、素子の閾値を設定する。ここで、素子klから素子ijへの重みをw1ijklで表し、また、素子ijの閾値をw2ijで表すことにすると、例えば、
【０１０８】
【数１】
0003791239.tif 000002
【０１０９】
【数２】
0003791239.tif 000003
【０１１０】
【数３】
0003791239.tif 000004
【０１１１】
と設定する。ここで、A、B、C、D、Eは正の定数である。また、dn(n1i,n2j)は、グラフG1(ns1,es1)のノードn1iとG2(ns2,es2)のノードn2jとの違いを反映したノード間距離を表しており、２つの回路のグラフがネット表現に従っている場合には、例えば、
【０１１２】
【数４】
0003791239.tif 000005
【０１１３】
と設定する。ここで、vij(k)は、グラフGi(ni,ei)(i=1,2)のノードnij(j=1,...,|nsi|)における属性k(k=1,...,na)の属性値である。
【０１１４】
また、部品表現に従っている場合には、例えば、
【０１１５】
【数５】
0003791239.tif 000006
【０１１６】
と設定する。また、de(e1ik、e2jl)はG1(ns1,es1)のエッジe1ikとG2(ns2,es2)のe2jlとの違いを反映したエッジ間距離を表しており、２つの回路のグラフがネット表現に従っている場合には、例えば、
【０１１７】
【数６】
0003791239.tif 000007
【０１１８】
と設定する。ここで、vijk(l)はグラフGi(ni,ei)(i=1,2)のエッジeijk(j=1,...,|nsi|,k=1,...,|nsi|,j≠k)における属性l(l=1,...,na)の属性値である。また、部品表現に従っている場合には、例えば、
【０１１９】
【数７】
0003791239.tif 000008
【０１２０】
と設定する（Ｓ２０８）。
【０１２１】
次に、状態更新処理（Ｓ２０９）は、初期化処理（Ｓ２０８）で設定されたパラメータ等に基づいて、ニューラルネットの状態ｘを更新する。例えば、素子をランダムに選択し、その出力xijを
【０１２２】
【数８】
0003791239.tif 000009
【０１２３】
【数９】
0003791239.tif 000010
【０１２４】
【数１０】
0003791239.tif 000011
【０１２５】
と更新することによって、状態xを更新する。ここで、Tは温度であり、正の実数値をとる。温度Ｔの初期値は初期化処理で設定され、また、後述の温度更新処理（Ｓ２１１）によって、更新される。この状態更新（Ｓ２０９）では、このような更新式に従った出力xijの更新を、Tを一定に保った下で、複数回繰り返すこととする。
【０１２６】
次に、収束判定処理（Ｓ２１０）は、状態更新処理（Ｓ２０９）で状態xを更新し続けるかどうかを判定する。例えば、更新前の状態x'と更新後の状態xとの差（距離）が、初期化処理（Ｓ２０８）で設定される収束判定パラメータの値以下であるとき（Ｙ）、収束したと判定してマッチング結果を出力し、そうでない場合（Ｎ）、後述の温度更新処理（Ｓ２１１）で温度Tを更新した後に、状態更新処理（Ｓ２０９）で状態更新を続ける。
【０１２７】
次に、温度更新処理（Ｓ２１１）は温度Ｔを、例えば、
【０１２８】
【数１１】
0003791239.tif 000012
【０１２９】
のように更新する。ここで、βは、１より小さな正の実数とする。また、温度Ｔの初期値は０より大きな正の実数とする。なお、Ｔの初期値とβは初期化処理（Ｓ２０８）で設定されるものとする。
【０１３０】
状態更新処理（Ｓ２０９）、収束判定処理（Ｓ２１０）、および、温度更新処理（Ｓ２１１）とから構成されるループを繰り返すことで、ニューラルネットの状態xは収束する。ノード数|ns1|=3個のグラフG1(ns1,es1)とノード数|ns2|=6個のグラフG2(ns2,es2)のマッチング問題を解くための、|ns1|×|ns2|個の素子から構成させるニューラルネットが収束した状態xの一例を図６に示す。図６における円形は素子を表しており、１を出力している素子を黒丸で、0を出力している素子を白丸で示している。素子の出力xijが1のとき、グラフG1(ns1,es1)のノードn1iがG2(ns2,es2)のノードn2jに対応すると判断し、0のとき、対応しないと判断すれば良い。この例では、G1(ns1,es1)における３つのノードn11、n12、n13は、それぞれG2(ns2,es2)における３つのノードn22、n26、n24に対応すると解釈できる。
【０１３１】
部品数Np=11、ネット数Nn=5の回路１と、部品数Np=69、ネット数Nn=34の回路２との回路マッチング問題を例題に、ネット表現を用いた数値実験と、部品表現を用いた数値実験を行なった。ネット表現を用いた場合の実験結果と、部品表現を用いた場合の実験結果を、それぞれ、図７と図８に示す。縦軸は、（数９）（マッチングを評価する評価関数であり、この値が０に近いほど良いマッチングであることを示す。）の値を示しており、横軸は、繰り返し数を示している。この例題の場合、ネット表現を用いることにより、繰り返し数、すなわち、計算時間が短くなり、同じ回路マッチングを高速に実行することができた。
【０１３２】
これは、以下の理由による。ネット表現に従えば、回路１のグラフG1(ns1,es1)のノード数は|ns1|=5となり、回路２のグラフG2(ns2,es2)のノード数は|ns2|=34となることから、このマッチングを実行するためには、５×３４個の素子からなるニューラルネットが必要となる。一方、部品表現に従うと、回路１のグラフG1(ns1,es1)のノード数は|ns1|=11となり、回路２のグラフG2(ns2,es2)のノード数は|ns2|=69となることから、このマッチングを実行するためには、１１×６９個の素子からなるニューラルネットが必要となる。したがって、本例題の場合、ネット表現を用いることにより、同じ回路マッチングを小さな規模のニューラルネットで実行することができ、この効果により、同じ回路マッチングを高速に行うことができたわけである。一般的には、ニューラルネットの規模が小さくなる方の表現方法(ネット表現または部品表現)を採用すればよい。
【０１３３】
なお、ネット表現を用いての回路マッチングで得られるものは、マッチング対象の２つの回路におけるネットどうしの対応関係であるため、部品どうしの対応関係を得たい場合には、これを得るための若干の計算時間が必要となる。この場合には、対応が取れている２つのネットにおける部品どうしの対応関係を求めればよく、一般に、ネットを構成する部品数は少ないため、総当たり的な手法を用いても、若干の計算量で済むことになる。
【０１３４】
なお、Ｓ２０８〜Ｓ２１１までのグラフマッチング処理に、ニューラルネットを用いた場合について説明したが、これに限定されるものではなく、平均場アニーリング、シミュレーテッドアニーリング法または遺伝的アルゴリズム等のいずれかを用いても良い。
【０１３５】
次に、結果処理（Ｓ２１２）で、グラフマッチング処理（Ｓ２０８からＳ２１１まで）で得られるマッチング結果（回路１の部品と回路２の部品との対応関係や、（数９）のF(x)の値など）を保存する。さらに、回路データベース１８中に読み込むべき回路データが残っている場合には、Ｓ２０２に戻る。したがって、最終的には、結果処理（Ｓ２１２）で、回路データベース１８中の読み込むべき回路データの各々と新規回路データ１７とのマッチング結果が保存されることになる。
【０１３６】
次に、配置処理は、結果処理（Ｓ２１２）で保存されたマッチング結果を受け、回路データベース１８中の回路データの内、新規回路データ１７とのマッチング度の高い回路データの対となる配置データに沿って新規の回路データを配置する。ここで、マッチング度としては、例えば、マッチング結果の一部である（数９）の評価関数（マッチングを評価する評価関数であり、この値が小さいほど良いマッチングであることを示す。）の値の符号を反転させた値などを用いる。言い換えれば、本自動配置装置は、新規回路データ１７に類似した回路データを回路データベース１８から検索し、検索した回路データの対となる配置データ（見習い配置データ）を見習って、新規回路データ１７を配置する。新規回路データ１７の内、見習い配置データとのマッチングが取れている部分（部分回路）は見習い配置データの配置に見習って配置し、そうでない部分は仮想配線長を最短化するなどによって配置する。なお、見習って配置する場合は、見習い配置データにおける部品の配置位置のトポロジーを保存するように新規配置データを設計する。
【０１３７】
以上の配置処理を、シミュレーテッドアニーリング法を用いた場合について説明する。
【０１３８】
まず、対応づけ処理（Ｓ２１３）では、結果処理（Ｓ２１２）で保存されたマッチング結果を受け、新規回路データ１７とのマッチング度が高い順で回路データを回路データベース１８から引き出し、新規回路データ１７の部品(Nc個)と引出してきた回路データの部品とを対応づける。この際、新規回路データ１７のある一つの部品が複数の回路データの部品に対応づけられることを避けるため、新規回路データ１７のある一つの部品がある回路データのある部品に対応づけられた時点で、以降の対応づけには、その新規回路データ１７の部品を考慮しないこととする。つまり、マッチング度の高い回路データの部品を優先的に対応づけることとする。
【０１３９】
ここで、説明を簡略化するため、以下では、各回路データの全ての部品は新規回路データ１７の部品に対応づけられているものとする（このようにしても、一般性は失われない。なぜならば、回路データの部品の内、新規回路データ１７の部品に対応づけされなかった部品を無視すればよいからである）。また、新規回路データ１７の部品に対応づけされた部品を２つ以上持つ回路データの数をNsで表し、回路データi(=1,...,Ns)の部品数をNiで表す。さらに、回路データiの部品j(=1,...,Ni)に対応する、新規回路データ１７の部品をpi(j)で表す。
【０１４０】
つぎに、コスト関数生成処理（Ｓ２１４）では、配置のコスト関数を自動生成する。ここで、新規回路データ１７の部品i(=1,...,Nc)の配置のＸ座標値、Ｙ座標値、配置角度をそれぞれxi、yi、θiで表し、Nc個の部品のそれらをまとめて配置Sと呼ぶことにすると、たとえば、配置SのコストF(S)関数は
【０１４１】
【数１２】
0003791239.tif 000013
【０１４２】
と定義できる。ここで、A、B、Cはともに正の定数である。l(i,j,S)は、新規回路データ１７の部品iとjの両者が同一の回路データ中のある２つの部品に対応づけられておらず、かつ、それらのピン間に結線がある場合、その結線の配置Sにおける仮想配線長を値にとり、それ以外の場合、０を値にとる関数である。したがって、（数１２）の第１項は、同一の回路データ中の部品に対応づけられた新規回路データ１７中の部品間の仮想配線長を除いた、総仮想配線長を評価していることになる。また、o(i,j,S)は、配置Sにおいて、新規回路データ１７の部品iとjが重なり合っている場合に１をとり、そうでない場合に０をとる関数である。
【０１４３】
したがって、（数１２）の第２項は、部品間の重なりの総数を評価していることになる。ここで、回路データiの部品jに対応する新規回路データ１７の部品pi(j)と、部品kに対応する新規回路データ１７の部品pi(k)との間の、配置Sにおける部品間距離（２つの部品の中心間の距離、２つの部品のピン間の距離など）をd(pi(j),pi(k),S)で表し、また、回路データiの対となる配置データiにおける部品jとkとの間の部品間距離をbijkで表すことにする。すると、fijk(d(pi(j),pi(k),S))は、配置Sにおける部品間距離d(pi(j),pi(k),S)と配置データiにおける部品間距離bijkとの差が大きくなるにしたがって、大きな値を取る関数であり、例えば、ガウス分布を利用して、
【０１４４】
【数１３】
0003791239.tif 000014
【０１４５】
のように実現できる。ここで、cijkは正の定数である。したがって、（数１２）の第３項は、新規回路データ１７の配置と見習っている回路データの対となる配置データとの違いを評価していることになる。
【０１４６】
つぎに、初期設定処理（Ｓ２１５）では、初期配置Sの自動生成や初期温度Ｔなどを設定する。例えば、見習う回路データの対となる配置データを利用して、初期配置を決定すればよい。また、部品の配置位置をランダムに決定してもよい。
【０１４７】
つぎに、配置更新処理（Ｓ２１６）を説明する。まず、現在の配置Sから、部品または部品群を適当に選択し、移動や回転などをさせることで、配置位置や配置角度が変更された配置候補S’を生成する。次に、配置候補S’を、シミュレーテッドアニーリング法に基づいて、以下の確率で受理する。
【０１４８】
【数１４】
0003791239.tif 000015
【０１４９】
受理された場合、配置Sを配置候補S’に更新する。受理されない場合には、配置Sを変更しない。
【０１５０】
つぎに、終了判定処理（Ｓ２１７）では、配置Sの更新を終了するか否かを判定する。例えば、配置Sのコスト関数の値の変化が非常に小さくなった時点で終了させるなどすればよい。また、配置の更新回数の上限をあらかじめ設定しておき、その上限を超えたら終了すると判定してもよい。
【０１５１】
つぎに、配置温度更新処理（Ｓ２１８）は、配置収束判定（Ｓ２１７）で配置Sの更新を終了しないと判断された場合、温度Ｔを更新する。例えば、適当な定数β（0<β<1）をあらかじめ設定しておき、温度更新処理（Ｓ２１１）と同様に、（数１１）で更新すればよい。
【０１５２】
以上、配置処理を、シミュレーテッドアニーリング法を用いた場合について説明したが、配置処理の実現には、シミュレーテッドアニーリングに限らず、遺伝的アルゴリズムなどの他の最適化手法や、ニューラルネット（例えば、トポロジーを保存したマッピングを実現できるコホーネンのフィーチャーマップ（Kohonen,T.(1989).Self-Organization and associative memory. Berlin: Springer-Verlag））等を用いてもよい。
【０１５３】
最後に、配置データ処理（Ｓ２１４）は、配置処理（Ｓ２１１）で得られた新規配置データを配置データ１９に保存し、終了する。
【０１５４】
（実施の形態２）
図９は、本発明の実施の形態２の自動配置システムのブロック図を示す。
図９において、９０１は回路データを自動的に配置データに変換する自動配置装置、９０１は回路データを設計するＣＡＤ、９０２は自動配置装置で配置した配置データを基に部品の実装を行う実装機、９０３はＣＰＵ、９０４はディスプレイ／キーボード、９０５はメモリ、９０６はプログラム等を読み込むためのＦＤ（フロッピィディスク）ユニット、９０７はＣＡＤで作成された新規回路データ、９０８は回路データとその対となる配置データを記憶した回路データベース、９０９は新規回路データを自動配置したデータを記録した配置データ、９１０はバス、９１１〜９１３はＩ／Ｆユニット、９１４はＣＡＤ９０１、自動配置装置９００および実装機９０２のデータを転送するネットワーク、９１５は獲得した知識を保存する知識ベースで構成されている。
【０１５５】
前記のように構成された自動配置装置の動作について、図１０のフローチャートを用いて説明する。
【０１５６】
まず、融合回路生成処理では、回路データベース９０８中の回路データをベクトルに変換するために必要な融合回路を生成する。ここで、融合回路とは、回路データベース９０８中の回路データを、共通の部分回路を共有する形で融合した仮想的な回路である。つまり、回路データベース９０８中の回路データの各々は、融合回路の一部（部分回路）として表現される。
まず、融合回路を初期化する（Ｓ１００１）。これにより、部品数０の融合回路となる。
【０１５７】
次に、回路データベース９０８中の回路データ（以降、回路と呼ぶ）を読み込む（Ｓ１００２）。
【０１５８】
つぎに、回路マッチング処理（Ｓ１００３）であるが、これは、前記の実施の形態１で説明した図２におけるＳ２０３からＳ２１１までの処理と同様である。つまり、融合回路と、Ｓ１００２で読み込んだ回路との間のマッチングを行なう。これにより、融合回路の部品と回路の部品との間の対応関係、すなわち、共通の部分回路が抽出できることになる。
【０１５９】
つぎに、融合回路更新処理（Ｓ１００４）では、回路マッチング処理（Ｓ１００３）で得られた、融合回路の部品と回路の部品との間の対応関係（共通の部分回路）を保存すると同時に、融合回路と回路とに共通する部分回路を共有する形で融合し、それを新たな融合回路とする。回路データベース９０８に、融合回路に融合していない回路が存在すれば、Ｓ１００２に戻る。
【０１６０】
以上の融合回路生成処理で融合回路が生成される過程を図１１の融合回路の生成過程の欄に示す。これは、コード化対象の回路の欄に示す３つの回路（四角形は部品を、部品内のアルファベットは抵抗やコンデンサなどの部品種類を、部品間の直線は結線を示している。）を回路１、２、３の順で融合した場合の融合回路の生成過程である。４部品Ａ、Ｂ、Ｃ、Ｅからなる部分回路は３つの回路に共通する部分回路であり、最終的な融合回路（回路１＋２＋３）を見ると、その部分回路が共有される形で融合されていることがわかる。さらに、３つの回路の各々は、最終的な融合回路（回路１＋２＋３）の部分回路になっていることがわかる。なお、最終的に生成された融合回路および、その部品と回路の部品との対応関係は、知識ベース９１５に保存される。
【０１６１】
つぎに、ベクトル生成処理（Ｓ１００５）では、知識ベース９１５に保存されている融合回路および、その部品と回路の部品との間の対応関係とを読み込み、各々の回路に対するベクトルを生成する。このベクトル生成処理（Ｓ１００５）を、図１１を用いて説明すると、次のようになる。前記対応関係の情報から、図１１の融合回路とのマッチングの欄に示すように、各々の回路の部品と融合回路の部品との対応関係がわかる。なお、図１１の融合回路とのマッチングの欄には、融合回路の部品との対応がとれる回路の部品を太線で強調して表示している。
【０１６２】
この対応関係に基づいて、各々の回路をベクトルにコード化すればよい。融合回路の部品との対応が取れている回路の部品に例えば＋１の値を、そうでない部品に例えば−１の値を割り当て、それらを要素として１列に並べることで、ベクトルに変換できる。図１１のベクトルの欄には、３つの回路の各々をコード化した場合のベクトルが示されている。共通の部分回路が共通の部分ベクトルにコード化されており、回路間の類似性が保存されていることがわかる。
【０１６３】
つぎに、概念形成処理（Ｓ１００６）では、ベクトル生成処理Ｓ１００５で生成されたベクトルを受け、ベクトルに内在する概念ベクトルを自動形成し、回路の概念を自動獲得する。図１１の３つのベクトルが入力されたとすると、前記共通の部分ベクトルが概念ベクトルとして自動形成されることになり、その概念ベクトルを前記融合回路と前記対応間関係（回路の部品と融合回路の部品との対応関係）とを用いて、回路に逆変換すれば、回路の概念を自動獲得できる。
【０１６４】
図１１の例では、３つの回路に共通する、４部品Ａ、Ｂ、Ｃ、Ｅからなる部分回路が回路の概念となる。この概念形成処理（Ｓ１００６）における問題は、ベクトル生成処理（Ｓ１００５）で生成されたベクトルから、どのようにして前記概念ベクトルを自動形成するかにあるが、これは、ニューラルネットなど（例えば、Hirahara,M., Kindo,T., Oka,N. (1997). Associative memory with a sparse encoding mechanisim for storing correlated patterns. Neural Networks, 10, 9, 1627−1636.）を利用すれば、容易に実現できる。なお、自動形成されたNs個の回路の概念i(=1,...,Ns)は、知識ベース９１５に登録される。
【０１６５】
つぎに、配置規則抽出処理（Ｓ１００７）では、知識ベース９１５に保存される回路の概念i(=1,...,Ns)と、回路データベース９０８から、それらの元となった回路（回路データ）の対となる配置データを読み込み、回路の概念の各々に対して、その配置における規則性を自動抽出する。例えば、規則性として配置データの統計的情報を抽出すればよい。ここで、回路の概念iを構成する部品数をNiで表すことにすると、統計的情報としては、例えば、回路の概念iを構成する部品のペア[j,k](j,k=1,...,Ni|j≠k)の各々に対して、それと対応が取れる回路データ中の部品ペアの配置データにおける部品間距離の平均dijkや標準偏差σijkなどを抽出すればよい。
【０１６６】
この他にも、ピン間距離の平均や分散、部品間の配置角度の平均差異など、抽出できる情報は様々あるが、以下では、簡単のため、配置の規則性として、部品間距離の平均dijkと標準偏差σijkを抽出した場合を説明する。なお、回路の概念iに関して抽出された配置の規則性（この場合は部品間距離の平均を要素とした平均行列[dijk](j,k=1,...,Ni|j≠k)と分散を要素とした分散行列[σijk](j,k=1,...,Ni|j≠k)）は、その回路の概念iと対になる形で知識ベース９１５に登録される。
【０１６７】
以下では、知識ベース９１５に登録された回路の概念とその対となる配置の規則性とを利用して、自動配置を行なう処理を説明する。
まず、新規回路データ９０７から新規の回路データを読み込む（Ｓ１００８）。次に、知識ベース９１５から回路の概念を１つ読み込む（Ｓ１００９）。
つぎに、回路マッチング処理（Ｓ１０１０）であるが、これは、前記のＳ１００３や、前記の実施の形態１で説明した図２におけるＳ２０３からＳ２１１までの処理と同様である。つまり、新規の回路データと回路の概念との間のマッチングを行なう。これにより、新規の回路データと回路の概念の部品との間の対応関係が抽出できることになる。
【０１６８】
次に、結果処理（Ｓ１０１１）で、そのマッチング結果（新規の回路データと回路の概念の部品との間の対応関係や、（数９）のF(x)の値など）を保存する。さらに、知識ベース９１５中に読んでいない回路の概念が残っている場合には、Ｓ１００９に戻る。したがって、最終的には、結果処理（Ｓ１０１１）で、知識ベース９１５中の回路の概念の各々と新規の回路データとのマッチング結果が保存されることになる。
【０１６９】
次に、配置処理（Ｓ１０１２）は、結果処理（Ｓ１０１１）で保存されたマッチング結果を受け、知識ベース９１５中の回路の概念の内、新規の回路データとのマッチング度の高い回路の概念と対になる配置の規則性を利用して、新規の回路データを配置する。ここで、マッチング度としては、例えば、マッチング結果の一部である（数９）の評価関数の値の符号を反転させた値などを用いる。新規の回路データの内、回路の概念とのマッチングが取れている部分（部分回路）はその概念と対になる配置の規則性を利用して配置し、そうでない部分は仮想配線長を最短化するなどによって配置する。
【０１７０】
以上の配置処理（Ｓ１０１２）は、前記実施の形態１の図２における配置処理（Ｓ２１４〜Ｓ２１８）と同様に実現できる。つまり、前記実施の形態１における配置処理では、Ns個の回路データの対となる配置データに見習って配置するが、ここでの配置処理（Ｓ１０１２）では、Ns個の回路の概念の対となる配置の規則性にしたがって配置するわけである。具体的には、（数１２）の配置のコスト関数において、回路データiの対となる配置データiにおける部品jとkとの間の部品間距離であるbijkを、回路の概念iの対となる配置の規則性における部品jとkとの間の部品間距離の平均dijkに置き換える。
【０１７１】
これに加えて、（数１２）の配置のコスト関数におけるパラメータcijkを、部品間距離の標準偏差σijkに置き換えればよい。これにより、規則性を満たした配置を実現することができる。
【０１７２】
最後に、配置データ処理（Ｓ１０１３）は、配置処理（Ｓ１０１２）で得られた新規配置データを配置データ９０９保存し、終了する。
【０１７３】
（実施の形態３）
図９に、本発明の実施の形態３の自動配置システムのブロック図を示すが、その構成は実施の形態２と同様であるので説明は省略する。
【０１７４】
上記のように構成された自動配置装置の動作について、図１２のフローチャートを用いて説明する。
【０１７５】
回路概念生成処理（Ｓ２０００〜Ｓ２００２）について以下に説明する。
部品数の入力（Ｓ２０００）は、配置規則抽出に必要な回路データに共通または類似する部分回路に含まれる部品数を設定するもので、設定した部品数が２であれば部品ペアであるし、３であれば３つの部品の組み合わせを部分回路となる。
また、設定できる部品数は１つではなく、部品数２と部品数３、あるいは部品数２、部品数４と部品数５という複数の部品数の組合せで設定しても良い。
【０１７６】
以下では簡単に説明するため、部品数２の場合で説明するが、２以上の整数あるいはその複数の組み合わせであれば良い。
【０１７７】
回路データベース９０８中の回路データ（以降、回路と呼ぶ）を読み込む（Ｓ２００１）。
【０１７８】
つぎに、概念形成処理（Ｓ２００２）であるが、部品表現において、各ノードの属性と属性値および各エッジの属性と属性値を求め、一致または類似している部品ペアを認識し、回路の概念を形成する。例えば、各ノードの属性を部品種類とし、各ノードの属性を配線本数とした場合、ＩＣとコンデンサが配線数１で接続している場合、トランジスタとレジスタが配線数１で接続している場合等を回路の概念として形成する。
【０１７９】
つぎに、配置規則抽出処理（Ｓ２００３）では、知識ベース９１５に保存される回路の概念i(=1,...,Ns)と、回路データベース９０８から、それらの元となった回路（回路データ）の対となる配置データを読み込み、回路の概念の各々に対して、その配置における規則性を自動抽出する。例えば、規則性として配置データの統計的情報を抽出すればよい。ここで、回路の概念iを構成する部品数をNiで表すことにすると、統計的情報としては、例えば、回路の概念iを構成する部品ペア[j,k](j,k=1,...,Ni|j≠k)の各々に対して、それと対応が取れる回路データ中の部品ペアの配置データにおける部品間距離の平均dijkや標準偏差σijkなどを抽出すればよい。
【０１８０】
この他にも、ピン間距離の平均や分散、部品間の配置角度の平均差異など、抽出できる情報は様々あるが、以下では、簡単のため、配置の規則性として、部品間距離の平均dijkと分散sijkを抽出した場合を説明する。なお、回路の概念iに関して抽出された配置の規則性は、その回路の概念iと対になる形式で知識ベース９１５に登録される。
【０１８１】
以下に、知識ベース９１５に登録された回路の概念とその対となる配置の規則性とを利用して、自動配置を行なう処理を説明する。
まず、新規回路データ９０７から新規の回路データを読み込む（Ｓ２００４）。
【０１８２】
つぎに、知識ベース９１５から回路の概念を１つ読み込む（Ｓ２００５）。
つぎに、回路マッチング処理（Ｓ２００６）であるが、これは、新規の回路データに含まれる部品ペアと回路の概念との間のマッチングを行なう。これにより、新規の回路データと回路の概念の部品との間の対応関係が抽出できることになる。つまり、新規の回路データに含まれる部品ペアと回路の概念の部品ペアとの間のノードおよびエッジの属性値を比較することにより、新規の回路データに含まれる部品ペアと回路の概念との間のマッチングを行なうことができる。あるいは、前記の実施の形態１で説明した図２におけるＳ２０３からＳ２１１までの処理や、前記の実施の形態２で説明した図１０におけるＳ１０１０と同様なマッチング処理をしても良い。
【０１８３】
次に、結果処理（Ｓ２００７）で、そのマッチング結果（新規の回路データと回路の概念の部品との間の対応関係など）を保存する。さらに、知識ベース９１５中に読んでいない回路の概念が残っている場合には、Ｓ２００５に戻る。したがって、最終的には、結果処理（Ｓ２００７）で、知識ベース９１５中の回路の概念の各々と新規の回路データとのマッチング結果が保存されることになる。
【０１８４】
次に、配置処理（Ｓ２００８）は、結果処理（Ｓ２００７）で保存されたマッチング結果を受け、知識ベース９１５中の回路の概念の内、新規の回路データとのマッチング度の高い回路の概念と対になる配置の規則性を利用して、新規の回路データを配置する。新規の回路データの内、回路の概念とのマッチングが取れている部分（部分回路）はその概念と対になる配置の規則性を利用して配置し、そうでない部分は仮想配線長を最短化するなどによって配置する。
【０１８５】
前記実施の形態１における配置処理では、Ns個の回路データの対となる配置データに見習って配置するが、本実施の形態での配置処理（Ｓ２００８）では、Ns個の回路の概念の対となる配置の規則性にしたがって配置するわけである。具体的には、（数１２）の配置のコスト関数において、回路データiの対となる配置データiにおける部品jとkとの間の部品間距離であるbijkを、回路の概念iの対となる配置の規則性における部品jとkとの間の部品間距離の平均dijkに置き換えるものである。
【０１８６】
最後に、配置データ処理（Ｓ２００９）は、配置処理（Ｓ２００８）で得られた新規配置データを配置データ９０９保存し、終了する。
【０１８７】
なお、配置処理において、（数１２）の配置のコスト関数におけるパラメータcijkを、部品間距離の分散sijkに置き換えても良く、これにより、規則性を満たした配置を実現することができる。
【０１８８】
なお、配置規則抽出処理（Ｓ２００３）において、回路の概念iを構成する部品のペア[j,k](j,k=1,...,Ni|j≠k)の各々に対して、それと対応が取れる回路データ中の部品ペアの数があらかじめ設定した数よりも少ない場合は、（数１２）の配置のコスト関数におけるパラメータcijkをは任意の定数としても良い。あるいは、回路の概念iを構成する部品のペアと対応が取れる回路データ中の部品ペアの数があらかじめ設定した数よりも少ない場合は、規則として考慮せず、仮想配線長を最短化するなどによって配置しても良い。
【０１８９】
本実施の形態では、配置規則抽出に必要な回路データに共通または類似する部分回路に含まれる部品数を設定することにより、実施の形態２で説明した図１０におけるＳ１００１からＳ１００６の処理と比較して、概念形成が高速に行なえる。
【０１９０】
【発明の効果】
以上のように、本発明は、構造を持った情報である回路データをグラフに変換し、グラフ間のマッチングを行なうことで、回路マッチングを実行し、マッチング度の高い回路データを検索し、検索した回路データの対となる配置データに沿って、新規回路データを配置することができ、熟練者と同様な配置ができるもので、その効果は大きい。
【図面の簡単な説明】
【図１】本発明の実施の形態１における自動配置システムのブロック図
【図２】本発明の実施の形態１における自動配置装置の動作を示すフローチャート
【図３】（ａ）サンプル回路図
（ｂ）サンプル回路の部品リストを示す図
（ｃ）サンプル回路のネットリストを示す図
【図４】ネット表現に従ったグラフを示す図
【図５】部品表現に従ったグラフを示す図
【図６】ニューラルネットの収束時の状態を説明する図
【図７】ネット表現を利用した場合の数値実験の結果を示す図
【図８】部品表現を利用した場合の数値実験の結果を示す図
【図９】本発明の実施の形態２における自動配置システムのブロック図
【図１０】本発明の実施の形態２における自動配置装置の動作を示すフローチャート
【図１１】同自動配置装置のベクトル生成処理の各々の回路の部品と融合回路の部品との対応関係を説明する図
【図１２】本発明の実施の形態３における自動配置装置の動作を示すフローチャート
【符号の説明】
１０、９００  自動配置装置
１１、９０１  ＣＡＤ
１２、９０２  実装機
１３、９０３  ＣＰＵ
１４、９０４  ディスプレイ／キーボード
１５、９０５  メモリ
１６、９０６  ＦＤ（フロッピィディスク）ユニット
１７、９０７  新規回路データ
１８、９０８  回路データベース
１９、９０９  配置データ
２０、９１０  バス
２１〜２３、９１１〜９１３  Ｉ／Ｆユニット
２４、９１４  ネットワーク
９１５  知識ベース
【図１】
0003791239.tif 000016
【図２】
0003791239.tif 000017
【図３】
0003791239.tif 000018
【図４】
0003791239.tif 000019
【図５】
0003791239.tif 000020
【図６】
0003791239.tif 000021
【図７】
0003791239.tif 000022
【図８】
0003791239.tif 000023
【図９】
0003791239.tif 000024
【図１０】
0003791239.tif 000025
【図１１】
0003791239.tif 000026
【図１２】
0003791239.tif 000027