Proposal: Artifacts of Edits to Existing Schematics

The title may not be the best, but I have to start somewhere.

Artifacts of Edits to Existing Schematics

There is an rather annoying artifact of editing the schematic of a reasonably mature project. I believe that operations like adding a hierarchical page and moving parts from other pages cause difficulties with the existing PCB layout.

For reasons I don’t fully understand, when making changes to an existing schematic, the timestamp on component insertion changes or a new component is created. Consider that U1 exists on Sheet 1. Moving that via Cut/Paste or possible creating a new sheet and Inserting another sheet contents, results in another instance of U1. The use of U1 is correct for the schematic, it is now just located on another sheet. There will be only a single instance of U1.

When Updating the PCB from Sch, U1 comes with a NEW timestamp. This results in 2 instances of U1, one already placed and possible routed, and another floating U1. This is not a disaster, but when there are 20+ components already routed, there needs to be No Change to the PCB. I believe the issue is the timestamp differences.

What I propose, is a feature to reduce the significant impact on the existing PCB layout.

I will use a manual example to clarify my limited understanding and propose a solution.

A tool could be introduced (popup?) which lists
Retain Footprint Update Footprint
U1 (old timestamp) [ _ ] (new timestamp) [ _ ] ← Checkboxes
U2 …

If the user selects Retain:
COPY the new timestamp into the OLD U1
delete the new instance of U1 footprint

If the user selects Update
The Old U1 footprint is deleted.

It would be useful to have a option to select Retain All.

Alternately, in PCB, when update is performed, if there are timestamp differences, just update the time stamp and be done with it (assuming the same footprint is used). No need for the popup. I may not be recognizing other side effects of this operation.

Alternate #2: have a PCB Tool feature SYNC, which lists timestamp differences, without making changes.

In summary, anything that can be done to reduce the artifacts of schematic edits on existing layouts would be a HUGE improvement over having to manually deal with the duplicate footprints.

Use your right mouse button and then click Paste Special, and then select Keep existing Referneces

Unfortunately this still looses the UUID (Previously “Timestamp” in KiCad V5), which means you also have to use: Re-link footrprints by RefDes to keep your schematic symbols and PCB footprints together.

I find it a bit weird that the Paste Special can keep the RefDes, but not the UUID’s, as it’s likely that if you want to preserve the RefDes, you also want to preserve the UUID. This has been mentioned a few times on this forum. It may be worth creating an gitlab issue for this (if it’s not already fixed in the nightlies…).

There are several ways to edit the schematic to make NO electrical changes, just to improve readability, that result in PCB problems. In general, there should be a way to fix this without resorting to PCB edits of duplicate components.

Common sense and intuition says that the symbol/footprint connection should stay, but it doesn’t. It works logically now if you know the implementation details, but it’s not good for usability. However, changing the UUID silently in the PCB while making changes in the schematic would be against the way KiCad works in other situations. All changes are propagated explicitly through the update dialog and this shouldn’t be an exception. It’s not easy to find a way to make this easier, considering how UUID is implemented as a path which includes the sheet UUID.

The schematic editor could show an infobar message when symbols are pasted retaining the reference designator. But even that would require some kind of memory about where it was cut from if moving between sheets is what we want to detect (contra cutting/pasting inside the same sheet). Maybe the undo buffer could be used for that.

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