Add Kibot automation

This commit is contained in:
Matt Harlum 2022-12-28 15:29:50 +01:00
parent 4cc533e5ae
commit e73d2a81aa
3 changed files with 210 additions and 0 deletions

4
Kicad/.gitignore vendored
View File

@ -4,6 +4,7 @@
# Temporary files
*.000
*.bak
*-bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
@ -15,6 +16,9 @@ _autosave-*
*-save.pro
*-save.kicad_pcb
fp-info-cache
*-erc.txt
*-drc.txt
kibot_errors.filter
# Netlist files (exported from Eeschema)
*.net

30
Kicad/Makefile Normal file
View File

@ -0,0 +1,30 @@
PROJECT=GottaGoFaSDZ3
KIBOT_CONF=./kibot/release.kibot.yaml
GERBER_OUTPUT=../Gerbers
DRILLS=$(GERBER_OUTPUT)/$(PROJECT)-NPTH.drl $(GERBER_OUTPUT)/$(PROJECT)-PTH.drl
GERBERS=$(GERBER_OUTPUT)/$(PROJECT)-B_Cu.gbr $(GERBER_OUTPUT)/$(PROJECT)-B_Mask.gbr $(GERBER_OUTPUT)/$(PROJECT)-B_Silkscreen.gbr $(GERBER_OUTPUT)/$(PROJECT)-Edge_Cuts.gbr $(GERBER_OUTPUT)/$(PROJECT)-F_Cu.gbr $(GERBER_OUTPUT)/$(PROJECT)-F_Mask.gbr $(GERBER_OUTPUT)/$(PROJECT)-F_Silkscreen.gbr $(GERBER_OUTPUT)/$(PROJECT)-F_Paste.gbr $(GERBER_OUTPUT)/$(PROJECT)-B_Paste.gbr $(DRILLS)
JLCPCB=$(GERBER_OUTPUT)/$(PROJECT)_bom_jlc.csv $(GERBER_OUTPUT)/$(PROJECT)_cpl_jlc.csv
.PHONY: release
all: $(GERBERS) $(JLCPCB) ../Docs/Schematic.pdf ../ibom/$(PROJECT)-ibom.html
schematic: ../Docs/Schematic.pdf
gerbers: $(GERBERS)
jlcpcb: $(JLCPCB)
ibom: ../ibom/$(PROJECT)-ibom.html
$(GERBERS) ../Docs/PCB.png: $(PROJECT).kicad_pcb
kibot -c $(KIBOT_CONF) Gerbers Drills Image
$(JLCPCB): $(PROJECT).kicad_pcb $(PROJECT).kicad_sch
kibot -c $(KIBOT_CONF) JLCPCB_position JLCPCB_bom
../Docs/Schematic.pdf: $(PROJECT).kicad_sch
kibot -s all -c $(KIBOT_CONF) Schematic
../ibom/$(PROJECT)-ibom.html: $(PROJECT).kicad_pcb
kibot -s all -c $(KIBOT_CONF) IBOM

View File

@ -0,0 +1,176 @@
kibot:
version: 1
filters:
- name: 'exclude_tht'
type: 'generic'
comment: 'Exclude thru-hole parts'
exclude_tht: true
- name: 'fix_rotation'
comment: 'Adjust rotation for JLC'
type: rot_footprint
rotations:
- ["^TSOP-II", 270.0]
- ["^SOT-89", 180.0]
variants:
- name: rotated
comment: 'Just a place holder for the rotation filter'
type: kibom
variant: rotated
pre_transform: 'fix_rotation'
preflight:
check_zone_fills: true
fill_zones: false
run_drc: true
run_erc: true
update_xml: true
ignore_unconnected: true
filters:
- error: 'pin_not_connected'
filter: 'Pin not connected'
- error: 'silk_overlap'
filter: 'Silkscreen overlap'
- error: 'pin_not_driven'
filter: 'Input pin not driven by output'
regex: 'Input pin not driven by any Output pins'
outputs:
- name: Gerbers
comment: "Generate gerber files"
type: gerber
dir: '../Gerbers'
options:
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: false
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
inner_extension_pattern: '.gbr'
use_aux_axis_as_origin: true
layers:
- F.Cu
- B.Cu
- In1.Cu
- In2.Cu
- F.SilkS
- B.SilkS
- F.Paste
- B.Paste
- F.Mask
- B.Mask
- Edge.Cuts
- name: Drills
comment: Drill files
type: excellon
dir: '../Gerbers'
options:
pth_id: '-PTH'
npth_id: '-NPTH'
metric_units: true
route_mode_for_oval_holes: false
pth_and_npth_single_file: false
use_aux_axis_as_origin: true
output: "%f%i.%x"
- name: Schematic
comment: "Output PDF Schematic"
type: pdf_sch_print
options:
frame: true
output: "../Docs/Schematic.pdf"
- name: IBOM
type: ibom
comment: "Generate HTML Interactive BOM"
dir: ../ibom
options:
output: 'ibom.html'
include_tracks: true
layer_view: FB
blacklist: 'CN1,J1'
highlight_pin1: true
include_nets: true
dark_mode: true
- name: 3dImage
type: render_3d
comment: "3D Render"
run_by_default: true
options:
ray_tracing: false
output: ../Docs/PCB.png
zoom: 8
view: top
no_tht: true
orthographic: true
download: false
width: 1300
height: 530
- name: Image
type: pcbdraw
comment: "Draw PCB"
options:
output: ../Docs/PCB.png
format: png
show_components: none
- name: 'JLCPCB_position'
comment: "Pick and place file, JLCPCB style"
type: position
options:
variant: rotated
output: '../Gerbers/%f_cpl_jlc.%x'
format: CSV
units: millimeters
separate_files_for_front_and_back: false
use_aux_axis_as_origin: true
only_smd: true
columns:
- id: Ref
name: Designator
- Val
- Package
- id: PosX
name: "Mid X"
- id: PosY
name: "Mid Y"
- id: Rot
name: Rotation
- id: Side
name: Layer
- name: 'JLCPCB_bom'
comment: "BoM for JLCPCB"
type: bom
options:
output: '../Gerbers/%f_%i_jlc.%x'
exclude_filter: 'exclude_tht'
ref_separator: ','
columns:
- field: Value
name: Comment
- field: References
name: Designator
- Footprint
- field: 'LCSC #'
name: 'LCSC Part #'
csv:
hide_pcb_info: true
hide_stats_info: true
quote_all: true