Skill v1.0.1
currentAutomated scan100/100+1 new
version: "1.0.1" name: matlab-write-pcb-layout description: "Export pcbComponent designs to Gerber files with RF connectors and fab service formatting for PCB manufacturing. TRIGGER: user asks to export a PCB design to Gerber, generate manufacturing files, or write out a pcbComponent for fabrication. Invoke BEFORE writing export code — gerberWrite signature (pcbComponent, connectors, filename) is non-obvious. SKIP: importing/reading PCB files (use matlab-read-pcb-layout), building PCB geometry (use matlab-assemble-pcb-layout), EM analysis (use matlab-analyze-em), material/stackup setup (use matlab-manage-pcb-material)." license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.0"
Writing PCB Layouts to Manufacturing Files
When to Use
- Exporting a pcbComponent or pcbStack design to Gerber manufacturing files
- Selecting and configuring RF connectors (SMA, SMB, MMCX, etc.) for PCB export
- Formatting output for specific fabrication services (OSH Park, Seeed, Advanced Circuits)
- Attaching RFConnector objects to catalog components for shielded analysis
- Generating a complete manufacturing package from a MATLAB RF design
When NOT to Use
- Importing Gerber files into MATLAB — use
matlab-read-pcb-layout - Building the PCB design itself — use
matlab-assemble-pcb-layoutor the designing skills - Running EM analysis — use
matlab-analyze-em
Typical Workflow
- Before: A design skill or
matlab-assemble-pcb-layout— create the pcbComponent;matlab-analyze-em— validate performance;matlab-optimize-pcb-design— tune if needed - This skill: Export to Gerber with connectors and fab formatting
Quick Reference
| Task | Code | |
|---|---|---|
| Export Gerber files | [A,g] = gerberWrite(pcb, W, {C1,C2}) | |
| SMA connector | C = PCBConnectors.SMA_Cinch | |
| Edge-launch SMA | C = PCBConnectors.SMAEdge_Samtec | |
| PCB service writer | W = PCBServices.OSHParkWriter | |
| Customize writer | W.Filename = 'name'; W.CoordUnits = 'mm' | |
| RF connector object | rc = RFConnector | |
| Design connector for PCB | rc = design(RFConnector, pcb) |
gerberWrite — Export to Manufacturing
The gerberWrite function generates manufacturing files from a pcbComponent.
Basic Export
p = pcbComponent; % Your designed componentW = 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});
Output
gerberWrite produces a folder of Gerber and drill files:
- Top/bottom copper layers
- Solder mask layers
- Silkscreen layers
- Drill files
- Board outline
The A output is a PCBWriter object with export metadata. outputPath is the path to the generated files.
PCBWriter Object
The PCBWriter object controls export settings.
Properties
| Property | Description | |
|---|---|---|
Design | Struct containing the PCB design data | |
Writer | The PCB service writer (output format) | |
Connector | Cell array of connector objects | |
UseDefaultConnector | Use default connector if none specified | |
ComponentBoundaryLineWidth | Outline line width | |
PCBMargin | Extra board margin around component (m) | |
Soldermask | 'both', 'top', 'bottom', or 'none' | |
Solderpaste | Logical — generate solderpaste layer | |
Font | Font for text on silkscreen |
PCBConnectors — Connector Catalog
Attach standard RF connectors to your exported board.
Available Connectors (25 Built-in Types)
| Category | Connectors | |
|---|---|---|
| SMA 5-Pad | SMA, SMA_Cinch, SMA_Multicomp | |
| SMA Edge-Launch | SMAEdge, SMAEdge_Cinch, SMAEdge_Samtec, SMAEdge_Amphenol, SMAEdge_Linx | |
| SMB/SMC | SMB_Johnson, SMB_Pasternack, SMC_Pasternack, SMCEdge_Pasternack | |
| MMCX | MMCX_Cinch, MMCX_Samtec | |
| IPX/U.FL | IPX_Jack_Lighthorse, IPX_Plug_Lighthorse, UFL_Hirose | |
| Coaxial Cable | Coax_RG11, Coax_RG58, Coax_RG59, Coax_RG174 | |
| Semi-Rigid | Semi_020, Semi_034, Semi_047, Semi_118 |
Access via PCBConnectors.<type>. All connectors have common properties: Type, Mfg, Part, Annotation, Impedance (default: 50 ohm), Datasheet, Purchase.
5-pad properties: TotalSize, GroundPadSize, SignalPadDiameter, PinHoleDiameter, IsolationRing, VerticalGroundStrips
Edge-launch properties: GroundPadSize, GroundSeparation, GroundPadIsolation, SignalPadSize, SignalGap, SignalLineWidth, EdgeLocation ('north'|'south'|'east'|'west'), ExtendBoardProfile, FillGroundSide
Coax properties: PinDiameter, DielectricDiameter, ShieldDiameter, AddThermals, ThermalsDiameter, ThermalsBridgeWidth
Connectors are placed at feed locations during Gerber export. They define pad footprints and drill patterns.
PCBServices — Fabrication Service Writers
Writers configure output for specific fabrication services.
Available Services (5 Built-in Writers)
| Service | Description | |
|---|---|---|
PCBServices.GerbLookWriter | GerbLook online viewer | |
PCBServices.ZofZWriter | ZofZ 3-D Gerber viewer | |
PCBServices.AdvancedCircuitsWriter | Advanced Circuits manufacturing | |
PCBServices.SeeedWriter | Seeed Studio manufacturing | |
PCBServices.OSHParkWriter | OSH Park manufacturing |
Each writer formats Gerber files according to the fab house's naming and layer conventions.
Key PCBServices properties: Filename, CoordUnits ('in'/'mm'), CoordPrecision, CreateArchiveFile, DefaultViaDiameter, UseExcellon, BoardProfileFile, SameExtensionForGerberFiles, PostWriteFcn, Files
% Customize a service writerw = PCBServices.AdvancedCircuitsWriter;w.Filename = 'my_antenna';w.CoordUnits = 'mm';w.CoordPrecision = [3 4];
RF Connectors
RFConnector models coaxial connectors (SMA, SMB, etc.) that attach to PCB structures.
rc = RFConnector;rc.InnerRadius = 5e-4; % Center pin radiusrc.OuterRadius = 1.5e-3; % Outer conductor radiusrc.PinLength = 3e-3; % Pin insertion depthrc.PinFootprint = 'Taper'; % 'Taper' or 'Circular'rc.EpsilonR = 1.7341; % Dielectric fill permittivityrc.Impedance = 50; % Characteristic impedance
Attaching to a Catalog Object
Attaching a Connector to a catalog object (e.g., microstripLine) requires IsShielded = true:
m = microstripLine;m.IsShielded = true; % Required before setting Connectorm.Connector = RFConnector;show(m);
Design for a pcbComponent
design() auto-tunes connector dimensions to match a PCB object. This requires an FEM-based pcbComponent — catalog objects like microstripLine do not support FEM:
pcb = pcbComponent; % Must be pcbComponent with SolverType='FEM'pcb.SolverType = 'FEM';rc = design(RFConnector, pcb);
Complete Design-to-Manufacturing Workflow
%% Design a filterf = design(filterCoupledLine, 3e9);%% Analyzefreq = 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});
Pitfalls
- Connector compatibility: Not all connectors work with all board thicknesses. SMA edge-launch connectors assume standard substrate heights. Check connector footprint dimensions match your board.
- Gerber aperture limitations: Complex curved geometries may be approximated with polygons in Gerber format. Very fine features may lose resolution during export — check minimum feature size for your target fab service.
- Multiple connectors need cell array: When passing multiple connectors to
gerberWrite, wrap them in a cell array:gerberWrite(pcb, W, {C1, C2}). An object array[C1, C2]will error.
- gerberWrite requires pcbComponent or pcbStack:
gerberWritedoes not work on catalog objects (e.g.,microstripLine,filterHairpin). Convert topcbComponentfirst if needed.
- Connector requires IsShielded on catalog objects. Setting
obj.Connector = RFConnectoron a catalog object (microstripLine, etc.) will error with "SolverType property must be set to 'FEM'" unlessobj.IsShielded = trueis set first. Catalog objects do not support FEM directly — useIsShielded = truefor MoM shielded mode.design(RFConnector, obj)only works withpcbComponentobjects that haveSolverType='FEM'.
- IsShielded + finite conductivity conflict. Setting
IsShielded = trueactivates an internal FEM-like solver path. If you also setConductor = metal("Copper")(finite conductivity), you will get "FEM solver does not support finite conductivity. Set conductivity of conductor to Inf." LeaveConductorat the default (PEC) when usingIsShielded = trueorConnector.
- gerberWrite on pcbcascade results.
pcbcascadereturns apcbComponent. This can be passed directly togerberWrite. However, verify the port count and connector count match — pcbcascade merges ports and removes connected ports, so the surviving port count may differ from the input components.
- IsShielded switches solver to FEM — affects sweep options. Setting
IsShielded = truechanges the internal solver to FEM. The'SweepOption', 'interp'interpolated sweep is designed for MoM and may not be available or behave differently with FEM. Run S-parameter analysis before addingIsShieldedfor export, or use a discrete frequency sweep with FEM.
Related Skills
matlab-read-pcb-layout— Import layouts from Gerber, ODB++, and Allegromatlab-assemble-pcb-layout— Building custom PCB structures from shapesmatlab-analyze-em— Running EM analysis before export
Copyright 2026 The MathWorks, Inc.