I did a re-annotate and now I got this error, multiple footprints found.
How can I get rid of the multiple footprints instead of deleting them one by one? And how is this error introduced in the first place?
I did a re-annotate and now I got this error, multiple footprints found.
How can I get rid of the multiple footprints instead of deleting them one by one? And how is this error introduced in the first place?
If you mix designators you should not re-link footprints to schematic by designators.
I use re-link by designators when I replace at schematic some symbols with new ones (with the same designator).
Symbols when placed at schematic got unique identifier and footprint is linked based on that identifier (and not designator). I remember reading about it in KiCad manuals (V4 those time) before I even downloaded KiCad for the first time.
I donât get that. This would make sense if patterns are linked by reference but when patterns are linked by the unique ID, there shouldnât be any discrepancies between the schematic and the layout.
Still the references are mixing up. I would argue that if these unique IDs are removed or changed from the schematic, why are they still present in the layout?
Until you ask KiCad to âRe-link âŚbased on their reference designatorsâ.
When at the project end I reorganize references (I do it by dividing schematic into blocks, that I position far away of sheet, annotate, and then move them back), thanks to everything being linked by uids I can just update pcb and all references are correctly updated.
During years I found that if I forget to do that order in references nothing wrong happens. Computer reading P&P file doesnât protest
Based on what you assume they are changed?
I think they are never changed, but I have never did any experiments to check it and never looked for them in schematic/pcb files.
I changed them earlier on myself in the schematic and now end up with the duplicates in the pcb.
The problem is, I now have many duplicates (C3, C4, C5 etc, see screenshot). I donât know exactly what went wrong. I tried to clean up, no matter what I do (checking Re-link, tried several combinations), I cannot get rid of the duplicates!
There must be some function to fix the PCB especially if the components are linked by a unique ID.
You should be running the Schematic Editor and the PCB layout via the Project Interface ? . . . if you start them directly (rather than from the Project I/F) this kind of thing can happen as they are not properly linked.
It was my question on you writing âif these unique IDs are removed or changedâ.
Now you write that you have changed them.
How did you changed unique IDs?
I donât know the way to do it. May be by using text editor and finding these IDs and changing them randomly.
There must be some function to fix the PCB especially if the components are linked by a unique ID.
I agree with you. I have never met situation when after updating from schematic I had elements doubled.
What always help is to turn back time using yesterday backup.
It was my question on you writing âif these unique IDs are removed or changedâ.
I wasnât quite clear on that, I meant when the symbols with these unique IDs are removed or changed, the appropriate pattern on the PCB should be removed or changed (stay in sync as they are not linked to the reference designators).
Altium also works with unique IDs and never had the problem with syncing schematic <> pcb.
So I wonder what went wrong and what I can do to fix it. I will share the project.
@RaptorUK i opened all from the main project interface and also when selecting components they correspond over the schematic and pcb editor.
Are you able to share this project ? You can ZIP it up from the project I/F and attach it here.
It crashed when I tried to save, second time within a few days. Attached the log file as well.
Anyway, see the project attached.
IsoDap.zip (862.7 KB)
How can I get rid of the multiple footprints instead of deleting them one by one? And how is this error introduced in the first place?
The first question is easy to answer. The second one is more difficult.
First: you are now having (in the state which you uploaded the zip file) for example two C4 capacitors in the PCB. You are trying to âRe-link footprints to schematic symbols based on their reference designatorsâ.
For KiCad this means itâs trying to ignore old UUIDs and create new UUDIDs, using for example âC4â as the link between the schematic and the PCB. Now it doesnât know what it should do with two C4 footprints. The situation is impossible to handle automatically. Because you seem to have no PCB yet, only the randomly placed footprints, the easiest way to fix this is delete everything and do the update with correct settings.
Normally the âcorrect settingsâ are without the âRe-linkâ option. That option is reserved for some special situations. See more about this in Update PCB from Schematic's match methods - #2 by eelik.
From the information you have given I can only guess an answer for the second question. You have imported from Altium something: maybe the schematic only? But you have footprint library called âAltiumImportâ, so I donât know if you have imported only the library and started the schematic from scratch in KiCad. Itâs difficult for me to follow the previous comments in this thread. The current state of the project doesnât tell how the situation emerged. If you tell all the steps which you did in order, we may be able to tell. But maybe you understand it already if you read the FAQ article.
the easiest way to fix this is delete everything and do the update with correct settings.
For now, I done this and this is okay. What if one spent days on a layout and find out later? Then itâs not realistic to delete all the components. How hard can it be to show a dialog to delete abundant components? All discrepancies can be easily solved when the user does an âimport from SCHâ.
Normally the âcorrect settingsâ are without the âRe-linkâ option. That option is reserved for some special situations. See more about this in Update PCB from Schematicâs match methods - #2 by eelik .
I did change that option to see if it would fix the problem. I understand the way the symbol linking works, the UID is similar to what Altium uses. With Altium itâs possible to automatically match or do manual (per component matching. I never had any issues here and used automatic matching 95% of the time.
You have imported from Altium something: maybe the schematic only? But you have footprint library called âAltiumImportâ, so I donât know if you have imported only the library and started the schematic from scratch in KiCad.
The schematic was built from scratch and I used symbols from my Altium library.
I think itâs not hard to come up with a better and more user-friendly matching flow which solves all mismatches either by prompting or default setting.
Symbol ID match > OK
Symbol ID match but properties donât > (prompt for) update
Symbol ID exist at SCH but not at PCB. Is reference designator present at PCB?
Symbol ID exist at PCB but not at SCH > (prompt to) add to SCH. Is reference designator present at SCH?
This way syncing can work both ways easily.
I made a quick demo to show how things can be easily and very user friendly solved:
KiCad - Sync with schematic
What if one spent days on a layout and find out later?
I just canât see how this could be possible. You noticed the problems right away, right? Who would do layout with doubled components for a day without noticing it, especially when KiCad actually told about the problem?
All discrepancies can be easily solved when the user does an âimport from SCHâ.
Not all. If you have in one way or another created a situation where there are doubled footprints and try to Re-link by refdes, KiCad canât decide which of the footprints are to be deleted.
The flow should be:
Symbol ID match > OK
Yes, it happens already, when using the default matching method (by UUID).
Symbol ID match but Reference designator doesnât > prompt for update
It doesnât need to prompt when using the default matching method, it just updates the refdes.
Symbol ID exist at SCH but not at PCB > (prompt to) add to PCB
KiCad does that without prompting when using the default matching method.
Symbol ID exist at PCB but not at SCH > (prompt to) add to SCH
Iâm not sure you have understood how KiCad works in this respect. When doing Update PCB from Schematic, KiCad updates only the PCB, and thatâs what it must do. Thereâs Update Schematic from PCB which is a different function and it canât work as a mirror compared to Update PCB.
In KiCad itâs possible to create situations which are unsolvable without user intervention, and they require some user knowledge about what should be done to fix the situation. This may not be ideal or optimal, but behind it is the logic that the schematic and the PCB arenât tied together tightly and updates donât happen on the fly. The situation is different in for example Eagle where the reference designators are the only link and you canât separate the schematic from the PCB. That logic causes other problems which KiCad avoids.
KiCad could be more user friendly in this respect. A need for an FAQ article often shows some deficiency in usability. I agree that something could be done. But I think your table just doesnât work for KiCad, although it can be used as a checklist for possible situations.
I just canât see how this could be possible. You noticed the problems right away, right?
I worked on LARGE designs with 1000+ components. It can be just one symbol which catches your attention in the last stageâŚ
Not all. If you have in one way or another created a situation where there are doubled footprints and try to Re-link by refdes, KiCad canât decide which of the footprints are to be deleted.
Thereâs at least the option to come up with a prompt which show solutions, for example:
It doesnât need to prompt when using the default matching method, it just updates the refdes.
Yes, it depends on if the user doesnât have to be notified (like a logical action to update the refdes).
Iâm not sure you have understood how KiCad works in this respect. When doing Update PCB from Schematic, KiCad updates only the PCB, and thatâs what it must do. Thereâs Update Schematic from PCB which is a different function and it canât work as a mirror compared to Update PCB.
Yes I understand that, this is exactly similar to Altium. I think Altium lacks a âsyncâ function in this respect too, but at least it didnât give any unsolvable problems.
But I think your table just doesnât work for KiCad, although it can be used as a checklist for possible situations.
I presented it as an idea, it will probably not be rock solid but maybe it can be a source for inspirational motivation / brainstorming / discussion. I am curious tho in what situation it wonât work.