Import footprint into footprint - possible? [daughterboard workflow]

Is there some way to import one footprint into another footprint? I’m laying out a board which accepts daughter boards, similar to an Arduino shield. So I’m trying to create a footprint which contains pads for three multi-pin header connectors with specific placements relative to each other. There seems to be no cut and paste in the footprint designer program.

In footprint editor you can load a footprint from existing library or can import from a file.

if the 3 multi pin header are same, please try as follows:

1- load the multipin hader into the footprint editor

2- hold shift key + make a whole block select of the multi pin header + drag it and place somewhere

3- block select the copied item and move as needed (M) or move exactly (Ctrl+M).

If you put different headers into a single footprint the symbol for that multi-footprint in your schematic needs to become a single entity which causes problems:

  • only one entry in BOM for ordering different parts (you need to modify the BOM manually, very error prone)
  • only one position for all parts (no automatic production possible)

There are 2 ways of doing this somewhat sane and professional…

  1. footprint for your daughter boards mechanical interface (outline marker + header positions + mounting holes + etc…)

  2. project template (schematic + layout, an empty project to start with)

Personally I use the outline+position footprint for such cases as it has some pro’s that the KiCAD standard way misses.
An example for a RPi daughterboard interface (header misses center mark though, mea culpa):


PCB_RPi-2B_noConn.kicad_mod (14.9 KB)

  • I can load that DB interface into any layout, new or pre-existing.
  • I can modify the outline of the daughterboard without loosing the original outline, as it’s on a different layer.
  • I can’t screw up the mounting hole and relative connector positions as they’re fixed in the footprint (and always there to check).

Any connectors need to come via the schematic/netlist import and just need to be placed on top of the position markings, but each get their own entry in the BOM and position information for fabrication.
So yeah, little more work as you have to do the outline yourself, but more freedom at the same time with less risk to screw things up without noticing.

For a template example, just use the KiCAD main window and load one that’s available:


(The folder you select will be the ones where the content of the template is copied into and be used as your project folder).

Problem with this approach…

  • you need to start with that particular ‘empty’ project and can’t work from something that already exist (adapting something you did before for a daughterboard for xyz)
  • the mounting holes can become misaligned, as they’re potentially editable entities in the layout (even if locked)
  • as soon as you change the pre-existing outline you loose it forever in that particular layout (usually no marking layer to fall back on)
1 Like

I want to do something similar but since I am new to KiCad I find it hard to follow the solution by Joan_Sparky.
I would like to create one footprint for the FONA3G by Adafruit, which needs essentially the following:

  • the holes for the female pin header1x18
  • 2 mounting holes
  • the outline of the board

Basically I could insert the holes manually, but there exist already footprints for mounting holes and pin header holes, that I would like to import into my new footprint. So far I have only found the possibility to load a single existing footprint, change it to my liking and save it under a new name. But I would rather want to load several footprints (header and mounting holes) not only one.

Of course it would be very nice if later in the bom, I would have the female pin header and the mounting screws as parts.
@Joan_Sparky: It seems you have found a solution, that you called outline+position footprint. Could you explain that a little more?

I would start by loading an 18 pin header footprint and then create the mounting holes and the outline.
Not that hard…
I actually only had a 12 pin header to go from, so I copied the needed 6 last pins, corrected their pin number, then added the outline of the pcb according to the datasheet on page 51, then added the two mounting holes at 0.1" from the edges there with a hole diameter of 0.1", moved the outline to cmts.user layer and we’re done.

Adafruit_FONA3G.kicad_mod (3.8 KB)

All you now need is a 18 pin symbol with the correct IDs on it for the module to use in the schematic and you got it. The manufacturer name and ID should then be the header or receptacle of the 18 pin variant, to get the BOM correct for this part.

The spacers/screws can’t be part of this. You have to add them either on the schematic as extra parts without footprint (not common I think) or do a mechanical BOM outside of KiCAD. Sorry.

2 Likes

I had hoped there was some other way.
Thanks for the file.

The other way is to create a template project, just that you don’t have a single footprint where those other footprints are part of, but a schematic and layout file where those components are placed and locked.
This has the pro of you just being able to take other footprints and being able to rearrange things and the con of it not being safe and not being able to ‘work into’ an existing project (complete schematic/layout) that just needs the ‘interface’.

1 Like

How do you add the footprint to your project? Im thinking to create a schematic symbol, no pins, just with the footprint assigned; then dump the part symbol on the schematic. Or is there some other way?

If I just want to put some outline/placement/mechanical hole footprint without electrical connections that has no relevance for the BOM I add the footprint directly in PCBnew.
Be careful with netlist reads then, as this one will be able to be deleted if you chose to ‘delete extra footprints’ upon import.

If on the other hand I need electrical connectivity and the particular module footprint contains pins and thus has relevance to the BOM I do this (nightly version from May, so looks pretty neat):

So if you create a symbol and link the footprint to that and get it into the layout via netlist, you don’t have to worry about ‘delete extra footprints’.

1 Like

Ah. sometimes the solution is so simple I miss it. Thank you very much for the detailed response and the tip to add footprints whilst in PCBnew instead of at schematic creation. Somehow I missed this functionality in my learning process. There are many times I just want to see some footprints on the same page to help with part selection and such, including the type of ‘layout’ drawings mentioned in this post. Prior to this post, I was following the schema-annotate-netlist-pcbnew workflow just to get the components on the layout page.