I am curious on how components are ‘linked’ between eeschema and pcbnew? A while ago, I re-annotated a schematic after having designed the PCB - and subsequent changes to the schematic. Updating the PCB from the schematic appeared fine until I started to make changes to the traces. Nearly all of the net class associations that I had setup changed to the default class. That was not a happy moment.
When a component is placed on the schematic in eeschema, shouldn’t it have a md5 hash or something that is carried through into pcbnew? Shouldn’t this be used for associations instead of the reference designators (which it appeared to use)? It would be nice if the (automatically generated) net names change, the class doesn’t lose it’s association. Or put another way, if the auto generated net names are updated they retain their previous class.
I certainly don’t know the different use cases. Am I missing something, or is there a possible fix for this? Thanks.
Auto generated netnames are bound to the reference designator of one of the components on that net. I am not even sure there is any guarantee that it will always be the same component that is chosen. Meaning the netname can change and therefore the netclass stuff could break even if you do not change the annotation of your components.
If you want to work with netclasses (or anything that relies on stable netnames) then it is highly suggested to give every net a proper name by use of labels.
The link between the schematic symbols and the PCB footprints can be done in 2 ways.
Usually it is done with “unique numbers” attached to each schematic symbol. (So the link stays when you change the reference names). For making manual adjustments it is possible to use reference names (RefDes) to make the link between schematic symbols and PCB footprints.
A pretty long thread on this forum about matching is here:
I usually have a “default” net class for all signal traces, and any net for which I want to use another width always gets labels. This makes it much easier to select them to put in a custom net class, and they also stay there
It would probably be an enhancement to KiCad if it internally used the (sorted?) Timestamp/UUID of the schematic symbols to auto-generate net names, and ten display a (the same) name as it does now. The Timestamp/UUID is much less likely to change than the RefDes and therefore would not break the connection so easily. For naming: It seems logical to derive the net name from an output pin if available.
But as Rene already wrote. Just put labels on all nets that need specific net classes. “Net-(D701-Pad1)” has no meaning whatsoever to me, and is therefore difficult to put into a netclass, while “RS485-A” is immediately clear.