EagleのPIN Directionの挙動

PIN Directionとは?

Eagleでライブラリを作成するときに、Symbol(電気回路図の部品)を作成します。
その時に部品のシンボル形状や端子の数などを設定する必要があります。
そのなかで、部品の端子の負う機能を設定する項目がDirection(方向)です。
f:id:woodenCaliper:20181116222629j:plain


これには以下の9つの中から選ぶことができます。

Direction 意味
nc not connected 放熱用PAD
in input ICの入力
out output ICの出力
io in/output マイコンのGPIO
oc open collector or open drain ICのオープンコレクタ出力
pwr power input pin ICの電源入力
pas passive 抵抗・キャパシタ
hiz high impedance 3ステートバッファ
sup general supply pin GNDシンボル

公式の説明はここです。 EAGLE Help PIN

このDirectionを設定する主な理由は、ERCにて不適切な接続の検出を行うためです。
例えば、ICの出力ピンと別のICの出力ピンが接続されている場合、ERCではその接続に対しERRORを吐いてくれます。

しかし、ここでの設定はERRORの有無を発生させるだけにとどまりません。
SupとPwrは独特な挙動を行うため、下手に設定すると電気回路図の見た目と反した接続が生まれてしまう可能性を持ちます。

Supは配線に同じ名前を付ける

Supを設定する場合は注意が必要です。
これだけは他と違う特徴的な動作をするからです。下手に設定してしまうと、電気回路が見かけと違う動作をしてしまう恐れがあります。

このSupの特徴は、NAMEが何個置いても固定であることと、フットプリントが必要ないということです。
最初に載せた表に書きましたが、これを使用する相手は、GNDやVCCなど実体を持たないシンボルに使用することが想定されています(たぶん)。
以下なような形状のものです。

f:id:woodenCaliper:20190524054523p:plain:w300

電気回路図において、このようなシンボルが接続された配線同士は接続されていることを示します。
配線があっちこっちに交差するのを防ぎ、可読性を上げるために使われます。

これを再現するためにEagleでは、Supの属性を持たせたPINに接続した配線は、NAMEが上書きされるという機能を持たせています。

例を示します。

f:id:woodenCaliper:20181113224801p:plainf:id:woodenCaliper:20181113224807p:plainf:id:woodenCaliper:20181113224810p:plain
  1. (左図)
    なにも接続していなければ、自動的に適当な配線名(N$1,N$3)が割り当てられています。

  2. (中央図)
    左の配線にGNDシンボルを接続することによって、配線のNAMEが変更され、N$1→GNDに変更されます。

  3. (右図)
    右もGNDシンボルに接続することによって、配線のNAMEがN$3→GNDに変更され、さらにはboardで同じGNDを接続した部分が、電気的に繋がっている様子が分かります。

EagleではNAMEで配線を管理しているので、同じNAMEになってしまえば、それは電気的に接続されているということになります。


これを電子部品のピンに適用してしまった場合を考えてみます。 例えば抵抗のピンをSupに設定するとします(普通はやりませんが)。NAMEは適当にSUP_AとSUP_Bにしときます。
この抵抗を2つ置いたときに問題は発生します。

f:id:woodenCaliper:20181116224504p:plain

回路図で接続しているわけでもないのに、boardでは繋がっていることになります。
それもそのはず、Supに設定したピンに接続した配線は、SupのピンのNAMEと同じに上書きされてしまうからです。

f:id:woodenCaliper:20181113231401p:plain

この例では抵抗を使ったのであからさまにおかしいのですが、例えば電池は供給源なので+とーに1.5Vと0Vという名前を付け、Supの設定にするとします。
電池は供給源なので、設定してもそこまで不思議ではありません。
しかし、このときも抵抗と全く同じ動作をするので、2つ以上の電池を置くと配線していないにも関わらず、並列接続されているとみなされてしまいます。
電池を2つ置くことは直列にしたい場合など、状況はありふれていると思います。

このような挙動はSchematic上では気が付きにくいと思うので、Supを使用するときは注意が必要です。
Supを設定するものは、フットプリントが存在しないシンボルのみに使用するべきだと個人的には思います。



余談ですが、電源供給するピン(例えばDCDCの出力)にSupを使用しないとすると、いったい何に設定すればいいのかという問題が発生します。outにすると、Supとの相性が悪いので、不便です(outとsupを繋ぐとERCでERRORになる)。
良い方法があれば教えてください。

似たような議論はされているようですね↓ https://www.element14.com/community/thread/39009/l/correct-use-of-sup-direction-pins?displayFullThread=true

Pwrは無接続の状態で既に名前がついている

Pwrは電源の入力ピンに使用します。
しかし他のピンと少し違う動作をするので、その動きを知っておく必要があります。
それは、Schematicsで配線をする前からboardでのピンに名前が付いているということです。
下記の図で説明します。

123
左から右の順

前提としてSchematics(上)のシンボルのDirectionは左がIO、右はPwrにしています。
ライブラリを作るときにつけたPwrピンの名前は5VというNAMEにしています。

  1. (左図)
    IOから少し配線を引き出して名前を見てみると、N$1という名前が付いていることが分かります。
    この状態ではもちろんboardにて2つが接続されていたりはしません。

  2. (中央図)
    次にこの配線の名前を強制的に5V、つまりPwrピンのライブラリを作ったときの名前と同じにします。
    するとboardで双方が接続されました。 Pwrにはなんの配線もしていないにも関わらずです。

  3. (右図)
    次にSchematicsにてPwrから配線を少し引き出してみました。
    この配線の名前を見てみると、N$1という名前になっており、boardでの2つの接続は切れています。


ここからここから分かることは、

  •  SchematicsにてPwrに設定しているピンは配線を接続していない状態でも、boardでは配線の名前が既に付けられている。
    そのときの名前はライブラリで付けたPINの名前がそのまま適用される。
  •  SchematicsにてPwrのピンを配線すると、適当な名前が割り当てられる。
    それと同時にboardにて、配線の名前がSchematicsの配線の名前に変更される。
Schematicsの配線状況 boardでの配線のNAME
未配線 ライブラリにてピンに設定したNAME
配線を接続した 自動で割り当てられたNAME


ということになります。
このような動きをする理由として、電源入力の配線を省略して、電気回路図を簡潔にすることができるからです。
たとえば、ロジックICなどをいくつも使用するとき、いちいち電源の配線を接続しなくても自動的にすべてのICを電気的に接続してくれるわけです。

しかし、見たままの電気回路図と実際の配線が一致しなくなってしまう場合があるので注意が必要です。
接続したつもりはないのに、たまたまどこかで使用している配線の名前と、ライブラリで設定したPwrピンの名前が一致してしまうと、電気的に接続されていることになります。
ライブラリの製作者と回路の製作者は一致していないことは多々あるので、意図しない配線になってしまうことが起こりえます。

電源が一つしかない場合なら大きな問題にはなりませんが、今どきの回路は複数の電源電圧が混在しているはずなので、VCCという名前では意図しない接続を生んでしまうのではと考えます。