前回の連載ではG-Formatを使って基板の部品配置まで行いました。今回はG-Formatを使って配線パターンを定義して基板を完成させます。今回までの内容で、単純なパターンの基板レイアウトをG-Formatで記述できるようになります。
復習のためXtalk検証用基板のレイアウト図を下に示します。前回は基板の定義と部品の配置までを行いました。
下にG-Format の構成を示します。今回は .netattr 以降を説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
.version x y z .unit [inch | mm] .scale value .material .......... .end [material] .layer .......... .end [layer] .shape .......... .end [shape] .board_geom .......... .end [board_geom] .padstack .......... .end [padstack] .part .......... .end [part] .component .......... .end [component] .netattr .......... .end [netattr] .netlist .......... .end [netlist] .via .......... .end [via] .bondwire .......... .end [bondwire] .route .......... .end [route] |
.netattr セクション
.netlist セクションではネットに対する属性を定義しますが、ほとんど 使用されないため説明は省きます。 .netlist セクションは未定義でも問題ありません。
.netlist セクション
.netlist セクションでネットを定義します。 本稿の例ではL1層に6本の配線を、L2層にグランドを配置していますが、 .netlist セクションの記述は以下のようになります。 では、この記述を元にネットの定義方法を説明して行きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
.netlist "GND" G 0 { } "NA1" S 0 { XA1 P1 B { 25.08 50.18 1 } XA2 P1 B { 74.92 50.18 1 } } "NA2" S 0 { XA1 P2 B { 25.08 49.82 1 } XA2 P2 B { 74.92 49.82 1 } } "NB1" S 0 { XB1 P1 B { -24.92 0.18 1 } XB2 P1 B { 74.92 0.18 1 } } "NB2" S 0 { XB1 P2 B { -24.92 -0.18 1 } XB2 P2 B { 74.92 -0.18 1 } } "NC1" S 0 { XC1 P1 B { -74.92 -49.82 1 } XC2 P1 B { 74.92 -49.82 1 } } "NC2" S 0 { XC1 P2 B { -74.92 -50.18 1 } XC2 P2 B { 74.92 -50.18 1 } } .end netlist |
ネットは以下の形式で定義します。
netName
ネット名です。ダブルクォート(")で名前を囲みます。
netType
ネットタイプです。以下のいずれかを設定します。
-
- S : 信号
- P : 電源
- G : グランド
attributeID
.netlist セクションで定義したネット属性の参照番号を記載します。 ネット属性を参照しない場合は0を記載します。
それでは、あらためて本事例でのネットの定義を見てみます。 ブレイス({})内の記述は省略しています。
この例では、 GND, NA1, NA2, NB1, NB2, NC1, NC2 の6個のネットを定義しています。ネットタイプは GND がグランド(G)、 その他は信号(S)となっています。
ブレイス({})内には、そのネットに接続する端子の情報を記載します。 例えばネット NA1 の例を見てみましょう。このネットには2つの端子が 接続しています。
端子接続の定義は以下の形式で定義します。
compName pinName ioType { x y signalLayerNumber }
compName
.component セクションで定義されたコンポーネントのインスタス名です。
pinName
compName で参照されたコンポーネントが参照する部品の端子名です。 端子は .part セクションで定義されています。
ioType
端子のタイプです。以下のいずれかを設定します。 ここに記載する端子タイプは、 pinName で参照する端子のタイプと同一の値を記載してください。
-
- D : 出力端子 (Driver pin)
- R : 入力端子 (Receiver pin)
- B : 双方向端子 (Bidirectional pin)
再度 ネット NA1 の端子定義を見てみます(ブレイス内の記述は省略しています)。
XA1 P1 はコンポーネント XA1 の P1 端子を表しています。 続く XA2 P1 はコンポーネント XA2 の P1 端子を表します。XA1 と XA2 は、下記のように .component セクションに定義されていました。 双方のコンポーネントが参照している部品は U1 です。 P1 は、 .part セクションに定義されている部品 U1 の端子名となります。
部品 U1 の定義は以下のようになっていました。端子 P1 の 端子タイプは、 B (双方向)となってます。従って、 .netlist セクションの端子定義でも端子タイプは B と記述しています。
引き続き端子定義のブレイス内の記述を見ていきます。
ブレイス内の記法は以下のようになっています。
{ x y signalLayerNumber }
x y
端子位置のxy座標です。 端子 XA1 P1 の 座標は 25.08 50.18 となっています。
signalLayerNumber
端子が配置されている層の層番号です。 コンポーネント XA1 はL1層に配置されているので端子もL1層に配置されています。 従って層番号は 1 となります。
ここで端子 XA1 P1 の座標が(25.08, 50.18)になっているか確認してみましょう。 コンポーネント XA1 が参照している部品 U1 の定義は以下のようになっています。
端子 P1 の座標は 0 0.18 となっていますから下図のようになります。
またコンポーネント XA1 の定義は以下のようになっています。
XA1 U1 25.08 50 1 0
部品 U1 を座標(25.08, 50)に配置すると端子 P1 の座標は
(0, 0.18) + (25.08, 50) = (25.08, 50.18)
となります。
では改めてネット NA1 の定義を見てみます。
ネット NA1 は、 座標(25.08, 50.18)でL1層に配置されている端子 XA1 P1 と、 座標(74.92, 50.18)でL1層に配置されている端子 XA2 P1 に接続し、そのネットタイプは 信号(S) です。
最後にグランドの定義を確認して .netlist セクションの説明を終わります。 グランドの定義は以下のようになっています。
ブレイス内には何も記述がありません。これは、このネットに接続する端子が 無いことを意味しています。
ここでネットを定義する際に接続する端子の座標を記載することに疑問を感じた方も 多いと思います。 この座標はコンポーネントの配置座標から算出できるものです。 「EDA側で計算しろよ」と言いたくなる所です。 「G-Format裏話」で書いたように「そうなっていた」ので、 申し訳ありません、御容赦ください。
.via セクション
.via セクションではビアの形状を定義します。 今回の例ではビアは使いませんので説明は省略します。 別の機会に説明します。
.bondwire セクション
.bondwire セクションではボンディングワイヤの形状を定義します。 今回の例ではボンディングワイヤは使いませんので説明は省略します。 別の機会に説明します。
.route セクション
.route セクションは配線パターン(形)を定義します。 様々な形状の配線パターンを定義することができますが、XTalk検証用基板で使用してるPATHと矩形に絞って説明します。XTalk検証用基板で使っている3組の並走配線とべたグランドの配線パターンの記述は以下のようなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
.route "GND" { rectangle 2 200 200 0 0 } "NA1" { path 1 0.16 { 75 50.18 25 50.18 } } "NA2" { path 1 0.16 { 75 49.82 25 49.82 } } "NB1" { path 1 0.16 { 75 0.18 -25 0.18 } } "NB2" { path 1 0.16 { 75 -0.18 -25 -0.18 } } "NC1" { path 1 0.16 { 75 -49.82 -75 -49.82 } } "NC2" { path 1 0.16 { 75 -50.18 -75 -50.18 } } .end route |
配線は以下の記法で定義します。
netName
ネット名です。 .netlist セクションで定義されたネットを参照します。 ネット名はダブルクォート(")で囲って下さい
ブレイスの内に配線パターンを記述しますが、形状によって記法が異なります。 ここではグランドで使用している矩形と、信号配線で使用しているパスに 絞って説明します。
矩形パターン
矩形は以下の記法で定義します。
rectangle signalLayerNumber width height x y
rectangle
矩形パターンを表すキーワードです。
signalLayerNumber
配線パターンを配置する層の層番号です。
width height
矩形の幅(width)と高さ(height)です。
x y
矩形の配置座標です。矩形中心を、この座標に配置します。
XTalk検証用の基板は裏面(L2層)を べたグランドとしています。グランドは矩形パターンで定義しています。
2 は、グランドバターンが配置されている層の層番号です。 本稿の例ではL2層(裏面)を意味しています。200 200 は、矩形の幅と高さです。200mm × 200mm の正方形となります。0 0 は、矩形の配置座標です。矩形の中心を (0, 0) に配置しています。
パス
本稿の例では信号線のパターンはパスで定義してます。 パスの記法を以下に示します。
path
パスを表すキーワードです。
signalLayerNumber
配線パターンを配置する層の層番号です。
width
パスの配線幅です。
x y
パスの頂点座標です。ブレイス内に必要な数の頂点座標を列挙します。
ネット NA1 の配線パターンは、以下のように定義されていました。
キーワード(path)に続く 1 は、この配線が引かれている層の層番号を表します。 NA1* の例ではL1層に配線が引かれていることを意味してます。0.16 は配線幅(0.16mm)を意味しています。ブレイス内はパスの頂点座標です。(75, 50.18) と (25, 50.18) となります。
XTalke検証用の基板の全容
以上でXTalke検証用の基板レイアウトを 表現するGFormatの解説を終わります。 最後にXTalk検証用のG-Formatの全体を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
.version 1 0 .unit mm .scale 1 .material D "AIR" 1 1 0 C "COPPER" 58000 D "FR4" 4.2 1 0.02 .end material .layer "L1" 0.05 S "COPPER" "AIR" "D1" 0.12 D "COPPER" "FR4" "L2" 0.05 S "COPPER" "FR4" .end layer .shape 1 circle 0.16 .end shape .board_geom polygon { -100 -100 100 -100 100 100 -100 100 } .end board_geom .padstack 1 { 1 1 0 } .end padstack .part U1 R -0.09 -0.28 0.09 0.28 0.1 { P1 0 0.18 B 1 P2 0 -0.18 B 1 } .end part .component XA1 U1 25.08 50 1 0 XA2 U1 74.92 50 1 0 XB1 U1 -24.92 0 1 0 XB2 U1 74.92 0 1 0 XC1 U1 -74.92 -50 1 0 XC2 U1 74.92 -50 1 0 .end component .netlist "GND" G 0 { } "NA1" S 0 { XA1 P1 B { 25.08 50.18 1 } XA2 P1 B { 74.92 50.18 1 } } "NA2" S 0 { XA1 P2 B { 25.08 49.82 1 } XA2 P2 B { 74.92 49.82 1 } } "NB1" S 0 { XB1 P1 B { -24.92 0.18 1 } XB2 P1 B { 74.92 0.18 1 } } "NB2" S 0 { XB1 P2 B { -24.92 -0.18 1 } XB2 P2 B { 74.92 -0.18 1 } } "NC1" S 0 { XC1 P1 B { -74.92 -49.82 1 } XC2 P1 B { 74.92 -49.82 1 } } "NC2" S 0 { XC1 P2 B { -74.92 -50.18 1 } XC2 P2 B { 74.92 -50.18 1 } } .end netlist .via .end via .bondwire .end bondwire .route "GND" { rectangle 2 200 200 0 0 } "NA1" { path 1 0.16 { 75 50.18 25 50.18 } } "NA2" { path 1 0.16 { 75 49.82 25 49.82 } } "NB1" { path 1 0.16 { 75 0.18 -25 0.18 } } "NB2" { path 1 0.16 { 75 -0.18 -25 -0.18 } } "NC1" { path 1 0.16 { 75 -49.82 -75 -49.82 } } "NC2" { path 1 0.16 { 75 -50.18 -75 -50.18 } } .end route |
今回はここまでとします。尚、ここで示した仕様がG-Fomratの全てではありません。より詳細な情報が必要な方は仕様書(IEEE 2401)をご覧いただくか、JEITA LPB-SCまでお問い合わせください。
次回はGEN Design Technologiesが提供してるLPBフォーマット交換サイトを利用して作成したG-Formatのレイアウトを表示したり、記述ミスをチェックする方法を説明します。