90度の角を曲がると電子は飛び出すのか — PCB の都市伝説を Python で確かめてみる

  • pcb
  • python
  • signalintegrity
  • 電子工作
  • fdtd

基板と PCB レイアウト

はじめに — 「90 度の角で電子が飛び出す」って本当ですか?

駆け出しの頃、先輩にこう言われました。

「PCB の配線は直角に曲げちゃダメだよ。急カーブを曲がり切れずに、電子が外に飛び出しちゃうから」

冗談半分なのは分かったのですが、続けてこう言われ、

「だから 45 度で面取りするか、丸く曲げるんだ。最近の高速基板ならなおさら」

なんとなくそういうものだと覚えました。以来ずっと 「90 度はダメ、45 度で曲げる」 をルールとして守ってきました。

ただ最近、PCB の本やネット記事を読み直していて、ふと立ち止まりました。本当にそうなんだろうか?

電子が「飛び出す」って物理的にどういう状態なんだろう。45 度で曲げると、本当に何か改善されているのか。世の中の解説を覗くと「実は迷信」派と「いや、差はある」派が混在していて、はっきりしません。

それなら自分で計算してみよう、というのが出発点です。Python で 200 行ほどの電磁界シミュレータを書いて、90 度・45 度・R 曲げの 3 種類を比べてみました。電気回路を勉強し始めた方、ソフトウェア出身で最近 PCB に触り始めた方が「ふんふん」と読めるくらいの密度を目指しています。

ソースコード一式はこちらで公開しています(MIT ライセンス)。

まずは「電子が飛び出す」って本当か

イラストにするとこんな感じです。先輩の口ぶりだと、こういう絵が頭の中にあったんだと思います。

飛び出す電子のイメージ

直角の角で、運動量を持った電子がコーナーを曲がり切れずに、銅の外へ放り出される。直感的にはわかりやすい絵です。クルマがカーブを曲がり切れずにガードレールを突き破る感じ。

ただ、これが本当に起きているなら、PCB は走らせるたびに焦げているはずなんですよね。実際にはそうはなっていません。

なので、まずは 電子が銅の中をどれくらいの速さで動いているのか をざっくり見積もってみます。

銅の中の電子はどれくらいの速さ?

教科書に載っている 電子のドリフト速度 という量があります。これは、電線に電圧をかけたときに電子が「平均的にどれくらいの速さで動いているか」を表す数値です。

ざっくり計算してみます。一般的なデジタル信号線を想定して、幅 0.1 mm × 厚さ 35 μm(PCB の 1 oz 銅箔の標準厚)の細いトレースに、信号電流として 10 mA を流すケースを考えます。

  • 銅の自由電子の密度: n8.5×1028n \approx 8.5 \times 10^{28} 個/m³
  • 電子 1 個の電荷: e1.6×1019e \approx 1.6 \times 10^{-19} C
  • 流したい電流: I=0.01I = 0.01 A(信号線らしい控えめな電流)
  • 配線の断面積: A=0.1 mm×0.035 mm=3.5×109A = 0.1 \text{ mm} \times 0.035 \text{ mm} = 3.5 \times 10^{-9}

ドリフト速度の式は

vd=IneAv_d = \frac{I}{n e A}

数値を入れると

vd0.018.5×1028×1.6×1019×3.5×1092×104 m/sv_d \approx \frac{0.01}{8.5 \times 10^{28} \times 1.6 \times 10^{-19} \times 3.5 \times 10^{-9}} \approx 2 \times 10^{-4} \text{ m/s}

…秒速 0.2 mm。人が歩く速さのおよそ 5 千分の 1 です(時速にすると 1 m にも届かないくらいの、のんびりした流れです)。

電子が銅線を歩く様子

イラスト上ではキャラクターっぽく描いていますが、実際の電子はそれくらい「のんびり」流れています。これが角で曲がり切れずに 遠心力で飛び出す ことはありません。

「えっ、じゃあなんで信号は光の速さで届くの?」と思った方は鋭いです。ここが今日のキモで、ひとことで言うと、

信号のエネルギーは、電子が端から端まで走って運ぶのではなく、導体の周りの誘電体(基板の樹脂や空気)中にできる電磁界として伝わっていきます。

電子は配線の中を「ところてん式」にゆっくり押し出されているだけ。その動きが境界条件として作る電界・磁界の波(電磁界)が、光速の 1/3 〜 2/3 くらいで配線に沿って進んでいきます。仕事をしているのは電子そのものより、銅の表面と GND プレーンとの間にある電磁界、と思うとスッキリします。

なので「90 度の角で電子が飛び出す」は、

  1. 電子はもともと飛ぶような速度では動いていない
  2. 信号のエネルギーを運んでいるのは電子の運動ではなく、導体まわりの電磁界

の二重で 物理的にはハズレ でした。先輩、冗談だったのは知ってます。

それでも「90 度は避けろ」と言われ続けるのはなぜ?

物理的に「電子が飛ぶ」のは違うとして、それでも世の中の PCB 設計ルールでは 「90 度はなるべく避けよう」 とよく言われます。理由として有名なのは次の二つです。

説 1: エッチング工程で薬液が溜まる(acid trap)

PCB の銅パターンは、銅箔をエッチング液で溶かして作ります。直角の 内側の角 には薬液が溜まりやすく、銅が想定より細く削られてしまう、という心配がある、という説です。

これが本当に問題だった時代もあったようなのですが、現代の写真現像式(フォトレジスト)の製造プロセスでは、現実的にはほぼ問題にならないと言われています。基板屋さんのデザインルールでもそこまで厳しく禁止されてはいません。

説 2: 角でインピーダンスが急に変化する(信号品質)

こちらが本命です。配線が直角に曲がる場所では、コーナーの対角線方向に銅が広がる分、その点だけ銅の面積が少し増えます。すると 対 GND 容量(寄生キャパシタンス)が局所的に増え、特性インピーダンスが下がる。これが角での反射を生む正体です。

反射した信号は元の信号に乗ってリンギング(ピーピーした波形の暴れ)になり、波形が汚れます。EMI の悪化にもつながります。

気になるのは 「実際にどれくらい影響があるのか」。教科書はインピーダンスが変わるとだけ言って、定量的な比較まで見せてくれる文献は多くありません。

では、ここからは実際に比べてみます。

Python で小さな電磁界シミュレータを書く

電磁波が PCB 上をどう走るかを計算する方法はいくつかありますが、今回は FDTD(Finite-Difference Time-Domain) という、教科書にも載っている素朴で分かりやすい手法を使います。

FDTD は「水面の波を真似する」と思うとよい

FDTD のイメージは、池の水面を細かい格子に切って、

  1. 各マス目の「波の高さ」と「水の動き」を覚えておく
  2. 1 ステップ進むときに、隣のマスの値から自分のマスを更新する
  3. それを何千回も繰り返す

という、いたって素朴なものです。電磁波の場合は「波の高さ」が 電界、「水の動き」が 磁界 に対応します。

数式で書くと Maxwell 方程式を差分化したもので、Yee 格子(電界と磁界を半セル・半ステップだけずらした位置と時刻に置いて、交互に更新する格子)を使うのですが、コードにすると本当に短くなります。

# Yee 格子 TM-z モードの 1 ステップ更新(src/fdtd.py より抜粋)
hx -= (dt / (mu0 * dy)) * (ez[:, 1:] - ez[:, :-1])
hy += (dt / (mu0 * dx)) * (ez[1:, :] - ez[:-1, :])

curl[1:-1, 1:-1] = (
    (hy[1:, 1:-1] - hy[:-1, 1:-1]) / dx
    - (hx[1:-1, 1:] - hx[1:-1, :-1]) / dy
)
ez[:] = damping * ez + (dt / (eps0 * denom)) * curl

本体はだいたいこれだけで、あとは

  • 配線(銅)を 完全電気導体(PEC: Perfect Electric Conductor) として扱い、そこでは電界をゼロに固定する(理想化された金属です)
  • グリッドの外側に 吸収境界(PML 風の損失層) を置いて、波が計算領域の壁に跳ね返って戻ってこないようにする
  • 適当な場所から ガウシアン形のパルス(時間方向にきれいな釣鐘型の波)を入力として打ち込む
  • 時間ステップは CFL 安定条件(格子と光速で決まる上限)を守る

を足してあげれば、それなりに動きます。リポジトリ全体でも 200 行ちょっとです。

念のために断っておくと、いま動かしているのは 2 次元の教育用シミュレータ です。本物の PCB は 3 次元で、裏側の GND プレーンに電流が戻っていく リターン経路 が信号品質の主役と言ってよいほど大事。今回はそれを 2 次元に縮退させた、いわば「上から見たコーナーの絵」を作っています。実基板の定量評価ではなく、形状の差を直感的に並べて見るための実験として読んでください。実機検証や 3D 解析は、連作の後半で触れる予定です。

比較する 3 つの形状

イラスト 1 枚で並べるとこんな感じです。

3 種類のコーナー比較イラスト

  • ① R 曲げ: 角を丸く曲げる。アナログ屋さんが好む形
  • ② 90 度配線: いちばん素朴。CAD のデフォルト
  • ③ 45 度配線: 角を 45 度で削った(面取りした)形。デジタル屋さんの定番

それぞれを同じ条件で FDTD に放り込んで、電界の強さを地図のように描いてみます。

色はあえて サーモグラフィー風 にしました。スミスチャートのような専門的なグラフは、初学者には記号の塊にしか見えないので。赤いところは電界が強い、黒いところは弱い だけ覚えておけば、絵を見て話ができます。

結果: 90 度 vs 45 度 vs R 曲げ

3 種類のコーナーに同じパルスを左から打ち込んで、伝わっていく電界の強さの最大値(言わば「光った跡」)を地図にしたのが下の図です。

FDTD 3 種類比較(サーモグラフィー風)

うっすらマゼンタ色に光って見える L 字が、配線(PEC)に挟まれた中を伝わっていった電磁界の跡です。正直に言って、3 種類の差はかなり微妙でした。実験前に私が想像していた「90 度ではコーナーで派手に乱反射して、45 度ならスッキリ流れる」みたいな絵には、ぜんぜんなりませんでした。

3 枚の図を細かく見比べると、90 度の角のあたりに 来た道を薄く逆走している痕跡(反射波)がうっすら写っているのが分かります。45 度や R 曲げでは、その「迷い」の跡がもう少しなめらかです。

…ですが、本当に「わずか」です。反射のサイズはパルス本体の十分の一以下で、波形にしてもおそらく数 % のリンギングが付くかどうか、というレベルでした(あくまで今回の格子・周波数・形状での話です)。

もちろん、今回は損失も実物のリターン経路も入れていない 2D モデルなので、一般化は慎重に。商用ツールでの本格的な SI 解析や実測の文献を読んでも、おおむね 「通常の細いデジタルトレースなら、コーナー形状の差はかなり小さい。ただし周波数・線幅・基板構造によっては見えてくる」 という、条件依存の結論が主流のようです。Doug Brooks 氏が 1990 年代に行った実測("90° Corners — The Final Turn" 系の記事)でも、現実的な周波数帯では差が測定不確かさに埋もれる、という報告が出されています。

詳しく追ってみたい方は、Signal Integrity Journal の整理記事が読みやすくおすすめです。

都市伝説、半分は本当で半分は迷信

ここまでの話を整理すると、「90 度配線は電子が飛び出す」という都市伝説は、

レイヤ 主張 実際は
都市伝説レベル 電子が遠心力で飛び出す 完全な誤り。電子は秒速 0.2 mm 程度のゆっくり流れ、しかも信号を運ぶのは電磁波
古典的な製造説 内角に薬液が溜まって悪さする(acid trap) 写真現像式が主流の現代では ほぼ無視できる
信号品質説 コーナーでインピーダンスが急変して反射する ちょっとだけ本当。ただし通常のデジタルトレースでは差は小さく、効くかどうかは周波数・線幅・基板構造次第

三段重ねで「ちょっと違う」。これが今回の私なりの結論です。

「90 度がダメ」というルールが完全な迷信かというと、そうとも言い切れない。コーナーで反射が起きるのは事実だし、超高速の信号(10 GHz 以上)や、何万カ所もコーナーがある密集基板では、塵も積もればで効いてくる場面もありそうです。

ただ、駆け出しの私が先輩から受け取った 「電子が飛び出すからダメ」 はやっぱり物理的には嘘で、それを聞いて毎回毎回 45 度で削っていたのは 「お作法」 の側面が大きかった、というのは正直に書いておきたいです。

じゃあなぜ「45 度推奨」は生き残ったのか

実害がほぼ無いのに、ルールとして根強く残っている。これは私の解釈ですが、いくつか理由がありそうです。

  1. 慣習の力: 業界で長く言われてきたルールは、コストがほぼゼロなら守っておくのが無難。45 度で曲げる手間は、CAD では数クリックで済む
  2. 見た目の品質感: 直角でゴツゴツした基板より、45 度で面取りされた基板のほうが「ちゃんと作った感」が出る。レビューする側の安心感もある
  3. 本当に効く別の理由とセット: 「リターン経路を切らない」「グラウンドプレーンを連続させる」など、本当に EMC に効くルールと 同じ袋に入って覚えられた。45 度を守る人は、たいていそっちもちゃんとやっている

つまり、45 度ルールは 単独では効果が薄いが、良い習慣セットの一部 として機能している、ということなのかなと感じます。これは現場のソフトウェアの「お作法」と似ていて、個々の理由は弱くてもセットで効くタイプのルールです。

おわりに

この記事は、PCB に踏み出し始めた頃の自分に向けて書いたつもりです。先輩の言葉を真に受けて、毎回 45 度で削りながら「本当にこれ意味あるのかな」とモヤモヤしていた私のような人に届いたら嬉しいです。

「ルールは守る、ただし理由は自分で確かめておく」というのは、ベテランの言葉や教科書の説明を借りて何かを学び直すときに、私が大事にしたい姿勢です。先輩の言葉も、本に書いてあったことも、Web で見つけた答えも、自分で 200 行のシミュレータを書いて動かしてみるとちょっと違って見える ことは、これからもありそうな気がします。

このシリーズ lab-pcb-physics では、これと同じスタンスで PCB の「先輩が言ってた話」をいくつか確かめていく予定です。次回以降の予定は次のとおりです。

  • 第 2 回: 高速信号を GND で囲むって本当に効くんですか? — クロストークと GND ガード、via 柵の効きを 2D FDTD で観察する
  • 第 3 回: インピーダンス整合の正体 — 反射波が走り回る様子を時間発展アニメで観察する

各回独立して読めるようにする予定です。よろしければ次もお付き合いください。

動かしたい方へ

リポジトリは MIT ライセンスです。

手元で再現するには、Python 3.11+ と numpy / matplotlib / Pillow があれば動きます。

git clone https://github.com/logicia32/lab-pcb-fdtd-corners
cd lab-pcb-fdtd-corners
pip install -e .       # または uv sync
python scripts/run_corners.py

ノート PC で 5 〜 10 分くらいで outputs/ 以下に画像と GIF が出てきます。グリッドサイズや格子幅を変えると挙動が変わるので、お好みで遊んでみてください。

繰り返しになりますが、このシミュレータは 2 次元・誘電体損失なし・教育用の簡易版 です。本格的な信号品質解析には商用ツール(Ansys SIwave、Keysight ADS など)や、オープンソースの 3D FDTD(openEMS)が必要になります。それでも、「まず手を動かして自分の目で見たい」という入口としては、200 行で済むこの粗さがちょうど良いんじゃないかなと思っています。

この記事は Zenn に初出したものを加筆・補足したものです ── Zenn の元記事を見る