Great! Many thanks for the explanation, @Old_Grey !
I don’t know about the autorouter, because nobody really uses it.
Well, as part of ‘newly-installed-program testing’, I was curious to see what it does. The schematic is not very complex, and I placed the components on the PCB in an ‘easily connectable’ way, so it should not be too hard for an autorouter to do a decent job.
And it actually does. The resulting layout looks quite decent to me(*), that’s why I was quite shocked to see it - needlessly - violating the single layer constraint. (In my opinion, if an autorouter can route everything on one layer, it should anyway do this.)
*Disclaimer: I’m not an electrical engineer.
It was invented in the 70s to do boards with lots of regularly placed ICs where traces ran north south on one side and east west on the other. These days stuff isn’t placed regularly, so it doesn’t work very well.
These days you can also simplify a lot of formerly very complex layouts by using CPLDs and microcontrollers. Or place memory directly on top of the CPU (like e.g. the RasPI chips have it). It’s quite amazing.
This is what it did to your PCB
Hmm, looks like you manually locked some traces. So far, I never got a double connection between the same pins. In your layout I see quite a few of them.
You’ve found the bug in FZ.
And opened an issue for it (#3699).
You have to select the PCB, select single sided, select double sided, select single again, and keep repeating that until the part pins change colour. Then you have the true single sided and AR stays on the bottom.
Cool - Thanks for finding this!
One switch from single to double and back does the trick for me. And then it really stays on it.
Only until the next program start, however. Looks like the internal layers variable is not getting properly initialized from stored PCB data (maybe in panelizer.cpp, boardItem->prop("layers")
? - maybe I’ll have a look some time later this week).
Here is a vid of $9000 Altium that can’t do AR properly.
Like the guy (David Jones?) says: I would not let the AR do the complete layout for a complex board, but it can be very helpful to have connections between two or more components routed by it.
Especially with I/O or memory (e.g. RAM<->CPU) there is often quite a lot of rather mindless connection work. Why do everything by hand if a machine can do (at least a rough initial version of) the boring stuff? Then you have more time to focus on the fun parts.
Many thanks again for your help!