ガーバー(Gerber)ファイルから寸法情報を得る方法

How to identify measurements and drilled hole locations, from Gerber files for PCB design.

あるお客様から、回路基板製造用のガーバー(Gerber)ファイルデータの見方についてお問い合わせがありました。多くの皆様に役立つ情報だと思いますので、以下に簡単にまとめておきます。(私自身の備忘録でもあったりします。) 残念ながら私は、回路設計 CAD の専門家でも基板設計のプロでもありませんので、厳密には間違っていたり、理解に不十分な点もあると思いますが、御容赦ください。

基板設計者でない人のためのガーバー入門

Arduino マイコンや Raspberry Pi に関わらず、電子回路は(多くの場合、緑色の)プリント基板(PCB)という形で製造されています。こんなヤツですね。

この PCB を設計するには電子回路設計用の CAD ソフトを利用しますが、最終的に基板を工場で製造するときには、多くの場合、ガーバー(Gerber)ファイルという形式で製造依頼をすることになります。

ガーバーファイルは大抵複数のファイルで構成され、それぞれ次のようなレイヤのレイアウト情報、穴の位置情報をテキスト形式で表現しています。

  • 銅箔のレイアウト
  • シルク印刷(基板表面に印刷されている白い文字やマーク、記号)
  • レジスト(多くは緑色の半透明塗料で、余計な部分にハンダが付かないように保護している)のレイアウト
  • 基板に空いているの穴の位置(ドリル情報)
  • ドリルのサイズ(ドリルビットの径)

つまり、ガーバーファイルがあれば、基板上の取り付け穴、基板の外形、コネクタの位置等が正確に分かる訳です。回路基板の寸法図面がなくても心配無用です。(ただし、ガーバーには 3次元情報は含まれませんので、部品の高さなどは分かりません。あくまでも部品実装前の基板情報なので、当然ですね。)

この基板製品を例にしましょう

ここでは、私がよく触っていた Texas Instruments 社の C6678 EVM という DSP 評価ボードを例にします。この製品は、Advantech 社というところが製造しており、同社のサイトでガーバーファイルが提供されています。

この製品にはいくつかバージョンがありますが、現在流通しているのは Rev 3.0 だと思いますので、Support & Download Rev 3.0 というタブを開きます。そして、EVM Gerber (Gerber layout package) という行にあるファイル TMDSEVM6678Lx_EVM_REV_3_0_GBR.zip をダウンロードします。

このファイルを展開すると、次のようなファイルが出てきます。

  • 19C2830103-CAD.rar
  • 19C2830103-CD.RPT
  • 19C2830103-DXF.rar
  • 19C2830103-GBR.pdf
  • 19C2830103-GBR.rar
  • 19C2830103-IMP.xls
  • 19C2830103-REF.rar

なんかややこしいことになりましたが、本当のガーバーファイルは、この 19C2830103-GBR.rar というファイルに圧縮されています。rar というアプリで展開できますが、もし、コマンドラインの 7z というツールを持っていれば、それでも展開できます。

ちなみに、19C2830103-GBR.pdf というファイルは、このガーバーファイルを PDF 形式に変換したものですが、PDF は基板製造装置にかけるためのファイルではなく、あくまでも人間が閲覧したり、プリンタで印刷するものですので、寸法情報を読み取るには、あまり向いていません。(Adobe Reader を使えば、だいたいの寸法値は読み取れますが。)

さて、19C2830103-GBR.rar を展開しましょう。できれば、新しい別のディレクトリに展開したほうが分かりやすいです。すると、次のようなファイルが出てきます。

  • 1-12-npCam.drl
  • 1-12Cam.drl
  • 19C2830103-JOB.ipc
  • DRILL.art
  • DSPM-8301E-A1041-1222.rou
  • L10.art
  • L11_GND.art
  • L12_BOTTOM.art
  • L1_TOP.art
  • L2_GND.art
  • L3.art
  • L4_PWR.art
  • L5.art
  • L6_PWR.art
  • L7_GND.art
  • L8.art
  • L9_GND.art
  • MSKB.art
  • MSKT.art
  • OUTLINE.art
  • PADB.art
  • PADT.art
  • SILKB.art
  • SILKT.art
  • art_param.txt
  • nc_param.txt

いろいろなファイルがありますが、ファイルの拡張子には厳密なルール(規格)がないようで、ある程度類推が必要です。ここでは、おそらく次のような分類になっていると思われます。ちなみに全てテキスト形式ですので、御興味があれば手持ちのテキストエディタ(NotePad など)で覗いてみるのも良いでしょう。

  • drl ファイル: ドリルファイル。基板への穴あけ位置の情報が含まれています
  • art ファイル: アートワークファイル(という意味でしょうか)。基板上の銅箔パターンやシルク印刷のベクトル情報が含まれています

ガーバービューアソフトでファイルを開く

さて。さすがにこのファイルをテキストエディタで覗いていても、穴あけの位置情報を脳内でイメージするのは無理ですので、ガーバービューアと呼ばれるソフトを探してきましょう。

(私は買ったことがないので分かりませんが)、商用の基板設計 CAD ソフトを購入すると、ガーバービューアが付いてくるのかも知れません。しかし CAD ソフトは非常に高価なものが多いので、ここでは無償のガーバービューアソフトを使います。私がいままで使ってきて、よくできていると思われるのが、以下のソフトです。他のソフトですと、ガーバーファイルを読み込んだときにクラッシュ(異常終了)してしまうものもありますが、このソフトは「比較的」安定しており、信頼できます。また、Windows、Mac OS、Linux など多くの環境で利用できるのも利点です。

なお、Windows 版(2.6.0版)はこちらからダウンロードできます。Mac OS の場合は、Homebrew でインストールできるようです。

インストールしたら、早速ガーバーファイルを開いてみましょう。Homebrew でインストールした場合は、コマンドラインから実行します。コマンド名は gerbv です。こんなウィンドウが開きます。

つづいてファイルを読み込ます。メニューの File → Open layer(s)… を選びます。ガーバーファイル群があるディレクトリを探し、そこにあるファイルを(とりあえず全て)選んで「開く」ボタンを押します。

たくさんのメッセージが表示されますが、内容を解釈できないファイルがあるという意味のようなので、とりあえず無視します。そして、タブ「Layers」をクリックして選択します。

多くのレイヤは正しく開けてますが、いくつか、サイズが間違って取り込まれているものがあります。各レイヤの横にあるチェックボックスを押していくと分かるのですが、次の 3つのレイヤがおかしいようです。

  • 1-12-npCam.drl
  • 1-12Cam.drl
  • DSPM-8301E-A1041-1222.rou

これを理解するには少し経験が必要なのですが、どうも実際のサイズの 10倍で表示されています。nc_param.txt というファイルを覗いてみると、DECIMAL-PLACES 5 という記述があります。

まず、上記レイヤのうち 1-12-npCam.drl を右クリックで選び、Edit file format をクリックします。次のようなダイアログが表示されますので、autodetect のチェックを外し、4 digits という部分を 5 digits に変更します。

同じように、残りの 2つ(サイズ表示がおかしいもの)についても変更します。

そうしたら、全てのレイヤのチェックボックスにチェックを入れ、View → フィットさせる、というメニューを選びます。そして、次のように、概ね図面全体が画面にフィットするようになったら、おそらく問題ないはずです。もし個別のレイヤを選んだとき、何かがおかしい場合は上記 Edit file format を確認してみてください。

少し下準備

それでは、実際に基板上の寸法を調べる方法を紹介しましょう。

まず最初に注意しなくてはいけないのは、寸法の単位です。デフォルトでは mil になっていますが、mm(ミリメートル)あるいは in(インチ)に変更できます。ちなみに、mil というのはインチ派生の単位で、1000 mil = 1 in です。最近流行りの、工作用ブレッドボードの穴の間隔が 100 mil = 0.1 in です。昔からある、ゲジゲジ IC(DIP: Dual In-line Package)のピン間隔も 100 mil です。こんなやつですね。

とりあえず、単位は mm にしておきましょう。この状態でマウスカーソルを動かすと、画面下部に (X, Y) 形式で座標が表示されます。

しかし、目測でカーソルを合わせるのは無理がありますし、正確に測れません。どうしたら良いでしょうか。

まず最初に、基板のアウトライン(外形)で座標原点を決めておきましょう、、、と言いたいところですが、画面にはたくさんのレイヤがあり、重なっているのでちょっと見づらいですね。また、寸法を調べる際に、銅箔レイヤ等の情報は不要ですので、興味ないレイヤを見えなくしておきます。そのためには、レイヤ名左にあるチェックボックスからチェックを外します。まずは、以下のレイヤだけ見えれば十分でしょう。表示レイヤを減らすと、操作が軽くなり、サクサクと閲覧できるという利点もあります。

  • 1-12-npCam.drl
  • 1-12Cam.drl
  • OUTLINE.art

ちなみに、DRILL.art というファイルには貴重な情報が含まれていますので、一度見ておくことをお勧めします。これには、各ドリルのサイズ情報が「人が読める形で」記述されています。実は、gerbv のメニューから Analyze → Analyze visible drill layers というメニューでダイアログを開き、Drills used というタブを開くと、ガーバーファイルに含まれる情報が表示されるのですが、併せて確認しておくと良いでしょう。(おそらく、DRILL.art 上に目に見える形で含まれるデータは、このような機械形式のデータを「表」形式に変換したものだと思います。)

なお、DRILL.art を一緒に見る場合は、レイヤの表示順番を変更し、DRILL.art を一番上に持ってきたほうが分かりやすいでしょう。例えば、ドリルタイプに K というものがありますが、これはどうも、DSP(一番大きな IC)のヒートシンク(放熱器)と冷却ファンを固定するためのネジ穴のようですが、そのドリル径が 125 mil(3.175 mm)であることが分かります。

実際に寸法を測ってみよう

さて、まずはアウトラインの原点を決めておきましょう。本当は、任意の座標を原点に設定できる機能があれば良いですが、ちょっと分かりませんでした。

今回は、基板左下のこちらを原点としましょう。

なお、線に幅があって不安に思う方は、Rendering を Fast から Normal に変更すると、線が細くなります。実際には、レンダリングによって座標が異なることはないと思いますので、たぶんどちらも大丈夫です。

そうしたら、レイヤで OUTLINE.art を選択します。レイヤが表示されていても、「選択」されていないとダメです。そうしたら、メニューから Tools → Pointer Tool を選択し、基板のコーナーを囲むようにマウスでドラッグします。(少し操作に慣れが必要です。)

こんなふうに、線が白色になるはずです。

このようになったら、まず、Layers タブに代えて Messages タブを開きます。そして(ここが分かりにくいのですが)メニューから Edit → Display properties of selected object(s) を選択します。Mac OS の場合は Alt + Enter でも良いようです。(たぶん OS によってショートカットキーが違う。)

すると、次のような表示が得られるはずです。

つまり、上記の白い線は…、(あれ?  単位を mm にしたはずなのに in(インチ)で表示されてますね。残念) (X= 0.23781, Y = 0.20733) から (X = 0.23781, Y = 0.04198) の間に引かれているということが分かります。この場合、後者が白線の下端に相当しますね。これをメモしておきます。

続いて、目的のドリル穴を探しましょう。今回は、DSP ヒートシンクの左下穴の座標を測ることにしましょう。今度は、まずはレイヤで 1-12Cam.drl を「選択」します。そして、Pointer Tool を使って穴をドラッグして囲みます。穴が白く変わるはずです。そしたら、再度 Edit → Display properties of selected object(s) を選ぶと、次のような表示が得られるはずです。

Object type: Flashed aperture
Aperture used: D20
Aperture type: CIRCLE
Location: (3.91828, 0.85336)
Layer name: <unnamed layer>
Net label: <unlabeled net>
In file: 1-12Cam.drl
---------------------------------------

穴の中心座標は、(X = 3.91828, Y = 0.85336) だということが分かりました。

結局、先ほどの基板左下のエッジ(?)からの相対位置は、(X = +93.48 mm, Y = +20.60 mm)だということが分かります。(1インチは 25.4 mm です。)

まとめ

いかがでしょうか。ガーバーファイルの活用方法をお分かり頂けましたでしょうか。ガーバーファイルをテキストエディタで覗くと、様々な情報が含まれていて、これをもっと詳しく理解できたら、と思う方もあると思います。Wikipedia などを見ると詳しい情報が見つかりますし、また、Python 言語などでガーバーファイルを扱うライブラリなどもあるようです。興味ある方がありましたら、ぜひガーバーファイルをもっと詳しく覗いてみてください。

今日はここまで。