matlab-design-pcb-passive について
インダクター、コンデンサー、共振器、バラン、移相器、ラジアルスタブなどの RF 受動部品を MATLAB で設計・解析するスキルです。PCB や RF 回路の設計者向けに、寸法設定からモデル評価、最適化までの手順を扱います。
主な機能
- 01スパイラルインダクターとインターデジタルコンデンサーの設計
- 02リングおよびスプリットリング共振器の作成
- 03結合線路バランと Marchand バランの設定
- 04Schiffman 移相器とラジアルスタブの設計
- 05インダクタンス、容量、S パラメーターの抽出
- 06部品寸法の最適化と回路への統合
活用シーン
- 01RF 回路向け受動部品の設計
- 02周波数依存の部品パラメーターの抽出
- 03ビヘイビアモデルによる S パラメーター評価
- 04寸法の最適化と回路部品の組み合わせ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-design-pcb-passiveインストール後、Claude Code で/matlab-design-pcb-passiveを入力して読み込まれたか確認します。
同梱ファイルmanifest.yamlreferences/resonators-detail.md
詳細
受動部品の設計
使用する場面
- RF 回路用のスパイラルインダクターやインターデジタルコンデンサーを設計する
- 受動部品のインダクタンス、キャパシタンス、または自己共振周波数を抽出する
- フィルタリングやメタマテリアル用途のリング共振器またはスプリットリング共振器を作成する
- 平衡・不平衡変換用の結合線路バランまたはMarchandバランを設計する
- Schiffman移相器またはラジアルスタブを構築する
使用しない場面
- 伝送線路(マイクロストリップ、ストリップライン、CPW)を設計する場合 —
matlab-design-pcb-transmission-lineを使用します - フィルター(バンドパス、ローパス、バンドストップ)を設計する場合 —
matlab-design-pcb-filterを使用します - カプラーやスプリッターを設計する場合 —
matlab-design-pcb-couplerを使用します - 基板材料を設定する場合 —
matlab-manage-pcb-materialを使用します - 設計後にEM解析を実行する場合 —
matlab-analyze-emを使用します
一般的なワークフロー
- 事前:
matlab-manage-pcb-material— 基板と導体を設定します - このスキル: 受動部品(インダクター、コンデンサー、バラン、共振器)を設計します
- メッシュ/メモリを確認:
memoryEstimate(obj, fc, 'RetainMesh', true)— フルソルブを実行する前に、自動メッシュの密度を確認します - 事後:
matlab-analyze-em— Sパラメーターを検証します →matlab-optimize-pcb-design— 寸法を調整します →matlab-integrate-pcb-circuit— 回路にカスケード接続します
クイックリファレンス
| タスク | コード |
|---|---|
| スパイラルインダクター | ind = spiralInductor |
| インターデジタルコンデンサー | cap = interdigitalCapacitor |
| インダクタンスの抽出 | L = inductance(ind, freq) |
| キャパシタンスの抽出 | C = capacitance(cap, freq, DeEmbed=true) |
| 動作モデルのSパラメーター | S = sparameters(obj, freq, Behavioral=true) |
| リング共振器 | r = design(resonatorRing, freq) |
| スプリットリング(カスタム) | r = resonatorSplitRingCustom |
| スプリットリング(正方形) | r = resonatorSplitRingSquare |
| 結合線路バラン | b = balunCoupledLine |
| Marchandバラン | b = balunMarchand |
| 移相器 | ps = design(phaseShifter, freq, PhaseShift=90) |
| ラジアルスタブ | stub = stubRadialShunt |
| 最適化 | optimize(obj, freq, ...) |
スパイラルインダクター
作成と設定
ind = spiralInductor;
ind.SpiralShape = 'Square'; % 'Square' | 'Circle' | 'Hexagon' | 'Octagon'
ind.InnerDiameter = 5e-4;
ind.Width = 2.5e-4;
ind.Spacing = 2.5e-4;
ind.NumTurns = 4;
ind.Height = 1.016e-3; % Must be a cumulative substrate layer boundary
ind.GroundPlaneLength = 5.6e-3;
ind.GroundPlaneWidth = 5.6e-3;
RFIC基板(シリコン/SiO2)
ind = spiralInductor;
ind.Substrate = dielectric('Name', {'Silicon','SiO2'}, ...
'EpsilonR', [11.9, 4.1], 'LossTangent', [0.005, 0], ...
'Thickness', [300e-6, 3e-6]);
ind.Height = 303e-6; % Signal trace at top of stack
スパイラル形状とQ値のトレードオフ
| 形状 | Q値 | 備考 |
|---|---|---|
'Circle' | 最高 | 電気的性能が最良です |
'Octagon' | 高 | 円形に近く、製造が容易です |
'Hexagon' | 中程度 | バランスの取れた選択肢です |
'Square' | 最低 | 製造が最も容易ですが、角で電流集中が生じます |
グラウンドプレーンとの距離による影響
Height を小さくすると、グラウンドとの容量結合が強まり、インダクタンス、Q値、自己共振周波数が低下します。PCBスタックアップによってHeightが制約される場合は、この点を考慮してください。
インダクタンスの抽出
L = inductance(ind, 600e6); % Scalar frequency → scalar (H)
L = inductance(ind, linspace(100e6, 1e9, 30)); % Vector → vector
自己共振周波数(SRF)
SRFでは、寄生容量がインダクタンスと共振し、インピーダンスがピークに達した後、インダクターはコンデンサーとして動作します。動作帯域がSRF/3からSRF/2より低くなるように設計してください。
freq = linspace(100e6, 10e9, 201);
L = inductance(ind, freq);
% Sign change: L > 0 (inductive) → L < 0 (capacitive) at SRF
可視化
show(ind)
current(ind, 600e6)
charge(ind, 600e6)
[E, H] = EHfields(ind, 4e9, [0; 0; 1]);
インターデジタルコンデンサー
作成と設定
cap = interdigitalCapacitor;
cap.NumFingers = 4;
cap.FingerLength = 0.0137;
cap.FingerWidth = 3.16e-4;
cap.FingerSpacing = 3e-4;
cap.FingerEdgeGap = 3.41e-4;
cap.TerminalStripWidth = 5e-4;
cap.PortLineWidth = 1.9e-3;
cap.PortLineLength = 3e-3;
cap.Height = 7.87e-4;
キャパシタンスの抽出
C = capacitance(cap, 5e9); % Raw
C = capacitance(cap, 5e9, DeEmbed=true); % De-embedded
C = capacitance(cap, 5e9, DeEmbed=true, IncludeParasitics=true); % With parasitics
- DeEmbed は給電線路の影響を取り除き、コンデンサーを分離します。
- IncludeParasitics は、フィンガー構造に由来する寄生インダクタンスと寄生抵抗を加えます。
動作モデルのSパラメーター
spiralInductor と interdigitalCapacitor は、どちらも高速な動作モデルをサポートしています。
S = sparameters(ind, freq, Behavioral=true); % ~instant
S = sparameters(cap, freq, Behavioral=true);
初期検討にはこれを使用し、検証時にはフルウェーブ解析(Behavioral=false、デフォルト)に切り替えてください。フルウェーブ解析を実行する前に、必ずメッシュ密度を確認してください。
memoryEstimate(ind, fc, 'RetainMesh', true); % Check auto-mesh before full-wave
sp = sparameters(ind, freq, 'SweepOption', 'interp');
リング共振器
resonatorRing は、ギャップを介して2本の給電線路と結合するマイクロストリップリング共振器です。
r = resonatorRing;
r.RingRadiusOuter = 0.01;
r.RingWidth = 4e-3;
r.CouplingGap = 1e-3;
r.PortLineLength = 0.01;
r.PortLineWidth = 5e-3;
r.Height = 1.6e-3;
r.GroundPlaneWidth = 0.04;
周波数に基づく設計
r = design(resonatorRing, 1.8e9); % 50 Ω default
r = design(resonatorRing, 2.5e9, Z0=75); % 75 Ω
スプリットリング共振器
オブジェクト型は2種類あります。resonatorSplitRingCustom(形状を差し替え可能)と resonatorSplitRingSquare(正方形に事前設定済み)です。
カスタムスプリットリング共振器
r = resonatorSplitRingCustom;
sr = splitRing(Type="Hexagon", NumRings=3);
sr.SplitSide = [2 3 5];
r.Resonator = sr;
r.FeedType = 'Tapped'; % 'Tapped' (default) or 'Coupled'
r.PortLineLength = 0.01;
r.PortLineWidth = 7.5e-4;
r.Height = 8.13e-4;
正方形スプリットリング共振器
r = resonatorSplitRingSquare;
r.RingLengthInner = 3.6e-3;
r.RingWidth = 5e-4;
r.RingSpacing = 3e-4;
r.SplitGap = 5e-4;
r.CouplingGap = 2.5e-4;
r.NumResonator = 5;
r.ResonatorSpacing = 4e-3;
splitRing の形状プロパティの全一覧、CSRR のグラウンドプレーンエッチング、および SIW との統合パターンについては、references/resonators-detail.md を参照してください。
結合線バラン
balunCoupledLine は、3 セクションの結合線バラン(平衡・不平衡変換器)です。
b = balunCoupledLine;
b.NumCoupledLineSection = 3;
b.CoupledLineLength = 0.0153;
b.CoupledLineWidth = 4e-4;
b.CoupledLineSpacing = 1.4e-4;
b.OutputLineLength = 0.0124;
b.OutputLineWidth = 1.53e-4;
b.OutputLineSpacing = 0.011;
b.Height = 1.3e-3;
balunCoupledLine には design() メソッドがありません。インピーダンス目標値に基づいて各セクションの寸法を決めるには、designCoupledLine、designOutputLine、designUncoupledLine を使用してください。API の全容については、references/resonators-detail.md を参照してください。
マーチャンドバラン
balunMarchand は、λ/4 結合線セクションを使用する広帯域バランです。
bm = balunMarchand;
bm.CoupledLineLength = 0.0178;
bm.CoupledLineWidth = 3e-3;
bm.CoupledLineSpacing = 1.5e-4;
bm.OutputLineLength = 0.016;
bm.OutputLineWidth = 2.9e-4;
bm.Height = 1.6e-3;
design() メソッドはありません。寸法を手動で設定するか、optimize() を使用してください。
位相シフター
phaseShifter は、結合線セクションを使用するシフマン型位相シフターです。
ps = design(phaseShifter, 1.8e9); % Default phase shift
ps = design(phaseShifter, 1.8e9, PhaseShift=90); % 90° phase shift
プロパティ
ps.NumSections = 1;
ps.PortLineLength = 0.01;
ps.PortLineWidth = 5e-3;
ps.Height = 1.6e-3;
ps.SectionShape = ubendRightAngle; % Default U-bend shape
ラジアルスタブ
stubRadialShunt は、シングルまたはダブルのラジアルスタブシャントを作成します。ラジアルスタブは、矩形スタブと比べて広帯域の短絡特性を提供します。
stub = stubRadialShunt;
stub.StubType = "Single"; % "Single" (default) or "Double"
stub.OuterRadius = 8.5e-3;
stub.InnerRadius = 1.2e-3;
stub.Angle = 90; % Range [5, 175] degrees
stub.PortLineWidth = 2.5e-3;
stub.PortLineLength = 0.0137;
stub.Height = 1.6e-3;
ダブルスタブのベクトルプロパティの設定については、references/resonators-detail.md を参照してください。
回路への統合
RF Toolbox の回路を構成するには、受動部品を pcbElement でラップします。
ckt = circuit;
c1 = interdigitalCapacitor;
c2 = interdigitalCapacitor(NumFingers=3);
p = pcbElement(c2, 'Behavioral', false);
add(ckt, [1 2 0 0], c1);
add(ckt, [2 3 0 0], p);
setports(ckt, [1 0], [3 0]);
S = sparameters(ckt, 8e9);
最適化
このスキルのすべてのオブジェクトで optimize() を使用できます。
ind = spiralInductor(NumTurns=3);
optimize(ind, linspace(1e9, 3e9, 11), ...
'Properties', {'Width', 'Spacing', 'InnerDiameter'}, ...
'LowerBound', [1e-4, 1e-4, 3e-4], ...
'UpperBound', [5e-4, 5e-4, 1e-3], ...
'Objective', 'maximizeBandwidth');
多層誘電体パターン
すべてのオブジェクトで同じパターンに従います。コンポーネントに割り当てる前に Thickness を設定してください。
sub = dielectric('FR4', 'Teflon');
sub.Thickness = [1.6e-3, 0.8e-3];
obj.Substrate = sub;
obj.Height = 0.8e-3; % Must match a cumulative layer boundary
注意点
-
S パラメーターには補間スイープを使用する:MoM ソルバーでは、必ず
sparameters(obj, freq, 'SweepOption', 'interp')を使用してください。直接スイープでは周波数点ごとに個別に解くため、大幅に時間がかかります。 -
ソルブ前にメッシュ密度を確認する:スパイラルインダクターとインターデジタルコンデンサーでは、密度の高い自動メッシュが生成されます。
sparameters()の前に、必ずmemoryEstimate(obj, fc, 'RetainMesh', true)を実行してください。メモリ使用量が過大な場合は、mesh(obj, 'MaxEdgeLength', lambda/6)でメッシュを粗くしてください。メッシュを詳しく調べるワークフローについては、matlab-analyze-emを参照してください。 -
インダクター/コンデンサーに
design()はありません。spiralInductorとinterdigitalCapacitorにはdesign()メソッドがありません。寸法を手動で設定するか、optimize()を使用してください。 -
インダクタンス/キャパシタンスは周波数に依存します。 どちらも周波数引数が必要で、DC 抽出には対応していません。寄生成分の影響により、高周波では値が変化します。
-
キャパシタンスには DeEmbed が重要です。
DeEmbed=trueを指定しない場合、抽出されるキャパシタンスにはフィードラインの寄与が含まれます。 -
SpiralShape は大文字と小文字を区別します。
'Square'、'Circle'、'Hexagon'、'Octagon'を使用してください。 -
ビヘイビアモデルと全波解析の精度の違い:ビヘイビアモデルの S パラメーターは、SRF(インダクター)またはフィンガー共振(コンデンサー)付近で乖離します。
-
Height は累積基板境界である必要があります。 Thickness=[t1, t2] の場合、有効な Heights は t1 および t1+t2 です。このスキルのすべてのオブジェクトに適用されます。
-
spiralInductor には多層基板が必要です。 アンダーパスのフィード配線には、2 層以上の誘電体層が必要です。単層では "More than one substrate is required." というエラーが発生します。
-
GroundPlane の寸法:フリンジ電界が切り取られないよう、グラウンドプレーンはコンポーネントのフットプリントの 2 倍以上の大きさにしてください。
-
バランに
design()はありません。balunCoupledLineとbalunMarchandにはdesign()メソッドがありません。セクション設計関数またはoptimize()を使用してください。 -
スプリットリング共振器に
design()はありません。design()をサポートしているのはresonatorRingのみです。 -
splitRingは形状であり、コンポーネントではありません。 直接解析することはできません。resonatorSplitRingCustomにアタッチするか、pcbComponentに埋め込んでください。 -
PhaseShift の単位は度です。
design(phaseShifter, ...)のPhaseShiftパラメーターはラジアンではなく、度単位です。 -
stubRadialShuntにdesign()メソッドはありません。 寸法を手動で設定するか、optimize()を使用してください。 -
多角形の SplitSide のデフォルト値は無効な場合があります。 六角形では、
SplitSideに {2, 3, 5, 6} のいずれかを指定する必要があります。複数のリングを持つ多角形タイプでは、必ず明示的に設定してください。
関連スキル
matlab-manage-pcb-material— 基板と導体の設定matlab-analyze-em— S パラメーター、フィールド、メッシュ制御matlab-optimize-pcb-design— optimize() の構文、目的関数、ソルバーmatlab-integrate-pcb-circuit— pcbElement の回路への統合matlab-design-pcb-filter— SIW フィルターにはスプリットリング共振器を組み込めますmatlab-assemble-pcb-layout— pcbComponent とブール演算によるカスタム CSRR 構造matlab-design-pcb-coupler— 関連する結合線路構造
Copyright 2026 The MathWorks, Inc.