Update deletes and replaces components it shouldn't change

How did I end up with double footprints?

This happened only on my computer and was caused by the missing footprint-library. (Some symbols-footprints were excanged during the update, and for others this did not work because of the missing library, so the update process was incomplete and ended with doubled footprint-references).

How do I get rid of the extra footprint?

Normally: Delete one of the double footprints (highlight in DRC-error-window, than select in board, than delete) in the board. If the “update from schematic” runs without errors such double footprint references would also be deleted.

Every time I would try to update the PCB, some footprints would change back to the old library, even though the symbol called out a footprint from the SLM_footprints library.

I can’t reproduce this.
I have attached your project, with your footprint library added inside the project-directory as project-library. (This makes itmuch easier for all to reproduce a issue).
The saved state is: schematic+board are synchronized. If I now “update board from schematic” no new changes are introduced.

If you experience a different behaviour (changing footprints back to some old library) than we need exact steps and explicit which footprints are affected.

update_replace_new_saved.zip (439.8 KB)

Thank you so much mf_ibfeew! Everything looks good.

Was it easy to synchronize the schematic and board? If so, I would like to learn how in case it happens again. I will avoid cutting and pasting from now on.

1 Like

I just did one “update board from schematic” command, inside the board editor.
I still don’t know where the original problem was.

I will avoid cutting and pasting from now on.

Avoiding is the easiest way. But if you use kicad regularly than you could spend a little time with experimenting:

  • creating small schematic, create corresponding board, place footprints
  • cut/paste/paste special in the schematic editor
  • and subsequently in the board-editor run “update board from schematic”, with the option “relink with RefDes” unchecked/checked
  • and observe the different results (footprint is newly added versus footprint remains)

recommendation: use the “update board from schematic” regularly and often. So you see unwanted results early.

Which is which?

Does the one that replaces the footprint replace the PCB footprint with the one specified in the schematic?

Will do. Thanks!

Which is which?

  • relink with refdes checked: footprint is preserved if already a footprint with same reference exists. The internal UUID for symbol+footprint are synchronized
  • relink with refdes unchecked: if existing footprint +symbol have different UUID-numbers (because of cut/paste/paste special): existing footprint is deleted, new footprint is added

I need to move three components from one page to another. How do you recommend I do it?

Adding new components and then deleting the old ones doesn’t seem to have any advantages over cutting and pasting. Is there away to just move them?

Would I cut and paste making sure that the ref deses remain the same as they were before I cut them and run update with relink with ref des checked?

As far as I know this is the simplest way to do it. Paste Special can keep the reference designators, otherwise you have to re-write them manually.

This is not a difficult workflow once you know it, but not certainly user friendly for those who don’t yet understand how the schematic <-> PCB linking works in KiCad.

The important thing to remember is to first ensure that the schematic and the PCB are fully in sync before doing this. If there are other pending updates at the same time, it may lead to troubles.

1 Like

The answer from eelik already contains all points, I have only put it together as a bullet point list for better overview:

  1. make sure boards + schematic are in sync (update “board from schematic” with option "relink with refdes"unchecked).
  2. select and cut the desired symbols from the source sheet
  3. Paste special (from context menu) with option “paste with existing Refdes” set
  4. directly run the command “update board from schematic”, with option “relink with refdes” checked. This should update the syncronization (and therefore the UUID-numbers) between board+schematic, without changing the footprints or their positions.
  5. again run the command “update board from schematic,” this time with standard option “relink with refdes” unchecked.

additional list with remarks to the above list:

  • If you are using the update-command regularly (as recommended above) than step 1) (synced state) is already the normal case
  • between step 2+3: no other actions with symbols (adding, deleting, reannotating, … ) on board+schematic, as this would influence the current Reference deisgnators
  • step 5) is not 100%needed, but recommended (by me): as Kicad saves the dialog-settings the state of this checkbox would be saved and on your next dialog-usage you may overlook this non-standard setting. So better take this step 5) and run a second time with option reset to standard value (unchecked).
  • so in practice step 2+3+4 remain (and step 2+3 == copy/paste are required in any case)
1 Like

I suppose that even if footprint with the same reference exists, but footprint assigned in schematic to the symbol with this reference was changed then footprint will not be preserved. But I have never checked it as I don’t change at schematic footprint assigned to symbol.

For me standard I use is checked. It is because in my workflow changing the symbol value is not accepted. If I want to change the value I delete the symbol and insert the new one (with its value). So the Ref is the same, but UUID changed. Thanks to that I avoid the risk of changing value to not existing one (like changing 1uF to 10uF without changing the footprint). In V7 inserted symbol automagically gets the same reference as just deleted on :slight_smile: .
I use unchecked only once at the end when I do the order in symbols references. I divide schematic into parts distributed out of sheet, run Annotate, then put those parts back at schematic and then run Update PCB with this option unchecked.

That’s why I recommend in the FAQ article that you should use the “change symbol” function. It preserves the uuid.

Didn’t knew (or didn’t remembered if was told) of that function. Will I remember till Monday that I should search it and learn to use :slight_smile: ?

Should I send you a PM next Monday? :smile:

1 Like

Thank you for the detailed step-by-step process. I performed steps 1-3. When I tried to update the board again (step 4), I got the “Updating requires a fully annotated schematic” error message. The pasted components still have their ref deses. I could not find any missing ref deses.

So I let it annotate and it said there are duplicate reference designators for the symbols I cut and pasted. The duplicates are on the schematic. I change the ref des on the cut-and- pasted symbols to conform to their footprints.

I then updated the board with ref des checked and it seems to have worked. I just don’t know how I ended up with duplicate designators.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.