As we all know, autorouters usually do not work that well, and that probably is the reason why this feature was eventually removed from KiCAD.
One problem is that parts placement and routing are two processes that are intertwined and an autorouter usually has to deal with suboptimal parts placement from the beginning.
I have an idea for an autorouter routine that might work better. Unfortunately, I don’t know anything about programming, so I’ll drop my idea here for someone to pick it up.
Here are the steps for my routine:
- First you set the board outlines, all parts must not be placed inside the board outlines, yet.
- Second, you define the net properties.
- After that, you place the parts that need to have a certain location on the board, like connectors, buttons, LEDs etc.
- After that, you define an area which limits the space in which the autorouter is allowed to work. This feature is useful for boards with digital and analog circuitry, as you can make sure that the signals are separated. Or you can route the passives (and other parts) belonging to a certain IC easily, by defining an area for each IC.
- The next step is to move a part into the area defined in the last step. After the part was placed, the autorouter connects the pins of the newly placed part to the closest possible pins of the part or parts already placed. You can also place parts over existing traces, the trace will then be rerouted. On a 4±layer board, all power pins will be connected with a via close to the pad. On fast computers, you can activate a live preview of the routing.
- After having placed all parts close to an IC, you make the router area larger, so the router can connect the circuits of different ICs, and an even larger area allows for all pins to be connected to the parts that were placed in the beginning
This solution would have some advantages:
- You still have control over parts placement, while also already seeing the traces to decide whether the position of the part makes sense
- You save a lot of time, as most of the “obvious” connections are done in realtime
- By using areas for the autorouter, you can makes sure that specific requirements of the layout are met.
- You can probably use the code for the interactive router in some parts, as this is mostly an interactive router in push and shove mode with intelligent via placement and area limits, and it automatically connects the pins when you move the part into the defined area.