KiCad update schematic from PCB

Is there a way to do what this button does but in the opposite direction? I.e., update schematic from PCB.

I have to make a PCB that has lots of connectors (about 30) with lots of pins (>25 per connector). Each pin from each connector simply goes to another pin in another connector, so it is really simple. However, given the large number of connections, routing can become tricky.

What I want to do is to just define my connectors in the schematic (done), import them in the PCB (done, normal workflow), then route everything in the PCB in the most convenient way, as if this was the schematic, and finally (this is the non-standard requirement) read the netlist from the PCB into the schematic and have the wires drawn, or at least some kind of ratsnet in the schematic and then I draw the wires. Is this possible?

No, but Pin / gate swapping is on the roadmap (ignore this)

Yes . . .

image

but I’m not certain it will do exactly what you are looking for it to do, try it and see.

oh, then ignore my comment, I misunderstood the question!

Nice, that is the button. Now, how do I see the new connections in the schematic file? There is not ratsnet or alike.

As I said, it might not do what you are looking for, test it and see.

I have recently experimented a bit with this and I certainly find it a useful function. It does indeed not place ratsnest lines (I made a feature request on gitlab for that a long time ago), but it can both update labels, and place new labels.

Try this method:

  1. In the schematic place the symbols, maybe draw some wiring, but do not make a net, so do not connect a wire between two pins.
  2. Put the stuff on the PCB with the normal [F8]
  3. In the PCB editor, all these unconnected pins are now part of the " part of the netlist, and you can draw tracks between them.
  4. After you drew tracks to a connector, edit a track segment or pad, type a unique name in the “search box” for the net name, and KiCad puts all the connected copper in that net (including pads).
  5. Use the PCB Editor / Tools / Update schematic from PCB [F9] and make sure the Net Names checkbox is on. This creates local labels on the corresponding pins. It can also update existing labels on a net.

Thanks. I think I made it up to step 5. The thing is, how do I make this information visible in the schematic? In the PCB, for example, even if you don’t have the ratsnet enabled, it will highlight the pads that you should connect when you start a track.

Oopsie.

I created an empty project in order to demonstrate the whole process, and it already goes awry in one of the first steps. The problem is that if you first place symbols in the schematic, and then port them to the PCB with [F8] then the unconnected pads have Unconnected … net names, and they are not of the type. You can override this with PCB Editor / Route / Interactive Router Settings / Mode / Highlight Collisions / Allow DRC violations.

With this, I created a short on a resistor, that has no wires in the schematic:


One pad has the net name: unconnected-(R1-Pad1) and the other has the pad name unconnected-(R1-Pad2)

Then I selected a track segment, and changed it’s net name to the new SengerNet

After [Enter] KiCad prompts with:
image

Both pads, and all track segments of that net now have the name SengerNet.

With PCB Editor / Tools / Update Schematic from PCB, and setting the Net Names checkbox, KiCad adds the Add Label messages in the Changes to be Applied.

After clicking on Update Schematic, KiCad adds local labels on both pins of the resistor:

image

Geez, do you realize it took me 24 minutes to get the details right and write it all down. Maybe this is worth a small donation to KiCad from your end :slight_smile: