← Back to team overview

kicad-developers team mailing list archive

Re: How do we envision Pad Stacks?


Hi, my answers below

On 11/06/2020 16:54, Jeff Young wrote:
I had been assuming that you could define a separate shape for each layer.  Full flexibility, but time-consuming to edit (even with commands such as “push current layer to other layers”).

One could have a simple mode and advanced mode. The simple mode allows defining your typical run of the mill stuff and the advanced mode gives full flexibility. In this case the simple mode could be the same shape on all layers and advanced mode would allow defining differing shapes on all layers.

Most users are looking to route traces on inner layers between tight pads.  This is commonly done with the definition of a “capture pad”.  The constraint on inner layers that have connecting tracks is simply not to have a butt joint between the track and the plated hole.  A capture pad is therefore a circular pad with an annulus width of the drill wander plus 1 or 2 mils; other capture pad shapes get you nothing more.

This sounds like a good idea in general. But especially for vias.

There were also a few requests for SMD pads on a single inner layer (or perhaps multiple) — but importantly not for different shapes on different layers.

SMD pads on a inner layer (or lets call them a "pad on the inside without a hole") make sense for some usecases. However currently they are mostly requested as a workaround for missing features. Like a lack of support of area defined layer differences (for example in rigid flex or 2.5D technology where some components are inset into the board) and even for net-ties. I suspect a lot of these workarounds will be made obsolete as kicad develops further.

So one could imagine allowing the pad shape to be placed on any number of layers, and a capture annulus width for any other connected layers.  While it doesn’t have same flexibility, it would be a /lot/ easier to edit.

This really only works if your base shape is circular. All current kicad THT footprints however have at least one non circular pad as we mark pad 1 that way. (We use rounded rect or rect for this purpose)

And footprints meant for handsoldering are often made with elongated pads (oval pads).

Another possible complication is wanting a different shape for mask (or paste) layers.  Is this ever required?

Paste and mask layers can already be made different by having paste or mask only pads placed and removing these layers from the normal pad. I am not sure we win much by having this as part of a single pad but can see the appeal.

There is however something that would be awesome. If such a feature could also create split paste pads and allow specifying the amount of paste coverage then this feature would make a lot of sense especially if the user can then easily change the coverage during the layout phase. Even better would be if it could also add "vias" in some limited grid patterns and have paste avoid being placed on top of them (or have every paste section be influenced in the same manner by vias created that way for consistency) then this would be even more powerful. However i would assume this is more than a simple pad stack feature.

As an inspration take a look at the exposed pad class of our footprint generator: https://github.com/pointhi/kicad-footprint-generator/blob/master/KicadModTree/nodes/specialized/ExposedPad.py and for resulting footprints take any QFN footprint generated. One good example from the official lib is QFN-76-1EP_9x9mm_P0.4mm_EP3.8x3.8mm_ThermalVias

And regarding mask. well in most cases clearance specification is enough. But especially for mask defined pads clearance is not really the setting one cares about. So a way to enter the requested final size would help a lot here (right now we workaround here by making a mask only pad that allows us to enter the required final size).

Where true mask control could come in handy would be a top tenting option for vias inside a center (or exposed) pad (i think cypress still suggests top tenting in their application notes).