Generating, verifying, and releasing complete manufacturing data packages for PCB fabrication and assembly
The fabrication output package is the final deliverable that translates your PCB design into manufacturing instructions. Even a perfectly designed board will be manufactured incorrectly if the output files are wrong, incomplete, or ambiguous. This tutorial covers the complete output generation workflow, file verification procedures, and common errors that cause manufacturing problems.
| File Category | Format | Purpose | Recipient |
|---|---|---|---|
| Copper layers | Gerber RS-274X | Defines copper pattern for each layer | PCB fabricator |
| Solder mask | Gerber RS-274X | Defines mask openings (top and bottom) | PCB fabricator |
| Silkscreen | Gerber RS-274X | Defines legend/marking (top and bottom) | PCB fabricator |
| Solder paste | Gerber RS-274X | Stencil openings for paste application | Assembly house |
| Board outline | Gerber RS-274X | Mechanical board outline and cutouts | PCB fabricator |
| Drill files | Excellon (NC Drill) | Drill locations, sizes, and types | PCB fabricator |
| Pick-and-place | CSV/TXT | Component positions and rotations | Assembly house |
| Netlist (test) | IPC-D-356 | Net connectivity for electrical test | PCB fabricator (test) |
| BOM | Excel/CSV | Component identification and quantities | Assembly house |
| Fab drawing | PDF/Gerber | Manufacturing notes and specifications | PCB fabricator |
| Assembly drawing | Component placement reference | Assembly house | |
| Stackup spec | PDF/Document | Layer stack details and impedance targets | PCB fabricator |
Gerber files in RS-274X format (or Gerber X2 extended format) are generated for every required layer. Layer naming follows industry convention. All apertures are embedded (not external). Files open correctly in a Gerber viewer with proper alignment.
| Layer | Filename Convention | Extension | Content |
|---|---|---|---|
| Top Copper | project_Top_Cu.gbr | .GTL or .gbr | Layer 1 copper pattern |
| Inner Layer 2 | project_In2_Cu.gbr | .G2L or .gbr | Layer 2 (GND plane) |
| Inner Layer 3 | project_In3_Cu.gbr | .G3L or .gbr | Layer 3 signal |
| Inner Layer 4 | project_In4_Cu.gbr | .G4L or .gbr | Layer 4 (Power plane) |
| Inner Layer 5 | project_In5_Cu.gbr | .G5L or .gbr | Layer 5 (GND plane) |
| Inner Layer 6 | project_In6_Cu.gbr | .G6L or .gbr | Layer 6 signal |
| Inner Layer 7 | project_In7_Cu.gbr | .G7L or .gbr | Layer 7 (Power plane) |
| Bottom Copper | project_Bot_Cu.gbr | .GBL or .gbr | Layer 8 copper pattern |
| Top Solder Mask | project_Top_Mask.gbr | .GTS or .gbr | Top mask openings |
| Bottom Solder Mask | project_Bot_Mask.gbr | .GBS or .gbr | Bottom mask openings |
| Top Silkscreen | project_Top_Silk.gbr | .GTO or .gbr | Top legend |
| Bottom Silkscreen | project_Bot_Silk.gbr | .GBO or .gbr | Bottom legend |
| Top Paste | project_Top_Paste.gbr | .GTP or .gbr | Top stencil openings |
| Bottom Paste | project_Bot_Paste.gbr | .GBP or .gbr | Bottom stencil openings |
| Board Outline | project_Edge_Cuts.gbr | .GKO or .gbr | Board outline + cutouts |
Recommended Gerber output settings:
===================================
Format: RS-274X (embedded apertures) or Gerber X2
Coordinate: Metric (mm) preferred for modern fabs; imperial (inch) also accepted
Resolution: 4.6 (4 integer, 6 decimal in metric = 0.001um precision)
or 2.5 (2 integer, 5 decimal in imperial = 0.00001 inch)
Units: Millimeters (preferred) or Inches
Zero suppress: Leading zero suppression (most common)
Mirroring: NEVER mirror any layer in output (fab does this for bottom layers)
Polarity: Positive (dark is copper) for signal layers
Negative (clear is opening) sometimes used for plane layers
(Check fabricator preference - most prefer all positive)
File > Fabrication Outputs > Gerber Files. Configure: Format = RS-274X, Units = Metric/mm, Format = 4:6. Select all required layers in the Layers tab. Under "Apertures", ensure "Embedded" is selected. Under "Advanced", set film size to match board dimensions + margin. Generate to project Output folder.
File > Fabrication Outputs > Gerbers (.gbr). Select output directory. Check all required layers in the Layers list. Set coordinate format to 4.6 (mm). Enable "Subtract soldermask from silkscreen" to prevent silk on pads in output. Enable "Use Protel filename extensions" for maximum compatibility. Click "Plot" then "Generate Drill Files" for Excellon.
Manufacture > Artwork. Define film parameters for each layer. Set format to RS-274X. Configure device type and resolution. Under "General Parameters" set coordinates and precision. Use "Create Artwork" to generate all defined films. Verify with Manufacture > Artwork > View Artwork.
NC drill files in Excellon format contain all drill hits with correct sizes, positions, and types (plated vs non-plated). Drill file format (units, zero suppression, coordinate format) matches the Gerber files. Separate files for PTH and NPTH. Tool table is complete.
| File | Contents | Format |
|---|---|---|
| PTH (Plated Through Hole) | All plated holes: vias, component through-holes | Excellon 2 |
| NPTH (Non-Plated) | Mounting holes, tooling holes, slots (non-plated) | Excellon 2 |
| Blind/Buried (if used) | Separate file per drill span (L1-L3, L6-L8, etc.) | Excellon 2 |
| Back-drill (if used) | Back-drill locations with depth specification | Excellon 2 + notes |
Excellon Drill File Header Example:
M48 ; Header start
METRIC,LZ ; Metric units, Leading Zero suppression
T1C0.200 ; Tool 1: 0.200mm diameter
T2C0.300 ; Tool 2: 0.300mm diameter
T3C0.400 ; Tool 3: 0.400mm diameter
T4C1.000 ; Tool 4: 1.000mm diameter
T5C3.200 ; Tool 5: 3.200mm (mounting hole)
% ; End of header
T1 ; Select tool 1
X015000Y020000 ; Drill at X=15.000, Y=20.000
X015500Y020000 ; Drill at X=15.500, Y=20.000
...
T2 ; Select tool 2
X010000Y010000
...
M30 ; End of file
Gerber files generated in millimeters but drill file generated in inches (or vice versa). The result: all drill holes are offset from their pads by a scaling factor. This error may not be obvious if only checking a few holes near the origin. Always verify at LEAST the four board corners and one central point that drill hits align precisely with pad centers. Most Gerber viewers have an alignment check overlay feature.
Component centroid file includes all SMD components with correct X/Y position, rotation angle, and board side (top/bottom). Coordinates are spot-checked against Gerber overlay for at least 5 components on each side. File format matches assembly house requirements.
Standard CSV Format:
RefDes, PosX(mm), PosY(mm), Rotation(deg), Side, Value, Package
C1, 25.400, 12.700, 0, Top, 100nF, 0402
C2, 25.400, 14.200, 180, Top, 100nF, 0402
U1, 50.000, 40.000, 0, Top, STM32F4, LQFP-64
U2, 30.000, 25.000, 90, Bottom, LM3671, SOT-23-5
R1, 22.000, 10.000, 270, Top, 10K, 0402
...
Required columns:
- Reference Designator (unique identifier)
- X Position (component center/origin, in mm or mils)
- Y Position (component center/origin, in mm or mils)
- Rotation (degrees, CCW from positive X axis)
- Side (Top or Bottom)
Optional but recommended:
- Component Value
- Package/Footprint name
- Part Number / MPN
Different EDA tools and assembly houses use different rotation conventions. Altium uses the component's zero rotation as placed in the library, while some assembly machines reference rotation from the tape orientation. A 0-degree rotation in the file might mean "as drawn" or might mean "with pin 1 at a specific compass direction." Always confirm the rotation convention with your assembly house and spot-check that the rotation values in your file result in correct placement orientation.
IPC-D-356 netlist is generated for bare-board electrical testing. All nets are present in the file. Net count matches the design. Test point access provides adequate coverage for flying-probe or fixture testing.
The IPC-D-356 netlist file tells the bare-board electrical tester which points should be connected (net assignments) and which should be isolated. The tester verifies:
IPC-D-356 Format Example:
P JOBNAME UNITS=MM
999
327VCC A01X+015000Y+020000X0060Y0060R000 S1
327VCC A02X+015500Y+020000X0050Y0050R000 S1
327GND A01X+010000Y+010000X0060Y0060R000 S1
327GND A02X+010500Y+010000X0050Y0050R000 S1
327NET1 A01X+020000Y+030000X0040Y0040R000 S1
327NET1 A02X+025000Y+030000X0040Y0040R000 S1
999
Each record (327 type) contains:
- Net name
- Access point designation
- X,Y coordinates of test point
- Pad dimensions
- Rotation
- Side (S1=top, S2=bottom)
A complete fabrication drawing includes all manufacturing specifications: material, surface finish, copper weights, impedance requirements, IPC class, drill table, stackup cross-section, and any special processing requirements. No critical information is missing or ambiguous.
Fabrication Drawing Checklist:
================================
GENERAL INFORMATION:
[ ] Board name and part number
[ ] Drawing revision and date
[ ] Board dimensions (overall L x W x T)
[ ] Number of layers
[ ] IPC Class (Class 2 or Class 3)
[ ] Surface finish (HASL, ENIG, OSP, Immersion Silver, etc.)
[ ] Solder mask color (both sides)
[ ] Silkscreen color (both sides)
MATERIAL SPECIFICATION:
[ ] Base material (FR-4, High-Tg, Rogers, etc.)
[ ] Specific laminate (e.g., "Isola 370HR" or "TU-872")
[ ] Tg requirement (e.g., "Tg >= 170C by DSC")
[ ] UL flame rating (UL94 V-0 typical)
[ ] Dk/Df values at operating frequency (for controlled impedance)
COPPER AND STACKUP:
[ ] Stackup cross-section diagram with all layer labels
[ ] Copper weight per layer (oz)
[ ] Dielectric thickness between layers (mil or mm)
[ ] Core and prepreg identification (style numbers)
[ ] Overall board thickness with tolerance (e.g., 1.6mm +/- 10%)
IMPEDANCE CONTROL:
[ ] Impedance table: Layer, Type (SE/Diff), Target, Tolerance, Width, Spacing
[ ] Impedance test coupon requirement
[ ] TDR measurement report required (yes/no)
DRILL INFORMATION:
[ ] Drill table (all tool sizes, plated/non-plated, count)
[ ] Minimum and maximum drill sizes
[ ] Aspect ratio of smallest via
[ ] Blind/buried via specification (if used)
[ ] Back-drill specification (if used)
[ ] Slot routing specification
SPECIAL PROCESSES:
[ ] Via fill type (if via-in-pad used) per IPC-4761
[ ] Edge plating (if required)
[ ] Selective gold plating (e.g., connector fingers)
[ ] Carbon printing (for contacts/switches)
[ ] Peelable mask (for selective soldering areas)
[ ] Countersink/counterbore details
| Finish | Cost | Shelf Life | Flat Pads | Fine Pitch | Wire Bonding |
|---|---|---|---|---|---|
| HASL (SnPb) | Low | 12 months | Poor | No (>0.5mm only) | No |
| HASL (Lead-Free) | Low | 12 months | Poor | No (>0.5mm only) | No |
| ENIG | Medium-High | 12+ months | Excellent | Yes | Yes |
| OSP | Low | 6 months | Good | Yes | No |
| Immersion Silver | Medium | 6 months | Good | Yes | No |
| Immersion Tin | Medium | 6 months | Good | Yes | No |
| Hard Gold (Edge) | High | 24+ months | N/A | N/A | Yes |
Drawing includes full stackup cross-section with dimensions, impedance table with 5 profiles, drill chart, material callout ("Isola 370HR per IPC-4101/126"), surface finish spec (ENIG per IPC-4552), IPC-6012 Class 2 compliance, all special notes (via fill, back-drill). Fabricator can quote and build without questions.
Drawing states "8-layer FR-4, ENIG, 1.6mm" with no impedance table, no stackup detail, no material spec, no IPC class. Fabricator emails 12 questions that delay production by a week. Board arrives with wrong Dk material, impedance 15% off target, and 2.0oz copper on signal layers (wrong - too thick).
A dedicated stackup document (separate from or included in the fab drawing) specifies every layer with material, thickness, copper weight, and function. Impedance calculations reference this stackup. Document is sent to fabricator for confirmation before production.
STACKUP SPECIFICATION
=====================
Project: [Name] | Rev: [A] | Date: [2024-03-15]
Total Layers: 8 | Total Thickness: 1.57mm (+/- 10%)
Material: Isola 370HR | Dk: 4.04 @ 1GHz | Df: 0.012
Layer | Type | Function | Cu (oz) | Thickness | Material
------+-----------+-------------+---------+-----------+---------
L1 | Signal | High-Speed | 0.5 | 17.5um | Copper
| Prepreg | | | 99um | 2x1080(62%RC)
L2 | Plane | GND | 1.0 | 35um | Copper
| Core | | | 127um | 370HR core
L3 | Signal | General | 0.5 | 17.5um | Copper
| Prepreg | | | 508um | 2x7628(48%RC)
L4 | Plane | VCC (split) | 1.0 | 35um | Copper
| Core | | | 127um | 370HR core
L5 | Plane | GND | 1.0 | 35um | Copper
| Prepreg | | | 508um | 2x7628(48%RC)
L6 | Signal | General | 0.5 | 17.5um | Copper
| Core | | | 127um | 370HR core
L7 | Plane | VCC2(split) | 1.0 | 35um | Copper
| Prepreg | | | 99um | 2x1080(62%RC)
L8 | Signal | High-Speed | 0.5 | 17.5um | Copper
IMPEDANCE TARGETS:
Layer 1 (Microstrip): 50 ohm SE @ 5.5mil width, ref L2 GND
Layer 1 (Diff pair): 100 ohm @ 4.0mil/5.0mil W/S, ref L2 GND
Layer 3 (Stripline): 50 ohm SE @ 4.5mil width, ref L2+L4
Layer 3 (Diff pair): 100 ohm @ 3.5mil/5.0mil W/S, ref L2+L4
Assembly drawings for both top and bottom sides show component outlines with reference designators, polarity marks, and special assembly instructions. Drawings are readable at 1:1 scale with clear orientation reference.
Copper pours (ground fills, power planes) are not automatically regenerated before Gerber export in some tools. If you made routing changes after the last pour regeneration, the Gerber will show the old pour shape - potentially with clearance violations, islands, or missing connections. ALWAYS regenerate ALL copper pours immediately before generating fabrication outputs. In KiCad: Edit > Fill All Zones. In Altium: Tools > Polygon Pours > Repour All. In Allegro: Shape > Global Dynamic Shape Parameters > Repour.
| Error | Symptom | Prevention |
|---|---|---|
| Missing layer in output | Fabricator asks "where is layer 5?" | Use output template that includes ALL layers |
| Wrong units (mm vs inch) | Board manufactured 25.4x too large/small | Verify units in header of Gerber and drill files |
| Mirrored bottom layer | Bottom components in wrong orientation | Never mirror layers - output as-designed |
| Stale copper pour | Missing ground connections, DRC violations | Regenerate all pours before output |
| Old netlist in output | Missing nets, wrong connectivity | Sync from schematic immediately before output |
| Paste openings wrong | Too much/little solder, defects | Verify paste layer has correct aperture reductions |
| Board outline not closed | Fabricator cannot determine board shape | Verify closed outline polygon before output |
| Duplicate drill hits | Over-drilled holes, weakened barrels | Check drill file for duplicate coordinates |