PCB Auto-Place Components by Room

Modular Schematics might benefit modular board layout if the “Room” concept is passed through for both manual and auto-layout. This picture shows “schematic rooms” in Blue with their Text Room Title.

What brought this up is I tried to use PCB Editor Place->Auto-Place Footprints->Place Selected Footprints and was unsettled when it scattered parts all over the board, particularly interface parts bridging “rooms” in my original schematic design.

I found an earlier thread on this subject Auto-place components where they appear in the schematic which discussed one solution of placing each room on a separate hierarchical page. This would obfuscate the ability to understand the whole system with over-compartmentalization of the design, similar to trying to understand a design by just inspecting the BOM. I thought the idea of using schematic placement information as a starting point for PCB placement to have invaluable merit for relative connectivity information. The information is there, why not use it to optimize the “start” point for the placement process step?

What would be more useful to me is if I could constrain part location to room physical boundaries on the PCB for this Auto-placement activity by Room Name/ID, similar to what I’ve done in the schematic. For some “interface parts” the physical placement rooms might be allowed to overlap.

I read the manual for this component placement function and the words describe the type of feature I need to reduce effort/increase productivity, but there is no way to constrain the focus of the tool other than “Parts off board” and “Selected parts”.

On larger schematics, I tend to categorize smaller sections as “Rooms”. In decades past each of these rooms might have been a discrete schematic page where things like switching power supply components had their own page for a design using discrete components. Today, parts are more integrated/complex, and more of the design can fit on one page.

Using newer more modular approaches to design much of the switcher is now contained in an IC package and a handful of external components are needed, so there is no need for a separate schematic page. With this kind of design approach, several “pages” can be consolidated into a schematic “Room” on the same page with only a few connections connecting multiple rooms. I.e. a few signal or power lines like analog input, I2C or SPI bus, a few DIO’s, or an assortment of custom signal lines, etc. These signals can use global labels which allow for easy movement of sections to other pages on a larger hierarchial design, simple or complex.

Layout effort, whether manual or automated can be reduced if room information can be passed along to the next design stage in the form of a “Room”.

These rooms might have names like; “CPU”, “Supply”, “Display”, “wave shaping”, “protection”, “Do not populate”, and “Test Fixture”, all related to the design and various adaptations of the design.

1 Like

When you suggest constrain do you mean “constrain” or do you just mean initial layout. I feel like doing that for initial layout would be incredible. Especially for situations where you may layout your room, itself in a way that will loosely mimic the physical layout. Overall, I think this would be a very cool feature.

Maybe give the user a choice of either a “hard” constrain, a “weighted” constrain, or just a “starting” constraint for an algorithm that might make modifications depending on what works best for the room. Or if the algorithm works well enough, give it a free license to do the whole board. If you can control the algorithm you may be able to find a set of conditions that works best for your design style.

I mention design style because I have seen some schematics which closely resemble the board layout and make little sense when you’re trying to decipher how the design operates. So depending on “style” some schematics will translate well, others not so much.

There are other factors in PCB layout that the current approach accommodates such as allowing a designer to fix locations of tall components, or hot components, in addition to fixing the mechanical location of interface connectors.

There are some good things here, and definitely room for improvement from the status quo.

I definitely agree there. The payoff for thinking about your layout earlier in the process for some designs is huge. Especially in situations with heavily repeated patterns.

You’ve articulated this need and issue, and possible solutions better than I have ever been able to. I hope this can get some traction.

1 Like

Interesting, good placement is the hard part of PCB design and something that the beginners asking about autorouting need to learn.
I have an open wishlist item to display the total rats nest distance as an aid to placement. Placing components by “room” should reduce the rats nest

To be clear, I’m not asking for end-to-end auto anything. I am asking for tools to assist and leverage my own skills and ability to reduce schedule.

For instance, I worked with another engineer to successfully apply a PCB auto-router to complete a medium size memory board which by hand would have taken over 3 weeks. All kinds of crazy things happened like the autorouter brought traces into the sides of card edge connector pads. We were able to stop this behavior using different ways to constrain the autorouter for the edge connector pins, forcing the router to attach to the pin at the right location(s).

It took a bit of work, but we were able to constrain the auto-router enough that the board had appropriate power busses in the right places and the routing looked sane to most of the other engineers. We still had to manually place and route bypass caps. This automation let us shrink 3 weeks of effort into 3 days leveraging our own skills and experience using heavy automation. We were actually able to deliver on time. Our manager loved us, and the VIP this was being done for had no clue what kind of miracle had happened the week prior to his visit.

KiCAD is an amazing tool, one I contributed small amounts of money toward. KiCAD is why I’m here sharing my experience, which is another form of payment toward a very good product. I am still working and my time is limited.

1 Like

There exists a plugin for that, https://github.com/ian-ross/kicad-plugins.

Yes, thank you. I saw this in the other post and plan to install and investigate probably later today (I’m in the PDT timezone, currently UTC-7). It looks promising for knocking a day or two off my PCB schedule. Good to bring this up in this thread.

I’m adding tools like this as I make my way through KiCAD on a current medium size project. The last "leveraging style tool I added was KiCost, and learned about KiBot which includes KiCost. All of these tools help accelerate the design process.

Oh, I didn’t notice the link in your initial longish post, sorry.

No, no, sorry didn’t mean that. I meant the link is in the post which started this thread, Auto-place components where they appear in the schematic (i.e. lightly buried)

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.