SkillAgentSearch skills...

matlab-manage-pcb-material

Dielectric substrates, metal conductors, multi-layer stackups, and loss models (FR4, Rogers, Teflon) for RF PCB simulation. TRIGGER: user asks to set up a substrate, define dielectric properties, create a stackup, select a PCB material (FR4, Rogers, Teflon, etc.), or configure metal conductors.

Install / Use

npx skills add matlab/matlab-agentic-toolkit --skill matlab-manage-pcb-material

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-manage-pcb-material

matlab-manage-pcb-material scores 93/100 on our quality scale, 241st of 1,199 Content & Media skills we index (top 21%).

Its SKILL.md is 12 KB long, well organised into 28 sections with 16 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-manage-pcb-material 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-manage-pcb-material compared with similar skills

All 4 of these similar skills score higher than matlab-manage-pcb-material; compare them before choosing.

SkillScoreStarsUpdatedFormat
matlab-manage-pcb-material (this skill)by matlab931.1k18d agoSKILL.md
Agent-Reachby Panniantong10089.8k18d agoCLAUDE.md
headroomby headroomlabs-ai10074.4ktodayCLAUDE.md
Scraplingby D4Vinci10085.4ktodayMCP Server
crawl4aiby unclecode10084.7k8d agoMCP Server

Frequently asked questions

How do I install matlab-manage-pcb-material?
Run npx skills add matlab/matlab-agentic-toolkit --skill matlab-manage-pcb-material. The install tabs above show the steps for each supported agent.
Which AI agents does matlab-manage-pcb-material 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-manage-pcb-material 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-manage-pcb-material still maintained?
The repository was last updated 18 days ago, so matlab-manage-pcb-material is actively maintained.

name: matlab-manage-pcb-material description: "Dielectric substrates, metal conductors, multi-layer stackups, and loss models (FR4, Rogers, Teflon) for RF PCB simulation. TRIGGER: user asks to set up a substrate, define dielectric properties, create a stackup, select a PCB material (FR4, Rogers, Teflon, etc.), or configure metal conductors. Invoke BEFORE writing dielectric() or metal() code — the API for named vs custom materials differs significantly. SKIP: PCB layout assembly (use matlab-assemble-pcb-layout), transmission line design (use matlab-design-pcb-transmission-line), EM analysis (use matlab-analyze-em), importing a PCB file (use matlab-read-pcb-layout)." license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.0"

Managing Materials for RF PCB Toolbox

When to Use

  • Creating dielectric substrates for transmission lines, filters, couplers, or custom pcbComponent designs
  • Selecting metals (Copper, Gold, etc.) for realistic conductor loss modeling
  • Building multi-layer dielectric stacks for stripline or embedded designs
  • Choosing frequency-dependent dispersion models (DjordjevicSarkar) for wideband accuracy
  • Looking up catalog material properties or adding custom materials

When NOT to Use

  • Building the PCB layer structure itself — use matlab-assemble-pcb-layout
  • Running EM analysis after materials are defined — use matlab-analyze-em
  • Designing transmission lines that happen to need substrates — use matlab-design-pcb-transmission-line (it references this skill for material details)
  • Importing material properties from an existing board file — use matlab-read-pcb-layout

Typical Workflow

  1. This skill: Define substrate, conductor, and stackup — typically the first step in any RF PCB design
  2. After: Any design skill (matlab-design-pcb-filter, matlab-design-pcb-transmission-line, matlab-assemble-pcb-layout, matlab-model-via) — pass materials to the component

Quick Reference

| Task | Code | |------|------| | Catalog dielectric | sub = dielectric("FR4") | | Custom dielectric | sub = dielectric(Name="MyMat", EpsilonR=4.4, LossTangent=0.02, Thickness=1.6e-3) | | Multi-layer dielectric | sub = dielectric("FR4","Teflon"); sub.Thickness = [0.8e-3 0.4e-3] | | Catalog metal | cond = metal("Copper") | | Custom metal | cond = metal(Name="MyMetal", Conductivity=5.8e7, Thickness=35e-6) | | Browse dielectrics | DielectricCatalog | | Browse metals | MetalCatalog | | Frequency-dependent | sub = dielectric(..., Frequency=1e9) | | Get properties at freq | [epsr, tand, f] = getMaterialProperties(sub, freqVector) |

Creating Dielectrics

The dielectric object defines substrate properties. Create from the built-in catalog or specify custom parameters.

From Catalog

sub = dielectric("FR4");
sub = dielectric("Teflon");
sub = dielectric("RO4730JXR");
sub = dielectric("TMM10");

To see every name in the catalog:

dc = DielectricCatalog;
disp(dc.Materials)

Available catalog names (R2026a): Air, FR4, Teflon, Foam, Polystyrene, Plexiglas, Fused quartz, E glass, RO4725JXR, RO4730JXR, TMM3, TMM4, TMM6, TMM10, TMM10i, Taconic RF-35. Add custom materials with add(dc, ...) if your material is not listed.

Custom Properties

sub = dielectric(Name="Rogers4350B", EpsilonR=3.66, LossTangent=0.0037, Thickness=0.508e-3);

Key Properties

| Property | Description | Units | |----------|-------------|-------| | Name | Material identifier | string | | EpsilonR | Relative permittivity | dimensionless | | LossTangent | Dielectric loss tangent (tan δ) | dimensionless | | Thickness | Layer thickness | meters | | Frequency | Reference frequency for loss tangent | Hz | | FrequencyModel | 'Constant', 'DjordjevicSarkar', 'MeanDjordjevicSarkar', or 'TableDriven' | — |

Browsing the Catalog

dc = DielectricCatalog;
open(dc)               % Opens interactive catalog viewer
disp(dc.Materials)     % List all materials as a table
s = find(dc, "FR4");   % Returns struct with Name, Relative_Permittivity, Loss_Tangent, Frequency, Comments

Creating Metals

The metal object defines conductor properties.

From Catalog

cond = metal("Copper");       % Conductivity=5.96e7, Thickness=35.56e-6 (1 oz)
cond = metal("Aluminium");    % Conductivity=3.77e7, Thickness=762e-6
cond = metal("Gold");         % Conductivity=4.11e7, Thickness=0.2e-6

Available catalog metals (R2026a): PEC, Copper, Aluminium, Gold, Silver, Zinc, Tungsten, Lead, Iron, Steel, Brass.

Custom Properties

cond = metal(Name="ThickCopper", Conductivity=5.8e7, Thickness=70e-6);

Browsing the Catalog

mc = MetalCatalog;
open(mc)                    % Opens interactive catalog viewer
disp(mc.Materials)          % List all metals as a table
s = find(mc, "Aluminium");  % Returns struct with Name, Conductivity, Thickness, Units, Comments

Assigning to Components

mline = microstripLine;
mline.Conductor = metal("Copper");

Multi-Layer Substrates

Many RF PCB components support multi-layer dielectric stacks. Pass multiple material names or use vector properties.

Shorthand Syntax (catalog names)

sub = dielectric("FR4", "Teflon");
sub.Thickness = [0.0016 0.0008];

Explicit Multi-Layer

sub = dielectric(Name={"FR4","Foam","FR4"}, ...
    EpsilonR=[4.4 1.05 4.4], ...
    LossTangent=[0.02 0.001 0.02], ...
    Thickness=[0.4e-3 0.8e-3 0.4e-3]);

Important: Use a cell array {...} for Name, not a string array [...]. String array concatenation (["FR4","Foam"]) produces a single string "FR4Foam", not a multi-element array.

Assigning to Components

balun = balunMarchand;
balun.Height = 0.0016;
balun.Substrate = sub;
show(balun);

Multi-layer substrates are supported by all catalog components that have a Substrate or Height property (transmission lines, filters, couplers, splitters, etc.).

Dielectrics in pcbComponent

When building custom structures with pcbComponent, dielectrics appear as layers in the Layers cell array:

pcb = pcbComponent;
substrate = dielectric("RO4730JXR");
substrate.Thickness = 1.52e-3;
ground = traceRectangular(Length=20e-3, Width=10e-3);

pcb.BoardThickness = substrate.Thickness;
pcb.Layers = {signalTrace, substrate, ground};

For multi-dielectric pcbComponent stacks (5-layer):

sub1 = dielectric(Name="FR4", EpsilonR=4.4, LossTangent=0.02, Thickness=0.8e-3);
sub2 = dielectric(Name="FR4", EpsilonR=4.4, LossTangent=0.02, Thickness=0.8e-3);

pcb.BoardThickness = sub1.Thickness + sub2.Thickness;
pcb.Layers = {topTrace, sub1, groundPlane, sub2, bottomTrace};

Frequency-Dependent Loss Models

For accurate wideband modeling, specify a reference frequency for the loss tangent:

sub = dielectric(Name="FR4", EpsilonR=4.4, LossTangent=0.02, ...
    Thickness=1.6e-3, Frequency=1e9);

When Frequency is specified, the FrequencyModel property automatically becomes 'DjordjevicSarkar'. This causal model extrapolates permittivity and loss tangent across the analysis bandwidth, ensuring physically consistent results. Without Frequency, the model uses 'Constant' (frequency-independent).

Available dispersion models:

  • "Constant" -- (default) frequency-independent permittivity and loss tangent
  • "DjordjevicSarkar" -- wideband causal model, best for PCB substrates
  • "MeanDjordjevicSarkar" -- averaged version of DjordjevicSarkar
  • "TableDriven" -- user-supplied frequency-dependent data from vendor datasheets

Frequency Model Selection Guide

| Frequency Range | Recommended Model | Use Case | |-----------------|-------------------|----------| | DC -- 1 GHz | Constant (default) | Low-frequency, quick estimates | | 1 -- 40 GHz | DjordjevicSarkar | Most RF PCB designs, FR4/Rogers | | Broadband with vendor data | TableDriven | Import manufacturer permittivity vs. frequency curves | | Wideband model fitting | MeanDjordjevicSarkar | Averaged causal model for broadband sweeps |

Querying Dispersion-Aware Properties

Use getMaterialProperties() to calculate permittivity and loss tangent at specific frequencies, accounting for the active dispersion model:

sub = dielectric("FR4");
sub.FrequencyModel = "DjordjevicSarkar";
sub.Frequency = 1e9;

% Get properties across a frequency sweep
freq = linspace(1e8, 10e9, 100);
[epsr, tand, f] = getMaterialProperties(sub, freq);

% Plot frequency-dependent permittivity
plot(f/1e9, epsr);
xlabel("Frequency (GHz)"); ylabel("\epsilon_r");
title("FR4 Permittivity (DjordjevicSarkar)");

Common Material Parameters

Dielectric Catalog Values (R2026a)

| Material | EpsilonR | LossTangent | Freq (Hz) | Notes | |----------|----------|-------------|-----------|-------| | FR4 | 4.8 | 0.026 | 1e8 | Standard PCB | | Teflon | 2.1 | 0.0002 | 1e8 | Low-loss PTFE | | Foam | 1.03 | 0.00015 | 5e7 | Air-like spacer | | RO4725JXR | 2.55 | 0.0022 | 2.5e9 | Rogers, halogen-free | | RO4730JXR | 3.0 | 0.0023 | 2.5e9 | Rogers, halogen-free | | TMM10 | 9.8 | 0.0022 | 1e10 | Ceramic-filled PTFE | | Taconic RF-35 | 3.5 | 0.0018 | 1.9e9 | Low-loss RF |

Materials not in catalog that must be created manually:

sub = dielectric(Name="RO4003C", EpsilonR=3.38, LossTangent=0.0027, Thickness=0.508e-3);
sub = dielectric(Name="RO4350B", EpsilonR=3.66, LossTangent=0.0037, Thickness=0.508e-3);

Metal Catalog Values (R2026a)

| Metal | Conductivity (S/m) | Catalog Thickness | Notes | |-------|-------------------|-------------------|-------| | PEC | Inf | 0 | Perfect conductor (default) | | Copper | 5.96e7 | 35.56 μm (1.4 mil, 1 oz) | Most common | | Aluminium | 3.77e7 | 762 μm (30 mil) | | | Gold | 4.11e7 | 0.2 μm | Plating | | Silver | 6.3e7 | 0.2 μm | Highest conductivity |

Pitfalls

  1. Set BoardThickness before Layers: pcbComponent.BoardThickness must equal the sum of all dielectric thicknesses. Always assign BoardThickness before Layers — reversing the order triggers a warning and silently overwrites dielectric thicknesses.

  2. Default conductor is PEC: If you don't assign a Conductor, components use perfect electric conductor (lossless). Always assign metal("Copper") for realistic loss modeling.

  3. Most Rogers materials not in catalog: Only RO4725JXR and RO4730JXR are in DielectricCatalog. Common substrates like RO4003C, RO4350B, and RO3003 must be created manually from datasheet values. Calling dielectric("RO4003C") will error.

  4. Multi-layer Thickness must match element count: When using vector Thickness, the number of elements must equal the number of names/EpsilonR values. Mismatched lengths throw an error.

  5. Units are always SI: Thickness in meters (not mm or mils). A 1.6 mm board is 1.6e-3, not 1.6.

  6. FrequencyModel can be set post-design. After design() creates a component with a default constant dielectric, you can switch to DjordjevicSarkar: obj.Substrate.FrequencyModel = 'DjordjevicSarkar'; obj.Substrate.Frequency = 1e9;. This is useful when the design step doesn't accept frequency-dependent substrates.

  7. Named catalog dielectrics are single-layer: dielectric("FR4") creates a 1-layer object with fixed catalog properties. For multi-layer pcbComponent stacks, create separate unnamed dielectric objects with explicit EpsilonR, LossTangent, and scalar Thickness for each layer. Do NOT use a named catalog entry when you need to control per-layer thickness in a Layers cell array.

  8. Dielectric layer count for viaSingleEnded: When building a multi-layer substrate for viaSingleEnded, the number of dielectric layers must equal N-1 where N is the number of conductive layers in the stackup (e.g., Signal=[1 5], Ground=[3 7] → 4 metal layers → 3 dielectric layers). When using the `viaSi

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