Daughter board socket issue

Hello Gurus,
I have a SBC (Single Board Computer - Similar to RPi/BBB) in my design that sits on two standard sockets. I need to keep this as a single component. What options do I have to link this (U8) to two 2x12 sockets? Right now in BOM, it shows as one component. Any ideas?

Cheers!

Edit: Sockets are 2x12.

It depends at least partly on how it will assembled, who will handle the files etc.

One good option is to keep them as two separate symbols and footprints. You can have a third footprint for the module outline graphics which has some graphical guides for placing the sockets. Then you can place the outline footprint to the board, move the two socket footprints according to the guides and possibly group them together to avoid moving separately.

This way the sockets will appear as two BOM items (i.e. two identical parts) and can also be handled as separate parts in position file if needed.

This has the downside that you can’t represent the one real component (the daughter board module) as one symbol. You have to use two symbols, representing the two pin rows.

2 Likes

This confuses me:

So what is it you want?

If you want to keep it a single footprint, then just put the pads in a custom designed footprint.

If you want it to be two separate 2x20 pin connectors in the BOM, then you also have to split the schematic symbol into two separate symbols. KiCad can handle a multi part schematic symbols (for example 2 opamps and power connections) to map to a single footprint, but not the other way around.

1 Like

I implemented this the same way. Advantage: It is easy so replace the sockets to other ones in the BOM and even other footprints (maybe SMD/THT) without changing the SBC ymbol and “footprint”. You can set of the component to not be present in the BOM if you need it.

2 Likes

Thank you all for great ideas.

So it seems like the general best practice is to split the symbol into two separate symbols which makes sense.

My issue right now is with the assembly house. The sockets are THT but they still want two sockets reflected in the BOM.

Since they just want the BOM quantity to reflect 2 sockets, Is there a quick and dirty way to do handle this for now?

It’s a bit of a hack, but one solution is to design the footprint around a single 2x20 pin connector, but also with the pads for the other 2x20 pins. Then manually add the second 2x20 pin connector to the PCB and lock it into place.

One extra thing to be aware of. When you Schematic Editor / Tools / Update PCB from Schematic there is an option to Delete footprints with no symbols

You have two options here. You can turn off this checkbox (I’m not sure if keeps the footprint otherwise, even if it is locked). The other option is to put an extra footprint to the schematic.

Either of these choices will generate DRC violations on the PCB. It’s not difficult to handle them, but you have to be aware of it.

1 Like

Thank you @paulvdh ! It worked. Really appreciate the suggestion.

Footprints have an on/off property “not in schematic” which should prevent deleting them. Locking the footprint should prevent deleting, too.

I don’t understand this. Why add another connector footprint if all pads are in the first one already? Does the one symbol have all pins?

@eelik The symbol has all the pins and the footprint is good and no issues there. The problem I’m having is with assembly and BOM. Since there is only one symbol/footprint for the daughter board (U8), I can only assign a single part number (Qty=1) but I psychically need two connectors/sockets (one of the left-side, one of the right-side, Qty=2). The assembly house wants the BOM to match.

I understand that, but I didn’t understand Paul’s solution.

I proposed two symbols and two footprints (plus one extra copperless footprint and maybe a corresponding extra symbol which isn’t added to BOM) exactly because it’s unambiguous for the BOM and the assembly. It’s even possible to add that extra symbol to BOM if you want you daughter board there. So, IMO this is the most versatile solution. The only downside is that you don’t represents the daughter board as one symbol with all the pins.

I understand you don’t understand. It was a product of my overly contorted brain- waves / wrinkles.

To remove the confusion: The Idea was:

  1. Have all pins defined in the Schematic symbol.
  2. Have a Footprint with all the pins defined (So it appears in the BOM) in the normal way. Footprint and symbol match, so all wires / tracks match and can be routed.
  3. Have a second footprint on the PCB. This second footprint has no pads at all. It only has an (X, Y) location and a 3D model for the 2nd connector. This footprint is then added to the BOM and placement files, and you won’t inadvertently omit it.

Note that this is untested, but I assume it can be made to work without too many DRC issues.

OK. In this case it may need a symbol because the BOM can be created from the schematic, especially in the future when v8 is released which has easier BOM creation.

@paulvdh @eelik Thank you both again. Appreciate the feedback.

1 Like

I understand this solution for the BOM but not for the assembly because the coordinates of the footprints may no be on their real place.

We place the anchor in the middle of the footprint and place a single footprint with all the pins, so everytime we move the footprint we keep the relative positions of the connectors.
Then we edit the BOM and place a 2 instead of a one.
In the placement files we duplicate the line, keep the Y coordinate (in this case) and edit the X coordinates: X-halfthedistance and X+halfthedistance since we know the distance between both components.

It is always a workaround but simpler than it seems.

Editing the BOM manually is typical, but editing the position file sounds hacky. Representing the actual installed parts individually, as two symbols/footprints, and optionally adding extra symbol/footprint for the daughter board, avoids all manual editing except positioning the two footprints correctly. And as I said, the extra third footprint can have positioning guides. Grouping the footprints is handy for keeping them together after positioning.

I don’t say this is always better, but IMO it’s the best compromise for all use cases if you want to learn to use only one but have different kinds of design needs. It’s also the most safe solution if for example there’s a team where communication isn’t perfect and one person can forget to do something critical afterwards like adding the BOM item or position file coordinates manually. Having three symbols/footprints is explicit and self-documenting which isn’t a small advantage.

I would build as a single component in my library to ensure registration, and put a note on the BOM for the fabricator.

I had similar issue with Raspberry Pi Compute Module 4 connectors. I solved it by having a one footprint that contains both connectors (and some graphics on the silkscreen so it is clear how to orient the CM4 module) and then I’ve added a step into my automation pipeline that transforms the BOM and most importantly position files.
For example for the position file it takes the one placed footprint and replaces it with two connectors that are rotated and spaced accordingly.

1 Like

What a co-incidence… CM4 is what we used my workflow for. 2+1 symbols, 2+1 footprints. No need for added manual or automated steps.

Extra pad alignment graphics 99 and 100 and the graphic lines aligning with the connector Fab outlines belong to the module footprint, together with the mounting holes and silkscreen outline.

It seems quite interesting. But if I understand that right, it does mean that you need to have 2 separate symbols in your schematic? I mean, it is probably no big issue as CM4 does not mix the functions across the connectors…

I would argue that adding that 2 partial footprints and matching them to the 1 complete footprint could be considered an added manual step. For example, if you want to move the CM4 on your board, you need to move all of them.
For me it was an easy decision as I already have my automation in place and I use it for processing BOM (filtering items and adding additional info from InvenTree) and position files (“fixing” the rotations for JLCPCB).

For initial positioning, yes, it must be done manually. But grouping them together is very easy and after that they move together. Even initial positioning is something which can’t be forgotten accidentally and is self-evident for everyone who knows what kind of part it is, so it doesn’t need extra reminders or communication or post-processing.

Anyway, there are several ways to handle the situation in KiCad and this solution isn’t necessarily the best for everyone. I would like to see a native solution for this in KiCad which would take care of everything: one symbol, one footprint, several BOM items, several position file lines, all without extra steps to remember after creating the library items once.