EDA Tools
Efficient design depends just as much on project management as on technical tools. Below is a curated list of tools I use and some I maintain for managing electronics design projects.
The majority of the functions eventually make there way into my KiCad Makefile (kicad-make).
There are similar systems, including ones with many more features such as KiBot. I steered away from these methods once kicad-cli was introduced as they are fairly heavy weight in comparison.
Build & Release Automation
KiCad Make
This is the makefile that I use for internal KiCad projects. KiCad 7 introduced kicad-cli, which made automating builds much easier. That led me to open-source my internal Makefile system which I update it as new tools become available.
Interactive BOM & Board Exploration
Interactive BOM
- Upstream Git Repo
- Forked Git Repo: Fork with packaging modifications.
Interactive BOM example of the Scopefun v2
Usage
generate_interactive_bom {FILENAME}.kicad_pcb \
--dnp-field DNP --group-fields "Value,Footprint" --blacklist "X1,MH*" \
--include-nets --normalize-field-case --no-browser --dest-dir ./ \
--name-format "{FILENAME}"
Running Headless Source: Tips and tricks.
The command in KiCad Make adds the screen size argument so this can be generated outside of a GUI environment.
xvfb-run --auto-servernum --server-args "-screen 0 1024x768x24" generate_interactive_bom {FILENAME}.kicad_pcb \
--dnp-field DNP --group-fields "Value,Footprint" --blacklist "X1,MH*" \
--include-nets --normalize-field-case --no-browser --dest-dir ./ \
--name-format "{FILENAME}"
Testpoint Reports
KiCad Testpoints
Easily generate production-grade test point reports from your KiCAD PCB files — no scripting or extra tools required.
Selects pads on the board as test points using either the fabrication properties or a spreadsheet.
Usage
kicad_testpoints by-fab-setting --pcb "$<" --out "$@"
This will use the fabrication setting to generate the testpoint report.
Gerber PDFs
Board2PDF
I relied on Board2PDF to make gerber PDFs until KiCad V9 improved the PDF interface.
board2pdf "$<" --output "$@" --ini ${GERBERPDF_INI}
Where GERBERPDF_INI
is the configuration for the output.
KiCad Make Gerber PDFs
Since KiCad v9 I instead use the command line for the same kind of document:
kicad-cli pcb export pdf ${PCB} --black-and-white --cl "Edge.Cuts" -l ${PDF_GERBER_LAYERS_CSV} -o ${GERBER_PDF_DIR} \
--drawing-sheet ${PCB_DRAWING_SHEET} \
--mode-separate --include-border-title --sketch-pads-on-fab-layers
# Filter out the layers that don't exist
@existing_files=$$(for f in $(PDF_GERBER_FILES); do \
[ -e "$$f" ] && printf "%s " "$$f"; done);\
if [ -n "$$existing_files" ]; then \
pdfunite $$existing_files "$@"; \
else \
echo "No PDFS to merge"; \
touch "$@"; \
fi
This has the benefit of removing a dependency from the makefile and makes drawing sheets easier to handle.
PDF_GERBER_FILES
is defined in the makefile as all the layer names. PDF_GERBER_LAYERS_CSV
is all of
those files with comma delimiters.
Panelizing
KiKit
KiKit offers a wide range of features, many of which I haven’t used. The main focus started as being able to combine two board designs in a single .kicad_pcb file and split them later for manufacturing.
I used to use the DRC/ERC features until those were added to the cli in v8. Now I use it for the panelization which works great.
I’ve had some packaging issues with KiKit so I have forks that I try to keep up to date with the upstream. If you have issues with the KiKit install try those.