(57)【要約】【課題】集積回路のチップサイズを小さくする。【解決手段】ネットリスト構築プログラムは、抽出処理と、置換処理と、接続処理と、生成処理とをコンピュータに実行させる。抽出処理は、回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出する。置換処理は、抽出した複数の素子を１つの共有素子に置換する。接続処理は、抽出した複数の素子に接続される配線を置換した共有素子に接続する。生成処理は、複数のネットリストを結合した結合ネットリストを生成する。【選択図】図４
2015095010.tif 000002
【特許請求の範囲】
【請求項１】
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出し、
前記抽出した複数の素子を１つの共有素子に置換し、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続し、
前記複数のネットリストを結合した結合ネットリストを生成する
処理をコンピュータに実行させることを特徴とするネットリスト構築プログラム。
【請求項２】
前記回路を配置する実装範囲の外部端子の位置と、素子の接続先の素子または外部端子を記述した前記複数のネットリストとを取得し、
前記ネットリストごとに、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が、第１閾値以下になるように、前記実装範囲に各素子を配置し、
前記抽出処理において、互いの距離が第２閾値以下にある複数の素子を抽出する
処理をコンピュータに実行させることを特徴とする請求項１に記載のネットリスト構築プログラム。
【請求項３】
前記配置処理において、前記素子の大きさを無視して前記実装範囲に素子を配置する
処理をコンピュータに実行させることを特徴とする請求項２に記載のネットリスト構築プログラム。
【請求項４】
前記共有素子の入力側に接続される複数の配線と前記共有素子との間に、前記共有素子に接続する配線を切り替えるセレクタを挿入する
処理をコンピュータに実行させることを特徴とする請求項１〜３のいずれか一つに記載のネットリスト構築プログラム。
【請求項５】
前記回路を配置する実装範囲の外部端子に複数の配線が接続されるとき、前記外部端子の入力側に接続される複数の配線と前記外部端子との間に、前記外部端子に接続する配線を切り替えるセレクタを挿入する
処理をコンピュータに実行させることを特徴とする請求項１〜４のいずれか一つに記載のネットリスト構築プログラム。
【請求項６】
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出する抽出部と、
前記抽出した複数の素子を１つの共有素子に置換する置換部と、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続する接続部と、
前記複数のネットリストを結合した結合ネットリストを生成する生成部と、
を備えることを特徴とするネットリスト構築装置。
【請求項７】
コンピュータによって実行されるネットリスト構築方法であって、
前記コンピュータは、
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出し、
前記抽出した複数の素子を１つの共有素子に置換し、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続し、
前記複数のネットリストを結合した結合ネットリストを生成する
ことを実行するネットリスト構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットリストを構築する技術に関する。
【背景技術】
【０００２】
集積回路は、大量生産することにより、製造コストが抑制される。したがって、集積回路の開発では、大量生産を実現するために、例えば、多くの需要が見込まれる汎用的な集積回路を開発する。ここで、集積回路とは、例えば、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）のことである。
【０００３】
汎用的な集積回路は、例えば、図１に示すように、複数の排他回路を搭載し、様々な装置に適用可能に設計される。ここで、排他回路とは、選択的に用いられ、それぞれが同時に動作しない回路である。排他回路には、例えば、集積回路が通信回路であるとき、通信回路を搭載する通信装置が用いられる、地域特有の周波数に対応した送受信回路がある。
【０００４】
関連する他の技術として、大きさの異なるブロックを自動的に配置し、配線を決定するための高集積回路のマクロセル配置配線装置は、大きさの無いブロック間をばねで連結した、質点系のばねモデルを使って各ブロックを初期配置する。そして、マクロセル配置配線装置は、少なくとも一部のブロックの大きさを円で与えて、ブロック間の重なりが無くなるように、ブロックを再配置する。さらに、マクロセル配置配線装置は、外形を回路基板の枠に合わせてコンパクト化する。また、マクロセル配置配線装置は、ブロックの形状を円から実際の形状に変更する。そして、マクロセル配置配線装置は、ブロックを膨脹させて、配線のための領域を割当てる。さらに、マクロセル配置配線装置は、許容範囲内で、各ブロックのアスペクト比を調整する技術が知られている。
【０００５】
関連する他の技術として、半導体設計システムが、外部とモジュールとの間の接続情報とモジュール間の接続情報とを含む設計情報と、マクロ情報と、チップ情報とに基づいて、モジュールの配置位置を決定する技術が知られている。
【０００６】
関連する他の技術として、プログラム・ストレージ装置は、論理素子およびラッチの論理設計を準備する。また、プログラム・ストレージ装置は、準備した論理設計に基づいてこれらの論理素子およびラッチを集積回路内に配置することによって物理設計を作成する。プログラム・ストレージ装置は、物理設計を作成するプロセス中に、同じクロック・サイクル中に遷移しないラッチ、同じ論理機能に関係しないラッチ、同じクロック・ドメイン内にあるラッチ、および互いに所与の物理的な近接範囲内にあるラッチを組み合わせる。これにより、プログラム・ストレージ装置は、冗長なラッチを削除する。冗長なラッチを削除するプロセスは、少なくとも２つのラッチを単一のラッチに置き換えることを含む。そして、プログラム・ストレージ装置は、冗長なラッチを削除するプロセスで物理設計が修正され、この修正された物理設計のテストを行って、この修正された物理設計が予想どおり動作するかどうかを判定する技術が知られている。
【０００７】
関連する技術として、大規模集積回路の設計方法では、複数の機能ブロック間で、同時に動作するブロックでない場合に、各ブロックのレジスタの対応付けを行い、組を構成する２つのレジスタを、１つの２入力のセレクタと、１つのレジスタとに置き換える。そして、大規模集積回路の設計方法では、同時に動作しない機能ブロックの一方のブロックが選択されるように構成する技術が知られている（例えば、特許文献１〜４）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平３−１０８７３９号公報
【特許文献２】特開２００１−４４２９０号公報
【特許文献３】特開２００６−２３８５９号公報
【特許文献４】特開２００５−１０７５７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述した汎用的な集積回路では、例えば、排他回路の数が多くなると、専用の集積回路と比較して集積回路のチップサイズが大きくなるという問題がある。
【００１０】
本発明は、一側面として、集積回路のチップサイズを小さくする技術を提供する。
【課題を解決するための手段】
【００１１】
本明細書で開示するネットリスト構築プログラムのひとつに、抽出処理と、置換処理と、接続処理と、生成処理とをコンピュータに実行させるネットリスト構築プログラムがある。抽出処理は、回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出する。置換処理は、抽出した複数の素子を１つの共有素子に置換する。接続処理は、抽出した複数の素子に接続される配線を置換した共有素子に接続する。生成処理は、複数のネットリストを結合した結合ネットリストを生成する。
【発明の効果】
【００１２】
１実施態様によれば、集積回路のチップサイズを小さくすることができる。
【図面の簡単な説明】
【００１３】
【図１】従来の集積回路を示す図である。
【図２】集積回路の一実施例を示す図である。
【図３】集積回路を設計する処理を示すフローチャートである。
【図４】ネットリスト構築装置の一実施例を示す機能ブロック図である。
【図５】範囲情報の一例を示す図である。
【図６】実装範囲の一例を示す図である。
【図７】制御文の一例を示す図である。
【図８】端子情報の一例を示す図である。
【図９】ネットリスト１に対応するネットリストテーブルの一例を示す図である。
【図１０】ネットリスト１に対応するネットリストテーブルの回路図を示す図である。
【図１１】ネットリスト１に対応するインスタンステーブルの一例を示す図である。
【図１２】ネットリスト２に対応するネットリストテーブルの一例を示す図である。
【図１３】ネットリスト２に対応するネットリストテーブルの回路図を示す図である。
【図１４】ネットリスト２に対応するインスタンステーブルの一例を示す図である。
【図１５】ネットリスト３に対応するネットリストテーブルの一例を示す図である。
【図１６】ネットリスト３に対応するネットリストテーブルの回路図を示す図である。
【図１７】ネットリスト３に対応するインスタンステーブルの一例を示す図である。
【図１８】仮想配置の一例を示す図である。
【図１９】変更後のネットリスト２に対応するインスタンステーブルの一例を示す図である。
【図２０】ネットリスト２に対応する名前変換テーブルの一例を示す図である。
【図２１】レコード追加後のネットリスト１に対応するインスタンステーブルの一例を示す図（その１）である。
【図２２】インスタンス名変更後のネットリスト２に対応するネットリストテーブルの一例を示す図である。
【図２３】結合後のネットリスト１に対応するネットリストテーブルの一例を示す図（その１）である。
【図２４】結合後のネットリストテーブルに対応する回路図を示す図（その１）である。
【図２５】変更後のネットリスト３に対応するインスタンステーブルの一例を示す図である。
【図２６】ネットリスト３に対応する名前変換テーブルの一例を示す図である。
【図２７】レコード追加後のネットリスト１に対応するインスタンステーブルの一例を示す図（その２）である。
【図２８】インスタンス名変更後のネットリスト３に対応するネットリストテーブルの一例を示す図である。
【図２９】結合後のネットリスト１に対応するネットリストテーブルの一例を示す図（その２）である。
【図３０】結合後のネットリストテーブルに対応する回路図を示す図（その２）である。
【図３１】結合後のネットリスト１に対応するネットリストテーブルの一例を示す図（その３）である。
【図３２】レコード追加後のネットリスト１に対応するインスタンステーブルの一例を示す図（その３）である。
【図３３】結合後のネットリストテーブルに対応する回路図を示す図（その３）である。
【図３４】排他回路の選択とクロック入力とを示す図である。
【図３５】ネットリスト構築処理を示すフローチャート（その１）である。
【図３６】ネットリスト構築処理を示すフローチャート（その２）である。
【図３７】仮想配置処理を示すフローチャート（その１）である。
【図３８】仮想配置処理を示すフローチャート（その２）である。
【図３９】仮想配置処理を示すフローチャート（その３）である。
【図４０】仮想配置処理を示すフローチャート（その４）である。
【図４１】ネットリストの結合処理を示すフローチャート（その１）である。
【図４２】ネットリストの結合処理を示すフローチャート（その２）である。
【図４３】ネットリストの結合処理を示すフローチャート（その３）である。
【図４４】ネットリストの結合処理を示すフローチャート（その４）である。
【図４５】セレクタの挿入処理を示すフローチャート（その１）である。
【図４６】セレクタの挿入処理を示すフローチャート（その２）である。
【図４７】セレクタの挿入処理を示すフローチャート（その３）である。
【図４８】コンピュータ装置の一実施例を示すブロック図である。
【発明を実施するための形態】
【００１４】
［実施形態］
実施形態のネットリスト構築装置について説明する。
【００１５】
実施形態のネットリスト構築装置は、例えば、ＲＴＬ記述の外部端子名が共通であり、クロックとリセットが直接外部端子から接続されている複数の排他回路を含む集積回路に適用し、集積回路のチップサイズを小さくするものである。なお、ＲＴＬとは、Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌの略である。以下の説明では、複数の排他回路を含む集積回路のことを、単に集積回路とも言う。
【００１６】
図１は、従来の集積回路を示す図である。
図１を参照して、従来の集積回路について説明する。
【００１７】
集積回路１００は、共通回路１０１と、排他回路１１１〜１１ｎとを備える。以下の説明では、排他回路１１１〜１１ｎのことを、まとめて排他回路１１０とも言う。
【００１８】
共通回路１０１は、集積回路１００が動作するとき、排他回路１１１〜１１ｎのいずれか一つと組み合わせて用いられる回路である。そして、共通回路１０１は、例えば、入力信号Ｃと、選択された排他回路１１０の出力信号（図示せず）とが入力されると、入力された信号に応じた演算結果を出力信号として出力する。
【００１９】
排他回路１１１〜１１ｎは、選択的に用いられ、それぞれが同時に動作しない回路である。そして、選択された排他回路１１０は、集積回路１００が動作するとき、共通回路１０１と組み合わせて用いられる。排他回路１１０は、例えば、入力信号Ｓが入力されると、入力された信号に応じた演算結果を示す出力信号を共通回路１０１に出力する。また、排他回路１１１〜１１ｎは、例えば、後述する制御回路から選択信号が入力されると、入力された信号に応じて動作および非動作を切り替える。すなわち、集積回路１００が動作するときに用いられる排他回路１１０は、制御回路により選択される。
【００２０】
従来の集積回路１００では、排他回路１１１〜１１ｎの数が多くなるほど、チップサイズが大きくなると言う問題がある。以下の説明では、集積回路１００のチップサイズが大きくなる一例を述べる。集積回路１００が共通回路１０１と排他回路１１０とを含む通信回路であるとき、排他回路１１０は、例えば、様々な地域の通信装置に適用するため、異なる周波数に対応する送受信回路として複数搭載される。すなわち、通信回路（集積回路１００）は、使用される地域が増えるほど、多くの送受信回路（排他回路１１０）を搭載するため、チップサイズが大きくなる。なお、様々な地域の通信装置に適用可能な通信回路を開発するのは、通信回路の大量生産を可能にし、製造コストを抑制するためである。
【００２１】
図２は、集積回路の一実施例を示す図である。
図２を参照して、実施形態のネットリスト構築装置により設計された、排他回路２１０を搭載する集積回路の一例を説明する。
【００２２】
集積回路２００は、共通回路２０１と、排他回路２１０とを備える。
共通回路２０１は、集積回路２００が動作するとき、排他回路２１０と組み合わせて用いられる回路である。そして、共通回路２０１は、例えば、入力信号Ｃと、排他回路２１０の出力信号（図示せず）とが入力されると、入力された信号に応じた演算結果を出力信号として出力する。
【００２３】
排他回路２１０は、図１に示す排他回路１１１〜１１ｎの持つ機能を有し、制御回路から選択信号が入力されると、入力された信号に応じた排他回路１１１〜１１ｎのいずれか一つとして動作する。すなわち、排他回路２１０は、排他回路１１１〜１１ｎのどの回路として動作するのかを、制御回路により選択される。また、排他回路２１０は、集積回路２００が動作するとき、共通回路２０１と組み合わせて用いられる。そして、排他回路２１０は、例えば、入力信号Ｓが入力されると、選択された排他回路１１０として機能し、入力された信号に応じた演算結果を示す出力信号を共通回路２０１に出力する。
【００２４】
排他回路２１０は、集積回路２００のチップ上にある排他回路２１０の実装範囲に、排他回路１１１〜１１ｎの機能を搭載する。
【００２５】
実施形態のネットリスト構築装置は、排他回路１１１〜１１ｎに含まれる素子の中で、同じ機能を持ち、近くにある素子を1つの共有素子に置き換えた排他回路２１０のネットリストを生成するものである。これにより、ネットリスト構築装置は、排他回路２１０に含まれる素子数を、各排他回路１１１〜１１ｎに含まれる素子数の合計数よりも少なくする。したがって、ネットリスト構築装置で生成されたネットリストを用いて設計される排他回路２１０の実装範囲の面積は、各排他回路１１１〜１１ｎの実装範囲を合計した面積よりも小さくなる。よって、実施形態のネットリスト構築装置は、集積回路１００のチップサイズよりも、集積回路２００のチップサイズを小さくすることができる。
【００２６】
図３は、集積回路を設計する処理を示すフローチャートである。
図３を参照して、実施形態のネットリスト構築装置が集積回路を設計する処理を説明する。
【００２７】
ネットリスト構築装置は、排他回路１０１〜１０ｎのＲＴＬ記述３０１を取得する。ＲＴＬ記述とは、回路の動作をレジスタ間の信号の流れと、論理演算の組み合わせとを示す記述である。
【００２８】
ネットリスト構築装置は、取得した排他回路１１１〜１１ｎのＲＴＬ記述から、排他回路１０１〜１０ｎが有する素子間の接続関係を記述した、各排他回路１０１〜１０ｎのネットリストを合成する（Ｓ１０１）。このとき、ネットリスト構築装置は、テクノロジマッピングを行わない。これにより、後述する結合ネットリストを生成する処理において、ネットリスト構築装置は、各排他回路１１１〜１１ｎの素子の仮想配置をするとき、各素子の面積を無視して、素子を配置するための配置演算を実行する。したがって、ネットリスト構築装置は、配置演算の処理負担を抑制することができる。結合ネットリストとは、排他回路２１０のネットリストのことである。
【００２９】
なお、テクノロジマッピングとは、例えば、ネットリストを参照して、排他回路が有する素子に、セルライブラリのセルを割り当てる処理である。また、テクノロジマッピングでは、素子にセルを割り当てるとき、制約条件として、面積、性能、消費電力などを考慮する。
【００３０】
ネットリスト構築装置は、排他回路１０１〜１０ｎのネットリストごとに、ネットリストに含まれる素子を仮想配置する。仮想配置とは、例えば、排他回路１１０のネットリストに含まれる各素子を、大きさを無視した点とみなし、排他回路２１０の実装範囲に配置する処理である。
【００３１】
仮想配置では、排他回路２１０の実装範囲の高さと幅との比で示される相対座標と、相対座標で示される実装範囲内の外部端子の位置とを取得する。そして、仮想配置では、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が所定の閾値以下になるように演算を繰り返し、排他回路１１０に含まれる各素子を配置する。外部端子とは、例えば、排他回路２１０と排他回路２１０の実装範囲外の回路とを接続するための端子である。排他回路２１０の実装範囲外の回路とは、例えば、共通回路２０１や集積回路２００外の回路などのことである。
【００３２】
また、ネットリスト構築装置は、実装範囲に配置された排他回路１０１〜１０ｎに含まれる素子から、同じ機能を有し、互いの距離が近い複数の素子を抽出する。以下の説明では、同じ機能を有し、互いの距離が近い複数の素子のことを複数の抽出素子とも言う。
【００３３】
さらに、ネットリスト構築装置は、複数の抽出素子を１つの共有素子に置換する。そして、ネットリスト構築装置は、複数の抽出素子に接続される配線を、置換した共有素子に接続し、排他回路１０１〜１０ｎのネットリストを結合した結合ネットリストを生成する（Ｓ１０２）。以下の説明では、複数の抽出素子に接続される配線を、置換した共有素子に接続することを、接続先で共有素子を共有化するとも言う。また、接続先とは、例えば、ネットリストにおいて、複数の抽出素子と配線接続される入出力先の素子または外部端子のことを言う。
【００３４】
そして、ネットリスト構築装置は、排他回路２１０の機能を、選択的に排他回路１１０〜排他回路１１ｎの機能に切り替えるためのセレクタを結合ネットリストに追加する（Ｓ１０３）。以下の説明では、セレクタを追加した結合ネットリストのことを、単に結合ネットリストとも言う。
【００３５】
Ｓ１０３の処理の一例を、以下に説明する。ネットリスト構築装置は、結合ネットリストを検索し、複数の配線が接続される共有素子があるとき、共有素子の入力側に接続される複数の配線と共有素子との間に、共有素子に接続する配線を切り替えるセレクタを挿入する。さらに、ネットリスト構築装置は、結合ネットリストを検索し、複数の配線が接続される外部端子があるとき、外部端子の入力側に接続される複数の配線と外部端子との間に、外部端子に接続する配線を切り替えるセレクタを挿入する。
【００３６】
排他回路２１０に挿入された各セレクタには、選択信号の入力を受け付ける信号線が接続される。そして、排他回路２１０に挿入された各セレクタは、制御回路から入力される選択信号に応じて、排他回路２１０が排他回路１１１〜１１ｎのいずれかの機能を実現するように、共有素子の接続先を切り替える。
【００３７】
以上のように、ネットリスト構築装置は、複数の抽出素子を共有素子に置換した結合ネットリストを生成することにより、集積回路１００と比較して、結合ネットリストを用いて設計される集積回路２００のチップサイズを小さくすることができる。
【００３８】
次に、ネットリスト構築装置は、共通回路２０１のＲＴＬ記述３０５を取得する。
ネットリスト構築装置は、取得した共通回路２０１のＲＴＬ記述３０５から、共通回路２０１のネットリスト３０６を合成する（Ｓ１０４）。
【００３９】
ネットリスト構築装置は、共通回路２０１のネットリスト３０６と、結合ネットリストとを用いて、共通回路２０１と排他回路２１０とのテクノロジマッピングを行う（Ｓ１０５）。
【００４０】
ネットリスト構築装置は、共通回路２０１のブロックと、排他回路２１０のブロックとのレイアウトを行う（Ｓ１０６）。レイアウトとは、例えば、集積回路２００のチップに、共通回路２０１のブロックと、排他回路２１０のブロックとを配置し、各ブロック間の配線をすることである。
【００４１】
そして、ネットリスト構築装置は、集積回路２００が有する各ネットにおいて、入出力信号がタイミングを満たすか否かを検査する（Ｓ１０７）。Ｓ１０７の処理において、タイミングを満たさないネットがあるとき、ネットリスト構築装置は、例えば、テクノロジマッピングで割り当てたセルを変更するなどの処理を実行し、タイミングを満たすまで適宜設計の変更を繰り返しても良い。
【００４２】
図４は、ネットリスト構築装置の一実施例を示す機能ブロック図である。
図４を参照して、ネットリスト構築装置１について説明する。
【００４３】
ネットリスト構築装置１は、例えば、制御部１０と、記憶部２０と、入出力部３０とを備える。ネットリスト構築装置１は、例えば、後述するコンピュータ装置である。
【００４４】
制御部１０は、取得部１１と、配置部１２と、抽出部１３と、置換部１４と、接続部１５と、生成部１６と、挿入部１７とを含む。記憶部２０は、範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５とを含む。以下の説明では、範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５とをまとめて、制御情報とも言う。
【００４５】
また、入出力部３０は、入力部３１と、出力部３２とを含む。
取得部１１は、排他回路２１０を配置する実装範囲の外部端子の位置と、排他回路１１１〜１１ｎのネットリストとを取得する。素子とは、例えば、インバータやＮＡＮＤゲートなどのセルや、レジスタや加算器などの機能マクロのことである。
【００４６】
配置部１２は、取得部１１で取得したネットリストごとに、ネットリストに含まれる素子を実装範囲に仮想配置する。このとき、配置部１２は、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が、第１閾値以下になるように、実装範囲に各素子を配置する。各配線ベクトルの総和は、仮想配置をするとき、０になることが好ましい。したがって、第１閾値は、例えば、仮想配置処理を行う演算で発生する浮動小数点数の誤差よりも大きくなる範囲で、０に近い数値を設定しても良い。
【００４７】
また、配置部１２は、仮想配置を行うとき、例えば、各素子を点とみなして、大きさを無視して配置する。仮想配置は、排他回路１０１〜１０ｎのネットリストから、同じ機能を有し、互いの相対距離が近い複数の素子を抽出するために実行される。よって、仮想配置では、各素子を、各素子の相対的な位置がわかるように配置すれば良い。したがって、配置部１２は、仮想配置の配置演算を簡略化するために、各素子の大きさを無視して配置処理を行う。以下の説明では、相対距離のことを、単に距離とも言う。
【００４８】
抽出部１３は、排他回路１０１〜１０ｎのネットリストから、同じ機能を有する複数の素子を抽出する。このとき、抽出部１３は、配置部１２の仮想配置の結果を参照し、互いの距離が第２閾値以下にある複数の素子を抽出する。各抽出素子の距離が遠い場合には、接続先で共有素子を共有化するとき、集積回路２００上の接続先と共有素子とを接続する配線が長くなり、結果的にチップサイズが大きくなることがある。したがって、第２閾値には、接続先で共有素子を共有化することによるチップサイズの縮小と、配線が長くなることによるチップサイズの増大とを考慮して、チップサイズを縮小することができる距離を設定しても良い。
【００４９】
置換部１４は、複数の抽出素子を１つの共有素子に置換する。
接続部１５は、複数の抽出素子に接続される配線を、複数の抽出素子を置換した１つの共有素子に接続する。
【００５０】
生成部１６は、排他回路１０１〜１０ｎのネットリストを結合した、排他回路２１０の結合ネットリストを生成する。結合ネットリストは、排他回路１０１〜１０ｎのネットリストに含まれる複数の抽出素子を共有素子に置換した排他回路２１０のネットリストである。よって、結合ネットリストに含まれる素子の数は、排他回路１０１〜１０ｎのネットリストに含まれる素子の数よりも少なくなる。
【００５１】
挿入部１７は、共有素子の入力側に接続される複数の配線と共有素子との間に、共有素子に接続する配線を切り替えるセレクタを挿入する。さらに、挿入部１７は、排他回路２１０を配置する実装範囲の外部端子に複数の配線が接続されるとき、外部端子の入力側に接続される複数の配線と外部端子との間に、外部端子に接続する配線を切り替えるセレクタを挿入する。
【００５２】
範囲情報２１は、図５に示すように、実装範囲の幅と高さとを含む。なお、図５に示す範囲情報２１に格納されている値は、一例であり、実装範囲の形状の幅と高さの比率に応じて適宜設定しても良い。
【００５３】
幅は、図６に示すように、実装範囲のｘ方向に対応する相対座標の最大値を示す。
高さは、図６に示すように、実装範囲のｙ方向に対応する相対座標の最大値を示す。
【００５４】
ネットリスト構築装置１が、範囲情報２１に幅と高さとを格納する処理を説明する。
入力部３１は、例えば、ユーザから図７に示す制御文５００の入力を受け付ける。そして、入力部３１は、制御文５００の入力を受け付けると、制御文５００を取得部１１に出力する。
【００５５】
取得部１１は、制御文５００が入力されたとき、制御文５００の（１）に記述された実装範囲４００の指定開始キーワード（ｆｌｏｏｒ）を確認し、制御文５００の（２）に記述された幅（ｗｉｄｔｈ）と高さ（ｈｅｉｇｈｔ）とを取得する。そして、取得部１１は、取得した幅と高さとを範囲情報２１に格納する。
【００５６】
端子情報２２は、図８に示すように、無視端子の配列番号と、無視端子の端子名と、有効端子の配列番号と、有効端子の端子名と、有効端子の座標ｘと、有効端子の座標ｙとを含む。なお、図８に示す端子情報２２に格納されている値は、一例であり、各外部端子の位置情報に応じて適宜設定しても良い。位置情報とは、実装範囲４００内にある外部端子の座標ｘおよび座標ｙを含む情報である。
【００５７】
無視端子とは、仮想配置をするときに、配置演算で位置情報を用いない外部端子のことである。無視端子には、例えば、ネットリストに含まれる素子がどこに配置されても、集積回路２００の性能に影響が少ない外部端子を指定しても良い。集積回路２００の性能に影響が少ない外部端子とは、例えば、クロック端子やリセット端子などがある。クロック端子やリセット端子は、それぞれが全てのフリップフロップに接続されるため、どこに配置されても配線の長さや形状への影響が少ない。
【００５８】
無視端子の配列番号は、無視端子の各レコードを識別する情報である。
無視端子の端子名は、仮想配置をするときに、配置演算で位置情報を用いない外部端子の名称を示す情報である。
【００５９】
有効端子とは、仮想配置をするときに、配置演算で位置情報を用いる（有効にする）外部端子のことである。有効端子には、例えば、実装範囲外の回路が接続される外部端子などがある。
【００６０】
有効端子の配列番号は、有効端子の各レコードを識別する情報である。
有効端子の端子名は、仮想配置をするときに、配置演算で位置情報を用いる外部端子の名称を示す情報である。
【００６１】
有効端子の座標ｘは、例えば、図６に示す実装範囲４００内における外部端子のｘ座標を示す情報である。
【００６２】
有効端子の座標ｙは、例えば、図６に示す実装範囲４００内における外部端子のｙ座標を示す情報である。
【００６３】
ネットリスト構築装置１が、端子情報２２に各情報を格納する処理を説明する。
入力部３１は、例えば、ユーザから図７に示す制御文５００の入力を受け付ける。そして、入力部３１は、制御文５００が入力されると、制御文５００を取得部１１に出力する。
【００６４】
取得部１１は、制御文５００が入力されたとき、制御文５００の（５）に記述された無視する外部端子名（ＣＬＫ、ＸＲＳＴ）を取得する。そして、取得部１１は、取得した無視する外部端子名を端子情報２２の無視端子の端子名に格納する。
【００６５】
さらに、取得部１１は、制御文５００が入力されたとき、制御文５００の（６）に記述された有効にする各外部端子名（ＩＮ０、ＩＮ１…ＯＵＴ０、ＯＵＴ１、ＯＵＴ２）を取得する。また、取得部１１は、制御文５００が入力されたとき、制御文５００の（６）に記述された有効にする各外部端子名に関連付けられたｘ座標と、ｙ座標とを取得する。外部端子ＩＮ０に関連付けられたｘ座標とｙ座標とは、例えば、ｘ＝０、ｙ＝３０である。そして、取得部１１は、取得した有効にする各外部端子名と、各外部端子の位置情報とを関連付けて、それぞれ端子情報２２の端子名、座標ｘ、および座標ｙに格納する。
【００６６】
接続情報２３は、排他回路１１１〜１１ｎそれぞれのネットリストと、排他回路１１１〜１１ｎそれぞれのネットリストに対応するネットリストテーブル６０１〜６０３と、結合ネットリストとを含む。以下の説明では、排他回路１１０が３つであるものとして説明する。そして、３つの排他回路１１０は、それぞれ排他回路１１１〜１１３であるものとする。また、排他回路１１１〜１１３のネットリストは、それぞれ図９、図１２、図１５に示すネットリストテーブル６０１〜６０３に対応する情報を含むものとする。そして、ネットリストテーブル６０１〜６０３のことを、まとめてネットリストテーブル６００とも言う。
【００６７】
ネットリストテーブル６０１〜６０３は、それぞれ同じ項目を有するので、ネットリストテーブル６０１を参照して、ネットリストテーブル６００に含まれる情報について説明する。また、排他回路１１１のネットリストをネットリスト１と言う。排他回路１１２のネットリストをネットリスト２と言う。排他回路１１３のネットリストをネットリスト３と言う。そして、ネットリスト１（ネットリストテーブル６０１）は、例えば、図１０に示す排他回路１１１が含む素子の接続関係を示す。ネットリスト２（ネットリストテーブル６０２）は、例えば、図１３に示す排他回路１１２が含む素子の接続関係を示す。ネットリスト３（ネットリストテーブル６０３）は、例えば、図１６に示す排他回路１１３が含む素子の接続関係を示す。
【００６８】
また、ネットリスト構築装置１は、一例として、ネットリスト１を基準のネットリストとして、ネットリスト２と、ネットリスト３とをネットリスト１に結合することにより、結合ネットリストを生成するものとする。なお、基準のネットリストには、例えば、ネットリスト１に代えて、ネットリスト２またはネットリスト３を設定しても良い。また、基準のネットリストの設定には、任意の方法を用いても良い。基準のネットリストは、例えば、ユーザにより設定されたネットリストでも良い。基準のネットリストには、例えば、ネットリスト構築装置１に最初に入力されたネットリストが設定されても良い。
【００６９】
ネットリストテーブル６０１には、例えば、図９に示すように、配列番号と、入力端子名と、出力端子名と、使用フラグと、選択フラグと、削除フラグとを含む。なお、図９に示すネットリストテーブル６０１に格納されている値は、一例であり、ネットリスト構築装置１に入力されたネットリスト１に応じた値が格納される。
【００７０】
配列番号は、ネットリストテーブル６０１の各レコードを識別する情報である。
入力端子名は、信号の接続元を示す情報である。入力端子名には、例えば、外部端子の中の入力端子名、または素子の出力端子名が格納される。入力端子名の配列番号１のレコードに格納されているｉｎ０は、例えば、外部端子の中の入力端子名を示す。また、入力端子名の配列番号４のレコードに格納されているＩ０＿ＡＡＡ．ｏにおいて、Ｉ０＿ＡＡＡは、素子のインスタンス名を示す。ｏは、素子の出力端子を示す。したがって、Ｉ０＿ＡＡＡ．ｏは、素子Ｉ０＿ＡＡＡの出力端子を示す。ここで、インスタンス名とは、素子を識別する情報である。
【００７１】
出力端子名は、信号の接続先を示す情報である。出力端子には、例えば、外部端子の中の出力端子名、または素子の入力端子名が格納される。出力端子名の配列番号９のレコードに格納されているｏｕｔ０は、例えば、外部端子の中の出力端子名を示す。また、出力端子名の配列番号１のレコードに格納されているＩ０＿ＡＡＡ．ｉ０において、Ｉ０＿ＡＡＡは、素子のインスタンス名を示す。ｉ０は、素子の入力端子を示す。したがって、Ｉ０＿ＡＡＡ．ｉ０は、素子Ｉ０＿ＡＡＡの入力端子を示す。
【００７２】
使用フラグは、配列番号に対応するレコードがネットリストで使用されているか否かを示すフラグである。使用フラグは、例えば、ネットリスト構築装置１に入力されたネットリストの数と同じ桁数である。そして、配列番号０のレコードに格納されている使用フラグにおいて、一桁目の１は、ネットリスト１に配列番号０のレコードに示す接続情報が含まれることを示す。また、二桁目の０は、ネットリスト２に配列番号０のレコードに示す接続情報が含まれないことを示す。さらに、三桁目の０は、ネットリスト３に配列番号０のレコードに示す接続情報が含まれないことを示す。なお、ネットリストテーブル６０１は、ネットリスト１に対応するので、ネットリストテーブル６０１の全てのレコードに示す接続情報がネットリスト１に含まれる。したがって、ネットリストテーブル６０１には、初期値として、各使用フラグに１００が格納されている。
【００７３】
選択フラグは、セレクタを挿入するときに使用するフラグである。選択フラグの桁数は、例えば、ネットリスト構築装置１に入力されたネットリストの数と同じ数である。ここで、挿入するセレクタの入力端子数は、例えば、ネットリスト構築装置１に入力されたネットリストの数と同じ数である。
【００７４】
そして、選択フラグには、対応するレコードに格納された出力端子名が示す素子の入力端子または外部端子の中の出力端子の入力側にセレクタが接続されるとき、いずれかの桁に１が格納される。選択フラグの桁数は、例えば、セレクタの入力端子数と同じであり、それぞれがセレクタの各入力端子に対応している。
【００７５】
選択フラグには、対応するレコードに格納された出力端子名が示す素子の入力端子または外部端子の中の出力端子の入力側にセレクタが接続されないとき、０００が格納される。
【００７６】
削除フラグは、最終的に削除するレコードを示すフラグである。そして、削除フラグの初期値は０である。最終的に使用するレコードの削除フラグには、０が格納される。最終的に削除するレコードの削除フラグには、１が格納される。なお、最終的に削除するレコードとは、結合ネットリストを用いて集積回路２００を設計するとき、接続情報を示すレコードとして使用しないレコードのことである。また、最終的に使用するレコードとは、結合ネットリストを用いて集積回路２００を設計するとき、接続情報を示すレコードとして使用するレコードのことである。
【００７７】
ネットリスト構築装置１が、接続情報２３に各情報を格納する処理を説明する。
入力部３１は、例えば、ユーザからネットリスト１〜３の入力を受け付ける。そして、入力部３１は、ネットリスト１〜３が入力されると、ネットリスト１〜３を取得部１１に出力する。
【００７８】
取得部１１は、入力部３１からネットリスト１〜３が入力されたとき、ネットリスト１〜３に記述された入力端子と出力端子との接続関係を取得する。そして、取得部１１は、接続関係と、使用フラグと、選択フラグの初期値と、削除フラグの初期値０とを関連付けて接続情報２３に格納する。なお、排他回路１１１の使用フラグの初期値は、３つのネットリスト１〜３が入力されたので３桁であり、例えば、１００である。排他回路１１１の選択フラグの初期値は、３つのネットリスト１〜３が入力されたので３桁であり、例えば、０００である。
【００７９】
素子情報２４には、ネットリスト１〜３に対応するインスタンステーブル７０１〜７０３が格納される。図１１、図１４、図１７に示すインスタンステーブル７０１〜７０３には、ネットリスト１〜３に対応する情報が格納されている。そして、インスタンステーブル７０１〜７０３のことを、まとめてインスタンステーブル７００とも言う。インスタンステーブル７０１〜７０３は、それぞれ同じ項目を有するので、インスタンステーブル７０１を参照して、インスタンステーブル７００に含まれる情報について説明する。
【００８０】
インスタンステーブル７０１には、例えば、図１１に示すように、配列番号と、インスタンス名と、モジュール名と、共有番号と、座標ｘと、座標ｙと、入力端子名と、出力端子名とを含む。なお、図１０に示すインスタンステーブル７０１に格納されている値は、一例であり、ネットリスト構築装置１に入力されたネットリスト１に応じた値が格納される。
【００８１】
配列番号は、インスタンステーブル７０１の各レコードを識別する情報である。
インスタンス名は、素子を識別する情報である。
【００８２】
モジュール名は、素子の機能の種類を示す情報である。モジュール名には、例えば、セルやマクロの種類を示す名称が格納される。
【００８３】
共有番号は、ネットリスト１の配列番号を示す情報である。そして、共有番号の初期値は、例えば、−１である。また、図１９に示すように、インスタンステーブル７０２において、インスタンステーブル７０１に格納されている素子と、同じであり、互いの距離が第１閾値以下にある素子の共有番号には、インスタンステーブル７０１における同じ素子の配列番号が格納される。
【００８４】
座標ｘは、素子のｘ座標を示す情報である。座標ｘの初期値には、相対座標の基準点の座標が格納される。座標ｘの初期値は、例えば、図６に示す（０．０）を基準点とするとき、基準点と同じ（０．０）が格納される。
【００８５】
座標ｙは、素子のｙ座標を示す情報である。座標ｙの初期値には、相対座標の基準点の座標が格納される。座標ｙの初期値は、例えば、図６に示す（０．０）を基準点とするとき、基準点と同じ（０．０）が格納される。
【００８６】
入力端子名には、素子の入力端子の名称が格納される。インスタンステーブル７０１の配列番号０の入力端子名には、例えば、図１０に示すインスタンス名Ｉ０＿ＡＡＡに対応する素子の入力端子の名称、ｉ０，ｉ１が格納される。
【００８７】
出力端子名には、素子の出力端子の名称が格納される。インスタンステーブル７０１の配列番号０の出力端子名には、例えば、図１０に示すインスタンス名Ｉ０＿ＡＡＡに対応する素子の出力端子の名称、ｏが格納される。
【００８８】
ネットリスト構築装置１が、素子情報２４に各情報を格納する処理を説明する。
入力部３１は、例えば、ユーザからネットリスト１〜３の入力を受け付ける。そして、入力部３１は、ネットリスト１〜３が入力されると、ネットリスト１〜３を取得部１１に出力する。
【００８９】
取得部１１は、入力部３１からネットリスト１〜３が入力されたとき、ネットリスト１〜３に記述された各素子のインスタンス名と、モジュール名と、入力端子名と、出力端子名とを取得する。そして、取得部１１は、各素子のインスタンス名と、モジュール名と、入力端子名と、出力端子名とを関連付けて素子情報２４に格納する。さらに、取得部１１は、各素子のレコードの共有番号と、座標ｘと、座標ｙとに初期値を格納する。
【００９０】
変換情報２５には、例えば、図２０、図２６に示す名前変換テーブル１００２、１００３が格納される。そして、図２０に示す名前変換テーブル１００２、１００３は、各レコードを識別する配列番号と、インスタンステーブル７０２の変更前のインスタンス名と、変更後のインスタンス名とを格納する。
【００９１】
図１８は、仮想配置の一例を示す図である。
図１８を参照して、実施形態のネットリスト構築装置１によるネットリストに含まれる素子の仮想配置を説明する。
【００９２】
図１８において、素子ア〜オは、それぞれ１つの排他回路に対応するネットリストに含まれる素子である。また、素子アは、素子イ〜オに接続されている。仮想配置の処理中において、素子ア〜オは、図１８に示すように配置されたとする。
【００９３】
このとき、配置部１２は、素子アから、素子アの接続先である素子イ〜オに向かう各配線ベクトルの総和を求め、接続先の素子イ〜オの数４（素子アの接続先の数）で求めた各配線ベクトルの総和を除算した値を素子アの移動ベクトルとする。
【００９４】
図１８に示す例では、素子アの移動ベクトルが（−２．５,１．７５）となる。このとき、配置部１２は、素子アの移動前の座標（８，３）に移動ベクトルを加算して、素子アの移動後の座標(５．５，４．７５)を求める。そして、配置部１２は、素子アを座標(５．５，４．７５)に移動させる。ここで、移動ベクトルとは、素子を移動させる距離と方向とを示すベクトルである。
【００９５】
配置部１２は、例えば、ネットリストに含まれる素子を仮想配置するとき、上述した素子の位置を移動する処理を、ネットリストに含まれる全ての素子に対して実行し、全ての素子の移動ベクトルが第１閾値以下となるまで繰り返す。また、配置部１２は、例えば、ネットリストに含まれる素子を仮想配置するとき、ネットリスト１に含まれる全ての素子を原点（０．０）に配置した状態から始めても良い。配置部１２は、例えば、ネットリストに含まれる素子を仮想配置するとき、ネットリストに含まれる全ての素子を任意の点に配置した状態から始めても良い。
【００９６】
図１９〜図２４を参照して、ネットリスト構築装置１が、ネットリスト１にネットリスト２を結合する処理について説明する。以下の説明では、ネットリスト構築装置１に記憶された接続情報２３には、ネットリスト１〜３それぞれに対応するネットリストテーブル６０１〜６０３が格納されているものとする。また、ネットリスト構築装置１に記憶された接続情報２３には、ネットリスト１〜３それぞれに対応する仮想配置後の座標ｘ、座標ｙが格納されたインスタンステーブル７０１〜７０３が格納されているものとする。
【００９７】
ネットリスト構築装置１は、インスタンステーブル７０１とインスタンステーブル７０２を参照し、インスタンステーブル７０１にないモジュール名を、インスタンステーブル７０２から抽出する。そして、ネットリスト構築装置１は、図１９のインスタンステーブル７０２の配列番号０、１に示すように、インスタンステーブル７０１にないモジュール名に関連付けられたインスタンス名を、他のインスタンス名と重複しない名前に変更する。
【００９８】
また、ネットリスト構築装置１は、図２０の名前変換テーブル１００２の配列番号０〜２に示すように、インスタンステーブル７０２の変更前と変更後のインスタンス名を関連付けて格納する。
【００９９】
さらに、ネットリスト構築装置１は、図２１に示すように、図１９のインスタンステーブル７０２の配列番号０、１のレコードを、それぞれインスタンステーブル７０１の配列番号５、６に格納する。
【０１００】
次に、ネットリスト構築装置１は、インスタンステーブル７０１、７０２を参照し、インスタンステーブル７０１に一致するモジュール名があるが、互いの距離が第１閾値よりも離れているモジュールをインスタンステーブル７０２から抽出する。そして、ネットリスト構築装置１は、図１９のインスタンステーブル７０２の配列番号２に示すように、抽出したモジュールのインスタンス名を、他のインスタンス名と重複しない名前に変更する。なお、ネットリスト構築装置１は、インスタンステーブル７０１、７０２の座標ｘ、座標ｙを参照することにより、互いの距離が第１閾値よりも離れているモジュールを抽出する。
【０１０１】
また、ネットリスト構築装置１は、図２０の名前変換テーブル１００２の配列番号２に示すように、インスタンステーブル７０２の変更前と変更後のインスタンス名とを関連付けて格納する。
【０１０２】
さらに、ネットリスト構築装置１は、図２１に示すように、図１９のインスタンステーブル７０２の配列番号２のレコードをインスタンステーブル７０１の配列番号７に格納する。
【０１０３】
また、ネットリスト構築装置１は、インスタンステーブル７０１、７０２を参照し、インスタンステーブル７０１に一致するモジュール名があり、互いの距離が第１閾値以下の距離にあるモジュールをインスタンステーブル７０２から抽出する。そして、ネットリスト構築装置１は、図１９のインスタンステーブル７０２において、配列番号３〜５に示すように、抽出したモジュールのインスタンス名を、インスタンステーブル７０１に格納されているインスタンス名に変更する。なお、ネットリスト構築装置１は、インスタンステーブル７０１、７０２の座標ｘ、座標ｙを参照することにより、互いの距離が第１閾値以下の距離にあるモジュールを抽出する。
【０１０４】
また、ネットリスト構築装置１は、図１９のインスタンステーブル７０２の配列番号３〜５に示すように、抽出したモジュール名が格納されているインスタンステーブル７０１のレコードの配列番号を、インスタンステーブル７０２に格納する。
【０１０５】
ネットリスト構築装置１は、ネットリストテーブル６０２と、名前変換テーブル１００２とを参照して、図２２の太枠に示すように、ネットリストテーブル６０２に含まれるインスタンス名を、変更後のインスタンス名に変更する。
【０１０６】
また、ネットリスト構築装置１は、図２２に示すネットリストテーブル６０２の出力端子名の中で、図９に示すネットリストテーブル６０１に格納されていない出力端子名を抽出する。そして、ネットリスト構築装置１は、例えば、図２３の配列番号１２に示すように、抽出されたネットリストテーブル６０２の出力端子名のレコードを、ネットリストテーブル６０１に追加する。
【０１０７】
さらに、ネットリスト構築装置１は、図２２に示すネットリストテーブル６０２と、図９に示すネットリストテーブル６０１とから、互いの出力端子名が同じであり、入力端子名が異なるレコードをそれぞれ抽出する。そして、ネットリスト構築装置１は、例えば、図２３の配列番号０に示すように、ネットリストテーブル６０１の抽出したレコードにおいて、使用フラグを選択フラグにコピーする。さらに、ネットリスト構築装置１は、例えば、図２３の配列番号１４に示すように、ネットリストテーブル６０１から抽出したレコードを、ネットリストテーブル６０１に追加し、使用フラグを選択フラグにコピーする。以上により、図２３の出力端子名Ｉ０＿ＡＡＡ．ｉ０が示す入力端子の選択フラグは、入力端子Ｉ０＿ＡＡＡ．ｉ０の前段にセレクタを挿入することを示す。
【０１０８】
また、ネットリスト構築装置１は、図２２に示すネットリストテーブル６０２と、図９に示すネットリストテーブル６０１とから、入力端子名と出力端子名とが同じレコードを抽出する。そして、ネットリスト構築装置１は、例えば、図２３の配列番号３に示すように、抽出したレコードにおいて、ネットリスト２に対応する二桁目の使用フラグを１にする。以上により、図２３の配列番号３に対応するレコードの使用フラグは、対応する素子または外部端子の接続関係が排他回路１１１と排他回路１１２とで使用されることを示す。
【０１０９】
図２４は、図２３に示すネットリストテーブル６０１に対応する回路図を示す。図２４に示すように、図２３に示すネットリストテーブル６０１において、選択フラグが全て０でない入力端子の前段では、信号の衝突が起きている。したがって、ネットリスト構築装置１は、後述するセレクタを挿入する処理において、選択フラグが全て０でないレコードに対応する入力端子の前段にセレクタを挿入する。
【０１１０】
図２５〜図３０を参照して、ネットリスト構築装置１が、図２３に示すネットリストテーブル６０１に対応するネットリスト１にネットリスト３を結合する処理について説明する。また、図２６に示す名前変換テーブル１００３は、各レコードを識別する配列番号と、インスタンステーブル７０３の変更前のインスタンス名と、変更後のインスタンス名とを格納するテーブルである。
【０１１１】
ネットリスト構築装置１は、図２１に示すインスタンステーブル７０１と、図１７に示すインスタンステーブル７０３を参照し、インスタンステーブル７０１にないモジュール名を、インスタンステーブル７０３から抽出する。このとき、ネットリスト構築装置１は、インスタンステーブル７０３に格納されているモジュール名がインスタンステーブル７０１に全て含まれているので、次の処理に移行する。以下の説明では、参照するインスタントテーブルを、特に断らない限り、図２１に示すインスタンステーブル７０１と、図１７に示すインスタンステーブル７０３とする。
【０１１２】
次に、ネットリスト構築装置１は、インスタンステーブル７０１、７０３を参照し、インスタンステーブル７０１に一致するモジュール名があるが、互いの距離が第１閾値よりも離れているモジュールをインスタンステーブル７０３から抽出する。そして、ネットリスト構築装置１は、図２５のインスタンステーブル７０３の配列番号２、４に示すように、抽出したモジュールのインスタンス名を、他のインスタンス名と重複しない名前に変更する。なお、ネットリスト構築装置１は、インスタンステーブル７０１、７０３の座標ｘ、座標ｙを参照することにより、互いの距離が第１閾値よりも離れているモジュールを抽出する。
【０１１３】
また、ネットリスト構築装置１は、図２６の名前変換テーブル１００３の配列番号２、４に示すように、インスタンステーブル７０３の変更前と変更後のインスタンス名を関連付けて格納する。
【０１１４】
さらに、ネットリスト構築装置１は、図２７に示すように、図２５のインスタンステーブル７０３の配列番号２、４のレコードをインスタンステーブル７０１の配列番号８、９に格納する。
【０１１５】
また、ネットリスト構築装置１は、インスタンステーブル７０１、７０３を参照し、インスタンステーブル７０１に一致するモジュール名があり、互いの距離が第１閾値以下の距離にあるモジュールをインスタンステーブル７０３から抽出する。そして、ネットリスト構築装置１は、図２５のインスタンステーブル７０３において、配列番号０、１、３に示すように、抽出したモジュールのインスタンス名を、図２１のインスタンステーブル７０１に格納されているインスタンス名に変更する。なお、ネットリスト構築装置１は、インスタンステーブル７０１、７０３の座標ｘ、座標ｙを参照することにより、互いの距離が第１閾値以下の距離にあるモジュールを抽出する。
【０１１６】
また、ネットリスト構築装置１は、図２５のインスタンステーブル７０３の配列番号０、１、３に示すように、抽出したモジュール名が格納されているインスタンステーブル７０１のレコードの配列番号を、インスタンステーブル７０３に格納する。
【０１１７】
次に、ネットリスト構築装置１は、図１５に示すネットリストテーブル６０３と、名前変換テーブル１００３とを参照して、図２８の太枠に示すように、ネットリストテーブル６０３に含まれるインスタンス名を、変更後のインスタンス名に変更する。
【０１１８】
また、ネットリスト構築装置１は、図２８に示すネットリストテーブル６０３の出力端子名の中で、図２３に示すネットリストテーブル６０１に格納されていない出力端子名を抽出する。そして、ネットリスト構築装置１は、例えば、図２９の配列番号２２に示すように、抽出されたネットリストテーブル６０３の出力端子名のレコードを、ネットリストテーブル６０１に追加する。
【０１１９】
さらに、ネットリスト構築装置１は、図２８に示すネットリストテーブル６０３と、図２３に示すネットリストテーブル６０１とから、互いの出力端子名が同じであり、入力端子名が異なるレコードをそれぞれ抽出する。そして、ネットリスト構築装置１は、例えば、図２９の配列番号２に示すように、ネットリストテーブル６０１の抽出したレコードにおいて、使用フラグを選択フラグにコピーする。さらに、ネットリスト構築装置１は、例えば、図２９の配列番号２３に示すように、ネットリストテーブル６０３から抽出したレコードを、ネットリストテーブル６０１に追加し、使用フラグを選択フラグにコピーする。以上により、図２９の出力端子名Ｉ０＿ＤＤＤ．ｉ１が示す入力端子の選択フラグは、入力端子Ｉ０＿ＤＤＤ．ｉ１の前段にセレクタを挿入することを示す。
【０１２０】
また、ネットリスト構築装置１は、図２８に示すネットリストテーブル６０３と、図２３に示すネットリストテーブル６０１とから、入力端子名と出力端子名とが同じレコードを抽出する。そして、ネットリスト構築装置１は、例えば、図２９の配列番号５に示すように、抽出したレコードにおいて、ネットリスト３に対応する三桁目の使用フラグを１にする。また、ネットリスト構築装置１は、例えば、図２９の配列番号０に示すように、抽出したレコードにおいて、ネットリスト３に対応する三桁目の使用フラグを１にしたとき、セレクタが全て０でない場合、使用フラグを選択フラグにコピーする。以上により、図２９の配列番号５に対応するレコードの使用フラグは、対応する素子または外部端子の接続関係が排他回路１１１と排他回路１１３とで使用されることを示す。また、図２９の出力端子名Ｉ０＿ＡＡＡ．ｉ０が示す入力端子の選択フラグは、入力端子Ｉ０＿ＡＡＡ．ｉ０の前段にセレクタを挿入することを示す。
【０１２１】
図３０は、図２９に示すネットリストテーブル６０１に対応する回路図を示す。図３０に示すように、図２９に示すネットリストテーブル６０１において、選択フラグが全て０でない入力端子の前段では、信号の衝突が起きている。したがって、ネットリスト構築装置１は、後述するセレクタを挿入する処理において、選択フラグが全て０でない入力端子の前段にセレクタを挿入する。
【０１２２】
図３１〜図３３を参照して、ネットリスト構築装置１が、図２９に示すネットリストテーブル６０１にセレクタを挿入する処理について説明する。以下の説明では、特に断らない限り、ネットリストテーブル６０１は、図３１に示すネットリストテーブルを示す。また、インスタンステーブル７０１は、図３２に示すインスタンステーブル７０１を示す。
【０１２３】
ネットリスト構築装置１は、ネットリストテーブル６０１を参照し、選択フラグが全て０でない入力端子の種類と同じ数のセレクタを、太枠に示すように、インスタンス名が重複しないようにインスタンステーブル７０１へ追加する。このとき、ネットリスト構築装置１は、取得したネットリストの数と同じ数の入力数を持つセレクタを追加しても良い。以下の説明では、ネットリスト構築装置１は、ネットリスト１〜３の３つのネットリストを取得したので、追加するセレクタの入力数が３であるものとする。
【０１２４】
そして、ネットリスト構築装置１は、ネットリストテーブル６０１の配列番号を順番に参照し、選択フラグに１があるレコードの出力端子名に格納されている素子の入力端子を、選択フラグのフラグ位置に対応するセレクタの入力端子に置換する。また、ネットリスト構築装置１は、同じレコードの選択フラグに更に１があるとき、レコードに格納されている入力端子名と、選択フラグのフラグ位置に対応するセレクタの入力端子とを関連付けてネットリストテーブル６０１に追加する。
【０１２５】
さらに、ネットリスト構築装置１は、入力端子名をセレクタの出力端子とし、出力端子名を選択フラグに１があるレコードの出力端子名としたレコードをネットリストテーブル６０１に追加する。また、ネットリスト構築装置１は、選択フラグに１があるレコードの出力端子名と同じ出力端子名を持つレコードを抽出し、選択フラグのフラグ位置に対応するセレクタの入力端子を出力端子名と置換し、ネットリストテーブル６０１に追加する。そして、ネットリスト構築装置１は、選択フラグに１があるレコードの出力端子名と同じ出力端子名を持つレコードの削除フラグに１を格納する。
【０１２６】
一例として、ネットリスト構築装置１は、ネットリストテーブル６０１の配列番号０のレコードの選択フラグの１桁目に１が格納されているので、出力端子名を、Ｉ０＿ＡＡＡ．ｉ０からｎｅｗ＿ｓｅｌ＿１．ｉ［０］に置換する。さらに、ネットリストテーブル６０１の配列番号０の選択フラグには、三桁目に１が格納されているので、配列番号０の入力端子名ｉｎ１と、ｎｅｗ＿ｓｅｌ＿１．ｉ［２］とを関連付けたレコードを、配列番号３２に格納する。そして、ネットリスト構築装置１は、セレクタの出力端子名ｎｅｗ＿ｓｅｌ＿１．ｏとネットリストテーブル６０１の配列番号０に格納されている変更前の出力端子名Ｉ０＿ＡＡＡ．ｉ０とを関連付けたレコードを配列番号３３に格納する。
【０１２７】
ネットリスト構築装置１は、出力端子名にＩ０＿ＡＡＡ．ｉ０を格納した配列番号１４のレコードを抽出する。ネットリスト構築装置１は、ネットリストテーブル６０１の配列番号１４のレコードの選択フラグの３桁目に１が格納されているので、出力端子名を、Ｉ０＿ＡＡＡ．ｉ０からｎｅｗ＿ｓｅｌ＿１．ｉ［２］に置換し、配列番号３４に格納する。そして、ネットリスト構築装置１は、ネットリストテーブル６０１の配列番号１４のレコードの削除フラグを１にする。
【０１２８】
図３３は、図３１に示すネットリストテーブル６０１に対応する回路図６３を示す。図３２に示すように、図３１に示すネットリストテーブル６０１において、選択フラグが全て０でない入力端子の前段には、セレクタが挿入される。
【０１２９】
図３４は、排他回路の選択とクロック入力とを示す図である。
図３４を参照して、クロックと選択信号の入力について説明する。
【０１３０】
クロックは、消費電力削減のため、挿入したセレクト端子でゲートしても良い。この場合、結合ネットリストのクロック端子は、結合した数だけ仮想のクロック端子を用意しておき、最終的にゲーテッドクロックマクロを挿入しても良い。
【０１３１】
また、選択信号は、例えば、集積回路２００が搭載される装置の制御回路から入力され、結合ネットリストの生成時に挿入された、排他回路２１０が有する各セレクタの接続を切り替える。これにより、排他回路２１０は、排他回路１１１〜１１ｎのいずれかとして動作する。
【０１３２】
図３５、図３６は、ネットリスト構築処理を示すフローチャートである。
図３５、図３６を参照して、ネットリスト構築処理を説明する。以下の説明では、接続情報２３に、排他回路２１０に含まれる排他回路１１１〜１１ｎのネットリスト１〜ｎが格納されているものとする。また、ネットリスト構築装置１は、ネットリスト１〜ｎをそれぞれネットリストテーブル６０１〜６０ｎに変換し、ネットリスト構築処理に用いているものとする。
【０１３３】
図３５を参照して説明する。
取得部１１は、制御文５００を取得したか否かを判定する（Ｓ２０１）。
【０１３４】
取得部１１は、制御文５００を取得するまで、Ｓ２０１の処理を繰り返す（Ｓ２０１にてＮｏ）。すなわち、取得部１１は、制御文５００を取得するまで待機する。
【０１３５】
取得部１１は、制御文５００を取得すると（Ｓ２０１にてＹｅｓ）、排他回路１１ｘのネットリストｘを取得する（Ｓ２０２）。ここで、ｘの初期値は、例えば、１である。
【０１３６】
そして、取得部１１は、ネットリストｎを取得したか否かを判定する（Ｓ２０３）。取得部１１は、ネットリストｎを取得していないとき（Ｓ２０３にてＮｏ）、ｘをインクリメントして（Ｓ２０４）、Ｓ２０２の処理を実行する。
【０１３７】
また、配置部１２は、ネットリストｎを取得したとき（Ｓ２０３にてＹｅｓ）、排他回路１１ｘ内の素子を仮想配置する（Ｓ２０５）。ここで、ネットリストｎを取得したときとは、取得部１１が排他回路１１１〜１１ｎのネットリスト１〜ｎを全て取得したことを示す。
【０１３８】
そして、配置部１２は、排他回路１１ｎ内のセルを仮想配置したか否かを判定する（Ｓ２０６）。配置部１２は、排他回路１１ｎ内のセルを仮想配置していないとき（Ｓ２０６にてＮｏ）、ｘをインクリメントして（Ｓ２０７）、Ｓ２０５の処理を実行する。
【０１３９】
また、配置部１２は、ネットリストｎ内の素子を仮想配置したとき（Ｓ２０６にてＹｅｓ）、図３６に示すＳ２０８の処理を実行する。ここで、ネットリストｎ内の素子を仮想配置したときとは、配置部１２がネットリスト１〜ｎの全てを仮想配置したことを示す。
【０１４０】
図３６を参照して説明する。
制御部１０は、ネットリスト１にネットリストｘを結合する（Ｓ２０８）。
【０１４１】
そして、配置部１２は、結合ネットリストを仮想配置する（Ｓ２０９）。
制御部１０は、ネットリストｎを結合したか否かを判定する（Ｓ２１０）。制御部１０は、ネットリストｎを結合していないとき（Ｓ２１０にてＮｏ）、ｘをインクリメントして（Ｓ２１１）、Ｓ２０８の処理を実行する。
【０１４２】
挿入部１７は、ネットリストｎを結合したとき（Ｓ２１０にてＹｅｓ）、セレクタを結合ネットリストに追加する（Ｓ２１２）。ここで、ネットリストｎを結合したときとは、制御部１０が排他回路１１１〜１１ｎのネットリスト１〜ｎを全て結合したことを示す。
【０１４３】
そして、生成部１６は、セレクタを追加した結合ネットリスト１を出力する（Ｓ２１３）。
【０１４４】
図３７〜図４０は、仮想配置処理を示すフローチャートである。
図３７〜図４０を参照して、仮想配置処理を説明する。端子情報２２には、図８に示す情報が格納されているものとする。接続情報２３には、排他回路２１０に含まれる排他回路１１１〜１１ｎのネットリスト１〜ｎが格納されているものとする。また、ネットリスト１〜ｎは、取得部１１により、ネットリストテーブル６０１〜６０ｎに変換されているものとする。さらに、素子情報２４には、インスタンステーブル７０１〜７０ｎが格納されているものとする。以下の説明では、一例として、図９に示すインスタンステーブル７０１に含まれる素子の仮想配置処理を説明する。なお、配置部１２は、他のインスタンステーブル７０１〜７０ｎに含まれる素子についても、以下に説明する仮想配置処理を同様に実行する。
【０１４５】
図３７を参照して説明する。
配置部１２は、インスタンステーブル７０１に含まれる全ての素子を原点に配置する（Ｓ３０１）。
【０１４６】
そして、配置部１２は、移動させる移動素子ｘを選択する。移動素子ｘは、例えば、インスタンステーブル７０１に格納されている配列番号順に選択しても良い。ここで、ｘの初期値は、例えば、１である。
【０１４７】
また、配置部１２は、インスタンステーブル７０１の素子ｙを参照する（Ｓ３０８）。ここで、ｙは、ｘ以外の値であり、初期値は、例えば２である。
【０１４８】
配置部１２は、ネットリストテーブル６０１を参照し、移動素子ｘの接続先の素子名（インスタンス名）と、素子ｙの素子名とが同じであるか否かを判定する（Ｓ３０９）。
【０１４９】
配置部１２は、移動素子の接続先の素子名と、素子ｙの素子名とが異なるとき（Ｓ３０９にてＮｏ）、素子ｙを全て参照したか否かを判定する（Ｓ３１０）。
【０１５０】
配置部１２は、素子ｙを全て参照していないとき（Ｓ３１０にてＮｏ）、ｙをインクリメントして（Ｓ３１１）、Ｓ３０８の処理を実行する。
【０１５１】
配置部１２は、移動素子の接続先の素子名と、素子ｙの素子名とが同じとき（Ｓ３０９にてＹｅｓ）、インスタンステーブル７０１から素子ｙの座標ｘと座標ｙとを取得する（Ｓ３１２）。
【０１５２】
そして、配置部１２は、取得した素子ｙの座標ｘと座標ｙとを、前回までに加算した座標ｘと座標ｙとに加算する（Ｓ３１３）。なお、Ｓ３１３の処理において、前回までに加算した座標ｘと座標ｙがないときには、座標（０、０）に素子ｙの座標ｘと座標ｙとを加算する。
【０１５３】
また、配置部１２は、図示しない記憶領域を用いて接続数をインクリメントする（Ｓ３１４）。そして、配置部１２は、Ｓ３１０の処理を実行する。
【０１５４】
配置部１２は、素子ｙを全て参照したとき（Ｓ３１０にてＹｅｓ）、図３８に示すＳ３１５の処理を実行する（Ｓ３１５）。素子ｙを全て参照したときとは、Ｓ３１３において、素子ｘの接続先の各素子ｙの座標ｘと座標ｙとを全て加算したことを示す。
【０１５５】
図３８を参照して説明する。
配置部１２は、端子情報２２の外部端子ｚを参照する（Ｓ３１５）。ここで、ｚの、初期値は、例えば１である。
【０１５６】
配置部１２は、移動素子ｘの接続先の端子名と外部端子ｚの端子名とが同じであるか否かを判定する（Ｓ３１６）。
【０１５７】
配置部１２は、移動素子ｘの接続先の端子名と外部端子ｚの端子名が異なるとき（Ｓ３１６にてＮｏ）、外部端子ｚを全て参照したか否かを判定する（Ｓ３１７）。
【０１５８】
配置部１２は、外部端子ｚを全て参照していないとき（Ｓ３１７にてＮｏ）、ｚをインクリメントして（Ｓ３１８）、Ｓ３１５の処理を実行する。外部端子ｚを全て参照していないときとは、Ｓ３１５において、端子情報２２に格納された有効端子を全て参照していないことを示す。
【０１５９】
配置部１２は、移動素子ｘの接続先の端子名と外部端子ｚの端子名が同じとき（Ｓ３１６にてＹｅｓ）、端子情報２２から外部端子ｚの座標ｘと座標ｙとを取得する（Ｓ３１９）。
【０１６０】
そして、配置部１２は、取得した外部端子ｚの座標ｘと座標ｙとを、前回までに加算した座標ｘと座標ｙとに加算する（Ｓ３２０）。なお、Ｓ３２０の処理において、前回までに加算した座標ｘと座標ｙがないときには、座標（０、０）に外部端子ｚの座標ｘと座標ｙとを加算する。また、Ｓ３２０の処理において、Ｓ３１３の処理で加算された座標ｘと座標ｙがあるときには、Ｓ３１３の処理で加算された座標ｘと座標ｙとを前回までに加算した座標ｘと座標ｙとする。
【０１６１】
そして、配置部１２は、図示しない記憶領域に格納された接続数をインクリメントする（Ｓ３２１）。そして、配置部１２は、Ｓ３１７の処理を実行する。
【０１６２】
配置部１２は、外部端子ｚを全て参照したとき（Ｓ３１７にてＹｅｓ）、移動素子ｘに関してＳ３１３またはＳ３２０で配線ベクトルの座標ｘと座標ｙとの総和を１回以上加算したか否かを判定する（Ｓ３２２）。
【０１６３】
配置部１２は、配線ベクトルの座標ｘ、座標ｙを１回も加算していないとき（Ｓ３２２にてＮｏ）、後述するＳ３２８の処理を実行する。配線ベクトルの座標ｘ、座標ｙを１回も加算していないときとは、Ｓ３０２で選択した移動素子ｘに接続される外部端子や素子がないことを示す。したがって、配置部１２は、Ｓ３０２において、全ての素子を移動素子ｘとして選択していないとき、他の移動素子ｘについて、配置処理を実行する。
【０１６４】
配置部１２は、配線ベクトルの座標ｘ、座標ｙを１回以上加算したとき（Ｓ３２２にてＹｅｓ）、Ｓ３２３の処理を実行する。
【０１６５】
図３９を参照して説明する。
配置部１２は、座標ｘの総和と、座標ｙの総和とをそれぞれ接続数で除算して移動素子ｚの移動後の座標（ｘ，ｙ）を算出する（Ｓ３２３）。
【０１６６】
配置部１２は、Ｓ３２３で算出した座標（ｘ，ｙ）に移動素子ｘを配置する（Ｓ３２４）。
【０１６７】
そして、配置部１２は、移動素子ｘの移動距離を求める（Ｓ３２５）。配置部１２は、例えば、移動素子ｘの移動後の座標（ｘ，ｙ）から、移動素子ｘの移動前の座標（ｘ，ｙ）を減算して、移動ベクトルを求める。そして、配置部１２は、移動ベクトルの大きさを求めることにより、移動距離を算出しても良い。
【０１６８】
配置部１２は、Ｓ３２５において、前回までに求めた移動距離の中で最大の移動距離よりも、Ｓ３２６で求めた移動距離が長いか否かを判定する（Ｓ３２６）。
【０１６９】
配置部１２は、前回までに求めた移動距離の中で最大の移動距離よりも、Ｓ３２６で求めた移動距離が長いとき（Ｓ３２６にてＹｅｓ）、求めた移動距離を最大移動距離として記憶する（Ｓ３２７）。なお、Ｓ３２５において、前回までに求めた移動距離がないときには、今回求めた移動距離を最大移動距離として記憶する。そして、配置部１２は、図４０に示すＳ３２８の処理を実行する。
【０１７０】
図４０を参照して説明する。
そして、配置部１２は、インスタンステーブル７０１に含まれる全ての素子を移動素子ｘとして選択したか否かを判定する（Ｓ３２８）。配置部１２は、全ての素子を移動素子ｘとして選択していないとき（Ｓ３２８にてＮｏ）、ｘをインクリメントして（Ｓ３３０）、図３７のＳ３０２の処理を実行する。
【０１７１】
配置部１２は、全ての素子を移動素子ｘとして選択したとき（Ｓ３２８にてＹｅｓ）、最大移動距離が第１閾値以下か否かを判定する（Ｓ３２９）。配置部１２は、最大移動距離が第１閾値以下でないとき（Ｓ３２９にてＮｏ）、Ｓ３３１の処理を実行する。
【０１７２】
配置部１２は、最大移動距離が第１閾値以下であるとき（Ｓ３２９にてＹｅｓ）、仮想配置処理を終了する。
【０１７３】
以上により、配置部１２は、ネットリストに含まれる素子を、最大移動距離が第１閾値以下となるように仮想配置する。
【０１７４】
図４１〜図４４は、ネットリストの結合処理を示すフローチャートである。
図４１〜図４４を参照して、ネットリストの結合処理を説明する。以下の説明では、一例として、図９に示すネットリストテーブル６０１に、ネットリストテーブル６０２を結合する処理を説明する。なお、ネットリスト構築装置１は、結合されたネットリストテーブル６０１に格納された情報を用いて、結合ネットリストを出力しても良い。
【０１７５】
制御部１０は、インスタンステーブル７０２から素子ｋを選択する（Ｓ４０１）。素子ｋとは、インスタンステーブル７０２の配列番号ｋのレコードに格納されているインスタンス名が示す素子である。ここで、ｋの、初期値は、例えば１である。
【０１７６】
また、制御部１０は、インスタンステーブル７０１から素子ｊを選択する（Ｓ４０２）。素子ｊとは、インスタンステーブル７０１の配列番号ｊのレコードに格納されているインスタンス名が示す素子である。ここで、ｊの、初期値は、例えば１である。
【０１７７】
そして、制御部１０は、選択した素子ｊと素子ｋとのモジュール名が一致しているか否かを判定する（Ｓ４０３）。モジュール名とは、モジュールの種類を示す名称である。すなわち、素子ｊと素子ｋとのモジュール名が一致とは、素子ｊと素子ｋとが同じ機能の素子であること示す。
【０１７８】
制御部１０は、選択した素子ｊと素子ｋとのモジュール名が一致しないとき（Ｓ４０３にてＮｏ）、全ての素子ｊを選択したか否かを判定する（Ｓ４０４）。
【０１７９】
制御部１０は、全ての素子ｊを選択していないとき（Ｓ４０４にてＮｏ）、ｊをインクリメントして（Ｓ４０５）、Ｓ４０２の処理を実行する。
【０１８０】
Ｓ４０３において、制御部１０は、素子ｊと素子ｋとのモジュール名が一致したとき（Ｓ４０３にてＹｅｓ）、素子ｊと素子ｋの距離が第２閾値以下であるか否かを判定する。
【０１８１】
制御部１０は、素子ｊと素子ｋの距離が第２閾値よりも離れているとき（Ｓ４０６にてＮｏ）、Ｓ４０４の処理を実行する。
【０１８２】
制御部１０は、素子ｊと素子ｋの距離が第２閾値以下の距離であるとき（Ｓ４０６にてＹｅｓ）、同じ機能の素子の中で、素子ｊが素子ｋに最も近いか否かを判定する（Ｓ４０７）。このとき、制御部１０は、前回までに設定した共有設定済みの素子ｊと、今回設定した素子ｊの距離を比較しても良い。
【０１８３】
制御部１０は、同じ機能の素子の中で、素子ｊよりも素子ｋの近くに配置されている素子があるとき（Ｓ４０７にてＮｏ）、Ｓ４０４の処理を実行する。
【０１８４】
また、制御部１０は、同じ機能の素子の中で、素子ｊが素子ｋに最も近くにあるとき（Ｙｅｓ）、素子ｊと素子ｋとを共有設定する（Ｓ４０８）。そして、制御部１０は、Ｓ４０４の処理を実行する。制御部１０は、Ｓ４０８において、前回までに設定した共有設定済みの素子ｊがないとき、Ｓ４０２で選択した素子ｊを共有設定する。
【０１８５】
図４２を参照して説明する。
Ｓ４０４において、制御部１０は、全てのインスタンステーブル７０１に格納されている全ての素子ｊを選択したと判定したとき（Ｓ４０４にてＹｅｓ）、素子ｊと素子ｋとを共有設定したか否かを判定する（Ｓ４０９）。
【０１８６】
制御部１０は、素子ｊと素子ｋとを共有設定したとき（Ｓ４０９にてＹｅｓ）、インスタンステーブル７０２の共有番号に、インスタンステーブル７０１の素子ｋのインスタンス名が格納されているレコードの配列番号を格納する（Ｓ４１０）。
【０１８７】
さらに、制御部１０は、インスタンステーブル７０２の素子ｋのインスタンス名を、素子ｊのインスタンス名に変更する（Ｓ４１１）。
【０１８８】
そして、制御部１０は、インスタンステーブル７０１に格納されている全ての素子ｋを選択したか否かを判定する（Ｓ４１２）。
【０１８９】
制御部１０は、インスタンステーブル７０１に格納されている全ての素子ｋを選択していないとき（Ｓ４１２にてＮｏ）、ｋをインクリメントする（Ｓ４１３）。さらに、制御部１０は、ｊのカウントをリセットして（Ｓ４１４）、Ｓ４０１の処理を実行する。
【０１９０】
Ｓ４０９において、制御部１０は、素子ｊと素子ｋとを共有設定していないとき（Ｓ４０９にてＮｏ）、インスタンステーブル７０２の素子ｋのインスタンス名を固有のインスタンス名に変更する（Ｓ４１５）。
【０１９１】
制御部１０は、名前変換テーブル１００２に、変更前のインスタンス名と、変更後の固有のインスタンス名を格納する（Ｓ４１６）。
【０１９２】
また、制御部１０は、インスタンステーブル７０１に、Ｓ４１５で変更した固有のインスタンス名に対応するレコードを格納する（Ｓ４１７）。
【０１９３】
そして、制御部１０は、Ｓ４１２の処理を実行する。
Ｓ４１２において、制御部１０は、インスタンステーブル７０１に格納されている全ての素子ｋが選択済みのとき（Ｓ４１２）、Ｓ４１５の処理を実行する。
【０１９４】
図４３を参照して説明する。
制御部１０は、名前変更テーブル１００２を参照し、ネットリストテーブル６０２に格納されている変更前のインスタンス名を、変更後のインスタンス名に変更する（Ｓ４１５）。
【０１９５】
そして、制御部１０は、ネットリストテーブル６０２からレコードｙを選択する（Ｓ４１６）。ここで、ｙの初期値は、例えば、１である。そして、レコードｙとは、ネットリストテーブル６０２において、例えば、配列番号ｙ−１のレコードに対応する。
【０１９６】
制御部１０は、レコードｙの出力端子名がネットリストテーブル６０１にないか否かを判定する（Ｓ４１７）。そして、制御部１０は、レコードｙの出力端子名がネットリストテーブル６０１にあるとき（Ｓ４１７にてＮｏ）、レコードｙの入力端子名がネットリストテーブル６０１にないか否かを判定する（Ｓ４１８）。
【０１９７】
制御部１０は、レコードｙの入力端子名がネットリストテーブル６０１にないとき（Ｓ４１８にてＹｅｓ）、レコードｙと出力端子名が同じレコードｘに対応する使用フラグを選択フラグにコピーする（Ｓ４１９）。ここで、レコードｘは、ネットリストテーブル６０１に含まれるレコードのことである。
【０１９８】
そして、制御部１０は、ネットリストテーブル６０１にレコードｙを追加する（４２０）。
【０１９９】
また、制御部１０は、追加したレコードｙに対応する使用フラグを選択フラグにコピーする（Ｓ４２１）。そして、制御部１０は、後述するＳ４２５の処理を実行する。
【０２００】
Ｓ４１７において、制御部１０は、レコードｙの出力端子名がネットリストテーブル６０１にないとき（Ｓ４１７にてＹｅｓ）、ネットリストテーブル６０１にレコードｙを追加する（Ｓ４２２）。そして、制御部１０は、後述するＳ４２５の処理を実行する。
【０２０１】
Ｓ４１８において、制御部１０は、レコードｙの入力端子名がネットリストテーブル６０１にあるとき（Ｓ４１８にてＮｏ）、Ｓ４２３の処理を実行する。
【０２０２】
図４４を参照して説明する。
制御部１０は、ネットリストテーブル６０１において、レコードｙと入力端子名および出力端子名が同じレコードｘに対応する使用フラグを１にする（Ｓ４２３）。
【０２０３】
制御部１０は、使用フラグを１にしたレコードｘに対応する使用フラグが全て０か否かを判定する（Ｓ４２４）。
【０２０４】
制御部１０は、使用フラグを１にしたレコードｘに対応する使用フラグが全て０のとき（Ｓ４２３にてＮｏ）、後述するＳ４２５の処理を実行する。
【０２０５】
制御部１０は、使用フラグを１にしたレコードｘに対応する使用フラグが全て０でないとき（Ｓ４２４にてＹｅｓ）、Ｓ４２３において使用フラグを１にしたレコードｘに対応する使用フラグを、レコードｘに対応する選択フラグにコピーする（Ｓ４２５）。
【０２０６】
そして、制御部１０は、全てのレコードｙを選択したか否かを判定する（Ｓ４２６）。制御部１０は、全てのレコードｙを選択していないとき（Ｓ４２６にてＮｏ）、ｙをインクリメントして（Ｓ４２７）、図４３に示すＳ４１６の処理を実行する。
【０２０７】
また、制御部１０は、全てのレコードｙを選択したとき（Ｓ４２６にてＹｅｓ）、ネットリストの結合処理を終了する。
【０２０８】
図４５〜図４７は、セレクタの挿入処理を示すフローチャートである。
図４５〜図４７を参照して、セレクタの挿入処理を説明する。以下の説明では、図２９に示すネットリストテーブル６０１にセレクタを挿入する処理を一例として説明する。
【０２０９】
制御部１０は、ネットリストテーブル６０１のレコードｘを参照する（Ｓ５０１）。ここで、ｘの初期値は、例えば、１である。
【０２１０】
制御部１０は、レコードｘの選択フラグに１があるか否かを判定する（Ｓ５０２）。
制御部１０は、レコードｘの選択フラグに１がないとき（Ｓ５０２にてＮｏ）、ネットリストテーブル６０１のレコードｘを全て参照したか否かを判定する（Ｓ５０３）。
【０２１１】
制御部１０は、ネットリストテーブル６０１のレコードｘを全てを参照していないとき（Ｓ５０３にてＮｏ）、ｘをインクリメントして（Ｓ５０４）、Ｓ５０１の処理を実行する。
【０２１２】
制御部１０は、レコードｘの選択フラグに１があるとき（Ｓ５０２にてＹｅｓ）、インスタンステーブル７０１にセレクタｙを追加する。ここで、ｙの初期値は、例えば、１である。
【０２１３】
制御部１０は、ネットリストテーブル６０１のレコードｘの出力端子名を、選択フラグのビット位置に対応するセレクタｙの入力端子名に変更する（Ｓ５０６）。そして、制御部１０は、Ｓ５０８の処理を実行する。
【０２１４】
図４６を参照して説明する。
制御部１０は、レコードｘの選択フラグに他にも１があるか否かを判定する（Ｓ５０８）。
【０２１５】
制御部１０は、レコードｘの選択フラグに他に１がないとき（Ｓ５０８にてＮｏ）、図４７に示すＳ５１１の処理を実行する。
【０２１６】
制御部１０は、レコードｘの選択フラグに他に１があるとき（Ｓ５０８にてＹｅｓ）、レコードｘの出力端子名を選択フラグのビット位置に対応するセレクタｙの入力端子名に変更したレコードをネットリストテーブル６０１に追加する（Ｓ５０９）。
【０２１７】
制御部１０は、追加したセレクタｙの出力端子名を入力端子名とし、レコードｘの出力端子名を出力端子名としたレコードを、ネットリストテーブル６０１に追加する（Ｓ５１０）。そして、制御部１０は、図４７に示すＳ５１１の処理を実行する。
【０２１８】
図４７を参照して説明する。
制御部１０は、ネットリストテーブル６０１のレコードｚを参照する（Ｓ５１１）。ここで、ｚは、ｘ以外の値であり、初期値は、例えば２である。
【０２１９】
そして、制御部１０は、レコードｘとレコードｚに同じ出力端子名が格納されているか否かを判定する（Ｓ５１２）。
【０２２０】
制御部１０は、レコードｘとレコードｚに同じ出力端子名が格納されていないとき（Ｓ５１２にてＮｏ）、ネットリストテーブル６０１のレコードｚを全て参照したか否かを判定する（Ｓ５１３）。
【０２２１】
制御部１０は、ネットリストテーブル６０１のレコードｚを全て参照していないとき（Ｓ５１３にてＮｏ）、ｚをインクリメントして（Ｓ５１４）、Ｓ５１１の処理を実行する。
【０２２２】
Ｓ５１２において、制御部１０は、レコードｘとレコードｚに同じ出力端子名が格納されているとき（Ｓ５１２にてＹｅｓ）、レコードｚの出力端子名を、レコードｚの選択フラグのビット位置に対応するセレクタの入力端子名に変更したレコード生成する。そして、制御部１０は、生成したレコードをネットリストテーブル６０１に追加する（Ｓ５１５）。なお、レコードｘの出力端子名と同じ出力端子名が格納されているレコードｚには、図４３に示すＳ４１９にて、使用フラグに対応する選択フラグが格納されている。
【０２２３】
さらに、制御部１０は、レコードｚの出力端子名と同じ出力端子名を持つレコードの削除フラグに１を格納する（Ｓ５１６）。そして、制御部１０は、Ｓ５１３の処理を実行する。
【０２２４】
Ｓ５１３において、制御部１０は、レコードｚを全て参照したとき（Ｓ５１３にてＹｅｓ）、図４５に示すＳ５０３の処理を実行する。
【０２２５】
図４５を参照して説明する。
Ｓ５０３において、制御部１０は、ネットリストテーブル６０１のレコードｘを全て参照したとき（Ｓ５０３にてＹｅｓ）、外部端子と接続されるセレクタの出力端子を外部端子に接続する（Ｓ５０７）。そして、制御部１０は、セレクタを挿入する処理を終了する。
【０２２６】
図４８は、コンピュータ装置の一実施例を示すブロック図である。
図４８を参照して、ネットリスト構築装置１の構成について説明する。
【０２２７】
図４８において、コンピュータ装置１１００は、制御回路１１０１と、記憶装置１１０２と、読書装置１１０３と、記録媒体１１０４と、通信インターフェイス１１０５（通信Ｉ／Ｆ）と、入出力インターフェイス１１０６（入出力Ｉ／Ｆ）と、表示装置１１０７と、ネットワーク１１０８とを備えている。また、各構成要素は、バス１１０９により接続されている。
【０２２８】
制御回路１１０１は、コンピュータ装置１１００全体の制御をする。そして、制御回路１１０１は、例えば、ＣＰＵ、マルチコアＣＰＵ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）およびＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などである。制御回路１１０１は、例えば、図４において、制御部１０として機能する。なお、記憶部２０に含まれる範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５とは、例えば、ＣＰＵ、ＦＰＧＡ、およびＰＬＤのキャッシュに記憶されても良い。また、ＣＰＵ、ＦＰＧＡ、およびＰＬＤのキャッシュは、配置部１２が接続数をカウントするときの記憶領域として機能しても良い。
【０２２９】
記憶装置１１０２は、各種データを記憶する。そして、記憶装置１１０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリや、ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）などで構成される。記憶装置１１０２は、例えば、図４において、記憶部２０として機能する。そして、記憶装置１１０２は、例えば、図４に示す、範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５とを記憶しても良い。
【０２３０】
また、ＲＯＭは、ブートプログラムなどのプログラムを記憶している。ＲＡＭは、制御回路１１０１のワークエリアとして使用される。ＨＤは、ＯＳ、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
【０２３１】
記憶装置１１０２は、例えば、制御回路１１０１を、制御部１０として機能させるネットリスト構築プログラムを記憶する。
【０２３２】
ネットリストの構築処理をするとき、ネットリスト構築装置１は、記憶装置１１０２に記憶されたネットリスト構築プログラムをＲＡＭに読み出す。そして、ＲＡＭに読み出されたネットリスト構築プログラムを制御回路１１０１で実行することにより、ネットリスト構築装置１は、抽出処理、置換処理、説億処理および生成処理を含むネットリストの構築処理を実行する。
【０２３３】
なお、ネットリスト構築プログラムは、制御回路１１０１が通信インターフェイス１１０５を介してアクセス可能であれば、ネットワーク１１０８上のサーバが有する記憶装置に記憶されていても良い。
【０２３４】
読書装置１１０３は、制御回路１１０１に制御され、着脱可能な記録媒体１１０４のデータのリード／ライトを行なう。そして、読書装置１１０３は、例えば、ＦＤＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｄｒｉｖｅ）、ＤＶＤＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＢＤＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｋ  Ｄｒｉｖｅ）およびＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などである。
【０２３５】
記録媒体１１０４は、各種データを保存する。記録媒体１１０４は、例えば、ネットリスト構築プログラムを記憶する。さらに、記録媒体１１０４は、図４に示す、範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５とを記憶しても良い。
【０２３６】
そして、記録媒体１１０４は、読書装置１１０３を介してバス１１０９に接続され、制御回路１１０１が読書装置１１０３を制御することにより、データのリード／ライトが行なわれる。また、記録媒体１１０４は、例えば、ＦＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標)  Ｄｉｓｋ）、およびフラッシュメモリなどである。
【０２３７】
通信インターフェイス１１０５は、ネットワーク１１０８を介してコンピュータ装置１１００と他の装置とを通信可能に接続する。
【０２３８】
入出力インターフェイス１１０６は、例えば、キーボード、マウス、およびタッチパネルなどと接続され、接続された装置から各種情報を示す信号が入力されると、バス１１０９を介して入力された信号を制御回路１１０１に出力する。また、入出力インターフェイス１１０６は、制御回路１１０１から出力された各種情報を示す信号がバス１１０９を介して入力されると、接続された各種装置にその信号を出力する。入出力インターフェイス１１０６は、例えば、図４に示す記憶部２０に格納する範囲情報２１と、端子情報２２と、接続情報２３と、素子情報２４と、変換情報２５などの情報の入力を受け付けても良い。また、入出力インターフェイス１１０６は、例えば、図４において、入出力部３０として機能する。
【０２３９】
表示装置１１０７は、例えば、入出力インターフェイス１１０６に接続され、各種情報を表示する。ネットリスト構築装置は、例えば、生成した結合ネットリストを表示装置１１０７に表示させても良い。
【０２４０】
ネットワーク１１０８は、例えば、ＬＡＮ、無線通信、またはインターネットなどであり、コンピュータ装置１１００と他の装置を通信接続する。
【０２４１】
以上のように、実施形態のネットリスト構築装置１は、集積回路２００に搭載する排他回路１１１〜１１ｎの中で、同じ機能を有する複数の素子を１つの共有素子に置換して、複数の素子の接続先で共有する。これにより、ネットリスト構築装置１は、集積回路２００内の素子の数を減らし、集積回路２００のチップサイズを小さくすることができる。したがって、ネットリスト構築装置１は、集積回路２００の性能アップ、歩留まりの向上、および製造コストの削減に寄与することができる。
【０２４２】
また、実施形態のネットリスト構築装置１は、互いの距離が所定の距離以内にあり、同じ機能を有する複数の素子を１つの共有素子に置換する。これにより、ネットリスト構築装置１は、所定の距離を適宜設定することにより、互いの距離が遠く離れた素子を１つの共有素子に置換したために、複数の素子の接続先と共有素子との間の配線が長くなり、チップサイズが大きくなるのを抑制できる。
【０２４３】
さらに、実施形態のネットリスト構築装置１は、仮想配置処理において、テクノロジマッピング前のネットリストを用いることにより、各素子の大きさを無視して配置演算を実行する。これにより、ネットリスト構築装置１は、仮想配置において不要な、セルやマクロの面積の制約条件などを無視して配置演算を実行するので、仮想配置における処理負担を抑制することができる。
【０２４４】
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０２４５】
以上記載した各実施例を含む実施形態に関し、さらに以下の付記を開示する。なお、本発明は、以下の付記に限定されるものではない。
（付記１）
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出し、
前記抽出した複数の素子を１つの共有素子に置換し、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続し、
前記複数のネットリストを結合した結合ネットリストを生成する
処理をコンピュータに実行させることを特徴とするネットリスト構築プログラム。
（付記２）
前記回路を配置する実装範囲の外部端子の位置と、素子の接続先の素子または外部端子を記述した前記複数のネットリストとを取得し、
前記ネットリストごとに、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が、第１閾値以下になるように、前記実装範囲に各素子を配置し、
前記抽出処理において、互いの距離が第２閾値以下にある複数の素子を抽出する
処理をコンピュータに実行させることを特徴とする付記１に記載のネットリスト構築プログラム。
（付記３）
前記配置処理において、前記素子の大きさを無視して前記実装範囲に素子を配置する
処理をコンピュータに実行させることを特徴とする付記２に記載のネットリスト構築プログラム。
（付記４）
前記共有素子の入力側に接続される複数の配線と前記共有素子との間に、前記共有素子に接続する配線を切り替えるセレクタを挿入する
処理をコンピュータに実行させることを特徴とする付記１〜３のいずれか一つに記載のネットリスト構築プログラム。
（付記５）
前記回路を配置する実装範囲の外部端子に複数の配線が接続されるとき、前記外部端子の入力側に接続される複数の配線と前記外部端子との間に、前記外部端子に接続する配線を切り替えるセレクタを挿入する
処理をコンピュータに実行させることを特徴とする付記１〜４のいずれか一つに記載のネットリスト構築プログラム。
（付記６）
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出する抽出部と、
前記抽出した複数の素子を１つの共有素子に置換する置換部と、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続する接続部と、
前記複数のネットリストを結合した結合ネットリストを生成する生成部と、
を備えることを特徴とするネットリスト構築装置。
（付記７）
前記ネットリスト構築装置は、さらに、
前記回路を配置する実装範囲の外部端子の位置と、素子の接続先の素子または外部端子を記述した前記複数のネットリストとを取得する取得部と、
前記ネットリストごとに、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が、第１閾値以下になるように、前記実装範囲に各素子を配置する配置部と、
を備え、
前記抽出部は、
互いの距離が第２閾値以下にある複数の素子を抽出する
ことを特徴とする付記６に記載のネットリスト構築装置。
（付記８）
前記配置部は、
前記素子の大きさを無視して前記実装範囲に素子を配置する
ことを特徴とする付記７に記載のネットリスト構築装置。
（付記９）
前記ネットリスト構築装置は、さらに、
前記共有素子の入力側に接続される複数の配線と前記共有素子との間に、前記共有素子に接続する配線を切り替えるセレクタを挿入する挿入部
を備えることを特徴とする付記６〜８のいずれか一つに記載のネットリスト構築装置。
（付記１０）
前記挿入部は、さらに、
前記回路を配置する実装範囲の外部端子に複数の配線が接続されるとき、前記外部端子の入力側に接続される複数の配線と前記外部端子との間に、前記外部端子に接続する配線を切り替えるセレクタを挿入する
ことを特徴とする付記９に記載のネットリスト構築装置。
（付記１１）
コンピュータによって実行されるネットリスト構築方法であって、
前記コンピュータは、
回路が有する素子間の接続関係を記述した複数のネットリストから、同じ機能を有する複数の素子を抽出し、
前記抽出した複数の素子を１つの共有素子に置換し、
前記抽出した複数の素子に接続される配線を置換した共有素子に接続し、
前記複数のネットリストを結合した結合ネットリストを生成する
ことを実行するネットリスト構築方法。
（付記１２）
前記コンピュータは、さらに、
前記回路を配置する実装範囲の外部端子の位置と、素子の接続先の素子または外部端子を記述した前記複数のネットリストとを取得し、
前記ネットリストごとに、素子から素子の各接続先に向かう距離と方向とを示す各配線ベクトルの総和が、第１閾値以下になるように、前記実装範囲に各素子を配置し、
前記抽出処理において、互いの距離が第２閾値以下にある複数の素子を抽出する
ことを実行する付記１１に記載のネットリスト構築方法。
（付記１３）
前記コンピュータは、さらに、
前記配置処理において、前記素子の大きさを無視して前記実装範囲に素子を配置する
ことを実行する付記１２に記載のネットリスト構築方法。
（付記１４）
前記コンピュータは、さらに、
前記共有素子の入力側に接続される複数の配線と前記共有素子との間に、前記共有素子に接続する配線を切り替えるセレクタを挿入する
ことを実行する付記１１〜１３のいずれか一つに記載のネットリスト構築方法。
（付記１５）
前記コンピュータは、さらに、
前記回路を配置する実装範囲の外部端子に複数の配線が接続されるとき、前記外部端子の入力側に接続される複数の配線と前記外部端子との間に、前記外部端子に接続する配線を切り替えるセレクタを挿入する
ことを実行する付記１１〜１４のいずれか一つに記載のネットリスト構築方法。
【符号の説明】
【０２４６】
１  ネットリスト構築装置
１０  制御部
１１  取得部
１２  配置部
１３  抽出部
１４  置換部
１５  接続部
１６  生成部
１７  挿入部
２０  記憶部
２１  範囲情報
２２  端子情報
２２  配列番号
２３  接続情報
２４  素子情報
２５  変換情報
３０  入出力部
３１  入力部
３２  出力部
１００  集積回路
１０１  共通回路
１１０  排他回路
２００  集積回路
２０１  共通回路
２１０  排他回路
４００  実装範囲
５００  制御文
１００２  名前変換テーブル
１００２  名前変更テーブル
１００３  名前変換テーブル
１１００  コンピュータ装置
１１０１  制御回路
１１０２  記憶装置
１１０３  読書装置
１１０４  記録媒体
１１０５  通信インターフェイス
１１０６  入出力インターフェイス
１１０７  表示装置
１１０８  ネットワーク
１１０９  バス
【図１】
2015095010.tif 000003
【図２】
2015095010.tif 000004
【図３】
2015095010.tif 000005
【図４】
2015095010.tif 000006
【図５】
2015095010.tif 000007
【図６】
2015095010.tif 000008
【図７】
2015095010.tif 000009
【図８】
2015095010.tif 000010
【図９】
2015095010.tif 000011
【図１０】
2015095010.tif 000012
【図１１】
2015095010.tif 000013
【図１２】
2015095010.tif 000014
【図１３】
2015095010.tif 000015
【図１４】
2015095010.tif 000016
【図１５】
2015095010.tif 000017
【図１６】
2015095010.tif 000018
【図１７】
2015095010.tif 000019
【図１８】
2015095010.tif 000020
【図１９】
2015095010.tif 000021
【図２０】
2015095010.tif 000022
【図２１】
2015095010.tif 000023
【図２２】
2015095010.tif 000024
【図２３】
2015095010.tif 000025
【図２４】
2015095010.tif 000026
【図２５】
2015095010.tif 000027
【図２６】
2015095010.tif 000028
【図２７】
2015095010.tif 000029
【図２８】
2015095010.tif 000030
【図２９】
2015095010.tif 000031
【図３０】
2015095010.tif 000032
【図３１】
2015095010.tif 000033
【図３２】
2015095010.tif 000034
【図３３】
2015095010.tif 000035
【図３４】
2015095010.tif 000036
【図３５】
2015095010.tif 000037
【図３６】
2015095010.tif 000038
【図３７】
2015095010.tif 000039
【図３８】
2015095010.tif 000040
【図３９】
2015095010.tif 000041
【図４０】
2015095010.tif 000042
【図４１】
2015095010.tif 000043
【図４２】
2015095010.tif 000044
【図４３】
2015095010.tif 000045
【図４４】
2015095010.tif 000046
【図４５】
2015095010.tif 000047
【図４６】
2015095010.tif 000048
【図４７】
2015095010.tif 000049
【図４８】
2015095010.tif 000050