mcpField
M
matlab-write-pcb-layout

matlab-write-pcb-layout

github.com/matlab其他1.2k71 次安装1 天前更新
代码仓库

关于 matlab-write-pcb-layout

该 MATLAB 技能指导将 PCB 设计导出为 Gerber 制造文件,面向需要准备电路板生产资料的 RF 设计者。内容涵盖连接器选择、制造服务格式配置和射频连接器设置。

主要功能

  1. 01将 pcbComponent 或 pcbStack 导出为 Gerber
  2. 02配置制造服务的输出格式
  3. 03添加 RF 连接器及焊盘图形
  4. 04设置板框、阻焊层和坐标单位

适用场景

  1. 01为 OSH Park 或 Seeed 准备 PCB 制造文件
  2. 02为板级馈电位置配置 SMA 连接器
  3. 03从 MATLAB RF 设计生成制造文件包

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/matlab-write-pcb-layout确认已加载。

附带文件manifest.yaml

详细介绍

将 PCB 布局写入制造文件

适用场景

  • 将 pcbComponent 或 pcbStack 设计导出为 Gerber 制造文件
  • 为 PCB 导出选择和配置 RF 连接器(SMA、SMB、MMCX 等)
  • 为特定的 PCB 制造服务(OSH Park、Seeed、Advanced Circuits)设置输出格式
  • 将 RFConnector 对象附加到目录组件,以进行带屏蔽分析
  • 从 MATLAB RF 设计生成完整的制造文件包

不适用场景

  • 将 Gerber 文件导入 MATLAB — 使用 matlab-read-pcb-layout
  • 构建 PCB 设计本身 — 使用 matlab-assemble-pcb-layout 或相关设计技能
  • 运行 EM 分析 — 使用 matlab-analyze-em

典型工作流

  1. 之前: 使用设计技能或 matlab-assemble-pcb-layout 创建 pcbComponent;使用 matlab-analyze-em 验证性能;如有需要,使用 matlab-optimize-pcb-design 进行调优
  2. 本技能: 添加连接器并设置制造格式,然后导出为 Gerber

快速参考

任务代码
导出 Gerber 文件[A,g] = gerberWrite(pcb, W, {C1,C2})
SMA 连接器C = PCBConnectors.SMA_Cinch
边缘发射 SMAC = PCBConnectors.SMAEdge_Samtec
PCB 服务写入器W = PCBServices.OSHParkWriter
自定义写入器W.Filename = 'name'; W.CoordUnits = 'mm'
RF 连接器对象rc = RFConnector
为 PCB 设计连接器rc = design(RFConnector, pcb)

gerberWrite — 导出为制造文件

gerberWrite 函数可从 pcbComponent 生成制造文件。

基本导出
p = pcbComponent;   % Your designed component
W = PCBServices.OSHParkWriter;
W.Filename = 'my_design';          % Controls output zip/folder name (default: 'untitled')
C1 = PCBConnectors.SMA_Cinch;
C2 = PCBConnectors.SMA_Cinch;

[A, outputPath] = gerberWrite(p, W, {C1, C2});
输出

gerberWrite 会生成包含 Gerber 文件和钻孔文件的文件夹:

  • 顶层/底层铜层
  • 阻焊层
  • 丝印层
  • 钻孔文件
  • 板框

输出 A 是一个包含导出元数据的 PCBWriter 对象。outputPath 是生成文件的路径。

PCBWriter 对象

PCBWriter 对象用于控制导出设置。

属性
属性说明
Design包含 PCB 设计数据的结构体
WriterPCB 服务写入器(输出格式)
Connector连接器对象的元胞数组
UseDefaultConnector未指定连接器时使用默认连接器
ComponentBoundaryLineWidth外框线宽
PCBMargin组件周围额外的板边距(m)
Soldermask'both'、'top'、'bottom' 或 'none'
Solderpaste逻辑值 — 是否生成锡膏层
Font丝印上的文本字体

PCBConnectors — 连接器目录

为导出的电路板添加标准 RF 连接器。

可用连接器(25 种内置类型)
类别连接器
SMA 5 焊盘SMA、SMA_Cinch、SMA_Multicomp
SMA 边缘发射SMAEdge、SMAEdge_Cinch、SMAEdge_Samtec、SMAEdge_Amphenol、SMAEdge_Linx
SMB/SMCSMB_Johnson、SMB_Pasternack、SMC_Pasternack、SMCEdge_Pasternack
MMCXMMCX_Cinch、MMCX_Samtec
IPX/U.FLIPX_Jack_Lighthorse、IPX_Plug_Lighthorse、UFL_Hirose
同轴电缆Coax_RG11、Coax_RG58、Coax_RG59、Coax_RG174
半刚性电缆Semi_020、Semi_034、Semi_047、Semi_118

通过 PCBConnectors.<type> 访问。所有连接器都有以下通用属性:Type、Mfg、Part、Annotation、Impedance(默认值:50 欧姆)、Datasheet、Purchase。

5 焊盘连接器属性:TotalSize、GroundPadSize、SignalPadDiameter、PinHoleDiameter、IsolationRing、VerticalGroundStrips

边缘发射连接器属性:GroundPadSize、GroundSeparation、GroundPadIsolation、SignalPadSize、SignalGap、SignalLineWidth、EdgeLocation('north'|'south'|'east'|'west')、ExtendBoardProfile、FillGroundSide

同轴连接器属性:PinDiameter、DielectricDiameter、ShieldDiameter、AddThermals、ThermalsDiameter、ThermalsBridgeWidth

在 Gerber 导出期间,连接器会放置在馈电位置。它们定义焊盘封装和钻孔图案。

PCBServices — 制造服务写入器

写入器用于为特定制造服务配置输出。

可用服务(5 个内置写入器)
服务描述
PCBServices.GerbLookWriterGerbLook 在线查看器
PCBServices.ZofZWriterZofZ 3-D Gerber 查看器
PCBServices.AdvancedCircuitsWriterAdvanced Circuits 制造服务
PCBServices.SeeedWriterSeeed Studio 制造服务
PCBServices.OSHParkWriterOSH Park 制造服务

每个写入器都会根据制造厂的命名和图层约定格式化 Gerber 文件。

PCBServices 的关键属性: Filename、CoordUnits('in'/'mm')、CoordPrecision、CreateArchiveFile、DefaultViaDiameter、UseExcellon、BoardProfileFile、SameExtensionForGerberFiles、PostWriteFcn、Files

% Customize a service writer
w = PCBServices.AdvancedCircuitsWriter;
w.Filename = 'my_antenna';
w.CoordUnits = 'mm';
w.CoordPrecision = [3 4];

RF 连接器

RFConnector 用于建模连接到 PCB 结构的同轴连接器(SMA、SMB 等)。

rc = RFConnector;
rc.InnerRadius  = 5e-4;      % Center pin radius
rc.OuterRadius  = 1.5e-3;    % Outer conductor radius
rc.PinLength    = 3e-3;      % Pin insertion depth
rc.PinFootprint = 'Taper';   % 'Taper' or 'Circular'
rc.EpsilonR     = 1.7341;    % Dielectric fill permittivity
rc.Impedance    = 50;        % Characteristic impedance
附加到目录对象

将 Connector 附加到目录对象(例如 microstripLine)需要设置 IsShielded = true:

m = microstripLine;
m.IsShielded = true;          % Required before setting Connector
m.Connector = RFConnector;
show(m);
为 pcbComponent 进行设计

design() 会自动调整连接器尺寸,使其与 PCB 对象匹配。这需要基于 FEM 的 pcbComponent — 目录对象(如 microstripLine)不支持 FEM:

pcb = pcbComponent;           % Must be pcbComponent with SolverType='FEM'
pcb.SolverType = 'FEM';
rc = design(RFConnector, pcb);

从设计到制造的完整工作流

%% Design a filter
f = design(filterCoupledLine, 3e9);

%% Analyze
freq = linspace(1e9, 5e9, 101);
sp = sparameters(f, freq, 'SweepOption', 'interp');
rfplot(sp);

%% Export for manufacturing (convert to pcbComponent first)
pcb = pcbComponent(f);
W = PCBServices.OSHParkWriter;
C1 = PCBConnectors.SMA_Cinch;
C2 = PCBConnectors.SMA_Cinch;
[A, gPath] = gerberWrite(pcb, W, {C1, C2});

注意事项

  1. 连接器兼容性:并非所有连接器都适用于所有板厚。SMA 边缘发射连接器以标准基板高度为前提。请检查连接器焊盘尺寸是否与电路板匹配。

  2. Gerber 光圈限制:复杂的曲线几何形状在 Gerber 格式中可能会用多边形近似。导出期间,非常精细的特征可能会损失分辨率 — 请检查目标制造服务支持的最小特征尺寸。

  3. 多个连接器需要使用元胞数组:将多个连接器传递给 gerberWrite 时,请将它们包装在元胞数组中:gerberWrite(pcb, W, {C1, C2})。对象数组 [C1, C2] 会导致错误。

  4. gerberWrite 需要 pcbComponent 或 pcbStack:gerberWrite 不适用于目录对象(例如 microstripLine、filterHairpin)。如有需要,请先转换为 pcbComponent。

  5. 目录对象上的连接器需要 IsShielded。 在目录对象(microstripLine 等)上设置 obj.Connector = RFConnector 会导致错误:“SolverType property must be set to 'FEM'”,除非先设置 obj.IsShielded = true。目录对象不直接支持 FEM — 请使用 IsShielded = true 启用 MoM 屏蔽模式。design(RFConnector, obj) 仅适用于 SolverType='FEM' 的 pcbComponent 对象。

  6. IsShielded 与有限电导率冲突。 设置 IsShielded = true 会启用类似 FEM 的内部求解器路径。如果同时设置 Conductor = metal("Copper")(有限电导率),则会出现错误:“FEM solver does not support finite conductivity. Set conductivity of conductor to Inf.” 使用 IsShielded = true 或 Connector 时,请让 Conductor 保持默认值(PEC)。

  7. 对 pcbcascade 结果使用 gerberWrite。 pcbcascade 会返回一个 pcbComponent,可将其直接传递给 gerberWrite。不过,请确认端口数量与连接器数量匹配 — pcbcascade 会合并端口并移除已连接的端口,因此最终保留的端口数量可能与输入组件不同。

  8. IsShielded 会将求解器切换为 FEM — 影响扫描选项。 设置 IsShielded = true 会将内部求解器切换为 FEM。'SweepOption', 'interp' 插值扫描针对 MoM 设计,在 FEM 下可能不可用或表现不同。请在添加 IsShielded 进行导出之前运行 S 参数分析,或使用 FEM 离散频率扫描。

相关技能

  • matlab-read-pcb-layout — 从 Gerber、ODB++ 和 Allegro 导入布局
  • matlab-assemble-pcb-layout — 使用形状构建自定义 PCB 结构
  • matlab-analyze-em — 导出前运行 EM 分析

版权所有 2026 The MathWorks, Inc.

评论

支持 Markdown