358 lines
7.8 KiB
YAML
358 lines
7.8 KiB
YAML
# KiBot configuration for 2/4/6 layer boards
|
|
# Works with Gitea CI/CD pipeline
|
|
|
|
kibot:
|
|
version: 1
|
|
|
|
global:
|
|
# Filters for ERC/DRC warnings
|
|
filters:
|
|
- number: 1007
|
|
- number: 1015
|
|
- number: 58
|
|
- number: 61
|
|
|
|
# Default output directory - will be overridden by command line
|
|
# output: 'Fabrication' # Commented out to use command line option
|
|
|
|
# Variant for assembly if needed
|
|
variant: ''
|
|
|
|
# Date format for filenames
|
|
date_format: '%Y-%m-%d_%H-%M-%S'
|
|
|
|
preflight:
|
|
run_erc: true
|
|
run_drc: true
|
|
check_zone_fills: true
|
|
ignore_unconnected: false
|
|
update_xml: true
|
|
erc:
|
|
warnings_as_errors: false
|
|
# Continue even if ERC fails
|
|
dont_stop: true
|
|
drc:
|
|
warnings_as_errors: false
|
|
# Continue even if DRC fails
|
|
dont_stop: true
|
|
|
|
outputs:
|
|
# Schematic outputs
|
|
- name: 'print_sch'
|
|
comment: "Schematic PDF"
|
|
type: pdf_sch_print
|
|
dir: Schematic
|
|
options:
|
|
output: '%f-schematic.%x'
|
|
|
|
- name: 'print_sch_svg'
|
|
comment: "Schematic SVG"
|
|
type: svg_sch_print
|
|
dir: Schematic
|
|
options:
|
|
output: '%f-schematic.%x'
|
|
|
|
# PCB 2D renders
|
|
- name: 'pcb_top'
|
|
comment: "PCB render top"
|
|
type: pcbdraw
|
|
dir: PCB/2D_render
|
|
options:
|
|
output: '%f-top.%x'
|
|
format: svg
|
|
show_components: all
|
|
dpi: 300
|
|
|
|
- name: 'pcb_bottom'
|
|
comment: "PCB render bottom"
|
|
type: pcbdraw
|
|
dir: PCB/2D_render
|
|
options:
|
|
output: '%f-bottom.%x'
|
|
format: svg
|
|
bottom: true
|
|
show_components: all
|
|
dpi: 300
|
|
|
|
# PCB PDF documentation
|
|
- name: 'print_pcb'
|
|
comment: "PCB PDF"
|
|
type: pdf_pcb_print
|
|
dir: PCB/PDF
|
|
options:
|
|
output: '%f-pcb.%x'
|
|
plot_sheet_reference: true
|
|
monochrome: false
|
|
pages:
|
|
- layers:
|
|
- F.Cu
|
|
- F.Paste
|
|
- F.Silkscreen
|
|
- Edge.Cuts
|
|
sheet: 'Front copper'
|
|
- layers:
|
|
- B.Cu
|
|
- B.Paste
|
|
- B.Silkscreen
|
|
- Edge.Cuts
|
|
mirror: true
|
|
sheet: 'Bottom copper'
|
|
- layers:
|
|
- In1.Cu
|
|
- Edge.Cuts
|
|
sheet: 'Inner layer 1'
|
|
skip_if_no_layer: true
|
|
- layers:
|
|
- In2.Cu
|
|
- Edge.Cuts
|
|
sheet: 'Inner layer 2'
|
|
skip_if_no_layer: true
|
|
- layers:
|
|
- In3.Cu
|
|
- Edge.Cuts
|
|
sheet: 'Inner layer 3'
|
|
skip_if_no_layer: true
|
|
- layers:
|
|
- In4.Cu
|
|
- Edge.Cuts
|
|
sheet: 'Inner layer 4'
|
|
skip_if_no_layer: true
|
|
|
|
# Gerber files - automatically handles 2/4/6 layers
|
|
- name: 'gerbers'
|
|
comment: "Gerber files"
|
|
type: gerber
|
|
dir: Gerbers
|
|
options:
|
|
output: '%f%i.%x'
|
|
exclude_edge_layer: true
|
|
exclude_pads_from_silkscreen: true
|
|
plot_sheet_reference: false
|
|
plot_footprint_refs: true
|
|
plot_footprint_values: false
|
|
force_plot_invisible_refs_vals: false
|
|
tent_vias: true
|
|
use_protel_extensions: false
|
|
create_gerber_job_file: true
|
|
disable_aperture_macros: true
|
|
gerber_precision: 4.6
|
|
use_gerber_x2_attributes: false
|
|
use_gerber_net_attributes: false
|
|
line_width: 0.1
|
|
subtract_mask_from_silk: true
|
|
layers:
|
|
# Copper layers - automatically included if present
|
|
- F.Cu
|
|
- B.Cu
|
|
- In1.Cu
|
|
- In2.Cu
|
|
- In3.Cu
|
|
- In4.Cu
|
|
# Technical layers
|
|
- F.Paste
|
|
- B.Paste
|
|
- F.Silkscreen
|
|
- B.Silkscreen
|
|
- F.Mask
|
|
- B.Mask
|
|
- Edge.Cuts
|
|
- User.Comments
|
|
- F.Fab
|
|
- B.Fab
|
|
|
|
# Excellon drill files
|
|
- name: 'drill'
|
|
comment: "Drill files"
|
|
type: excellon
|
|
dir: Gerbers
|
|
options:
|
|
output: '%f%i.%x'
|
|
metric_units: true
|
|
minimal_header: false
|
|
mirror_y_axis: false
|
|
report:
|
|
filename: '%f-drill_report.txt'
|
|
pth_and_npth_single_file: false
|
|
|
|
# Drill map
|
|
- name: 'drill_map'
|
|
comment: "Drill map"
|
|
type: gerb_drill
|
|
dir: Gerbers
|
|
options:
|
|
output: '%f-drill_map.%x'
|
|
|
|
# Pick and place files
|
|
- name: 'position'
|
|
comment: "Pick and place file"
|
|
type: position
|
|
dir: Assembly
|
|
options:
|
|
output: '%f-position-%i.%x' # Added %i to differentiate front/back files
|
|
format: CSV
|
|
units: millimeters
|
|
separate_files_for_front_and_back: true
|
|
only_smd: false
|
|
|
|
# Interactive BOM
|
|
- name: 'ibom'
|
|
comment: "Interactive BOM"
|
|
type: ibom
|
|
dir: Assembly
|
|
options:
|
|
output: '%f-ibom.%x'
|
|
dark_mode: false
|
|
hide_pads: false
|
|
show_fabrication: false
|
|
hide_silkscreen: false
|
|
highlight_pin1: true
|
|
no_redraw_on_drag: false
|
|
board_rotation: 0
|
|
check_extra_fields: false
|
|
include_tracks: false
|
|
include_nets: false
|
|
|
|
# 3D model
|
|
- name: 'step'
|
|
comment: "3D STEP model"
|
|
type: step
|
|
dir: 3D
|
|
options:
|
|
output: '%f-3D.%x'
|
|
metric_units: true
|
|
origin: grid
|
|
no_virtual: true
|
|
|
|
# Board characteristics report
|
|
- name: 'report'
|
|
comment: "Board report"
|
|
type: report
|
|
dir: .
|
|
options:
|
|
output: '%f-report.%x'
|
|
do_convert: true
|
|
|
|
# Schematic diff
|
|
- name: 'sch_diff'
|
|
comment: "Schematic diff PDF"
|
|
type: diff
|
|
dir: DIFF
|
|
disabled_by_default: false
|
|
options:
|
|
output: '%f-schematic-diff.%x'
|
|
format: PDF
|
|
diff_mode: 'red_green'
|
|
old: 'HEAD~1'
|
|
new: 'HEAD'
|
|
cache_dir: '.cache'
|
|
add_link_id: true
|
|
only_different: true
|
|
|
|
# PCB diff
|
|
- name: 'pcb_diff'
|
|
comment: "PCB diff PDF"
|
|
type: diff
|
|
dir: DIFF
|
|
disabled_by_default: false
|
|
options:
|
|
output: '%f-pcb-diff.%x'
|
|
format: PDF
|
|
diff_mode: 'red_green'
|
|
old: 'HEAD~1'
|
|
new: 'HEAD'
|
|
cache_dir: '.cache'
|
|
pcb: true
|
|
only_different: true
|
|
|
|
# JLCPCB fabrication package
|
|
- name: 'jlcpcb_gerbers'
|
|
comment: "Gerbers for JLCPCB"
|
|
type: gerber
|
|
dir: JLCPCB
|
|
options:
|
|
output: '%f%i.%x'
|
|
exclude_edge_layer: false
|
|
exclude_pads_from_silkscreen: true
|
|
plot_sheet_reference: false
|
|
plot_footprint_refs: true
|
|
plot_footprint_values: false
|
|
force_plot_invisible_refs_vals: false
|
|
tent_vias: true
|
|
use_protel_extensions: true # JLCPCB prefers Protel extensions
|
|
create_gerber_job_file: false # JLCPCB doesn't need this
|
|
disable_aperture_macros: true
|
|
gerber_precision: 4.6
|
|
use_gerber_x2_attributes: false
|
|
use_gerber_net_attributes: false
|
|
line_width: 0.1
|
|
subtract_mask_from_silk: true
|
|
layers:
|
|
- F.Cu
|
|
- B.Cu
|
|
- In1.Cu
|
|
- In2.Cu
|
|
- In3.Cu
|
|
- In4.Cu
|
|
- F.Paste
|
|
- B.Paste
|
|
- F.Silkscreen
|
|
- B.Silkscreen
|
|
- F.Mask
|
|
- B.Mask
|
|
- Edge.Cuts
|
|
|
|
# JLCPCB drill files
|
|
- name: 'jlcpcb_drill'
|
|
comment: "Drill files for JLCPCB"
|
|
type: excellon
|
|
dir: JLCPCB
|
|
options:
|
|
output: '%f%i.%x'
|
|
metric_units: true
|
|
minimal_header: false
|
|
mirror_y_axis: false
|
|
pth_and_npth_single_file: false # JLCPCB prefers separate files
|
|
|
|
# JLCPCB ZIP file
|
|
- name: 'jlcpcb_zip'
|
|
comment: "JLCPCB fabrication ZIP"
|
|
type: compress
|
|
dir: .
|
|
options:
|
|
output: '%f_JLCPCB_compress.%x'
|
|
format: ZIP
|
|
files:
|
|
- source: JLCPCB/*
|
|
dest: /
|
|
|
|
# Fabrication package (ZIP)
|
|
- name: 'fabrication'
|
|
comment: "Fabrication package"
|
|
type: compress
|
|
dir: .
|
|
options:
|
|
output: '%f-fabrication.%x'
|
|
format: ZIP
|
|
files:
|
|
- source: Gerbers/*
|
|
dest: /
|
|
- source: PCB/PDF/*
|
|
dest: /Documentation
|
|
- source: Assembly/*
|
|
dest: /Assembly
|
|
- source: 3D/*
|
|
dest: /3D
|
|
|
|
# Variants for different layer counts (optional)
|
|
variants:
|
|
- name: 2layer
|
|
comment: "2 layer board variant"
|
|
type: kibom
|
|
|
|
- name: 4layer
|
|
comment: "4 layer board variant"
|
|
type: kibom
|
|
|
|
- name: 6layer
|
|
comment: "6 layer board variant"
|
|
type: kibom |