KiCad automation utility
Go to file
Oliver 7321fc1e06 Added example config file picture 2016-05-15 17:26:08 +10:00
KiBOM Improved CSV output 2016-05-15 16:33:16 +10:00
example Added example config file picture 2016-05-15 17:26:08 +10:00
.gitignore Initial commit - column sorter is working OK 2016-04-12 23:03:45 +10:00
KiBOM_CLI.py Removed dead code from KiBoM_CLI 2016-05-15 15:51:29 +10:00
KiBOM_GUI.py CSV export is working 2016-05-12 00:06:58 +10:00
README.md Added example config file picture 2016-05-15 17:26:08 +10:00
__init__.py Added base files. UI is displaying OK. A good start. 2016-04-12 23:10:05 +10:00

README.md

KiBoM

Configurable BoM generation tool for KiCad EDA (http://kicad-pcb.org/)

Description

KiBoM is a configurable BOM (Bill of Materials) generation tool for KiCad EDA. Written in Python, it can be used directly with KiCad software without the need for any external libraries or plugins.

KiBoM intelligently groups components based on multiple factors, and can generate BoM files in multiple output formats.

BoM options are user-configurable in a per-project configuration file.

Features

Intelligent Component Grouping

To be useful for ordering components, the BoM output from a KiCad project should be organized into sensible component groups. KiBom groups components based on the following factors:

  • Part name: (e.g. 'R' for resistors, 'C' for capacitors, or longer part names such as 'MAX232')

note: parts such as {'R','r_small'} can also be grouped together

  • Footprint: Compoments must have the same footprint to be grouped together

  • Value: Components must have the same value to be grouped together

Intelligent Value Matching

Some component values can be expressed in multiple ways (e.g. "0.1uF" === "100n" for a capacitor). KiBoM matches value strings based on their interpreted numerical value, such that components are grouped together even if their values are expressed differenly.

Field Extraction

In addition to the default KiCad fields which are assigned to each component, KiBoM extracts and custom fields added to the various components.

Default Fields The following default fields are extracted and can be added to the output BoM file:

  • Description - Part description as per the schematic symbol
  • References - List of part references included in a particular group
  • Quantity - Number of components included in a particular group
  • Part - Part name as per the schematic symbol
  • Part Lib - Part library for the symbol (default - not output to BoM file)
  • Footprint - Part footprint
  • Footprint Lib - Part footprint library (default - not output to BoM file)
  • Datasheet - Component datasheet extracted either from user-included data, or from part library

User Fields If any components have custom fields added, these are available to the output BoM file.

Multiple File Outputs

Multiple BoM output formats are supported:

  • CSV (Comma separated values)
  • TSV (Tab separated values)
  • TXT (Text file output with tab separated values)
  • XML
  • HTML

Output file format selection is set by the output filename. e.g. "bom.html" will be written to a HTML file, "bom.csv" will be written to a CSV file.

Configuration File

BoM generation options can be configured (on a per-project basis) by editing the .bom file in the PCB project directory. This file is generated the first time that the KiBoM script is run, and allows configuration of the following options.

  • Number Rows: Add row numbers to the BoM output
  • Ignore DNF: Component groups marked as 'DNF' (do not fit) will be excluded from the BoM output
  • Ignore Columns: A list of columns can be marked as 'ignore', and will not be output to the BoM file. By default, the Part_Lib and Footprint_Lib columns are ignored.

Example configuration file (.ini format) alt tag

Example - HTML Output

A simple schematic is shown below. Here a number of resistors, capacitors, and one IC have been added to demonstrate the BoM output capability. Some of the components have custom fields added ('Vendor', 'Rating', 'Notes')

alt tag

Here, a number of logical groups can be seen:

R1 R2 Resistors R1 and R2 have the same value (470 Ohm) even though the value is expressed differently. Resistors R1 and R2 have the same footprint

R3 R4 Resistors R3 and R4 have the same value and the same footprint

R5 While R5 has the same value as R3 and R4, it is in a different footprint and thus cannot be placed in the same group.

C1 C2 C1 and C2 have the same value and footprint

C3 C4 C3 and C4 have the same value and footprint

C5 C5 has a different footprint to C3 and C4, and thus is grouped separately

A HTML BoM file is generated as follows:

alt tag

To add the BoM script, the Command Line options should be configured as follows:

  • path-to-python-script (KiBOM_CLI.py)
  • netlist-file "%I"
  • output_path "%O_bom.html" (replace file extension for different output file formats)

Hit the "Generate" button, and the output window should show that the BoM generation was successful.

The output HTML file is generated as follows:

alt tag

Here the components are correctly grouped, with links to datasheets where appropriate, and fields color-coded.