Creating symbols for plug-in modules with multiple BOM parts

I wanted to share a hack I’ve been using for associating multiple BOM line items with a single “symbol” in the schematic. This method has been discussed previously (Making multiple BOM items for one schematic component), but what’s unique about this approach is that it uses multiple symbols to create the illusion of a single symbol in the schematic (apologies if this has been posted before, I did not see it)

Eample scenario:
The Adafruit Feather plug-in modules require two separate mating headers on the “Wing” PCB that they plug into.

Problem: when generating a BOM for manufacturing, the following components need to be purchased and assembled onto the board:

  1. The plug-in feather module itself
  2. 16pos header
  3. 12pos header

If you create a single symbol for the Feather that has all 28 pins, there is not a straightforward way to attach 3 separate BOM items to that symbol. Templates are another possible way to work around this problem, but they don’t work well for designs that use combinations of different plug-in modules.

Solution: instead, the idea is to create separate schematic symbols and footprints for each of the three items above. These symbols are designed to be overlaid together in the schematic. In addition, you can even create a separate symbol for the mounting holes (which may be optional on a Wing). Separately, these symbols look like this:

However, if you overlay the header symbols on the feather module symbol, you end up with the illusion of a single schematic symbol, but multiple BOM parts:


If you export the BOM for this, you get separate BOM line items for A1, J1, and J2, each with their own manufacturer and part number.

However, if you create separate symbols for each of these parts, you end up with separate footprints on the PCB. To ease the placement of these separate symbols on the PCB, I create each of the footprints with an anchor marking on the Dwgs.User layer.

Here’s what the footprints look like when they are initially imported into the PCB:

Placing the parts is simply a matter of aligning the anchor markings on each of the footprints:

For each possible plug-in module that fits into the socket, I create a separate schematic symbol and pcb footprint. I usually create a “empty” placeholder symbol for the plug-in module that does not include any MPN in the BOM. This will leave the socket empty by default.

Changing only the plug-in module symbol automatically updates the BOM and the 3D rendering with the correct MPN and model respectively. Here’s an example of installing a Particle Argon module into the socket:


I believe this problem will be addressed properly in upcoming V6 release, but this is the best stopgap solution I’ve found for V5. Curious to know if there are other ways to solve this problem besides templates or what’s described above.


Nice solution! Thank you for sharing this.

I use other approach but it’s software dependent: I use KiCost with the Parts With Subparts strategy, it’s create in some way that allow multiple quantity of one sub part or partial one (useful in case of cables).

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.