Feature Request : PCB initiated pad net-name stub swapping
Description
Feature Request PCB initiated pad net name swapping
Steps to reproduce
Scenario : Suppose I am routing a diff pair, and I get to the ‘end’ and the _P and _N pads are transposed - that is, my diff pairs would need to cross each other to connect to the pads. The rats nest connections off the ends of my traces will cross.
User operation (for most instances ) - User pauses routing, and select by menu or my keystroke, SWAP, then clicks one of the diff pairs, then clicks the other. Voila ! the NETS on those pads and associated connected copper are swapped. Then I continue routing and complete the diff pair connection.
At a convenient time, I have to UPDATE SCH from PCB.
This then swaps the NET names in SCH. Note- this only works if my pins in SCH have stubs with their net name, so the tool only needs to swap net names, and does not (it is not expected to ) move wires.
This is a continuous task when wiring up a FPGA. But it doesnt have to be diff pairs. can be anything.
Another example- say I want to use a different pin for my IO (maybe a different single pin, or maybe I want to swap a bunch of diff pair pins) . Again, pause routing, click/key SWAP, then click first pad, then second pad and voila , the NETS swap. Then I go and update the SCH.
IE : is 'engage swapper, select 1st net object with first click , select 2nd net object with 2nd click ’ function.
It has to swap all copper connected nets attached to the pad, this is because one goes through and attaches fanouts to the balls behind any routing. so the stringers have to change net name also.
The changes occur in the netlist level in PCB, and the tool updates the board and copper, and the rats-nest needs to update also to provide confirmation to the user.
then are reflected back into SCH when the update SCH command.
Internal Process :
When the user clicks on an object, the tool as to do the equivalent of "select all connected copper " , and make a list of all those objects.
AFter two clicks, you have two lists of objects. Easy to swap the net names
then, need to tell schematic about what objects that are pads of components have changed.
In the PCB netlist, there will be component pads like U1-5 that get their nets changed. Those pin-pads need to be matched to the netname label in schematic . Schematic has to do this already in order to create a netlist.
Further
In Altium you can have swap groups , so say you have a microcontroller, you can make all the analog ADC input capable pins one swap group, all the DAC pins another swap group . BUT that’s nice but the basics are needed before this sort of stuff- IE the tool prevents you swapping with pins not part of that swap group or pinclass.
PIN NET SWAPPING : this is how it looks when it gets done in Altium-
in PCB, as you are routing, you see there is a cross over on the rats nest.
swap it using the swap tool by activating swap mode (t-s) and 1st click on first via N , and 2nd click on other via in the pair P
and update SCH from PCB, tool has updated net labels
In this case I swapped the nets on the FPGA side of the connection, but I could have swapped them on the DAC chip side… by clicking on the DAC chip pads.
KiCad Version
Application: KiCad x64 on x64
Version: 7.0.8, release build
Libraries:
wxWidgets 3.2.2
FreeType 2.12.1
HarfBuzz 6.0.0
FontConfig 2.14.1
libcurl/7.88.1-DEV Schannel zlib/1.2.13
Platform: Windows 10 (build 19045), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
Date: Sep 29 2023 18:44:47
wxWidgets: 3.2.2 (wchar_t,wx containers)
Boost: 1.81.0
OCC: 7.7.1
Curl: 7.88.1-DEV
ngspice: 41
Compiler: Visual C++ 1936 without C++ ABI
Build settings:
KICAD_SPICE=ON