回路図とPCBの同期の保持
親ページ: 回路図とボードの間で作業する
初めて新しいPCBに設計を移行する場合でも、回路図またはPCB側の既存の設計を変更する場合でも、2つを同期させる何らかの方法が必要です。Altium Designerは、設計を同期させる問題に対する効果的な解決策を提供する設計同期機能を備えており、設計者が設計プロセスの創造的な側面に集中できるようにします。
設計の同期化は、回路図とPCBエディタ間で直接行われ、中間のネットリストのような文書は使用されません。ソフトウェアは比較エンジンを使用して設計のすべての側面を比較し、違いをリストとして出力し詳細にします。設計者はどちらの側を変更して違いを解決するかを決定し、一連のエンジニアリング変更命令(ECO)が作成されます。これらは適用され、設計の両側を再び同期させます。
同期できるものは何か?
同期プロセスは、回路図上のコンポーネントと接続データがPCB上のコンポーネントと接続データと一致することを保証します。コンポーネントと接続データだけでなく、同期プロセスはネットクラス、コンポーネントクラス、設計ルールなどの他の設計制約も同期されることを保証します。
比較オプションの設定
ダイアログページ: PCBプロジェクトのオプション、Comparatorタブ
回路図とPCBのどのデータが比較されるかは、Options for PCB ProjectダイアログのComparatorタブで設定されます。Project » Project Optionsを選択してダイアログを開きます。
ダイアログの下部には、Object Matching Criteriaを設定するためのオプションがあります。一致は、単純な完全一致の文字列マッチングに依存しない、複雑なマルチパスプロセスです。詳細については、後ほどこの記事のネットとクラスのマッチングのトピックを参照してください。
ダイアログの下部にあるIgnore Rules Defined in the PCB Onlyオプションに注意してください。これを有効にすると、PCBで定義したルールを比較プロセスから除外できます。
ネットとコンポーネントクラスの同期
ダイアログページ: PCBプロジェクトのオプション、 Class Generationタブ
コンポーネントと接続データだけでなく、Design » Update PCBを実行すると、クラスと設計ルールも生成および同期することができます。回路図から生成され、PCBに同期されるクラスには、次の2種類があります:
- 自動クラス - バス/ハーネス、コンポーネント、またはシートの内容から派生したもの;および
- ユーザー定義クラス - 設計者が配置した設計指示から派生したもの。
これらの生成は、Options for ProjectダイアログのClass Generationタブで設定されます(同期はComparatorタブのオプションによって制御されます)。
Class Generationタブのオプションを使用して、必要な自動生成クラスを設定し、設計同期中にユーザー定義クラスを作成するかどうかを選択します。
自動生成されるクラス
ネットクラス
以下のネットグループに対して、ネットクラスを自動生成することができます:
Named Signal Harnesses | シグナルハーネスは、複数のネットを回路図プロジェクト全体で束ねて接続するために使用されます。ハーネス内で運ばれるネットに名前を付けるためにハーネスが使用されることはありませんが、ハーネスにネットラベルが配置された場合を除きます。シグナルハーネスにネットラベルを配置すると、ネットの命名構文が変更され、個々のネットラベルがワイヤーに配置されるのではなく、 |
Buses / Bus Sections | 設計同期中に各バス(およびサブオプションが有効な場合は各バススライス)ごとにPCBネットクラスを作成するために、Generate Net Classes for Busesオプションを有効にします。これはプロジェクト全体に適用されるグローバルオプションです。 |
Components | このオプションは、設計内の各コンポーネントに対して、そのコンポーネントに接続されているすべてのネットを含むネットクラスを作成します。これはプロジェクト全体に適用されるグローバルオプションです。 |
Sheets | 選択した範囲に従って、各シート内のネットに対してネットクラスを生成します。ただし、Local Nets Onlyの範囲オプションは、シートに入るまたは出るネットを含まないことに注意してください。また、ネットは複数のPCBネットクラスに属することができるため、すべてのネットオプションは、シートをまたがるすべてのネットが複数のクラスに表示される結果となります。このオプションは各回路図シートに対して設定されます。 |
コンポーネントクラス
回路図プロジェクトが複数のシートにわたって構成され、各シートが全体設計の論理ブロックを表すのは一般的です。これをサポートするために、プロジェクト内の各回路図シートに対して、そのシート上の全コンポーネントを含むコンポーネントクラスを自動生成することができます。これは、適切なComponent Classチェックボックスを有効にすることで行います。PCBコンポーネントクラスは、その回路図シートを参照するシートシンボルの指定子と同じ名前になります。シートにコンポーネントが含まれていない場合、コンポーネントクラスは作成されません。
ルームの生成
ルームは、コンポーネント配置の補助となる多角形のオブジェクトであり、Generate Roomsチェックボックスが有効になっている各回路図シートに自動的に作成されます。PCBでは、各ルームはデザインルールとして定義され、InComponentClass('<SheetSymbolDesignator>')
のスコープで作成されます。シートにコンポーネントが含まれていない場合、ルームは作成されません。回路図が最初にPCBに転送されると、各コンポーネントクラス内のコンポーネントが一列に配置され、その後、以下に示すように、そのコンポーネントクラスの周りにルームが作成されます。
構造クラス
構造クラスには、ネットクラス、コンポーネントクラス、および下位階層の構造クラスがメンバーとして含まれます。このオプションが有効になっている各シートに対して構造クラスが作成され、そのシートに対して有効になっている場合は、シートレベルのコンポーネントおよびネットクラスも含まれます。PCBエディタで構造クラスを編集し、他のネット/コンポーネント/構造クラスを追加します。PCBパネルのStructureモードを使用して、その構造クラス内のコンポーネントとネットを探します。
ユーザー定義クラスの作成
関連するコンポーネントやネットにパラメータを添付することで、ユーザー定義のコンポーネントクラスやネットクラスも作成できます。適切なUser-Defined ClassesのチェックボックスがOptions for ProjectダイアログのClass Generationタブで有効になっている場合、PCBコンポーネントおよびネットクラスが作成されます。
ユーザー定義コンポーネントクラス
回路図で、回路図がPCBと同期されたときに、コンポーネントがPCBコンポーネントクラスに追加されるよう指定できます。
そのためには、コンポーネントにパラメータを追加し、Nameの文字列をClassName
に設定し、Valueの文字列を必要な<PCB_ComponentClassName>
に設定します。以下の例の画像に示されています。
ユーザー定義ネットクラス
オブジェクトページ: パラメータセット
ネット(またはバスやシグナルハーネス内のネット)をPCBネットクラスに追加するには、そのネット/バス/ハーネスにパラメータを添付する必要があります。これは、下の画像に示されているように、パラメータセットオブジェクトをネット/バス/ハーネスに触れるように配置することで行います。パラメータセットオブジェクトを配置(Place » Directives » Parameter Set)してから、手動でパラメータを追加することも、Place » Directives » Net Classコマンドを使用して事前に設定されたパラメータセットオブジェクトを配置することもできます。
パラメータにはNameがClassName
に設定され、パラメータのValueが必要な<PCB_NetClassName>
に設定されている必要があります。
ブランケットを使用して複数のネットにディレクティブを適用する
オブジェクトページ: ブランケット
PCBネットクラスに複数のネットを追加するには、それらのネットをすべてカバーするブランケットディレクティブを配置します。ブランケットの機能は、ブランケットの下にあるすべてのネット(ブランケットの下にあるネット識別子、例えばネットラベルや電源ポート、またはブランケット内に終端頂点を持つネットによって識別される)にディレクティブを適用することを可能にすることです。パラメータセットディレクティブをワイヤに触れるように配置する代わりに、下の画像に示されているように、ブランケットの端に触れるように配置します。パラメータセットオブジェクトの表示名ではなく、パラメータセットオブジェクト内のパラメータの値がPCBネットクラス名を定義することに注意してください。
設計ルールの同期
クラスと同様に、設計ルールも回路図でパラメータとして適用されます。コンポーネントやパラメータセットオブジェクトなど、パラメータを追加できる各オブジェクトには、Add as Ruleボタンがあります。
Add as Ruleボタンをクリックすると、NameがRule
に設定されたパラメータが追加されます。このパラメータ名を使用すると、Parameter PropertiesダイアログにEdit Rule Valuesボタンが含まれるようになります。このボタンをクリックして、Choose the Design Rule Typeダイアログを開きます。必要な設計ルールを選択した後、最後のステップは、Edit PCB Ruleダイアログでルールの制約を定義することです。
上記の画像と下記の画像の両方で、デザインルールはブランケットに添付されたパラメータセットオブジェクトで定義されています。そのパラメータセットオブジェクトにClassNameパラメータを含めることで、PCBネットクラスも作成され、クラス定義が存在するため、PCBルールはInNetClass('
<PCB_NetClassName
>')
の範囲で指定されます。
以下の画像で、パラメータセットオブジェクトが差動ペアディレクティブとして表示されています。これもパラメータセットオブジェクトで、この場合はNameがDifferentialPair
で、ValueがTrue
のパラメータを持っています。ソフトウェアがこのパラメータを持つパラメータセットオブジェクトを見ると、それを差動ペアディレクティブと認識し、デフォルトのパラメータセットオブジェクトではなく、差動ペアシンボルとして表示します。Place » Directives » Differential Pairコマンドを使用すると、このパラメータが既に定義されている状態で、事前に設定された差動ペアディレクティブを配置することができます。
上に示された例では、パラメータセットオブジェクトに3つのパラメータがあり、それらは以下の方法でブランケットの下のすべてのネットに適用されます:
パラメータ名 | パラメータ値 | パラメータ機能 |
---|---|---|
ClassName | ROCKET_IO_LINES | ROCKET_IO_LINES という名前のPCBネットクラスを作成し、そのネットクラスメンバーはブランケットの下で検出されたすべてのネットになります。 |
DifferentialPair | True | 適切に名付けられたネットのペア(ネット名が一致し、_P および _N で終わる)ごとにPCB差動ペアを作成します。画像のネットの場合、8つのPCB差動ペアが作成されます。ブランケットを使用していない場合、ペアに含めたい各ネットに差動ペアディレクティブを配置する必要があります。 |
Rule | 差動ペアルーティング [ルール詳細] | このパラメータセットオブジェクトに存在するClassNameパラメータによって作成されたPCBネットクラスにスコープされたPCB差動ペアルーティングルールを作成します。 |
ECO生成オプションの設定
プロジェクトのオプションダイアログには、ECO Generationタブも含まれています。このタブでは、どの設計変更にECOを作成できるかを定義します。通常、これらはすべて有効にされており、コンパレータタブのオプションを使用して、回路図とPCB間で同期される設計変更を設定します。
差異の検出
設計同期機能は、回路図からPCBへ、またはPCBから回路図への両方向で、差異を検出し解決することができます。
このソフトウェアは、両方の側に変更を適用することで、これらの違いを解決することができます。例えば、電子設計者がキャパシタの値を変更した一方で、PCB設計者がその同じキャパシタのフットプリントを変更したシナリオを想像してみてください。これら2つの違いは、コメント変更を回路図からPCBへの更新として適用し、フットプリント変更をPCBから回路図への更新として適用することで、単一の更新プロセスで解決できます。
比較エンジンが回路図プロジェクトとPCBを比較すると、完全な違いのリストが作成されます。この段階では、それらを再び同期させるためにどちらの側を変更する必要があるかについての仮定はありません。
差異のリストはDifferences betweenダイアログで見ることができます。Differences betweenダイアログを開いて違いのリストを見るには:
-
Project » Show Differencesコマンドを実行して、下の画像に示されているようにChoose Documents to Compareダイアログを開きます。Choose Documents to Compareダイアログは、比較する2つのドキュメント/ドキュメントセットを選択するために使用されます。通常、回路図プロジェクトとPCBを比較することが多いです。このダイアログを使用して、Advanced Modeオプションにチェックを入れることで、任意のドキュメントと任意のドキュメントを比較することもできます。例えば、ネットリストとPCB、またはPCBとPCBを比較する場合などです。
-
ダイアログのメイン部分でPCBを選択し、OKをクリックして、以下に示すようなDifference betweenダイアログを開きます。
Differences betweenダイアログが開きます。次のステップでは、各差異に更新方向を割り当てます:
-
個々の差異については、Update列をクリックして方向セレクターを表示します。下の画像のように表示されます。
-
同じ種類の複数の差異については、異なるフットプリントなどの見出しを右クリックし、必要なUpdate Same Kindコマンドを選択します。
-
すべての差異については、ダイアログ内の任意の場所を右クリックし、必要なUpdate Allコマンドを選択します。
更新の方向が割り当てられたら、Create Engineering Change Orderボタンをクリックして、以下に説明されているEngineering Change Orderダイアログを開きます。
ダイレクトアップデートの実行
通常、デザイナーはどのように更新を適用したいかを知っており、それらの更新がすべて同じ方向にあるため、先に説明された差異検出と方向割り当てプロセスをスキップすることを選択できます。
ProjectメニューからShow Differencesコマンドを選択するのではなく、回路図エディタまたはPCBエディタのいずれかからDesignメニューのUpdateコマンドを選択します。コマンドを実行するエディタを選択することで、変更を加えたい方向を指示します - このエディタからそのエディタへ。例えば、回路図からPCBへ全ての変更を反映させたい場合は、回路図エディタでDesign » Updateを選択します。
Differences betweenダイアログはスキップされ、代わりに直接Engineering Change Orderダイアログに進みます。
差異の解決 - ECOの適用
ダイアログページ: エンジニアリング変更指令
各差異は、エンジニアリング変更指令(略してECO)を適用することで解決されます。ECOは、Engineering Change Orderダイアログに1行に1つのECOとしてリストされ、それぞれにEnableチェックボックスがあります。
エンジニアリング変更指令ダイアログを使用する際:
-
ダイアログはすべての変更が有効になった状態で開きます。今は実行したくない変更を無効にしてください。ダイアログは複数選択をサポートしており、右クリックのコンテキストメニューを使用して選択したECOの有効状態を切り替えることができます。
-
右クリックのCross Probeコマンドを使用して、そのECOによって影響を受けるオブジェクトを調査してください。
-
Validate Changesボタンを使用して、変更を実行できるかどうかを確認してください。ECOが失敗する典型的な理由は、オブジェクトが利用できないことです。例えば、指定されたPCBフットプリントが利用可能なライブラリに存在しない、または指定されたパッドがフットプリント上に存在しない場合です。
-
ECOが失敗する別の理由として、あるECOに必要なオブジェクトが存在しなかったが、現在のECOの処理中にちょうど追加された場合があります。この状況では、そのECOを完了するために再度更新コマンドを実行してください。
回路図とPCBの間のリンクについての理解
コンポーネントのリンク
各回路図コンポーネントは、ユニーク識別子(UID)を通じてそのPCBコンポーネントにリンクされています。回路図エディターでは、コンポーネントがシート上に配置されたときにUIDが割り当てられ、その値は設計がPCBエディターに転送されるときにPCBコンポーネントに転送されます。この方式は単純な設計には適していますが、同じ回路図コンポーネントが各物理チャネルで繰り返される多チャネル設計をサポートするには不十分です(これは、繰り返されるPCBコンポーネントが同じUIDで終わることを意味します)。
これに対応するために、PCBコンポーネントのUIDは、親シートシンボルのUIDと回路図コンポーネントのUIDを組み合わせて作成され、以下の構文で示されます(下の画像に示されています):
PcbUID = \SheetSymbolUID\ComponentUID
コンポーネントリンクが切れた場合
同期中にコンポーネントのUIDが一致しない場合、下記のようにFailed to Matchダイアログが表示されます。もしYesをクリックすると、ソフトウェアはUIDが一致しないすべてのコンポーネントを、代わりにデザイネータで一致させようと試みます。もしNoをクリックすると、更新プロセスは終了します。デザイネータでの一致に危険はありませんが、UIDが再び一致するまで、Design » Updateコマンドを実行するたびに指定子で一致させるかどうか尋ねられます。
UIDを再び一致させるには:
-
Noをクリックして更新プロセスを終了し、PCBをアクティブなドキュメントにします。
-
Project » Component Linksコマンドを選択して、以下に示すようなEdit Componentダイアログを開きます。このダイアログでは、UIDの同期が管理されます。左側の2つの狭い列には、一致していない回路図とPCBのコンポーネントが表示され、右側には一致したコンポーネントが表示されます。
-
ダイアログの中央にあるコントロールを使用して、選択したコンポーネントを個別に一致させることができます。または、ダイアログの下部にあるAdd Pairs Matched Byボタン(および関連するチェックボックス)を使用して、一致していないすべてのコンポーネントを自動的に一致させることができます。コンポーネントが既に一致する指定子を持っていることがわかっている場合は、このボタンを使用してください。その結果、一致していなかったすべてのコンポーネントについて、PCBのUIDが回路図のUIDと一致するように更新されます。
-
UIDが再び一致したら、回路図に戻ってDesign » Updateコマンドを再度実行します。
ネットとクラスの照合
ネットとクラスには親(そのネットまたはクラス)と子(そのネットまたはクラスのメンバー)があります。これらをマッチングするには、コンポーネントのリンクに使用されるUIDメカニズムとは異なるアプローチが必要です。これは、親、子、または親とその子の両方に変更がある場合に対応するためです。例えば、回路図上のネットの名前を変更するという単純なことでさえ、そのネットとすべての子をPCBから削除し、新しく名前を変更したネットを追加し、最後にすべての子をその新しいネットに追加する必要はありません。
これをサポートするために、ソフトウェアには、メンバーによるネットとクラスのマッチングアルゴリズムと、名前によるマッチングアルゴリズムが含まれています。マッチングプロセスは、Options for ProjectダイアログのComparatorタブのObject Matching Criteriaセクションで設定されます。
これらのタイプのオブジェクトに対するマッチングは、以下の方法で処理されます:
-
設計同期中、デフォルトの動作は、Min Match % と Min Match Member の設定に従って、まずメンバーによる照合を試みることです。
-
メンバー照合に失敗した場合、ソフトウェアは次に名前による照合を試みます(Use Name Matching オプションが有効になっている場合)。
-
これらの照合プロセスのいずれかが成功すると、エンジニアリング変更命令ダイアログに進みます。
-
両方の照合技術が失敗した場合(またはUse Name Matchingオプションが
Never
に設定されている場合)、Match Manuallyダイアログが開きます。
-
Match ManuallyダイアログでNoをクリックすると、ユーザーマッチングプロセスをスキップしてEngineering Change Orderダイアログに直接進みます。未マッチオブジェクトに対してマッチングを試みていないため、ソフトウェアは参照オブジェクトとターゲットオブジェクトが関連していないと仮定し、Unmatched Reference Objectsをボードから削除し、Unmatached Target Objectsを新しいオブジェクトとして追加するECOを生成します。
-
ダイアログでYesをクリックして手動でマッチングすると、以下に示すようにMatch <ObjectType>ダイアログが開きます(ダイアログのキャプションは未マッチオブジェクトのタイプに応じて変更されます)。
-
このダイアログでは、Unmatched Reference ObjectsとUnmatched Target Objectsで一致させたいオブジェクトを選択し、それらをダイアログのMatched Pairsセクションに移動します。これらのオブジェクトについて、ソフトウェアは名前を更新して今後一致させるためのECOを生成し、メンバーを削除/追加するECOも生成して一致させます。
-
オブジェクトを手動で一致させる必要はありません。例えば、不確かな場合でも。一致しないオブジェクトについては、ソフトウェアは参照オブジェクトと対象オブジェクトが関連していないと仮定し、Unmatched Reference Objectsをボードから削除し、Unmatched Target Objectsを新しいオブジェクトとして追加するECOを生成します。
-
一致すると分かっているオブジェクトを一致させたら、ContinueをクリックしてEngineering Change Orderダイアログを開きます。
-
Cancelをクリックすると、更新プロセスが終了します。
設計ルールのマッチング
回路図で定義された設計ルールは、PCB上の対応するルールにリンクされなければなりません。リンクメカニズムがなければ、回路図上でルールを更新しても、それらの変更をPCBに反映させることができません。回路図からPCBへのルールマッチングは、コンポーネントマッチングと同様に、一対一です。このため、UIDを使用して回路図の設計ルールをPCBの設計ルールにリンクすることもできます。
UIDは、回路図上でルール定義を保持するパラメータに割り当てられ、設計同期中にPCBに転送されます。
設計ルールは、回路図の設計ルール定義とPCBの設計ルールを一致させるためにUIDを使用します。
通常、回路図またはPCBのいずれかでUIDを編集した場合を除き、ルールの一致を手動で管理する必要はありません。UIDが一致しない場合、ソフトウェアは一致するPCBルールがない回路図ルールに対して新しいルールをPCBに追加し、一致する回路図設計ルールがないPCB設計ルールを削除します。