New footprint wizard

I’ve just released a new footprint wizard with the following features:

  • Generates footprints for SMD chips like SOICs, SSOPs, TSSOPs, QFPs, etc.
  • Generates footprints for BGAs.
  • Generates footprints for through-hole DIPs.
  • Supports extending the pads to make hand-soldering or probing easier.
  • Supports the addition of thermal pads.
  • Silkscreen outlines can be resized along with the addition of beveling and indexes for orienting the chip on the PCB.

It’s based on some of the code from the existing footprint wizards. You can read more about it here.

1 Like

Nice work Kevin.

How the app. define the package reference point. Is it the package center or pin 1 location? Can you make it an option?


Ok, figured out how to start using scripts in PcbNew…

This is fantastic! You’ve done an extensive work.

There are a couple things that I would love to see in it though.

  • Component orientation - not a biggie since you can go later to the library and flip it manually, but still. Quadrant of pin one position becomes important when you design the board for automatic assembly, otherwise pick and place machine will place the component in the wrong orientation. It is easier if you orient component the same way it comes on the reel from the get go.

  • Individual pad shape editor - it would be nice to be able to change the shape of a pad. Sometimes one pad in an array would be a different shape from the rest. For example: BU7205 or ISL54220 Another example would be creating a pad for solder paste aperture which would have rounded corners. I usually do that with 6 pads with the same number - two rectangular SMT pads in the middle forming a cross and four circular ones in the corners. However I realize this might be hard to implement in parametric format

  • Thermal pad vias and paste appertures - Quite often thermal pad requires thermal vias and multiple paste apertures. When making it by hand it is usually done by adding additional pads on top of the thermal pad and with the same number as the thermal pad. Some of those pads would be a through-hole for the vias and some SMT for the paste. Most often than not they are an array, so if you could implement a secondary array for the thermal pad, that would be great!

Actually, I just took the existing QFP and BGA wizards that were provided with KiCad and re-wrote what I needed.

For orientation, right now you can import the footprint into the module editor and do it there before saving it to the library. You can also use this technique for changing the shapes of a few of the pads.

For getting oval solderpaste apertures, the wizard could make an overlay of paste-only pads (no copper) that use an oval pad shape.

For an array-like paste application on the thermal pad, could that be done by making a bunch of smaller paste-only pads on top of the large thermal copper pad which would have no paste layer? Then the paste would only be applied where the smaller pads were placed? And how are the vias arranged with respect to the paste?

Oval pad for solder paste probably would work, but usually it is specified by manufacturer as a square pad with rounded corners.

As for paste only pads, those have a drawback. As it turns out even if you give them the same number as the thermal paddle they still generate DRC errors “hole near pad” when placed next to a thermal via. So paste only pads need to be still included into the copper layer, which doesn’t really affect anything anyway.

So, to make a thermal paddle with separate solder paste apertures and thermal vias you would normal make one pad for the paddle and exclude it from the solder paste layer , them place an array of smaller SMT pads on top of it and include them into the solder paste layer and then ad an array of through-hole pads for the thermal vias (they usually go between the SMT pad and sometimes right on top of them) Depending on the size of the component this can be pretty time consuming. Recently I had to make an LGA-42 footprint with an offset thermal pad (was offset from the component’s center) with eight square solder paste apertures with rounded corners (that’s 6 pads per aperture) and 15 vias in the corners between each aperture (Si1000 page 39) Took forever to make by hand

How is one supposed to do rounded corner pads if KiCAD doesn’t know them (I got bzr5978)?
The way of putting them together by using primitive pads is causing a hell of a ratsnest for me and making it look like a lot of links are missing in pvpcb… not to mention it get’s very hard to hit the center of a pad with a wire.
Only way to solve is to get native support into KiCAD for pads with rounded corners, but that’s something for the bugtracker/programmers and needs more than a bit of scripting in pvpcb IMHO?

As for doing arrays of pads/PTHs/paste apertures by hand… you could have used an external script or excel and modified the kicad_mod file to add the needed pieces (that’s how I did my QFN package footprints so far). No sane person should be doing stuff like this by hand - anything above 14 pins is just sick.
Will have to look into the scripting ability of KiCAD, but so far I didn’t had time and am still faster by going with outside scripts and manual tinkering…

If make your own “composite” pad consisting of multiple pads of the same number there will be no mess with rats nest, as long as they overlap. I have many footprints made like that and everything works just fine. There was a bug in OpenGl mode that would make it not so, but it is supposed to be solved now

Yes it would be nice to have everything in the main package so you wouldn’t have to tinker with anything. Just stick around, you will discover that working with KiCad is all about finding workarounds.


I’ve done some code to build one exposed pad not on solder paste (but on solder mask) + this array of pads on solder paste.
the same pad name for all of them, and pads optional in wizard
(assigning epad subdivision to 0 epad array won’t be generated;
assigning epad width or lenght to 0, epad won’t be generated).
as the kicad developers asked me, but for some reasons it seems to be ignored and not committed

So I decided to fork kicad and put my extra code on that fork…
you can find the thermal scripts at:
[QFP/QFN with thermal pads array (paste) and through hole pads wizard][1]
[QFP/QFN with thermal pads array (paste) and through hole pads pad array wizard][2]

and the version with only paste pad array…
[QFP/QFN with thermal pads array (paste) pads wizard][3]
[QFP/QFN with thermal pads array (paste) pads pad array wizard][4]

the version with through hole pads needs to be exported and edited with a text editor to modify e.g.
(pad 65 thru_hole circle (at -3 -3) (size 0.5 0.5) (drill 0.3) (layers *.Cu *.Mask F.SilkS))
to (pad 65 thru_hole circle (at -3 -3) (size 0.5 0.5) (drill 0.3) (layers *.Cu))
At the moment I couldn’t find a way to create th pads without mask and silk screen, without a quite heavy change in cpp code (python API are still basic and under development).

Hoping someone could find it useul