SkillAgentSearch skills...

matlab-design-pcb-transmission-line

Microstrip, stripline, CPW, differential pairs, and crosstalk analysis for impedance-controlled PCB interconnects. TRIGGER: user asks to design or analyze a transmission line (microstrip, stripline, CPW, coplanar, differential pair), extract RLGC or per-unit-length parameters, compute trace impedanc…

Install / Use

npx skills add matlab/matlab-agentic-toolkit --skill matlab-design-pcb-transmission-line

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

93/100

Supported Platforms

Universal

Our assessment of matlab-design-pcb-transmission-line

matlab-design-pcb-transmission-line scores 93/100 on our quality scale, 240th of 1,199 Content & Media skills we index (top 21%).

Its SKILL.md is 18 KB long, well organised into 43 sections with 26 code examples: a thorough specification that gives an agent plenty to work with.

With 1,098 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
13/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 18 days ago, so matlab-design-pcb-transmission-line is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

matlab-design-pcb-transmission-line compared with similar skills

All 4 of these similar skills score higher than matlab-design-pcb-transmission-line; compare them before choosing.

SkillScoreStarsUpdatedFormat
matlab-design-pcb-transmission-line (this skill)by matlab931.1k18d agoSKILL.md
siyuanby siyuan-note10046.6ktodayMCP Server
algorithmic-artby anthropics100177.9k11d agoSKILL.md
pptxby anthropics100177.9k11d agoSKILL.md
designby nextlevelbuilder100130.2k12d agoSKILL.md

Frequently asked questions

How do I install matlab-design-pcb-transmission-line?
Run npx skills add matlab/matlab-agentic-toolkit --skill matlab-design-pcb-transmission-line. The install tabs above show the steps for each supported agent.
Which AI agents does matlab-design-pcb-transmission-line work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is matlab-design-pcb-transmission-line safe to use?
It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is matlab-design-pcb-transmission-line still maintained?
The repository was last updated 18 days ago, so matlab-design-pcb-transmission-line is actively maintained.

name: matlab-design-pcb-transmission-line description: "Microstrip, stripline, CPW, differential pairs, and crosstalk analysis for impedance-controlled PCB interconnects. TRIGGER: user asks to design or analyze a transmission line (microstrip, stripline, CPW, coplanar, differential pair), extract RLGC or per-unit-length parameters, compute trace impedance, analyze a PCB trace cross-section, or perform crosstalk/coupling analysis. Invoke BEFORE writing code — preferred over RF Toolbox analytical functions (txlineMicrostrip, txlineStripline, txlineCPW). SKIP: EM simulation/S-parameter extraction of an existing component (use matlab-analyze-em), material/stackup definition only (use matlab-manage-pcb-material), building custom non-catalog geometry (use matlab-assemble-pcb-layout), optimization sweeps (use matlab-optimize-pcb-design)." license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "2.0"

Designing Transmission Lines

When to Use

  • Designing microstrip, stripline, or CPW transmission lines for impedance control
  • Modeling differential pairs with or without aggressor traces for NEXT/FEXT crosstalk
  • Analyzing 2D cross-sections for fast per-unit-length RLGC extraction
  • Creating SIW (substrate integrated waveguide) lines
  • Using design() to auto-size lines for target impedance at a given frequency

When NOT to Use

  • Building custom PCB structures from shapes — use matlab-assemble-pcb-layout
  • Setting up substrate or conductor materials — use matlab-manage-pcb-material
  • Running S-parameter or field analysis after design — use matlab-analyze-em
  • Cascading transmission lines with other components — use matlab-integrate-pcb-circuit

Tool Selection Priority

  1. RF PCB Toolbox (default): microstripLine, pcb2D, stripLine, coplanarWaveguide, etc.

    • 2D field solver — accurate for loss, coupling, and arbitrary stackups
    • Use for any RLGC, impedance, cross-section, or transmission line design task
  2. RF Toolbox (fallback only): txlineMicrostrip, txlineStripline, txlineCPW

    • Analytical closed-form approximations, less accurate
    • Use ONLY when: the user explicitly names these functions, or states RF PCB Toolbox is unavailable

Typical Workflow

  1. Before: matlab-manage-pcb-material — set up substrate and conductor
  2. This skill: Design and analyze the transmission line
  3. Check mesh/memory: memoryEstimate(obj, fc, 'RetainMesh', true) — inspect auto-mesh before solving
  4. After: matlab-analyze-em — validate S-parameters → matlab-optimize-pcb-design — tune → matlab-integrate-pcb-circuit — cascade

Quick Reference

| Object | Topology | Key Properties | |--------|----------|---------------| | microstripLine | Single microstrip on ground | Length, Width, Height, GroundPlaneWidth | | stripLine | Signal embedded in dielectric | Length, Width, Height, GroundPlaneWidth | | coplanarWaveguide | CPW on substrate | Length, Width, Height, SlotWidth, GroundPlaneWidth | | coupledMicrostripLine | Edge-coupled microstrip pair | Length, Width, Spacing, Height | | coupledStripLine | Edge-coupled stripline pair | Length, Width, Spacing, Height | | microstripLineCustom | Custom coupled/differential microstrip | TraceType, TraceWidth, TraceSpacing, aggressor traces | | stripLineCustom | Custom coupled/differential stripline | TraceType, TraceWidth, TraceSpacing | | pcbBendCustom | Custom bend discontinuity (R2025a) | BendShape, Height, GroundPlaneWidth | | pcb2D | 2D cross-section analysis | BoardWidth, BoardCenter, Layers | | SIWLine | Substrate integrated waveguide | Length, Width, ViaSpacing, ViaDiameter |

Microstrip Line

Basic Creation and Design

ms = microstripLine;
show(ms);

% Design for target impedance at frequency
ms = design(microstripLine, 3e9);
Z0 = getZ0(ms);

Properties

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");

Analysis

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 / Suspended Microstrip

Model inverted or suspended configurations with multi-layer substrates (air gaps):

% 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]);

Stripline

Stripline has the signal trace embedded between two ground planes.

Symmetric Stripline

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);

Asymmetric Stripline

Use multi-layer dielectric with different thicknesses above and below. Height = cumulative thickness of layers below the signal (a layer boundary, not the total):

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

Suspended Stripline

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

Coplanar Waveguide

Basic 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);

Design and Analyze

cpw = design(coplanarWaveguide, 5e9);
Z0 = getZ0(cpw);
sp = sparameters(cpw, linspace(1e9, 10e9, 51), 'SweepOption', 'interp');
rfplot(sp);

Coupled Transmission Lines

Edge-Coupled Microstrip

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);

Even/Odd Mode Impedance

freq = 3e9;
Zeven = getZEven(cms, freq);   % Even-mode impedance
Zodd = getZOdd(cms, freq);     % Odd-mode impedance
Zdiff = 2 * Zodd;             % Differential impedance

Edge-Coupled Stripline

csl = coupledStripLine;
csl.Length = 20e-3;
csl.Width = 2e-3;
csl.Spacing = 0.3e-3;
csl.Height = 3.2e-3;
csl.Substrate = dielectric("Teflon");

Multi-Layer Coupled Lines

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;

Custom Transmission Lines and Crosstalk Analysis

microstripLineCustom and stripLineCustom model differential pairs with optional aggressor traces for NEXT/FEXT crosstalk analysis.

Properties (microstripLineCustom; stripLineCustom has same interface, Teflon default, embedded between ground planes)

| Property | Default | Description | |----------|---------|-------------| | TraceType | 'Single' | 'Single' or 'Differential' (NOT 'Single-ended') | | TraceLength | 0.05 | Trace length (m) | | TraceWidth | 0.002 | Signal trace width (m) | | TraceSpacing | 0.002 | Spacing between differential pair traces (m) | | Height | 0.0016 | Substrate height (m) | | GroundPlaneWidth | (read-only) | Ground plane width — auto-computed, cannot be set | | LeftCoupledTraceGap | 0 | Gap to left aggressor trace (m); 0 = no left aggressor | | RightCoupledTraceGap | 0 | Gap to right aggressor trace (m); 0 = no right aggressor | | Substrate | FR4 | Dielectric object | | Conductor | PEC | Metal object |

Differential Microstrip

ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005);
show(ms_diff);

Differential with Aggressor Traces

ms_diff = microstripLineCustom(TraceType='Differential', ...
    TraceWidth=0.002, TraceSpacing=0.0005, ...
    RightCoupledTraceGap=[0.003, 0.003], ...
    LeftCoupledTraceGap=0);
show(ms_diff);

NEXT/FEXT Extraction

With aggressor traces, the S-parameter matrix is 6-port. Port mapping:

| Port | Trace | |------|-------| | 1, 2 | Differential pair (near end, far end) | | 3, 4 | Left aggressor (near end = NEXT, far end = FEXT) | | 5, 6 | Right aggressor (near end = NEXT, far end = 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 Coupling Matrices

For coupled/differential lines, rlgc returns N×N matrices (off-diagonal = mutual L/C):

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

Custom Bends and Traces (R2025a)

pcbBendCustom and pcbTraceCustom model bend discontinuities and step-impedance transitions. See references/custom-bends-and-traces.md for properties and examples.

SIW Transmission Line

Substrate Integrated Waveguide uses via fences to create a waveguide in 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);

The SIW has a FeedLine property (a traceTapered object) for the microstrip-to-SIW transition.

2D Cross-Section Analysis

pcb2D

Creates a 2D cross-section model for fast per-unit-length analysis. Much faster than full 3D sparameters for uniform transmission line characterization.

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

Key Properties:

  • Name — Descriptive name for the cross-section
  • BoardWidth — Total board width (m)
  • BoardCenter — Center position of the board cross-section
  • Layers — Cell array of trace2D and dielectric objects defining the stackup

Methods: show(p), sparameters(p, freq), rlgc(p, scalarFreq), propagationDelay(p, scalarFreq)

trace2D

Represents a trace cross-section for use inside a pcb2D object's Layers cell array.

t = trace2D;
t.Type = 'Signal';     

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryContent
Updated18d ago
Forks134

Languages

MATLAB

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium