並列電子設計自動化:分散された同時の編集
【課題】ユーザに、並列のプリント回路基板(PCB)設計についての共有された環境を与える機構を提供することである。
【解決手段】複数のユーザに、全体の設計への編集を見ることを可能としながら(1404)、設計を同時に編集することを可能とする方法及び装置が記載される。複数の排他的な領域を有する(プリント回路基板のような)設計は、複数のユーザに表示される(1402)。第1のユーザは、設計の対応する部分を払い出し、そして、設計を編集し(1406)、第2のユーザは、設計の対応する部分を払い出し、そして、設計を編集する第1のユーザと同時に、設計を編集する(1406)。
【解決手段】複数のユーザに、全体の設計への編集を見ることを可能としながら(1404)、設計を同時に編集することを可能とする方法及び装置が記載される。複数の排他的な領域を有する(プリント回路基板のような)設計は、複数のユーザに表示される(1402)。第1のユーザは、設計の対応する部分を払い出し、そして、設計を編集し(1406)、第2のユーザは、設計の対応する部分を払い出し、そして、設計を編集する第1のユーザと同時に、設計を編集する(1406)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子設計自動化ツールの分野に関連し、そして、特に、ユーザに、並列のプリント回路基板(PCB)設計についての共有された環境を与える機構に関連する。
【背景技術】
【0002】
PCBは、PCBの機能が記号表現の論理図としてレアアウトされる配線略図として開始する。配線略図が完了すると、配線略図は、配線略図に詳細に示されたPCB機能を構成する物理的な構成要素の仮想のPCBへ解釈され又は捕捉される。PCB設計は、プリント回路基板の形式で電気回路を製造するために使用され得る。
【0003】
PCBレイアウト処理中は、多くのユーザが仮想のPCBを生成するために配線略図設計のために作業する。伝統的に、これは、設計分割機構を介して達成され、これにより、各ユーザは、PCBレイアウトへの編集を行うために設計の対応する(割当てられた)部分をチェックアウトすることができる。
【0004】
編集が、基板の残りの部分への大部分の現在の編集にどのように影響するかをみるために、編集はオリジナルのデータベースへ合されて戻され、ここでマスタ設計が編集で更新される。しかしながら、このアプローチは、ユーザが、各個々により開かれている設計の領域のみをみることに制限されているように、制限的である。従って、ユーザは、ユーザの編集が行われながら、基板の残りの部分になされた編集を見ることができない。
【0005】
更に、PCB設計の完全性を維持しながら、ユーザがPCB設計の共有された領域で同時に作業することを可能とする機構は、現在は知られていない。
【0006】
優先権の主張
本出願は、2001年12月10日に出願された、米国仮出願番号60/340,963の利益を主張する。この出願は、2002年10月10日に同時に出願された、名称”並列電子設計自動化:共用された同時の編集”の米国特許出願番号にも関連する。
【0007】
著作権の注意
本特許文書の開示の部分は、著作権保護を受ける資料を含みうる。それを行う範囲まで、著作権者は、特許商標庁の特許ファイル又は記録に現れる特許文書又は特許開示のいずれかのものによるファクシミリ複製へは異議はないが、しかし、その他は、どのようなものでも全ての著作権を保有する。以下の注意は、以下に記載の及び図面内のソフトウェア及びデータへ適用される:Copyright(c)2002,Mentor Graphics Corp.,All Rights Reserved.
【発明の概要】
【課題を解決するための手段】
【0008】
本発明の1つの面では、複数のユーザが、マスタ設計の排他的な領域内で、編集することを同時に可能とする方法である。この方法は、マスタ設計を表示し、第2のユーザが設計の対応する排他的な領域内で同時に編集することを可能としながら、第1のユーザが設計の対応する排他的な領域内で編集することを可能とする。
【図面の簡単な説明】
【0009】
【図1】PCB設計の従来技術のシステムを示すブロック図であり、マスタ設計の個々の部分はユーザによりチェックアウトされる。
【図2】本発明の一般的な実施例を示すブロック図であり、ユーザは編集のためにマスタ設計への並行するアクセスを与えられる。
【図3】本発明の一般的な実施例を示す実体図である。
【図4】マスタ設計の共有された領域への同時の編集アクセスをユーザへ与えることにより、並行するアクセスが実行される、本発明の第1の実施例を示すブロック図である。
【図5】本発明の一般的な実施例に従って、クライアントとサーバの間の相互動作を示す実体図である。
【図6】本発明の第1の実施例に従って、クライアントとサーバの間の相互動作を示す実体図である。
【図7】第1の衝突防止機構を示すブロック図である。
【図8】第2の衝突防止機構を示すブロック図である。
【図9】マスタ設計の対応する領域への編集アクセスを及びマスタ設計の他の領域への読出し専用アクセスをユーザへ与えることにより並行するアクセスが実行される、本発明の第2の実施例を示すブロック図である。
【図10】分割を示すブロック図である。
【図11】分割されたマスタ設計を示すブロック図である。
【図12】分割が実行されるときにネットラインの接続性を示すブロック図である。
【図13】ネットラインの接続性の強制フィールド幅の使用を示すブロック図である。
【図14】本発明の一般的な実施例に従った方法を示すフローチャートである。
【発明を実施するための形態】
【0010】
発明の詳細な説明
【0011】
本発明は、添付の図面の図で、例により説明され、限定されるのではなく、そして、同様な参照符号は同様な構成要素を示す。
【0012】
本発明の一面では、他のユーザによるPCB設計への編集を見ることをユーザに同時可能としながら、PCB設計を編集することをそのユーザに可能とする方法である。一般的には、本方法は、複数のユーザにPCB設計を表示する。第1ユーザがPCB設計の任意の部分の編集を行いながら、第2ユーザが、マスタ設計の完全性を保持しながら、PCB設計の任意の部分の編集を行う。本発明の一実施例では、任意の部分は重なっても良く、各ユーザがマスタ設計の共有された領域を編集することを可能とする。本発明の他の実施例では、各ユーザが、マスタ設計の、共有されていない、排他的な領域を編集するように、任意の部分は、相互に排他的である。
【0013】
本発明は、種々の動作を有し、これを以下に説明する。本発明の動作は、ハードウェア構成要素により実行され又は機械実行可能な命令で実現され、これは、命令でプログラムされた汎用又は特別目的のプロセッサ又は論理回路にその動作を実行させるのに使用される。代わりに、動作はハードウェアとソフトウェアの組合せにより実行されてもよい。
【0014】
本発明は、本発明に従った処理を実行するコンピュータ(又は他の電子装置)をプログラムするのに使用されうる、命令が記憶された機械読出し可能な媒体を含みうるコンピュータプログラムプロダクトとして提供されうる。機械読出し可能な媒体は、限定はされないが、フレキシブルディスケット、光ディスク、CD−ROM(コンパクトディスク−読出し専用メモリ)、及び、光磁気ディスク、ROM(読出し専用メモリ)、RAM(ランダムアクセスメモリ)、EPROM(消去可能プログラマブル専用メモリ)、EEPROM(電気的消去可能プログラマブル専用メモリ)、磁気又は光カード、フラッシュメモリ、又は、電子的命令を記憶するのに適する他の形式の媒体/機械読出し可能な媒体を含む。
【0015】
更に、本発明は、コンピュータプログラムプロダクトのとして、ダウンロードもされ得、プログラムは、遠隔コンピュータ(例えば、サーバ)から要求するコンピュータ(例えば、クライアント)へ、通信リンク(例えば、モデム又は、ネットワーク接続)を介した搬送波又は他の伝搬媒体で実現される、データ信号で伝送されうる。従って、搬送波は、機械読出し可能な媒体を含むとみなされる。
【0016】
序説
プリント回路基板設計は、それが電気回路になる前に、多くの段階を推移する。仕様の組に従って、電気エンジニアは、記号を使用して回路の機能をマップする回路図を作成する。例えば、ジグザグ線が抵抗を表すのに使用される。この図は、配線略図と呼ばれる。
【0017】
プリント回路基板を製造するために、配線略図をとりそして、それを部品と配線のパターンを作るアートワークの形式に変更することが必要であり、これはPCBを製造するための写真画像技術で使用される。このアートワークは、PCB設計と呼ばれ、PCB設計についての作業をする者を以後、ユーザと呼ぶ。ユーザは、他のユーザと同時に、PCBを編集する設計者を含みうる。ユーザは、代わりに、自動配置ツール、シミュレーションツール、又は、配線略図により定義されたネットラインに従って、PCB上の部品を自動的に配線する自動ルータのような、任意の自動化されたプログラムを含んでもよい。本発明の更に他の実施例では、ユーザは、設計者と自動化されたプログラムの両方を含みうる。この後者の実施例では、任意の1つ又はそれ以上のユーザは、基板を設計している設計者と同時に存在する自動化されたプログラムを含んでもよい。
【0018】
図1は、PCBを設計する従来技術のシステムを示すブロック図である。このシステムは、複数のクライアント102、104、106とサーバ100を含み、サーバ100は、マスタPCB設計116(以後”マスタ設計”と呼ぶ)を記憶するデータベース108含み、各クライアント102、104、106は、そこに接続されたユーザへマスタ設計116への編集を要求することを可能とする。ここで、使用するようにマスタ設計は、ユーザにより編集されることが可能なPCB設計を指す。示された従来技術の下で、各ユーザは、作業するために、マスタ設計116の唯一の部分110、112、114を開く。ユーザはデータベース108からマスタ設計116の対応する部分110、112、114を開きそして、設計116の対応する部分110、112、114を編集する。しかしながら、ユーザは、他のユーザによりマスタ設計116にどんな編集がなされているか、及び、マスタ設計116の他の領域の編集がどのようにそのユーザに対応する領域に影響するかを見ることができない。例えば、クライアント102のユーザはマスタ設計の部分110を編集し且つそれのみを見る;クライアント104のユーザはマスタ設計の部分112を編集し且つそれのみを見る;クライアント106のユーザはマスタ設計の部分114を編集し且つそれのみを見る。
【0019】
完了又は、ユーザの要求に際して、対応する部分110、112、114は、データベース108へチェックバック(check back)されうる。後の時点で、ユーザは誰でもマスタ設計116の対応する部分110、112、114をチェックアウト(check out)して、その時点までに全てのユーザによりなされて蓄積された全体の編集が、そのユーザの対応する部分にどのように影響するかを見ることができる。
【0020】
図2は、本発明の一般的な実施例に従った並列PCB設計のシステムを示すブロック図である。これは、複数のクライアント202、204、206、サーバ200を含み、サーバ200は、マスタ設計116を維持するデータベース208を有する。
【0021】
各クライアント202、204、206は、ユーザが、他の者によりマスタ設計116になされた編集を見ながら、他の者と並行して、マスタ設計116への編集を要求することを可能とする。マスタ設計116は、サーバ200により受諾されたクライアントからの編集要求を組み込み、蓄積されたマスタ設計とも呼ばれる、サーバ200データベース208に関するバージョンを有する。マスタ設計216は、所定のクライアント202、204、206に関するユーザにより編集されたバージョンを含む。
【0022】
PCB設計が表示されるときに(即ち、マスタ設計216)、全体のPCB設計を含み得、又は、部分的なPCB設計を含みうる。例えば、マスタ設計116は、幾つかのユーザグループの間で分散され、そして、本発明の実施例は、所定のユーザグループについて、それらの部分のみが表示され、それにより部分的なPCB設計のみが表示されるように、各ユーザグループへ適用可能である。しかしながら、そのユーザグループに表示される部分は、ここに記載のような共有され且つ排他的な領域を有しうる。
【0023】
クライアント206のユーザは、例えば、マスタ設計116への編集を要求しそして、編集要求はサーバ200へ送信される。サーバ200は編集要求を処理しそして、編集要求を受諾するか又はそれらを拒否するかのいずれかを行う。拒否された編集要求は、要求するクライアント206へ報告して戻される。受諾された編集要求は、マスタ設計116に適用される。クライアント202、204、206は、マスタ設計116と同期されることが可能である。
【0024】
本発明の実施例では、並列のPCB設計は、編集をマスタ設計116に要求しながら、ユーザに、蓄積されたマスタ設計116を見る能力を与える。一実施例では、1ユーザは、マスタ設計116(共有されたPCB設計)を見ながら、他のユーザと、マスタ設計の共有された領域を同時に編集しうる。他の実施例では、1ユーザは、マスタ設計116を見ながら、マスタ設計116の共有されていない、排他的な領域を(分散されたPCB設計)、他のユーザと、同時に編集しうる。
【0025】
編集要求は、1つ又はそれ以上のオブジェクトのリストと、特定のユーザによりなされる対応するコマンドを有する。オブジェクトは、例えば、経路、部品、線、ビア(vias)、テキスト及び描画オブジェクト、を有し、そしてコマンドは、例えば、左へ移動、右へ移動、消去又は、追加を含む。
【0026】
図3は、実体図を示す。これは、nのクライアント202、204及び206、及びサーバ200を有する。蓄積されたマスタ設計はユーザへ表示される。所定のクライアント204に接続されたユーザは、マスタ設計を編集する編集要求300をする。クライアント204が、(説明されるべき)衝突検査と解決302の資源を有する場合には、タスクはクライアントにより実行される。クライアント衝突検査と解決を通過する場合には、又は、クライアント衝突検査と解決がない場合には、編集要求300は、サーバ304へ送られる。クライアント衝突検査と解決を通過しない場合には、編集要求は拒否されそして、他の編集要求300がなされうる。
【0027】
一旦、編集要求300がサーバ304へ送られると、編集要求300はサーバの要求キュー306に配置される。要求キューは、編集要求が最初に送られそして最初に処理されるFIFO(ファースト−イン−ファースト−アウト)キュー又は、例えば、ある編集キュー(即ち、要求の形式又は、あるクライアントからの要求)に他の編集キューを超える所定の優先順位が与えられる、優先キューを有しうる。編集要求が結果的に、要求キューを離れるときには、(説明されるべき)サーバ衝突検査及び解決308は、編集要求で実行される。サーバ衝突検査及び解決を通過する場合には、編集は受諾されそしてマスタ設計は更新される310。クライアントは、そして、マスタ設計312と同期されることが可能である。
以下は、どのように編集が検出されるかの例を含む:
・ユーザがオブジェクトを移動するときには、ユーザはそれを選択し、それを移動し、そして、それを解放する。編集は一旦オブジェクトが解放されると検出される。
・ユーザがオブジェクトを消去するときには、ユーザはそれを選択し、そして、消去コマンドを選択する。消去コマンドが選択されたときに、編集が検出される。(消去コマンドは、多くの変形を包含する。例えば、消去ボタンが選択され得又は、消去されるべきオブジェクトは、リサイクルビンに配置されうる。)
・ユーザがオブジェクトを加えるときには、加えられるべきオブジェクトが選択され、マスタ設計上に配置されそして、解放される。編集は、加えられたオブジェクトが解放されるときに検出される。
・ユーザは、オブジェクト名とコマンドを送る。
【0028】
共有されたPCB設計
本発明の一実施例では、共有された編集システムが図4に示され、複数のユーザ202、204、206が、PCB設計116の共有された領域410を同時に編集し、ユーザの各々へ、PCB設計への共有されたアクセスを与える。本発明の実施例では、共有された領域は、複数のユーザによりアクセスされ且つ編集されることが可能なマスタ設計の領域を含む。他方では、排他的な領域が分割されそして、個々のユーザへ割り当てられる。排他的な領域を、”分散されたPCB設計”と題するセクションで、更に詳細に説明する。
【0029】
説明の目的のために、全体の基板は、クライアント202、204、206のユーザの各々が、以下に示すように、アクセス権を受ける、全体のマスタ設計116内のオブジェクトを同時に編集し且つ見ることができるような、共有された領域を有すると仮定する。共有された領域は、マスタ設計116が、共有された及び排他的な領域の両方を有するように、マスタ設計116の領域のサブセットを含みうることが、考えられる。この後者のシナリオでは、排他的な領域内のマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュールにより有効とされ、そして、共有された領域内のマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュール、サーバ衝突検査及び解決モジュール又は、両方により有効とされる。
【0030】
図5では、クライアント202(1つのみ示されている)は、所定のユーザに対応し、そして、プロセッサ500及び選択的なメモリ空間502を含む。サーバ200は、プロセッサ504を同様に有する。1対1クライアント−サーバ及びユーザ−クライアント関係として示されているが、当業者には構成は、このようには限定されないことは理解されるべきである。任意の単一のクライアントは、単に、ユーザに、他のユーザと同時にマスタ設計116を編集することを可能とする入口であることは、理解されるべきである。更に、サーバ200は、マスタ設計116への編集を調整し且つ管理する装置として理解されるべきである。
【0031】
一実施例では、マスタ設計216は、シンクライアント(即ち、最小の処理資源を有するクライアント)のような、クライアントにマスタ設計116を含み、全ての編集要求は、サーバ200へ送られる。この実施例では、サーバ200は、説明されるべき、編集要求が受諾可能かどうかを決定するために、全ての衝突検査及び解決動作を実行する。
他の実施例では、マスタ設計216は、クライアントメモリ空間内にマスタ設計116のコピーを有する。この実施例では、衝突検査及び解決動作は、サーバ200のプロセッサ504のみで、クライアント202によるプロセッサ500単独で、実行され又は、所定のクライアント202、204、206とサーバ200のそれぞれのプロセッサの間の種々の部分に分散されうる。これらは、以下に更に詳細に記載される。
【0032】
アクセス権
本発明の一般的な実施例では、各ユーザは、他のユーザとマスタ設計の同じ面へアクセスし、割当て制限を受ける(”分散されたPCB設計”で以下に説明する)。一実施例では、全てのユーザは、同じアクセス権を有する。例えば、第1ユーザは、第2ユーザと同じオブジェクト及びコマンドへの編集を要求しうる。他の実施例では、各ユーザのアクセス権は異なる。例えば、第1ユーザは、部品への編集のみを要求しそして、第2ユーザは経路への編集のみを要求しうる。
【0033】
衝突検査及び解決
編集要求が受信されるときには、衝突検査及び解決動作が、実行される。衝突検査は、1つ又はそれ以上の規則に違反する編集を防止するための検査を含む。設計規則は、設計が、製造欠陥の可能性を最小化するために、予め定められた組の規則を厳守することを保証する。設計規則検査器は、例えば、間隔違反、幾何学的違反、及び接続性違反を検査する。例えば、2つの線が間隔規則よりも近くに互いに隣りにあるときに、設計規則違反が発生する。
【0034】
衝突解決は、衝突しうるがしかし解決されていない編集を検出することを含む。例えば、2つの線が非常に近く設計規則に違反する場合には、1つの線が衝突を解決するために移動されうる。
【0035】
図6に示されたように、クライアント衝突検査及び解決及びサーバ衝突検査及び解決は、共存し又は、分離して存在しうる。それらが共存する場合には、クライアント202のクライアント衝突検査及び解決モジュール600は、クライアントのマスタ設計216が任意の衝突を有するかを決定する。衝突がある場合には、衝突が解決されることが可能であるかどうかを決定する。
【0036】
衝突を解決できる場合には、又は、衝突がない場合には、サーバのマスタ設計116とともに任意の衝突が存在するかどうかを決定するために、クライアント衝突検査及び解決モジュール600は、編集要求を、サーバ200のサーバ衝突検査及び解決モジュール602へ送る。
【0037】
衝突が存在する場合には、サーバ衝突検査及び解決モジュール602は衝突が解決され得るかどうかを決定する。衝突がない場合には、編集要求は、受諾されそして、サーバ100の併合ユニット604は、編集要求をマスタ設計データ構造へ適用する。
【0038】
サーバ200の同期化器606は、1つ又はそれ以上のクライアント202、204、206を、蓄積されたマスタ設計116と同期させる。同期化は例えば、クライアントからの要求でマスタ設計116を単一クライアントへ送り;複数クライアントからの要求により全ての又は複数のクライアントへマスタ設計116を同報通信し;マスタ設計の更新で、サーバ200の更新されたマスタ設計データ構造116についてクライアント202、204、206の各々上のマスタ設計データ構造216のクライアントコピーを自動的に交換し;又は、マスタ設計116の更新でクライアント202、204、206の表示を自動的に更新する、ことを含む。もちろん、これらの例は網羅的なリストを含まない。
【0039】
衝突検査及び解決が別に存在するときには、サーバは全ての衝突検査及び解決を実行するか又は、各クライアントが全ての衝突検査及び解決を実行するかのいずれかである。例えば、クライアントがシンクライアント(即ち、最小の処理資源を有するクライアント)のときに、サーバは、全ての衝突検査及び解決動作を実行し、そして、クライアントのマスタ設計216はマスタ設計116を含み、編集要求はサーバ200へ送信される。例えば、(分散されたPCB設計で説明される)編集中にクライアント間衝突が発生しないように、マスタ設計が分割されそして個々のユーザに割当てられるときに、クライアントは、全ての衝突検査及び解決を実行しうる。この後者のシナリオでは、編集はそれぞれの排他的な領域で行われ、それらの編集がなされた後に更に任意の衝突が存在する場合には(残留衝突)、サーバは、衝突検査及び解決動作を実行しうる。しかしながら、編集が適用された後に、残留衝突が処理されるので、これは必要ない。
【0040】
サーバが、クライアントと協働して又は別に、衝突検査及び解決を実行するときには、サーバは作業負荷を最小化するために、最適化関数を実行しうる。例えば、どのクライアントが併合された前の編集要求を行ったかを追跡しそれにより、次の編集要求が同じクライアントから来る場合には、サーバは、ある衝突検査及び解決機能を除去することができることを知っている。
【0041】
衝突防止
第1の場所で衝突が発生することを防止するために、幾つかの衝突防止機構が使用されうる。衝突を防止するのに使用されうる1つの機構は、図7に示された保護境界の使用である。保護境界700は、ユーザが、特定のユーザについて領域を一時的に保持するユーザの作業場所の周りに保護境界を引くことを可能とする。保護境界は、全てのクライアントへ同報通信され、そして、ユーザが、衝突に出会うことなしにマスタ設計を編集することを可能とする。保護境界は、ユーザの要求で除去されうる。他のユーザが、保護境界に含まれる領域内で編集をしようとする場合には、衝突検査器がそれを防止し、そして、それをエラーとして、編集がなされようとしているクライアントに報告する。
【0042】
図8に示されたように、衝突を防止する他の機構は、作業領域の周りに合理的な隙間を自動的に提供するための、ユーザの作業領域に沿った、強制フィールド幅800,802の使用である。一実施例では、ユーザの作業領域は、カーソルを含み、カーソルの周りの領域へ強制フィールド幅が適用される。他の実施例では、作業領域は、カーソルに最も近いオブジェクトを含み、強制フィールド幅はこのオブジェクトの周りの領域に適用される。他のユーザが、強制フィールドにより保護されている作業領域の境界内で編集しようとする場合には、衝突検査器がそれを防止し、そして、それをエラーとして、編集がなされようとしているクライアントに報告する。
【0043】
使用されうる他の機構は、オブジェクトロッキングである。オブジェクトロッキングは、ロッキング動作を実行するクライアントについて確保しそして、他のユーザにより編集できないとして、オブジェクトにマークをフクすることを必要とする。衝突防止に使用され得る更なる他の機構は、自動ルータへのネットラインの割当てである。自動ルータへのネットラインの割当ては、1つの自動ルータが同じネットラインを異なって配線(routing)することを防止する。
【0044】
分散されたPCB設計
図9は、本発明の他の実施例に従った、分散された編集システムのブロック図である。このシステムは、複数のクライアント202、204、206及び、マスタ設計116を記憶するデータベース208を有するサーバ200を含む。マスタ設計は、排他的な領域910,912,914を含み、各排他的な領域910,912,914は、全てのユーザにより見られうるがしかし、単一のユーザによって編集される。
【0045】
従来技術のシステムのように、各ユーザは、作業するために、マスタ設計116の唯一の部分910,912,914が割当てられる。しかしながら、従来技術のシステムと異なり、ユーザは、ユーザがセッションを編集するのと同時に他のユーザにより実行される設計の他の部分への編集を見ることができる。例えば、排他的な領域910は、クライアント202のユーザが排他的な領域910を編集しうるように、クライアント202のユーザに対応しうる。クライアント202のユーザは、排他的な領域910を編集でき、そして、蓄積されたマスタ設計を見るために排他的な領域912,914を見ることもできる。
【0046】
分割
分割は、設計を複数の領域へ分離する処理である。分割された領域は、そして、1人のみの割当てられたユーザがその領域を編集するように、ユーザに割当てられる。排他的な領域へ割当られようとしている所定のユーザに関する排他的な領域は、その所定のユーザによってのみ編集されることが可能である。任意の他のユーザに関する排他的な領域は、他のユーザにより見られるのみ(即ち、読出し専用)である。
【0047】
領域境界は任意でありそして、配線略図境界には拘束されない。分割は、多角形を生成する特定の描画ツールにより実行されそして、名称、所有者等のような属性を各排他的な領域に割当てることができる。
【0048】
本発明の実施例では、設計の所有者は、設計を複数の部分に分割する。例えば、図10に示されたように、弧1000と線1002は、設計116の単一のレイヤ1004を又は、設計116の複数のレイヤ1006を分割するのに使用されうる。部分は領域の形式(即ち、円、矩形、多角形)を規定し;1つ又はそれ以上のレイヤをその領域に割当て;そして、その部分を割当てることにより、定義されうる。各部分は、そして、単一のユーザにより編集するために利用可能である。設計の所有者は、ユーザでもよい。
【0049】
部分がユーザに割当てられるときに、その部分は排他的な領域となる。排他的な領域は、他のユーザにより編集するために利用可能ではないが、しかし、他のユーザにより見るためには利用可能である。排他的な領域は、明確に割当てられ、それにより設計の所有者は、特定のユーザへ所定の領域を特に割当て、又は、排他的な領域は、暗示的に割当てられ、それにより明確に割当てられていない領域は省略時設定により設計の所有者へ割当てられる。代わりに、各領域は、任意の名称が割当てられ、そしてユーザは要求により排他的な領域をチェックアウト(check out)することにより領域を確保しうる。
【0050】
説明のために、全体の基板は、前述のアクセス権を受ける、蓄積されたマスタ設計116を見ながら、クライアント202、204、206のユーザが割当てられた領域を同時に編集できるように、排他的である、と仮定される。排他的な領域は、マスタ設計116が共有された及び排他的な領域を含むように、マスタ設計116上に領域のサブセットを有する、と考えられる。この後者のシナリオでは、排他的な領域でのマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュールにより有効化され;そして共有された領域でのマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュール、サーバ衝突検査及び解決モジュール又は、両者により有効化されうる。
【0051】
編集
図11に示されたように、ユーザが設計116を開くときに、もしあれば共有された領域と共に、ユーザ1100に対応する全ての部分(即ち、ユーザに割当てられた又はユーザによりチェックアウトされた排他的な領域)は、編集のためにそのユーザに利用可能であり、そして、全ての他の非対応の、排他的な領域1102、1104は、見るために利用可能である。本発明の実施例では、ユーザは、その部分のみを表示しそして、特定のユーザについての排他的な領域の内側を配線する選択を与えられる。PCBオブジェクト、描画オブジェクト及びネットラインのような他の項目は、標準的に表示されうる。
【0052】
対応する排他的な領域内の任意のオブジェクトは、編集について利用可能であり、そして、対応する排他的な領域の外側の任意のオブジェクトは、ロックされそして、編集に利用可能でないが、読み出し専用である。オブジェクトは、限定はされないが、経路、部品、線、ビア(vias)、テキスト及び描画オブジェクトを含む。
【0053】
配置規則
配置規則は、部分の設計中に起りうる衝突を防止するのに役立つ。例えば、排他的な領域はレイヤ制限を有しうるので、ビア、スルーホールピン、又は部分が複数の排他的な領域内に存在することが可能である。複数の領域内にある任意のオブジェクトは、ロックされるべきである。(異なるユーザへ割当てられた複数のレイヤ上に存在することにより)複数の領域を横切るオブジェクトは、追加されることが防止されるべきである。
【0054】
更に、図12に示されたように(領域1210は排他的な領域と仮定すると)、排他的な領域内で開始し排他的な領域内で終了するネットライン1200、1202は、完全に配線され;、排他的な領域内で開始するが排他的な領域外で終了するネットライン1204は、排他的な領域のエッジまで配線される。一旦ネットラインが1つの排他的な領域のエッジへ配線されると、隣接する排他的な領域の所有者(又は、それが共有された領域ならば、他のユーザ)は、それら自身の領域内でネットラインを配線することを継続する。排他的な領域内で開始せずそして終了しないネットライン1206は、配線することから制限され、又は、制限内で配線されうる。この例では、ネットライン1206は、その終了点が排他的な領域のエッジにある場合には、配線される。
【0055】
間隔違反は、線が互いに非常に近すぎて配置されるときに、発生しうる。(上述の衝突検査及び解決を参照する)。間隔違反は、2つの部分の境界にそって又は、排他的な領域内で、発生しそうである。図13に示されたように、2つの部分の境界にそって発生する間隔違反を扱う1つの方法は、境界に沿って(前述の)強制フィールド幅1300,1302を許すことである。強制フィールド幅は、境界に沿ったオブジェクト間に合理的な隙間を提供し、そして、潜在的な間隔違反に直面することなしに、ユーザが排他的な領域のエッジへ設計することを可能とする。
【0056】
技術的に良く知られている配置規則についての種々の他の可能性がありそして、ここでは更に説明はしない。提供された例は、説明の目的のためのみであり、本発明の実施例に限定することは意図していない。
【0057】
フローチャート
図14は、上述の本発明の一般的な実施例に従った方法を示すフローチャートである。フローチャートは、ブロック1400で開始し、そして、ブロック1402に続き、ここで、複数のクライアントへ、マスタ設計が表示される。一実施例では、各クライアントは、サーバデータベースからマスタ設計を見る。他の実施例では、各クライアントは、クライアント自身のメモリ空間内にマスタ設計のコピーを維持する。
【0058】
ブロック1404で、1つ又はそれ以上の編集要求が複数のユーザから受信される。ブロック1406で、所定の編集要求が処理される。一実施例では、編集要求は、必要なら、サーバ衝突検査及び解決のためにサーバに編集要求を送る前に、クライアント衝突検査及び解決への編集要求を受けることにより処理される。他の実施例では、編集要求は、サーバ衝突検査及び解決のためにサーバへ直接的に送られる。
【0059】
ブロック1408で、編集要求が受諾されたかどうかが決定される。編集要求が衝突検査及び解決を通過する場合には、それは受諾される。そのようでなければ、編集要求は拒否される。編集要求が受諾される場合には、ブロック1412で、マスタ設計が更新され、そして、クライアントは、ブロック1414でマスタ設計と同期される。編集要求が拒否される場合には、ブロック1410で適切なクライアントへエラーとして報告される。この方法は、ブロック1416で終了する。
【0060】
結論
前述の明細書では、本発明を、特定の実施例を参照して記載した。しかしながら、種々の修正と変更が、本発明の精神と範囲から離れることなしに、それになされうることは、明らかである。明細書と図面は、従って、限定する意味ではなく、説明するためあるとみなされる。
【0061】
例えば、マスタ設計116は領域に分割され、そしてその領域は、共有され及び排他的な領域の両方が、部分を含むように、共有され又は排他的であると指定されうる。
【技術分野】
【0001】
本発明は、電子設計自動化ツールの分野に関連し、そして、特に、ユーザに、並列のプリント回路基板(PCB)設計についての共有された環境を与える機構に関連する。
【背景技術】
【0002】
PCBは、PCBの機能が記号表現の論理図としてレアアウトされる配線略図として開始する。配線略図が完了すると、配線略図は、配線略図に詳細に示されたPCB機能を構成する物理的な構成要素の仮想のPCBへ解釈され又は捕捉される。PCB設計は、プリント回路基板の形式で電気回路を製造するために使用され得る。
【0003】
PCBレイアウト処理中は、多くのユーザが仮想のPCBを生成するために配線略図設計のために作業する。伝統的に、これは、設計分割機構を介して達成され、これにより、各ユーザは、PCBレイアウトへの編集を行うために設計の対応する(割当てられた)部分をチェックアウトすることができる。
【0004】
編集が、基板の残りの部分への大部分の現在の編集にどのように影響するかをみるために、編集はオリジナルのデータベースへ合されて戻され、ここでマスタ設計が編集で更新される。しかしながら、このアプローチは、ユーザが、各個々により開かれている設計の領域のみをみることに制限されているように、制限的である。従って、ユーザは、ユーザの編集が行われながら、基板の残りの部分になされた編集を見ることができない。
【0005】
更に、PCB設計の完全性を維持しながら、ユーザがPCB設計の共有された領域で同時に作業することを可能とする機構は、現在は知られていない。
【0006】
優先権の主張
本出願は、2001年12月10日に出願された、米国仮出願番号60/340,963の利益を主張する。この出願は、2002年10月10日に同時に出願された、名称”並列電子設計自動化:共用された同時の編集”の米国特許出願番号にも関連する。
【0007】
著作権の注意
本特許文書の開示の部分は、著作権保護を受ける資料を含みうる。それを行う範囲まで、著作権者は、特許商標庁の特許ファイル又は記録に現れる特許文書又は特許開示のいずれかのものによるファクシミリ複製へは異議はないが、しかし、その他は、どのようなものでも全ての著作権を保有する。以下の注意は、以下に記載の及び図面内のソフトウェア及びデータへ適用される:Copyright(c)2002,Mentor Graphics Corp.,All Rights Reserved.
【発明の概要】
【課題を解決するための手段】
【0008】
本発明の1つの面では、複数のユーザが、マスタ設計の排他的な領域内で、編集することを同時に可能とする方法である。この方法は、マスタ設計を表示し、第2のユーザが設計の対応する排他的な領域内で同時に編集することを可能としながら、第1のユーザが設計の対応する排他的な領域内で編集することを可能とする。
【図面の簡単な説明】
【0009】
【図1】PCB設計の従来技術のシステムを示すブロック図であり、マスタ設計の個々の部分はユーザによりチェックアウトされる。
【図2】本発明の一般的な実施例を示すブロック図であり、ユーザは編集のためにマスタ設計への並行するアクセスを与えられる。
【図3】本発明の一般的な実施例を示す実体図である。
【図4】マスタ設計の共有された領域への同時の編集アクセスをユーザへ与えることにより、並行するアクセスが実行される、本発明の第1の実施例を示すブロック図である。
【図5】本発明の一般的な実施例に従って、クライアントとサーバの間の相互動作を示す実体図である。
【図6】本発明の第1の実施例に従って、クライアントとサーバの間の相互動作を示す実体図である。
【図7】第1の衝突防止機構を示すブロック図である。
【図8】第2の衝突防止機構を示すブロック図である。
【図9】マスタ設計の対応する領域への編集アクセスを及びマスタ設計の他の領域への読出し専用アクセスをユーザへ与えることにより並行するアクセスが実行される、本発明の第2の実施例を示すブロック図である。
【図10】分割を示すブロック図である。
【図11】分割されたマスタ設計を示すブロック図である。
【図12】分割が実行されるときにネットラインの接続性を示すブロック図である。
【図13】ネットラインの接続性の強制フィールド幅の使用を示すブロック図である。
【図14】本発明の一般的な実施例に従った方法を示すフローチャートである。
【発明を実施するための形態】
【0010】
発明の詳細な説明
【0011】
本発明は、添付の図面の図で、例により説明され、限定されるのではなく、そして、同様な参照符号は同様な構成要素を示す。
【0012】
本発明の一面では、他のユーザによるPCB設計への編集を見ることをユーザに同時可能としながら、PCB設計を編集することをそのユーザに可能とする方法である。一般的には、本方法は、複数のユーザにPCB設計を表示する。第1ユーザがPCB設計の任意の部分の編集を行いながら、第2ユーザが、マスタ設計の完全性を保持しながら、PCB設計の任意の部分の編集を行う。本発明の一実施例では、任意の部分は重なっても良く、各ユーザがマスタ設計の共有された領域を編集することを可能とする。本発明の他の実施例では、各ユーザが、マスタ設計の、共有されていない、排他的な領域を編集するように、任意の部分は、相互に排他的である。
【0013】
本発明は、種々の動作を有し、これを以下に説明する。本発明の動作は、ハードウェア構成要素により実行され又は機械実行可能な命令で実現され、これは、命令でプログラムされた汎用又は特別目的のプロセッサ又は論理回路にその動作を実行させるのに使用される。代わりに、動作はハードウェアとソフトウェアの組合せにより実行されてもよい。
【0014】
本発明は、本発明に従った処理を実行するコンピュータ(又は他の電子装置)をプログラムするのに使用されうる、命令が記憶された機械読出し可能な媒体を含みうるコンピュータプログラムプロダクトとして提供されうる。機械読出し可能な媒体は、限定はされないが、フレキシブルディスケット、光ディスク、CD−ROM(コンパクトディスク−読出し専用メモリ)、及び、光磁気ディスク、ROM(読出し専用メモリ)、RAM(ランダムアクセスメモリ)、EPROM(消去可能プログラマブル専用メモリ)、EEPROM(電気的消去可能プログラマブル専用メモリ)、磁気又は光カード、フラッシュメモリ、又は、電子的命令を記憶するのに適する他の形式の媒体/機械読出し可能な媒体を含む。
【0015】
更に、本発明は、コンピュータプログラムプロダクトのとして、ダウンロードもされ得、プログラムは、遠隔コンピュータ(例えば、サーバ)から要求するコンピュータ(例えば、クライアント)へ、通信リンク(例えば、モデム又は、ネットワーク接続)を介した搬送波又は他の伝搬媒体で実現される、データ信号で伝送されうる。従って、搬送波は、機械読出し可能な媒体を含むとみなされる。
【0016】
序説
プリント回路基板設計は、それが電気回路になる前に、多くの段階を推移する。仕様の組に従って、電気エンジニアは、記号を使用して回路の機能をマップする回路図を作成する。例えば、ジグザグ線が抵抗を表すのに使用される。この図は、配線略図と呼ばれる。
【0017】
プリント回路基板を製造するために、配線略図をとりそして、それを部品と配線のパターンを作るアートワークの形式に変更することが必要であり、これはPCBを製造するための写真画像技術で使用される。このアートワークは、PCB設計と呼ばれ、PCB設計についての作業をする者を以後、ユーザと呼ぶ。ユーザは、他のユーザと同時に、PCBを編集する設計者を含みうる。ユーザは、代わりに、自動配置ツール、シミュレーションツール、又は、配線略図により定義されたネットラインに従って、PCB上の部品を自動的に配線する自動ルータのような、任意の自動化されたプログラムを含んでもよい。本発明の更に他の実施例では、ユーザは、設計者と自動化されたプログラムの両方を含みうる。この後者の実施例では、任意の1つ又はそれ以上のユーザは、基板を設計している設計者と同時に存在する自動化されたプログラムを含んでもよい。
【0018】
図1は、PCBを設計する従来技術のシステムを示すブロック図である。このシステムは、複数のクライアント102、104、106とサーバ100を含み、サーバ100は、マスタPCB設計116(以後”マスタ設計”と呼ぶ)を記憶するデータベース108含み、各クライアント102、104、106は、そこに接続されたユーザへマスタ設計116への編集を要求することを可能とする。ここで、使用するようにマスタ設計は、ユーザにより編集されることが可能なPCB設計を指す。示された従来技術の下で、各ユーザは、作業するために、マスタ設計116の唯一の部分110、112、114を開く。ユーザはデータベース108からマスタ設計116の対応する部分110、112、114を開きそして、設計116の対応する部分110、112、114を編集する。しかしながら、ユーザは、他のユーザによりマスタ設計116にどんな編集がなされているか、及び、マスタ設計116の他の領域の編集がどのようにそのユーザに対応する領域に影響するかを見ることができない。例えば、クライアント102のユーザはマスタ設計の部分110を編集し且つそれのみを見る;クライアント104のユーザはマスタ設計の部分112を編集し且つそれのみを見る;クライアント106のユーザはマスタ設計の部分114を編集し且つそれのみを見る。
【0019】
完了又は、ユーザの要求に際して、対応する部分110、112、114は、データベース108へチェックバック(check back)されうる。後の時点で、ユーザは誰でもマスタ設計116の対応する部分110、112、114をチェックアウト(check out)して、その時点までに全てのユーザによりなされて蓄積された全体の編集が、そのユーザの対応する部分にどのように影響するかを見ることができる。
【0020】
図2は、本発明の一般的な実施例に従った並列PCB設計のシステムを示すブロック図である。これは、複数のクライアント202、204、206、サーバ200を含み、サーバ200は、マスタ設計116を維持するデータベース208を有する。
【0021】
各クライアント202、204、206は、ユーザが、他の者によりマスタ設計116になされた編集を見ながら、他の者と並行して、マスタ設計116への編集を要求することを可能とする。マスタ設計116は、サーバ200により受諾されたクライアントからの編集要求を組み込み、蓄積されたマスタ設計とも呼ばれる、サーバ200データベース208に関するバージョンを有する。マスタ設計216は、所定のクライアント202、204、206に関するユーザにより編集されたバージョンを含む。
【0022】
PCB設計が表示されるときに(即ち、マスタ設計216)、全体のPCB設計を含み得、又は、部分的なPCB設計を含みうる。例えば、マスタ設計116は、幾つかのユーザグループの間で分散され、そして、本発明の実施例は、所定のユーザグループについて、それらの部分のみが表示され、それにより部分的なPCB設計のみが表示されるように、各ユーザグループへ適用可能である。しかしながら、そのユーザグループに表示される部分は、ここに記載のような共有され且つ排他的な領域を有しうる。
【0023】
クライアント206のユーザは、例えば、マスタ設計116への編集を要求しそして、編集要求はサーバ200へ送信される。サーバ200は編集要求を処理しそして、編集要求を受諾するか又はそれらを拒否するかのいずれかを行う。拒否された編集要求は、要求するクライアント206へ報告して戻される。受諾された編集要求は、マスタ設計116に適用される。クライアント202、204、206は、マスタ設計116と同期されることが可能である。
【0024】
本発明の実施例では、並列のPCB設計は、編集をマスタ設計116に要求しながら、ユーザに、蓄積されたマスタ設計116を見る能力を与える。一実施例では、1ユーザは、マスタ設計116(共有されたPCB設計)を見ながら、他のユーザと、マスタ設計の共有された領域を同時に編集しうる。他の実施例では、1ユーザは、マスタ設計116を見ながら、マスタ設計116の共有されていない、排他的な領域を(分散されたPCB設計)、他のユーザと、同時に編集しうる。
【0025】
編集要求は、1つ又はそれ以上のオブジェクトのリストと、特定のユーザによりなされる対応するコマンドを有する。オブジェクトは、例えば、経路、部品、線、ビア(vias)、テキスト及び描画オブジェクト、を有し、そしてコマンドは、例えば、左へ移動、右へ移動、消去又は、追加を含む。
【0026】
図3は、実体図を示す。これは、nのクライアント202、204及び206、及びサーバ200を有する。蓄積されたマスタ設計はユーザへ表示される。所定のクライアント204に接続されたユーザは、マスタ設計を編集する編集要求300をする。クライアント204が、(説明されるべき)衝突検査と解決302の資源を有する場合には、タスクはクライアントにより実行される。クライアント衝突検査と解決を通過する場合には、又は、クライアント衝突検査と解決がない場合には、編集要求300は、サーバ304へ送られる。クライアント衝突検査と解決を通過しない場合には、編集要求は拒否されそして、他の編集要求300がなされうる。
【0027】
一旦、編集要求300がサーバ304へ送られると、編集要求300はサーバの要求キュー306に配置される。要求キューは、編集要求が最初に送られそして最初に処理されるFIFO(ファースト−イン−ファースト−アウト)キュー又は、例えば、ある編集キュー(即ち、要求の形式又は、あるクライアントからの要求)に他の編集キューを超える所定の優先順位が与えられる、優先キューを有しうる。編集要求が結果的に、要求キューを離れるときには、(説明されるべき)サーバ衝突検査及び解決308は、編集要求で実行される。サーバ衝突検査及び解決を通過する場合には、編集は受諾されそしてマスタ設計は更新される310。クライアントは、そして、マスタ設計312と同期されることが可能である。
以下は、どのように編集が検出されるかの例を含む:
・ユーザがオブジェクトを移動するときには、ユーザはそれを選択し、それを移動し、そして、それを解放する。編集は一旦オブジェクトが解放されると検出される。
・ユーザがオブジェクトを消去するときには、ユーザはそれを選択し、そして、消去コマンドを選択する。消去コマンドが選択されたときに、編集が検出される。(消去コマンドは、多くの変形を包含する。例えば、消去ボタンが選択され得又は、消去されるべきオブジェクトは、リサイクルビンに配置されうる。)
・ユーザがオブジェクトを加えるときには、加えられるべきオブジェクトが選択され、マスタ設計上に配置されそして、解放される。編集は、加えられたオブジェクトが解放されるときに検出される。
・ユーザは、オブジェクト名とコマンドを送る。
【0028】
共有されたPCB設計
本発明の一実施例では、共有された編集システムが図4に示され、複数のユーザ202、204、206が、PCB設計116の共有された領域410を同時に編集し、ユーザの各々へ、PCB設計への共有されたアクセスを与える。本発明の実施例では、共有された領域は、複数のユーザによりアクセスされ且つ編集されることが可能なマスタ設計の領域を含む。他方では、排他的な領域が分割されそして、個々のユーザへ割り当てられる。排他的な領域を、”分散されたPCB設計”と題するセクションで、更に詳細に説明する。
【0029】
説明の目的のために、全体の基板は、クライアント202、204、206のユーザの各々が、以下に示すように、アクセス権を受ける、全体のマスタ設計116内のオブジェクトを同時に編集し且つ見ることができるような、共有された領域を有すると仮定する。共有された領域は、マスタ設計116が、共有された及び排他的な領域の両方を有するように、マスタ設計116の領域のサブセットを含みうることが、考えられる。この後者のシナリオでは、排他的な領域内のマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュールにより有効とされ、そして、共有された領域内のマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュール、サーバ衝突検査及び解決モジュール又は、両方により有効とされる。
【0030】
図5では、クライアント202(1つのみ示されている)は、所定のユーザに対応し、そして、プロセッサ500及び選択的なメモリ空間502を含む。サーバ200は、プロセッサ504を同様に有する。1対1クライアント−サーバ及びユーザ−クライアント関係として示されているが、当業者には構成は、このようには限定されないことは理解されるべきである。任意の単一のクライアントは、単に、ユーザに、他のユーザと同時にマスタ設計116を編集することを可能とする入口であることは、理解されるべきである。更に、サーバ200は、マスタ設計116への編集を調整し且つ管理する装置として理解されるべきである。
【0031】
一実施例では、マスタ設計216は、シンクライアント(即ち、最小の処理資源を有するクライアント)のような、クライアントにマスタ設計116を含み、全ての編集要求は、サーバ200へ送られる。この実施例では、サーバ200は、説明されるべき、編集要求が受諾可能かどうかを決定するために、全ての衝突検査及び解決動作を実行する。
他の実施例では、マスタ設計216は、クライアントメモリ空間内にマスタ設計116のコピーを有する。この実施例では、衝突検査及び解決動作は、サーバ200のプロセッサ504のみで、クライアント202によるプロセッサ500単独で、実行され又は、所定のクライアント202、204、206とサーバ200のそれぞれのプロセッサの間の種々の部分に分散されうる。これらは、以下に更に詳細に記載される。
【0032】
アクセス権
本発明の一般的な実施例では、各ユーザは、他のユーザとマスタ設計の同じ面へアクセスし、割当て制限を受ける(”分散されたPCB設計”で以下に説明する)。一実施例では、全てのユーザは、同じアクセス権を有する。例えば、第1ユーザは、第2ユーザと同じオブジェクト及びコマンドへの編集を要求しうる。他の実施例では、各ユーザのアクセス権は異なる。例えば、第1ユーザは、部品への編集のみを要求しそして、第2ユーザは経路への編集のみを要求しうる。
【0033】
衝突検査及び解決
編集要求が受信されるときには、衝突検査及び解決動作が、実行される。衝突検査は、1つ又はそれ以上の規則に違反する編集を防止するための検査を含む。設計規則は、設計が、製造欠陥の可能性を最小化するために、予め定められた組の規則を厳守することを保証する。設計規則検査器は、例えば、間隔違反、幾何学的違反、及び接続性違反を検査する。例えば、2つの線が間隔規則よりも近くに互いに隣りにあるときに、設計規則違反が発生する。
【0034】
衝突解決は、衝突しうるがしかし解決されていない編集を検出することを含む。例えば、2つの線が非常に近く設計規則に違反する場合には、1つの線が衝突を解決するために移動されうる。
【0035】
図6に示されたように、クライアント衝突検査及び解決及びサーバ衝突検査及び解決は、共存し又は、分離して存在しうる。それらが共存する場合には、クライアント202のクライアント衝突検査及び解決モジュール600は、クライアントのマスタ設計216が任意の衝突を有するかを決定する。衝突がある場合には、衝突が解決されることが可能であるかどうかを決定する。
【0036】
衝突を解決できる場合には、又は、衝突がない場合には、サーバのマスタ設計116とともに任意の衝突が存在するかどうかを決定するために、クライアント衝突検査及び解決モジュール600は、編集要求を、サーバ200のサーバ衝突検査及び解決モジュール602へ送る。
【0037】
衝突が存在する場合には、サーバ衝突検査及び解決モジュール602は衝突が解決され得るかどうかを決定する。衝突がない場合には、編集要求は、受諾されそして、サーバ100の併合ユニット604は、編集要求をマスタ設計データ構造へ適用する。
【0038】
サーバ200の同期化器606は、1つ又はそれ以上のクライアント202、204、206を、蓄積されたマスタ設計116と同期させる。同期化は例えば、クライアントからの要求でマスタ設計116を単一クライアントへ送り;複数クライアントからの要求により全ての又は複数のクライアントへマスタ設計116を同報通信し;マスタ設計の更新で、サーバ200の更新されたマスタ設計データ構造116についてクライアント202、204、206の各々上のマスタ設計データ構造216のクライアントコピーを自動的に交換し;又は、マスタ設計116の更新でクライアント202、204、206の表示を自動的に更新する、ことを含む。もちろん、これらの例は網羅的なリストを含まない。
【0039】
衝突検査及び解決が別に存在するときには、サーバは全ての衝突検査及び解決を実行するか又は、各クライアントが全ての衝突検査及び解決を実行するかのいずれかである。例えば、クライアントがシンクライアント(即ち、最小の処理資源を有するクライアント)のときに、サーバは、全ての衝突検査及び解決動作を実行し、そして、クライアントのマスタ設計216はマスタ設計116を含み、編集要求はサーバ200へ送信される。例えば、(分散されたPCB設計で説明される)編集中にクライアント間衝突が発生しないように、マスタ設計が分割されそして個々のユーザに割当てられるときに、クライアントは、全ての衝突検査及び解決を実行しうる。この後者のシナリオでは、編集はそれぞれの排他的な領域で行われ、それらの編集がなされた後に更に任意の衝突が存在する場合には(残留衝突)、サーバは、衝突検査及び解決動作を実行しうる。しかしながら、編集が適用された後に、残留衝突が処理されるので、これは必要ない。
【0040】
サーバが、クライアントと協働して又は別に、衝突検査及び解決を実行するときには、サーバは作業負荷を最小化するために、最適化関数を実行しうる。例えば、どのクライアントが併合された前の編集要求を行ったかを追跡しそれにより、次の編集要求が同じクライアントから来る場合には、サーバは、ある衝突検査及び解決機能を除去することができることを知っている。
【0041】
衝突防止
第1の場所で衝突が発生することを防止するために、幾つかの衝突防止機構が使用されうる。衝突を防止するのに使用されうる1つの機構は、図7に示された保護境界の使用である。保護境界700は、ユーザが、特定のユーザについて領域を一時的に保持するユーザの作業場所の周りに保護境界を引くことを可能とする。保護境界は、全てのクライアントへ同報通信され、そして、ユーザが、衝突に出会うことなしにマスタ設計を編集することを可能とする。保護境界は、ユーザの要求で除去されうる。他のユーザが、保護境界に含まれる領域内で編集をしようとする場合には、衝突検査器がそれを防止し、そして、それをエラーとして、編集がなされようとしているクライアントに報告する。
【0042】
図8に示されたように、衝突を防止する他の機構は、作業領域の周りに合理的な隙間を自動的に提供するための、ユーザの作業領域に沿った、強制フィールド幅800,802の使用である。一実施例では、ユーザの作業領域は、カーソルを含み、カーソルの周りの領域へ強制フィールド幅が適用される。他の実施例では、作業領域は、カーソルに最も近いオブジェクトを含み、強制フィールド幅はこのオブジェクトの周りの領域に適用される。他のユーザが、強制フィールドにより保護されている作業領域の境界内で編集しようとする場合には、衝突検査器がそれを防止し、そして、それをエラーとして、編集がなされようとしているクライアントに報告する。
【0043】
使用されうる他の機構は、オブジェクトロッキングである。オブジェクトロッキングは、ロッキング動作を実行するクライアントについて確保しそして、他のユーザにより編集できないとして、オブジェクトにマークをフクすることを必要とする。衝突防止に使用され得る更なる他の機構は、自動ルータへのネットラインの割当てである。自動ルータへのネットラインの割当ては、1つの自動ルータが同じネットラインを異なって配線(routing)することを防止する。
【0044】
分散されたPCB設計
図9は、本発明の他の実施例に従った、分散された編集システムのブロック図である。このシステムは、複数のクライアント202、204、206及び、マスタ設計116を記憶するデータベース208を有するサーバ200を含む。マスタ設計は、排他的な領域910,912,914を含み、各排他的な領域910,912,914は、全てのユーザにより見られうるがしかし、単一のユーザによって編集される。
【0045】
従来技術のシステムのように、各ユーザは、作業するために、マスタ設計116の唯一の部分910,912,914が割当てられる。しかしながら、従来技術のシステムと異なり、ユーザは、ユーザがセッションを編集するのと同時に他のユーザにより実行される設計の他の部分への編集を見ることができる。例えば、排他的な領域910は、クライアント202のユーザが排他的な領域910を編集しうるように、クライアント202のユーザに対応しうる。クライアント202のユーザは、排他的な領域910を編集でき、そして、蓄積されたマスタ設計を見るために排他的な領域912,914を見ることもできる。
【0046】
分割
分割は、設計を複数の領域へ分離する処理である。分割された領域は、そして、1人のみの割当てられたユーザがその領域を編集するように、ユーザに割当てられる。排他的な領域へ割当られようとしている所定のユーザに関する排他的な領域は、その所定のユーザによってのみ編集されることが可能である。任意の他のユーザに関する排他的な領域は、他のユーザにより見られるのみ(即ち、読出し専用)である。
【0047】
領域境界は任意でありそして、配線略図境界には拘束されない。分割は、多角形を生成する特定の描画ツールにより実行されそして、名称、所有者等のような属性を各排他的な領域に割当てることができる。
【0048】
本発明の実施例では、設計の所有者は、設計を複数の部分に分割する。例えば、図10に示されたように、弧1000と線1002は、設計116の単一のレイヤ1004を又は、設計116の複数のレイヤ1006を分割するのに使用されうる。部分は領域の形式(即ち、円、矩形、多角形)を規定し;1つ又はそれ以上のレイヤをその領域に割当て;そして、その部分を割当てることにより、定義されうる。各部分は、そして、単一のユーザにより編集するために利用可能である。設計の所有者は、ユーザでもよい。
【0049】
部分がユーザに割当てられるときに、その部分は排他的な領域となる。排他的な領域は、他のユーザにより編集するために利用可能ではないが、しかし、他のユーザにより見るためには利用可能である。排他的な領域は、明確に割当てられ、それにより設計の所有者は、特定のユーザへ所定の領域を特に割当て、又は、排他的な領域は、暗示的に割当てられ、それにより明確に割当てられていない領域は省略時設定により設計の所有者へ割当てられる。代わりに、各領域は、任意の名称が割当てられ、そしてユーザは要求により排他的な領域をチェックアウト(check out)することにより領域を確保しうる。
【0050】
説明のために、全体の基板は、前述のアクセス権を受ける、蓄積されたマスタ設計116を見ながら、クライアント202、204、206のユーザが割当てられた領域を同時に編集できるように、排他的である、と仮定される。排他的な領域は、マスタ設計116が共有された及び排他的な領域を含むように、マスタ設計116上に領域のサブセットを有する、と考えられる。この後者のシナリオでは、排他的な領域でのマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュールにより有効化され;そして共有された領域でのマスタ設計116への編集は、対応するクライアント衝突検査及び解決モジュール、サーバ衝突検査及び解決モジュール又は、両者により有効化されうる。
【0051】
編集
図11に示されたように、ユーザが設計116を開くときに、もしあれば共有された領域と共に、ユーザ1100に対応する全ての部分(即ち、ユーザに割当てられた又はユーザによりチェックアウトされた排他的な領域)は、編集のためにそのユーザに利用可能であり、そして、全ての他の非対応の、排他的な領域1102、1104は、見るために利用可能である。本発明の実施例では、ユーザは、その部分のみを表示しそして、特定のユーザについての排他的な領域の内側を配線する選択を与えられる。PCBオブジェクト、描画オブジェクト及びネットラインのような他の項目は、標準的に表示されうる。
【0052】
対応する排他的な領域内の任意のオブジェクトは、編集について利用可能であり、そして、対応する排他的な領域の外側の任意のオブジェクトは、ロックされそして、編集に利用可能でないが、読み出し専用である。オブジェクトは、限定はされないが、経路、部品、線、ビア(vias)、テキスト及び描画オブジェクトを含む。
【0053】
配置規則
配置規則は、部分の設計中に起りうる衝突を防止するのに役立つ。例えば、排他的な領域はレイヤ制限を有しうるので、ビア、スルーホールピン、又は部分が複数の排他的な領域内に存在することが可能である。複数の領域内にある任意のオブジェクトは、ロックされるべきである。(異なるユーザへ割当てられた複数のレイヤ上に存在することにより)複数の領域を横切るオブジェクトは、追加されることが防止されるべきである。
【0054】
更に、図12に示されたように(領域1210は排他的な領域と仮定すると)、排他的な領域内で開始し排他的な領域内で終了するネットライン1200、1202は、完全に配線され;、排他的な領域内で開始するが排他的な領域外で終了するネットライン1204は、排他的な領域のエッジまで配線される。一旦ネットラインが1つの排他的な領域のエッジへ配線されると、隣接する排他的な領域の所有者(又は、それが共有された領域ならば、他のユーザ)は、それら自身の領域内でネットラインを配線することを継続する。排他的な領域内で開始せずそして終了しないネットライン1206は、配線することから制限され、又は、制限内で配線されうる。この例では、ネットライン1206は、その終了点が排他的な領域のエッジにある場合には、配線される。
【0055】
間隔違反は、線が互いに非常に近すぎて配置されるときに、発生しうる。(上述の衝突検査及び解決を参照する)。間隔違反は、2つの部分の境界にそって又は、排他的な領域内で、発生しそうである。図13に示されたように、2つの部分の境界にそって発生する間隔違反を扱う1つの方法は、境界に沿って(前述の)強制フィールド幅1300,1302を許すことである。強制フィールド幅は、境界に沿ったオブジェクト間に合理的な隙間を提供し、そして、潜在的な間隔違反に直面することなしに、ユーザが排他的な領域のエッジへ設計することを可能とする。
【0056】
技術的に良く知られている配置規則についての種々の他の可能性がありそして、ここでは更に説明はしない。提供された例は、説明の目的のためのみであり、本発明の実施例に限定することは意図していない。
【0057】
フローチャート
図14は、上述の本発明の一般的な実施例に従った方法を示すフローチャートである。フローチャートは、ブロック1400で開始し、そして、ブロック1402に続き、ここで、複数のクライアントへ、マスタ設計が表示される。一実施例では、各クライアントは、サーバデータベースからマスタ設計を見る。他の実施例では、各クライアントは、クライアント自身のメモリ空間内にマスタ設計のコピーを維持する。
【0058】
ブロック1404で、1つ又はそれ以上の編集要求が複数のユーザから受信される。ブロック1406で、所定の編集要求が処理される。一実施例では、編集要求は、必要なら、サーバ衝突検査及び解決のためにサーバに編集要求を送る前に、クライアント衝突検査及び解決への編集要求を受けることにより処理される。他の実施例では、編集要求は、サーバ衝突検査及び解決のためにサーバへ直接的に送られる。
【0059】
ブロック1408で、編集要求が受諾されたかどうかが決定される。編集要求が衝突検査及び解決を通過する場合には、それは受諾される。そのようでなければ、編集要求は拒否される。編集要求が受諾される場合には、ブロック1412で、マスタ設計が更新され、そして、クライアントは、ブロック1414でマスタ設計と同期される。編集要求が拒否される場合には、ブロック1410で適切なクライアントへエラーとして報告される。この方法は、ブロック1416で終了する。
【0060】
結論
前述の明細書では、本発明を、特定の実施例を参照して記載した。しかしながら、種々の修正と変更が、本発明の精神と範囲から離れることなしに、それになされうることは、明らかである。明細書と図面は、従って、限定する意味ではなく、説明するためあるとみなされる。
【0061】
例えば、マスタ設計116は領域に分割され、そしてその領域は、共有され及び排他的な領域の両方が、部分を含むように、共有され又は排他的であると指定されうる。
【特許請求の範囲】
【請求項1】
各々がクライアントに対応する複数のユーザへマスタ設計を表示する段階であって、前記マスタ設計はサーバの記憶手段に維持され、複数の排他的な領域を有し、各排他的な領域は前記複数のユーザの中の単一のユーザによる編集に利用可能である段階と、
前記複数のユーザの第1のユーザが、前記クライアント中の対応する第1のクライアントにおいて、前記複数の排他的な領域の中の第1の排他的な領域内で編集することを可能とする段階と、
第2のユーザが、前記クライアント中の対応する第2のクライアントにおいて、前記第1のユーザによる第1の排他的な領域内でなされた編集を前記第2のクライアントで見ながら前記複数の排他的な領域の中の第2の排他的な領域内で編集することを同時に可能とする段階とを有する、方法。
【請求項1】
各々がクライアントに対応する複数のユーザへマスタ設計を表示する段階であって、前記マスタ設計はサーバの記憶手段に維持され、複数の排他的な領域を有し、各排他的な領域は前記複数のユーザの中の単一のユーザによる編集に利用可能である段階と、
前記複数のユーザの第1のユーザが、前記クライアント中の対応する第1のクライアントにおいて、前記複数の排他的な領域の中の第1の排他的な領域内で編集することを可能とする段階と、
第2のユーザが、前記クライアント中の対応する第2のクライアントにおいて、前記第1のユーザによる第1の排他的な領域内でなされた編集を前記第2のクライアントで見ながら前記複数の排他的な領域の中の第2の排他的な領域内で編集することを同時に可能とする段階とを有する、方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−116903(P2009−116903A)
【公開日】平成21年5月28日(2009.5.28)
【国際特許分類】
【出願番号】特願2009−18741(P2009−18741)
【出願日】平成21年1月29日(2009.1.29)
【分割の表示】特願2008−121618(P2008−121618)の分割
【原出願日】平成20年5月7日(2008.5.7)
【出願人】(500241860)メンター・グラフィクス・コーポレーション (42)
【Fターム(参考)】
【公開日】平成21年5月28日(2009.5.28)
【国際特許分類】
【出願日】平成21年1月29日(2009.1.29)
【分割の表示】特願2008−121618(P2008−121618)の分割
【原出願日】平成20年5月7日(2008.5.7)
【出願人】(500241860)メンター・グラフィクス・コーポレーション (42)
【Fターム(参考)】
[ Back to top ]