mcpField
M
matlab-design-pcb-txline

matlab-design-pcb-txline

github.com/matlabその他1.2k43 回インストール1 日前に更新
リポジトリ

matlab-design-pcb-txline について

RF PCB Toolbox で PCB 伝送線路を設計・解析する MATLAB スキルです。インピーダンス制御や結合構造を扱うエンジニア向けに、各種線路、差動ペア、SIW、クロストーク、2D 断面解析をカバーします。

主な機能

  1. 01マイクロストリップ、ストリップライン、CPW の設計
  2. 02結合線路と差動線路の解析
  3. 03NEXT/FEXT クロストークのモデリング
  4. 04SIW 伝送線路のモデリング
  5. 052D 断面の RLGC 抽出

活用シーン

  1. 01目標インピーダンスに合わせた線路寸法の設計
  2. 02差動ペアの結合解析
  3. 03アグレッサ線からの NEXT/FEXT 推定
  4. 04均一な PCB 断面の RLGC パラメーター抽出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-pcb-txline

インストール後、Claude Code で/matlab-design-pcb-txlineを入力して読み込まれたか確認します。

同梱ファイルmanifest.yamlreferences/custom-bends-and-traces.md

詳細

伝送線路の設計

使用する場面

  • インピーダンス制御を目的として、マイクロストリップ、ストリップライン、または CPW 伝送線路を設計する場合
  • NEXT/FEXT クロストーク解析のために、アグレッサー配線の有無を問わず差動ペアをモデル化する場合
  • 高速な単位長あたり RLGC 抽出のために、2D 断面を解析する場合
  • SIW(基板集積導波路)線路を作成する場合
  • 指定した周波数で目標インピーダンスとなるように、design() を使って線路の寸法を自動設定する場合

使用しない場面

  • 形状からカスタム PCB 構造を構築する場合 — matlab-assemble-pcb-layout を使用します
  • 基板または導体の材料を設定する場合 — matlab-manage-pcb-material を使用します
  • 設計後に S パラメーターまたは電界解析を実行する場合 — matlab-analyze-em を使用します
  • 伝送線路を他のコンポーネントとカスケード接続する場合 — matlab-integrate-pcb-circuit を使用します

ツール選択の優先順位

  1. RF PCB Toolbox(デフォルト):microstripLine、pcb2D、stripLine、coplanarWaveguide など

    • 2D 電界ソルバー — 損失、結合、任意のスタックアップに対して高精度です
    • RLGC、インピーダンス、断面、または伝送線路の設計タスクにはすべてこれを使用します
  2. RF Toolbox(代替手段のみ):txlineMicrostrip、txlineStripline、txlineCPW

    • 解析的な閉形式近似で、精度は低くなります
    • 次の場合にのみ使用します:ユーザーがこれらの関数を明示的に指定した場合、または RF PCB Toolbox を利用できないと述べた場合

一般的なワークフロー

  1. 事前: matlab-manage-pcb-material — 基板と導体を設定します
  2. このスキル: 伝送線路を設計・解析します
  3. メッシュ/メモリを確認: memoryEstimate(obj, fc, 'RetainMesh', true) — 求解前に自動メッシュを確認します
  4. 事後: matlab-analyze-em — S パラメーターを検証 → matlab-optimize-pcb-design — 調整 → matlab-integrate-pcb-circuit — カスケード接続

クイックリファレンス

オブジェクトトポロジー主なプロパティ
microstripLineグランド上の単一マイクロストリップLength、Width、Height、GroundPlaneWidth
stripLine誘電体に埋め込まれた信号線Length、Width、Height、GroundPlaneWidth
coplanarWaveguide基板上の CPWLength、Width、Height、SlotWidth、GroundPlaneWidth
coupledMicrostripLineエッジ結合マイクロストリップペアLength、Width、Spacing、Height
coupledStripLineエッジ結合ストリップラインペアLength、Width、Spacing、Height
microstripLineCustomカスタムの結合/差動マイクロストリップTraceType、TraceWidth、TraceSpacing、アグレッサー配線
stripLineCustomカスタムの結合/差動ストリップラインTraceType、TraceWidth、TraceSpacing
pcbBendCustomカスタムの曲げ不連続部(R2025a)BendShape、Height、GroundPlaneWidth
pcb2D2D 断面解析BoardWidth、BoardCenter、Layers
SIWLine基板集積導波路Length、Width、ViaSpacing、ViaDiameter

マイクロストリップ線路

基本的な作成と設計
ms = microstripLine;
show(ms);

% Design for target impedance at frequency
ms = design(microstripLine, 3e9);
Z0 = getZ0(ms);
プロパティ
ms = microstripLine;
ms.Length = 20e-3;
ms.Width = 5e-3;
ms.Height = 1.6e-3;            % Substrate height
ms.GroundPlaneWidth = 30e-3;
ms.Substrate = dielectric("FR4");
ms.Conductor = metal("Copper");
解析
ms.Conductor = metal("Copper");       % Required for rlgc (finite conductivity)
Z0 = getZ0(ms);                       % Characteristic impedance (no frequency argument)
td = propagationDelay(ms, 3e9);       % Propagation delay (scalar frequency)
params = rlgc(ms, 3e9);              % RLGC per unit length (scalar frequency)

freq = linspace(1e9, 6e9, 51);
sp = sparameters(ms, freq, 'SweepOption', 'interp');  % S-parameters (frequency vector OK)
rfplot(sp);
逆マイクロストリップ/懸架マイクロストリップ

多層基板(エアギャップ)を使って、逆または懸架構成をモデル化します。

% Inverted: air below trace, substrate above ground
ms = microstripLine;
ms.Substrate = dielectric(Name={"Air","FR4"}, EpsilonR=[1 4.4], ...
    LossTangent=[0 0.02], Thickness=[0.5e-3 1.6e-3]);
ms.Height = 0.5e-3 + 1.6e-3;

% Suspended: air / substrate / air
ms.Substrate = dielectric(Name={"Air","FR4","Air"}, EpsilonR=[1 4.4 1], ...
    LossTangent=[0 0.02 0], Thickness=[0.3e-3 0.8e-3 0.3e-3]);
ms.Height = sum([0.3e-3 0.8e-3 0.3e-3]);

ストリップライン

ストリップラインでは、信号配線が2つのグランドプレーンの間に埋め込まれます。

対称ストリップライン
sl = stripLine;
sl.Length = 20e-3;
sl.Width = 3e-3;
sl.Height = 3.2e-3;            % Total dielectric height (top + bottom)
sl.GroundPlaneWidth = 30e-3;
sl.Substrate = dielectric("Teflon");
sl.Conductor = metal("Copper");
show(sl);
非対称ストリップライン

上下で厚さの異なる多層誘電体を使用します。Height は信号より下側にある層の累積厚さです(全体の厚さではなく、層の境界を表します)。

sl = stripLine;
sl.Substrate = dielectric(Name={"FR4","FR4"}, EpsilonR=[4.4 4.4], ...
    LossTangent=[0.02 0.02], Thickness=[0.8e-3 1.6e-3]);
sl.Height = 0.8e-3;    % Signal at the boundary between the two layers
懸架ストリップライン
sl = stripLine;
sl.Substrate = dielectric(Name={"Air","FR4","Air"}, ...
    EpsilonR=[1 4.4 1], LossTangent=[0 0.02 0], ...
    Thickness=[0.5e-3 0.8e-3 0.5e-3]);
sl.Height = 0.5e-3;    % Signal at Air/FR4 boundary (0.5mm from ground)
sl = design(stripLine, 3e9);  % Or design for 50-ohm at target freq

コプレーナ導波路

基本的な CPW
cpw = coplanarWaveguide;
cpw.Length = 20e-3;
cpw.Width = 2e-3;          % Center conductor width
cpw.SlotWidth = 0.5e-3;    % Gap between center and ground
cpw.Height = 1.6e-3;
cpw.GroundPlaneWidth = 10e-3;
show(cpw);
設計と解析
cpw = design(coplanarWaveguide, 5e9);
Z0 = getZ0(cpw);
sp = sparameters(cpw, linspace(1e9, 10e9, 51), 'SweepOption', 'interp');
rfplot(sp);

結合伝送線路

エッジ結合マイクロストリップ
cms = coupledMicrostripLine;
cms.Length = 20e-3;
cms.Width = 2e-3;
cms.Spacing = 0.5e-3;      % Gap between traces
cms.Height = 1.6e-3;
cms.Substrate = dielectric("FR4");
show(cms);
偶/奇モードインピーダンス
freq = 3e9;
Zeven = getZEven(cms, freq);   % Even-mode impedance
Zodd = getZOdd(cms, freq);     % Odd-mode impedance
Zdiff = 2 * Zodd;             % Differential impedance
エッジ結合ストリップライン
csl = coupledStripLine;
csl.Length = 20e-3;
csl.Width = 2e-3;
csl.Spacing = 0.3e-3;
csl.Height = 3.2e-3;
csl.Substrate = dielectric("Teflon");
多層結合線路
cms = coupledMicrostripLine;
sub = dielectric("FR4", "Teflon");
sub.Thickness = [1.0e-3 0.5e-3];       % Set Thickness BEFORE assigning to component
cms.Substrate = sub;
cms.Height = 1.5e-3;

カスタム伝送線路とクロストーク解析

microstripLineCustom と stripLineCustom は、NEXT/FEXT クロストーク解析向けに、オプションのアグレッサー配線を備えた差動ペアをモデル化します。

プロパティ(microstripLineCustom。stripLineCustomも同じインターフェイスで、デフォルトはテフロン、グラウンドプレーン間に配置されます)
プロパティデフォルト説明
TraceType'Single''Single'または'Differential'('Single-ended'ではありません)
TraceLength0.05トレースの長さ(m)
TraceWidth0.002信号トレースの幅(m)
TraceSpacing0.002差動ペアのトレース間隔(m)
Height0.0016基板の高さ(m)
GroundPlaneWidth(読み取り専用)グラウンドプレーンの幅 — 自動計算され、設定できません
LeftCoupledTraceGap0左側のアグレッサートレースとの間隔(m)。0 = 左側にアグレッサーなし
RightCoupledTraceGap0右側のアグレッサートレースとの間隔(m)。0 = 右側にアグレッサーなし
SubstrateFR4誘電体オブジェクト
ConductorPEC金属オブジェクト
差動マイクロストリップ
ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005);
show(ms_diff);
アグレッサートレースを含む差動線
ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, ...
    RightCoupledTraceGap=[0.003, 0.003], ...
    LeftCoupledTraceGap=0);
show(ms_diff);
NEXT/FEXTの抽出

アグレッサートレースがある場合、Sパラメータ行列は6ポートになります。ポートの対応は次のとおりです。

ポートトレース
1, 2差動ペア(近端、遠端)
3, 4左側のアグレッサー(近端 = NEXT、遠端 = FEXT)
5, 6右側のアグレッサー(近端 = NEXT、遠端 = FEXT)
ms = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, ...
    LeftCoupledTraceGap=0.003, RightCoupledTraceGap=0.003);
ms.Conductor = metal("Copper");

freq = linspace(0.1e9, 10e9, 101);
sp = sparameters(ms, freq, 'SweepOption', 'interp');

% Extract crosstalk from S-parameters
S31_dB = 20*log10(abs(squeeze(sp.Parameters(3,1,:))));  % Left NEXT
S41_dB = 20*log10(abs(squeeze(sp.Parameters(4,1,:))));  % Left FEXT
S51_dB = 20*log10(abs(squeeze(sp.Parameters(5,1,:))));  % Right NEXT
S61_dB = 20*log10(abs(squeeze(sp.Parameters(6,1,:))));  % Right FEXT
RLGC結合行列

結合線/差動線の場合、rlgcはN×N行列を返します(対角外の要素 = 相互L/C)。

ms = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, RightCoupledTraceGap=0.003);
ms.Conductor = metal("Copper");
params = rlgc(ms, 5e9);

カスタムベンドとトレース(R2025a)

pcbBendCustomとpcbTraceCustomは、ベンドの不連続部とインピーダンス段差をモデル化します。プロパティと例については、references/custom-bends-and-traces.mdを参照してください。

SIW伝送線路

基板集積導波路(SIW)は、ビアフェンスを使用してPCB内に導波路を形成します。

siw = SIWLine;
siw.Length = 15.3e-3;
siw.Width = 7.4e-3;
siw.ViaSpacing = [1.2e-3 5e-3];   % [along-length, across-width]
siw.ViaDiameter = 0.51e-3;
siw.Height = 0.254e-3;
siw.Substrate = dielectric(Name="RO4003C", EpsilonR=3.38, LossTangent=0.0027, Thickness=0.254e-3);
siw.Conductor = metal("Copper");
show(siw);

sp = sparameters(siw, linspace(20e9, 40e9, 51), 'SweepOption', 'interp');
rfplot(sp);

SIWには、マイクロストリップからSIWへの変換部に使用するFeedLineプロパティ(traceTaperedオブジェクト)があります。

2D断面解析

pcb2D

単位長さあたりの解析を高速に行うための2D断面モデルを作成します。均一な伝送線路の特性評価では、完全な3Dのsparametersよりはるかに高速です。

p = pcb2D;
p = pcb2D(Name=Value);

主なプロパティ:

  • Name — 断面のわかりやすい名前
  • BoardWidth — 基板全体の幅(m)
  • BoardCenter — 基板断面の中心位置
  • Layers — 積層構造を定義するtrace2Dオブジェクトとdielectricオブジェクトのセル配列

メソッド: show(p)、sparameters(p, freq)、rlgc(p, scalarFreq)、propagationDelay(p, scalarFreq)

trace2D

pcb2DオブジェクトのLayersセル配列内で使用するトレース断面を表します。

t = trace2D;
t.Type = 'Signal';                                  % 'Signal' (default) or 'Ground'
t.Shape = shape.Rectangle(Length=0.3e-3, Width=35e-6);  % Length=trace width, Width=trace thickness
t.Conductor = metal("Copper");

主なプロパティ: Type('Signal'/'Ground')、Shape(shape.Rectangle — Length = トレース幅、Width = 金属の厚さ)、Conductor、TrapezoidalEtchAngle

2Dモデルの構築 — 単一トレース
sub = dielectric("FR4");
sub.Thickness = 0.2e-3;

sig = trace2D;
sig.Type = 'Signal';
sig.Shape = shape.Rectangle(Length=0.3e-3, Width=35e-6);
sig.Conductor = metal("Copper");

gnd = trace2D;
gnd.Type = 'Ground';
gnd.Shape = shape.Rectangle(Length=5e-3, Width=35e-6);

p = pcb2D(BoardWidth=5e-3, Layers={sig, sub, gnd});
show(p);
params = rlgc(p, 10e9);
fprintf('L = %.2f nH/m, C = %.2f pF/m\n', params.L*1e9, params.C*1e12);
2Dモデルの構築 — 差動ペア(結合トレース)

同じ金属層上の複数のトレースは、別々のセルではなく、trace2D配列[sig1, sig2]として渡す必要があります。

sub = dielectric("FR4");
sub.Thickness = 0.2e-3;

sig1 = trace2D;
sig1.Type = 'Signal';
sig1.Shape = shape.Rectangle(Length=0.15e-3, Width=35e-6);
sig1.Shape.Center = [-0.2e-3 0];
sig1.Conductor = metal("Copper");

sig2 = trace2D;
sig2.Type = 'Signal';
sig2.Shape = shape.Rectangle(Length=0.15e-3, Width=35e-6);
sig2.Shape.Center = [0.2e-3 0];
sig2.Conductor = metal("Copper");

gnd = trace2D;
gnd.Type = 'Ground';
gnd.Shape = shape.Rectangle(Length=5e-3, Width=35e-6);

p = pcb2D(BoardWidth=5e-3, Layers={[sig1, sig2], sub, gnd});
show(p);
params = rlgc(p, 10e9);  % Returns 2x2 L and C matrices for coupled pair
pcb2Dと3Dの使い分け
シナリオ方法
均一な断面のインピーダンス/RLGCpcb2D — 数ミリ秒
不連続部(ベンド、段差、スタブ)3Dのsparameters — 数分
差動ペアの結合[sig1, sig2]配列を使ったpcb2D
3Dコンポーネントの2Dスライス

sliceはpcbComponentから2D断面を抽出します(カタログオブジェクトは先に変換してください)。

cms = design(coupledMicrostripLine, 3e9);
cms.Conductor = metal("Copper");
pcb2d = slice(pcbComponent(cms));
params = rlgc(pcb2d, 3e9);

インピーダンス目標を指定したdesign()

design関数は、目標周波数(およびオプションでインピーダンス)に合わせて伝送線路の寸法を決定します。

ms = design(microstripLine, 3e9);           % Default 50-ohm at 3 GHz
sl = design(stripLine, 5e9);                % Default 50-ohm at 5 GHz
cpw = design(coplanarWaveguide, 10e9);      % Default 50-ohm at 10 GHz

designの実行後、getZ0で検証します。

Z0 = getZ0(ms);   % Should be ~50 ohm

transmissionLineDesignerアプリ

伝送線路を設計・解析するためのインタラクティブなアプリです。

transmissionLineDesigner

線路タイプを選択し、寸法や材料をインタラクティブに設定して、インピーダンス/Sパラメータ/RLGCを解析し、設計をワークスペースにエクスポートできます。

設計の調整

問題調整項目方向
Z0 が高すぎる幅広げる
Z0 が低すぎる幅狭める
損失が大きすぎる導体の厚さ増やす
電気長が正しくない長さ調整する

注意点

  1. S パラメーターには補間スイープを使用する:常に sparameters(obj, freq, 'SweepOption', 'interp') を使用してください。直接スイープは大幅に時間がかかります。

  2. 解析前にメッシュ密度を確認する:sparameters() の前に memoryEstimate(obj, fc, 'RetainMesh', true) を実行してください。密度が高すぎる場合は、mesh(obj, 'MaxEdgeLength', lambda/6) で粗くします。matlab-analyze-em を参照してください。

  3. Height の意味はトポロジによって異なる:マイクロストリップの場合、Height = 誘電体の厚さです。多層基板を使用するストリップラインの場合、Height は層の累積境界と一致する必要があります。これは信号が層構成のどこに配置されるかを定義します。

  4. 幅でインピーダンスを制御する:トレース幅を広げると、インピーダンスは低くなります。design() で自動的に寸法を設定し、必要に応じて手動で調整してください。

  5. 導体の既定値は PEC:metal("Copper") を割り当てないと、損失はゼロになります。現実的な挿入損失を得るには、必ず Conductor を設定してください。

  6. 反転型/懸架型マイクロストリップの Height の規則:反転型マイクロストリップでは、Name={"Substrate","Air"} を指定して多層誘電体を作成し、Height に空気層の厚さを設定します。懸架型マイクロストリップでは、Height = 空気層と基板の厚さの合計です。

  7. 多層ストリップラインの Height は全体の厚さではなく層境界:Height は Thickness ベクトルの累積層境界と一致する必要があります。Height に全体の厚さを設定すると、「Expected Height must be among the substrate layers.」というエラーが発生します。

  8. SIW のカットオフ:SIW には、信号が伝搬しないカットオフ周波数があります。カットオフ周波数を十分に上回る周波数で動作するように幅を設定してください。

  9. getZ0 に周波数は不要:getZ0(obj) は特性インピーダンスを直接返します。周波数引数を渡さないでください。

  10. rlgc には有限の導電率が必要:rlgc の呼び出し前に metal("Copper") を割り当ててください。既定の PEC では、「Conductivity value must be finite with 2D field solver.」というエラーが発生します。

  11. 多層の Name にはセル配列を使用する:Name=["Air","FR4"](文字列配列)ではなく、Name={"Air","FR4"}(セル配列)を使用してください。

  12. trace2D では Width/Thickness ではなく Shape を使用する:t.Shape = shape.Rectangle(Length=traceWidth, Width=metalThickness) を設定します。注:shape.Rectangle.Length = トレース幅、.Width = 金属の厚さです。pcb2D には、少なくとも 1 つの 'Ground' 型トレースが必要です。

  13. pcb2D の rlgc にはスカラー周波数を渡す:rlgc(p, freq) で必要なのはベクトルではなくスカラーです。ループするか、対象の周波数で 1 回呼び出してください。

  14. pcb2D の trace2D.Center は x 位置のみを指定する:trace2D.Shape.Center は水平方向の位置を制御します。垂直方向の位置は層の積層順序によって決まります。Center = [x_offset 0] を設定してください。

  15. 同じ層のトレースには個別のセルではなく配列を使用する:同じ金属層上の結合トレース/差動トレースには、Layers={[sig1, sig2], sub, gnd} を使用してください。個別のセル {sig1, sig2, sub, gnd} は異なる金属層として扱われ、エラー「dielectric layer must be between metal layers.」が発生します。

  16. クロストークのポート数はアグレッサーの構成によって決まる:両方のアグレッサーを使用すると 6 ポート、片方のみでは 4 ポート、どちらも使用しない場合は 2 ポートです。RightCoupledTraceGap=Inf を指定すると、そのアグレッサーはなくなります。

  17. TraceGap は中心間距離ではなく端間距離:トレースの中心ではなく、最も近い端同士の間隔を測定します。

  18. Width ではなく TraceWidth を使用する:microstripLineCustom と stripLineCustom では TraceWidth を使用します。Width を設定しても、何の効果もなく無視されます。

関連スキル

  • matlab-manage-pcb-material — 基板と導体の設定
  • matlab-analyze-em — S パラメーターの抽出と電界解析
  • matlab-integrate-pcb-circuit — Touchstone のエクスポート、回路のカスケード接続
  • matlab-assemble-pcb-layout — カスタムトレース形状

Copyright 2026 The MathWorks, Inc.

コメント