23
\$\begingroup\$

The circuit design software I have seen has the ability to automatically route traces etc. on a PCB.
But why doesn't this software have the ability to automatically place components on a PCB say to minimise total board size?
Is this just too complicated to be automated?

\$\endgroup\$
  • 8
    \$\begingroup\$ Autorouters should be able to optimally place components based on constraints (i.e. "button must go here", "LED can be anywhere in this area"). They should also be able to select the optimal pins to use on parts that have lots of equivalent pins (i.e. "use any io pin that has PWM"). Unfortunately, I have never seen one that does either of these functions. Maybe someday. \$\endgroup\$ – bigjosh Apr 25 '15 at 21:40
  • 7
    \$\begingroup\$ placement (and orientation, gate swapping, pin swapping) is really, really important. It is the most important thing for getting good routing. I think a smart autoplacer should start from the schematic placement, unless the schematic is one of those modern "boxes surrounded by netlists" abominations. \$\endgroup\$ – markrages Apr 25 '15 at 21:44
  • 2
    \$\begingroup\$ coming from a background thats not circuit design, it seems to me that the rats nest should be enough to layout all the components optimally, perhaps to some constraints. Are most real circuits designed more manually than this? \$\endgroup\$ – Adam Apr 25 '15 at 21:50
  • 3
    \$\begingroup\$ In short, optimally laying out components - even without all the considerations that come from it being an actual, non-ideal circuit - is a very difficult CS problem. In fact, it's an instance of the Traveling Salesman Problem, and as such an optimal solution is infeasible. \$\endgroup\$ – Nick Johnson Apr 25 '15 at 22:13
  • 2
    \$\begingroup\$ @Gregd'Eon I wonder the same. Surely with more work auto-placers can understand the roles of decoupling caps, and simulate circuit noise etc \$\endgroup\$ – Adam Apr 25 '15 at 23:22
19
\$\begingroup\$

I have been designing some PCBs recently and I would suggest you NOT to use auto-placer or auto-router for your final product. (Proteus has auto placer.)

First of all - Your software is as intelligent as an earthworm when it comes to auto placement or auto routing. In other words, it's dumb as a potato.

Auto routing would not know which placement will get you a better trace pattern which will enable you not only to make an efficient design but also to minimize noise in the circuit. Similarly auto routing doesn't know that shifting a component slightly to the left or right would enable you to route a track in a better way. These tools will just give you a design which is correct according to the circuit. But when it comes to real world performance, things are different.
For example:

  • Decoupling capacitors should be physically close to the IC.
  • There should be loops of least enclosed area.
  • Ground plane should be as solid as possible.
  • No interfering signals should be close to your crystal oscillator etc.

Your software won't respect these concepts because these are not mentioned in your schematic. You will know only when you have got the PCB manufactured and it doesn't work as expected all the time. I am not saying it won't work. It might work, for 90% of times but you have to take that 10% into consideration too.

My suggestions is that you should learn some PCB designing concepts and try placing and routing on your own. You can always post your schematic and board layout in forums and experts will give you their opinion/suggestions.

\$\endgroup\$
  • 5
    \$\begingroup\$ +1 for the earthworm and the potato. Every time I used auto placer and autorouter, I had done the critical bits and left it the easy bit but even that was too much to ask: 60% of the board was placed and routed after the final pass. Better off doing everything ourselves, except perhaps for huge requirements designs with plenty of free space. \$\endgroup\$ – Mister Mystère Apr 25 '15 at 23:53
  • 1
    \$\begingroup\$ @Mister - Yeah you are right. Even I use auto router every now and then to get an idea for the routing and I finish off the critical sections. However I am using Eagle these days and it doesn't have auto placer. \$\endgroup\$ – Whiskeyjack Apr 26 '15 at 10:27
  • 1
    \$\begingroup\$ Typo in my comment above: "for huge LOW* requirements designs". Obviously, a high frequency digital frequency won't perform well with autorouting and autoplacing... \$\endgroup\$ – Mister Mystère Apr 26 '15 at 11:05
  • 1
    \$\begingroup\$ I do not see any theoretical reason why an auto-router could not take into account all of the above mentioned constraints and best practices when auto-placing parts. In fact, an ideal auto-router should be able to find the optimal placement that meets these goals better than a human can. It is a hard problem to be sure, but not impossible and I'd bet that soon we will start to see cloud-based auto-routers with auto-placers who can beat even the best humans. \$\endgroup\$ – bigjosh Apr 28 '15 at 21:56
  • 1
    \$\begingroup\$ @bigjosh - Your comment makes lots of sense. Correct routing and placement has a few guidelines which if broken down to simple logic, should enable computers to out-perform a human. All that will be left is maybe trillions of calculations - checking thousands of fully routed boards and figuring out the optimum solution. With cloud based systems, that shouldn't be too hard. Let's hope some open source project starts soon to make this a reality. It might be better than humans in a way that humans don't really go for multiple iterations once they have found a working solution - at least I don't. \$\endgroup\$ – Whiskeyjack May 23 '16 at 5:28
13
\$\begingroup\$

My router has a placer and support for "rooms". That let's you draw areas and assign parts to "rooms" from the schematic. The auto placer will group them together in the room the part is assigned to. Pretty sure it has support for this connector should go to this location too. There's also a tool that can do automatic decoupling placement and part selection/optimization based on simulation results. It's not cheap though :) but it does work.

The auto placer can save you a little time by placing everything together like that. But I still prefer cross probing the schematic to the layout in place mode.

Just like the auto router you get out what you put in in terms of constraints and how well you can use it. If you just try to use your auto router without constraining it properly it just routes everywhere. When set up properly we use it to correctly route large matched length DDR sections. On much larger and denser boards it's almost a necessity, and certainly a requirement for a layout services shop that needs the speed. However these things might not be worth it for someone doing only a few small boards a year.

\$\endgroup\$
  • 4
    \$\begingroup\$ What's your CAD package? \$\endgroup\$ – Mister Mystère Apr 25 '15 at 23:55
  • 5
    \$\begingroup\$ The high end version of Allegro, the decoupling is from Sigrity now owned by cadence. I like pads too. That new path based auto router thats supposed to look like hand routing looks interesting. \$\endgroup\$ – Some Hardware Guy Apr 26 '15 at 0:01
  • \$\begingroup\$ I had a hunch this might be Cadence. I used it for an introduction to IC design, it is indeed an excellent package and I do believe its autorouter and autoplacer might just be efficient if the constraints are correctly formulated (which comes down to experience/training). \$\endgroup\$ – Mister Mystère Apr 26 '15 at 0:05
  • \$\begingroup\$ Well said. Placing parts and routing isn't impossible, it's just much harder and fuzzier than schematic capture. First of all, the circuit diagram is far short of a complete input to auto-place parts. Regular PCB packages are designed for wiring, not auto-placement. \$\endgroup\$ – tomnexus Apr 26 '15 at 4:55
12
\$\begingroup\$

One thing you're not considering is that a schematic does not contain enough information to lay out a board properly.

Basically, the PCB layout requires consideration and accommodation for a few dozen layout requirements per part, none of which are codified in the schematic. Consider just the bypass capacitors. To have an automated system properly place the bypass capacitor for each component, you'd need to have some additional directives on the schematic that dictate to the autorouter that the trace between the two nodes must be below a certain length.
Presumably, you'd then need further directives to encode the priority of length minimization for various nets, something to dictate differential pairs/controlled impedance, guard traces (if needed), etc...
Basically, there are a lot of additional variables that drive the placement that are usually not encoded at all in schematic/ratsnest documents.

Furthermore, even if you assume that you have all of the above design constraints, the sheer size of the problem space for a common layout is enormous. It's the equivalent of trying to solve a equation with thousands of inputs, where every input has a different, non-linear effect on all the others. Effectively, the problem is completely intractable from a brute-force perspective. Any solution must therefore involve some sort of heuristic mechanism, which has it's own complexities.


Realistically, the primary reason there aren't at least better autorouters is that there's just no market. The EDA market is comparatively small in comparison to many other niche, special purpose software markets, and even the best autorouter ever won't even approach a real layout by an actual human.

When in the midst of a particularly boring layout, I usually have some fantasies of trying to design my own autorouter, by doing something with vector fields and simulated annealing, but even that would only approach a local optimum, rather then a general optimum layout.

\$\endgroup\$
10
\$\begingroup\$

Back in 1974-1975 I worked in the Design Automation department at Honeywell. The problem hasn't changed since then:

  1. It's not computationally feasible to optimize. Like most global optimization problems, it's NP-Complete, meaning the complexity of the computation grows horribly quickly. Since you can't wait around for a trillion years (or worse), we can regard the optimal solution as being impossible to find.
  2. It's unclear to the program just what you want to optimize. Logical grouping according to your model of the circuit organization? Trace length? Board area? Parasitic coupling? Propagation delay? Thermal dissipation (max temp)? Thermal bleed from higher-power sections to temperature-sensitive components? RF emission? Noise? Mechanical properties (for example, placing more massive components near the mechanical supports? Service characteristics, like not putting on-board connectors closer together than human fingers can manage? External constraints, like connector locations, or fitting within the available space (no conflicts with cases, fans, etc.)

There are AI-based approaches to dealing with problems like this. However, at some point, it is easier for the designer to just try things, and get feedback from the software as to the design criteria he's interested in. Telling AI software everything you know can be an endless, thankless task. Ultimately, the software has to satisfy you, the designer, and your set of tradeoffs.

The best way for this to work, then, is to view it as a collaboration between designer and software, with the designer making the final decisions. The software can provide information about the properties, and can suggest ways to improve a property of interest, and help explore the consequences of a change.

But I predict we will never, ever, see fully-automated layout -- so long as we have humans looking at and caring about the result.

\$\endgroup\$
  • \$\begingroup\$ So much for the Singularity... \$\endgroup\$ – Peter Mortensen Apr 26 '15 at 20:56
  • \$\begingroup\$ @PeterMortensen Human opinions won't matter after the Singularity. \$\endgroup\$ – Spehro Pefhany Apr 27 '15 at 15:29
  • 1
    \$\begingroup\$ I think point 2 is really the only relevant part of the answer. There are many algorithms that can very quickly solve NP-complete problems, with significant problem sizes, to a "good enough" degree with a very acceptable time cost, good enough often being within 2-3% of optimal. \$\endgroup\$ – whatsisname Apr 27 '15 at 16:18
  • \$\begingroup\$ That's a good point about "good enough"! Though to be completely technically accurate, we should carefully qualify the word "solve" (as you did). The cost in CPU and storage WAS a huge problem back then, however. But even though the problem sizes have grown, our computational capacity has grown even more. \$\endgroup\$ – Bob Kerns Nov 25 '15 at 21:59
9
\$\begingroup\$

My software has a placer. I ran it one time just to see what would happen. It went rip roaring through the board, and got all of the components on it. When I looked at it, parts were EVERYWHERE. The IC was in one corner, and its decoupling cap was in the other. The critical path zig-zagged back and forth across the board.

My point here is placement is hardest part of the layout to get right. First there are the mechanical constraints. The ME/industrial designer wants your connector/switch/pot/LED/whatever other external interfacing component to come off the board at a certain spot. Some components may be too tall to be in certain areas inside the enclosure. There may be parts of the circuit that need to keep a certain clearance for isolation.

Software can be configured to deal with some of these factors, but it will never do as good a job, or be able to visually see problems the way a human can. In a perfect world, if you get placement right, do power, ground, and critical path routing, a quick pass of the autorouter should be able to finish the layout off.

\$\endgroup\$
  • \$\begingroup\$ I like this answer, though it still seems to an extent that the software isnt up to the job it should be. \$\endgroup\$ – Adam Apr 25 '15 at 21:58
  • 6
    \$\begingroup\$ @Adam As you get more experience, you'll understand better. The placement process is incredibly complex, and a rat's nest only tells part of the story. Take decoupling caps for example, how is the placer supposed to know where to put those? As far as it's concern, those caps can all be placed together in some arbitrary location. \$\endgroup\$ – Matt Young Apr 25 '15 at 22:11
  • 2
    \$\begingroup\$ Distance constraints seem like a feasible option for that. \$\endgroup\$ – Tim Seguine Apr 27 '15 at 10:51
  • \$\begingroup\$ What is the name of your software? \$\endgroup\$ – Daniele Testa Oct 16 '18 at 4:24
2
\$\begingroup\$

I have used auto-placers before, and they are indeed as dumb as a pile of rocks. About the only thing you can sanely use them for is for untangling a pile of footprints that all were imported into your board at the same place on it; anything else is simply too much to ask.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.