Autoroute? Is it coming? (Mod edit, short answer is not in the foreseeable future so nothing to see here. ;) )

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 :rofl: you have no idea :rofl:

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.

2 Likes

Planned for v7

3 Likes

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.

1 Like

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.

11 Likes

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
image

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.

I prefer to do the DRC check and manually fix each error. Moving rather than deleting is normally needed

If you click on the blue thing in front of the text line, then KiCad leaves those tracks alone during a cleanup cycle, and you can do it yourself in any manner that you see fit.
image

The interactive router in Shove mode also handles tracks with DRC violations better. and quite often it just routes a track around a pad if it got overlapped and you drag it with the interactive router. So I agree here, and in lots of situations fixing them manually is better. But sometimes simply deleting them and re-doing a section is easier, so the function is nice to have.
But with this function, you have no control over which of the two get removed. Sometimes it moves one track segment, sometimes it deletes both track segments that overlap, so you don’t have much control here.

In the earlier screenshot I also unchecked the Delete tracks fully inside pads The reason for this is that these short segments are often added when a track enters a pad from a 45 degree angle, and then the end of the slanted part is connected with with a small track segment to the center of the pad, and I do not want these deleted. I don’t even know why anyone would want to delete them.

When there are tracks unconnected at one end inside a pad, then the cleanup function also finds them:

just for reference, there is an interesting project:

Unfortunately development ran for a year and then dormant for a year.
Anyway, interesting as at least its not written in Java

1 Like

it would be nice if some of the devs could have a look at that project…
The-OpenROAD-Project seems a very active and sponsored project


… working on an autoroute with kicad could be a game changer also for kicad

As much as I have seen, when people talk about advanced electronics design and even “EDA software” they talk about chip design, and so it seems to be with OpenROAD, too. PCB design is the ugly stepchild left in the corner. No $1.5 billion for KiCad development.

EDIT: go to https://theopenroadproject.org/publications/ and find the paper “Open-Source EDA: If We Build It, Who Will Come?” and you’ll see what I mean.