The challenge is inputting this information to the autorouter. The auto router has to be told which are the critical tracks, which must be kept as a pair and length matched etc. Some of the common autorouters lack the control to do this. The good autorouters that can do this well are expensive.
Fair point, of course. I guess my view goes more with the potential for what autorouters could do in the (near?) future. Techniques and ideas on how to do autorouting and how to efficiently collect important information from the user could (should?) dramatically improve over time. Similarly for how to integrate other technologies such as EM-simulation-in-the-workflow, AI / deep learning type of approaches, etc.
im sure it will get there at some point but right now the two ends of the spectrum are
- Someone new to PCB layout uses auto-routing and get a shocking design
- Someone with experience spends soo much time fully constraining the (top of the line) algorithm that they would have had it placed and layed out in a fraction of the time
This gulf has to shrink considerably for it to be taken seriously
There is also the following problem. Good autorouter is a very complex piece of software that needs large teams working on it and large investments. It only makes financial sense to develop it with large electronics companies as target clientele. I dont see it trickling down to EE hobbyist or small fish firms because they frankly don’t have the kind of projects that benefit from autorouters. And amateurs wouldn’t even use that autorouter if given for free because they don’t want an autorouter, they want a magic stick.
In fact, this involves two issues:
- Auxiliary routing
- Automatic routing
For auxiliary routing , it does not need to consider rules, just simply avoid obstacles and connect a few endpoints.
However, automatic routing involves many necessary rules. In a simple PCB, the cost of pre-preparation will be far greater than using manual routing.
So I think everyone may not discuss the same thing here.
I think that regarding to parity bit calculation the C language is to blame, not the compiler. If in C there were parity bit operator it would be obvious to use it and compiler would certainly know how to translate it into assembler.
In our RS485 bus (up to 50 devices) anyone can start transmitting when it needs. Microprocessor UARTs don’t give you information that at that moment no one other just started to transmit so in parallel to UART the other part of interrupted driven code is looking at RXD line.
I can imagine, even I have never written a code in assembler (even the book I mentioned here:
was full of assembler examples).
I have only written (around 1990) an assembler itself and for 8051 my brother was using only my assembler. I used 32 bit numbers for internal calculations and my brother used it to calculate RS232 speed based on quartz frequency. He got overflow in that in other assembler he could use (they used 16 bit numbers).
I have never used auto router but when I think how to tell it what is needed I always think of VCC lines that I want to be wider than the standard, but only where the current flows. VCC does not need to be 40 mils path to 47k resistor suspending any input. I think that defining how to describe it will be complicated and even if it will be done then time spend on entering what have to be connected with 40 mils and what can, but need not, and that even microprocessor VCC pins I want to be routed by 40 mils but the connection itself may already be like its pads, and if entering with 40 mils track under TQFP is not possible then narrowing down to 30 mils is acceptable (but only for a short distance).
I think that in time needed to formally write all these restrictions I will just route it myself. Specially that thanks to KiCad Interactive router is really good it takes me only about 10% of time spend on PCB design.
Until someone will construct perfect AI which will be able to learn the same way as designers learn and no more software will be needed to write. AI "will watch’ some thousand of perfectly designed PCBs, will ask some questions to their designers and ‘done’ - it will know how to do it
The AI would have to understand the circuit. I think at that point you have just reached the Singularity and the human race become obsolete
I drop out assembler when I realised the C compiler made better code than me.
I drop out the autorouter even sooner, when I verified that I made better routing than the autorouter.
I must say that maybe I would never have started my first board without an autorouter. It was OrCad those days. The routing was auful but il let me know it was “doable”.
I admit that there are circuits that are very critical in some regions, like RF designs, DC/DC etc. but even then you can place key parts properly, maybe lock some tracks, then autorouter has almost no other way than placing remaining tracks also properly, or at least quite descent. I’ve just finished one board using auto router, one sided board, 95% of tracks were made automatically. I had to correct some DRC errors only and change placement over and over, remap some pins on MCU, look through power tracks if they don’t go around the board etc., but even then it would cause zero problems in my case. The worst problem was to fix issues with power supply tracks, Vcc, GND crossing itself all over the board , supply for analog and digital part of MCU, that would be totally no problem on two sided board, but that one is one sided, I wanted to have it done no time at home Time to design that board was like 1-2 working day. But what do I know, I’ve only made a few PCBs successfully 100% this way
I think this forum is mainly for hobbyists, and those using professional software are using an auto router anyway, they only don’t talk about it. The difference is that it works much better than in free software.
So you didn’t use it but you already know it’s so bad ? Intresting. In case you have mentioned auto route tracks with Free routing or Topor normally and then edit tracks width, simple as that. Or get Altium and set many options there are, to make it work , but then you don’t need Kicad. You might be right, preparing rules in Altium might be time consuming for simple boards, but for bigger it pays of for sure. In Frerouting and Topor there are not that many options.
I’m probably in a similar situation as Piotr. I tried an autorouter a few times some 30 odd years ago, and cleaning up the mess was more work then laying out the PCB manually in the first place. So you form a first opinion, based on your own experience, and it feels like you’ve wasted a day or two of your time.
Then, over the years you hear and read lots of comments of people with similar opinions.
Doing it manually also has the advantage that you see all connections once again, and I’ve caught errors in the schematic several times in this way.
But I do not make many PCB’s, and the PCB’s I do make are relatively simple, so there is no need to spend much time on learning an autorouter. If a (somewhat decent) autorouter was integrated in KiCad, I would give it a try, but it’s not high on my priority list.
I also know there are people who make big & complex PCB’s and who are pretty much dependent on an Autorouter doing it’s job properly. For the last 10 years or so the trend seems to be to go somewhere in between. A way of “guided routing” where an engineer uses his experience to give global paths of where to lay tracks, and the autorouter filling in the details.
Below is a PCB I’ve designed some time ago, but never manufactured. It is a simple (50mm*50mm) STM32F103C8T6 development board with maybe a strange set of rules.
- It’s only 2 layer.
- It’s pretty dense. Footprints on both top & bottom. Big 1206 resistors because I have plenty of them.
- Still a quite decent (although stitched together) GND plane.
- “Star GND” for the decoupling caps of the STM32, because of it’s ADC. (I could not separate the analog part further.)
- Optimized layout for the TPS54331, according to its application note.
- Ridiculous big old fashioned crystal. I may change that…
- Made for hand-soldering, so I don’t care about via’s in pads.
- Spark gaps, TVS & PPTC’s for reliability (24Vdc on RS485…)
- Different connector options. RJ45 or big Phoenix pitch 5.08mm for the Power & Data.
- Small experimental area to add for example some kind of sensor.
At the moment it passes DRC. I’m curious how far you’ll get if you delete all tracks from this design and then run it through an autorouter. Are you willing to give this a try?
I recommend to not mess with the footprint placement. All the high stuff is on the front, the back has it’s highest parts (TVS diodes) spaced as widely as plausible to act as “feet”. SMPS is close to TI’s recommended layout, and most importantly, The PCB can (and is) routed properly with this footprint placement.
I had a short peek at the topor website: https://www.eremex.com/products/topor/ and they apparently do not bother to state which operating systems it runs on, so I assume it’s windows only, which means it’s useless for me.
2021-09-04_mumar_base_stm32.zip (171.6 KB)
I design typically few simple boards per year (microcontroller + some inputs and outputs). May be because of it in my opinion auto router is not useful (everyone sees from their own point of view).
In a direct response to rich55’s original post:
A lot of excellent answers and reasoning has already been given.
From info I gleaned from this forum and the developers communication on gitlab there are both much more urgent issues, and there simply are not enough developers for KiCad to develop a complete Autorouter. A full autorouter needs quite a lot of sophistication before it becomes really useful, and in the mean time it would absorb lots and lots of development hours without anything to show for it.
The Interactive router on the other hand is already quite good, and it is already implemented in KiCad. It can also be improved in many ways and in small steps, and that is considered a better use of development hours for KiCad.
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.