Multiple footprints for single component

I am trying to create a single prototype PCB which can be populated with different package types for the same component.

For example, it uses the MCP3208 chip which comes in a SOIC-16 or a DIP-16 package.

These correspond to the standard KiCad footprints:

  • Housings_DIP:DIP-16_W7.62mm
  • Housings_SOIC:SOIC-16_3.9x9.9mm_Pitch1.27mm

Basically, I want to be free to choose the SMT or THT package to populate the board with and not force a specific package.

What would be the best way to achieve this is in KiCad?

I started creating my own footprint that has pins for both the SOIC and DIP packages and has copper attaching the pins as necessary, but thought there might be another way to achieve this using the standard footprints but couldn’t find it through a search.

Be careful here. Not all such components use the same pin ordering in different footprints.

Your approach might be the only way to do this in kicad. I would not suggest to connect the different pads with graphical lines on copper. (DRC does not support such things)

To be honest it might be a lot easier for you to decide early on what package you will use and stick to it. A bit more work up front (checking availability) but routing the pcb will be a lot easier. (And getting good emi results is also easier if you know what component you will use.)

Would it be possible to put two symbols on schematic, connect the pins and add both footprints to pcb connecting them with tracks?


I did this once, but ripped one footprint out of the layout later on (thus can’t show that part), but here is the schematic side.
As you can see, it’s just local net’s that do this, with RTC1,2,6 being just there to make this possible.

It’s also possible to add a footprint directly to a pcb, but it leads to DRC errors with IMO is worse than ERC errors in schematics.

If you want a “clean” solution and are willing to do some customized footprint work it should be possible to create one easily. This is tested with a recent daily build and OpenGL canvas:

In the footprint editor open the first footprint. Select and copy (Copy in the context menu) the pads. Open the other footprint rejecting the first one. Use Paste to add the pads of the first footprint on top of the second one. Try to be careful with the placement so that you don’t have to move anything afterwards, it may be more diffcult later - you would have to select the pads of one footprint one by one before moving them if the footprints overlap. Save with new name. Associate this new footprint in schematics. In Pcbnew add tracks between the footprint’s pads which have the same number. And voila, no extra symbol, no non-assigned footprint, no ERC errors, no DRC errors.

1 Like