(57)【特許請求の範囲】
【請求項１】
基板に設けられる要素に係る位置情報を少なくとも記憶する記憶部と、
前記記憶部に記憶された位置情報に基づき前記基板に設けられる１の入力と１の出力とを有する面の入出力方向に沿って当該面の中心線を抽出し、当該中心線を所定の長さに等分に分割する複数の分割点を設定し、当該分割点各々における前記面の幅を抽出する抽出部と、
前記分割点各々について、前記面の周辺に存在する障害物の輪郭上から障害点を検出する検出部と、
前記分割点各々について、所定の移動条件と前記抽出部が抽出した面の幅と前記検出部が検出した障害点とに基づき移動先を算出する算出部と、
前記分割点各々について、前記所定の移動条件に基づき移動後の前記面の幅を設定する設定部と、
前記算出部が算出した移動先と前記設定部が設定した面の幅とに基づき、前記記憶部に記憶した前記面の位置情報を更新する更新部と、
を備える基板設計装置。 
【請求項２】
前記算出部は、前記分割点各々の前記移動先を、当該分割点と前記中心線上において隣接する２つの分割点を相互に結ぶ線分の垂直二等分線上に算出する請求項１に記載の基板設計装置。 
【請求項３】
前記抽出部は、前記分割点における前記面の幅を、前記中心線上において当該分割点と隣接する２つの分割点各々と当該分割点とを結ぶ線分が成す角度を二等分する線分と前記面の輪郭線とが交わる点から、当該分割点までの距離として抽出する請求項１または２に記載の基板設計装置。 
【請求項４】
前記検出部は、前記分割点を頂点として所定の角度を成す範囲内から、前記障害点を検出する請求項１〜３のいずれか一つに記載の基板設計装置。 
【請求項５】
前記所定の移動条件が、前記面の幅を維持しながら当該面と前記障害物との距離を広げることである場合において、
前記算出部は、前記障害点を通り前記垂直二等分線に直交する線分と前記垂直二等分線との交点である第１の交点から前記分割点に向かう方向に、前記垂直二等分線上を、前記面と前記障害物との間に確保することが規定されている最短距離と前記抽出部が抽出した前記面の幅とを合算した距離だけ離れた点を、移動可能点として算出し、当該移動可能点に基づき前記移動先を算出する請求項２に記載の基板設計装置。 
【請求項６】
前記所定の移動条件が、前記面の幅を広くすることである場合において、
前記算出部は、前記障害点を通り前記垂直二等分線に直交する線分と前記垂直二等分線との交点である第１の交点から前記分割点に向かう方向に、前記垂直二等分線上を、前記面と前記障害物との間に確保することが規定されている最短距離と前記抽出部が抽出した前記面の幅と前記面の幅を広げる長さの最大値とを合算した距離だけ離れた点と、前記分割点を通り前記垂直二等分線に直交する線分と前記垂直二等分線との交点である第２の交点と、のうち、前記第１の交点に近い方の点を、移動可能点として算出し、当該移動可能点に基づき前記移動先を算出する請求項２に記載の基板設計装置。 
【請求項７】
前記所定の移動条件が、前記面と前記障害物との間の距離を広げることである場合において、
前記算出部は、前記障害点を通り前記垂直二等分線に直交する線分と前記垂直二等分線との交点である第１の交点から前記分割点に向かう方向に、前記垂直二等分線上を、前記面と前記障害物との間に確保することが規定されている最短距離と前記抽出部が抽出した前記面の幅と前記面と前記障害物との間において広げる距離の最大値とを合算した距離だけ離れた点と、前記分割点を通り前記垂直二等分線に直交する線分と前記垂直二等分線との交点である第２の交点から前記第１の交点に向かう方向に、前記面の幅として確保することが規定されている最短距離だけ離れた点と、のうち、前記第１の交点に近い方の点を、移動可能点として算出し、当該移動可能点に基づき前記移動先を算出する請求項２に記載の基板設計装置。 
【請求項８】
基板設計装置の抽出部が、記憶部に記憶された、基板に設けられる要素に係る位置情報に基づき、前記基板に設けられる１の入力と１の出力とを有する面の入出力方向に沿って当該面の中心線を抽出し、当該中心線を所定の長さに分割する複数の分割点を設定し、当該分割点各々における前記面の幅を抽出する抽出工程と、
前記基板設計装置の検出部が、前記分割点各々について、前記面の周辺に存在する障害物の輪郭上から障害点を検出する検出工程と、
前記基板設計装置の算出部が、前記分割点各々について、所定の移動条件と前記抽出工程において抽出した面の幅と前記検出工程において検出した障害点とに基づき移動先を算出する算出工程と、
前記基板設計装置の設定部が、前記分割点各々について、前記所定の移動条件に基づき移動後の前記面の幅を設定する設定工程と、
前記基板設計装置の更新部が、前記算出工程において算出した移動先と前記設定工程において設定した面の幅とに基づき、前記記憶部に記憶した前記面の位置情報を更新する更新工程と、
を含む基板設計方法。 
【請求項９】
前記算出工程は、前記基板設計装置の前記算出部が、前記分割点各々の前記移動先を、当該分割点と前記中心線上において隣接する２つの分割点を相互に結ぶ線分の垂直二等分線上に算出する請求項８に記載の基板設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、基板設計装置及び基板設計方法に関する。
【背景技術】
【０００２】
従来、ＣＡＤ（Computer  Aided  Design）システムを用いて基板の設計が行われている。基板とは、例えば、電子部品を搭載し回路配線が構成された、半導体パッケージ等の部品である。
【０００３】
基板の設計においては、多数の電子部品を配置して相互を効率よく配線で接続しなければならず、ＣＡＤシステムが使用されることが多い。設計者は、ＣＡＤシステムを用いて概括的な配置を行い、配線等の幅や位置を調整する。
【０００４】
ＣＡＤシステムにおいて設計中の基板上の部品は、線や面によって表示される。例えば、信号が通る部分は、所定の幅と長さをもった面として示される。以下、「面」とは、設計図上の、一つの入力と一つの出力とを有する部分を意味する。設計者は、モニタ等の表示装置上で面を視認して、周囲の部品との距離やデザインルールを考慮しつつ、当該面の位置や形状を修正する。なお、デザインルールとは、基板を設計する上で規定されているルールである。例えば、配線とボンディングパッドとの間の最短距離などが規定されている。
【０００５】
設計者の設計処理を支援するため、ＣＡＤシステムには、測長機能、オフセット機能、サブ形状作成機能、輪郭編集機能等が設けられている。測長機能とは、配線やビア等の座標データに基づいて配線間や配線とビアとの間の距離を測定する機能である。オフセット機能とは、画面上から指定した形状を拡大・縮小したり、形状は変更せずに所定方向に平行移動させる機能である。サブ（Subtraction）形状作成機能とは、画面上の所定の図形から他の図形の形状に相当する部分を除去する機能である。輪郭編集機能とは、図形の輪郭を滑らかにしたり、不要な凹凸を除去したりする機能である。
【０００６】
ところで、従来、ＣＡＤシステムを用いた自動配線方法において、配線設計を省力化、高速化することが行われている。例えば、設計処理をラフ配線工程と配線成形化工程に分けて行う場合がある。ラフ配線工程では、ボンディングパッド部に近い最内周側から最外周側にいたる複数の端子列を特定する。そして、ビア（Via）部間を均等に配線パターンが通過するように配線ルートを決定する。そして、配線成形化工程では、配線パターンが各端子列間を均等な距離で通過するようにデザインルールに基づき成形を行う。配線ルートの決定と、デザインルールを考慮した配線設計を段階的に行うことで、配線設計の省力化、高速化を実現している。なお、ビアとは、多層基板の層間を接続するための貫通孔である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−８３００６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、半導体パッケージの歩留まりを向上させることが困難であるという問題があった。つまり、上述した従来技術では、手作業で面を修正することから、依然として複数の条件を満たすように修正することは容易ではなく、半導体パッケージの歩留まりを向上させることが困難である。例えば、設計者が所定の面の幅を広げること、または狭めることに注意を集中させるため、面と周辺要素との距離がデザインルールに違反したり、面自体の幅がデザインルールに違反する等の恐れがある。その結果、半導体パッケージの信頼性が低下する。また、設計図面に含まれる面は、数が多く形状も複雑である。そのため、一つ一つの面について従来のように手作業で処理を行うためには多くの時間と人手が要される。その結果、半導体パッケージの歩留まり向上が困難である。
【０００９】
図１５および図１６を参照し、従来、設計者が手作業で行っていた基板設計方法を説明する。図１５は、ＣＡＤシステムを用いて作成される基板の設計図面の一例を示す図である。図１６は、従来の手作業による面形状更新処理の一例を示す図である。図１５に示す設計図面上には、ビア１ａ、１ｂと面２ａ、２ｂとが配置されている。面２ａおよび２ｂはそれぞれ、一つの入力と一つの出力を有する。
【００１０】
まず、図１６を参照して、図１５中Ａで示す箇所の面の幅を太くする場合の手順を説明する。設計者は、表示画面上に示される箇所Ａを目視により確認する。つぎに設計者は、ＣＡＤの測長機能を用いて、面２ａの輪郭線からビア１ｂまでの距離を計測する（図１６の（Ａ）中、Ｌ１で示す距離）。計測結果に基づき、設計者は、デザインルールを考慮して面２ａの輪郭線を移動させることができる距離を計算する（図１６の（Ａ）中、Ｌ２で示す距離）。デザインルール上、ビア１ｂと面２ａとの間に確保すべき最短距離Ｌ３（図１６の（Ｂ）参照）が規定されているので、この距離を考慮する。次に、デザインルールを考慮してビア１ｂの周辺に確保すべきスペースを加味した形状を、オフセット機能を用いて作成する（図１６の（Ｂ））。その後、目視により隣の面２ｂとの間にデザインルールを考慮した距離Ｌ４を確保しつつ適当な範囲まで面２ａの幅を太くした図形を作成する（図１６の（Ｂ））。幅を太くした面２ａから、先にオフセット機能により作成した、ビア１ｂの周辺にデザインルールに基づくスペースを確保した形状分を除去する（図１６の（Ｃ））。そして、輪郭編集機能を用いて、面２ａの輪郭線を滑らかにし、不要な部分を削除する（図１６の（Ｄ））。
【００１１】
次に、設計者が配線と面との距離を広げる場合を説明する。例として、図１６の（Ｅ）に示すように、ビア１ｃ、面２ｃ、配線３が、半導体パッケージの輪郭線４とともに画面上に表示されているとする。設計者は、面２ｃの図中上側の輪郭線と、配線３との距離Ｌ５を、測長機能を用いて計測する（図１６の（Ｆ））。次に、デザインルールを考慮して配線３と面２ｃとの距離を広げることができる長さＬ６を計算する。そして、オフセット機能を用いて、配線３の形状を拡大して、長さＬ５に長さＬ６を加算して得られる長さＬ７だけ配線３から離れた位置を輪郭線が通る形状５を作成する（図１６の（Ｆ））。次に、輪郭編集機能を用いて、形状５と面２ｃの輪郭線とが重なりあうよう、面２ｃの輪郭線を修正する（図１６の（Ｇ））。最後に輪郭編集機能を用いて、デザインルールに違反しない幅Ｌ８に面２ｃの幅を修正する（図１６の（Ｈ））。
【００１２】
このように、従来の手順によって設計図に示される面の修正を手作業で行う場合、複数の条件に留意して多数の面の位置と太さを修正しなければならない。このため、多くの時間と人手が要され、半導体パッケージの歩留まり向上が困難である。
【００１３】
そこで、本開示の技術は、上述した従来技術の問題に鑑みて、半導体パッケージの歩留まりを向上させることを可能にする基板設計装置および基板設計方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、開示の装置は、記憶部が、基板に設けられる要素に係る位置情報を少なくとも記憶する。そして、抽出部が、前記記憶部に記憶された位置情報に基づき前記基板に設けられる１の入力と１の出力とを有する面の入出力方向に沿って当該面の中心線を抽出する。抽出部はさらに、当該中心線を所定の長さに等分に分割する複数の分割点を設定し、当該分割点各々における前記面の幅を抽出する。そして、検出部が、前記分割点各々について、前記面の周辺に存在する障害物の輪郭上から障害点を検出する。そして、算出部が、前記分割点各々について、所定の移動条件と前記抽出部が抽出した面の幅と前記検出部が検出した障害点とに基づき移動先を算出する。さらに、設定部が、前記分割点各々について、前記所定の移動条件に基づき移動後の前記面の幅を設定する。最後に、更新部が、前記算出部が算出した移動先と前記設定部が設定した面の幅とに基づき、前記記憶部に記憶した前記面の位置情報を更新する。
【発明の効果】
【００１５】
開示の装置は、半導体パッケージの歩留まりを向上させることを可能にする。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例１に係る基板設計装置の構成を示す図である。
【図２】図２は、実施例１に係る基板設計装置により設計される基板の設計図の一部を模式的に示す図である。
【図３】図３は、図１に示す移動データ記憶部により記憶される情報の例を示す図である。
【図４】図４は、中心線抽出処理を説明するための図である。
【図５】図５は、分割点設定処理を説明するための図である。
【図６】図６は、面幅抽出処理を説明するための図である。
【図７】図７は、障害点検出処理を説明するための図である。
【図８】図８は、垂直二等分線、分割点垂点および障害点垂点を説明するための図である。
【図９】図９は、移動可能点算出処理を説明するための図である。
【図１０】図１０は、移動先決定処理を説明するための図である。
【図１１】図１１は、面幅設定処理を説明するための図である。
【図１２】図１２は、面形状更新処理の結果を移動条件ごとに示す図である。
【図１３】図１３は、実施例１に係る基板設計装置による面形状更新処理の手順を示すフローチャートである。
【図１４】図１４は、基板設計プログラムを実行するコンピュータを示す図である。
【図１５】図１５は、ＣＡＤシステムを用いて作成される基板の設計図面の一例を示す図である。
【図１６】図１６は、従来の手作業による面形状更新処理の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、本願の開示する基板設計装置及び基板設計方法の実施例を詳細に説明する。なお、本願の開示する基板設計装置および基板設計方法は、以下の実施例により限定されるものではない。
【実施例１】
【００１８】
実施例１に係る基板設計装置は、ＣＡＤシステムによって設計された半導体パッケージの設計図上の各要素の位置情報に基づいて、設計図に示される面の情報を更新する。なお、ＣＡＤシステムによって設計された半導体パッケージの設計図上の各要素とは、例えば、ボンディングパッド、ビア、配線等である。実施例１に係る基板設計装置は、一つの入力と一つの出力とを有する面の形状および位置を所定の移動条件にしたがって更新する。ここで、移動条件とは、例えば、面の幅を維持することや、面の幅を増加または減少させること、面と他の要素との距離を増加または減少させること等である。
【００１９】
実施例１に係る基板設計装置は、面の中心線を所定の長さに分割する分割点を抽出し、各分割点の移動先および面の移動後の幅を所定の移動条件に応じて算出する。分割点の移動先および面の移動後の幅の算出においては、デザインルールを加味する。従って、実施例１に係る基板設計装置は、所定の移動条件を満たす面の移動先を自動的に決定することができる。すなわち、実施例１に係る基板設計装置によれば、例えば、面とビアとの間の距離を広げることに注視するあまり、面と他の要素との距離に関するデザインルールに違反する等の問題をなくすことができる。従って、半導体パッケージの歩留まりを向上させることができる。
【００２０】
［実施例１に係る基板設計装置の構成］
まず、実施例１に係る基板設計装置の構成について説明する。図１は、実施例１に係る基板設計装置１００の構成を示す図である。図１に示すように、基板設計装置１００は、入出力制御Ｉ／Ｆ部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。そして、基板設計装置１００は、ＣＡＤシステムによって設計された半導体パッケージの、一つの入力と一つの出力を有する面の位置情報を更新する。なお、基板設計装置１００は、例えば、ＰＣ（Personal  Computer）、ワークステーション又は基板設計用の専用装置である。
【００２１】
入出力制御Ｉ／Ｆ部１１０は、入力部１２０および表示部１３０と制御部１５０との間での各種情報のやり取りを制御するインタフェース部である。入力部１２０は、例えば、ユーザによる種々の情報の入力処理を受け付ける。例えば、入力部１２０は、キーボードやタッチパネルなどである。表示部１３０は、例えば、ユーザに設計の情報を表示出力する。例えば、表示部１３０は、ディスプレイなどである。
【００２２】
記憶部１４０は、図１に示すように、設計情報記憶部１４１と、移動条件記憶部１４２と、移動データ記憶部１４３とを有し、入力部１２０を介してユーザから入力された情報や後述する制御部１５０による処理結果などを記憶する。記憶部１４０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００２３】
設計情報記憶部１４１は、半導体パッケージの各要素に係る位置情報を少なくとも記憶する。例えば、設計情報記憶部１４１は、基板の形状、基板の層数、ビアや面の位置などの設計情報を記憶する。例えば、設計情報記憶部１４１は、図２に示すように設計された基板に配置される部品の位置情報を記憶する。図２は、基板設計装置により設計される基板の設計図の一部を模式的に示す図である。図２に示すように、ＣＡＤシステムによる基板の設計では、例えば、ビア１０とボンディングパッド６０とが配置され、面２０によって接続される。そして、半導体チップとボンディングパッド６０とが配線７０によって接続される。また、グラウンド面が斜線で示されている。
【００２４】
例えば、設計情報記憶部１４１は、図２に示す面２０の位置データを記憶する。ここで、設計情報記憶部１４１は、面２０の位置データとして、例えば、図２に示す面２０の輪郭線の始点、終点、輪郭線の角度が変化する箇所などの座標などを記憶する。また、設計情報記憶部１４１は、ビア１０やボンディングパッド６０などの中点の座標、径及び径の曲率などを記憶する。同様に、設計情報記憶部１４１は、ＣＡＤシステムによって設計された全ての配線やボンディングパッドなどの位置データを記憶する。
【００２５】
移動条件記憶部１４２は、後述する制御部１５０による面の位置等の修正に用いられる移動条件を記憶する。例えば、移動条件記憶部１４２は、移動させる面と障害物との距離がデザインルールに規定された距離よりも短くならない位置に面を移動させる旨の条件であるデザインルール情報を記憶する。また、移動条件記憶部１４２は、面の幅を維持しつつ面と障害物との間の幅をできるだけ広げる旨の移動条件１を記憶する。また、移動条件記憶部１４２は、面の幅を広げることを優先する旨の移動条件２を記憶する。また、移動条件記憶部１４２は、面の幅を広げる場合に増加させる面幅の最大値Ｗｍａｘを記憶する。また、移動条件記憶部１４２は、面と障害物との距離を広げることを優先する旨の移動条件３を記憶する。また、移動条件記憶部１４２は、面と障害物との距離を広げる場合に増加させる距離の最大値Ｌｍａｘを記憶する。
【００２６】
移動データ記憶部１４３は、後述する制御部１５０によって実行される面形状更新処理に関連する移動データを記憶する。図３は、移動データ記憶部１４３によって記憶される情報の例を示す図である。図３に示すように、移動データ記憶部１４３は、原点、障害点、障害点垂点、分割点垂点、移動可能点、移動先、面幅および移動後面幅等と、分割点ＩＤ（Identifier）とを対応付けて移動データとして記憶する。
【００２７】
ここで、図３に示す「分割点ＩＤ」とは、後述する制御部１５０によって仮想的に設定された、面の中心線を等分に分割する複数の分割点各々を一意に特定するための識別子である。例えば、「分割点ＩＤ」は、後述する制御部１５０によって面の中心線上に分割点が設定された時点でシーケンシャルに付加される。また、図３に示す「原点」とは、更新処理が実行される前の分割点の位置を示す座標である。また、図３に示す「障害点」、「障害点垂点」、「分割点垂点」とはそれぞれ、後述する障害点、障害点垂点、分割点垂点の位置を示す座標である。障害点、障害点垂点、分割点垂点はそれぞれ、分割点の左右双方について記憶される。以下、左右というときは、面の中心線上において出力方向をみた場合の左右をいう。また、図３に示す「移動可能点」とは、移動条件に基づいて算出された後述する左右の移動可能点の座標を示す。また、図３に示す「移動先」とは、移動可能点および移動条件に基づいて決定される移動先の座標を示す。また、図３に示す「面幅」とは、後述する抽出部が各分割点について抽出する面の幅を示す。面幅は分割点の左右双方について記憶する。また、図３に示す「移動後面幅」とは、移動条件に基づいて設定される移動後の面の幅を示す。分割点の左右双方の移動後面幅を記憶する。
【００２８】
例えば、移動データ記憶部１４３は、図３に示すように、「分割点ＩＤ：１」に対応付けて、「原点：（Ｘ１，Ｙ１）」、「障害点、左：（Ｘ１ＯＬ，Ｙ１ＯＬ）」、「障害点、右：（Ｘ１ＯＲ，Ｙ１ＯＲ）」を記憶する。さらに、移動データ記憶部１４３は、「障害点垂点、左：（Ｘ１ＶＯＬ，Ｙ１ＶＯＬ）」、「障害点垂点、右：（Ｘ１ＶＯＲ，Ｙ１ＶＯＲ）」を記憶する。さらに、移動データ記憶部１４３は、「分割点垂点、左：（Ｘ１ＤＬ，Ｙ１ＤＬ）」、分割点垂点、右：（Ｘ１ＤＲ，Ｙ１ＤＲ）」、「移動可能点、左：（Ｘ１Ｌ，Ｙ１Ｌ）」、「移動可能点、右（Ｘ１Ｒ，Ｙ１Ｒ）」を記憶する。さらに、移動データ記憶部１４３は、「移動先：（Ｘ１１，Ｙ１１）」、「面幅、左：１」、「面幅、右：１．１」、「移動後面幅、左：１」、「移動後面幅、右：１．１」を記憶する。
【００２９】
同様に、移動データ記憶部１４３は、図３に示すように、「分割点ＩＤ：２」および「分割点ＩＤ：３」それぞれに対応付けたデータを記憶する。
【００３０】
図１に戻って、制御部１５０は、抽出部１５１と、検出部１５２と、算出部１５３と、設定部１５４と、更新部１５５とを有する。制御部１５０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、または、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００３１】
以下に、実施例１に係る基板設計装置の各部の処理について説明する。以下、便宜上、各部の処理を、図面を用いて説明する。しかし、実際には、各部の処理は装置内の計算処理として実行される。したがって、各部の処理を説明するための図は、あくまでも例示であって、処理ごとに表示がされることを要するものではない。
【００３２】
［抽出部による中心線抽出処理、分割点設定処理及び面幅抽出処理］
抽出部１５１は、設計情報記憶部１４１に記憶された位置情報から定まる面の入出力方向に沿った中心線を抽出する。さらに、抽出部１５１は、抽出した中心線を所定の長さに等分に分割する複数の分割点を設定する。そして、抽出部１５１は、設定した各分割点における左右の面幅を算出する。
【００３３】
抽出部１５１による中心線の抽出処理について説明する。まず、抽出部１５１は、設計情報記憶部１４１から中心線抽出処理の対象となる面の位置情報を読み出す。具体的には、面の輪郭線上の所定位置にある点の座標等を読み出す。そして、読み出した位置情報に基づいて、面の入出力方向に沿って面の略中心を通る線分を設定する。そして、当該線分を所定の長さの複数のセグメントに等分に分割し、分割したセグメント各々の中心点を設定する。まず、一つのセグメントについて中心線を抽出するため、抽出部１５１は、当該セグメントの中心点と当該セグメントに隣接する一つのセグメントの中心点とを通る線分を得る。抽出部１５１は、当該線分に対し角の二等分線方向で、当該セグメントの中心点を通る線分と面の輪郭線とを通る線分を求め、中心点から当該輪郭線までの長さを得る。さらに抽出部１５１は、中心点の左右について同様の手順で中心点から輪郭線までの長さを求め、左右の長さが同じになるよう、中心点の位置を修正する。抽出部１５１は、この処理を全てのセグメントについて繰り返すことで、面の中心線を得る。
【００３４】
例として、図４を参照して、抽出部１５１による中心線ＣＬの抽出処理を説明する。図４は、中心線抽出処理を説明するための図である。図４の（Ａ）に、ビア１、面２、面２の略中心を通る線分ＬＰを示す。抽出部１５１は、図４の（Ｂ）に示すように、線分ＬＰを所定の長さの複数のセグメントに分割する。図４の（Ｂ）には例として３つのセグメントＳ１、Ｓ２、Ｓ３を示す。そして、各セグメントについてＬＰ上における中央の点を中心点として抽出する。図４の（Ｂ）には、各セグメントに対応する３つの中心点Ｐ１、Ｐ２、Ｐ３を示す。セグメントＳ３について中心線の抽出処理を行う場合、まず、セグメントＳ３の中心点Ｐ３とセグメントＳ３に隣接するセグメントＳ２の中心点Ｐ２とを通る線分を得る。そして、この線分に対し角の二等分線方向で中心点Ｐ３を通る線分を求める。この線分と面２の輪郭線２Ｒ、２Ｌとが交わる点から中心点までの距離が等しくなるよう、中心点の位置を更新する。このようにして各セグメントについて中心点の位置を更新していき、更新後の中心点同士を結んで得られる線分が中心線ＣＬとなる（図４の（Ｃ））。
【００３５】
次に抽出部１５１は、中心線ＣＬを所定の長さに等分に分割する複数の分割点ＤＰを設定する。図５は、分割点設定処理を説明するための図である。例えば図５に示すように、分割点ＤＰは、中心線ＣＬを所定の長さに等分に分割することで設定される。所定の長さは、基板の大きさや面の大きさに応じて自動的に設定されるものとしてもよいし、ユーザが設定してもよい。抽出部１５１が分割点を設定すると、移動データ記憶部１４３に各分割点の識別子「分割点ＩＤ」が記憶される。さらに、識別子に対応して、各分割点の座標情報が、「原点」として移動データ記憶部１４３に記憶される。
【００３６】
さらに、抽出部１５１は、分割点ごとに、当該分割点と、当該分割点と中心線に沿って隣接する２つの分割点各々とを結ぶ２つの線分を求める。そして抽出部１５１は、２つの線分が成す角度を二等分する線分を求める。抽出部１５１は、求めた線分と面の輪郭線とが交わる点から、当該分割点までの長さを、当該分割点における面幅として抽出する。面幅は、中心線の左右双方について抽出する。抽出された面幅は、移動データ記憶部１４３に「面幅、左」「面幅、右」として記憶される。
【００３７】
例として、図６を参照して、分割点ＤＰ２における面幅を抽出する処理を説明する。図６は、面幅抽出処理を説明するための図である。図６中、中心線ＣＬ上において、分割点ＤＰ２と、分割点ＤＰ１およびＤＰ３とが隣接している。まず、分割点ＤＰ１とＤＰ２、ＤＰ２とＤＰ３を結ぶ２つの線分を引く。そして、この２つの線分が成す角度を二等分する線分を求める。この線分と面の輪郭線とが交わる位置を、図６中、ＣＰＲとＣＰＬとして示す。分割点ＤＰ２からＣＰＲまでの長さＷＲが、分割点ＤＰ２における右側の面幅である。また、分割点ＤＰ２からＣＰＬまでの長さＷＬが、分割点ＤＰ２における左側の面幅である。
【００３８】
［検出部による障害点検出処理］
図１に戻って、検出部１５２は、面の周囲に存在する障害物を検出する。例えば、検出部１５２は、面の周囲にある障害物の内、抽出部１５１が抽出した分割点各々から最も近くにある当該障害物の輪郭線上の点を障害点として検出する。
【００３９】
図７を参照して、例えば、検出部１５２が、分割点ＤＰ２について障害点を検出する場合について説明する。図７は、障害点検出処理を説明するための図である。図７中、分割点ＤＰ１、ＤＰ２、ＤＰ３が中心線ＣＬ上に設定されている。中心線ＣＬを有する面の周囲には障害物Ｏが存在する。検出部１５２は、分割点ＤＰ２を頂点とする所定の角度の範囲内において、分割点ＤＰ２から最も近くに存在する障害物の輪郭線上の点を検出する。ここで、検出範囲とする所定の角度は、ユーザが設定してもよく、分割点の間隔等に応じて自動的に決定されるものとしてもよい。図７に示す例の場合、障害物Ｏの輪郭線上の点Ｏ１は点Ｏ２よりも分割点ＤＰ２に近く、障害物Ｏの輪郭線上、最も分割点ＤＰ２に近い点である。検出部１５２は、障害物の輪郭線上において最も分割点ＤＰ２に近い点である点Ｏ１を、分割点ＤＰ２における障害点として検出する。検出された障害点Ｏ１の座標は、分割点ＤＰ２の分割点ＩＤに対応づけて、「障害点、左」として移動データ記憶部１４３に記憶される。なお、検出部１５２は、同様の手順で分割点の右の障害点を検出する。
【００４０】
［算出部による移動先算出処理］
図１に戻って、算出部１５３は、抽出部１５１が抽出した分割点各々の移動先を算出する。例えば、算出部１５３は、予め定められた移動条件に従い、抽出部１５１が抽出した面の幅と検出部１５２が検出した障害点とに基づいて、各分割点の移動可能点の座標を算出する。移動可能点とは、分割点が移動しうる範囲を示す点であり、分割点の左右双方について算出する。そして、算出部１５３は、左右の移動可能点の座標に基づいて移動先を算出する。
【００４１】
移動条件としては、上述したように、面の幅を維持しつつ面と障害物との距離をできるだけ広げる旨の移動条件１、面の幅を広げることを優先する旨の移動条件２、面と障害物との距離を広げることを優先する旨の移動条件３等がある。移動条件は、基板設計装置のユーザが設定することもできる。また、設計対象等に応じて自動的に一つの移動条件が選択されるものとしてもよい。移動条件は、後述する移動コマンドの入力の際に受け付けられ、その後の処理において一つの移動条件が一貫して適用される。
【００４２】
算出部１５３は、まず、各分割点について、当該分割点に隣接する２つの分割点を相互に結ぶ線分の垂直二等分線を求める。そして、算出部１５３は、障害点を通り当該垂直二等分線に直交する線分と当該垂直二等分線との交点を第１の交点として求める。以下、この交点を便宜的に障害点垂点と呼ぶ。さらに、算出部１５３は、分割点を通り当該垂直二等分線に直交する線分と当該垂直二等分線との交点を第２の交点として求める。以下、この交点を便宜的に分割点垂点と呼ぶ。算出部１５３が算出した障害点垂点および分割点垂点の座標は、移動データ記憶部１４３に記憶される。算出部１５３は、分割点の左右双方について障害点垂点、分割点垂点を算出する。
【００４３】
図８を参照して、算出部１５３による垂直二等分線、分割点垂点、障害点垂点の算出について説明する。図８は、垂直二等分線、分割点垂点および障害点垂点を説明するための図である。図８の（Ａ）に示すように、面２の中心線ＣＬ上に分割点ＤＰ１、ＤＰ２、ＤＰ３が設定される。分割点ＤＰ２についての垂直二等分線ＬＶ、分割点垂点ＶＰＤ及び障害点垂点ＶＰＯを求める場合について説明する。まず、中心線ＣＬ上において分割点ＤＰ２に隣接する２つの分割点ＤＰ１とＤＰ３とを相互に結ぶ線分を引く。次に、この線分を二等分する点を求め、当該点を通り、この線分と直交する線分を引き、垂直二等分線ＬＶとする。そして、分割点ＤＰ２から垂直二等分線ＬＶに直交する線分を引き、垂直二等分線ＬＶと交わる点を、分割点垂点ＶＰＤとする。なお、図８の（Ｂ）は、図８の（Ａ）に示す分割点垂点ＶＰＤの周辺を拡大して示すものである。さらに、障害点Ｏ１から垂直二等分線ＬＶに直交する線分を引き、垂直二等分線ＬＶと交わる点を、障害点垂点ＶＰＯとする。
【００４４】
［移動条件１における移動先算出処理］
まず、移動条件１の場合、すなわち、面の幅を維持しつつ面と障害物との距離をできるだけ広げることが移動条件である場合の移動可能点算出処理について図９の（Ａ）を参照して説明する。図９は、移動可能点算出処理を説明するための図であり、図９の（Ａ）は移動条件１の場合の移動可能点算出処理を説明するための図である。図９の（Ａ）を参照し、移動条件が移動条件１であるときに、分割点ＤＰ２の移動可能点を算出する場合について説明する。算出部１５３は、上記の通り、処理対象となる分割点ＤＰ２について、垂直二等分線ＬＶ、分割点垂点ＶＰＤ及び障害点垂点ＶＰＯを求める。また、移動条件記憶部１４２から、面と障害物との間に確保するようデザインルールによって規定されている最短距離（以下便宜上、面障害物間ＤＲ（ＤＲ１）と呼ぶ）を読み出す。そしてまず、算出部１５３は、分割点ＤＰ２の左側につき、移動可能点を求める。すなわち、垂直二等分線ＬＶ上において、障害点垂点ＶＰＯから分割点垂点ＶＰＤに向かう方向に、抽出部１５１が抽出した当該分割点における左側の面幅ＷＬと面障害物間ＤＲ（ＤＲ１）とを合算した距離だけ離れた点を移動可能点ＰＬとして求める。算出部１５３は、分割点の右側についても、同様の処理を行い、分割点ＤＰ２に対して２つの移動可能点ＰＲ、ＰＬを得る。算出した移動可能点ＰＲ、ＰＬの座標は、移動データ記憶部１４３に記憶する。
【００４５】
次に、図１０を参照して、移動先決定処理について説明する。図１０は、移動先決定処理を説明するための図である。算出部１５３は、分割点について求めた２つの移動可能点を相互に結ぶ線分を算出し、当該線分の中点を求める。そして、算出部１５３は、求めた中点と分割点との位置を比較し、中点が分割点より右にあれば、分割点を垂直二等分線ＬＶ上で右方向に所定距離だけ移動させ、中点が分割点より左にあれば、分割点を垂直二等分線ＬＶ上で左方向に所定距離だけ移動させる。例えば、図１０に示す例では、右側の移動可能点ＰＲと左側の移動可能点ＰＬとを結ぶ線分の中央に位置する中点Ｃは、分割点ＤＰ２よりも右側にある。したがって、分割点ＤＰ２の移動先は右側となる。算出部１５３は、決定した移動先の座標を、移動データ記憶部１４３に記憶する。ここで、分割点を移動させる所定距離は、ユーザが設定してもよく、面幅に応じて自動的に設定されるものとしてもよい。例えば、分割点を移動させる距離は、１回の移動ごとに面幅の５％等としてもよい。
【００４６】
［移動条件２における移動先算出処理］
次に、図９に戻って、移動条件２の場合、すなわち、面の幅を増加させることを優先して面を移動させることが移動条件である場合の移動可能点算出処理について説明する。図９の（Ｂ）は、移動条件２の場合の移動可能点算出処理を説明するための図である。図９の（Ｂ）を参照し、算出部１５３は、移動条件１の場合と同様に、まず、処理対象となる分割点ＤＰ２について、垂直二等分線ＬＶ、分割点垂点ＶＰＤ及び障害点垂点ＶＰＯを求める。また、算出部１５３は、移動条件記憶部１４２から、面障害物間ＤＲ（ＤＲ１）を読み出す。さらに、算出部１５３は、移動条件記憶部１４２から、増加させる面幅の最大値Ｗｍａｘを読み出す。なお、増加させる面幅の最大値は、所定の設計情報に基づいて自動的に決定されるものとしてもよく、ユーザが指定するものとしてもよい。
【００４７】
そして、算出部１５３は、まず分割点ＤＰ２の左側につき、移動可能点を求める。すなわち、垂直二等分線上ＬＶにおいて、障害点垂点ＶＰＯから分割点垂点ＶＰＤに向かう方向に、抽出部１５１が抽出した面幅ＷＬと面障害物間ＤＲ（ＤＲ１）と増加させる面幅の最大値Ｗｍａｘとを合算した距離だけ離れた点を求める。そして、算出部１５３は、求めた点と、分割点垂点ＶＰＤとの位置を比較して、垂直二等分線ＬＶ上において、障害点垂点ＶＰＯに近い点を、移動可能点ＰＬとする。図９の（Ｂ）に示す例の場合、求めた点と分割点垂点ＶＰＤとを比較すると、求めた点のほうが障害点垂点ＶＰＯに近い。したがって、求めた点を移動可能点ＰＬとする。
【００４８】
算出部１５３は、面の中心線の右側についても、同様の処理を行い、分割点ＤＰ２に対して２つの移動可能点を得る。その後の処理は、移動条件１の場合と同様である。
【００４９】
［移動条件３における移動先算出処理］
次に、移動条件３の場合、すなわち、面と障害物との距離を広げることを優先して面を移動させることが移動条件である場合の移動可能点算出処理について、図９の（Ｃ）を参照して説明する。図９の（Ｃ）は、移動条件３の場合の移動可能点算出処理を説明するための図である。図９の（Ｃ）を参照し、移動条件３のときに、分割点ＤＰ２の移動可能点を算出する場合について説明する。算出部１５３は、移動条件１の場合と同様に、まず、分割点ＤＰ２について、垂直二等分線ＬＶ、分割点垂点ＶＰＤ及び障害点垂点ＶＰＯを求める。また、算出部１５３は、移動条件記憶部１４２から、面障害物間ＤＲ（ＤＲ１）と、面幅として確保するようデザインルールによって規定されている最短距離（以下、最短距離の２分の１に相当する距離を面幅ＤＲ（ＤＲ２）と呼ぶ）とを読み出す。さらに、算出部１５３は、移動条件記憶部１４２から、面と障害物との間に増加させる距離の最大値Ｌｍａｘを読み出す。なお、増加させる距離の最大値は、所定の設計情報に基づいて自動的に決定されるものとしてもよく、ユーザが指定するものとしてもよい。
【００５０】
そしてまず、算出部１５３は、分割点ＤＰ２の左側につき、移動可能点を求める。すなわち、垂直二等分線上ＬＶにおいて、障害点垂点ＶＰＯから分割点垂点ＶＰＤに向かう方向に、抽出部１５１が抽出した面幅ＷＬと面障害物間ＤＲ（ＤＲ１）と移動条件記憶部１４２から読み出した距離の最大値Ｌｍａｘとを合算した距離だけ離れた点を求める。さらに、算出部１５３は、垂直二等分線ＬＶ上において、分割点垂点ＶＰＤから障害点垂点ＶＰＯに向かう方向に、面幅ＤＲ（ＤＲ２）だけ離れた点を求める。そして、算出部１５３は、２つの点の位置を比較し、障害点垂点ＶＰＯからより離れた位置にある方の点を移動可能点ＰＬとする。図９の（Ｃ）の例の場合、障害点垂点ＶＰＯから分割点垂点ＶＰＤに向かう方向に、抽出部１５１が抽出した面幅ＷＬと面障害物間ＤＲ（ＤＲ１）と移動条件記憶部１４２から読み出した距離の最大値Ｌｍａｘとを合算した距離だけ離れた点の方が障害点垂点ＶＰＯから遠い。したがって、この点を移動可能点ＰＬとする。
【００５１】
算出部１５３は、面の中心線の右側についても、同様の処理を行い、分割点ＤＰ２に対して２つの移動可能点を得る。その後の処理は、移動条件１の場合と同様である。
【００５２】
［設定部による面幅設定処理］
図１に戻って、設定部１５４は、分割点各々について、移動条件に基づいて移動後の面幅を設定する。移動条件が上記移動条件１乃至３のいずれであるかによって、設定態様が異なる。
【００５３】
［移動条件１の場合の面幅設定処理］
まず、図１１の（Ａ）を参照し、移動条件１の場合、すなわち、面の幅を維持しつつ面と障害物との距離をできるだけ広げることが移動条件である場合の移動後の面幅の設定処理について説明する。図１１は、面幅設定処理を説明するための図である。図１１の（Ａ）は、移動条件１の場合の面幅設定処理を説明するための図である。この場合、面の幅を維持することが移動条件であるので、移動後の面幅は移動前のままとなる。したがって、設定部１５４は、移動データ記憶部１４３を参照して、既に記憶されている面幅ＷＬをそのまま移動後面幅として移動データ記憶部１４３に記憶させる。
【００５４】
例えば、図１１の（Ａ）に示すように、分割点ＤＰ１、ＤＰ２、ＤＰ３のそれぞれについて、移動先Ｃ１、Ｃ２、Ｃ３が算出されたとする。すると、更新後のＤＰ２については、Ｃ１とＣ２、Ｃ２とＣ３をつなぐ線分が成す角度を二等分する線分に沿って、左側に面幅ＷＬだけＣ２から離れた箇所が新たな面の左側の輪郭線を決定する点となる。
【００５５】
［移動条件２の場合の面幅設定処理］
次に、図１１の（Ｂ）および図１１の（Ｃ）を参照し、移動条件２の場合、すなわち、面の幅を増加させることを優先して面を移動させることが移動条件である場合の面幅設定処理について説明する。図１１の（Ｂ）および図１１の（Ｃ）は、移動条件２の場合の面幅設定処理を説明するための図である。この場合、移動可能点として算出部１５３が算出した点が、分割点垂点であるか否かによって、移動後の面幅の設定方法が異なる。
【００５６】
まず、図１１の（Ｂ）を参照し、図９の（Ｂ）に示す垂直二等分線ＬＶ上において、障害点垂点から分割点垂点に向かう方向に、面障害物間ＤＲ（ＤＲ１）と増加させる面幅の最大値Ｗｍａｘと面幅ＷＬとを合算した距離だけ離れた点を移動可能点ＰＬとした場合について説明する。この場合、設定部１５４は、抽出部１５１が抽出した面幅ＷＬと、増加させる面幅の最大値Ｗｍａｘとを合算したものを移動後の面幅とする。例えば、図１１の（Ａ）と同様、Ｃ１、Ｃ２、Ｃ３が算出されたとする。この場合、更新後のＤＰ２については、Ｃ１とＣ２、Ｃ２とＣ３をつなぐ線分が成す角度を二等分する線分に沿って、左側にＷＬ＋ＷｍａｘだけＣ２から離れた箇所が新たな面の左側の輪郭線を決定する点となる。 
【００５７】
他方、算出部１５３が、分割点垂点ＶＰＤを移動可能点とした場合は、設定部１５４は、分割点垂点ＶＰＤと障害点垂点ＶＰＯとの間の距離（便宜上、以下、垂点間距離ＤＶと呼ぶ）から面障害物間ＤＲ（ＤＲ１）を減算したものを、移動後の面幅とする。例えば、更新後のＤＰ２については、図１１の（Ｃ）に示すように、Ｃ１とＣ２、Ｃ２とＣ３をつなぐ線分が成す角度を二等分する線分に沿って、左側にＤＶ−ＤＲ１だけＣ２から離れた箇所が新たな面の左側の輪郭線を決定する点となる。
【００５８】
［移動条件３の場合の面幅設定処理］
次に、図１１の（Ｄ）および図１１の（Ｅ）を参照し、移動条件３の場合、すなわち、面と障害物との距離を広げることを優先して面を移動させることが移動条件である場合の面幅設定処理について説明する。図１１の（Ｄ）および図１１の（Ｅ）は、移動条件３の場合の面幅設定処理を説明するための図である。この場合は、移動可能点として算出部１５３が算出した点が、分割点垂点から障害点垂点に向かう方向に面幅ＤＲ（ＤＲ２）だけ離れた点であるか否かによって、移動後の面幅の設定方法が異なる。
【００５９】
まず、図１１の（Ｄ）を参照し、図９の（Ｃ）に示す垂直二等分線ＬＶ上で、障害点垂点ＶＰＯから分割点垂点ＶＰＤに向かう方向に、面障害物間ＤＲ（ＤＲ１）と面幅ＷＬと増加させる距離の最大値Ｌｍａｘとを合算した距離だけ離れた点を、移動可能点とした場合につき説明する。この場合、設定部１５４は、垂点間距離ＤＶから、面障害物間ＤＲ（ＤＲ１）と増加させる距離の最大値Ｌｍａｘとを減算した長さを移動後の面幅とする。例えば、図１１の（Ｄ）に示す例では、ＤＰ２の更新後の面幅は次のようになる。すなわち、Ｃ１とＣ２、Ｃ２とＣ３をつなぐ線分が成す角度を二等分する線分に沿って、Ｃ２から左側にＤＶ−（ＤＲ１＋Ｗｍａｘ）の箇所が新たな面の左側の輪郭線を決定する点となる。 
【００６０】
他方、算出部１５３が、図９の（Ｃ）に示す垂直二等分線ＬＶ上において、分割点垂点ＶＰＤから障害点垂点ＶＰＯに向かう方向に面幅ＤＲ（ＤＲ２）だけ離れた点を移動可能点として算出した場合は、設定部１５４は、面幅ＤＲ（ＤＲ２）を移動後の面幅とする。例えば、図１１の（Ｅ）に示す例では、更新後のＤＰ２については、Ｃ１とＣ２、Ｃ２とＣ３をつなぐ線分が成す角度を二等分する線分に沿って、左側にＤＲ２だけＣ２から離れた箇所が新たな面の左側の輪郭線を決定する点となる。
【００６１】
［更新部による面形状更新処理］
図１に戻って、更新部１５５は、算出部１５３が算出した移動先と、設定部１５４が設定した移動後面幅とに基づいて、各分割点を移動させた位置における、移動後面幅を有する面の位置情報を作成し、移動データ記憶部１４３の位置情報を更新する。その後、移動データ記憶部１４３に記憶された位置情報によって設計情報記憶部１４１に記憶された位置情報を更新することで、面の位置情報を更新する。
【００６２】
更新部１５５は、まず、各分割点の座標を、算出部１５３が算出し移動データ記憶部１４３に記憶された移動先の座標に更新する。次に、更新部１５５は、移動後の各分割点について、当該分割点に隣り合う２つの分割点各々と、当該分割点とを結ぶ線分を求める。そして、更新部１５５は、当該分割点とそれに隣接する２分割点各々とを結ぶ２つの線分が成す角度を２等分する線分を求める。そして、更新部１５５は、この線分に沿って設定部１５４により設定された移動後面幅だけ移動後の分割点から離れた点を、移動後の面の輪郭上の点とする。このようにして、更新部１５５は、各分割点を移動させ、移動後の分割点各々について左右の輪郭上の点を設定する。そして、更新部１５５は、設定された輪郭上の点を左右それぞれについて順に結んだ線を求め、左右一本ずつの輪郭線とする。最後に、更新部１５５は、左右の輪郭上の端点を互いに結んだ面を、移動後の面とする。
【００６３】
［更新処理前後の面の例］
実施例１に係る基板設計装置１００による更新処理前の面と、更新処理後の面との例を図１２に示す。図１２の（Ａ）は、更新処理前の面２を示す図である。図の上方にはビア１が配置されており、その下に１つの面２が配置され、さらにその下に障害物６が配置されている。
【００６４】
図１２の（Ａ）のように設計された面２を、移動条件１に基づいて移動させた場合、すなわち、面の幅を維持しつつ面と障害物との距離をできるだけ広げるように移動させた場合の更新処理結果を図１２の（Ｂ）に示す。図１２の（Ｂ）においては、面２の幅は更新処理前と変化していないが、面２の下側輪郭線とその下の障害物６との距離は広がっている。
【００６５】
また、図１２の（Ａ）のように設計された面２を、移動条件２に基づいて移動させた場合、すなわち、面の幅を増加させることを優先して移動させた場合の結果を図１２の（Ｃ）に示す。図１２の（Ｃ）においては、面２とビア１との距離および面２と障害物６との距離は、デザインルールによって規定されている最短距離となっている。面２の幅はデザインルールを考慮して最大限に広げられている。
【００６６】
また、図１２の（Ａ）のように設計された面２を、移動条件３に基づいて移動させた場合、すなわち、面と障害物との距離を広げることを優先して面を移動させた場合の結果を図１２の（Ｄ）に示す。図１２の（Ｄ）においては、面２の幅はデザインルールに規定されている最短距離となっており、面２と障害物６との距離は大幅に広げられている。
【００６７】
［実施例１に係る基板設計装置による面形状更新処理の手順］
次に、実施例１に係る基板設計装置１００による処理の手順を説明する。図１３は、実施例１に係る基板設計装置１００による面形状更新処理の手順を示すフローチャートである。図１３に示すように、実施例１に係る基板設計装置１００においては、面形状更新処理の実行コマンドである移動コマンドが実行されると（ステップＳ１０１肯定）、まず、抽出部１５１が処理対象となる面を選択する（ステップＳ１０２）。なお、移動コマンドは、移動条件の指定を含む。移動コマンドの実行がない場合は（ステップＳ１０１否定）、ステップ１０１を繰り返す。面の選択は、ユーザの指定に基づいて行われてもよく、設計図全体について移動コマンドが実行される場合は、基板設計装置１００が自動的に行うものとしてもよい。そして、抽出部１５１は、選択した面の中心線を抽出する（ステップＳ１０３）。例えば、設計情報記憶部１４１に記憶された面の輪郭線の位置情報に基づいて、中心線を抽出する。そして、抽出部１５１は、抽出した中心線を所定の長さに等分に分割するＮ個の分割点を設定する（ステップＳ１０４）。ここで、Ｎは３以上の自然数である。次に、抽出部１５１はＮ個の分割点のうち、分割点ＤＰｎを選択する（ステップＳ１０５）。そして、抽出部１５１は、選択した分割点ＤＰｎにおける面幅を抽出する（ステップＳ１０６）。
【００６８】
抽出部１５１により、中心線、分割点が抽出され、分割点ＤＰｎにおける面幅が抽出されると、次に、検出部１５２が、分割点ＤＰｎにおける障害点を検出する（ステップＳ１０７）。
【００６９】
次に、算出部１５３が、分割点ＤＰｎおよび検出部１５２が検出した障害点の位置情報に基づいて、分割点ＤＰｎにおける垂直二等分線と、分割点ＤＰｎの分割点垂点と、障害点垂点と、を算出する（ステップＳ１０８）。そして、算出した垂直二等分線、分割点垂点、障害点垂点に基づいて、分割点ＤＰｎの移動先を算出する（ステップＳ１０８）。そして、算出部１５３は、算出した移動先を移動データ記憶部１４３に記憶させる。
【００７０】
次に、設定部１５４が、移動条件に応じて移動後の面幅を設定する（ステップＳ１０９）。移動後の面幅を設定した後、制御部１５０は、全ての分割点について、ステップＳ１０６〜ステップＳ１１０までの処理が完了したか否かを判定する（ステップＳ１１０）。全ての分割点について処理が完了していない場合（ステップＳ１１０否定）は、次の分割点を選択して、ステップＳ１０６以降の処理を繰り返す。全ての分割点について処理が完了している場合（ステップＳ１１０肯定）は、更新部１５５は、移動データ記憶部１４３に記憶された移動先のデータに基づいて各分割点を移動させる（ステップＳ１１２）。すなわち、分割点のデータを更新する。そして、更新部１５５は、設定部１５４が設定した面幅に基づいて各分割点に対応する面の輪郭を決定し、移動後の面を作成する（ステップ１１３）。すなわち、移動後の面のデータを作成する。その後、移動の完了した面、すなわち位置データの更新が完了した面について設計情報記憶部１４１に記憶された設計情報を更新し、移動データ記憶部１４３に記憶されたデータを消去する。
【００７１】
次に、制御部１５０は、全ての面について処理が完了したか否かを判定する（ステップＳ１１４）。全ての面について処理が完了していないと判定した場合（ステップＳ１１４否定）、制御部１５０は次の面を選択して（ステップＳ１１５）、ステップＳ１０３以降の処理を繰り返す。全ての面について処理が完了したと判定した場合（ステップＳ１１４肯定）、制御部１５０は、次に、面の更新処理を所定回数繰り返し行ったか否かを判定する（ステップＳ１１６）。所定回数繰り返し行っていないと判定した場合（ステップＳ１１６否定）、制御部１５０は、ステップＳ１０２に戻って再度処理を繰り返す。所定回数繰り返し行ったと判定した場合（ステップＳ１１６肯定）、制御部１５０は、処理を終了する。
【００７２】
なお、面形状更新処理を繰り返す回数は、ユーザが指定してもよく、面の数等に応じて自動的に設定されるものとしてもよい。
【００７３】
［実施例１の効果］
上述したように、実施例１によれば、設計情報記憶部１４１が、半導体パッケージの各要素に係る位置情報を少なくとも記憶する。そして、抽出部１５１が、設計情報記憶部１４１に記憶された位置情報に基づき、面の中心線、分割点、各分割点における面幅を抽出する。そして、検出部１５２が、各分割点における障害点を検出する。さらに、算出部１５３が、抽出部１５１が抽出した分割点および面幅並びに検出部１５２が検出した障害点に基づき、各分割点の移動先を算出する。そして、設定部１５４が各分割点について移動後の面の幅を設定する。そして、更新部１５５が、算出部１５３が算出した移動先および設定部１５４が設定した面幅に基づき、面の位置情報を更新する。従って、実施例１に係る基板設計装置１００は、複数の面を有する半導体パッケージの設計図面において、各面が所定の移動条件を満たすよう、面の位置情報を更新することができる。よって、実施例１にかかる基板設計装置１００は、面形状更新処理におけるミスを低減し、半導体パッケージの歩留まりを向上させることができる。
【００７４】
また、実施例１によれば、移動条件記憶部１４２はデザインルール情報を記憶し、算出部１５３は、デザインルールを加味しつつ、移動条件ごとに異なる態様で分割点の移動先を算出する。そして、設定部１５４は、分割点の移動先がどのように算出されたかという態様を考慮して、移動後の面幅を設定する。したがって、デザインルールを加味しつつ、分割点各々について、移動条件に従って適切な移動先を算出することができる。従って、実施例１に係る基板設計装置１００は、移動条件に応じて柔軟に面形状更新処理を実行することができ、手作業による設計ミスを軽減し、基板設計の手間と時間を大幅に減じて、半導体パッケージの歩留まりを向上させることができる。
【００７５】
また、実施例１によれば、算出部１５３は、面の幅を増加する場合には増加させる最大値、面と障害物との距離を広げる場合には広げる最大値を加味して、分割点の移動先を算出する。これらの値は、ユーザが設定することができる。よって、ユーザの意図を柔軟に反映した面移動処理を行うことができる。
【実施例２】
【００７６】
さて、これまで実施例１について説明したが、上述した実施例１以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、種々の異なる実施例を（１）〜（５）に区分けして説明する。
【００７７】
（１）移動条件
上記実施例では、移動条件としてデザインルール、移動条件１〜３を用いる場合について説明したが、本実施例はこれに限定するものではなく、例えば、面の幅を面と障害物との距離よりも広くする等、他の条件を設定してもよい。その場合は、移動条件の内容に応じて、算出部１５３における移動先算出処理の内容も変更する。
【００７８】
（２）処理対象
上記実施例では、設計情報記憶部１４１によって記憶された全ての面を面形状更新処理の対象とする場合について説明した。しかしながら、本実施例はこれに限定するものではなく、例えば、一部領域のみを面形状更新処理の対象とする場合であってもよい。
【００７９】
（３）中心線抽出
上記実施例では、面の略中心を通る線分を引き、これを所定の距離ごとに複数のセグメントに分割して各セグメントの中心点を抽出し、面の中心線を抽出するものとして説明した。しかし、本実施例はこれに限定するものではなく、例えば、略中心を通る線分を利用せずに、左右の輪郭線を基準に中心線を設定する等、他の方法で中心線を設定してもよい。
【００８０】
（４）システム構成等
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す抽出部１５１と検出部１５２とを一つの処理部として統合してもよい。また、一方で、図１に示す抽出部１５１を、中心線を抽出する抽出部と、分割点を設定する設定部と、面幅を算出する算出部とに分散してもよい。
【００８１】
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。例えば、図３に示す移動データ記憶部１４３の移動条件の設定は、設計対象に応じて自動的に決定されるとしてもよく、手動でユーザが設定するものとしてもよい。一方、手動的に行われるとして説明した処理の全部または一部を自動的に行うこともできる。例えば、図１３における移動コマンドの実行を自動で行うこともできる。また、設計情報記憶部１４１を基板設計装置１００の外部装置としてネットワーク経由で接続するようにしてもよい。また、設計情報記憶部１４１を別の装置が有し、ネットワークに接続されて協働することで、上記した基板設計装置１００の機能を実現するようにしてもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８２】
（５）基板設計プログラム
ところで、上記実施例１では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本実施例はこれに限定されるものではなく、予め用意されたプログラムをコンピュータで実行するようにしてもよい。そこで、以下では、図１４を用いて上記実施例に示した基板設計装置１００と同様の機能を有する基板設計プログラムを実行するコンピュータの一例を説明する。図１４は、基板設計プログラムを実行するコンピュータを示す図である。
【００８３】
図１４に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０とを備える。さらにコンピュータ１０００は、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部はバス１０８０によって接続される。
【００８４】
メモリ１０１０は、図１４に示すように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１４に示すように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１４に示すように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１４に示すように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１４に示すように、例えばディスプレイ１１３０に接続される。
【００８５】
ここで、図１４に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）、アプリケーションプログラム、プログラムモジュール、プログラムデータを記憶する。すなわち、基板設計プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクに記憶される。例えば、上記実施例で説明した抽出部１５１と同様の情報処理を実行する抽出手順と、検出部１５２と同様の情報処理を実行する検出手順等が記述されたプログラムモジュールが、ハードディスクに記憶される。
【００８６】
また、上記実施例で説明した設計情報記憶部１４１に記憶されるデータのように、基板設計プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えばハードディスクに記憶される。そして、ＣＰＵ１０２０が、ハードディスクに記憶されたプログラムモジュールやプログラムデータを必要に応じてＲＡＭ１０１２に読み出し、抽出手順、検出手順、算出手順、設定手順、更新手順を実行する。
【００８７】
なお、基板設計プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクに記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、基板設計プログラムに係るプログラムモジュールやプログラムデータは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして記憶されたプログラムモジュールやプログラムデータが、ネットワークインタフェースを介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８８】
１００  基板設計装置
１４１  設計情報記憶部
１４２  移動条件記憶部
１４３  移動データ記憶部
１５１  抽出部
１５２  検出部
１５３  算出部
１５４  設定部
１５５  更新部
【図１】
0005913969.tif 000002
【図２】
0005913969.tif 000003
【図３】
0005913969.tif 000004
【図４】
0005913969.tif 000005
【図５】
0005913969.tif 000006
【図６】
0005913969.tif 000007
【図７】
0005913969.tif 000008
【図８】
0005913969.tif 000009
【図９】
0005913969.tif 000010
【図１０】
0005913969.tif 000011
【図１１】
0005913969.tif 000012
【図１２】
0005913969.tif 000013
【図１３】
0005913969.tif 000014
【図１４】
0005913969.tif 000015
【図１５】
0005913969.tif 000016
【図１６】
0005913969.tif 000017