Files
C64PSU/kibot.yaml
grabowski c8e56447bf
All checks were successful
KiBot PCB Generation / generate (push) Successful in 1m31s
KiBot PCB Generation / deploy (push) Successful in 20s
dl and diff
2025-09-08 16:40:36 +07:00

554 lines
14 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
# Generic BOM in CSV format
- name: 'bom_csv'
comment: "Bill of Materials in CSV format"
type: bom
dir: BoM/Generic
options:
output: '%f_bom.%x'
format: CSV
separator: ','
ref_separator: ','
group_fields: ['Value', 'Footprint', 'Tolerance', 'Voltage']
columns:
- field: 'References'
name: 'Reference'
- field: 'Value'
name: 'Value'
- field: 'Quantity Per PCB'
name: 'Qty'
- field: 'Footprint'
name: 'Package'
- field: 'Description'
name: 'Description'
- field: 'Manufacturer'
name: 'Manufacturer'
- field: 'MPN'
name: 'Part Number'
- field: 'LCSC'
name: 'LCSC Part'
- field: 'Digikey'
name: 'Digikey Part'
- field: 'Mouser'
name: 'Mouser Part'
# Generic BOM in HTML format
- name: 'bom_html'
comment: "Bill of Materials in HTML format"
type: bom
dir: BoM/Generic
options:
output: '%f_bom.%x'
format: HTML
html:
style: 'modern-blue' # Style for HTML output
datasheet_as_link: 'Datasheet' # Column name for datasheet links
generate_dnf: true
logo: false
title: 'Bill of Materials - %f'
group_fields: ['Value', 'Footprint', 'Tolerance', 'Voltage']
columns:
- field: 'References'
name: 'Reference'
- field: 'Value'
name: 'Value'
- field: 'Quantity Per PCB'
name: 'Qty'
- field: 'Footprint'
name: 'Package'
- field: 'Description'
name: 'Description'
- field: 'Manufacturer'
name: 'Manufacturer'
- field: 'MPN'
name: 'Part Number'
- field: 'LCSC'
name: 'LCSC Part'
- field: 'Digikey'
name: 'Digikey Part'
- field: 'Mouser'
name: 'Mouser Part'
# Generic BOM in XLSX format
- name: 'bom_xlsx'
comment: "Bill of Materials in Excel format"
type: bom
dir: BoM/Generic
options:
output: '%f_bom.%x'
format: XLSX
xlsx:
datasheet_as_link: 'Datasheet' # Column name for datasheet links
generate_dnf: true
logo: false
title: 'Bill of Materials'
max_col_width: 50
highlight_empty: true
group_fields: ['Value', 'Footprint', 'Tolerance', 'Voltage']
columns:
- field: 'References'
name: 'Reference'
- field: 'Value'
name: 'Value'
- field: 'Quantity Per PCB'
name: 'Qty'
- field: 'Footprint'
name: 'Package'
- field: 'Description'
name: 'Description'
- field: 'Manufacturer'
name: 'Manufacturer'
- field: 'MPN'
name: 'Part Number'
- field: 'LCSC'
name: 'LCSC Part'
- field: 'Digikey'
name: 'Digikey Part'
- field: 'Mouser'
name: 'Mouser Part'
- field: 'Datasheet'
name: 'Datasheet'
# Download datasheets
- name: 'download_datasheets'
comment: "Download component datasheets"
type: download_datasheets
dir: BoM/Datasheets
run_by_default: true
priority: 60
category: 'Schematic/docs'
options:
field: 'Datasheet' # Field containing datasheet URLs
output: 'datasheet_index.csv' # CSV file listing downloads
dnf_filter: '_none' # Don't filter DNF parts
# 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
category: 'Schematic/docs'
run_by_default: true
priority: 50
layers: [] # Empty for schematic (not PCB)
options:
output: '%f-schematic-diff.%x'
format: 'pdf' # Output format: pdf, svg, ps, or png
pcb: false # This is for schematic
old: 'HEAD~1' # Old version to compare (previous commit)
new: 'HEAD' # New version (current)
cache_dir: '.cache'
add_link_id: true # Add link IDs to the generated diff
only_different: true # Only include pages that changed
threshold: 0 # Difference threshold (0 = any difference)
fuzz: 5 # Fuzzy matching tolerance in pixels
diff_mode: 'red_green' # How to show differences
old_color: '#FF0000' # Color for old/removed items
new_color: '#00FF00' # Color for new/added items
# PCB diff
- name: 'pcb_diff'
comment: "PCB diff PDF"
type: diff
dir: DIFF
category: 'PCB/docs'
run_by_default: true
priority: 50
layers: 'selected' # Use selected layers below
options:
output: '%f-pcb-diff.%x'
format: 'pdf' # Output format
pcb: true # This is for PCB
old: 'HEAD~1' # Old version to compare
new: 'HEAD' # New version
cache_dir: '.cache'
add_link_id: false # Not used for PCB
only_different: true # Only include layers that changed
threshold: 0 # Difference threshold
fuzz: 5 # Fuzzy matching tolerance
diff_mode: 'red_green' # Visual diff mode
old_color: '#FF0000' # Color for removed items
new_color: '#00FF00' # Color for added items
layers: # Which PCB layers to include in diff
- 'F.Cu'
- 'B.Cu'
- 'In1.Cu'
- 'In2.Cu'
- 'In3.Cu'
- 'In4.Cu'
- 'F.Silkscreen'
- 'B.Silkscreen'
- 'F.Mask'
- 'B.Mask'
- 'Edge.Cuts'
- 'F.Courtyard'
- 'B.Courtyard'
- 'F.Fab'
- 'B.Fab'
# Interactive diff using KiRi (HTML output)
- name: 'interactive_diff'
comment: "Interactive HTML diff"
type: diff
dir: DIFF
category: 'PCB/docs'
run_by_default: false # Optional - can be slow
priority: 40
layers: 'all' # Include all layers for interactive view
options:
output: '%f-interactive-diff.%x'
format: 'html' # HTML format for interactive viewing
pcb: true
old: 'HEAD~1'
new: 'HEAD'
cache_dir: '.cache'
only_different: true
diff_mode: 'stats' # Show statistics in HTML
# SVG diff for web viewing
- name: 'svg_diff'
comment: "SVG diff for web"
type: diff
dir: DIFF
category: 'PCB/docs'
run_by_default: false
priority: 40
layers: 'copper' # Only copper layers for web view
options:
output: '%f-diff.%x'
format: 'svg' # SVG format for web embedding
pcb: true
old: 'HEAD~1'
new: 'HEAD'
cache_dir: '.cache'
only_different: true
diff_mode: 'red_green'
old_color: '#FF0000'
new_color: '#00FF00'
zones: 'fill' # How to handle zones: fill, outline, or none
# 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