Compare commits
5 Commits
207168f11d
...
6a1362002e
Author | SHA1 | Date |
---|---|---|
King Kévin | 6a1362002e | |
King Kévin | 59183db61c | |
King Kévin | 437683a0fa | |
King Kévin | 4982a98b28 | |
King Kévin | 53ecb46e4f |
|
@ -6,11 +6,22 @@ requirements
|
||||||
to be able to generate the outputs, you need following software:
|
to be able to generate the outputs, you need following software:
|
||||||
|
|
||||||
- [QEDA](http://qeda.org/): to generate footprints for the parts
|
- [QEDA](http://qeda.org/): to generate footprints for the parts
|
||||||
- [KiCad](https://www.kicad.org/): EDA software used for schematic capture and board layout
|
- [KiCad v7](https://www.kicad.org/): EDA software used for schematic capture and board layout
|
||||||
- [PcbDraw](https://github.com/yaqwsx/PcbDraw): to generate board layout rendering
|
- [PcbDraw](https://github.com/yaqwsx/PcbDraw): to generate board layout rendering
|
||||||
- [KiKit](https://github.com/yaqwsx/KiKit): to generate fabrications files (Gerber, Excellon)
|
- [KiKit](https://github.com/yaqwsx/KiKit): to generate fabrications files (Gerber, Excellon)
|
||||||
- [KiAuto](https://github.com/INTI-CMNB/KiAuto): to generate schematic printout (PDF)
|
|
||||||
- [KiBoM](https://github.com/SchrodingersGat/KiBoM): to generate Bill of Material (CSV)
|
- [KiBoM](https://github.com/SchrodingersGat/KiBoM): to generate Bill of Material (CSV)
|
||||||
|
- [Interactive HTML BOM](https://github.com/openscopeproject/InteractiveHtmlBom): to generate placement guide
|
||||||
|
|
||||||
|
install Interactive HTML BOM using KiCad's Plugin and Content Manager.
|
||||||
|
|
||||||
|
for the others:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
npm install qeda
|
||||||
|
pip install pcbdraw kibom kikit
|
||||||
|
~~~
|
||||||
|
|
||||||
|
you can additionally install KiKit using KiCad's Plugin and Content Manager for an integrated GUI.
|
||||||
|
|
||||||
compiling
|
compiling
|
||||||
=========
|
=========
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
@package
|
||||||
|
KiBOM - Bill of Materials generation for KiCad
|
||||||
|
|
||||||
|
Generate BOM in xml, csv, txt, tsv, html or xlsx formats.
|
||||||
|
|
||||||
|
- Components are automatically grouped into BoM rows (grouping is configurable)
|
||||||
|
- Component groups count number of components and list component designators
|
||||||
|
- Rows are automatically sorted by component reference(s)
|
||||||
|
- Supports board variants
|
||||||
|
|
||||||
|
Extended options are available in the "bom.ini" config file in the PCB directory
|
||||||
|
(this file is auto-generated with default options the first time the script is executed).
|
||||||
|
|
||||||
|
For usage help:
|
||||||
|
python KiBOM_CLI.py -h
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
sys.path.insert(0, here)
|
||||||
|
|
||||||
|
from kibom.__main__ import main # noqa: E402
|
||||||
|
|
||||||
|
main()
|
24
Makefile
24
Makefile
|
@ -5,8 +5,10 @@ SUBSHEET ?= rsim_serial rsim_power rsim_sim rsim_esp32s2 rsim_esp32s3
|
||||||
KICAD = kicad-cli
|
KICAD = kicad-cli
|
||||||
# path to qeda
|
# path to qeda
|
||||||
QEDA := qeda
|
QEDA := qeda
|
||||||
|
# path to KiBOM
|
||||||
|
KIBOM := ./KiBOM_CLI.py
|
||||||
# path to InteractiveHtmlBom
|
# path to InteractiveHtmlBom
|
||||||
IBOMGEN := /usr/share/kicad/scripting/plugins/InteractiveHtmlBom/generate_interactive_bom.py
|
IBOMGEN := ~/.local/share/kicad/7.0/3rdparty/plugins/org_openscopeproject_InteractiveHtmlBom/generate_interactive_bom.py
|
||||||
|
|
||||||
# read project version
|
# read project version
|
||||||
VERSION := $(shell cat version)
|
VERSION := $(shell cat version)
|
||||||
|
@ -36,17 +38,19 @@ all: $(VERSIONED_SHEET) ${NAME}.sch.pdf ${NAME}.brd-top.png ${NAME}.brd-bot.png
|
||||||
fab: ${FABRICATION_DIR} ${IBOM}
|
fab: ${FABRICATION_DIR} ${IBOM}
|
||||||
|
|
||||||
# generate fabrication files (gerbers/drill/BoM/PnP)
|
# generate fabrication files (gerbers/drill/BoM/PnP)
|
||||||
#${FABRICATION_DIR}: ${NAME}.versioned.kicad_sch ${NAME}.versioned.kicad_pcb
|
${FABRICATION_DIR}: ${NAME}.versioned.kicad_sch ${NAME}.versioned.kicad_pcb
|
||||||
# kikit fab jlcpcb --drc --assembly --schematic $^ $@
|
kikit fab jlcpcb --drc --assembly --schematic $^ $@
|
||||||
${FABRICATION_DIR}: ${NAME}.versioned.kicad_pcb
|
|
||||||
mkdir -p ${FABRICATION_DIR}
|
# generate fabrication files (gerbers/drill/uncorrected PnP)
|
||||||
$(KICAD) pcb export gerbers --output ${FABRICATION_DIR} $<
|
#${FABRICATION_DIR}: ${NAME}.versioned.kicad_pcb
|
||||||
$(KICAD) pcb export drill --output ${FABRICATION_DIR}/ $<
|
# mkdir -p ${FABRICATION_DIR}
|
||||||
$(KICAD) pcb export pos --output ${FABRICATION_DIR}/${NAME}.versioned.pos $<
|
# $(KICAD) pcb export gerbers --output ${FABRICATION_DIR} $<
|
||||||
|
# $(KICAD) pcb export drill --output ${FABRICATION_DIR}/ $<
|
||||||
|
# $(KICAD) pcb export pos --output ${FABRICATION_DIR}/${NAME}.versioned.pos $<
|
||||||
|
|
||||||
# generate interactive BoM
|
# generate interactive BoM
|
||||||
${IBOM}: ${NAME}.versioned.kicad_pcb
|
${IBOM}: ${NAME}.versioned.kicad_pcb
|
||||||
$(IBOMGEN) --no-browser --dest-dir `dirname $@` --name-format `basename $@ ".html"` --show-fields "Value" $< &>/dev/null
|
python $(IBOMGEN) --no-browser --dest-dir `dirname $@` --name-format `basename $@ ".html"` --show-fields "Value" $< &>/dev/null
|
||||||
|
|
||||||
# generate symbols and footprints from parts
|
# generate symbols and footprints from parts
|
||||||
lib:
|
lib:
|
||||||
|
@ -70,7 +74,7 @@ lib:
|
||||||
|
|
||||||
# export Bill of Material (as CSV)
|
# export Bill of Material (as CSV)
|
||||||
%.bom.csv: %.bom.xml
|
%.bom.csv: %.bom.xml
|
||||||
kibom $< $@
|
python $(KIBOM) $< $@
|
||||||
|
|
||||||
# generate panel
|
# generate panel
|
||||||
PANEL_DIR := panel
|
PANEL_DIR := panel
|
||||||
|
|
73
bom.ini
73
bom.ini
|
@ -1,10 +1,37 @@
|
||||||
[BOM_OPTIONS]
|
[BOM_OPTIONS]
|
||||||
ignore_dnf = 0
|
; General BoM options here
|
||||||
number_rows = 0
|
; 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
|
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
|
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
|
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]
|
[IGNORE_COLUMNS]
|
||||||
; Any column heading that appears here will be excluded from the Generated BoM
|
; Any column heading that appears here will be excluded from the Generated BoM
|
||||||
|
@ -15,6 +42,9 @@ Footprint
|
||||||
Footprint Lib
|
Footprint Lib
|
||||||
Build Quantity
|
Build Quantity
|
||||||
sheetpath
|
sheetpath
|
||||||
|
qeda_part
|
||||||
|
qeda_variant
|
||||||
|
name
|
||||||
|
|
||||||
[COLUMN_ORDER]
|
[COLUMN_ORDER]
|
||||||
; Columns will apear in the order they are listed here
|
; Columns will apear in the order they are listed here
|
||||||
|
@ -28,15 +58,48 @@ Part Lib
|
||||||
Footprint
|
Footprint
|
||||||
Footprint Lib
|
Footprint Lib
|
||||||
Build Quantity
|
Build Quantity
|
||||||
|
DigiKey
|
||||||
LCSC
|
LCSC
|
||||||
|
JLCPCB
|
||||||
|
JLCPCB_CORRECTION
|
||||||
Datasheet
|
Datasheet
|
||||||
|
|
||||||
[GROUP_FIELDS]
|
[GROUP_FIELDS]
|
||||||
; List of fields used for sorting individual components into groups
|
; List of fields used for sorting individual components into groups
|
||||||
; Components which match (comparing *all* fields) will be grouped together
|
; Components which match (comparing *all* fields) will be grouped together
|
||||||
; Field names are case-insensitive
|
; Field names are case-insensitive
|
||||||
Part
|
|
||||||
Part Lib
|
|
||||||
Value
|
Value
|
||||||
Footprint
|
Footprint
|
||||||
Footprint Lib
|
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
|
||||||
|
|
Loading…
Reference in New Issue