I mean hey, an autorouter takes time and effort to develop and maintain, we don’t have that, we are mostly volunteers doing this in our free time.
If you do have money, you are more than free to buy into “professional software” to pay for the time they spent to develop and maintain the router if the feature is so critical to you personally.
Otherwise
We’ll accept contributions if you want to break out a C++ IDE and get to work implementing one.
It seems to me that many with an opinion have not tried both an Auto-Router and the PNS-Router in KiCad; and I have.
The Auto-Router will FAIL every time that a change can be made by moving connections external to the PCB. It simply can not “see” what can/cannot be plugged into the board.
Some devices are SOFTWARE controlled. How coud an Auto-Router possibly know that any pin could potentially be some/any other pin?
The schematic pin assignments were done AFTER it was done during physical PCB Layout:
Layout done first, schematic drawn second, and firmware developed third. Good luck getting an Auto-Router to also write the firmware.
I think you have a valid point. I did not read this reply before making my prior one.
With software controlled devices, the firmware can determine what the pin is responsible for doing.
I love the PNS router, it gets better and better.
I have used FreeRouting and had so-so results. I have also spent a lot of time manually correcting someone elses autorouted board, with terrible critical track placement, a result of bad choices in component placement.
You, and a couple/few others, were not part of the “…seems to me that many with an opinion…” that I was attempting to mention without coveying any insult.
lolno
Indeed. KiCad-nightly V5.99 has the ability to drag a footprint while keeping tracks attached. This is not a direct extension to the Push 'n Shove algorithm, but it does make it a lot quicker to correct small mistakes in footprint placement.
I’m trying to imagine what it would be if the Push 'n Shove router could push aside footprints while routing another track. Such as, you place a few footprints in the middle of your PCB and start routing. Then add a few more footprints and route those too, and it grows until your PCB is fullly populated and routed. Feels like a weird idea.
Good luck you have no idea
Do you have a workflow to do this?
I don’t regularly use autorouting, but I would love to test altiums autorouter with my kicad projets.
Autorouting doesn’t have to be the full board. I’d like to use it to route a group of signals. For example, let’s say I select a SPI bus or I2C bus and then, I can draw the path I want the signals to follow and the autorouter does the “fine” work. Or it can be a DRAM lane (DQs, DQS, Clk).
Mentor has something like this they call sketch routing and it works surprisingly well: https://www.youtube.com/watch?v=L-cTA1BQ8iM
https://www.youtube.com/watch?v=4rfGa7eUM0w
There was a comment about about pin swaps/changes and across boards. Commercial CAD tools now allow you to tag pins with info. and that can be used to do some of this within the board and between board optimizations. It is really involved to setup the component information, though.
Planned for v7
First: eelik has made a FAQ entry about autorouters, because almost anything about autorouters has already been written (multiple times) on this forum.
The “Sketch Routing” or similar that Harjit refers to has been mentioned more thoroughly in the “tensorflow” link that Eelik mentions.
Another way in which the Interactive router could be extended is with a shortcut key. You start routing from a pad, and when you hit the shortcut key it finishes that track to the closest connection of that net at that moment. This lets you guide KiCad though the difficult parts, and let KiCad do the more tedious parts.
This forum has 9000+ registered users, and a lot of them can write down ideas quicker then a software developer can implement. And there are just a few active developers of KiCad.
As a professional engineer who has been doing PCB layout for 30 years, let me tell you that neither I nor any of my colleagues use autorouters. Because they make a mess of simple layouts and usually fail to complete and make a mess of complex layouts. In the end its faster to route by hand than clean up after the autorouter.
There is simply to much information that is not captured in a schematic, and there are often competing requirements in a circuit. First example that comes to mind is a switching node that needs to be big to dissipate heat from a transistor, but at the same time needs to be small to prevent EMC issues. How do you tell software where the compromise is?
There are a few very specific situations where autorouters can be useful, such as routing wide high-speed busses, where the problem is well defined, and thus easy to explain to a computer.
I have read here wise words about autorouters, and I too agree that they should not be the only tool to route tracks. But KiCad has several tools for fixing and cleaning boards. In my opinion they should not be needed. I often spend time tidying my boards with an other CAD SW, but I have not yet found an easy way to clean up myself my board with KiCad.
In short, like autoroute, board cleaning tools should not be needed.
Not sure what you understand under board cleaning.
For me it is for example - when routing I place tracks one next to other with defined minimal clearance. But close to end of design when I see there is some room around I want to separate long paralel tracks a little more. I appreciate KiCad has tools to let me do it.
There is a list under tool menu, like clean up tracks and Vias and so on.
CAD should not leave much to clean up, and manual cleaning should much easier than it is now.
Ah, removing track fragments. My limited experience of 5.99 is that the Push and Shove makes far fewer of these now.
I don’t use the via part as I add a lot of extra vias for RF impedance purposes. We don’t get charged per via by the fabs these days
Same experience here.
KiCad used to make quite a lot of very short track segments to connect tracks. It looked like it was some connection between on-grid and off-grid tracks, and it I’m getting the feeling these appear a lot less in KiCad-nightly V5.99. And when they appear (or are left over from a KiCad V5.1.x -> V5.99 conversion) I get the feeling they are easier to clean up. Cleanup was sort of mandatory. In itself these small segments do not create faults and seem harmles, but they can make it more difficult for the Push & Shove algorithm to work properly. Sometimes they got cleaned up by shoving a via into a track so it gets moved a bit by the P&S algorithm, and this also seems to work better now.
And **PCB Editor / Tools / Cleanup Tracks and Via’s also has more options.
A screenshot from KiCad V5.1.x Pcbnew / Edit / Cleanup Tracks and Via’s
And a screenshot from KiCad-nightly V5.99" PCB editor / Tools / Cleanup Tracks and Via’s (it has moved)
You can also click on the items which KiCad can clean up and then the PCB pans to that location, so you can get a pretty good Idea of what KiCad will do.
Isn’t “tacks connecting different nets” a DRC error?
The other items are not DRC errors
Yes, that is a DRC violation.
It can occur for example during a box move operation. If then you’re left with some overlapping tracks and nets this can clean it up and you have no more DRC violations.