Packages with multiple connectors

I’m putting this under “Manufacturing” but also “Layout/Footprints” might be a sensible group.

I am thinking about the “best” way to design boards that use plug-in modules like this:


From the point of view of the schematic and layout, this is treated as a single component.
But from the point of view of the BOM, it’s two completely separate connectors. An assembler will not know or care that they happen to be for the same part.

How should this be handled? AFAIK there’s no way of specifying this within KiCAD, so I’m thinking that I manually post-process the BOM and pick-and-place file to correctly specify the connectors after generation.

What do people think? Is there a better way?

I would place two connector footprints, then group them together so they are harder to accidentally move relative to each other. You can make custom symbols for each “side” of the module so that you get reasonable pin names rather than just using generic 2xN connector symbols.

There is no automatic way to handle this situation in KiCad (and I haven’t found one before in other EDA tools either) but maybe we can think about how this workflow could be more automated in KiCad in the future.

1 Like

@craftyjon is a good suggestion. I would usually handle these cases little different, similar to mounting hardware added at assembly time:

  1. Create a schematic symbol, footprint and matching 3D CAD with the headers installed for the module.
  2. The Part Number would be the FT2232H Mini Module part number.
  3. Add the part to the schematic, and associated footprint to the layout. (The 3D view should look correct)
  4. Create (or use existing) part symbol for the header
  5. Add the two header symbols to the schematic only with the header MPN and an assembly note. The header symbols will not have a footprint associated.
  6. For clarity, you may want to add an assembly note to any assembly documentation you create
  7. Export the BOM from Eeschema, it will be correct with the module and headers listed. The Pcbnew footprint and 3D view will also be correct.

I also add standoffs, heatsinks, etc. this way in order to make sure the BOM is correct for assembly and the layout + 3D represents real life.

This approach also works, but the only downside it has is that the pick-and-place info won’t be correct. You need two different placements in the PNP file for the two headers. If the board will be assembled manually or these are PTH headers, this probably isn’t a big deal.

I’m hoping that some future version of KiCad will have the ability to work with sub-assemblies and “Design Blocks”. One of the possibilities is to couple a schematic sheet to a schematic symbol, instead to only a hierarchical sheet symbol. With this method you can put the connectors and the module itself on a separate sheet, while in the main sheet you just see a normal schematic symbol.

This is true, it would need to be evaluated case-by-case as to what makes sense. In this case (and for mounting hardware, heatsink, etc.), the module pictured was PTH and would generally not be placed by a pick-n-place.

I while back, I had an Intel Edison Module with a SMT connector on the PCB for the module. In that case, I added the SMT connector to the schematic and layout, so the PNP data was correct. Then, I added schematic symbol calling out the module for the BOM, but excluded from the board. Finally the footprint 3D cad model for the SMT connector include the entire module so the board 3D was correct.

…and I just realized this is basically what @craftyjon is suggesting and would work here also. :+1:

Just realised I never replied to this thread. Thanks all for your input.

I also asked the same question on twitter and got some interesting responses:

I ended up going for this solution:

That is:

  • A single schematic component for the module itself, which defines the electrical interface.
  • Two symbols for the PCB headers that are BOM-only. No footprint, no electrical connections.
  • A single, custom footprint that has both connectors and is associated with the single component.
  • If necessary, instructions for assemblers that J6 and J7 are to be mounted in the locations for U1 (since J6 and J7 will not be referenced anywhere on the PCB layout).

This part is the reason this approach is not great for automated assembly. It is better to use an approach that will result in two placement locations in the board (e.g. J6 and J7) with appropriate centroids, if you will be doing volume production or want to reduce confusion with the assembler. Of course if you’re assembling these by hand it doesn’t matter.

100% agree with @craftyjon on this one. I used to work at an assembly shop and the PnP program will require these to be two separate placements. Combining this into a single reference designator will mean extra processing at the assembly house and increase the surface area for mistakes.

BTW, similar post: Creating symbols for plug-in modules with multiple BOM parts

True, the next step would be to post-process the centroid data to match the BOM. Either manually, or it wouldn’t be hard to write a little script to find the U1 line, parse it for the XY location and replace it with the correct lines for J6 and J7.

But for this particular board, yeah I’ll be assembling it by hand.

@cdwilson I like that approach described in that post, but I’d constantly worry about misaligning the footprints in the PCB editor and missing the error. An erroneous PnP file seems less of an issue than a PCB that’s actually wrong at the layout level.

This should probably work if you’re submitting gerbers to the manufacturer. The shop I worked at accepted KiCad PCB files directly, and in that case own tools would be used to generate the gerbers, XYRS, etc (and wouldn’t be using your post-processing script). Something to keep in mind if you plan on sending the .kicad_pcb directly to a shop for assembly in the future.

BTW, your solution for BOM-only J6 & J7 symbols won’t have this issue, but worth mentioning for other folks: one of the mistakes I saw people make over and over was to get the quantity wrong on the BOM in cases like this. If you have a single refdes in the schematic for a footprint with multiple headers, the BOM will only contain quantity 1 required headers when you export the BOM from the schematic. We had a lot of jobs go on hold because the customer provided a BOM with only half the quantity of headers required to assemble the board…

Yeah, that’s why I added my own alignment markings in the footprints, but you’re right–since it’s not a single symbol in the library, it’s possible to mess it up by accident on each new board design.