From edb5fff6557407464330766dfa0242c742899f87 Mon Sep 17 00:00:00 2001 From: FizzyApple12 Date: Tue, 5 Jul 2022 04:15:16 -0400 Subject: [PATCH] forgot to add KiBot configuration files --- .../workflows/generate-production-files.yml | 4 +- .kibot/bom_octopart.kibot.yml | 118 ++++++++++++++++++ .kibot/docs.kibot.yml | 77 ++++++++++++ .kibot/drills.kibot.yml | 58 +++++++++ .kibot/fabrications.kibot.yml | 38 ++++++ .kibot/gerbers.kibot.yml | 54 ++++++++ .kibot/plot.kibot.yml | 80 ++++++++++++ .kibot/render.kibot.yml | 55 ++++++++ kibot.yml | 32 +++++ 9 files changed, 514 insertions(+), 2 deletions(-) create mode 100644 .kibot/bom_octopart.kibot.yml create mode 100644 .kibot/docs.kibot.yml create mode 100644 .kibot/drills.kibot.yml create mode 100644 .kibot/fabrications.kibot.yml create mode 100644 .kibot/gerbers.kibot.yml create mode 100644 .kibot/plot.kibot.yml create mode 100644 .kibot/render.kibot.yml create mode 100644 kibot.yml diff --git a/.github/workflows/generate-production-files.yml b/.github/workflows/generate-production-files.yml index cbe099a..a2673da 100644 --- a/.github/workflows/generate-production-files.yml +++ b/.github/workflows/generate-production-files.yml @@ -37,9 +37,9 @@ jobs: image: setsoft/kicad_auto:ki6 steps: - uses: actions/checkout@v2 - - name: run kibot + - name: Run KiBot run: | - kibot -c kibot.yml -e WaccaProtocolTranslator.kicad_sch -b WaccaProtocolTranslator.kicad_pcb -d WaccaProtocolTranslator-pcb/ -s run_erc,run_drc -v \ + kibot -c kibot.yml -e WaccaProtocolTranslator-pcb/WaccaProtocolTranslator.kicad_sch -b WaccaProtocolTranslator-pcb/WaccaProtocolTranslator.kicad_pcb -d WaccaProtocolTranslator-pcb/ -s run_erc,run_drc -v \ gerbers.gbr drills.gbr drills.drl pickandplace.csv bom.csv schematic.svg schematic.pdf board_black_top.svg - uses: actions/upload-artifact@v2 if: ${{success()}} diff --git a/.kibot/bom_octopart.kibot.yml b/.kibot/bom_octopart.kibot.yml new file mode 100644 index 0000000..8c220b2 --- /dev/null +++ b/.kibot/bom_octopart.kibot.yml @@ -0,0 +1,118 @@ +outputs: + - name: 'octopart.csv' + comment: 'https://octopart.com/' + type: 'kibom' + dir: 'docs/bom' + options: + # [string|dict] BoM configuration file, relative to PCB. + # You can also define the configuration here, will be stored in `config.kibom.ini` + conf: + # [list(dict)|list(string)] List of columns to display. + # Can be just the name of the field + columns: + # [string=''] Name of the field to use for this column + # field: '' + # [list(string)|string=''] List of fields to join to this column + # join: '' + # [string=''] Name to display in the header. The field is used when empty + # name: '' + - References + - Description + - Part + - Value + - field: Quantity Per PCB + name: Qty + # [list(list(string))] A series of values which are considered to be equivalent for the part name. + # Each entry is a list of equivalen names. Example: ['c', 'c_small', 'cap' ] + # will ensure the equivalent capacitor symbols can be grouped together. + # If empty the following aliases are used: + # - ['r', 'r_small', 'res', 'resistor'] + # - ['l', 'l_small', 'inductor'] + # - ['c', 'c_small', 'cap', 'capacitor'] + # - ['sw', 'switch'] + # - ['zener', 'zenersmall'] + # - ['d', 'diode', 'd_small'] + component_aliases: [['r', 'r_small', 'res', 'resistor'], ['l', 'l_small', 'inductor'], ['c', 'c_small', 'cap', 'capacitor'], ['sw', 'switch'], ['zener', 'zenersmall'], ['d', 'diode', 'd_small']] + # [string=''] Column with links to the datasheet (HTML only) + datasheet_as_link: '' + # [string|list(string)=''] Column/s containing Digi-Key part numbers, will be linked to web page (HTML only) + digikey_link: '' + # [list(dict)] A series of regular expressions used to exclude parts. + # If a component matches ANY of these, it will be excluded. + # Column names are case-insensitive. + # If empty the following list is used: + # - column: References + # regex: '^TP[0-9]*' + # - column: References + # regex: '^FID' + # - column: Part + # regex: 'mount.*hole' + # - column: Part + # regex: 'solder.*bridge' + # - column: Part + # regex: 'test.*point' + # - column: Footprint + # regex 'test.*point' + # - column: Footprint + # regex: 'mount.*hole' + # - column: Footprint + # regex: 'fiducial' + # list(dict)] A series of regular expressions used to exclude parts. If a component matches ANY of these, it will be excluded. + exclude_any: + - column: Part + regex: TestPoint + - column: Part + regex: LOGO + - column: Part + regex: Jumper + # [string='Config'] Field name used to determine if a particular part is to be fitted (also DNC and variants) + fit_field: 'Config' + # [boolean=true] Connectors with the same footprints will be grouped together, independent of the name of the connector + group_connectors: true + # [list(string)] List of fields used for sorting individual components into groups. + # Components which match (comparing *all* fields) will be grouped together. + # Field names are case-insensitive. + # If empty: ['Part', 'Part Lib', 'Value', 'Footprint', 'Footprint Lib'] is used + # group_fields: ['Part', 'Part Lib', 'Value', 'Footprint', 'Footprint Lib'] + # group_fields: [''] + # [boolean=false] Hide column headers + hide_headers: false + # [boolean=false] Hide project information + hide_pcb_info: true + # [boolean=true] Generate a separated section for DNF (Do Not Fit) components (HTML only) + html_generate_dnf: true + # [boolean=true] Exclude DNF (Do Not Fit) components + ignore_dnf: true + # [list(dict)] A series of regular expressions used to select included parts. + # If there are any regex defined here, only components that match against ANY of them will be included. + # Column names are case-insensitive. + # If empty all the components are included + # include_only: + # [string=''] Name of the column to apply the regular expression + # column: '' + # `field` is an alias for `column` + # [string=''] Regular expression to match + # regex: '' + # `regexp` is an alias for `regex` + # [boolean=true] Component groups with blank fields will be merged into the most compatible group, where possible + merge_blank_fields: false + # [boolean=true] First column is the row number + number_rows: false + # [boolean=true] Each component group will be tested against a number of regular-expressions (see ``). + test_regex: true + # [boolean=false] Print grouped references in the alternate compressed style eg: R1-R7,R18 + use_alt: false + # [string='HTML'] [HTML,CSV,XML,XLSX] format for the BoM + format: 'CSV' + # [number=1] Number of boards to build (components multiplier) + number: 1 + # [string='%f-%i%v.%x'] filename for the output (%i=bom). Affected by global options + output: '%f-%i.%x' + # [string=','] CSV Separator + separator: ';' + # [string=''] Board variant(s), used to determine which components + # are output to the BoM. To specify multiple variants, + # with a BOM file exported for each variant, separate + # variants with the ';' (semicolon) character. + # This isn't related to the KiBot concept of variants + variant: '' diff --git a/.kibot/docs.kibot.yml b/.kibot/docs.kibot.yml new file mode 100644 index 0000000..4bb62b8 --- /dev/null +++ b/.kibot/docs.kibot.yml @@ -0,0 +1,77 @@ +outputs: + # For more information: https://github.com/INTI-CMNB/KiBoM + - name: 'schematic.pdf' + comment: "generate schematic (PDF)" + type: pdf_sch_print + dir: docs + options: + output: '%f-%i.%x' #[string='%f-%i%v.%x'] filename for the output PDF (%i=schematic %x=pdf). Affected by global options. + + - name: 'schematic.svg' + comment: "generate schematic (SVG)" + type: svg_sch_print + dir: img + options: + output: '%f-%i.%x' #[string='%f-%i%v.%x'] filename for the output SVG (%i=schematic %x=svg). Affected by global options. + + - name: 'board_top.pdf' + comment: "generate board top (PDF)" + type: 'pdf_pcb_print' + dir: 'docs' + options: + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '' + # [string='full'] What to use to indicate the drill places, can be none, small or full (for real scale) + drill_marks: 'none' + # [boolean=false] Print mirrored (X axis inverted). ONLY for KiCad 6 + mirror: false + # [boolean=false] Print in black and white + monochrome: false + # [string='%f-%i%v.%x'] Filename for the output PDF (%i=layers, %x=pdf). Affected by global options + output: '%f-board_top.%x' + # `output_name` is an alias for `output` + # [boolean=true] Include the title-block + plot_sheet_reference: true + # [number=1.0] Scale factor (0 means autoscaling) + scaling: 0 + # [boolean=false] Print layers in separated pages + separated: false + # [string=''] Board variant to apply + variant: '' + layers: + - 'F.SilkS' + - 'F.Mask' + - 'Cmts.User' + - 'Edge.Cuts' + + - name: 'board_bottom.pdf' + comment: "generate board bottom (PDF)" + type: 'pdf_pcb_print' + dir: 'docs' + options: + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '' + # [string='full'] What to use to indicate the drill places, can be none, small or full (for real scale) + drill_marks: 'none' + # [boolean=false] Print mirrored (X axis inverted). ONLY for KiCad 6 + mirror: true + # [boolean=false] Print in black and white + monochrome: false + # [string='%f-%i%v.%x'] Filename for the output PDF (%i=layers, %x=pdf). Affected by global options + output: '%f-board_bottom.%x' + # `output_name` is an alias for `output` + # [boolean=true] Include the title-block + plot_sheet_reference: true + # [number=1.0] Scale factor (0 means autoscaling) + scaling: 0 + # [boolean=false] Print layers in separated pages + separated: false + # [string=''] Board variant to apply + variant: '' + layers: + - 'B.SilkS' + - 'B.Mask' + - 'Dwgs.User' + - 'Edge.Cuts' diff --git a/.kibot/drills.kibot.yml b/.kibot/drills.kibot.yml new file mode 100644 index 0000000..cdceeb5 --- /dev/null +++ b/.kibot/drills.kibot.yml @@ -0,0 +1,58 @@ +outputs: + # Gerber drill format: + # You can create a map file for documentation purposes. + # This output is what you get from the 'File/Fabrication output/Drill Files' menu in pcbnew. + - name: 'drills.gbr' + comment: 'https://en.wikipedia.org/wiki/Gerber_format' + type: gerb_drill + dir: gerbers + options: + # [dict|string] [hpgl,ps,gerber,dxf,svg,pdf] format for a graphical drill map. + # Not generated unless a format is specified + map: + # [string='%f-%i%v.%x'] name for the map file, KiCad defaults if empty (%i='PTH_drill_map'). Affected by global options + output: '' + # [string='pdf'] [hpgl,ps,gerber,dxf,svg,pdf] format for a graphical drill map + type: 'gerber' + # [string='%f-%i%v.%x'] name for the drill file, KiCad defaults if empty (%i='PTH_drill'). Affected by global options + output: '%f-%i.%x' + # [dict|string] name of the drill report. Not generated unless a name is specified + report: + # [string=''] name of the drill report. Not generated unless a name is specified. + # (%i='drill_report' %x='txt') + filename: '%i.%x' + # [boolean=false] use the auxiliar axis as origin for coordinates + use_aux_axis_as_origin: true + + # Excellon drill format: + # You can create a map file for documentation purposes. + # This output is what you get from the 'File/Fabrication output/Drill Files' menu in pcbnew. + - name: 'drills.drl' + comment: 'https://en.wikipedia.org/wiki/Gerber_format' + type: excellon + dir: gerbers + options: + # [dict|string] [hpgl,ps,gerber,dxf,svg,pdf] format for a graphical drill map. + # Not generated unless a format is specified + map: + # [string='%f-%i%v.%x'] name for the map file, KiCad defaults if empty (%i='PTH_drill_map'). Affected by global options + output: '%f-%i.%x' + # [string='pdf'] [hpgl,ps,gerber,dxf,svg,pdf] format for a graphical drill map + type: 'gerber' + # [boolean=true] use metric units instead of inches + metric_units: true + # [boolean=false] use a minimal header in the file + minimal_header: false + # [boolean=false] invert the Y axis + mirror_y_axis: false + # [string='%f-%i%v.%x'] name for the drill file, KiCad defaults if empty (%i='PTH_drill'). Affected by global options + output: '%f-%i.%x' + # [boolean=true] generate one file for both, plated holes and non-plated holes, instead of two separated files + pth_and_npth_single_file: false + # [dict|string] name of the drill report. Not generated unless a name is specified + report: + # [string=''] name of the drill report. Not generated unless a name is specified. + # (%i='drill_report' %x='txt') + filename: '%i.%x' + # [boolean=false] use the auxiliar axis as origin for coordinates + use_aux_axis_as_origin: true diff --git a/.kibot/fabrications.kibot.yml b/.kibot/fabrications.kibot.yml new file mode 100644 index 0000000..b519bcb --- /dev/null +++ b/.kibot/fabrications.kibot.yml @@ -0,0 +1,38 @@ +outputs: + - name: 'pickandplace.csv' + comment: 'position files' + type: 'position' + dir: 'gerbers' + options: + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '_mechanical' + # [string='ASCII'] [ASCII,CSV] format for the position file + format: 'CSV' + # [boolean=true] only include the surface mount components + only_smd: true + # [string='%f-%i%v.%x'] output file name (%i='top_pos'|'bottom_pos'|'both_pos', %x='pos'|'csv'). Affected by global options + output: '%f-%i.%x' + # [boolean=true] generate two separated files, one for the top and another for the bottom + separate_files_for_front_and_back: true + # [string='millimeters'] [millimeters,inches] units used for the positions + units: 'millimeters' + # [string=''] Board variant to apply + variant: '' + +# generates bom.csv in gerbers folder + - name: bom.csv + type: kibom + dir: gerbers + extends: 'octopart.csv' + +# zip fabrication files + - name: 'fabrication.zip' + type: compress + dir: . + options: + format: ZIP + files: + - dest: . + source: gerbers/* + output: '%f-%r.%x' diff --git a/.kibot/gerbers.kibot.yml b/.kibot/gerbers.kibot.yml new file mode 100644 index 0000000..ce84037 --- /dev/null +++ b/.kibot/gerbers.kibot.yml @@ -0,0 +1,54 @@ +outputs: + # For more information: https://github.com/INTI-CMNB/KiBoM + - name: "gerbers.gbr" + comment: "https://en.wikipedia.org/wiki/Gerber_format" + type: 'gerber' + dir: 'gerbers' + options: + # [boolean=true] creates a file with information about all the generated gerbers. + # You can use it in gerbview to load all gerbers at once + create_gerber_job_file: false + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '' + # [boolean=true] do not include the PCB edge layer + exclude_edge_layer: true + # [boolean=false] do not plot the component pads in the silk screen + exclude_pads_from_silkscreen: false + # [boolean=false] include references and values even when they are marked as invisible + force_plot_invisible_refs_vals: false + # [string='%f-%i%v.%x'] name for the gerber job file (%i='job', %x='gbrjob'). Affected by global options + gerber_job_file: '%f-%i-%r.%x' + # [number=4.6] this the gerber coordinate format, can be 4.5 or 4.6 + gerber_precision: 4.6 + # [number=0.1] [0.02,2] line_width for objects without width [mm] + line_width: 0.1 + # [string='%f-%i%v.%x'] output file name, the default KiCad name if empty. Affected by global options + output: '%f-%i-%r.%x' + # [boolean=true] include the footprint references + plot_footprint_refs: true + # [boolean=true] include the footprint values + plot_footprint_values: true + # [boolean=false] currently without effect + plot_sheet_reference: false + # [boolean=false] substract the solder mask from the silk screen + subtract_mask_from_silk: false + # [boolean=true] cover the vias + tent_vias: true + # [boolean=false] use the auxiliar axis as origin for coordinates + use_aux_axis_as_origin: true + # [boolean=true] include netlist metadata + use_gerber_net_attributes: true + # [boolean=true] use the extended X2 format + use_gerber_x2_attributes: true + # [boolean=false] use legacy Protel file extensions + use_protel_extensions: false + # [string=''] Board variant to apply + variant: '' + layers: + - 'Edge.Cuts' + - 'copper' + - 'F.Mask' + - 'B.Mask' + - 'F.SilkS' + - 'B.SilkS' diff --git a/.kibot/plot.kibot.yml b/.kibot/plot.kibot.yml new file mode 100644 index 0000000..ab3d22b --- /dev/null +++ b/.kibot/plot.kibot.yml @@ -0,0 +1,80 @@ +outputs: + - name: 'board_black_top.svg' + comment: 'https://github.com/yaqwsx/PcbDraw' + type: 'pcbdraw' + dir: 'img/pcb' + options: + # [boolean=false] render the bottom side of the board (default is top side) + bottom: false + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '' + # [number=300] [10,1200] dots per inch (resolution) of the generated image + dpi: 300 + # [string='svg'] [svg,png,jpg] output format. Only used if no `output` is specified + format: 'svg' + # [list(string)=[]] list of components to highlight + highlight: [] + # [list(string)=[]] list of libraries + libs: [] + # [boolean=false] mirror the board + mirror: false + # [boolean=false] do not make holes transparent + no_drillholes: false + # [string='%f-%i%v.%x'] name for the generated file. Affected by global options + output: '%f-%i.%x' + # [boolean=false] show placeholder for missing components + placeholder: false + # [dict|None] replacements for PCB references using components (lib:component) + remap: + # [list(string)|string=none] [none,all] list of components to draw, can be also a string for none or all. + # The default is none + show_components: none + # [string|dict] PCB style (colors). An internal name, the name of a JSON file or the style options + style: '/usr/share/pcbdraw/styles/set-black-cu.json' + # [string=''] Board variant to apply + variant: '' + # [boolean=false] render V-CUTS on the Cmts.User layer + vcuts: false + # [string='visible'] [visible,all,none] using visible only the warnings about components in the visible side are generated + warnings: 'none' + + - name: 'board_black_bottom.svg' + comment: 'https://github.com/yaqwsx/PcbDraw' + type: 'pcbdraw' + dir: 'img/pcb' + options: + # [boolean=false] render the bottom side of the board (default is top side) + bottom: true + # [string|list(string)=''] Name of the filter to mark components as not fitted. + # A short-cut to use for simple cases where a variant is an overkill + dnf_filter: '' + # [number=300] [10,1200] dots per inch (resolution) of the generated image + dpi: 300 + # [string='svg'] [svg,png,jpg] output format. Only used if no `output` is specified + format: 'svg' + # [list(string)=[]] list of components to highlight + highlight: [] + # [list(string)=[]] list of libraries + libs: [] + # [boolean=false] mirror the board + mirror: false + # [boolean=false] do not make holes transparent + no_drillholes: false + # [string='%f-%i%v.%x'] name for the generated file. Affected by global options + output: '%f-%i.%x' + # [boolean=false] show placeholder for missing components + placeholder: false + # [dict|None] replacements for PCB references using components (lib:component) + remap: + # [list(string)|string=none] [none,all] list of components to draw, can be also a string for none or all. + # The default is none + show_components: none + # [string|dict] PCB style (colors). An internal name, the name of a JSON file or the style options + style: '/usr/share/pcbdraw/styles/set-black-cu.json' + # [string=''] Board variant to apply + variant: '' + # [boolean=false] render V-CUTS on the Cmts.User layer + vcuts: false + # [string='visible'] [visible,all,none] using visible only the warnings about components in the visible side are generated + warnings: 'none' diff --git a/.kibot/render.kibot.yml b/.kibot/render.kibot.yml new file mode 100644 index 0000000..7657fd3 --- /dev/null +++ b/.kibot/render.kibot.yml @@ -0,0 +1,55 @@ +outputs: + # For more information: https://github.com/INTI-CMNB/KiBoM + - name: 'kicad 3d view top' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-top.%x' + ray_tracing: true + view: top + + - name: 'kicad 3d view bottom' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-bottom.%x' + ray_tracing: true + view: bottom + + - name: 'kicad 3d view front' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-front.%x' + ray_tracing: true + view: front + + - name: 'kicad 3d view rear' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-rear.%x' + ray_tracing: true + view: rear + + - name: 'kicad 3d view right' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-right.%x' + ray_tracing: true + view: right + + - name: 'kicad 3d view left' + type: 'render_3d' + dir: 'img/render' + options: + download: true + output: '%f-left.%x' + ray_tracing: true + view: left diff --git a/kibot.yml b/kibot.yml new file mode 100644 index 0000000..ba6be16 --- /dev/null +++ b/kibot.yml @@ -0,0 +1,32 @@ +kibot: + version: 1 + +preflight: + set_text_variables: + - name: "date" + command: git log -1 --format="%as" + - name: "version" + command: git describe --exact-match --tags 2> /dev/null || git rev-parse --short HEAD + update_xml: true + run_erc: false + run_drc: false + check_zone_fills: true + ignore_unconnected: true +# filters: +# - name: "exclude_any" +# type: "generic" +# comment: "Exclude logos, testpoints, fiducials and power" +# exclude_any: +# - column: Reference +# regex: "^(G|#|TP|F).*" +import: +# docs + - file: .kibot/docs.kibot.yml +# fabrications + - file: .kibot/bom_octopart.kibot.yml + - file: .kibot/gerbers.kibot.yml + - file: .kibot/drills.kibot.yml + - file: .kibot/fabrications.kibot.yml +# img + - file: .kibot/render.kibot.yml + - file: .kibot/plot.kibot.yml \ No newline at end of file