More Adventures in Auto-routing – The Big Spin Swap


It doesn’t matter which side of a resistor goes to which connection, and sometimes switching them around can make a board much easier to route. Same goes for equivalent IO pins on a microcontroller and lots of other cases. Here we see what a big difference a little pin swapping can make, and how to give the TopoR auto-router the freedom to swap your pins for you.

Why do clean schematics turn into ugly boards?

Here is the simplest Larson Scanner I could think up…

2018-02-04 23_36_51-Schematics.pngSo clean and simple and zen. Alas, when I go to lay out the board, things start to look complicated…

2018-02-05 00_10_33-PCB Layout.png

All those crisscrossed rat lines are because the pins on the schematic are organized logically by name/function, but the pins on the board layout are hopelessly tied to the reality of their locations on the physical part.

This is the nicest route I could find…

2018-02-05 00_15_59-PCB Layout.png

Such a mess compared to the clean lines of the schematic. If only there was some way to clean this up…

Swapping equivalent pins for easier routes

It turns out that all of the pins that I am using on the ATTINY25 are equivalent-it doesn’t matter which pin goes to which LED since I can compensate in software.

In this simple case it is visually obvious which pin should go to which LEDs for a nice route, so I could go back and manually hack up the schematic to get those ratlines untangled. But in a real design, not only would I not want to go back and re-do the schematic, I probably could not even figure out what the best pin assignments would be.

Pin swapping tells the software which groups of pins are equivalent so that it is free to use the best pin for each connection.

Using Pin Swap in the TopoR Autorouter

  1. Export the design in TopoR PCB format.2018-02-05 00_23_01-TopoR - [PCB Editor - simplelarson.fsx _].png
  2. Use a text editor to edit the FST file you just exported. For each group of pins that can be swapped, set the pinEqual to the same non-zero value.   Here I set all the GPIO pins of U1 (the ATTINY) to have the value 1.2018-02-05 00_25_33-_C__Users_passp_Desktop_simplelarson.fst - Notepad++.png
  3. Save the file and re-import it into TopoR.
  4. Pick Tools->Pin Swap to visually confirm you picked the right pins.2018-02-05 00_30_44-TopoR - [PCB Editor - simplelarson.fsx _].png
  5. Autoroute the board with the Pin Swap box checked and watch as the pins are magically connected exactly where they should be!2018-02-05 00_37_07-PCB Layout.png

Ahh! Isn’t that so much better?!

Note that TopoR’s pin swapping is not perfect. Here I offered to let it swap the two negative terminals of the battery, but it will not swap pins that are not connected to nets, so missed the opportunity to save that long flying trace to the rightmost pad…

2018-02-05 00_52_24-TopoR - [PCB Editor - simplelarson.fsx _].png

So clearly there is room for improvement, and I am still pining for an autorouter that never misses an easy opportunity while also deeply searching for the really hard ones. But until then, I will be happy with an imperfect one that overall does a better job than I could and saves me huge amounts of time.


Q: Dude, real men don’t let a machine do their job for them. I learned to route with tape and an exacto knife before you was born, and I would have used my intuitive  routing Fu to make that original schematic match your output board with a blindfold on while I was asleep. 

I picked a trivial example to show exactly what was going on – and even in this case I think it is better to make a clear schematic and then let the machine map that to the best physical layout. With more complicated boards I think it becomes impossible to predict which pins are going to end up being best to assign to which nets. Heck, you might not even know what the geography of the final board is going to be when you are making the schematic. Better to capture design intent in the schematic in a way that is easy to read and update, and let the machine do the busy work of translating that into a physical layout. Think of the autorouter as a compiler for your schematic… and do not try to outsmart the compiler!

Q: How much is TopoR paying you for these unabashed plugs?

They gave me a 20% discount on a licence, but I bought that licence because the software (and really the general idea of better-than-human autorouting) has saved me so many hours of busy work. It has even made some boards possible that I am pretty sure no human would have been able to make work.


Q: Can I do this with EagleCAD?

Yes, this same procedure should work fine with Eagle, and Eagle even has a way to indicate equivalent pins when making  a new component. If your components have this set up right, you can automatically get some pin swapping without the hassle of the XML editing.

Q: But now how does my software know which mixed-up GPIO pin goes to what?

Yea, this sucks.

So far I’ve just been manually typing in the new pins into a header file. Maybe someone should write a little Python script to do this automatically. Really ideally you would have tools that could keep your hardware and software designs in sync with each other automatically and you’d deal with everything abstractly and never even think about which pins were connected to what. A boy can dream…

Q: Yea, yea – this auto-routing stuff is fine, but you don’t have any current limiting resistors on those LED, bro. The second you but a battery in this, the whole thing is going to BUST INTO FLAMES!

A: No current limited resistors are required. Article forthcoming.



  1. Julian Loiacono

    Thank you for continuing to explore the field of autorouting.

    Does TopoR avail the means to ensure that all swappable traces in a group be of the same length? This would make it extremely useful for routing high-speed parallel busses such as DDR.

    • bigjosh2

      They do have signal delay equalization functionality, but I’ve never used it so don’t know how it interacts with the pin swapping. Give it a try and report back your results!

  2. Arvid Jedlicka

    Great article but am wondering about pricing. The emerex site is not very forthcoming about pricing and as a hobbyist that is an important item. Any insight into “minimal costs”? I’m not expecting kikad pricing … i.e. free … but anything beyond low triple digits is also out of the question.


    • bigjosh2

      Yeah, their pricing should be more transparent and their buying experience is high friction.

      The quote I got for the 2 layer version was $800. It also seems like they have a free trial version, but I don’t know in what capacity it is limited. I think you probably have to email them to find out and to get it.

      All too bad because the product really is great and I think they would net way more money if they offered a easy way to download the free trial version, better pricing especially on the low end, and click-to-buy experience.

Leave a Reply