共同PCB設計
親ページ: PCBのレイアウト
よく言われることですが、多くの手が負荷を軽くします。ボードデザイナーが長年にわたって持っていた夢の一つは、複数の人が同時に同じボード上で作業できるようにすることです。このタスクは一見複雑ではないように思えるかもしれません – ただボブのその部分のボードからの配線を取って、私のボードのコピーに持ってくるだけです – しかし、それを実現するには特定の重要な能力の組み合わせが必要です。
これには以下が含まれます:
-
複数の設計者が同じボード設計にアクセスし、自分の変更を保存できるシステムで、他の設計者の作業に影響を与えません。
-
同じボードの複数バージョン間の違いを正確に比較し、特定するメカニズム。
-
検出された違いを解決するために使用できるツールで、設計者がどちらの変更を採用するか選択できます。
-
大量の違いを自動的に処理し、衝突を生じさせずに解決できるツール。
異なるバージョンの同じボード間の違いを示すことができる設計ツールを使用することのもう一つの大きな利点は、自分の作業をチェックするためにこの機能を使用できることです。週末の前に何を配線したか忘れてしまった?問題ありません、PCBエディタの比較およびマージ機能を使用して、行った変更を特定し、調査し、必要であれば削除することもできます。
仕組み
2つのドキュメント間の違いを検出し、解決すること、またはより一般的に呼ばれるdiff’ingとmergingは、ソフトウェア開発の世界では成熟しており、実証されたプロセスです。ソフトウェアはASCIIドキュメントに書かれ、保存されるため、人間またはソフトウェアアプリケーションによって簡単に読み取り、比較することができます。そのため、多数の高品質で堅牢なサードパーティのdiff&mergeツールが利用可能です。
その能力をボードデザイナーに提供するために、Altium DesignerのPCBエディタにdiff&merge機能が組み込まれています。PCBエディタには、2つのボード間の最小の物理的差異を検出できる洗練された差分エンジンがあります。物理差分エンジンは形状比較レベルで動作し、各レイヤーに見つかる形状を比較します。
比較およびマージ機能には、実際に2つの動作方法があります。最初は2方向比較で、現在のボードとボードの別のバージョンとの間の違いを検出するために使用されます。
2つ目の作業方法は、3者間の比較です。これは、他の誰かもボード上で作業している場合に使用します。あなたとあなたの同僚のボブが、バージョン管理リポジトリからボードのコピーをチェックアウトするシナリオを想像してみてください。あなたとボブは、それぞれのボードのコピー上で、コンポーネントの配置と配線作業を行います。ボブが彼の担当するボードのエリアを完成させ、リポジトリにチェックインします。あなたは、ボブの作業を自分のコピーに取り込んで検討したいと思いますが、Altium Designerはこの状況をどのように扱うのでしょうか?
正確に何が変更されたか、そして誰が変更したかを確立するために、Altium DesignerはあなたのボードとBobのボードを比較する必要があります。また、あなたとBobがリポジトリからチェックアウトした時点のボード(このバージョンをベースと呼びます)とも比較する必要があります。これには3方向の比較が必要です - これを行うことでAltium Designerは変更の順序を理解し、それからあなたのボードのバージョンにそれらの変更をマージするためのツールとコマンドを提供します。いつでも共同作業、比較、マージパネルが Version Control Status: Merge Requiredと報告する場合、それはAltium Designerがあなたがボードをチェックアウトしてから他の誰かがリポジトリに自分の作業をチェックインしたことを検出したことを意味します。そのため、あなたのボードのバージョンに彼らの変更を取り込むためにマージを実行する必要があります。
最初のルート、それからあなた(デザイナー1)とボブ(デザイナー2)によって変更された後のルート。
Designer 1がClicks to show the merge resolution viewと、Altium Designerは各デザイナーによって行われたルートを表示し、どのルートが誰によって変更されたかをタグ付けします。
協調PCBデザイン機能の使用方法
Altium Designerの協同PCB設計機能は、協力、比較、統合パネルを通じてアクセスおよび操作されます。これは、同じPCB設計の2つのバージョン間の銅比較を実行するためのコマンドセントラルです。この機能を使用するには、ボードが現在バージョン管理下にあり、それが保存されているリポジトリがPreferencesダイアログのData Management - Design Repositoriesページで設定されている必要があります。
パネルのActionsセクションは、協同機能の制御と状態の両方に使用されます。パネルはボードが最新のリビジョン(ヘッドリビジョンとして知られている)かどうかをチェックします。そうでない場合、最新の状態にするために何をしなければならないかを示します。
マージまたは比較が実行されると、Difference Mapに差分が表示されます。これはパネルとデザインスペースの両方に表示されます。下の画像のように、セルをクリックすると、そのセルの差分がパネルの下部とデザインスペースの両方で詳細に表示されます。差分マップにはレイヤータブも含まれており、これを使用して各レイヤーの差分を調べることができます。
パネルのSettings領域には、比較設定のオプションとコントロールが含まれています:
-
Cell Size - 比較を行う際にセルサイズを表示します。ドロップダウンから希望のサイズを選択してください。
-
Include Polygon Pours in Comparison- 比較を行う際にポリゴンプアを含めるように有効にします。
-
Show Differences - 差異を表示するように有効にします。
差異の表示を管理するために、ボードは一時的にセルに分割されます。カーソルをDifference Mapのセル上に置くとセル参照が表示され、メイン編集ウィンドウのセルの左下隅にも表示されます。セルの色はそのセルを変更した人を示しています。詳細についてはマップの凡例を使用してください。Difference Mapには、差異を含む各PCBレイヤーのレイヤータブも含まれます。レイヤーを選択してからセルをクリックすると、メイン編集ウィンドウでそのセルにズームインします。変更されたオブジェクトは色またはゴースト効果を使用して強調表示されますが、これらの意味については以下で説明します。
Actions領域のパネルは、設計スペース内での進行状況領域を表示、定義、クリアするために使用され、ボードがリポジトリと最新の状態であるかを示し、そうでない場合に何をすべきかを定義し、比較およびマージアクションを開始します。これには、3つのセクションに分かれた多数のコマンドが含まれています:
-
Live Collaboration - これらのコマンドを使用して、作業領域を設定、表示、クリアします。
-
Version Control Status - バージョン管理されたボードで作業している場合にコマンドが表示されます。
-
Comparison - これらのコマンドを使用して、バージョン管理内の別のボード(Click to show differences against any revision)またはバージョン管理されていないボード(Click to show differences against any PCB document)との差異比較を実行します。
アクションコマンドを使用して比較を開始し、ライブコラボレーション機能を管理します。
このパネルの領域でコマンドをクリックして比較を開始すると、ソフトウェアはファイルをリポジトリの最新のリビジョンと比較し、パネルのDifference Map領域およびデザインスペースに差分を表示します。ほとんどのコマンドはトグルタイプのコマンドで、一度クリックすると有効になり、もう一度クリックすると無効になります。Manually mark an intended work areaコマンドは、クリックされるとカーソルがデザインスペースに移動し、領域を定義する準備ができる点で異なります。
パネルを開くと、ソフトウェアは自動的にボードのリビジョン番号をチェックし、それをヘッドリビジョンのリビジョン番号と比較します。同じでない場合、Version control statusが、それらを同じにするために何をすべきかを示します。
用語とステータスメッセージ
用語 |
定義 |
---|---|
ヘッド |
バージョン管理システムにコミットされた最新のリビジョン。 |
ベース |
リポジトリからチェックアウトしてローカルの作業コピーとしたリビジョン。また、チェックアウトされたリビジョンとも呼ばれます。 |
作業コピー |
バージョン管理された文書のローカルコピーで、編集作業が行われます。 |
ローカル変更 |
作業コピーに対して行われたが、バージョン管理にはコミットされていない変更。 |
状態:ファイルは最新です |
ベースリビジョンがヘッドリビジョンであり、ローカル変更が行われていません。 |
状態:変更あり |
ベースリビジョンがヘッドリビジョンであり、作業コピーに変更が加えられています。この状態は、リポジトリに最後にチェックインしたのがあなたであり、すべての差異がローカルであり、あなた自身の作業の結果であることを示しています。 |
状態:ファイルが古い |
ベースリビジョンがヘッドリビジョンより古く、作業コピーに変更が加えられていません。この状態は、あなたがコピーをチェックアウトしてから他の誰かが自分の作業をチェックインしたが、あなたは自分のコピーに変更を加えていないことを示しています。Bring this document up to date with the head revisionアクションをクリックして、古いコピーを最新の文書のコピーに置き換えます。 |
状態:マージが必要 |
ベースリビジョンがヘッドリビジョンより古く、ローカル変更が加えられています。言い換えると、文書は変更されており、かつ古い状態です。この状態は、あなたがコピーをチェックアウトしてから他の誰かが自分の作業をチェックインした、そしてあなたも自分のコピーにローカル変更を加えたことを示しています。これは、あなたの変更と他のデザイナーの変更をマージすることでのみ解決できます。 |
解決 |
ベースリビジョン番号をヘッドリビジョン番号に更新する行為。ベースがヘッドより古い場合、そしてあなたのコピーをヘッドにしたい場合は、解決を実行する必要があります。これにより、状態がマージが必要から変更ありに変わります。 |
差分比較の実行
ボード上であなたが唯一作業している場合、そして別の既存のボードバージョンとあなたのバージョンをチェックしたい場合に、差分比較を実行します。その既存のバージョンは、バージョン管理リポジトリ内のボードのバージョンであるか、またはハードドライブ上のボードである可能性があります。
すべての比較はCollaborate, Compare and Mergeパネルで開始されます。差分比較を実行するには、参照ドキュメントにアクセスするために以下のコマンドのいずれかを選択します。選択肢は以下の通りです:
-
Click to show differences against the head revision - リポジトリにチェックインされた最後のバージョンとあなたのボードを比較します。
-
Click to show differences against any revision - リポジトリ内の古いリビジョンとあなたのボードを比較します。
-
Click to show differences against any PCB document - ハードドライブまたはネットワーク上のボードとあなたのボードを比較します。
差分比較結果の表示方法
比較コマンドが選択されると、すべての違いがDifference Mapに表示されます。このマップでは、ボードがセルに分割されます(セルのサイズは、Settings領域の上部で定義されます)チェッカーボードのように提示されます。セルの上にカーソルを合わせると、そのセルの参照が表示されます、例えばG4のように。
違いがあるセルをクリックすると、設計スペースのそのボードの領域にジャンプします。パネルの下部にあるZoom Levelボタンを使用して、ジャンプ時に使用されるズームレベルを変更できることに注意してください。パネルの下部の領域では、現在選択されているセルの個々の違いが詳細に説明されます。
Difference Mapでは、違いが含まれているセルは色で塗りつぶされ、その変更の所有権を反映する色の選択が、ボードのマップのすぐ下にある色のキーで定義されています。色付きのセルをクリックすると、パネルの下部にあるDifferencesセクションで、すべての違いが詳細に説明されます。
-
Layer tabs - 特定のレイヤーの違いを調べるために、希望するレイヤーを選択します。
-
Previous Unchecked / Next Unchecked - 論理的なパターンで、レイヤーごとにセルを後方または前方に移動するために使用します。
-
Set Checked / Clear Checked - チェックされた違いを設定またはクリアするために使用します。
設計スペースでは、違いが含まれていないセルは半透明の白で影がついており、このエリアには興味深いものが何もないことを示しています。セルに違いが含まれている場合、影はついていません。違いをより簡単に確認するために、シングルレイヤーモード (Shift+S) に切り替えます。
違いは、色、白での影付け、ゴースティング(興味のあるオブジェクトがくすんだ、空洞のような見た目で表示される)など、さまざまな技術を使用して強調表示されます。それぞれの意味は以下の通り詳述されています。
ハイライト |
説明 |
---|---|
追加 - これらの変更は、あなたの作業中のボードには存在しますが、他のドキュメントには存在しません。 |
|
削除 - これらの変更は、他のドキュメントには存在しますが、あなたの作業中のボードには存在しません。 |
マージ解決比較の実行
2人以上の人が同じボード上で作業している場合に、マージ解決比較を実行します。これを機能させるためには、すべてのデザイナーが同じリポジトリからボードのコピーをチェックアウトしている必要があります。また、各デザイナーは機能を設定して、他のデザイナーが何をしているのかを最大限に把握できるようにするべきです。
パネルのアクション領域がVersion Control Status:Merge requiredと報告している場合、マージ解決比較が必要です。これを行うには、ActionsリストのClick to show merge resolution viewコマンドを使用します。
マージ解決比較の差異が表示される方法
ハイライト |
説明 |
---|---|
あなたが加えた追加部分。 |
|
あなたが行った削除部分。 |
|
他の人が行った追加部分。 |
|
他の人が行った削除部分。 |
相違点の解決
相違点は、参照文書で検出された差分を現在のボードにマージすることで解決されます。マージは、PCBエディタウィンドウまたはCollaborate、Compare and Mergeパネルで実行できます。The Automatically merge in non-conflicting changes from the head revisionコマンドは、Show Merge Resolution Viewするとパネルに表示されます。これにより、先頭(Difference Mapで緑のセルに示されている)で行われた競合しない修正がすべて作業中に取り込まれます。
パネルからマージするには、パネルのDifference Map内の変更されたセルを右クリックして、Add/Remove to match [ReferenceDocument]コマンドを表示します。このコマンドを選択すると、そのセルのプリミティブが参照文書と一致するように変更されます。参照文書の名前は角括弧内に表示されることに注意してください。複数のセルを同時にハイライトすることができます(Shift+クリックまたはドラッグ+クリックで複数選択)し、参照から現在のボードに持ち込む変更を多くても少なくても選択できます。
セルに保持したい変更と取り入れたい変更が含まれている場合、メインのPCBエディタで変更を選択的にマージすることができます。それを行うには、右クリックMergeメニューを使用します。
右クリックマージメニュー
メイン編集ウィンドウでの違いを解決するには、違いとしてマークされたオブジェクトを右クリックします。ポップアップコンテキストメニューにはMergeサブメニューが含まれており、そこにはクリックされたプリミティブに合わせたマージアクションが含まれているほか、セル内の変更の状態に応じたアクションも含まれています。
マークされたトラックを右クリックして、マージサブメニューからコマンドを選択します。
Mergeサブメニューで操作できるコマンドには3つの可能なレベルがあります:
-
Primitive - このアクションによって変更されるのは、右クリックした実際のトラックセグメント/ビア/コンポーネントのみです。
-
Route - クリックした接続に対して、異なるすべてのトラックセグメントがこのアクションによって変更されます。
-
Cell - この差異の一部であるセルを通過するすべてのトラックセグメントが、このアクションによって変更されます。
右クリックMergeサブメニューで利用可能なコマンドは、次のタイプのアクションをサポートしています:
-
Add - 参照文書に存在し、現在の文書にはないプリミティブをクリックすると表示されます。参照文書から現在の文書にプリミティブを追加しますが、プリミティブを削除することはありません。コンポーネントの追加アクションを実行すると、UniqueIDの競合を引き起こす既存のコンポーネントを削除しようとします。
-
Remove - 現在の文書に加えられた変更を削除するためにプリミティブを変更します。
-
Replace - プリミティブを追加および削除し、比較のために使用された参照文書と一致するように最終結果を調整します。
サポートされるオブジェクト
一部のオブジェクト/機能は、マージプロセスによってサポートされていません。サポートされている/されていないオブジェクトは以下の通りです。
サポートされている:
- トラック
- アーク
- 塗りつぶし
- ソリッドリージョン
- パッド
- ビア(ブラインドビア・バリードビアも含む)
- 寸法
- 座標
- コンポーネント
サポートされていない機能:
- ポリゴン + カットアウト + ボードカットアウト
- 埋め込みボードアレイ
- ルーム
- 原点
- グリッド
- フリー3Dボディ
- ガイド
- ルール
ライブコラボレーション
Altium DesignerのPCBコラボレーション機能の基盤は、バージョン管理システムとリポジトリです。VCSは、各デザイナーがチェックアウトしたリビジョンを追跡し、それがヘッドリビジョンと異なる場合にはそのことを記録します。
個々のデザイナーが、誰がボードに取り組んでいるのかを簡単に追跡できるようにするために、Altium DesignerのLive CollaborationおよびWork Regions機能も利用できます。
ライブコラボレーション機能は、現在同じボードに取り組んでいる他のデザイナーを詳細に示します。Difference Map領域のCollaborate, Compare and Mergeパネルには、現在同じボードファイルを開いている(それぞれのローカルコピー)各デザイナーのログイン名とコンピュータ名が詳細に記載されています。
ライブコラボレーション機能を使用するには、ワークスペースに接続している必要があります。
作業領域
各デザイナーはWork Regionsを定義できます - これは彼らがデザインスペースとして定義するエリアです。作業領域はメインワークスペースで定義され、デザインスペースでそれらを表示するにはパネルでClick to show work regions in the main editorオプションを有効にします。
作業領域を作成するには、パネルでManually mark an area as work regionコマンドをクリックし、カーソルを一つの角が位置する場所に置き、クリックして開始します。作業領域は多角形オブジェクトで、多角形の形状の各角を定義するためにクリックし、Shift+Spacebarで角のモードを切り替え、Spacebarで角の方向を切り替え、右クリックで形状を閉じて配置を終了します。