EDA Tools

Electronics Design Automation (EDA) Build 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

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.