Converting existing schematic to hierarchic sheets

Hello, I am trying to convert an existing project with schematic and complete layout into a project with one Main sheet and two sub sheets while keeping the existing schematic+layout.
creating the sheet structure is easy but as soon as I cut-and-paste the existing circuit into one of the new sub sheets KiCad wants to reassign all footprints and partially unroutes the existing layout when I start the synchronizing in the PCB editor.
It seems by simply using cut/paste I am breaking the connection between circuit and PCB in some way !?

Does anybody know how to do this right ?

Does anybody know how to do this right ?

Yes.
…
…
But your actual question was probably “How to do this right?”.
copied from an older thread:
You have to:

  • make sure board ↔ schematic are consistent in the first place (update board from schematic)
  • cut the symbol / symbols in the source sheet (probably your root sheet)
  • switch to destination sheet, then use RMB-click–>context menu–>Paste special, choose option “keep reference designators, even if the are duplicated”
  • now synchronize board ↔ schematic again: run again “update board from schematic”, but this time with the option “relink footprints based on their reference designators” checked
  • optional: run “update board from schematic” a last time, this time with the option “relink footprints based on their reference designators” unchecked. This is useful because kicad saves the state of this checkbox - and for normal use it should be unchecked.
3 Likes

Thank you, it works !

yes, I wanted to know “how to do this right” :smiley:

The key to success is the “Paste special”
I do not fully understand this because the designators always stayed the same and were never used twice but this possibly refers to Kicads inner structures ?

because the designators always stayed the same and were never used twice but this possibly refers to Kicads inner structures ?

Yes. Internally kicad works not with the reference designators (RefDes), but with unique ID numbers (UUID). These are given to a symbol/footprint at the first placement in the schematic/board. Even if you rename the RefDes, the internal UUID stays the same and hence the synchronization remains.
The downside is your usecase: if you delete (cut) a symbol/footprint and place it with copy elsewhere it gets a new UUID and therefore the synchronization is lost. The described workflow is a workaround for this lost synchronization - using temporary the RefDes instead the UUID for the synchronization process.

1 Like

Just let me add: this forum is great ! In most situations I got helpful answers in minutes.
Thank you, to all KiCad developers and users !!

This is also explained in a FAQ article: Update PCB from Schematic's match methods

Edit: mf_ibfeew’s post shows the complete workflow which isn’t clear in the FAQ article. The problem is larger – there definitely should be a simple, intuitive, safe way to move a selection to another sheet. The current workflow requires knowing and remembering it, and even maybe understanding inner working of KiCad, and is error prone.

1 Like

thats true, matter of fact I first searched for a RMB function like “transfer selection to sheet xy”