Altium running slow? Here is one possible reason

Recently,I’ve been working on a design in Altium. Nothing that unusual or complicated, so I didn’t expect any troubles. I went through the standard steps of importing a dxf outline, creating board shape and placing parts.  And then halfway through routing I started getting some very annoying slowdowns. You’d touch a net to start routing a trace from it and cursor changes into a spinning “wait” circle and sits there for 30 seconds or more. In some cases I had  to stop Altium process and reopen it again. Not good when you have many nets to touch!

Many things were tried to see what’s causing this, all in vain:

  • Tried AD14 instead of AD13 I normally run
  • Rebooting my PC
  • Switching to a faster PC with more memory
  • Recreated PCB file from scratch
  • Removed components they seemed to be causing troubles, then re-added back

At that last step I noticed that the same parts were behaving just fine and not slowing things down if I left them outside board outline and tried running traces there. Aha, something to do with the board shape! I removed board shape, drew a basic rectangle instead and suddenly everything is back to normal. OK, I suppose I could just respect board outline manually until routing is done and then re-enable it for for final checks? It’s not ideal but better than nothing.

Restoring the shape and trying various areas of the board narrowed the search to several corners where my cursor would freeze as soon as I drag a trace there. Those areas also happen to be somewhat (3-5mm) near the curves on the board outlines, not even in the immediate vicinity mind you. Examining the outline closely, showed that while most of it was made out of the usual lines and curves, some areas consisted of a very large number of small overlapping segments:

Normal line

Normal line

Curved line with many fragments

Curved line with many fragments

Many is an understatement

Many is an understatement

Ok, so most likely when AD runs online DRC, it stumbles when handling these. If that’s the case, all we have to do is remove them from the keepout layer and see what happens. Simply selecting and removing each of these areas took a good 5 minutes each, further confirming the guilty party. At that stage, all formerly unusable areas suddenly started behaving normally and we are back in business.

Conclusion.

Next time your design slows down like mine- check those outlines.. In my design I plan on finishing the routing and then restoring the keepout outline for final DRC checks and polygon pour clipping. A better solution would be to redraw the outline to eliminate those multiple fragments or convert it automatically. If anybody knows a clean way to do that- feel free to leave a comment.

Thanks, and hope this saves somebody else a  bit of time!

5 thoughts on “Altium running slow? Here is one possible reason

  1. Another cause of slowness i’ve run into is setting the width rule on “connected copper” mode. For some designs this seems to slow the drc to a crawl *even if* you remove the width from the list of “rules to check”.

    Switching the rule to the check primitives individually mode seems to solve this problem. Of course you then need to remember to switch it back for the final DRC.

  2. Thank you for sharing this. Really usefull!
    Also, I`d like to add that these “overlapping” segments can occur in any layer. Mine for example was on top cooper layer.

  3. Fast forward to two and a half years later… and fast forward Altium version to a whopping 17… and… your valiant and patient debugging effort is still helping poor souls hit by this nasty lag that comes suddenly.

    I filed a bug report to Altium, I assume I’m not the first to do so.

    In my case, the lag was due to tens of duplicate, overlapping arc objects in signal layers. In each place, I added *one* arc manually, but at some later point (now), I look, and there are 25-50 arc objects instead of one in each place. Edit->Select->Select-in-region and delete of all these duplicate arcs gets rit of the lag.

    These duplicate objects also cause lags in other scenarios, not just interactive routing. After moving a trace connected to the duplicates, I got a 5-10 sec lag with “Analyzing NET…” in the status bar. At the time I worked around this lag by hiding the affected nets (View->Connections->Hide), but turns out this was all due to the duplicate objects.

    The question is when and why did these duplicate arc objects got added to the layout…

Leave a Reply

Your email address will not be published. Required fields are marked *