diff --git a/Makefile b/Makefile index 2c04cfa..2c97f77 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,8 @@ SUBSHEET ?= rsim_serial rsim_power rsim_sim rsim_esp32s2 rsim_esp32s3 KICAD = kicad-cli # path to qeda QEDA := qeda +# path to KiBOM +KIBOM := ./KiBOM_CLI.py # path to InteractiveHtmlBom IBOMGEN := ~/.local/share/kicad/7.0/3rdparty/plugins/org_openscopeproject_InteractiveHtmlBom/generate_interactive_bom.py @@ -70,7 +72,7 @@ lib: # export Bill of Material (as CSV) %.bom.csv: %.bom.xml - kibom $< $@ + python $(KIBOM) $< $@ # generate panel PANEL_DIR := panel diff --git a/bom.ini b/bom.ini index 837be7f..f25d7a3 100644 --- a/bom.ini +++ b/bom.ini @@ -1,10 +1,37 @@ [BOM_OPTIONS] -ignore_dnf = 0 -number_rows = 0 +; General BoM options here +; If 'ignore_dnf' option is set to 1, rows that are not to be fitted on the PCB will not be written to the BoM file +ignore_dnf = 1 +; If 'html_generate_dnf' option is set to 1, also generate a list of components not fitted on the PCB (HTML only) +html_generate_dnf = 1 +; If 'use_alt' option is set to 1, grouped references will be printed in the alternate compressed style eg: R1-R7,R18 +use_alt = 0 +; If 'alt_wrap' option is set to and integer N, the references field will wrap after N entries are printed +alt_wrap = 0 +; If 'number_rows' option is set to 1, each row in the BoM will be prepended with an incrementing row number +number_rows = 1 +; If 'group_connectors' option is set to 1, connectors with the same footprints will be grouped together, independent of the name of the connector group_connectors = 1 -test_regex = 0 +; If 'test_regex' option is set to 1, each component group will be tested against a number of regular-expressions (specified, per column, below). If any matches are found, the row is ignored in the output file +test_regex = 1 +; If 'merge_blank_fields' option is set to 1, component groups with blank fields will be merged into the most compatible group, where possible merge_blank_fields = 1 +; Specify output file name format, %O is the defined output name, %v is the version, %V is the variant name which will be ammended according to 'variant_file_name_format'. output_file_name = %O%V +; Specify the variant file name format, this is a unique field as the variant is not always used/specified. When it is unused you will want to strip all of this. +variant_file_name_format = _(%V) +; Field name used to determine if a particular part is to be fitted +fit_field = Config +; Make a backup of the bom before generating the new one, using the following template +make_backup = %O.tmp +; Default number of boards to produce if none given on CLI with -n +number_boards = 1 +; Default PCB variant if none given on CLI with -r +board_variant = ['default'] +; Whether to hide headers from output file +hide_headers = False +; Whether to hide PCB info from output file +hide_pcb_info = False [IGNORE_COLUMNS] ; Any column heading that appears here will be excluded from the Generated BoM @@ -15,6 +42,9 @@ Footprint Footprint Lib Build Quantity sheetpath +qeda_part +qeda_variant +name [COLUMN_ORDER] ; Columns will apear in the order they are listed here @@ -28,15 +58,48 @@ Part Lib Footprint Footprint Lib Build Quantity +DigiKey LCSC +JLCPCB +JLCPCB_CORRECTION Datasheet [GROUP_FIELDS] ; 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 -Part -Part Lib Value Footprint Footprint Lib + +[COMPONENT_ALIASES] +; A series of values which are considered to be equivalent for the part name +; Each line represents a list of equivalent component name values separated by white space +; e.g. 'c c_small cap' will ensure the equivalent capacitor symbols can be grouped together +; Aliases are case-insensitive +c c_small cap capacitor +r r_small res resistor +sw switch +l l_small inductor +zener zenersmall +d diode d_small + +[REGEX_INCLUDE] +; A series of regular expressions used to include parts in the BoM +; If there are any regex defined here, only components that match against ANY of them will be included in the BOM +; Column names are case-insensitive +; Format is: "[ColumName] [Regex]" (white-space separated) + +[REGEX_EXCLUDE] +; A series of regular expressions used to exclude parts from the BoM +; If a component matches ANY of these, it will be excluded from the BoM +; Column names are case-insensitive +; Format is: "[ColumName] [Regex]" (white-space separated) +References ^TP[0-9]* +References ^FID +Part mount.*hole +Part solder.*bridge +Part test.*point +Footprint test.*point +Footprint mount.*hole +Footprint fiducial