V5 Heads Up - Devs Don't Explain Here The Upcoming Changes


By the way i just tested it in 4.0.6 there is no way the value field set in the library is not overwritten on netlist import. Is it possible that you simply had a custom text field and did hide the value field?

I am not sure you use the term atomic correctly. An atomic part is when you have one specialized symbol for one specialized footprint (both the symbol and footprint are only intended to be used with each other. The symbol has of course the footprint pre set in the library. Normally you would then also prefill all other fields in the symbol.)
You however seem to use the generic capacitor symbol from the official library. (That would explain why the value field was pre filled with “C”)

So it might be that in the past you had a symbol for 10uF cap connected to the footprint of the 10uF cap. If you also had the value field of this specialized symbol pre filled with the same value you used in the footprint you would have never noticed that the value of the footprint is overwritten on netlist import.

Edit 2:

Is it possible that in the past you followed the “fully specified symbol” workflow. Meaning you had one symbol per capacitor “value” that connected to its correct generic footprint? (That would make more sense. Mybe you just got confused between the roles of symbol and footprint in that particular workflow.)


I think this could be the heart of the issue that I am having.

It was not very clear, at the beginning of me using V3 how to work with everything.


I hid the value field with the “~” symbol for parts without an actual value.


I’m not following here ?
Did this use to work, but now does not ?
I can paste 10µF into a PCB field fine, save/export netlist and then import with
(value "15µF")
and the value changes as expected. Reports
Changing footprint "C3:/56577AD5" value from "10µF" to "15µF".


It’s always been like that. It’s been noted before that you can’t set a default value in the footprint, the text is just a placeholder that gets overwritten.

You might want to change the title. It also confirms my THEORY about people who put RANDOM words in caps… Rather than leaping to conclusions, why not ask first?


No, it has not.

I used this quirk to create a seperate drawing with only the Fab Layer.

C5 was fully qualified for what I wanted on all the layers; including the NON-Fab layers. I was able to select the layers of interest and create and print a document that illustrated the properties of the parts on the board.

I suppose I should probably move all of the Fab layers in my library into one of the other layers; that is going to be quite a bit of a time sink.

Bottom line, I WAS using KiCad to create secondary documents by printing those layers. I’m now going to have to wait to see what happens with release of V5 before I spend to much time on my own personal libraries.


It has nothing to do with what layer the value field is on. It is always handled the same way.


Can you explain which steps work, or used to work.
If there is a value in the SCH, that would be expected to export in the NET.

However I can see uses where someone might want to load some default LIB value, and in order to do that, omits value line from the NET. Other CAD pgms work like this. ie info not in net, comes from lib.

In that somewhat special case, I would expect NET import into PCB to load the LIB part, with LibVal
Strangely, in an (older) Version: (5.0.0-rc2-dev-44-gde6b32d23) I get this behaviour

I can create a custom LibValue field in LIB, and manual add-part, brings that in fine.
NET import, with no value line at all, (edited NET file) brings in an empty value part.
After that is imported, I can still manually add from lib, and LibVal shows on NEW manual footprint.

However, neither update from lib nor change footprint will get the LibVal updated on any existing part ?

To me that is a blind spot.

Smarter LIB/NET combined operation would be :

  • If Value is in NET, apply that. (this works)
  • If no value line at all is in net, use LibVal (this is missing)
  • If value line is “”, use empty value (really line 1 rule)
  • Update from Library, should have Keep/update value choices
  • Change part, should also have keep/update value choices

Currently, you appear to have a situation where a LIB change, cannot be applied to an existing design.
When I download a new nightly, I’ll recheck this. << Addit: Identical on latest build.


I can not quite remember all the details of the different versions I have used!

My biggest issue, from what I recall, is that if I wanted to make a VERY SMALL change to the footprint dimensions, then ALL of the silkscreen and Fab layer information was dorked up in location and rotation upon reading the new NetList.

Silly me thought it might be a good idea to seperate and include the two concepts. I’d have an Atomic Symbol that had an Atomic Footprint. It worked in KiCad for a while.

As a reminder, this issue has NOTHING to do with board fabrication, but is related to how I attempted to use KiCad to create an IPB with location and value not changing even if the Land Pattern of the Footprint was changed.

At the moment, it looks like I may retain the same concept, but move the Atomic Footprint data off of the Fab_Layer in KiCad.


My further thinking was that even if a part had the same Land Pattern, it might physically have a different height and benefit from other tweaks in design.

I’m not an expert in any way, but I already have 2 separate 1206 FootPrints for resistors and capacitors.

I figured that that even though the Land Pattern dimensions might be the same, the Solder Paste and Solder Mask might not be the same.

My very first attempt at Atomic FootPrints is apparently a failure.


As i explained above, you use the atomic idea wrong.

A proper atomic pair has a symbol specific to your footprint. The symbol holds all the data (reference, value, mpn, …) whereas the footprint is made in the normal way.

  • Using REF** for the reference placeholder and probably the footprint name as the value placeholder. Both of these are arbitrary as they are overwritten anyways. If you want to place additional copies on different layers you need to add text fields with %R for references and %V for the value

So if you then update from schematic you get the correct data from the atomic symbol into the placeholder fields of your footprint.

Mainly because the 3d model is different (resistor has a black body, capacitor a brown body)
But also because users will expect a resistor footprint for resistors and a capacitor footprint for capacitors.

In the case of resistor vs capacitor they are equal (both fall under the same IPC rules) In the official lib both footprints are generated by the same script.


The default libraries always did this as the end metalisation is very different, before you even start thinking about the different 3d models


What do you mean with “end metalisation”? The 1206 footprints in the resistor, capacitor, diode, … libs are identical with respect to the footprint data. (only the description, tag and 3d path are different. You can easily check that using a text diff tool.)


I am talking about the part, not the footprint


I am still not really clear why that would need different footprints. (which after all is what the discussion is about)


There was a time when V4 hand soldering footprints did vary


I was interested mainly in 0603. As resistor has less metalisation then capacitor you can put resistor on capacitor footprint. At least I don’t know of any problems comeing from it, but who knows. But why not have more room betwean resistor pads. KiCad R_0603 (4.0.7) had a gap of 1mm betwean pads (C_0603 had 0,7mm). In 1mm you can run two 0,2mm tracks.


The current version 5 footprints use fillet sizes as defined in IPC-7351B. We use the default placement and PCB manufacturing tolerances as listed in the same standard.

We use the component size definitions found in an old ipc document. (at least for the most common sizes.)
I checked them against a few components on farnell. Over all parts i checked (i think i checked 10 to 20 parts for 5 to 10 manufacturers depending on size) i got the same variation of component sizes as given in that old standard.
If you limit yourself to only one exact part you will most likely be able to get smaller tolerance ranges resulting in smaller pads and most likely larger pad to pad clearances. (So if you really need the space you will most likely make a unique footprint for the parts you plan on using.)

This is especially noticeable for 0805 as this has a smaller clearance than 0603. After 5 arbitrarily selected parts i was already quite close to the tolerance ranges used by us. Checking 10 further random parts even increased it on the toe side. (I found quite a few exactly matching the heel side) Nearly every single part could have had either a reduction on the heel or toe side. (Agrees with my suspicion that specialized footprints can help you out if you are pressed with space.)

The old kicad 4 footprints pads where too small for most parts i checked. (I could not find a single component that would have fit the old 0603 or 0805 footprints if you respect the tolerance ranges given in the datasheets. Even if you ignore manufacturing tolerances.)


I know one designer who created a whole series of CAP footprints, where the paste area, varied by the CAP thickness. Same nominal 0805, but significant variation in solder paste.


Something like that would require specifically more information about the manufacturing process used then we at the official lib have. (Is however a good tip for anybody creating their own libs.)

That is why the paste coverage is not specified for most footprints. Only exceptions are very small SMD two terminal footprints where we found a detailed paper giving advice on limiting the paste coverage on the heel side. And exposed pads also have special paste handling. And some specialized packages where the manufacturer gives a detailed suggestion for how paste should be handled