Skip to content

Comment on Melting KiCad

Comments

Nice but there is one feature I want more than this: automatic placement & routing.

I thought I wanted/needed this too when doing my first design. Having a few under my belt now, I firmly believe it would be more of a problem than not.

Automatic placement/routing would become a crutch that would prevent folks from learning what actually is necessary to design a half-decent PCB.

Folks that need auto-routing won't be aware/skilled enough to notice and fix problems before sending the design off to be fab'ed, and then will spend unnecessary amounts of time debugging a broken board only to learn what they should have before sending it off... or will grow frustrated and think the software sucks or something.

There's a lot more to PCB design than just connecting nets together, and skipping the step where you learn how to do it properly would be like refusing to learn to code and instead only want to use no-code UI widgets. It will bite you hard one day and you will lack the skillset to know why.

Besides that... auto-placement is really an impossible task, even for the "big guys" like Altium. The editor cannot possibly know what's inside the component's data sheet, or infer best practices etc. Things like this one particular switching boost converter chip requires a capacitor on the output no further than 0.2" away... etc. So any auto-placement or auto-route feature will be half-baked at it's best, even if done well.

I'm not an EE, but I've been dabbling recently. I wonder if it might be possible to set constraints on certain nets, like a rough FFT and current. Or even on specific pins--an IC could say, that it'd draw power with specific typical frequency characteristics, and capacitors could provide power with specific frequency characteristics.

Anyway, just thinking out loud. There's endless potentional issues with this sort of stuff, and lots of heuristics needed.

It definitely wouldn't be a shortcut tool, since all this stuff would need to be set up. It would help a lot with making rapid changes to designs, and it'd tie in very well with circuit design as code.

Most of the things you're talking about have never been measured for 99% of nets. I'm often building the board to make the measurement. So I kind of don't have that input for the auto-layout widget, even if I had the time to set it up.

Honestly, one of the biggest reasons autorouters aren't used is they take as long to set up as just routing it yourself, and the result is usually inferior. So setup time is crucial.

This approach also wouldn't help one bit with making changes if input data can get stale. And it can and will if system-level measurements are involved. Honestly, making changes to a known-good layout is actually really easy. It's greenfield layouts that are hard, or underdocumented ones, or designs previously done by psychotic morons (like past me!).

"Circuit design as code" is an idea that just doesn't work at the system level. We can't even write documentation for many systems. Expressing things precisely enough for a machine to repeat it is folly.

Auto-routing can be done (and has been done in some designers), but it never generates ideal routes. In low-speed trivial designs, not usually a big issue (ie. if you can make it work on a breadboard, it might work well enough even on a horribly routed board).

Auto-placement is really a problem though. Good PCB design is nearly 100% about placement before you even start routing, and requires a higher level understanding of the design to get right. The last thing you want on an even semi-non-trivial design is to have something start moving your components and traces around in a non-controlled way.

Part of the problem is your "Pros" don't need/want or use either feature, and your amateurs don't understand how to solve un-obvious (and obvious!) issues that the auto-placer/router might introduce until it's too late and the board has been fab'ed and money wasted.

Which means the folks making the design software don't really have a huge interest in making these features at all, or even improving them if they exist.

A designer can also pull neat tricks like reassigning FPGA pin assignments to make a board a lot easier to route to the other components. Auto place and route just won't have that kind of insight.

Automatic place and route on the board level is a neat problem to think about, but the practical usefulness is somewhat questionable. For 6U eurocard sized boards with sea of random MHz-ish SSI/MSI logic it makes some kind of sense, but who does that today. The board is either going to be so simple, that the placement and routing is obvious or so complex, that just even capturing all the constraints is more work than doing the layout mostly manually.

I was able to autoroute several years ago.

Does this work well yet for high speed and/or high current circuits, following good layout for ground bounce, etc?

Did yours require labelling traces as low, med, and high frequency?

I can't speak about how well it worked. I did not have to label traces. It just connected the stuff that was supposed to be together with traces.

For low-speed designs (think arduino and other similar hobby projects), auto-routing might work good enough, but auto-placement will be a disaster in all but the most trivial of board designs.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.