Support two different packages of an MCU on the same board

I am designing a board with a PIC12F1572 microcontroller. I want my board to support both the DIP-8 and SOIC-8 packages, with only one package being populated at assembly time. So, it seems like I need two footprints for one symbol, which doesn’t appear supported. Is there a common good KiCad practice for what I’m trying to accomplish? I considered just placing two symbols on the schematic, but that seems misleading for a casual reader since it suggests both packages are used in the circuit.

Just place the two devices on the schematic, with an obvious text note “SOIC - only fit one device!” and “DIP - only fit one device!”. Remember to allocate different PCB footprints to each!

I had a similar issue, with wanting to have an option for 2 different DC to DC converters… just put both on the schematic.

Note that when you do an ERC check, you’ll get a few extra errors… you can get around that by creating a new schematic symbol, based on the original, just set its pins to be all passive (other possibilities may exist)
image
image

Placing two symbols in the schematic is an option, but it looks confusing, and it is also messy. You may get into trouble with for example ERC.

I just cobbled together an example project to test an idea and it seems to work.

I did:

  1. Create a dummy schematic.
  2. Create the PCB. (With a DIP footprint)
  3. Export all footprints to a new library. (Accept it when KiCad wants to link to those new footprints).
  4. Push these footprint links back to the schematic.
  5. Open the footprint editor.
  6. Browse to a SOIC, load it in the editor, select it all and copy it.
  7. Go get the DIP footprint from the library you just exported.
  8. Paste the SOIC into it. Make sure pads don’t overlap etc.
  9. Save & Exit Footprint editor.
  10. In the PCB editor, update the footprint already on the PCB with your modified version.
  11. Do the routing. (I only did a few tracks).

This works because KiCad assumes that pads with the same pad number and in the same footprint always have to be connected to each other. So you don’t have to connect them in the footprint editor, but only on the PCB. I routed a few tracks to see it works and I did not see problems. I did not clean it up (overlapping silkscreen and such) but the rest is mostly details. You will have to make sure the symbol still works with the footprint if the footprints have different pin mappings. And of course it also messes up the placement files (SMD or THT, footprint rotation, etc).

And the whole zipped up project is 1/4 of the size of the screenshot:

2024-09-15_dip_soic.zip (26.5 KB)

You do need to think about the poor EMC consequences of doing this. Long traces to power decoupling and maybe clock tracks will make noise worse.

That PIC is an 8 pin chip, and I suspect the SOIC might fit within the outline of the DIP, so probably not much of a worry as far as EMC goes… plus I believe it is typically used with an internal clock … but you are 100% right to remind us!

I needed to do a similar thing with a PIC32 100 pin QFP. Microchip in their wisdom make these chips in 0.5mm pitch (PF) and 0.4mm pitch (PT) versions. To allow for out-of-stock issues I wanted my PCB to handle both. Also allows more near-part-number flexibility.

Ended up doing the entire layout with the larger chip, renaming it so the file fell inside the project but was no longer ‘linked’ to the schematic, then ripping up the “larger” tracks and routing the “smaller”. The schematic is exactly the same (in fact if I placed the ‘smaller’ chip with the same designator it would work even though the footprint was “wrong” - asked me when I did the SCH<=>PCB sync to change it, but just ignore that…)

Bit of a kludge, but the only way I could see to do it.