以下、図面に基づいて、本願の開示するバス配線探索プログラム、バス配線探索方法および情報処理装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
図1Aは、実施例の情報処理装置の構成の一例を示すブロック図である。図1Aに示す情報処理装置100は、プリント配線基板を設計するCAD(Computer Aided Design)において、設計データを管理することで設計支援を行う情報処理装置の一例である。情報処理装置100は、バス配線の条件の変更、または、バス配線の条件に基づく配線結果の生成が行われると、第1ノードを生成する。情報処理装置100は、生成した第1ノードに、バス配線の条件とバス配線の条件の変更後の設計データとを対応付け、あるいは、バス配線の条件と配線結果と配線結果の生成後の設計データとを対応付けて、記憶部に保存する。情報処理装置100は、バス配線の条件の指定を受け付けると、指定されたバス配線の条件と一致する第2ノードを探索する。情報処理装置100は、探索した第2ノードに対応する設計データを出力する。これにより、情報処理装置100は、任意の段階の設計データを得ることができる。
次に、情報処理装置100の構成について説明する。図1Bは、実施例の情報処理装置の機能構成の一例を示すブロック図である。図1Aに示すように、情報処理装置100は、通信部110と、表示部111と、操作部112と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、図1Aおよび図1Bに示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
CAD101は、プリント配線基板を設計するCADの一例である。CAD101は、設計データの保存が行われると、設計データを制御部130の生成部131に転送する。また、CAD101は、制御部130の出力制御部133から設計データが転送されると、当該設計データを読み込んで、CAD設計画面に、設計者が編集可能に表示する。
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。通信部110は、図示しないネットワークを介して他の情報処理装置と有線または無線で接続され、他の情報処理装置との間で情報の通信を司る通信インタフェースである。通信部110は、例えば、図示しないサーバから設計データ等を受信する。また、通信部110は、図示しないサーバに、設計データや管理データ等を送信する。
表示部111は、各種情報を表示するための表示デバイスである。表示部111は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部111は、制御部130から入力された表示画面等の各種画面を表示する。
操作部112は、情報処理装置100のユーザから各種操作を受け付ける入力デバイスである。操作部112は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部112は、ユーザによって入力された操作を操作情報として制御部130に出力する。なお、操作部112は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部111の表示デバイスと、操作部112の入力デバイスとは、一体化されるようにしてもよい。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部120は、共通情報記憶部121と、ノード情報記憶部122とを有する。また、記憶部120は、制御部130での処理に用いる情報を記憶する。
共通情報記憶部121は、CAD101の設計データ全体を管理するための共通情報を記憶する。図2は、共通情報記憶部の一例を示す図である。図2に示すように、共通情報記憶部121は、プロジェクト管理121a、プロジェクト情報121b、配線条件項目定義121c、配線条件登録定義121dといった項目を有する。
プロジェクト管理121aは、プロジェクトID(Identifier)を記憶する。プロジェクトIDは、プロジェクトを識別する識別子である。プロジェクトIDは、例えば、設計対象のプリント配線基板ごとに振られたIDである。
プロジェクト情報121bは、プロジェクトIDで識別されるプロジェクトの情報を記憶する。プロジェクト情報121bは、「プロジェクトID」、「作成日時」、「作成者」、「対象ファイル名」、「ルートノードID」といった項目を有する。
「プロジェクトID」は、プロジェクトを識別する識別子である。「作成日時」は、当該プロジェクトが作成された日時を示す情報である。なお、「作成日時」は、設計データが更新された日時で更新してもよい。「作成者」は、当該プロジェクトを作成したユーザを示す情報である。「対象ファイル名」は、設計データのファイル名を示す情報である。「ルートノードID」は、設計データの履歴を木構造で表す際に基準となる根ノード(以下、ルートノードまたは基準ノードともいう。)のノードIDを示す情報である。
配線条件項目定義121cは、配線条件として扱う項目を記憶する。配線条件項目定義121cは、「1:バスネット定義」、「2:バス配線対象層」、「3:バス経路」、「4:バス自動配線優先順」、「5:ネット線幅」、「6:配線結果」といった項目を有する。なお、各項目の頭の番号は、条件項目の番号を示す。
「1:バスネット定義」は、バス配線をどの様に分割するかを示す情報に対応する項目である。「2:バス配線対象層」は、バス配線を行う層を示す情報に対応する項目である。「3:バス経路」は、バスの経路を示す情報に対応する項目である。「4:バス自動配線優先順」は、バスの自動配線を行う際に優先する順番を示す情報に対応する項目である。「5:ネット線幅」は、ネットの線幅、つまり配線の幅を示す情報に対応する項目である。「6:配線結果」は、自動配線の配線結果を示す情報に対応する項目である。
配線条件登録定義121dは、配線条件項目定義121cの各配線条件項目についての優先度を記憶する。配線条件登録定義121dは、例えば、「優先1:条件項目1」であれば、配線条件項目定義121cの条件項目の番号1番が優先度「1」であることを示す。
図1Aおよび図1Bの説明に戻って、ノード情報記憶部122は、設計データの履歴を木構造で表す際の各ノードの情報を記憶する。図3は、ノード情報記憶部の一例を示す図である。図3に示すように、ノード情報記憶部122は、ノードごとに、ノード基本情報122A1を有する。ノード基本情報122A1は、「ノードID」、「親ノードID」、「子ノード管理ID」、「コメント」、「作成日時」、「配線条件ID」、「配線ルールID」、「配線差分情報ID」、「設計データファイルパス」といった項目を有する。また、ノード基本情報122A1は、項目にリンクする情報として、子ノード管理情報122A2、配線条件情報122C1、配線ルール情報122D1および配線差分情報122E1を有する。つまり、ノード基本情報122A1は、バス配線の条件と、配線結果と、設計データのファイルパスとを含む情報である。なお、ノード基本情報122A1は、設計データのファイルパスに代えて、設計データ自体を含むようにしてもよい。
「ノードID」は、ノードを識別する識別子である。「親ノードID」は、親ノードのIDを示す情報である。「子ノード管理ID」は、当該ノードの子ノードを管理する子ノード管理情報122A2を識別する識別子である。「コメント」は、当該ノードに対するコメントを示す情報である。「作成日時」は、当該ノードが作成された日時を示す情報である。「配線条件ID」は、当該ノードの配線条件を管理する配線条件情報122C1を識別する識別子である。「配線ルールID」は、当該ノードの配線ルールを管理する配線ルール情報122D1を識別する識別子である。「配線差分情報ID」は、当該ノードの配線差分を管理する配線差分情報122E1を識別する識別子である。「設計データファイルパス」は、当該ノードの設計データを記憶するファイルパスを示す情報である。
子ノード管理情報122A2は、「子ノード管理ID」、「ノードID1」、「ノードID2」といった項目を有する。「子ノード管理ID」は、子ノード管理情報122A2を識別する識別子である。「ノードID1」および「ノードID2」は、子ノード管理IDでリンクされるノード基本情報122A1のノードにおける子ノードのIDを示す情報である。
配線条件情報122C1は、「配線条件ID」、「バス定義ID」、「バス自動配線順定義ID」といった項目を有する。「配線条件ID」は、配線条件情報122C1を識別する識別子である。「バス定義ID」は、配線条件IDでリンクされるノード基本情報122A1のノードにおけるバス定義を識別する識別子である。「バス自動配線順定義ID」は、配線条件IDでリンクされるノード基本情報122A1のノードにおけるバス自動配線順定義を識別する識別子である。
配線ルール情報122D1は、「配線ルールID」、「ネット線幅定義ID1」、「ネット線幅定義ID2」といった項目を有する。「配線ルールID」は、配線ルール情報122D1を識別する識別子である。「ネット線幅定義ID1」および「ネット線幅定義ID2」は、配線ルールIDでリンクされるノード基本情報122A1のノードにおけるネット線幅定義を識別する識別子である。なお、末尾の数字は、複数のネット線幅定義IDを区別するためのものである。以下、同様に、各IDの末尾に数字がある場合は、複数の項目それぞれを区別するためのものである。
配線差分情報122E1は、「配線差分情報ID」、「親ノードからの追加 配線情報ID1」、「親ノードからの追加 配線情報ID2」、「親ノードからの削除 配線情報ID1」、「親ノードからの削除 配線情報ID2」といった項目を有する。「配線差分情報ID」は、配線差分情報122E1を識別する識別子である。「親ノードからの追加 配線情報ID1」および「親ノードからの追加 配線情報ID2」は、配線差分情報IDでリンクされるノード基本情報122A1のノードにおいて、自動配線の結果、親ノードに対して追加された配線情報を識別する識別子である。「親ノードからの削除 配線情報ID1」および「親ノードからの削除 配線情報ID2」は、配線差分情報IDでリンクされるノード基本情報122A1のノードにおいて、自動配線の結果、親ノードに対して削除された配線情報を識別する識別子である。
次に、図4から図6を用いて、配線条件情報122C1、配線ルール情報122D1および配線差分情報122E1の配下のデータ構造について説明する。図4は、配線条件情報のデータ構造の一例を示す図である。図4に示すように、配線条件情報122C1の「バス定義ID」は、配線条件情報122C1の配下にあるバス定義122C2を識別する識別子である。また、配線条件情報122C1の「バス自動配線順定義ID」は、配線条件情報122C1の配下にあるバス自動配線順定義122C5を識別する識別子である。
バス定義122C2は、「バス定義ID」、「バス名」、「配線対象層名」、「バス指示経路ID」、「所属バスネットID1」、「所属バスネットID2」といった項目を有する。「バス定義ID」は、バス定義122C2を識別する識別子である。「バス名」は、バスの名称を示す情報である。「配線対象層名」は、当該バスを配線する層の名称を示す情報である。「バス指示経路ID」は、当該バスの経路情報を示すバス指示経路定義122C3を識別する識別子である。「所属バスネットID1」および「所属バスネットID2」は、当該バスの所属バスネットを示す所属バスネット定義122C4を識別する識別子である。
バス指示経路定義122C3は、「バス指示経路ID」、「経路情報」、「経路1座標」、「経路2座標」といった項目を有する。「バス指示経路ID」は、バス指示経路定義122C3を識別する識別子である。「経路情報」は、バスの指示経路を示す情報である。「経路1座標」および「経路2座標」は、「経路情報」の配下に位置し、それぞれの経路ごとの座標を示す情報である。
所属バスネット定義122C4は、「バスネットID」、「ネット名」、「FROM部品ピン名」、「TO部品ピン名」といった項目を有する。「バスネットID」は、所属バスネット定義122C4を識別する識別子である。「ネット名」は、当該ネット、つまり配線の名称を示す情報である。「FROM部品ピン名」および「TO部品ピン名」は、ネットの両端に接続される部品ピン名を、それぞれ示す情報である。なお、「FROM部品ピン名」および「TO部品ピン名」は、設計データのネットリストから取得する。
バス自動配線順定義122C5は、「バス自動配線順定義ID」、「対象バス名1[優先順1]」、「対象バス名2[優先順2]」といった項目を有する。「バス自動配線順定義ID」は、バス自動配線順定義122C5を識別する識別子である。「対象バス名1[優先順1]」および「対象バス名2[優先順2]」は、自動配線の対象バス名および優先順を示す情報である。
図5は、配線ルール情報のデータ構造の一例を示す図である。図5に示すように、配線ルール情報122D1の「ネット線幅定義ID1」および「ネット線幅定義ID2」は、配線ルール情報122D1の配下にあるネット線幅定義122D2を識別する識別子である。
ネット線幅定義122D2は、「ネット線幅ID」、「ネット名」、「層名」、「線幅」といった項目を有する。「ネット線幅ID」は、ネット線幅定義122D2を識別する識別子である。「ネット名」は、線幅が定義されるネットの名称を示す情報である。「層名」は、ネットが配線される配線層の名称を示す情報である。「線幅」は、配線されるネットの線幅を示す情報である。
図6は、配線差分情報のデータ構造の一例を示す図である。図6に示すように、配線差分情報122E1の「親ノードからの追加 配線情報ID1」および「親ノードからの追加 配線情報ID2」は、配線差分情報122E1の配下にある配線情報122E2を識別する識別子である。なお、「親ノードからの削除 配線情報ID1」および「親ノードからの削除 配線情報ID2」についても、親ノードからの追加の場合と同様である。
配線情報122E2は、「配線情報ID」、「配線種別」、「配線座標」、「配線ネット」、「配線層」、「配線線幅」、「所属バス名」といった項目を有する。「配線情報ID」は、配線情報122E2を識別する識別子である。「配線種別」は、親ノードから追加または削除された配線(ネット)の種別を示す情報である。「配線種別」は、例えば直線を表すラインや、曲線を表す円弧等が挙げられる。「配線座標」は、配線(ネット)の座標を示す情報である。「配線座標」は、例えば、配線種別がラインである場合には、FROM座標およびTO座標を示し、配線種別が円弧であれば、中心点、始点および終点の座標を示す。「配線ネット」は、配線の名称、つまりネットの名称を示す情報である。「配線層」は、配線された配線層を示す情報である。「配線線幅」は、配線の線幅を示す情報である。「所属バス名」は、配線が所属するバスの名称を示す情報である。
図1Aおよび図1Bの説明に戻って、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。
制御部130は、生成部131と、探索部132と、出力制御部133とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図1Aおよび図1Bに示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
まず、図7を用いて、情報処理装置100で行うノード生成処理の概要について説明する。図7は、ノード生成処理の概要を説明する図である。図7の初回動作に示すように、プリント配線基板の設計者は、CAD設計画面20において、初回の設計作業を行った後、初期データを登録する。なお、CAD101は、情報処理装置100上で動作しているものとする。情報処理装置100は、CAD101から設計データの転送を受け付けて、配線条件登録および配線ルール登録を行って基準ノードを生成する。情報処理装置100は、ノード表示画面21に、生成した基準ノード22を表示する。
続いて、図7の設計データ編集後動作に示すように、プリント配線基板の設計者は、CAD設計画面23において、例えば、配線条件や配線ルールの変更後に設計データを保存する。情報処理装置100で実行するノード生成処理は、CAD101から設計データの転送を受け付けて、配線条件登録および配線ルール登録を行って分岐ノード25を生成する。情報処理装置100は、ノード表示画面24に、既存の基準ノード22と、生成した分岐ノード25とを表示する。このように、情報処理装置100では、CAD101を用いてプリント配線基板を設計編集していくと、試行結果がノードとして追加されていくことになる。なお、以下の説明では、ノード生成処理を、データ構造生成処理と、ノード配置処理とに分けて説明する。
図1Aおよび図1Bの説明に戻って、生成部131は、初回動作の際に、設計データに基づいて、共通情報およびノード情報を生成し、それぞれ共通情報記憶部121およびノード情報記憶部122に記憶する。つまり、生成部131は、CAD101から設計データの転送を受け付けて、データ構造生成処理を実行する。生成部131は、設計者からの入力に基づいて、ノードに対する配線条件項目を登録する。生成部131は、登録する配線条件項目を、共通情報記憶部121の配線条件項目定義121cに記憶する。
生成部131は、配線条件項目定義121cに記憶した配線条件項目に対する優先度の設定を、設計者から受け付ける。生成部131は、受け付けた優先度の設定を、共通情報記憶部121の配線条件登録定義121dに記憶する。なお、配線条件項目の登録、および、優先度の設定は、プロジェクトの開始時に1回実行すればよい。
図8は、ノードへの配線条件項目の登録の一例を示す図である。図8に示すように、生成部131は、設計者によって登録する配線条件項目および各優先度が入力されると、それぞれの情報を共通情報記憶部121に記憶し、ノード表示画面26に、基準ノード27と、配線条件登録項目28とを表示する。配線条件登録項目28には、入力され登録された配線条件登録項目と優先度とが対応付けて表示される。
生成部131は、設計データに基づいて、ノード基本情報122A1を生成する。次に、生成部131は、ノード基本情報122A1からリンクする子ノード管理情報122A2、配線条件情報122C1、配線ルール情報122D1および配線差分情報122E1を生成する。なお、子ノード管理情報122A2および配線差分情報122E1は、初回動作の場合には、データ構造の中身は空の状態である。
生成部131は、設計データと、登録された配線条件項目である配線条件登録項目とに基づいて、設計データから配線条件登録項目に対応したデータを抽出する。生成部131は、抽出したデータから配線条件情報のデータ構造である配線条件情報122C1、ならびに、配下のバス定義122C2、バス指示経路定義122C3、所属バスネット定義122C4およびバス自動配線順定義122C5を生成する。
図9は、配線条件情報のデータ構造の生成の一例を示す図である。図9に示すように、生成部131は、CAD設計画面29において、設計者によって設計データ30の保存が行われると、配線条件情報122C1および配下のデータ構造を生成する。生成部131は、例えば、データ構造生成画面31に示すように、配線条件登録項目32と、配線条件情報33とを表示して、設計者にどの様なデータ構造が生成されたかを表示するようにしてもよい。なお、図9中のC1〜C5は、配線条件情報122C1〜バス自動配線順定義122C5に対応する。
同様に、生成部131は、抽出したデータから配線ルール情報のデータ構造である配線ルール情報122D1、および、配下のネット線幅定義122D2を生成する。
図10は、配線ルール情報のデータ構造の生成の一例を示す図である。図10に示すように、生成部131は、CAD設計画面29において、設計者によって設計データ30の保存が行われると、配線ルール情報122D1および配下のデータ構造を生成する。生成部131は、例えば、データ構造生成画面34に示すように、配線条件登録項目32と、配線ルール情報35とを表示して、設計者にどの様なデータ構造が生成されたかを表示するようにしてもよい。
さらに、同様に、生成部131は、抽出したデータから配線差分情報のデータ構造である配線差分情報122E1、および、配下の配線情報122E2を生成する。
図11は、配線差分情報のデータ構造の生成の一例を示す図である。図11に示すように、生成部131は、CAD設計画面29において、設計者によって設計データ30の保存が行われると、配線差分情報122E1および配下のデータ構造を生成する。生成部131は、例えば、データ構造生成画面36に示すように、配線条件登録項目32と、配線差分情報37とを表示して、設計者にどの様なデータ構造が生成されたかを表示するようにしてもよい。
なお、生成部131は、2回目以降の保存時には、CAD101から設計データの転送を受け付けて、配線条件情報、配線ルール情報および配線差分情報のデータ構造を生成することで、保存時の設計データに対応するノードを生成する。
生成部131は、ノードのデータ構造の生成が完了すると、ノードを木構造のどこに配置するかを決定するノード配置処理を実行する。生成部131は、共通情報記憶部121を参照し、配線条件項目の登録数をMに設定する。生成部131は、保存時の設計データを設計データSとすると、当該設計データSに基づいて、上述の配線条件情報、配線ルール情報および配線差分情報のデータ構造を生成する。
生成部131は、設定値Mに基づいて、M桁が全て「9」の数値を最小比較ナンバーとして設定する。すなわち、最小比較ナンバーの初期値は、例えば、設定値M=6であるとすると、「999999」が設定される。
生成部131は、検査対象のノードを表す検査ノード集合に、ルートノードIDを追加する。生成部131は、ノード配置の検査対象ノードを表す検査ノードIDに、検査ノード集合の先頭ノードIDを代入する。生成部131は、設計データSの各データ構造と、検査ノードIDが示す検査ノードの各データ構造とに基づいて、比較ナンバーを算出する。
ここで、図12を用いて比較ナンバーの算出について説明する。図12は、比較ナンバーの算出の一例を示す図である。図12に示すように、生成部131は、検査ノードであるノードFのデータ構造と、保存時の設計データSに対応するノードGのデータ構造とについて、配線条件登録項目32の各配線条件項目を比較する。つまり、生成部131は、2つのノードの、配線条件情報とそのリンク先、配線ルール情報とそのリンク先、および、配線差分情報とそのリンク先を比較する。生成部131は、配線条件登録項目32の優先度順に、設定値が全て同じであれば「0」、1箇所でも異なれば「1」を左から順に並べて比較ナンバーを算出する。例えば、比較ナンバー算出画面38の比較ナンバー39は、「011000」であるので、ノードFとノードGとは、優先度「2」のバス分割の配線層と、優先度「3」のバス分割の配線経路とが異なることを示す。なお、生成部131は、比較ナンバーの比較時に、比較ナンバー算出画面38を表示して、設計者に比較ナンバーの算出過程を表示するようにしてもよい。
生成部131は、算出した比較ナンバーが最小比較ナンバー未満であるか否かを判定する。生成部131は、比較ナンバーが最小比較ナンバー未満であると判定した場合には、最小比較ナンバーに比較ナンバーを代入する。また、生成部131は、最小ノードIDに検査ノードIDを代入する。生成部131は、検査ノード集合の最後尾に、検査ノードの子ノード全てのノードIDを順に追加する。
一方、生成部131は、比較ナンバーが最小比較ナンバー未満でないと判定した場合には、最小比較ナンバーへの代入および最小ノードIDへの代入を行わずに、検査ノード集合の最後尾に、検査ノードの子ノード全てのノードIDを順に追加する。
生成部131は、子ノードのノードIDを検査ノード集合に追加すると、検査ノード集合の先頭の検査ノードIDを削除する。すなわち、生成部131は、比較ナンバーの判定が終了した検査対象ノードを検査ノード集合から削除する。生成部131は、検査ノード集合が空であるか否かを判定する。生成部131は、検査ノード集合が空でないと判定した場合には、次の検査ノードの比較ナンバーの判定に移る。
生成部131は、検査ノード集合が空であると判定した場合には、最小ノードIDが示すノードの配下を、設計データSに対応するノードの配置位置と決定する。生成部131は、決定したノードの配置位置に基づいて、設計データSに対応するノード基本情報122A1およびその配下の情報をノード情報記憶部122に記憶する。
すなわち、生成部131は、バス配線の条件の変更、または、バス配線の条件に基づく配線結果の生成が行われると、第1ノードを生成する。また、生成部131は、生成した第1ノードに、バス配線の条件とバス配線の条件の変更後の設計データとを対応付け、あるいは、バス配線の条件と配線結果と配線結果の生成後の設計データとを対応付けて、記憶部に保存する保存部の一例である。
ここで、図13を用いて、ノード配置の具体例について説明する。図13は、木構造の各ノードにおける比較ナンバーの一例を示す図である。図13のノード表示画面40は、例えば、ノードID「00000」〜「00006」の既存のノードに対して、ノードID「00007」で示す新たなノード(分岐ノード)を保存する場合である。このときに用いる配線条件登録項目は、配線条件登録項目41であるとする。
生成部131は、ルートノードであるノードID「00000」から順に、ある保存時の設計データに対応するバス配線の条件42との比較ナンバーを算出する。生成部131は、各ノードの比較ナンバーを算出した結果、最初に見つかった最小ナンバーは、ノードID「00002」の比較ナンバー「000010」である。従って、生成部131は、ノードID「00002」の配下に、新たなノードをノードID「00007」として追加する。なお、ノードID「00002」の配下には、比較ナンバー「000010」のノードID「00006」が存在するが、木構造のルートノードから順に検査していくため、新たなノードは、ノードID「00006」の配下とはならない。すなわち、生成部131は、幅優先探索で新たなノードの追加先を探索し、先に見つかったノードを優先する。また、生成部131は、比較ナンバー「000000」のノードIDが見つかった場合、当該ノードのバス配線の条件と、保存しようとする設計データのバス配線の条件とは同じであるので、新たなノードは生成しない。
言い換えると、生成部131は、基準となるノードを根ノードとし、第1ノードを子ノードとする木構造となるように、第1ノードを生成する。また、生成部131は、第1ノードの生成時に、根ノードから順に幅優先探索を用いて、第1ノードに対応するバス配線の条件と、既存のノードのバス配線の条件との差分を算出し、算出した差分が最小となる既存のノードの配下に、第1ノードを生成する。また、生成部131は、バス配線の条件が複数の項目を有する場合に、項目に優先度を付与し、優先度が高い項目を上位の桁とする、項目ごとに差分の有無を表す値を算出し、算出した値が最小となる既存のノードの配下に、第1ノードを生成する。また、生成部131は、バスに関する配線条件情報、基板上の配線ルールに関する配線ルール情報、および、親ノードと子ノードとの配線の差分に関する配線差分情報を比較して、生成する第1ノードと既存のノードとの間における項目ごとの差分を算出する。また、バス配線の条件は、バスネット定義、バス配線対象層、バス経路、バス自動配線優先順、ネット線幅および配線結果のうち、1つまたは複数の情報を含む。
図1Aおよび図1Bの説明に戻って、探索部132は、設計者からの指示に基づいて、指示に応じたノードを探索する。探索部132は、例えば、設計者からプロジェクトの選択を受け付ける。探索部132は、プロジェクトの選択を受け付けると、共通情報記憶部121およびノード情報記憶部122を参照し、プロジェクトの木構造を表示するノード表示画面を表示部111に表示する。
探索部132は、例えば、ノード表示画面のメニュー項目のうち、詳細検索が選択されることで、ノードの絞り込みを行うか否かを判定する。探索部132は、ノードの絞り込みを行うと判定した場合には、詳細検索における絞り込み条件を受け付けて、ノードを絞り込んだノード表示画面を表示する。探索部132は、ノードの絞り込みを行わないと判定した場合には、表示中のノード表示画面を引き続き表示する。
探索部132は、例えば、ノード表示画面のメニュー項目のうち、条件差分表示が選択されることで、2つのノードを比較するか否かを判定する。探索部132は、ノードを比較すると判定した場合には、ノード表示画面において、比較するノードの選択を受け付けて、比較結果を表示する。探索部132は、ノードを比較しないと判定した場合には、表示中のノード表示画面を引き続き表示する。
探索部132は、ノード表示画面において、ノードの指定を受け付ける。探索部132は、ノード情報記憶部122を参照し、指定されたノードに対応する設計データを出力制御部133に出力する。
出力制御部133は、探索部132から設計データが入力されると、設計データをCAD101に転送する。CAD101は、出力制御部133から転送された設計データを読み込んで、CAD設計画面に、設計者が編集可能に表示する。
すなわち、探索部132は、バス配線の条件の指定を受け付けると、指定されたバス配線の条件と一致する第2ノードを探索する。また、探索部132は、所定の検索条件に合致する木構造を表示し、表示した木構造に含まれるノードの指定を受け付けることで、バス配線の条件の指定を受け付ける。また、探索部132は、木構造を表示し、表示した木構造に含まれる2つのノードの指定を受け付ける。また、探索部132は、受け付けた2つのノードのノード間のバス配線の条件の差分を表示し、2つのノードのうち、いずれかのノードの指定を受け付けることで、バス配線の条件の指定を受け付ける。また、出力制御部133は、探索したノードに対応する設計データを出力する。
ここで、図14から図18を用いて、ノード表示画面およびノードの選択について説明する。図14は、ノード表示画面の一例を示す図である。図14に示すように、ノード表示画面45は、メニュー部46と、木構造表示部47とを有する。ノード表示画面45は、例えば、プロジェクト「PJ−01」に対応するものとする。メニュー部46には、例えば、ノードの絞り込みを行う「詳細検索」、ノードを比較する「条件差分表示」、選択されたノードの設計データをCAD101に転送する「設計データをツールで開く」といったメニュー項目を有する。
木構造表示部47は、プロジェクトの木構造を表示する。木構造は、例えば、ルートノードである基準ノード48を左端に表示し、子ノードを右側に順に表示する形式とする。子ノードは、例えば、CAD101で設計データが保存される度に生成される。ノード表示画面45では、基準ノード48から対象ネットの条件変更が行われたノード49、ノード49から配線層の条件変更が行われたノード50、ノード50から経路指示の条件変更が行われたノード51といった具合に子ノードが生成される。また、ノード51の配下には、配線結果のノード52aと、配線結果のノード52bとが同じ階層の子ノードとして生成されている。ノード52aとノード52bとは、例えば、自動配線のパラメータや乱数が異なるために配線順が異なる場合等に対応し、配線結果としては異なる状態を表すノードになる。以下、同様に、ノード表示画面45では、それぞれのノードから条件変更や自動配線が行われる度に、新たなノードが生成されていくことになる。
なお、ノード52a配下の子ノードは、ノード52aの配線結果を利用していることを示す。配線結果の利用とは、例えば、バスが3つある場合に、1つ目のバスの配線結果を利用して、2つ目のバスの条件変更や自動配線を行う場合である。また、子ノードは、条件変更後に自動配線を行わない場合もあり得る。さらに、各ノードは、1つの条件変更に対して、1回保存することで1つのノードを生成しているが、2つの条件変更を1つのノードに含めるようにしてもよい。
図15は、ノードの絞り込みの一例を示す図である。図15に示すノード表示画面53は、絞り込み条件を受け付けて、ノードを絞り込んだ状態を表す。ノード表示画面53では、例えば、メニュー項目「詳細検索」が選択され、ダイアログボックス54が表示される。ダイアログボックス54では、例えば、バス名「BUS1」で検索する等といった絞り込み条件を受け付ける。ノード表示画面53には、ダイアログボックス54で入力された絞り込み条件に応じた木構造が表示される。絞り込み条件は、バス名の他にも、例えば、層名、ネット名、ネット線幅、登録日時等を用いることができる。
ノード表示画面53では、例えば、比較の基準となるノード55に対して、配線結果のノード56aと、配線結果のノード56bとを比較することができる。ノード56aは、ノード56bと比べて、バス名「BUS1」で示すバスの回りの配線について条件変更が行われているものとする。設計者は、ノード56aとノード56bとを比較することで、バスの回りの配線等の様な間接的な条件の違いを比較できる。同様に、設計者は、ノード56aからさらに対象ネットおよび配線層の条件変更が行われたノード57aと、ノード56bからさらに対象ネットおよび配線層の条件変更が行われたノード57bとを比較することで、直接的な条件の違いを比較できる。同様に、設計者は、ノード57aからさらに経路指示の条件変更と自動配線が行われた配線結果を示すノード58aと、ノード57bからさらに経路指示の条件変更と自動配線が行われたノード58bとを比較することで、配線率の違いを比較できる。つまり、情報処理装置100は、あるノードを基準として、当該ノードからの木構造を表示することで、検索対象に対する失敗要因の考察を支援することができる。
図16は、比較する2つのノードの選択の一例を示す図である。図16に示すノード表示画面60は、ノード表示画面53と同様のノードを絞り込んだ状態を表す。ノード表示画面60では、例えば、メニュー項目「条件差分表示」が選択されると、比較する2つのノードの選択を受け付ける状態となる。情報処理装置100は、例えば、ノード61とノード62とが選択されると、選択されたノード61とノード62について、バス配線の条件の比較結果を表示する比較結果画面を表示する。
図17は、2つのノード間の比較結果の一例を示す図である。図17に示すように、比較結果画面63は、ノード表示画面60で選択された2つのノードについて、バス配線の条件の比較結果を、例えば配線条件登録項目の優先度順に表示する。なお、比較結果画面63の表において、網掛けされている行は項目を表す。例えば、比較結果画面63のノードID「XXXX」では、「バス分割の配線層」について、「BUS1」が「L3」、「BUS2」が「L5」、「BUS3」が「L7」である。一方、ノードID「YYYY」では、「バス分割の配線層」について、「BUS1」が「L5」、「BUS2」が「L7」、「BUS3」が「L3」である。このように、比較結果画面63は、2つのノード間で異なる部分を表示する。なお、比較結果画面63では、2つのノード間で異なる部分がない場合、「ネットの配線幅」のように、項目行だけの表示となる。
図18は、ノードの指定を受け付ける場合の一例を示す図である。図18に示すように、情報処理装置100は、ノード表示画面64において、例えば、ノード[00003]の選択を受け付ける。次に、情報処理装置100は、メニュー項目の「設計データをツールで開く」の選択を受け付けると、出力制御部133がノード[00003]に対応する設計データをCAD101に転送する。CAD101は、出力制御部133から転送された設計データを読み込んで、CAD設計画面65に、設計者が編集可能に表示する。これにより、設計者は、指定したノードに対応する設計データから、ただちに試行を再開することができる。
次に、実施例の情報処理装置100の動作について説明する。まず、ノード生成処理のうち、データ構造生成処理について説明する。図19は、実施例のデータ構造生成処理の一例を示すフローチャートである。
生成部131は、設計者からの入力に基づいて、ノードに対する配線条件項目を登録する(ステップS1)。生成部131は、登録する配線条件項目を、共通情報記憶部121の配線条件項目定義121cに記憶する。
生成部131は、配線条件項目定義121cに記憶した配線条件項目に対する優先度の設定を、設計者から受け付ける。生成部131は、受け付けた優先度の設定を、共通情報記憶部121の配線条件登録定義121dに記憶して設定する(ステップS2)。
生成部131は、設計データに基づいて、ノード基本情報122A1を生成する。生成部131は、ノード基本情報122A1からリンクする子ノード管理情報122A2を生成する。
生成部131は、設計データと、配線条件登録項目とに基づいて、設計データから配線条件登録項目に対応したデータを抽出する。生成部131は、抽出したデータから配線条件情報のデータ構造である配線条件情報122C1、ならびに、配下のバス定義122C2〜バス自動配線順定義122C5を生成する(ステップS3)。
生成部131は、抽出したデータから配線ルール情報のデータ構造である配線ルール情報122D1、および、配下のネット線幅定義122D2を生成する(ステップS4)。生成部131は、抽出したデータから配線差分情報のデータ構造である配線差分情報122E1、および、配下の配線情報122E2を生成する(ステップS5)。これにより、生成部131は、設計データに対応するノードのデータ構造を生成することができる。なお、生成部131は、2回目以降の保存時には、ステップS3〜S5を実行することで、保存時の設計データに対応するノードのデータ構造を生成することができる。
次に、ノード生成処理のうち、ノード配置処理について説明する。図20は、実施例のノード配置処理の一例を示すフローチャートである。
生成部131は、共通情報記憶部121を参照し、配線条件項目の登録数をMに設定する(ステップS11)。生成部131は、保存時の設計データを設計データSとすると、当該設計データSに基づいて、配線条件情報、配線ルール情報および配線差分情報のデータ構造を生成する(ステップS12)。すなわち、生成部131は、設計データSに対して、データ構造生成処理のステップS3〜S5を実行する。
生成部131は、設定値Mに基づいて、M桁が全て「9」の数値を最小比較ナンバーとして設定する(ステップS13)。生成部131は、検査ノード集合に、ルートノードIDを追加する(ステップS14)。生成部131は、検査ノードIDに、検査ノード集合の先頭ノードIDを代入する(ステップS15)。生成部131は、設計データSの各データ構造と、検査ノードIDが示す検査ノードの各データ構造とに基づいて、比較ナンバーを算出する(ステップS16)。
生成部131は、算出した比較ナンバーが最小比較ナンバー未満であるか否かを判定する(ステップS17)。生成部131は、比較ナンバーが最小比較ナンバー未満であると判定した場合には(ステップS17:肯定)、最小比較ナンバーに比較ナンバーを代入する(ステップS18)。また、生成部131は、最小ノードIDに検査ノードIDを代入し(ステップS19)、ステップS20に進む。
一方、生成部131は、比較ナンバーが最小比較ナンバー未満でないと判定した場合には(ステップS17:否定)、最小比較ナンバーへの代入および最小ノードIDへの代入を行わずに、ステップS20に進む。
生成部131は、検査ノード集合の最後尾に、検査ノードの子ノード全てのノードIDを順に追加する(ステップS20)。生成部131は、子ノードのノードIDを検査ノード集合に追加すると、検査ノード集合の先頭の検査ノードIDを削除する(ステップS21)。生成部131は、検査ノード集合が空であるか否かを判定する(ステップS22)。生成部131は、検査ノード集合が空でないと判定した場合には(ステップS22:否定)、ステップS15に戻り、次の検査ノードの比較ナンバーの判定に移る。
生成部131は、検査ノード集合が空であると判定した場合には(ステップS22:肯定)、最小ノードIDが示すノードの配下を、設計データSに対応するノードの配置位置と決定する(ステップS23)。生成部131は、決定したノードの配置位置に基づいて、設計データSに対応するノード基本情報122A1およびその配下の情報をノード情報記憶部122に記憶する。これにより、情報処理装置100は、バス配線の条件および設計データを木構造のノードと対応付けて保存できる。
次に、CAD101に読み込みたい設計データを出力する設計データ出力処理について説明する。図21は、実施例の設計データ出力処理の一例を示すフローチャートである。
探索部132は、設計者からプロジェクトの選択を受け付ける(ステップS31)。探索部132は、プロジェクトの選択を受け付けると、共通情報記憶部121およびノード情報記憶部122を参照し、プロジェクトの木構造を表示するノード表示画面を表示部111に表示する(ステップS32)。
探索部132は、ノードの絞り込みを行うか否かを判定する(ステップS33)。探索部132は、ノードの絞り込みを行うと判定した場合には(ステップS33:肯定)、絞り込み条件を受け付けて、ノードを絞り込んだノード表示画面を表示し(ステップS34)、ステップS35に進む。探索部132は、ノードの絞り込みを行わないと判定した場合には(ステップS33:否定)、表示中のノード表示画面を引き続き表示し、ステップS35に進む。
探索部132は、2つのノードを比較するか否かを判定する(ステップS35)。探索部132は、ノードを比較すると判定した場合には(ステップS35:肯定)、比較するノードの選択を受け付けて、比較結果を表示し(ステップS36)、ステップS37に進む。探索部132は、ノードを比較しないと判定した場合には(ステップS35:否定)、表示中のノード表示画面を引き続き表示し、ステップS37に進む。
探索部132は、ノードの指定を受け付ける(ステップS37)。探索部132は、ノード情報記憶部122を参照し、指定されたノードに対応する設計データを出力制御部133に出力する(ステップS38)。出力制御部133は、探索部132から設計データが入力されると、設計データをCAD101に転送する。CAD101は、出力制御部133から転送された設計データを読み込んで、CAD設計画面に編集可能に表示する。これにより、情報処理装置100は、任意の段階の設計データを得ることができる。
このように、情報処理装置100は、バス配線の条件の変更、または、バス配線の条件に基づく配線結果の生成が行われると、第1ノードを生成する。また、情報処理装置100は、生成した第1ノードに、バス配線の条件とバス配線の条件の変更後の設計データとを対応付け、あるいは、バス配線の条件と配線結果と配線結果の生成後の設計データとを対応付けて、記憶部120に保存する。また、情報処理装置100は、バス配線の条件の指定を受け付けると、指定されたバス配線の条件と一致する第2ノードを探索する。また、情報処理装置100は、探索した第2ノードに対応する設計データを出力する。その結果、情報処理装置100は、任意の段階の設計データを得ることができる。
また、情報処理装置100は、基準となるノードを根ノードとし、第1ノードを子ノードとする木構造となるように、第1ノードを生成する。その結果、情報処理装置100は、設計データの履歴を記憶できる。
また、情報処理装置100は、第1ノードの生成時に、根ノードから順に幅優先探索を用いて、第1ノードに対応する前記バス配線の条件と、既存のノードのバス配線の条件との差分を算出し、算出した該差分が最小となる既存のノードの配下に、第1ノードを生成する。その結果、情報処理装置100は、バス配線の条件が近いノード同士を近傍に配置できる。
また、情報処理装置100は、バス配線の条件が複数の項目を有する場合に、項目に優先度を付与し、優先度が高い項目を上位の桁とする、項目ごとに差分の有無を表す値を算出し、算出した値が最小となる既存のノードの配下に、第1ノードを生成する。その結果、情報処理装置100は、バス配線の条件が近いノード同士を近傍に配置できる。
また、情報処理装置100は、バスに関する配線条件情報、基板上の配線ルールに関する配線ルール情報、および、親ノードと子ノードとの配線の差分に関する配線差分情報を比較して、生成する第1ノードと既存のノードとの間における項目ごとの差分を算出する。その結果、情報処理装置100は、バス配線の条件が近いノード同士を近傍に配置できる。
また、情報処理装置100では、バス配線の条件は、バスネット定義、バス配線対象層、バス経路、バス自動配線優先順、ネット線幅および配線結果のうち、1つまたは複数の情報を含む。その結果、情報処理装置100は、バス配線における各条件に応じたノードを生成できる。
また、情報処理装置100は、所定の検索条件に合致する木構造を表示し、表示した木構造に含まれるノードの指定を受け付けることで、バス配線の条件の指定を受け付ける。その結果、情報処理装置100は、指定されたノードに対応する設計データを出力できる。
また、情報処理装置100は、木構造を表示し、表示した木構造に含まれる2つのノードの指定を受け付ける。また、情報処理装置100は、受け付けた2つのノードのノード間のバス配線の条件の差分を表示し、2つのノードのうち、いずれかのノードの指定を受け付けることで、バス配線の条件の指定を受け付ける。その結果、情報処理装置100は、2つのノードの比較結果に基づくノードの指定を受け付けることができる。
なお、上記実施例では、ノード生成処理および設計データ出力処理を、CAD101も動作する情報処理装置100で実行したが、これに限定されない。例えば、ノード生成処理および設計データ出力処理をクラウド上で実行し、設計者の端末装置でCAD101を実行するようにしてもよい。この場合、ノード情報および設計データは、クラウド上に保存されるので、木構造で多大な分岐が発生してデータ量が増大しても対応することができる。
また、上記実施例では、分岐ノードの生成に特に制限を設けなかったが、これに限定されない。例えば、配線結果が良くならない場合等に、特定条件を含むノードに対し、この先は分岐しないように制限を加えるようにしてもよい。これにより、無駄な作業を回避することができる。
また、上記実施例では、分岐ノードの生成は、設計者による設計データの保存時に行われたが、これに限定されない。例えば、メモリバスの様な特定のバスに対する、条件、ルール、周りの配線状況と、当該バスに対する配線結果(配線率)のデータに基づいて、機械学習の学習モデルを生成し、生成した学習モデルを用いて分岐ノードを自動生成してもよい。この場合、生成する分岐ノードは、配線しようとするバスの最適な条件や、良好な配線結果(例えば、配線率が何%以上である等。)が想定される条件の全てに対応するノードとすることができる。これにより、条件変更による試行錯誤を軽減することができる。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、探索部132と出力制御部133とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
さらに、各装置で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
ところで、上記の各実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図22は、バス配線探索プログラムを実行するコンピュータの一例を示す図である。
図22に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、データ入力を受け付ける入力装置202と、モニタ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る媒体読取装置204と、各種装置と接続するためのインタフェース装置205と、他の情報処理装置等と有線または無線により接続するための通信装置206とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM207と、ハードディスク装置208とを有する。また、各装置201〜208は、バス209に接続される。
ハードディスク装置208には、図1Bに示した生成部131、探索部132および出力制御部133の各処理部と同様の機能を有するバス配線探索プログラムが記憶される。また、ハードディスク装置208には、共通情報記憶部121、ノード情報記憶部122、および、バス配線探索プログラムを実現するための各種データが記憶される。入力装置202は、例えば、コンピュータ200のユーザから操作情報等の各種情報の入力を受け付ける。モニタ203は、例えば、コンピュータ200のユーザに対して表示画面等の各種画面を表示する。インタフェース装置205は、例えば印刷装置等が接続される。通信装置206は、例えば、図1Aに示した通信部110と同様の機能を有し図示しないネットワークと接続され、他の情報処理装置や各種サーバと各種情報をやりとりする。
CPU201は、ハードディスク装置208に記憶された各プログラムを読み出して、RAM207に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ200を図1Bに示した生成部131、探索部132および出力制御部133として機能させることができる。
なお、上記のバス配線探索プログラムは、必ずしもハードディスク装置208に記憶されている必要はない。例えば、コンピュータ200が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ200が読み出して実行するようにしてもよい。コンピュータ200が読み取り可能な記憶媒体は、例えば、CD−ROMやDVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこのバス配線探索プログラムを記憶させておき、コンピュータ200がこれらからバス配線探索プログラムを読み出して実行するようにしてもよい。