# Example KiPlot config file kibot: version: 1 import: - file: 'user.kibot.yaml' preflight: # erc: true # update_xml: true # drc: true set_text_variables: - name: 'rev' command: 'if [ $(git describe --tags | wc -w) -gt 0 ]; then git describe --tags | sed -e "s/\([r,R][0-9]\+\)*$//g"; else echo $CI_COMMIT_SHORT_SHA; fi' - name: 'rev_pcb' command: if [ $(git describe --tags | wc -w) -gt 0 ]; then git describe --tags | awk -F- 'BEGIN {ORS=""} {split($1,a,"."); print a[1]"."a[2]; if ($2) print "-"$2}' ; else echo $CI_COMMIT_SHORT_SHA; fi - name: 'date' expand_kibot_patterns: true text: '%D' - name: 'name' expand_kibot_patterns: true command: 'echo $KIBOT_PCB_NAME | rev | cut -d"/" -f1 | rev | cut -d"-" -f1' - name: 'title' expand_kibot_patterns: true command: 'echo $KIBOT_PCB_NAME | rev | cut -d"/" -f1 | rev | cut -d"." -f1 ' - name: 'DWN' command: 'echo $DWN' - name: 'CHK' command: 'echo $CHK' - name: 'APP' command: 'echo $APP' check_zone_fills: true global: environment: user_templates: "${CI_PROJECT_DIR}/.gitlab/templates" restore_project: true outputs: - name: 'print_sch' comment: "Print schematic (PDF)" type: pdf_sch_print dir: . options: output: "%f%v_%r_%i.%x" - name: 'print_pcb' comment: "Print Top and Bottom Copper+Silk" type: pcb_print dir: . options: output: "%f%v_%r_PCB.%x" pages: - layers: - layer: F.Cu - layer: F.SilkS - layer: Edge.Cuts - layers: - layer: B.Cu - layer: B.SilkS - layer: Edge.Cuts - name: '_bom' type: bom dir: /tmp options: columns: - field: Value name: value - field: Quantity Per PCB name: qty - field: Footprint name: footprint - field: Datasheet name: datasheet - mpn - manf - rev - conn_manf - conn_mpn - field: References name: refs exclude_filter: "" output: "%f%v_%r_%i.%x" expand_text_vars: true - name: 'bom_csv' type: bom dir: . options: columns: - field: Value name: value - field: Quantity Per PCB name: qty - field: Footprint name: footprint - field: Datasheet name: datasheet - mpn - manf - rev - conn_manf - conn_mpn - field: References name: refs exclude_filter: "" output: "%f%v_%r_%i.%x" expand_text_vars: true csv: separator: ';' hide_pcb_info: true hide_stats_info: true format: "CSV" - name: 'bom_xlsx' type: bom dir: . options: columns: - field: Value name: value - field: Quantity Per PCB name: qty - field: Footprint name: footprint - field: Datasheet name: datasheet - mpn - manf - rev - conn_manf - conn_mpn - field: References name: refs exclude_filter: "" output: "%f%v_%r_%i.%x" expand_text_vars: true xlsx: hide_pcb_info: true hide_stats_info: true format: "XLSX" # - name: 'drill' # comment: "excellon drill files" # type: excellon # dir: Gerbers # # options: - name: 'step' comment: "Step file of pcb" type: step dir: . options: output: '%f%v_%r.%x' download: false subst_models: true - name: 'pcb_render' comment: "ISO render of the blank PCB" type: render_3d dir: . options: view: 'top' rotate_z: 4 rotate_x: 3 zoom: -1 download: false download_lcsc: false orthographic: true output: 'PCB_%f%v_%r.%x' show_components: 'none' - name: 'pcba_render' comment: "ISO render of the assembled PCB" type: render_3d dir: . options: view: 'top' rotate_z: 4 rotate_x: 3 download: false zoom: -1 download_lcsc: false orthographic: true output: 'PCBA_%f%v_%r.%x' show_components: 'all' - name: 'neo_position' comment: "Pick and place" type: position options: output: '%f%v_%r_cpl.%x' format: CSV units: millimeters separate_files_for_front_and_back: false only_smd: true - name: 'stencil' comment: '3D printable stencil for when you forgot to order it' type: stencil_3d dir: '3D_Stencil' options: output: '%f%v_%r_%i.%x' - name: 'diff_pcb' comment: "Diff for visual comparison" type: diff dir: . options: only_different: true old: KIBOT_TAG-0 - name: 'diff_sch' comment: "Diff for visual comparison" type: diff dir: . options: only_different: true pcb: false old: KIBOT_TAG-0 - name: 'interactive_bom' comment: "Interactive html BOM" type: ibom dir: . options: output: '%f%v_%r_%i.%x' dark_mode: true - name: 'JLCPCB_gerbers' comment: Gerbers compatible with JLCPCB type: gerber dir: JLCPCB options: &gerber_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: true 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: '.g%n' layers: # Note: a more generic approach is to use 'copper' but then the filenames # are slightly different. - F.Cu - B.Cu - In1.Cu - In2.Cu - In3.Cu - In4.Cu - In5.Cu - In6.Cu - F.SilkS - B.SilkS - F.Mask - B.Mask - Edge.Cuts - user - name: 'JLCPCB_drill' comment: Drill files compatible with JLCPCB type: excellon dir: JLCPCB options: pth_and_npth_single_file: false pth_id: '-PTH' npth_id: '-NPTH' metric_units: true map: gerber route_mode_for_oval_holes: false output: "%f%v_%r_%i.%x" - name: 'JLCPCB_compress' comment: ZIP file for JLCPCB type: compress options: files: - from_output: JLCPCB_gerbers dest: / - from_output: JLCPCB_drill dest: / output: '%f%v_%r_JLC.%x' groups: - name: mech outputs: - step - name: pos outputs: - neo_position - name: pcb_dev outputs: - print_pcb - name: pcb_main outputs: - JLCPCB_compress - print_pcb - stencil - interactive_bom - name: panel outputs: - JLCPCB_compress - print_pcb - step - interactive_bom - name: sch outputs: - bom_csv - bom_xlsx - print_sch ... definitions: _KIBOT_POS_ENABLED: false _KIBOT_BOM_ENABLED: false _KIBOT_MANF_DIR_COMP: "."