Support 1:N links between symbols and footprints/BOM items (meta-footprints)
Description
There are some situations that are currently difficult to represent in KiCad (or some other EDA tools, for that manner) involving a 1:N relationship between logical symbol in a schematic and footprints and/or BOM items.
For example:
-
A fuse and fuse holder. Some commonly-used board-mount fuse holders will have two components, and the BOM needs three components (the two fuse holder parts, and the fuse itself) if the full assembly including fuse is to be represented by the BOM (as may be some users' preference).
-
A plug-in module with multiple board-to-board connectors, such as the Raspberry Pi CM4. The most sensible way to represent this is a single (multi-unit) schematic symbol, but the BOM and PCB need two footprints/line items for the two mating connectors.
Some flexibility is needed here:
-
In the above two examples, the two footprints need to be locked together for placement. So, they can be viewed as some sort of "meta-footprint" because it would be ideal to somehow store in a library the mechanical relationship between the two fuse holder components, or the two mating connectors of the CM4. But this is not a universal truth: some 1:N situations may want to allow the designer to move the N footprints in relation to each other.
-
In both the above examples, it's useful to have 3 footprints, with the third being one representing just a 3D model of a fuse or a CM4. Different users may have different preferences on whether or not this third component is shown in the BOM
There are various approaches we could take to support this, but the one that comes to mind immediately is some form of "meta-footprint". The idea would be that you could create a footprint that included other footprints, and could set the relative physical layout of the footprints to each other, as well as override some of the properties of the included footprints (e.g. set a default for "include in BOM"). These meta-footprints could be referenced by name in a symbol, and perhaps could be edited in-place through a similar workflow to the groups tool (but this is a stretch goal; it would be sufficient to edit them in-place using the footprint editor).
The technical underpinnings of this are somewhat related to supporting design reuse blocks.
KiCad Version
Application: KiCad
Version: (6.0.7-rc1-168-gc45aa734b0), release build
Libraries:
wxWidgets 3.1.5
libcurl/7.79.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.11 nghttp2/1.45.1
Platform: macOS Version 12.5.1 (Build 21G83), 64 bit, Little endian, wxMac
Build Info:
Date: Sep 24 2022 06:26:40
wxWidgets: 3.1.5 (wchar_t,wx containers)
Boost: 1.79.0
OCC: 7.6.3
Curl: 7.64.1
ngspice: 37
Compiler: Clang 12.0.0 with C++ ABI 1002
Build settings:
KICAD_USE_OCC=ON
KICAD_SPICE=ON