Components with multiple footprints

Description

There is a class of components people like to put on a board that consist of multiple items that get soldered down. But they are effectively the same component. Two of of the most common examples are:

  • SoM Modules that get placed on a base-board (e.g. Trenz TE0820)
    • image
  • Mini PCIe sockets
    • image

As a designer, I would like to place one symbol on the schematic for the component, on the board all the individual footprints should be part of that symbol and should be placed properly. In the BOM and the Pick'n'Place file, the individual part numbers and locations should be present. So basically what we want is a symbol with multiple footprints, with individual x/y-offset for each footprint.


My current hacky solution (for the Trenz tE0820 Case) is 4 symbols, each with another footprint

  1. Connector JM1
  2. Connector JM2
  3. Connector JM3
  4. 'Trenz_4x5_Outline' footprint that has the mounting holes and indicators for the exact position of the JM1..JM3 connectors. image

On the board, I place the JM1..JM3 based on the mark in the Outline-Footprint, then group all 4 of them. This works reasonably well since the trenz engineers placed those connectors on same positions that are on a nice millimeter grid. But it is a hack and error prone. image

Other people have already run into the same issue or are about to:

KiCad Version

Application: KiCad Footprint Editor x86_64 on x86_64

Version: 8.0.3, release build

Libraries:
	wxWidgets 3.2.5
	FreeType 2.13.2
	HarfBuzz 8.1.1
	FontConfig 2.15.0
	libcurl/8.7.0-DEV OpenSSL/3.1.5 zlib/1.3.1 libidn2/2.3.4 libpsl/0.21.2 nghttp2/1.58.0

Platform: Freedesktop SDK 23.08 (Flatpak runtime), 64 bit, Little endian, wxGTK, X11, KDE, wayland
OpenGL: Intel, Mesa Intel(R) UHD Graphics 620 (KBL GT2), 4.6 (Compatibility Profile) Mesa 24.1.1 (git-6c377358a5)

Build Info:
	Date: Jun  4 2024 18:52:11
	wxWidgets: 3.2.5 (wchar_t,wx containers) GTK+ 3.24
	Boost: 1.85.0
	OCC: 7.7.2
	Curl: 8.7.0-DEV
	ngspice: 42
	Compiler: GCC 13.2.0 with C++ ABI 1018

Build settings:
Edited by cpresser