Footprints losing positioning when the layout is being updated

When I update my PCB with changes made in the schematics, if the “Re-link footprints to schematics are based on their reference designators” is checked, I end up having the parts rearranged in different locations of the layout.

If I uncheck this setting (shown below) I can preserve the current location of the parts.

What does this setting mean?

Further, I can also annotate back the schematics using “Geographical Reanotation” and then, if I Update the PCB later on, enabling the “Re-linking footprints to schematics symbols based on their reference designators” it again messes up the placement of my parts.

So, what does this item do?

Also, if I move my circuits and symbols to another Schematic Page. Using Cut (Ctrl+X) and Paste Special “Keeping existing designators” I still can’t update my PCB without having the positions changed.

Is there a bug here, or it is just a misunderstanding on my part?

In summary. I would like to be able to move, and organize circuits in the hierarchical schematics, keeping the existing placement when the layout is updated later. I would like also to be able to have the schematics and the layout synced somehow, so the next person (or myself in the future) adding changes to the design won’t mess too much with everything in the design in spite of the part that is being modified.

It Re-linkins footprints to schematics symbols based on their reference designators.

In KiCad V6 you normally have all three checkboxes off.
Only turn them on if you know what you’re doing and want to do something special.

No problem, in KiCad V6. But make sure you use the Paste Special from the popup menu instead of the normal paste. This preservers the UUID’s that are normally used to keep the synchronization between the schematic symbols and the PCB footprints.

It Re-linkins footprints to schematics symbols based on their reference designators.

But what does this mean? What is a reference designator?

No problem, in KiCad V6. But make sure you use the Paste Special from the popup menu instead of

I am using it, but if I mark It Re-linking footprints to schematics symbols based on their reference designators. it does not work.

A Reference Designator is:

In KiCad each and every part in the schematic has an UUID.

This is extended to the extreme. Even each label and each wire segment has an UUID.

Normally a schematic symbol and a PCB footprint have the same UUID, and that is what KiCad uses to syncrhonize them. **Re-Linking" means that it’s making links that are outside of the normal. So if you first mess up the annotation by doing a geographical re-annotation The RefDes is not in sync anymore. If you then push these out of sync RefDes values to the schematic symbols, you’ve thoroughly mixed up all links between the schematic and PCB.


Cool, so the Reference designator is the UUID. Now, how can I fix UUIDs that are not synced anymore without losing the parts placement? Can I fix them somehow using the existing References?

Update: I mean, using Kicad, of course. I know that I can make an external script for that. If Kicad does not have such thing I will try to make something but it would be nice if Kicad had this.

The Reference Designators (Or RefDes for short) are as the Wikipedia article states. It’s those letters followed by a number that get filled in during annotation.

You can not see the UUID’s in KiCad’s GUI. They’re pretty much gibberish to humans, but because they are unique, they are nice for computers to identify stuff.
If you want to see the UUID’s, then open one of your schematic files in a text editor.

Alright, the schematic is annotated it assigns RefDes, got it. I made a confusion before.

Now, how do I update UUIDs so symbols and footprints have the same, or related ones?

You do not update them.
You do not touch them.
You just use them implicitly, and the stuff keeps connected. With the re-linking step you explicitly tell KiCad to ignore the UUID’s and use the RefDes for the links.

1 Like

Well, then why does when I click “relink footprints to schematic symbols based on their reference designators” mess with the placement of the components?

My Schematics and the Layout have the right RefDes!

There are no footprints moved.
Just make a screenshot before and after.
they are just getting renumbered.

Indeed @paulvdh. I could not replicate this while taking the screenshots to show you the issue here. I was doing something wrong, then. Sorry for taking your time dude. And thanks again for all the helpful replies.

The FAQ may again come in handy… Update PCB from Schematic's match methods

Than you.

The fact here is that sometimes all the parts are updated and they all lose their positions in the layout when having the “Re-link symbols…” enabled. But I may have done something that fixed this somehow.

If you have the project in the state where the schematic and PCB were already normally syncronized (internal uuids and visible reference designators were in sync) but then the non-default update option cause this “swapping”, it may be a bug. If you can repeat such situation, please report it.

I have not seen any indictation in this thread that KiCad did anything wrong.
Only thing I see is that Leo is having trouble with coming to grips what the Re-Linking of the RefDes does and means, and he admits so too. From what I can see, all his troubles are from abusing the re-linking option. So unless I see some strong indication otherwise, I’ll just treat it as user error.

Nice, now we are talking about the issue and not just about what we should do or not. Thank god. So, are we not discussing issues here in the forum before filing an issue report anymore? If not, I will just report issues directly next time, it will save me more time.

Of course. We still can’t be sure what the situation actually was before the problem – or can we? – so I don’t say you should report it now, but if you now understand how it should work and why, you are prepared to test again.

It’s quite often a good idea to start here before filing a bug report. Especially when it’s not clear what is going on. From what I can see here, I still believe it’s a user error, and that would make it counterproductive to file a bug report (KiCad developers can’t fix users). And anyway. A good bug report needs a clear description and if possible a test case.

So show me what is going on, and convince me there is actually something wrong with KiCad.

There is also another situation that is not “working” when I update my board.

If I remove the footprint from a symbol but keep the symbol in the schematic it is not deleting the footprint from the board.

The 3rd item should include this change or maybe a new checkbox to handle the situation should be added.

I agree there’s something funky going on with that last issue. In theory KiCad shouldn’t let you update the PCB if a symbol has a blank footprint field. A symbol without a footprint assigned means the design isn’t complete and the resulting PCB won’t have the same number of nets as the schematic. It sounds like you’ve found an edge case where the update process isn’t throwing an error.

In general, to delete a footprint, you should delete the symbol and update the PCB. To change a footprint, you can change the footprint field of a symbol and update the PCB.