BOM for Kicad 6?

I’ve been designing with v6, and the software is great, but for some reason I’m having a heck of time making a usable BOM.

I’d like to group by value and footprint, and display the usual fields (ref, quantity, etc, and especially PART #). Export to csv.

I’ve tried every single one. The ones that claim to group don’t. Others don’t include the Part # (how is a BOM useful without it)?

Sorry for the ranting, I’m just really confused by this. It seems such an essential feature and just doesn’t work.

1 Like

I think you can use KiBOM instead, it’s a very great plugin, you can customize the generated BOM with an ini file, I use it in the production and everything is going on well.

BOM and CPL formats are assembler specific and usually there’s a converter from KiCad’s native XML format to the desired CSV format using a Python program or XSLT stylesheet. There are already a couple of sample converters in the distribution. So there are many ways to get the conversion you need.

I did an experiment to understand the manual process for one assembler which I wrote up here: https://hackaday.io/page/11900 Actually I was more interested in the pricing structure.

Hope you find a method that suits you.

2 Likes

I’ve found BOM formats to be pretty universal among assembly companies.

Simple spreadsheet with columns for Refs, qty, footprint, description (maybe), and Part #. This is not a lot to ask, but none of the plugins worked properly.

EXCEPT: The interactive HTML bom creator added to pcbnew worked beautifully. It even respected the DNS field. Copy from the html, paste to excel, and it’s ready to quote to dozens of suppliers. Exactly what I and everyone needs! Props to the developer!

Didn’t work properly as in not giving you the output you want? I was able to run both of them but the format wasn’t suitable for my assembler. Probably because they are user contributed or intended as a starting point. Your assembler may provide a suitable converter or if you ask around somebody might have a suitable converter. That’s the price for software that didn’t cost you anything but download quota.

There are actually a few more in the distribution that are not registered by default.

$ ls -1 /usr/share/kicad/plugins/bom*
/usr/share/kicad/plugins/bom2csv.xsl
/usr/share/kicad/plugins/bom2grouped_csv.xsl
/usr/share/kicad/plugins/bom_csv_grouped_by_value.py
/usr/share/kicad/plugins/bom_csv_grouped_by_value_with_fp.py
/usr/share/kicad/plugins/bom_csv_sorted_by_ref.py
/usr/share/kicad/plugins/bom_html_grouped_by_value.py
/usr/share/kicad/plugins/bom_html_with_advanced_grouping.py
/usr/share/kicad/plugins/bom_txt_sorted_by_ref.py
/usr/share/kicad/plugins/bom_with_title_block_2_csv.xsl

Anyway you’ve had success with KiBOM (if that’s the one you mean), so it was only a matter of asking around. That’s how you get stuff in the open software world.

I tried every one of those. Either they didn’t bother to include a Part # field (!?!?) or didn’t group properly as described.

For such a fundamental tool I expected something built-in to work well, I think the interactive one should be part of the distro!

1 Like

my BOM tool can group components

specific custom fields can be positioned at specific locations, specific custom fields can be excluded, all other custom fields can be positioned at another place or excluded

the most recent version also tries to parse the values of passive components and then can sort them that way

there’s more but you can read about it here: Anton Savov / pimpmykicadbom · GitLab

unfortunately, you have to build it and that should be sorta easy on linux
i also have to mention that it will probably not work in the future (kicad v7) because it relies on the “bom.xml” file which AFAIK is going to be removed

Part of the reason for that is you have to add a custom field to the symbol, it’s not a standard field. For example I added a LCSC field as required by the JLCPCB converter and it worked fine. I think BOM handling may be a WiP and tie in with proposed database tie-ins in some future version. In the meantime either use a configurable script like KiBOM or be prepared to do a little script hacking.

KiKit has a BOM generation feature too, but I haven’t been able to try it; I’ll need to wait for my distro’s Python version to catch up.

The other quirk is that the BOM is generated from eeschema while the CPL is from pcbnew. That’s because pcbnew doesn’t receive the additional fields needed. Perhaps now that update board from schematic is the standard path a future version may specify a standard field as a part ID field.

This was not our experience. A long time ago KiCad used to have BOM tools built in, but everyone wanted them to do something different. So we pulled them out of the codebase so folks could write their own.

The python and XSLT scripts we ship with are examples. They’re supposed to get you started, not be the be-all, end-all BOM tools.

1 Like

OK, I was not really aware that the scripts were templates, and that it was expected that we would modify them ourselves to suit our needs. The 3-4 vendors we use tend to want similar formats (basically just a spreadsheet with manufacturer’s part #s).

I think the interactive one has some very key features, such as allowing us to select which fields to include for spreadsheet columns (part #) and respecting a DNP field of our choice. With that, it should be easily applied to many vendors.

My opinion is that BOM generation should be prioritized for user friendliness and features. Editing python scripts should not be expected from CAD designers, and even if you master it it seems “half integrated” to have scripts floating around on your computer which the designer must take responsibility for not loosing and keeping track of which version for which project etc.
BOM generation and management is such an essential task related to PCB design that it should have the look and feel of a properly integrated part of the software package.

When it comes to manufacturer specific BOMs I think the only ones who I have encountered requiring a BOM in their exact format is Seeed Studio using their Fusion PCBA service. This is to match with their open source library. It surely must be much faster for manufacturers to quickly edit BOMs from customers than to require customer to re-spin their BOM format until it fits?

An interactive BOM generator must not be very complicated to take us most of the way to expected functionality:

  • Let you choose which fields to include
  • Let’s you choose whether to group or not
  • Let’s you choose output format, Excel and CSV should cover 95% of users
  • Choose whether to include DNM column or to simply remove refs with DNM property.
  • BONUS: Let’s you configure the order of where fields appear
  • BONUS 2: Let’s you configure some of the header rows in regards to title, dates, file name etc.

The BOM generation must be based on schematic file, where all important component properties/fields relies, not based on PCB file.

@jr22 If you’re interested I have made some bug reports on BOM generation lately

5 Likes

I wholeheartedly agree with HSPalm. Some flexibility must be given to free, open source software, of course, but it can also be pointed out that the existing BOM tools are surprisingly weak and not very useful to most users. Telling users to “fix the code if you don’t like it” is not really that helpful for people who just want to do their jobs.

I think this is an excellent proposal for the feature set. The interactive BOM software I referenced does do pretty much all of this. It’s called from the PCB side, not the schematic side, but that doesn’t seem to matter much in practice. The information is all there.

Integrating this, or something comparable, would be immensely helpful to users. Why not include it, or a branch, as default? Or at least tell people “hey this is probably the BOM plugin you need!” Until I tried it on a whim, I had no expectation that it would solve pretty much all of my BOM issues.

1 Like

Please see Usable BOM generator (#9992) · Issues · KiCad / KiCad Source Code / kicad · GitLab.

well ibom doesn’t cover my BOM needs, for example

look, all this talking is great, but there are aparently no volunteer devs to go in and implement a built-in BOM generator, and there is probably a reason for that

this is why IMO the current situation is fine - Eeschema generates an .xml file containing plenty of information, and then invokes an external tool which can process that .xml file and do some wonders with it

there are plenty of BOM tools available
none of them did what i wanted… so i wrote my own

what are the chances that a built-in BOM generator does the things i need? not big

if you can’t or don’t want to code, you can at least write a more detailed idea/specification for what a built-in BOM generator should look like and how it should work, then people can read it and give their feedback (i would definately inform you if it’s gonna satisfy my BOM needs, i promise), and then you’ll see what i mean

if your idea happens to be excelent and gets all positive comments, then that could serve as a guide/plan/inspiration/motivation for a volunteer dev to go in and implement it

1 Like

I’m curious what your needs are that ibom doesn’t handle.

I think the features listed above by HSPalm would be excellent and would easily cover 90% of the users. Or just have ibom, which does pretty much all of this, be integrated, or as a highly promoted “you ought to install this too” package, like FreeCAD is.

People (like me) who wanted a working BOM with columns and groupings of my choice, will easily overlook the interactive bom, because the interactivity is not what I was looking for. The side feature did everything I need to make a working BOM for a variety of suppliers.

did you even click the link to see the features?

  • generate single BOMs and final (merged) BOMs
  • generate “package” out of the footprint ← very important
  • configurable column order
  • configurable grouping
  • configurable sorting

I applaud your hard work, but no, I didn’t click on the link; once I read that “you have to build it and that should be sorta easy on linux” I knew it would not be a viable solution for me and didn’t read further. But sure, if it’s easily packaged and works well maybe it should be included with kicad of ibom. Or in addition to.

The “package” name is a good idea, but I don’t think many vendors care about this. The 3-4 vendors I work with all have no problem with the kicad footprint name. I’m not sure why it would be considered very important, but maybe your vendors are different than mine.

about the “package” name … you wouldn’t wonder why it may be important if you read the link… but you won’t
so have a nice day

OK, I read it. It doesn’t apply to my designs at all, but it does seem useful, ok? I would happily try it but installing linux and compiling it is too much work.

1 Like

I really like how KiCad does BOMs in Python. Python is easy to read and tweak. You can store the Python BOM script right in your project directory if you’re worried about losing it. You can also do advanced things when needed – in the below example, I intelligently figure out the name of the BOM based on existing “*.yml” file in the directory which contains the part number.