SMD Chip Component Footprint Calculator

There was a separate thread here on the forum where I described all the issues that I had with the format of the library chip component. Specifically those for capacitors, inductors and resistors.

My main complains were:

  • Footprint were not made to the recommendations of IPC standard
  • Font for the Value and Reference fields was chosen for blind people
  • Orientation of the components was chosen randomly (in this case components are horizontal) which becomes a problem when you try to generate component position file for board assembly

Naturally you can make your local copy of those libraries and modify them to your heart content. I decided to go a different route and to make an Excel calculator based on the PCB Library Expert calculations, which would automatically generate KiCad formatted footprints based on the Manufacturer tolerances for your chip components as well as desired component density. Each parameter can be adjusted manually, or you can simply select a “standard” chip component size and desired density and it will automatically populate all of the values in the spreadsheet. The second sheet called “Constants” contains the base line manufacturing sizes and tolerances for chip components (used Yageo as a baseline) which can be changed to whatever manufacturer you prefer to use. It also contains all the footprint parameters for different footprint sizes which are loosely based on IPC recommendations.

Future upgrades will include automatic generation of array footprints.

To use it you will need to make sure that macros are enabled in you excel settings

Here is the link:

What version of Excel are you using? What is the oldest version you would expect to work with your calc?


I’ve got Excel 2013. Just in case also added version of the calculator for 97-2003 Excel

This sounds like a great tool. Do you plan on making the footprint libraries that you have created with this tool public as well? I don’t mind using the tool to create my own footprints, but as with any PCB designer efficiency is always in the back of my mind!

I can include the libraries. However the strength of the calculator is in its ability rapidly create chip footprints based on your part manufacturing tolerances. Another benefit is (shameless advertising) that you can rapidly adjust and create all components with whatever size value and reference fields you like. If you just want a baseline library, it would literally take you about 5 minutes to create it using this tool for all the footprints starting with 0075 all the way to 2512. How’s that for efficiency?

Nice spreadsheet!

I assume it uses a bunch of VBA code so it’s not going to work in anything but Excel?

That’s correct on both counts. It was just quick and dirty. If there is need it always can be made a stand alone VB or even C code.

I appreciate the work you did to make it and the initiative to go out and correct what you saw as a shortcoming. And it’s better to have something out there even if it doesn’t work for a (smallish) segment of the population who don’t have Excel.

Very nice work. Is it possible to make your code compatible with open source LibreOffice Calc. This way anyone can use it with this free (LibreOffice) tool.

I’ve got another footprint generator:
On linux - run generate_packages (in folder Data/)
On windows - I haven’t compiled it yet, even if it compiles on windows then the script generate_packages won’t work so run KiCad_Footprint_Generator (in folder Debug/) with name of every csv file as a parameter.
It’s not 100% ready yet. The code is ugly and I can’t write it better. Beware of too big tables - it may run out of memory.
Some of the generators can calculate the ipc formulas.
Footprints in Data/footprints are generated from data in csv files in Data/pack_param_csv/

Not sure if it can be ported to LibreOffice. I suppose it is possible if they support VBA.

LibreOffice Calc and Microsoft Excel both use some type of BASIC macro language but with different underlying libraries. There is no reliable, automated translation from one to the other.

If anyone was going to put some effort into this, I would rather see the tool ported to Python (or some other language that runs on Windows/linux/OSX). Just a simple command-line script where you enter a parameter on how dense you want your components and out pops a complete library of common, two-terminal footprints. All the manufacturing data on the second sheet could be stored in a JSON file and read-in to support the library generation. Then you could easily substitute different manufacturing data for specialized applications.

Or maybe someone just has to run the existing spreadsheet and make a library for each of the three density settings. Then make these libraries available. That would probably meet the needs of 99.9% of the people who care.

I will post the libraries, that’s no problem. Just check back in a couple of days. However I was planning to add functionality for rapid footprint generation for other types of SMT componenets (various arrayed pads etc.) That might be a good time to implement it in some other way/language, so it can be a standalone tool. However that would take a little bit more time to implement.

How about [madparts-footprint][1] [1]: ?
I haven’t tried it yet but it seems to be the most versatile and automated way of creating and maintaining footprints so far.

I like the idea of parametric definition of a footprint. I don’t like the implementation of mad parts. Too obscure. It should be more straight forward.

Added libraries generated with the calculator. Component dimensions and tolerances are taken from Yageo resistors data sheet.

Thanks for doing that!

If you decide to do a non-Excel version of your calculator, and if you decide to write it Python (these are two LARGE ifs, I know), you might look at a Python script I used to generate all the footprints for the CTS resistor arrays. It isn’t a very clearly-written script, but it might have some bits and pieces you could use if you go down that route. (Or it may just confuse the hell out of you and turn you off Python before you ever start. :wink: )

Thanks. I may give it a try in the future. Currently, just as a prove of concept, I’m thinking about adding functionality of pad arrays and see if it is going to be any good and how easy it is going to be to use. It that works out, I may consider making it a stand alone app.

Probably the best solution is footprint wizard (python scripting) because it’s well integrated with kicad. Maybe in future somebody will add more wizards but afaik now the problem is poor documentation.