# ATTENTION! THIS ISN'T A FULLY FUNCTIONAL EXAMPLE. # You should take portions of this example and edit the options to make # them suitable for your use. # This file is useful to know all the available options. kibot: version: 1 preflight: # [dict] Annotates the PCB according to physical coordinates. # This preflight modifies the PCB and schematic, use it only in revision control environments. # Used to assign references according to footprint coordinates. # The project must be fully annotated first. annotate_pcb: - top_main_axis: y - top_main_ascending: true - top_secondary_ascending: true - top_start: 1 - bottom_main_axis: y - bottom_main_ascending: true - bottom_secondary_ascending: true - bottom_start: 101 - use_position_of: 'footprint' - grid: 1.0 # [boolean=false] Annotates all power components. # This preflight modifies the schematic, use it only in revision control environments. # Used to solve ERC problems when using filters that remove power reference numbers. annotate_power: true # [boolean=false] Zones are filled before doing any operation involving PCB layers. # The original PCB remains unchanged. check_zone_fills: true # [boolean=false] Option for `run_erc`. ERC warnings are considered errors. erc_warnings: false # [boolean=false] Fill all zones again and save the PCB. fill_zones: true # [list(dict)] A list of entries to filter out ERC/DRC messages. # Note that ignored errors will become KiBot warnings (i.e. `(W058) ...`). # To farther ignore these warnings use the `filters` option in the `global` section. filters: - filter: 'Filter description' error: '10' regex: 'Regular expression to match' # [boolean=false] Option for `run_drc`. Ignores the unconnected nets. Useful if you didn't finish the routing. ignore_unconnected: false # [dict] Replaces tags in the PCB. I.e. to insert the git hash or last revision date. # This is useful for KiCad 5, use `set_text_variables` when using KiCad 6. # This preflight modifies the PCB. Even when a back-up is done use it carefully. pcb_replace: date_command: "git log -1 --format='%as' -- $KIBOT_PCB_NAME" replace_tags: - tag: '@git_hash@' command: 'git log -1 --format="%h" $KIBOT_PCB_NAME' before: 'Git hash: <' after: '>' # [boolean=false] Runs the DRC (Distance Rules Check). To ensure we have a valid PCB. # The report file name is controlled by the global output pattern (%i=drc %x=txt). # Note that the KiCad 6 *Test for parity between PCB and schematic* option is not supported. # If you need to check the parity use the `update_xml` preflight. run_drc: true # [boolean=false] Runs the ERC (Electrical Rules Check). To ensure the schematic is electrically correct. # The report file name is controlled by the global output pattern (%i=erc %x=txt). run_erc: true # [dict] Replaces tags in the schematic. I.e. to insert the git hash or last revision date. # This is useful for KiCad 5, use `set_text_variables` when using KiCad 6. # This preflight modifies the schematics. Even when a back-up is done use it carefully. sch_replace: date_command: "git log -1 --format='%as' -- $KIBOT_SCH_NAME" replace_tags: - tag: '@git_hash@' command: 'git log -1 --format="%h" $KIBOT_SCH_NAME' before: 'Git hash: <' after: '>' # [dict|list(dict)] Defines KiCad 6 variables. # They are expanded using ${VARIABLE}, and stored in the project file. # This preflight replaces `pcb_replace` and `sch_replace` when using KiCad 6. # The KiCad project file is modified. set_text_variables: - name: 'git_hash' command: 'git log -1 --format="%h" $KIBOT_PCB_NAME' before: 'Git hash: <' after: '>' # [boolean=false] Update the QR codes. # Complements the `qr_lib` output. # The KiCad 6 files and the KiCad 5 PCB needs manual update, generating a new library isn't enough. update_qr: true # [boolean=false|dict] Update the XML version of the BoM (Bill of Materials). # To ensure our generated BoM is up to date. # Note that this isn't needed when using the internal BoM generator (`bom`). # You can compare the PCB and schematic netlists using it. update_xml: true outputs: # BoardView: # This format allows simple pads and connections navigation, mainly for circuit debug. # The output can be loaded using Open Board View (https://openboardview.org/) - name: 'boardview_example' comment: 'Exports the PCB in board view format.' type: 'boardview' dir: 'Example/boardview_dir' options: # [string='%f-%i%I%v.%x'] Filename for the output (%i=boardview, %x=brd). Affected by global options output: '%f-%i%I%v.%x' # BoM (Bill of Materials): # This output can generate XYRS files (pick and place files). # Is compatible with KiBoM, but doesn't need to update the XML netlist because the components # are loaded from the schematic. # Important differences with KiBoM output: # - All options are in the main `options` section, not in `conf` subsection. # - The `Component` column is named `Row` and works just like any other column. # This output is what you get from the 'Tools/Generate Bill of Materials' menu in eeschema. - name: 'bom_example' comment: 'Used to generate the BoM in CSV, HTML, TSV, TXT, XML or XLSX format using the internal BoM.' type: 'bom' dir: 'Example/bom_dir' options: # [list(dict)] Add components from other projects. # You can use CSV files, the first row must contain the names of the fields. # The `Reference` and `Value` are mandatory, in most cases `Part` is also needed. # The `Part` column should contain the name/type of the component. This is important for # passive components (R, L, C, etc.). If this information isn't available consider # configuring the grouping to exclude the `Part`. aggregate: # [string=','] Delimiter used for CSV files - delimiter: ',' # [string=''] Name of the schematic to aggregate file: '' # [string=''] Name to identify this source. If empty we use the name of the schematic name: '' # [number=1] Number of boards to build (components multiplier). Use negative to subtract number: 1 # [string=''] A prefix to add to all the references from this project ref_id: '' # [boolean=true] Always use positive values for the footprint rotation angle_positive: true # [boolean=false] Use negative X coordinates for footprints on bottom layer (for XYRS) bottom_negative_x: false # [list(dict)|list(string)] List of columns to display. # Can be just the name of the field columns: # [string=''] Used as explanation for this column. The XLSX output uses it - comment: '' # [string=''] Name of the field to use for this column field: 'Row' # [list(dict)|list(string)|string=''] List of fields to join to this column join: # [string=''] Name of the field - field: 'Voltage' # [string=''] Text to use instead of a field. This option is incompatible with the `field` option. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text: '' # [string=''] Text to add after the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_after: '' # [string=''] Text to add before the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_before: '' # [number=0] Used to group columns. The XLSX output uses it to collapse columns level: 0 # [string=''] Name to display in the header. The field is used when empty name: 'Line' # [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']] # [list(dict)|list(string)] List of columns to add to the global section of the cost. # Can be just the name of the field cost_extra_columns: # [string=''] Used as explanation for this column. The XLSX output uses it - comment: '' # [string=''] Name of the field to use for this column field: 'Row' # [list(dict)|list(string)|string=''] List of fields to join to this column join: # [string=''] Name of the field - field: 'Voltage' # [string=''] Text to use instead of a field. This option is incompatible with the `field` option. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text: '' # [string=''] Text to add after the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_after: '' # [string=''] Text to add before the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_before: '' # [number=0] Used to group columns. The XLSX output uses it to collapse columns level: 0 # [string=''] Name to display in the header. The field is used when empty name: 'Line' # [boolean=false] Show the stats about how many of the components are SMD/THT. You must provide the PCB count_smd_tht: false # [dict] Options for the CSV, TXT and TSV formats csv: # [boolean=false] Hide the header line (names of the columns) hide_header: false # [boolean=false] Hide project information hide_pcb_info: false # [boolean=false] Hide statistics information hide_stats_info: false # [boolean=false] Enclose all values using double quotes quote_all: false # [string=','] CSV Separator. TXT and TSV always use tab as delimiter. # Only one character can be specified separator: ',' # [string|list(string)] Include this distributors list. Default is all the available distributors: # [string|list(string)='_kibom_dnc'] Name of the filter to mark components as 'Do Not Change'. # The default filter marks components with a DNC value or DNC in the Config field. # This option is for simple cases, consider using a full variant for complex cases dnc_filter: '_kibom_dnc' # [string|list(string)='_kibom_dnf'] Name of the filter to mark components as 'Do Not Fit'. # The default filter marks components with a DNF value or DNF in the Config field. # This option is for simple cases, consider using a full variant for complex cases dnf_filter: '_kibom_dnf' # [string|list(string)='_mechanical'] Name of the filter to exclude components from BoM processing. # The default filter excludes test points, fiducial marks, mounting holes, etc. # This option is for simple cases, consider using a full variant for complex cases exclude_filter: '_mechanical' # [boolean=false] Exclude components marked with *Exclude from BOM* in the PCB. # This is a KiCad 6 option exclude_marked_in_pcb: false # [boolean=true] Exclude components marked with *Exclude from bill of materials* in the schematic. # This is a KiCad 6 option exclude_marked_in_sch: true # [boolean=true] Expand KiCad 6 text variables after applying all filters and variants. # This is done using a **_expand_text_vars** filter. # If you need to customize the filter, or apply it before, you can disable this option and # add a custom filter to the filter chain expand_text_vars: true # [string='Config'] Field name used for internal filters (not for variants) fit_field: 'Config' # [string|list(string)='no,yes'] Values for the `Footprint Populate` column footprint_populate_values: 'no,yes' # [string|list(string)='SMD,THT,VIRTUAL'] Values for the `Footprint Type` column footprint_type_values: 'SMD,THT,VIRTUAL' # [string=''] [HTML,CSV,TXT,TSV,XML,XLSX,HRTXT] format for the BoM. # Defaults to CSV or a guess according to the options. # HRTXT stands for Human Readable TeXT format: 'CSV' # [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', # 'Voltage', 'Tolerance', 'Current', 'Power'] is used group_fields: ['part', 'part lib', 'value', 'footprint', 'footprint lib', 'voltage', 'tolerance', 'current', 'power'] # [list(string)] List of fields to be used when the fields in `group_fields` are empty. # The first field in this list is the fallback for the first in `group_fields`, and so on group_fields_fallbacks: # [dict] Options for the HRTXT formats hrtxt: # [string='-'] Separator between the header and the data header_sep: '-' # [boolean=false] Hide the header line (names of the columns) hide_header: false # [boolean=false] Hide project information hide_pcb_info: false # [boolean=false] Hide statistics information hide_stats_info: false # [string='left'] [left,right,center] Text justification justify: 'left' # [string='I'] Column Separator separator: 'I' # [dict] Options for the HTML format html: # [boolean=true] Use colors to show the field type col_colors: true # [string=''] Column with links to the datasheet datasheet_as_link: '' # [string|list(string)=''] Column/s containing Digi-Key part numbers, will be linked to web page digikey_link: '' # [string|list(string)=''] Information to put after the title and before the pcb and stats info extra_info: '' # [boolean=true] Generate a separated section for DNF (Do Not Fit) components generate_dnf: true # [boolean=false] Hide project information hide_pcb_info: false # [boolean=false] Hide statistics information hide_stats_info: false # [boolean=true] Use a color for empty cells. Applies only when `col_colors` is `true` highlight_empty: true # [string|boolean=''] PNG file to use as logo, use false to remove logo: '' # [string|list(string)=''] Column/s containing Mouser part numbers, will be linked to web page mouser_link: '' # [string='modern-blue'] Page style. Internal styles: modern-blue, modern-green, modern-red and classic. # Or you can provide a CSS file name. Please use .css as file extension. style: 'modern-blue' # [string='KiBot Bill of Materials'] BoM title title: 'KiBot Bill of Materials' # [boolean=true] Exclude DNF (Do Not Fit) components ignore_dnf: true # [boolean=true] Component quantities are always expressed as integers. Using the ceil() function int_qtys: true # [boolean=true] Component groups with blank fields will be merged into the most compatible group, where possible merge_blank_fields: true # [boolean=true] When creating groups two components with empty/missing field will be interpreted as with the same value merge_both_blank: true # [list(string)] List of fields where we tolerate conflicts. # Use it to avoid undesired warnings. # By default the field indicated in `fit_field`, the field used for variants and # the field `part` are excluded no_conflict: ['Config', 'Part'] # [string|list(string)] Exclude this distributors list. They are removed after computing `distributors` no_distributors: # [boolean=false] When normalizing values use the locale decimal point normalize_locale: false # [boolean=false] Try to normalize the R, L and C values, producing uniform units and prefixes normalize_values: false # [number=1] Number of boards to build (components multiplier) number: 1 # [string='%f-%i%I%v.%x'] filename for the output (%i=bom). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # This option is for simple cases, consider using a full variant for complex cases pre_transform: '_none' # [string=''] A prefix to add to all the references from this project. Used for multiple projects ref_id: '' # [string=' '] Separator used for the list of references ref_separator: ' ' # [string='type_value'] [type_value,type_value_ref,ref] Sorting criteria sort_style: 'type_value' # [boolean=false] Generate the `Source BoM` column using the reference ID instead of the project name source_by_id: false # [string='millimeters'] [millimeters,inches,mils] Units used for the positions ('Footprint X' and 'Footprint Y' columns). # Affected by global options units: 'millimeters' # [boolean=false] Print grouped references in the alternate compressed style eg: R1-R7,R18 use_alt: false # [boolean=true] Use the auxiliary axis as origin for coordinates (KiCad default) (for XYRS) use_aux_axis_as_origin: true # [string=''] Board variant, used to determine which components # are output to the BoM. variant: '' # [dict] Options for the XLSX format xlsx: # [boolean=true] Use colors to show the field type col_colors: true # [string=''] Column with links to the datasheet datasheet_as_link: '' # [string|list(string)=''] Column/s containing Digi-Key part numbers, will be linked to web page digikey_link: '' # [string|list(string)=''] Information to put after the title and before the pcb and stats info extra_info: '' # [boolean=true] Generate a separated section for DNF (Do Not Fit) components generate_dnf: true # [boolean=false] Hide project information hide_pcb_info: false # [boolean=false] Hide statistics information hide_stats_info: false # [boolean=true] Use a color for empty cells. Applies only when `col_colors` is `true` highlight_empty: true # [boolean=false] Enable KiCost worksheet creation kicost: false # [string|list(string)=''] List of KiCost APIs to disable kicost_api_disable: '' # [string|list(string)=''] List of KiCost APIs to enable kicost_api_enable: '' # [string=''] KiCost configuration file. It contains the keys for the different distributors APIs. # The regular KiCost config is used when empty kicost_config: '' # [boolean=false] Used to add a column with the distributor's description. So you can check this is the right component kicost_dist_desc: false # [string|boolean=''] PNG file to use as logo, use false to remove logo: '' # [number=2] Scaling factor for the logo. Note that this value isn't honored by all spreadsheet software logo_scale: 2 # [number=60] [20,999] Maximum column width (characters) max_col_width: 60 # [string|list(string)=''] Column/s containing Mouser part numbers, will be linked to web page mouser_link: '' # [boolean=false] Enable Specs worksheet creation. Contains specifications for the components. # Works with only some KiCost APIs specs: false # [list(dict)|list(string)] Which columns are included in the Specs worksheet. Use `References` for the references, # 'Row' for the order and 'Sep' to separate groups at the same level. By default all are included. # Column names are distributor specific, the following aren't: '_desc', '_value', '_tolerance', '_footprint', # '_power', '_current', '_voltage', '_frequency', '_temp_coeff', '_manf', '_size' specs_columns: # [string=''] Used as explanation for this column. The XLSX output uses it - comment: '' # [string=''] Name of the field to use for this column field: 'Row' # [list(dict)|list(string)|string=''] List of fields to join to this column join: # [string=''] Name of the field - field: 'Voltage' # [string=''] Text to use instead of a field. This option is incompatible with the `field` option. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text: '' # [string=''] Text to add after the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_after: '' # [string=''] Text to add before the field content. Will be added only if the field isn't empty. # Any space to separate it should be added in the text. # Use \n for newline and \t for tab text_before: '' # [number=0] Used to group columns. The XLSX output uses it to collapse columns level: 0 # [string=''] Name to display in the header. The field is used when empty name: 'Line' # [string='modern-blue'] Head style: modern-blue, modern-green, modern-red and classic style: 'modern-blue' # [string='KiBot Bill of Materials'] BoM title title: 'KiBot Bill of Materials' # Archiver (files compressor): # This is used to generate groups of files in compressed file format. - name: 'compress_example' comment: 'Generates a compressed file containing output files.' type: 'compress' dir: 'Example/compress_dir' options: # [string='auto'] [auto,stored,deflated,bzip2,lzma] Compression algorithm. Use auto to let KiBot select a suitable one compression: 'auto' # [list(dict)] Which files will be included files: # [string=''] Destination directory inside the archive, empty means the same of the file - dest: '' # [string='.*'] A regular expression that source files must match filter: '.*' # [boolean=false] Use the current working directory instead of the dir specified by `-d` from_cwd: false # [string=''] Collect files from the selected output. # When used the `source` option is ignored from_output: '' # [string='*'] File names to add, wildcards allowed. Use ** for recursive match. # By default this pattern is applied to the output dir specified with `-d` command line option. # See the `from_cwd` option source: '*' # [boolean=true] Store the file pointed by symlinks, not the symlink follow_links: true # [string='ZIP'] [ZIP,TAR,RAR] Output file format format: 'ZIP' # [boolean=false] Move the files to the archive. In other words: remove the files after adding them to the archive move_files: false # [string='%f-%i%I%v.%x'] Name for the generated archive (%i=name of the output %x=according to format). Affected by global options output: '%f-%i%I%v.%x' # `remove_files` is an alias for `move_files` # Files copier: # Useful when an external tool is used to compress the output directory. # Note that you can use the `compress` output to create archives - name: 'copy_files_example' comment: 'Used to copy files to the output directory.' type: 'copy_files' dir: 'Example/copy_files_dir' options: # [string|list(string)='_none'] 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: '_none' # [boolean=true] Downloads missing 3D models from KiCad git. Only applies to models in KISYS3DMOD download: true # [list(dict)] Which files will be included files: # [string=''] Destination directory inside the output dir, empty means the same of the file # relative to the source directory. # For the `3d_models` type you can use DIR+ to create subdirs under DIR - dest: '' # [string='.*'] A regular expression that source files must match filter: '.*' # [boolean=false] Only usable for the `3d_models` mode. # Save a PCB copy modified to use the copied 3D models save_pcb: false # [string='*'] File names to add, wildcards allowed. Use ** for recursive match. # By default this pattern is applied to the current working dir. # See the `from_outdir` option source: '*' # [string='files'] [files,out_files,output,3d_models] How to interpret `source`. # `files`: is a pattern for files relative to the working directory. # `out_files`: is a pattern for files relative to output dir specified # with `-d` command line option. # `output`: is the name of an `output`. # `3d_models`: is a pattern to match the name of the 3D models extracted # from the PCB. source_type: 'files' # [boolean=true] Store the file pointed by symlinks, not the symlink follow_links: true # [string='https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/'] Base URL for the KiCad 3D models kicad_3d_url: 'https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/' # [boolean=false] Create symlinks instead of copying files link_no_copy: false # [boolean=false] Used to exclude 3D models for components with 'virtual' attribute no_virtual: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Board variant to apply variant: '' # Diff: # Recursive git submodules aren't supported (submodules inside submodules) - name: 'diff_example' comment: 'Generates a PDF with the differences between two PCBs or schematics.' type: 'diff' dir: 'Example/diff_dir' options: # [boolean=false] When enabled we create a symlink to the output file with a name that contains the # git hashes involved in the comparison. If you plan to compress the output don't # forget to disable the `follow_links` option add_link_id: false # [boolean=false] Always fail if the old/new file doesn't exist. Currently we don't fail if they are from a repo. # So if you refer to a repo point where the file wasn't created KiBot will use an empty file. # Enabling this option KiBot will report an error always_fail_if_missing: false # [string=''] Directory to cache the intermediate files. Leave it blank to disable the cache cache_dir: '' # [boolean=false] Modifies the behavior of `add_link_id` to create a copy of the file instead of a # symlink. Useful for some Windows setups copy_instead_of_link: false # [string='red_green'] [red_green,stats] In the `red_green` mode added stuff is green and red when removed. # The `stats` mode is used to meassure the amount of difference. In this mode all # changes are red, but you can abort if the difference is bigger than certain threshold diff_mode: 'red_green' # [boolean=false] When `old_type` and/or `new_type` are `git` KiBot will checkout the indicated point. # Before doing it KiBot will stash any change. Under some circumstances git could fail # to do a checkout, even after stashing, this option can workaround the problem. # Note that using it you could potentially lose modified files. For more information # read https://stackoverflow.com/questions/1248029/git-pull-error-entry-foo-not-uptodate-cannot-merge force_checkout: false # [number=5] [0,100] Color tolerance (fuzzyness) for the `stats` mode fuzz: 5 # [string|list(string)] The file you want to compare. Leave it blank for the current PCB/SCH. # A list is accepted only for the `multivar` type. Consult the `old` option for more information new: '' # [string='current'] [git,file,output,multivar,current] How to interpret the `new` name. Use `git` for a git hash, branch, etc. # Use `current` for the currently loaded PCB/Schematic. # Use `file` for a file name. Use `output` to specify the name of a `pcb_variant`/`sch_variant` output. # Use `multivar` to compare a set of variants, in this mode `new` is the list of variants. # If `old` is also `multivar` then it becomes the reference, otherwise we compare using pairs of variants new_type: 'current' # [string='HEAD'] Reference file. When using git use `HEAD` to refer to the last commit. # Use `HEAD~` to refer the previous to the last commit. # As `HEAD` is for the whole repo you can use `KIBOT_LAST-n` to make # reference to the changes in the PCB/SCH. The `n` value is how many # changes in the history you want to go back. A 0 is the same as `HEAD`, # a 1 means the last time the PCB/SCH was changed, etc. # Use `KIBOT_TAG-n` to search for the last tag skipping `n` tags. # Important: when using the `checkout` GitHub action you just get the # last commit. To clone the full repo use `fetch-depth: '0'` old: 'HEAD' # [string='git'] [git,file,output,multivar] How to interpret the `old` name. Use `git` for a git hash, branch, etc. # Use `file` for a file name. Use `output` to specify the name of a `pcb_variant`/`sch_variant` output. # Use `multivar` to specify a reference file when `new_type` is also `multivar` old_type: 'git' # [boolean=false] Only include the pages with differences in the output PDF. # Note that when no differeces are found we get a page saying *No diff* only_different: false # [boolean=false] Compare only the main schematic page (root page) only_first_sch_page: false # [string='%f-%i%I%v.%x'] Filename for the output (%i=diff_pcb/diff_sch, %x=pdf). Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Compare the PCB, otherwise compare the schematic pcb: true # [number=0] [0,1000000] Error threshold for the `stats` mode, 0 is no error. When specified a # difference bigger than the indicated value will make the diff fail. # KiBot will return error level 29 and the diff generation will be aborted threshold: 0 # [boolean=false] When creating the link name of an output file related to a variant use the variant # `file_id` instead of its name use_file_id: false layers: all # Datasheets downloader: - name: 'download_datasheets_example' comment: 'Downloads the datasheets for the project' type: 'download_datasheets' dir: 'Example/download_datasheets_dir' options: # [boolean=false] Include the DNF components dnf: false # [string|list(string)='_none'] 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: '_none' # [string='Datasheet'] Name of the field containing the URL field: 'Datasheet' # [boolean=true] Instead of download things we already downloaded use symlinks link_repeated: true # [string='${VALUE}.pdf'] Name used for the downloaded datasheet. # ${FIELD} will be replaced by the FIELD content output: '${VALUE}.pdf' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Download URLs that we already downloaded. # It only makes sense if the `output` field makes their output different repeated: false # [string=''] Board variant to apply variant: '' # DXF (Drawing Exchange Format): # This output is what you get from the File/Plot menu in pcbnew. - name: 'dxf_example' comment: 'Exports the PCB to 2D mechanical EDA tools (like AutoCAD).' type: 'dxf' dir: 'Example/dxf_dir' options: # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [boolean=false] Use mm instead of inches metric_units: false # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [boolean=true] Plot using the contour, instead of the center line. # You must disable it to get the dimensions (See https://gitlab.com/kicad/code/kicad/-/issues/11901) polygon_mode: true # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Don't fill objects, just draw the outline sketch_plot: false # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [boolean=false] Use the auxiliary axis as origin for coordinates use_aux_axis_as_origin: false # [string=''] Board variant to apply variant: '' layers: all # 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: 'excellon_example' comment: 'This is the main format for the drilling machine.' type: 'excellon' dir: 'Example/excellon_dir' options: # [number=0] number of digits for integer part of coordinates (0 is auto) left_digits: 0 # [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%I%v.%x'] Name for the map file, KiCad defaults if empty (%i='PTH_drill_map'). Affected by global options output: '%f-%i%I%v.%x' # [string='pdf'] [hpgl,ps,gerber,dxf,svg,pdf] Format for a graphical drill map type: 'pdf' # [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] Force this replacement for %i when generating NPTH files npth_id: null # [string='%f-%i%I%v.%x'] name for the drill file, KiCad defaults if empty (%i='PTH_drill'). Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Generate one file for both, plated holes and non-plated holes, instead of two separated files pth_and_npth_single_file: true # [string] Force this replacement for %i when generating PTH and unified files pth_id: null # [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: '' # [number=0] number of digits for mantissa part of coordinates (0 is auto) right_digits: 0 # [boolean=true] Use route command for oval holes (G00), otherwise use G85 route_mode_for_oval_holes: true # [boolean=false] Use the auxiliary axis as origin for coordinates use_aux_axis_as_origin: false # [string='DECIMAL_FORMAT'] [DECIMAL_FORMAT,SUPPRESS_LEADING,SUPPRESS_TRAILING,KEEP_ZEROS] How to handle the zeros zeros_format: 'DECIMAL_FORMAT' # GenCAD: # This format is interpreted by some CADCAM software and helps certain # manufacturers - name: 'gencad_example' comment: 'Exports the PCB in GENCAD format.' type: 'gencad' dir: 'Example/gencad_dir' options: # [boolean=false] Use auxiliary axis as origin aux_origin: false # [boolean=false] Flip bottom footprint padstacks flip_bottom_padstacks: false # [boolean=false] Generate a new shape for each footprint instance (Do not reuse shapes) no_reuse_shapes: false # [string='%f-%i%I%v.%x'] Filename for the output (%i=gencad, %x=cad). Affected by global options output: '%f-%i%I%v.%x' # [boolean=false] Save the origin coordinates in the file save_origin: false # [boolean=false] Generate unique pin names unique_pin_names: false # 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: 'gerb_drill_example' comment: 'This is the information for the drilling machine in gerber format.' type: 'gerb_drill' dir: 'Example/gerb_drill_dir' 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%I%v.%x'] Name for the map file, KiCad defaults if empty (%i='PTH_drill_map'). Affected by global options output: '%f-%i%I%v.%x' # [string='pdf'] [hpgl,ps,gerber,dxf,svg,pdf] Format for a graphical drill map type: 'pdf' # [string] Force this replacement for %i when generating NPTH files npth_id: null # [string='%f-%i%I%v.%x'] name for the drill file, KiCad defaults if empty (%i='PTH_drill'). Affected by global options output: '%f-%i%I%v.%x' # [string] Force this replacement for %i when generating PTH and unified files pth_id: null # [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: '' # [boolean=false] Use the auxiliary axis as origin for coordinates use_aux_axis_as_origin: false # Gerber format: # This output is what you get from the File/Plot menu in pcbnew. - name: 'gerber_example' comment: 'This is the main fabrication format for the PCB.' type: 'gerber' dir: 'Example/gerber_dir' 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: true # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [boolean=false] Disable aperture macros (workaround for buggy CAM software) (KiCad 6) disable_aperture_macros: false # [string|list(string)='_none'] 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: '_none' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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%I%v.%x'] Name for the gerber job file (%i='job', %x='gbrjob'). Affected by global options gerber_job_file: '%f-%i%I%v.%x' # [number=4.6] This the gerber coordinate format, can be 4.5 or 4.6 gerber_precision: 4.6 # [string=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [number=0.1] [0.02,2] Line_width for objects without width [mm] (KiCad 5) line_width: 0.1 # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Subtract the solder mask from the silk screen subtract_mask_from_silk: false # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [boolean=false] Use the auxiliary axis as origin for coordinates use_aux_axis_as_origin: false # [boolean=true] Include netlist metadata use_gerber_net_attributes: true # [boolean=true] Use the extended X2 format (otherwise use X1 formerly RS-274X) use_gerber_x2_attributes: true # [boolean=false] Use legacy Protel file extensions use_protel_extensions: false # [string=''] Board variant to apply variant: '' layers: all # HPGL (Hewlett & Packard Graphics Language): # This output is what you get from the File/Plot menu in pcbnew. - name: 'hpgl_example' comment: 'Exports the PCB for plotters and laser printers.' type: 'hpgl' dir: 'Example/hpgl_dir' options: # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [boolean=false] Plot mirrored mirror_plot: false # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [number=1] [1,16] Pen number pen_number: 1 # [number=20] [1,99] Pen speed pen_speed: 20 # [number=15] [0,100] Pen diameter in MILS, useful to fill areas. However, it is in mm in HPGL files pen_width: 15 # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=0] Scale factor (0 means autoscaling) scaling: 0 # [boolean=false] Don't fill objects, just draw the outline sketch_plot: false # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [string=''] Board variant to apply variant: '' layers: all # IBoM (Interactive HTML BoM): # For more information: https://github.com/INTI-CMNB/InteractiveHtmlBom # This output is what you get from the InteractiveHtmlBom plug-in (pcbnew). - name: 'ibom_example' comment: 'Generates an interactive web page useful to identify the position of the components in the PCB.' type: 'ibom' dir: 'Example/ibom_dir' options: # [string=''] List of comma separated blacklisted components or prefixes with *. E.g. 'X1,MH*'. # IBoM option, avoid using in conjunction with KiBot variants/filters blacklist: '' # [boolean=false] Blacklist components with empty value. # IBoM option, avoid using in conjunction with KiBot variants/filters blacklist_empty_val: false # [number=0] Board rotation in degrees (-180 to 180). Will be rounded to multiple of 5 board_rotation: 0 # [string='left-right'] [bom-only,left-right,top-bottom] Default BOM view bom_view: 'left-right' # [string='Sourced,Placed'] Comma separated list of checkbox columns checkboxes: 'Sourced,Placed' # [boolean=false] Default to dark mode dark_mode: false # [string|list(string)='_none'] Name of the filter to mark components as not fitted. # A short-cut to use for simple cases where a variant is an overkill. # Avoid using it in conjunction with IBoM native filtering options dnf_filter: '_none' # [string=''] Name of the extra field that indicates do not populate status. # Components with this field not empty will be blacklisted. # IBoM option, avoid using in conjunction with KiBot variants/filters dnp_field: '' # [string=''] Path to netlist or xml file. You can use '%F.xml' to avoid specifying the project name. # Leave it blank for most uses, data will be extracted from the PCB extra_data_file: '' # [string=''] Comma separated list of extra fields to pull from netlist or xml file. # Using 'X,Y' is a shortcut for `show_fields` and `group_fields` with values 'Value,Footprint,X,Y' extra_fields: '' # [string=''] Comma separated list of fields that components will be grouped by. # Value and Footprint are used when nothing is specified group_fields: '' # [boolean=false] Hide footprint pads by default hide_pads: false # [boolean=false] Hide silkscreen by default hide_silkscreen: false # [boolean=false] Highlight pin1 by default highlight_pin1: false # [boolean=false] Include netlist information in output. include_nets: false # [boolean=false] Include track/zone information in output. F.Cu and B.Cu layers only include_tracks: false # [string='FB'] [F,FB,B] Default layer view layer_view: 'FB' # [string='ibom'] Output file name format supports substitutions: # %f : original pcb file name without extension. # %p : pcb/project title from pcb metadata. # %c : company from pcb metadata. # %r : revision from pcb metadata. # %d : pcb date from metadata if available, file modification date otherwise. # %D : bom generation date. # %T : bom generation time. # Extension .html will be added automatically. # Note that this name is used only when output is '' name_format: 'ibom' # `netlist_file` is an alias for `extra_data_file` # [boolean=false] Do not blacklist virtual components. # IBoM option, avoid using in conjunction with KiBot variants/filters no_blacklist_virtual: false # [boolean=false] Disable compression of pcb data no_compression: false # [boolean=false] Do not redraw pcb on drag by default no_redraw_on_drag: false # [boolean=false] Normalize extra field name case. E.g. 'MPN' and 'mpn' will be considered the same field normalize_field_case: false # [boolean=false] Offset the back of the pcb by 180 degrees offset_back_rotation: false # [string='%f-%i%I%v.%x'] Filename for the output, use '' to use the IBoM filename (%i=ibom, %x=html). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Show fabrication layer by default show_fabrication: false # [string=''] Comma separated list of fields to show in the BOM. # Value and Footprint are displayed when nothing is specified show_fields: '' # [string='C,R,L,D,U,Y,X,F,SW,A,~,HS,CNN,J,P,NT,MH'] Default sort order for components. Must contain '~' once sort_order: 'C,R,L,D,U,Y,X,F,SW,A,~,HS,CNN,J,P,NT,MH' # [string=''] Board variant to apply. # Avoid using it in conjunction with IBoM native filtering options variant: '' # [string=''] Name of the extra field that stores board variant for component. # IBoM option, avoid using in conjunction with KiBot variants/filters variant_field: '' # [string=''] List of board variants to exclude from the BOM. # IBoM option, avoid using in conjunction with KiBot variants/filters variants_blacklist: '' # [string=''] List of board variants to include in the BOM. # IBoM option, avoid using in conjunction with KiBot variants/filters variants_whitelist: '' # Info: # It can be used to know more about the environment used to generate the files. # Please don't rely on the way things are reported, its content could change, # adding or removing information - name: 'info_example' comment: 'Records information about the current run.' type: 'info' dir: 'Example/info_dir' options: # [string='names'] [names,none,full] List environment variables. # IMPORTANT: Don't use `full` unless you know you are not leaking sensitive information environment: 'names' # [string='%f-%i%I%v.%x'] Filename for the output (%i=info, %x=txt). Affected by global options output: '%f-%i%I%v.%x' # KiBoM (KiCad Bill of Materials): # For more information: https://github.com/INTI-CMNB/KiBoM # Note that this output is provided as a compatibility tool. # We recommend using the `bom` output instead. # This output is what you get from the 'Tools/Generate Bill of Materials' menu in eeschema. - name: 'kibom_example' comment: 'Used to generate the BoM in HTML or CSV format using the KiBoM plug-in.' type: 'kibom' dir: 'Example/kibom_dir' options: # [string|dict] BoM configuration file, relative to PCB. Environment variables and ~ allowed. # 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: 'Row' # [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: 'Line' # [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' exclude_any: # [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` # [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'] # [boolean=false] Hide column headers hide_headers: false # [boolean=false] Hide project information hide_pcb_info: false # [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: true # [string|list(string)=''] Column/s containing Mouser part numbers, will be linked to web page (HTML only) mouser_link: '' # [boolean=true] First column is the row number number_rows: true # [string=' '] Separator used for the list of references ref_separator: ' ' # [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: 'HTML' # [number=1] Number of boards to build (components multiplier) number: 1 # [string='%f-%i%I%v.%x'] Filename for the output (%i=bom). Affected by global options output: '%f-%i%I%v.%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: '' # KiCost (KiCad Cost calculator): # For more information: https://github.com/INTI-CMNB/KiCost # This output is what you get from the KiCost plug-in (eeschema). - name: 'kicost_example' comment: 'Generates a spreadsheet containing components costs.' type: 'kicost' dir: 'Example/kicost_dir' options: # [list(dict)] Add components from other projects aggregate: # `board_qty` is an alias for `number` # [string=''] Name of the XML to aggregate - file: '' # [number=100] Number of boards to build (components multiplier) number: 100 # [string=' '] Variant for this project variant: ' ' # `board_qty` is an alias for `number` # [string|list(string)=USD] Currency priority. Use ISO4217 codes (i.e. USD, EUR) currency: USD # [string|list(string)] Include this distributors list. Default is all the available distributors: # [string|list(string)='_none'] Name of the filter to mark components as not fitted. # A short-cut to use for simple cases where a variant is an overkill. # Don't use the `kicost_variant` when using internal variants/filters dnf_filter: '_none' # [string|list(string)] List of fields to be added to the global data section fields: # [string|list(string)] List of fields that can be different for a group. # Parts with differences in these fields are grouped together, but displayed individually group_fields: # [string|list(string)] List of fields to be ignored ignore_fields: # [string=''] Regular expression to match the variant field (KiCost option, not internal variants) kicost_variant: '' # [boolean=false] Do not collapse the part references (collapse=R1-R4) no_collapse: false # [string|list(string)] Exclude this distributors list. They are removed after computing `distributors` no_distributors: # [boolean=false] Do not look for components price. For testing purposes no_price: false # [number=100] Number of boards to build (components multiplier) number: 100 # [string='%f-%i%I%v.%x'] Filename for the output (%i=kicost, %x=xlsx). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Include the catalogue links in the catalogue code show_cat_url: false # [string|list(string)] Declare part fields to include in multipart split process split_extra_fields: # [list(dict)] Fields to rename (KiCost option, not internal filters) translate_fields: # [string=''] Name of the field to rename - field: 'mpn' # [string=''] New name name: 'manf#' # [string=''] Board variant to apply. # Don't use the `kicost_variant` when using internal variants/filters variant: '' # Navigate Results: - name: 'navigate_results_example' comment: 'Generates a web page to navigate the generated outputs' type: 'navigate_results' dir: 'Example/navigate_results_dir' options: # [string=''] The name of a file to create at the main output directory linking to the home page link_from_root: '' # [string='%f-%i%I%v.%x'] Filename for the output (%i=html, %x=navigate). Affected by global options output: '%f-%i%I%v.%x' # Netlist: # The netlist can be generated in the classic format and in IPC-D-356 format, # useful for board testing - name: 'netlist_example' comment: 'Generates the list of connections for the project.' type: 'netlist' dir: 'Example/netlist_dir' options: # [string='classic'] [classic,ipc] The `classic` format is the KiCad internal format, and is generated # from the schematic. The `ipc` format is the IPC-D-356 format, useful for PCB # testing, is generated from the PCB format: 'classic' # [string='%f-%i%I%v.%x'] Filename for the output (%i=netlist/IPC-D-356, %x=net/d356). Affected by global options output: '%f-%i%I%v.%x' # Panelize: # It currently uses the KiKit tool, which must be available. # Consult KiKit docs for detailed information. # [KiKit panelization docs](https://github.com/yaqwsx/KiKit/blob/master/doc/examples.md). # Current versions of KiKit only support KiCad 6 and my tests using # KiKit 1.0.5 (the last to support KiCad 5) shown some # incompatibilities. # Note that you don't need to specify the units for all distances. # If they are omitted they are assumed to be `default_units`. # The same is valid for angles, using `default_angles` - name: 'panelize_example' comment: 'Creates a panel to fabricate various copies of the PCB at once.' type: 'panelize' dir: 'Example/panelize_dir' options: # [list(dict)|list(string)|string] One or more configurations used to create the panel. # Use a string to include an external configuration, i.e. `myDefault.json`. # You can also include a preset using `:name`, i.e. `:vcuts`. # Use a dict to specify the options using the KiBot YAML file configs: # [dict] Fill non-board areas of the panel with copper - copperfill: # [number|string] Extra clearance from the board perimeters. Suitable for, e.g., not filling the tabs with # copper clearance: 0.5 # [string|list(string)] List of layers to fill. Can be a comma-separated string. # Using *all* means all external copper layers layers: 'F.Cu,B.Cu' # [number|string] The orientation of the hatched strokes orientation: 45 # [number|string] The space between the hatched strokes spacing: 1 # [string='none'] [none,solid,hatched] How to fill non-board areas of the panel with copper type: 'none' # [number|string] The width of the hatched strokes width: 1 # [dict] Specify how to perform the cuts on the tabs separating the board cuts: # [number|string] Specify clearance for copper around V-cuts clearance: 0 # `cut_curves` is an alias for `cutcurves` # [boolean=false] Specify if curves should be approximated by straight cuts (e.g., for cutting tabs on circular boards). # Used for *vcuts* cutcurves: false # [number|string] Drill size used for the *mousebites* drill: 0.5 # [string='Cmts.User'] Specify the layer to render V-cuts on. Also used for the *layer* type layer: 'Cmts.User' # [number|string] Specify the *mousebites* and *vcuts* offset, positive offset puts the cuts into the board, # negative puts the cuts into the tabs offset: 0 # [number|string] Distance for tangential prolongation of the cuts (to cut through the internal corner fillets # caused by milling). Used for *mousebites* and *layer* prolong: 0 # [number|string] The spacing of the holes used for the *mousebites* spacing: 0.8 # [string='none'] [none,mousebites,vcuts,layer] Layer: When KiKit reports it cannot perform cuts, you can render the cuts # into a layer with this option to understand what's going on. Shouldn't be used for the final design type: 'none' # [dict] Debug options debug: # [boolean=false] Deterministic deterministic: false # [boolean=false] Draw backbone lines drawBackboneLines: false # [boolean=false] Draw partition lines drawPartitionLines: false # [boolean=false] Draw boxes drawboxes: false # [boolean=false] Draw tab fail drawtabfail: false # [boolean=false] Trace trace: false # [string=''] A configuration to use as base for this one. Use the following format: `OUTPUT_NAME[CFG_NAME]` extends: '' # [dict] Used to add fiducial marks to the (rail/frame of) the panel fiducials: # `copper_size` is an alias for `coppersize` # [number|string] Diameter of the copper spot coppersize: 1 # [number|string] Horizontal offset from panel edges hoffset: 0 # [number|string] Diameter of the solder mask opening opening: 1 # [string='none'] [none,3fid,4fid] Add none, 3 or 4 fiducials to the (rail/frame of) the panel type: 'none' # [number|string] Vertical offset from panel edges voffset: 0 # [dict] Specify the frame around the boards framing: # [number|string] Specify the size of chamfer frame corners chamfer: 0 # [string='both'] [none,both,v,h] Specify whether to add cuts to the corners of the frame for easy removal. # Used for *frame* cuts: 'both' # [number|string] Specify radius of fillet frame corners fillet: 0 # [number|string] Specify the horizontal space between PCB and the frame/rail hspace: 2 # `min_total_height` is an alias for `mintotalheight` # `min_total_width` is an alias for `mintotalwidth` # [number|string] If needed, add extra material to the rail or frame to meet the minimal requested size. # Useful for services that require minimal panel size mintotalheight: 0 # [number|string] If needed, add extra material to the rail or frame to meet the minimal requested size. # Useful for services that require minimal panel size mintotalwidth: 0 # `slot_width` is an alias for `slotwidth` # [number|string] Width of the milled slot for *tightframe* slotwidth: 2 # [number|string] Specify the space between PCB and the frame/rail. Overrides `hspace` and `vspace` space: null # [string='none'] [none,railstb,railslr,frame,tightframe] Railstb: Add rails on top and bottom. # Railslr: Add rails on left and right. # Frame: Add a frame around the board. # Tighframe: Add a frame around the board which fills the whole area of the panel - # the boards have just a milled slot around their perimeter type: 'none' # [number|string] Specify the vertical space between PCB and the frame/rail vspace: 2 # [number|string] Specify with of the rails or frame width: 5 # [dict] Layout used for the panel layout: # [string='none'] [none,rows,cols,rowsCols] Specify alternations of board rotation. # none: Do not alternate. # rows: Rotate boards by 180° on every next row. # cols: Rotate boards by 180° on every next column. # rowsCols: Rotate boards by 180° based on a chessboard pattern alternation: 'none' # `bake_text` is an alias for `baketext` # [boolean=true] A flag that indicates if text variables should be substituted or not baketext: true # [number=1] Specify the number of columns of boards in the grid pattern cols: 1 # [number|string] The width of horizontal backbone (0 means no backbone). The backbone does not increase the # spacing of the boards hbackbone: 0 # [boolean=true] If there are both backbones specified, specifies if there should be a horizontal cut where the backbones # cross hbonecut: true # [number=0] Skip every n horizontal backbones. I.e., 1 means place only every other backbone hboneskip: 0 # [number|string] Specify the horizontal gap between the boards hspace: 0 # `rename_net` is an alias for `renamenet` # `rename_ref` is an alias for `renameref` # [string='Board_{n}-{orig}'] A pattern by which to rename the nets. You can use {n} and {orig} to get the board number and original name renamenet: 'Board_{n}-{orig}' # [string='{orig}'] A pattern by which to rename the references. You can use {n} and {orig} to get the board number and original # name renameref: '{orig}' # [number|string] Rotate the boards before placing them in the panel rotation: 0 # [number=1] Specify the number of rows of boards in the grid pattern rows: 1 # [number|string] Specify the gap between the boards, overwrites `hspace` and `vspace` space: null # [string='grid'] [grid] Currently fixed type: 'grid' # [number|string] The width of vertical backbone (0 means no backbone). The backbone does not increase the # spacing of the boards vbackbone: 0 # [boolean=true] If there are both backbones specified, specifies if there should be a vertical cut where the backbones # cross vbonecut: true # [number=0] Skip every n vertical backbones. I.e., 1 means place only every other backbone vboneskip: 0 # [number|string] Specify the vertical gap between the boards vspace: 0 # [string=''] A name to identify this configuration. If empty will be the order in the list, starting with 1. # Don't use just a number or it will be confused as an index name: '' # [dict] Sets page size on the resulting panel and position the panel in the page page: # [string='tl'] [tl,tr,bl,br,mt,mb,ml,mr,c] Point of the panel to be placed at given position. Can be one of tl, tr, bl, br # (corners), mt, mb, ml, mr (middle of sides), c (center). The anchors refer to the panel outline anchor: 'tl' # [number|string] Height for the `custom` paper size height: 210 # `page_size` is an alias for `type` # `pos_x` is an alias for `posx` # `pos_y` is an alias for `posy` # [number|string] The X position of the panel on the page posx: 15 # [number|string] The Y position of the panel on the page posy: 15 # `size` is an alias for `type` # [string='inherit'] [inherit,custom,A0,A1,A2,A3,A4,A5,A,B,C,D,E,USLetter,USLegal,USLedger,A0-portrait,A1-portrait,A2-portrait, # A3-portrait,A4-portrait,A5-portrait,A-portrait,B-portrait,C-portrait,D-portrait,E-portrait, # USLetter-portrait,USLegal-portrait,USLedger-portrait] Paper size. The default `inherit` option inherits # paper size from the source board. This feature is not supported on KiCAD 5 type: 'inherit' # [number|string] Width for the `custom` paper size width: 297 # [dict] Finishing touches to the panel post: # [boolean=false] Fill tabs and frame with copper (e.g., to save etchant or to increase rigidity of flex-PCB panels) copperfill: false # `mill_radius` is an alias for `millradius` # [number|string] Simulate the milling operation (add fillets to the internal corners). # Specify mill radius (usually 1 mm). 0 radius disables the functionality millradius: 0 # [string='tl'] [tl,tr,bl,br,mt,mb,ml,mr,c] Specify if the auxiliary origin an grid origin should be placed. # Can be one of tl, tr, bl, br (corners), mt, mb, ml, mr (middle of sides), c (center). # Empty string does not changes the origin origin: 'tl' # `reconstruct_arcs` is an alias for `reconstructarcs` # [boolean=false] The panelization process works on top of a polygonal representation of the board. # This options allows to reconstruct the arcs in the design before saving the panel reconstructarcs: false # `refill_zones` is an alias for `refillzones` # [boolean=false] Refill the user zones after the panel is build. # This is only necessary when you want your zones to avoid cuts in panel refillzones: false # [string=''] A path to custom Python file. The file should contain a function kikitPostprocess(panel, args) that # receives the prepared panel as the kikit.panelize.Panel object and the user-supplied arguments as a # string - see `scriptarg`. The function can make arbitrary changes to the panel - you can append text, # footprints, alter labels, etc. The function is invoked after the whole panel is constructed # (including all other postprocessing). If you try to add a functionality for a common fabrication # houses via scripting, consider submitting PR for KiKit script: '' # `script_arg` is an alias for `scriptarg` # [string=''] An arbitrary string passed to the user post-processing script specified in script scriptarg: '' # [string='auto'] [auto] Currently fixed type: 'auto' # [dict] Used to adjust details of which part of the PCB is panelized source: # [number|string] Bottom right X coordinate of the rectangle used. Used for *rectangle* brx: 0 # [number|string] Bottom right Y coordinate of the rectangle used. Used for *rectangle* bry: 0 # [string=''] Reference for the kikit:Board footprint used to select the contour. Used for *annotation* ref: '' # [string='inherit'] [inherit,2layer,4layer,6layer] Used to reduce the number of layers used for the panel stack: 'inherit' # [number|string] Top left X coordinate of the rectangle used. Used for *rectangle* tlx: 0 # [number|string] Top left Y coordinate of the rectangle used. Used for *rectangle* tly: 0 # [number|string] Extra space around the PCB reported size to be included. Used for *auto* and *annotation* tolerance: 1 # [string='auto'] [auto,rectangle,annotation] How we select the area of the PCB tu used for the panelization. # *auto* uses all the area reported by KiCad, *rectangle* a specified rectangle and # *annotation* selects a contour marked by a kikit:Board footprint type: 'auto' # [dict] Style of the tabs used to join the PCB copies tabs: # [number|string] When your design features open pockets on the side, this parameter specifies extra cutout depth in order to # ensure that a sharp corner of the pocket can be milled. Used for *full* cutout: 1 # [number=1] Number of tabs in the horizontal direction. Used for *fixed* hcount: 1 # [number|string] The width of tabs in the horizontal direction. Used for *fixed* and *spacing* hwidth: 3 # `min_distance` is an alias for `mindistance` # [number|string] Minimal spacing between the tabs. If there are too many tabs, their count is reduced. # Used for *fixed* mindistance: 0 # [number|string] The maximum spacing of the tabs. Used for *spacing* spacing: 10 # `tab_footprints` is an alias for `tabfootprints` # [string='kikit:Tab'] The footprint/s used for the *annotation* type. You can specify a list of footprints separated by comma tabfootprints: 'kikit:Tab' # [string='spacing'] [fixed,spacing,full,annotation] Fixed: Place given number of tabs on the PCB edge. # Spacing: Place tabs on the PCB edges based on spacing. # Full: Create tabs that are full width of the PCB. # Corner: Create tabs in the corners of the PCB. # Annotation: Add tabs based on PCB annotations type: 'spacing' # [number=1] Number of tabs in the vertical direction. Used for *fixed* vcount: 1 # [number|string] The width of tabs in the vertical direction. Used for *fixed* and *spacing* vwidth: 3 # [number|string] The width of tabs in both directions. Overrides both `vwidth` and `hwidth`. # Used for *fixed*, *spacing*, *corner* and *annotation* width: null # [dict] Used to add text to the panel text: # [string='mt'] [tl,tr,bl,br,mt,mb,ml,mr,c] Origin of the text. Can be one of tl, tr, bl, br (corners), mt, mb, ml, mr # (middle of sides), c (center). The anchors refer to the panel outline anchor: 'mt' # [number|string] Height of the characters (the same parameters as KiCAD uses) height: 1.5 # [string='center'] [left,right,center] Horizontal justification of the text hjustify: 'center' # [number|string] Specify the horizontal offset from anchor. Respects KiCAD coordinate system hoffset: 0 # [string='F.SilkS'] Specify text layer layer: 'F.SilkS' # [number|string] Specify the orientation (angle) orientation: 0 # [string=''] The text to be displayed. Note that you can escape ; via \. # Available variables in text: *date* formats current date as --, # *time24* formats current time in 24-hour format, # *boardTitle* the title from the source board, # *boardDate* the date from the source board, # *boardRevision* the revision from the source board, # *boardCompany* the company from the source board, # *boardComment1*-*boardComment9* comments from the source board text: '' # [number|string] Stroke thickness thickness: 0.3 # [string='none'] [none,simple] Currently fixed. BTW: don't ask me about this ridiculous default, is how KiKit works type: 'none' # [string='center'] [left,right,center] Vertical justification of the text vjustify: 'center' # [number|string] Specify the vertical offset from anchor. Respects KiCAD coordinate system voffset: 0 # [number|string] Width of the characters (the same parameters as KiCAD uses) width: 1.5 # [dict] Used to add text to the panel text2: # [string='mt'] [tl,tr,bl,br,mt,mb,ml,mr,c] Origin of the text. Can be one of tl, tr, bl, br (corners), mt, mb, ml, mr # (middle of sides), c (center). The anchors refer to the panel outline anchor: 'mt' # [number|string] Height of the characters (the same parameters as KiCAD uses) height: 1.5 # [string='center'] [left,right,center] Horizontal justification of the text hjustify: 'center' # [number|string] Specify the horizontal offset from anchor. Respects KiCAD coordinate system hoffset: 0 # [string='F.SilkS'] Specify text layer layer: 'F.SilkS' # [number|string] Specify the orientation (angle) orientation: 0 # [string=''] The text to be displayed. Note that you can escape ; via \. # Available variables in text: *date* formats current date as --, # *time24* formats current time in 24-hour format, # *boardTitle* the title from the source board, # *boardDate* the date from the source board, # *boardRevision* the revision from the source board, # *boardCompany* the company from the source board, # *boardComment1*-*boardComment9* comments from the source board text: '' # [number|string] Stroke thickness thickness: 0.3 # [string='none'] [none,simple] Currently fixed. BTW: don't ask me about this ridiculous default, is how KiKit works type: 'none' # [string='center'] [left,right,center] Vertical justification of the text vjustify: 'center' # [number|string] Specify the vertical offset from anchor. Respects KiCAD coordinate system voffset: 0 # [number|string] Width of the characters (the same parameters as KiCAD uses) width: 1.5 # [dict] Used to add text to the panel text3: # [string='mt'] [tl,tr,bl,br,mt,mb,ml,mr,c] Origin of the text. Can be one of tl, tr, bl, br (corners), mt, mb, ml, mr # (middle of sides), c (center). The anchors refer to the panel outline anchor: 'mt' # [number|string] Height of the characters (the same parameters as KiCAD uses) height: 1.5 # [string='center'] [left,right,center] Horizontal justification of the text hjustify: 'center' # [number|string] Specify the horizontal offset from anchor. Respects KiCAD coordinate system hoffset: 0 # [string='F.SilkS'] Specify text layer layer: 'F.SilkS' # [number|string] Specify the orientation (angle) orientation: 0 # [string=''] The text to be displayed. Note that you can escape ; via \. # Available variables in text: *date* formats current date as --, # *time24* formats current time in 24-hour format, # *boardTitle* the title from the source board, # *boardDate* the date from the source board, # *boardRevision* the revision from the source board, # *boardCompany* the company from the source board, # *boardComment1*-*boardComment9* comments from the source board text: '' # [number|string] Stroke thickness thickness: 0.3 # [string='none'] [none,simple] Currently fixed. BTW: don't ask me about this ridiculous default, is how KiKit works type: 'none' # [string='center'] [left,right,center] Vertical justification of the text vjustify: 'center' # [number|string] Specify the vertical offset from anchor. Respects KiCAD coordinate system voffset: 0 # [number|string] Width of the characters (the same parameters as KiCAD uses) width: 1.5 # [dict] Used to add text to the panel text4: # [string='mt'] [tl,tr,bl,br,mt,mb,ml,mr,c] Origin of the text. Can be one of tl, tr, bl, br (corners), mt, mb, ml, mr # (middle of sides), c (center). The anchors refer to the panel outline anchor: 'mt' # [number|string] Height of the characters (the same parameters as KiCAD uses) height: 1.5 # [string='center'] [left,right,center] Horizontal justification of the text hjustify: 'center' # [number|string] Specify the horizontal offset from anchor. Respects KiCAD coordinate system hoffset: 0 # [string='F.SilkS'] Specify text layer layer: 'F.SilkS' # [number|string] Specify the orientation (angle) orientation: 0 # [string=''] The text to be displayed. Note that you can escape ; via \. # Available variables in text: *date* formats current date as --, # *time24* formats current time in 24-hour format, # *boardTitle* the title from the source board, # *boardDate* the date from the source board, # *boardRevision* the revision from the source board, # *boardCompany* the company from the source board, # *boardComment1*-*boardComment9* comments from the source board text: '' # [number|string] Stroke thickness thickness: 0.3 # [string='none'] [none,simple] Currently fixed. BTW: don't ask me about this ridiculous default, is how KiKit works type: 'none' # [string='center'] [left,right,center] Vertical justification of the text vjustify: 'center' # [number|string] Specify the vertical offset from anchor. Respects KiCAD coordinate system voffset: 0 # [number|string] Width of the characters (the same parameters as KiCAD uses) width: 1.5 # [dict] Used to add tooling holes to the (rail/frame of) the panel tooling: # [number|string] Horizontal offset from panel edges hoffset: 0 # [boolean=false] If True, the holes are included in the paste layer (therefore they appear on the stencil) paste: false # [number|string] Diameter of the holes size: 1.152 # [string='none'] [none,3hole,4hole] Add none, 3 or 4 holes to the (rail/frame of) the panel type: 'none' # [number|string] Vertical offset from panel edges voffset: 0 # [string='deg'] [deg,°,rad] Angles used when omitted default_angles: 'deg' # [string='mm'] [mm,cm,dm,m,mil,inch,in] Units used when omitted default_units: 'mm' # [string|list(string)='_none'] 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: '_none' # [string='%f-%i%I%v.%x'] Filename for the output (%i=panel, %x=kicad_pcb). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' # PCB Print: # Supports PDF, SVG, PNG, EPS and PS formats. # KiCad 5: including the frame is slow. # KiCad 6: for custom frames use the `enable_ki6_frame_fix`, is slow. - name: 'pcb_print_example' comment: 'Prints the PCB using a mechanism that is more flexible than `pdf_pcb_print` and `svg_pcb_print`.' type: 'pcb_print' dir: 'Example/pcb_print_dir' options: # [boolean=false] Add a background to the pages, see `background_color` add_background: false # [number=0] Default horizontal margin used for the autoscaling mode [mm] autoscale_margin_x: 0 # [number=0] Default vertical margin used for the autoscaling mode [mm] autoscale_margin_y: 0 # [string='#FFFFFF'] Color for the background when `add_background` is enabled background_color: '#FFFFFF' # [string=''] Background image, must be an SVG, only when `add_background` is enabled background_image: '' # [string=''] Color used for blind/buried `colored_vias` blind_via_color: '' # [string='_builtin_classic'] Selects the color theme. Only applies to KiCad 6. # To use the KiCad 6 default colors select `_builtin_default`. # Usually user colors are stored as `user`, but you can give it another name color_theme: '_builtin_classic' # [boolean=true] Plot through-hole in a different color. Like KiCad GUI does colored_pads: true # [boolean=true] Plot vias in a different color. Like KiCad GUI does colored_vias: true # [string|list(string)='_none'] 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: '_none' # [number=360] [36,1200] Resolution (Dots Per Inch) for the output file. Most objects are vectors, but thing # like the the solder mask are handled as images by the conversion tools dpi: 360 # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [boolean=false] Add the `Edge.Cuts` to all the pages force_edge_cuts: false # [string=''] Color used for the `force_edge_cuts` option forced_edge_cuts_color: '' # [string='PDF'] [PDF,SVG,PNG,EPS,PS] Format for the output file/s. # Note that for PS you need `ghostscript` which isn't part of the default docker images format: 'PDF' # [string='internal'] [gui,internal,plot] Plotting the frame from Python is problematic. # This option selects a workaround strategy. # gui: uses KiCad GUI to do it. Is slow but you get the correct frame. # But it can't keep track of page numbers. # internal: KiBot loads the `.kicad_wks` and does the drawing work. # Best option, but some details are different from what the GUI generates. # plot: uses KiCad Python API. Only available for KiCad 6. # You get the default frame and some substitutions doesn't work frame_plot_mechanism: 'internal' # [boolean=false] Hide components in the Fab layer that are marked as excluded by a variant. # Affected by global options hide_excluded: false # [boolean=false] Store the temporal page and layer files in the output dir and don't delete them keep_temporal_files: false # [string=''] Color used for micro `colored_vias` micro_via_color: '' # [string='%f-%i%I%v.%x'] Filename for the output (%i=assembly, %x=pdf/ps)/(%i=assembly_page_NN, %x=svg/png/eps). # Consult the `page_number_as_extension` and `page_id` options. Affected by global options output: '%f-%i%I%v.%x' # `output_name` is an alias for `output` # [string=''] Color used for `colored_pads` pad_color: '' # [boolean=false] When enabled the %i is always `assembly`, the %x will be NN.FORMAT (i.e. 01.png). # Note: page numbers can be customized using the `page_id` option for each page page_number_as_extension: false # [list(dict)] List of pages to include in the output document. # Each page contains one or more layers of the PCB pages: # [number=0] Horizontal margin used for the autoscaling mode [mm] - autoscale_margin_x: 0 # [number=0] Vertical margin used for the autoscaling mode [mm] autoscale_margin_y: 0 # [boolean=true] Change the drill holes to be colored instead of white colored_holes: true # [boolean=false] Do not plot the component pads in the silk screen (KiCad 5.x only) exclude_pads_from_silkscreen: false # [string='#000000'] Color used for the holes when `colored_holes` is enabled holes_color: '#000000' # [list(dict)|list(string)|string] List of layers printed in this page. # Order is important, the last goes on top. # You can reuse other layers lists, some options aren't used here, but they are valid layers: # [string=''] Color used for this layer - color: '' # [string=''] A description for the layer, for documentation purposes description: '' # [boolean=false] Include references and values even when they are marked as invisible force_plot_invisible_refs_vals: false # [string=''] Name of the layer. As you see it in KiCad layer: '' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [string=''] Suffix used in file names related to this layer. Derived from the name if not specified suffix: '' # [number=0.1] [0.02,2] For objects without width [mm] (KiCad 5) line_width: 0.1 # [boolean=false] Print mirrored (X axis inverted) mirror: false # [boolean=false] Print in gray scale monochrome: false # [boolean=false] Invert black and white. Only useful for a single layer negative_plot: false # [string='%02d'] Text to differentiate the pages. Use %d (like in C) to get the page number page_id: '%02d' # [number=1.0] Scale factor (0 means autoscaling) scaling: 1.0 # [string='Assembly'] Text to use for the `sheet` in the title block sheet: 'Assembly' # [string=''] Color to use for the frame and title block sheet_reference_color: '' # [boolean=false] Try to sort the layers in the same order that uses KiCad for printing sort_layers: false # [boolean=true] Cover the vias tent_vias: true # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [boolean=true] Include the title-block (worksheet, frame, etc.) plot_sheet_reference: true # [number=1280] [0,7680] Width of the PNG in pixels. Use 0 to use as many pixels as the DPI needs for the page size png_width: 1280 # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=true] Try to draw the solder mask as a real solder mask, not the negative used for fabrication. # In order to get a good looking select a color with transparency, i.e. '#14332440'. # PcbDraw must be installed in order to use this option realistic_solder_mask: true # [number=1.0] Default scale factor (0 means autoscaling) scaling: 1.0 # [string=''] Worksheet file (.kicad_wks) to use. Leave empty to use the one specified in the project sheet_reference_layout: '' # [number=4] [0,6] Scale factor used to represent 1 mm in the SVG (KiCad 6). # The value is how much zeros has the multiplier (1 mm = 10 power `svg_precision` units). # Note that for an A4 paper Firefox 91 and Chrome 105 can't handle more than 5 svg_precision: 4 # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' # [string=''] Color used for through-hole `colored_vias` via_color: '' # PCB with variant generator: # This copy isn't intended for development. # Is just a tweaked version of the original where you can look at the results. - name: 'pcb_variant_example' comment: 'Creates a copy of the PCB with all the filters and variants applied.' type: 'pcb_variant' dir: 'Example/pcb_variant_dir' options: # [boolean=true] Copy the KiCad project to the destination directory copy_project: true # [string|list(string)='_none'] 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: '_none' # [boolean=false] Hide components in the Fab layer that are marked as excluded by a variant. # Affected by global options hide_excluded: false # [string='%f-%i%I%v.%x'] Filename for the output (%i=variant, %x=kicad_pcb). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' # PcbDraw - Beautiful 2D PCB render: # Uses configurable colors. # Can also render the components if the 2D models are available - name: 'pcbdraw_example' comment: 'Exports the PCB as a 2D model (SVG, PNG or JPG).' type: 'pcbdraw' dir: 'Example/pcbdraw_dir' options: # [boolean=true] The `show_components` list is added to the list of components indicated by the variant (fitted and not # excluded). # This is the old behavior, but isn't intuitive because the `show_components` meaning changes when a variant # is used. In this mode you should avoid using `show_components` and variants. # To get a more coherent behavior disable this option, and `none` will always be `none`. # Also `all` will be what the variant says add_to_variant: true # [boolean=false] Render the bottom side of the board (default is top side) bottom: false # [string|list(string)='_none'] 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: '_none' # [number=300] [10,1200] Dots per inch (resolution) of the generated image dpi: 300 # [string='svg'] [svg,png,jpg,bmp] Output format. Only used if no `output` is specified format: 'svg' # [list(string)=[]] List of components to highlight. Filter expansion is also allowed here, # see `show_components` highlight: [] # [list(string)=[]] List of libraries libs: [] # [number|dict] Margin around the generated image [mm] margin: # [number=0] Bottom margin [mm] bottom: 0 # [number=0] Left margin [mm] left: 0 # [number=0] Right margin [mm] right: 0 # [number=0] Top margin [mm] top: 0 # [boolean=false] Mirror the board mirror: false # [boolean=false] Do not make holes transparent no_drillholes: false # [number=0.15] [0,10] Width of the trace to draw the PCB border [mm]. # Note this also affects the drill holes outline_width: 0.15 # [string='%f-%i%I%v.%x'] Name for the generated file. Affected by global options output: '%f-%i%I%v.%x' # [boolean=false] Show placeholder for missing components placeholder: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [dict|None] (DEPRECATED) Replacements for PCB references using specified components (lib:component). # Use `remap_components` instead remap: # [list(dict)] Replacements for PCB references using specified components. # Replaces `remap` with type check remap_components: # [string=''] Component to use (from `lib`) - comp: '' # `component` is an alias for `comp` # [string=''] Library to use lib: '' # `library` is an alias for `lib` # [string=''] Reference for the component to change ref: '' # `reference` is an alias for `ref` # [string|list(string)=''] List of resistors to flip its bands resistor_flip: '' # [list(dict)] List of resitors to be remapped. You can change the value of the resistors here resistor_remap: # [string=''] Reference for the resistor to change - ref: '' # `reference` is an alias for `ref` # [string=''] Value to use for `ref` val: '' # `value` is an alias for `val` # [list(string)|string=none] [none,all] List of components to draw, can be also a string for none or all. # The default is none. # There two ways of using this option, please consult the `add_to_variant` option. # You can use `_kf(FILTER)` as an element in the list to get all the components that pass the filter. # You can even use `_kf(FILTER1;FILTER2)` to concatenate filters show_components: none # [boolean=true] Show the solder paste layers show_solderpaste: true # [string='kicad_edge'] [kicad_edge,kicad_all,svg_paths] Method used to detect the size of the resulting image. # The `kicad_edge` method uses the size of the board as reported by KiCad, # components that extend beyond the PCB limit will be cropped. You can manually # adjust the margins to make them visible. # The `kicad_all` method uses the whole size reported by KiCad. Usually includes extra space. # The `svg_paths` uses all visible drawings in the image. To use this method you # must install the `numpy` Python module (may not be available in docker images) size_detection: 'kicad_edge' # [string|dict] PCB style (colors). An internal name, the name of a JSON file or the style options style: # [string='#208b47'] Color for the board without copper (covered by solder mask) board: '#208b47' # [string='#cabb3e'] Color for the PCB core (not covered by solder mask) clad: '#cabb3e' # [string='#285e3a'] Color for the copper zones (covered by solder mask) copper: '#285e3a' # [boolean=false] Highlight over the component (not under) highlight_on_top: false # [number=1.5] [0,1000] How much the highlight extends around the component [mm] highlight_padding: 1.5 # [string='stroke:none;fill:#ff0000;opacity:0.5;'] SVG code for the highlight style highlight_style: 'stroke:none;fill:#ff0000;opacity:0.5;' # [string='#000000'] Color for the outline outline: '#000000' # [string='#8b898c'] Color for the exposed pads (metal finish) pads: '#8b898c' # [string='#d5dce4'] Color for the silk screen silk: '#d5dce4' # [string='#bf2600'] Color for the V-CUTS vcut: '#bf2600' # [number=4] [3,6] Scale factor used to represent 1 mm in the SVG (KiCad 6). # The value is how much zeros has the multiplier (1 mm = 10 power `svg_precision` units). # Note that for an A4 paper Firefox 91 and Chrome 105 can't handle more than 5 svg_precision: 4 # [string=''] Board variant to apply variant: '' # [boolean=false] Render V-CUTS on the `vcuts_layer` layer vcuts: false # [string='Cmts.User'] Layer to render the V-CUTS, only used when `vcuts` is enabled. # Note that any other content from this layer will be included vcuts_layer: 'Cmts.User' # [string='visible'] [visible,all,none] Using visible only the warnings about components in the visible side are generated warnings: 'visible' # PDF (Portable Document Format): # Note that this output isn't the best for documating your project. # This output is what you get from the File/Plot menu in pcbnew. # The `pcb_print` is usually a better alternative. - name: 'pdf_example' comment: 'Exports the PCB to the most common exchange format. Suitable for printing.' type: 'pdf' dir: 'Example/pdf_dir' options: # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [number=0.1] [0.02,2] For objects without width [mm] (KiCad 5) line_width: 0.1 # [boolean=false] Plot mirrored mirror_plot: false # [boolean=false] Invert black and white negative_plot: false # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [string=''] Board variant to apply variant: '' layers: all # PDF PCB Print (Portable Document Format): # This is the main format to document your PCB. # This output is what you get from the 'File/Print' menu in pcbnew. # The `pcb_print` is usually a better alternative. - name: 'pdf_pcb_print_example' comment: 'Exports the PCB to the most common exchange format. Suitable for printing.' type: 'pdf_pcb_print' dir: 'Example/pdf_pcb_print_dir' options: # [string='_builtin_classic'] Selects the color theme. Onlyu applies to KiCad 6. # To use the KiCad 6 default colors select `_builtin_default`. # Usually user colors are stored as `user`, but you can give it another name color_theme: '_builtin_classic' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [boolean=true] Only useful for KiCad 6 when printing in one page, you can disable the edge here. # KiCad 5 forces it by default, and you can't control it from config files. # Same for KiCad 6 when printing to separated pages force_edge_cuts: true # [boolean=false] Hide components in the Fab layer that are marked as excluded by a variant. # Affected by global options hide_excluded: false # [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%I%v.%x'] Filename for the output PDF (%i=layers, %x=pdf). Affected by global options output: '%f-%i%I%v.%x' # `output_name` is an alias for `output` # [boolean=true] Include the title-block plot_sheet_reference: true # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=1.0] Scale factor (0 means autoscaling). You should disable `plot_sheet_reference` when using it scaling: 1.0 # [boolean=false] Print layers in separated pages separated: false # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' layers: all # PDF Schematic Print (Portable Document Format): # This is the main format to document your schematic. # This output is what you get from the 'File/Print' menu in eeschema. - name: 'pdf_sch_print_example' comment: 'Exports the PCB to the most common exchange format. Suitable for printing.' type: 'pdf_sch_print' dir: 'Example/pdf_sch_print_dir' options: # [boolean=true] Generate with all hierarchical sheets all_pages: true # [string|list(string)='_none'] 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: '_none' # [boolean=true] Include the frame and title block frame: true # [boolean=false] Generate a monochromatic PDF monochrome: false # [string='%f-%i%I%v.%x'] Filename for the output PDF (%i=schematic, %x=pdf). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Board variant to apply. # Not fitted components are crossed variant: '' # PDF joiner: # This is just a PDF joiner, using `pdfunite` from Poppler Utils. - name: 'pdfunite_example' comment: 'Generates a new PDF from other outputs.' type: 'pdfunite' dir: 'Example/pdfunite_dir' options: # [string='%f-%i%I%v.%x'] Name for the generated PDF (%i=name of the output %x=pdf). Affected by global options output: '%f-%i%I%v.%x' # [list(dict)] Which files will be included outputs: # [string='.*\.pdf'] A regular expression that source files must match - filter: '.*\.pdf' # [boolean=false] Use the current working directory instead of the dir specified by `-d` from_cwd: false # [string=''] Collect files from the selected output. # When used the `source` option is ignored from_output: '' # [string='*.pdf'] File names to add, wildcards allowed. Use ** for recursive match. # By default this pattern is applied to the output dir specified with `-d` command line option. # See the `from_cwd` option source: '*.pdf' # [boolean=false] Use the `pdfunite` tool instead of PyPDF2 Python module use_external_command: false # Populate - Assembly instructions builder: # Each step shows the already soldered components and the ones to add highlighted. # This is equivalent to the PcbDraw's Populate command, but integrated to KiBot. # For more information about the input markdown file please consult the # [documentation](docs/populate.md) - name: 'populate_example' comment: 'Creates a markdown and/or HTML file explaining how to assembly a PCB.' type: 'populate' dir: 'Example/populate_dir' options: # [string|list(string)='_none'] 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: '_none' # [string='html'] [html,md] Format for the generated output format: 'html' # [string='img/populating_%d.%x'] Pattern used for the image names. The `%d` is replaced by the image number. # The `%x` is replaced by the extension. Note that the format is selected by the # `renderer` imgname: 'img/populating_%d.%x' # [string|list(string)=''] List of components soldered before the first step initial_components: '' # [string=''] Name of the input file describing the assembly. Must be a markdown file. # Note that the YAML section of the file will be skipped, all the needed information # comes from this output and the `renderer` output input: '' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Name of the output used to render the PCB steps. # Currently this must be a `pcbdraw` or `render_3d` output renderer: '' # [string] The name of the handlebars template used for the HTML output. # The extension must be `.handlebars`, it will be added when missing. # The `simple.handlebars` template is a built-in template template: 'simple' # [string=''] Board variant to apply variant: '' # Pick & place: # This output is what you get from the 'File/Fabrication output/Footprint position (.pos) file' menu in pcbnew. - name: 'position_example' comment: 'Generates the file with position information for the PCB components, used by the pick and place machine.' type: 'position' dir: 'Example/position_dir' options: # [boolean=false] Use negative X coordinates for footprints on bottom layer bottom_negative_x: false # [list(dict)|list(string)] Which columns are included in the output columns: # [string=''] [Ref,Val,Package,PosX,PosY,Rot,Side] Internal name - id: 'Ref' # [string=''] Name to use in the output file. The id is used when empty name: 'Reference' # [string|list(string)='_none'] 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: '_none' # [string='ASCII'] [ASCII,CSV] Format for the position file format: 'ASCII' # [boolean=false] Include virtual components. For special purposes, not pick & place include_virtual: false # [boolean=true] Only include the surface mount components only_smd: true # [string='%f-%i%I%v.%x'] Output file name (%i='top_pos'|'bottom_pos'|'both_pos', %x='pos'|'csv'). # Important: when using separate files you must use `%i` to differentiate them. Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=4] number of digits for mantissa part of coordinates (0 is auto) right_digits: 4 # [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,mils] Units used for the positions. Affected by global options units: 'millimeters' # [boolean=true] Use the auxiliary axis as origin for coordinates (KiCad default) use_aux_axis_as_origin: true # [string=''] Board variant to apply variant: '' # PS (Postscript): # This output is what you get from the File/Plot menu in pcbnew. # The `pcb_print` is usually a better alternative. - name: 'ps_example' comment: 'Exports the PCB to a format suitable for printing.' type: 'ps' dir: 'Example/ps_dir' options: # [boolean=true] Force A4 paper size a4_output: true # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [number=0.15] [0.02,2] For objects without width [mm] (KiCad 5) line_width: 0.15 # [boolean=false] Plot mirrored mirror_plot: false # [boolean=false] Invert black and white negative_plot: false # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=1.0] Fine grain adjust for the X scale (floating point multiplier) scale_adjust_x: 1.0 # [number=1.0] Fine grain adjust for the Y scale (floating point multiplier) scale_adjust_y: 1.0 # [number=1] Scale factor (0 means autoscaling) scaling: 1 # [boolean=false] Don't fill objects, just draw the outline sketch_plot: false # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [string=''] Board variant to apply variant: '' # [number=0] This width factor is intended to compensate PS printers/plotters that do not strictly obey line width settings. # Only used to plot pads and tracks width_adjust: 0 layers: all # QR_Lib: # This output creates a library containing a symbol and footprint for a QR code. # To refresh the generated symbols and footprints use the `update_qr` preflight. # The workflow is as follows: # - Create the symbol and footprints using this output. # - Use them in your schematic and PCB. # - To keep them updated add the `update_qr` preflight - name: 'qr_lib_example' comment: 'Generates a QR code symbol and footprint.' type: 'qr_lib' dir: 'Example/qr_lib_dir' options: # [string='QR'] Short name for the library lib: 'QR' # [string='%f-%i%I%v.%x'] Filename for the output (%i=qr, %x=lib). Affected by global options output: '%f-%i%I%v.%x' # [list(dict)] QR codes to include in the library qrs: # [string='low'] [low,medium,quartile,high] Error correction level - correction_level: 'low' # [string='silk'] [silk,copper] Layer for the footprint layer: 'silk' # [string='QR'] Name for the symbol/footprint name: 'QR' # [boolean=false] Generate a negative image for the PCB pcb_negative: false # [number=15] Size of the QR footprint size_pcb: 15 # [number=15] Size of the QR symbol size_sch: 15 # [string='millimeters'] [millimeters,inches] Units used for the size size_units: 'millimeters' # [string='%p %r'] Text to encode as QR text: '%p %r' # [string='QR'] The reference prefix reference: 'QR' # [boolean=true] Generate the libs relative to the schematic/PCB dir use_sch_dir: true # 3D render of the PCB: - name: 'render_3d_example' comment: "Exports the image generated by KiCad's 3D viewer." type: 'render_3d' dir: 'Example/render_3d_dir' options: # [boolean=false] When enabled the image will be post-processed to remove the empty space around the image. # In this mode the `background2` is changed to be the same as `background1` auto_crop: false # [string='#66667F'] First color for the background gradient background1: '#66667F' # [string='#CCCCE5'] Second color for the background gradient background2: '#CCCCE5' # [string='#332B16'] Color for the board without copper or solder mask board: '#332B16' # [boolean=true] Clip silkscreen at via annuli (KiCad 6) clip_silk_on_via_annulus: true # [string='#8b898c'] Color for the copper copper: '#8b898c' # [string|list(string)='_none'] 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: '_none' # [boolean=true] Downloads missing 3D models from KiCad git. Only applies to models in KISYS3DMOD download: true # [number=720] Image height (aprox.) height: 720 # [list(string)=[]] List of components to highlight highlight: [] # [boolean=false] Highlight over the component (not under) highlight_on_top: false # [number=1.5] [0,1000] How much the highlight extends around the component [mm] highlight_padding: 1.5 # [string='https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/'] Base URL for the KiCad 3D models kicad_3d_url: 'https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/' # [number=0] Steps to move in the X axis, positive is to the right. # Just like pressing the right arrow in the 3D viewer move_x: 0 # [number=0] Steps to move in the Y axis, positive is up. # Just like pressing the up arrow in the 3D viewer move_y: 0 # [boolean=false] Used to exclude 3D models for surface mount components no_smd: false # [boolean=false] Used to exclude 3D models for through hole components no_tht: false # [boolean=false] Used to exclude 3D models for components with 'virtual' attribute no_virtual: false # [boolean=false] Enable the orthographic projection mode (top view looks flat) orthographic: false # [string='%f-%i%I%v.%x'] Name for the generated image file (%i='3D_$VIEW' %x='png'). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=false] Enable the ray tracing. Much better result, but slow, and you'll need to adjust `wait_rt` ray_tracing: false # [number=0] Steps to rotate around the X axis, positive is clockwise. # Each step is currently 10 degrees. Only for KiCad 6 rotate_x: 0 # [number=0] Steps to rotate around the Y axis, positive is clockwise. # Each step is currently 10 degrees. Only for KiCad 6 rotate_y: 0 # [number=0] Steps to rotate around the Z axis, positive is clockwise. # Each step is currently 10 degrees. Only for KiCad 6 rotate_z: 0 # [list(string)|string=all] [none,all] List of components to draw, can be also a string for `none` or `all`. # Unlike the `pcbdraw` output, the default is `all` show_components: all # [boolean=true] Show the silkscreen layers (KiCad 6) show_silkscreen: true # [boolean=true] Show the solder mask layers (KiCad 6) show_soldermask: true # [boolean=true] Show the solder paste layers (KiCad 6) show_solderpaste: true # [boolean=true] Show filled areas in zones (KiCad 6) show_zones: true # [string='#d5dce4'] Color for the silk screen silk: '#d5dce4' # [string='#208b47'] Color for the solder mask solder_mask: '#208b47' # [string='#808080'] Color for the solder paste solder_paste: '#808080' # [boolean=true] Clip silkscreen at solder mask edges (KiCad 6) subtract_mask_from_silk: true # [boolean=false] When enabled the image will be post-processed to make the background transparent. # In this mode the `background1` and `background2` colors are ignored transparent_background: false # [string='#00ff00'] Color used for the chroma key. Adjust it if some regions of the board becomes transparent transparent_background_color: '#00ff00' # [number=15] [0,100] Chroma key tolerance (percent). Bigger values will remove more pixels transparent_background_fuzz: 15 # [string=''] Board variant to apply variant: '' # [string='top'] [top,bottom,front,rear,right,left,z,Z,y,Y,x,X] Point of view view: 'top' # `wait_ray_tracing` is an alias for `wait_render` # [number=-600] How many seconds we must wait before capturing the render (ray tracing or normal). # Lamentably KiCad can save an unfinished image. Enlarge it if your image looks partially rendered. # Use negative values to enable the auto-detect using CPU load. # In this case the value is interpreted as a time-out. wait_render: -600 # [number=1280] Image width (aprox.) width: 1280 # [number=0] Zoom steps. Use positive to enlarge, get closer, and negative to reduce. # Same result as using the mouse wheel in the 3D viewer zoom: 0 # Design report: # Mainly oriented to be sent to the manufacturer or check PCB details. - name: 'report_example' comment: 'Generates a report about the design.' type: 'report' dir: 'Example/report_dir' options: # [string='markdown'] Original format for the report conversion. Current templates are `markdown`. See `do_convert` convert_from: 'markdown' # [string='pdf'] Target format for the report conversion. See `do_convert` convert_to: 'pdf' # [string='%f-%i%I%v.%x'] Converted output file name (%i='report', %x=`convert_to`). # Note that the extension should match the `convert_to` value. Affected by global options converted_output: '%f-%i%I%v.%x' # [boolean=false] Run `Pandoc` to convert the report. Note that Pandoc must be installed. # The conversion is done assuming the report is in `convert_from` format. # The output file will be in `convert_to` format. # The available formats depends on the `Pandoc` installation. # In CI/CD environments: the `kicad_auto_test` docker image contains it. # In Debian/Ubuntu environments: install `pandoc`, `texlive`, `texlive-latex-base` and `texlive-latex-recommended` do_convert: false # [string='10F'] Which Eurocircuits class are we aiming at eurocircuits_class_target: '10F' # [number=0.45] When computing the Eurocircuits category: Final holes sizes smaller or equal to this given # diameter can be reduced to accommodate the correct annular ring values. # Use 0 to disable it eurocircuits_reduce_holes: 0.45 # [string='%f-%i%I%v.%x'] Output file name (%i='report', %x='txt'). Affected by global options output: '%f-%i%I%v.%x' # [string='full'] Name for one of the internal templates (full, full_svg, simple) or a custom template file. # Environment variables and ~ are allowed. # Note: when converting to PDF PanDoc can fail on some Unicode values (use `simple_ASCII`) template: 'full' # Schematic with variant generator: # This copy isn't intended for development. # Is just a tweaked version of the original where you can look at the results. - name: 'sch_variant_example' comment: 'Creates a copy of the schematic with all the filters and variants applied.' type: 'sch_variant' dir: 'Example/sch_variant_dir' options: # [boolean=false] Copy the KiCad project to the destination directory. # Disabled by default for compatibility with older versions copy_project: false # [string|list(string)='_none'] 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: '_none' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' # STEP (ISO 10303-21 Clear Text Encoding of the Exchange Structure): # This is the most common 3D format for exchange purposes. # This output is what you get from the 'File/Export/STEP' menu in pcbnew. - name: 'step_example' comment: 'Exports the PCB as a 3D model.' type: 'step' dir: 'Example/step_dir' options: # [string|list(string)='_none'] 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: '_none' # [boolean=true] Downloads missing 3D models from KiCad git. Only applies to models in KISYS3DMOD download: true # [string='https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/'] Base URL for the KiCad 3D models kicad_3d_url: 'https://gitlab.com/kicad/libraries/kicad-packages3D/-/raw/master/' # [boolean=true] Use metric units instead of inches metric_units: true # [number=-1] The minimum distance between points to treat them as separate ones (-1 is KiCad default: 0.01 mm) min_distance: -1 # [boolean=false] Used to exclude 3D models for components with 'virtual' attribute no_virtual: false # [string='grid'] Determines the coordinates origin. Using grid the coordinates are the same as you have in the design sheet. # The drill option uses the auxiliary reference defined by the user. # You can define any other origin using the format 'X,Y', i.e. '3.2,-10' origin: 'grid' # [string='%f-%i%I%v.%x'] Name for the generated STEP file (%i='3D' %x='step'). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [boolean=true] Substitute STEP or IGS models with the same name in place of VRML models subst_models: true # [string=''] Board variant to apply variant: '' # SVG (Scalable Vector Graphics): # Unlike bitmaps SVG drawings can be scaled without losing resolution. # This output is what you get from the File/Plot menu in pcbnew. # The `pcb_print` is usually a better alternative. - name: 'svg_example' comment: 'Exports the PCB to a format suitable for 2D graphics software.' type: 'svg' dir: 'Example/svg_dir' options: # [list(dict)] A list of customized reports for the manufacturer custom_reports: # [string=''] Content for the report. Use ${basename} for the project name without extension. # Use ${filename(LAYER)} for the file corresponding to LAYER - content: '' # [string='Custom_report.txt'] File name for the custom report output: 'Custom_report.txt' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [string=''] Used to configure the edge cuts layer extension for Protel mode. Include the dot edge_cut_extension: '' # [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 (KiCad 5.x only) 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=''] Used to change the Protel style extensions for inner layers. # The replacement pattern can contain %n for the inner layer number and %N for the layer number. # Example '.g%n' inner_extension_pattern: '' # [number=0.25] [0.02,2] For objects without width [mm] (KiCad 5) line_width: 0.25 # [boolean=false] Plot mirrored mirror_plot: false # [boolean=false] Invert black and white negative_plot: false # [string='%f-%i%I%v.%x'] Output file name, the default KiCad name if empty. # IMPORTANT! KiCad will always create the file using its own name and then we can rename it. # For this reason you must avoid generating two variants at the same directory when one of # them uses the default KiCad name. Affected by global options output: '%f-%i%I%v.%x' # [boolean=true] Include the footprint references plot_footprint_refs: true # [boolean=true] Include the footprint values plot_footprint_values: true # [boolean=false] Include the frame and title block. Only available for KiCad 6 and you get a poor result # (i.e. always the default worksheet style, also problems expanding text variables). # The `pcb_print` output can do a better job for PDF, SVG, PS, EPS and PNG outputs plot_sheet_reference: false # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=4] [0,6] Scale factor used to represent 1 mm in the SVG (KiCad 6). # The value is how much zeros has the multiplier (1 mm = 10 power `svg_precision` units). # Note that for an A4 paper Firefox 91 and Chrome 105 can't handle more than 5 svg_precision: 4 # [boolean=true] Cover the vias tent_vias: true # [boolean=false] Use uppercase names for the extensions uppercase_extensions: false # [string=''] Board variant to apply variant: '' layers: all # SVG PCB Print (Scalable Vector Graphics): # This output is what you get from the 'File/Print' menu in pcbnew. # The `pcb_print` is usually a better alternative. - name: 'svg_pcb_print_example' comment: 'Exports the PCB to the scalable vector graphics format.' type: 'svg_pcb_print' dir: 'Example/svg_pcb_print_dir' options: # [string='_builtin_classic'] Selects the color theme. Onlyu applies to KiCad 6. # To use the KiCad 6 default colors select `_builtin_default`. # Usually user colors are stored as `user`, but you can give it another name color_theme: '_builtin_classic' # [string|list(string)='_none'] 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: '_none' # [string='full'] [none,small,full] What to use to indicate the drill places, can be none, small or full (for real scale) drill_marks: 'full' # [boolean=true] Enable workaround for KiCad 5 bug enable_ki5_page_fix: true # [boolean=true] Enable workaround for KiCad 6 bug #11033 enable_ki6_page_fix: true # [boolean=true] Only useful for KiCad 6 when printing in one page, you can disable the edge here. # KiCad 5 forces it by default, and you can't control it from config files. # Same for KiCad 6 when printing to separated pages force_edge_cuts: true # [boolean=false] Hide components in the Fab layer that are marked as excluded by a variant. # Affected by global options hide_excluded: false # [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%I%v.%x'] Filename for the output SVG (%i=layers, %x=svg). Affected by global options output: '%f-%i%I%v.%x' # `output_name` is an alias for `output` # [boolean=true] Include the title-block plot_sheet_reference: true # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [number=1.0] Scale factor (0 means autoscaling). You should disable `plot_sheet_reference` when using it scaling: 1.0 # [boolean=false] Print layers in separated pages separated: false # [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. # If it starts with `+` the text is concatenated title: '' # [string=''] Board variant to apply variant: '' layers: all # SVG Schematic Print: # This is a format to document your schematic. - name: 'svg_sch_print_example' comment: 'Exports the PCB. Suitable for printing.' type: 'svg_sch_print' dir: 'Example/svg_sch_print_dir' options: # [boolean=true] Generate with all hierarchical sheets all_pages: true # [string|list(string)='_none'] 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: '_none' # [boolean=true] Include the frame and title block frame: true # [boolean=false] Generate a monochromatic PDF monochrome: false # [string='%f-%i%I%v.%x'] Filename for the output SVG (%i=schematic, %x=svg). Affected by global options output: '%f-%i%I%v.%x' # [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # A short-cut to use for simple cases where a variant is an overkill pre_transform: '_none' # [string=''] Board variant to apply. # Not fitted components are crossed variant: ''