Get email delivery of the Cadence blog featured here
That title might be a touch misleading. We’re not here to talk about why to convert shapes between static and dynamic. Rather, I want to talk about why you should NOT be doing this. Every design has some conductor shapes in it (or at least a very large percentage of them). What style to use is a choice that will impact performance through your entire flow; let the shape’s purpose guide you.
I have seen many cases where a designer wants to prevent a dynamic shape from changing. Maybe the design has gone to manufacturing and, now, any change needs to be carefully vetted. You don’t want to change anything you don’t absolutely need to. It could be that you’re concerned with the performance of updates during your routing and feel a quick conversion to static shapes will get you better speed while working on routing.
Let’s look at a few I hear most often and some options for you to consider in your next design.
This is by far the most common reason I get. You don’t want the shape to change, to update or adapt to changes in the design. A static shape gives you this because it won’t change unless you ask it to. Seems like the perfect solution, right?
The flaw in this logic, as good as it sounds, is that if you are making changes that impact the shape – whether you are sliding a trace, dropping a via, or changing a spacing constraint value – then the shape needs to change. Indeed, a static shape will give a DRC marker so you know where the problem is. A dynamic shape will adapt immediately to clear to the element. The final is very similar. You have a violation that needs to be corrected.
Knowing that the shape must change, that leaves you deciding between a dynamic shape that adapts on the fly and a static shape that adapts only when you tell it to. If you allow the dynamic shape to remain, as you push and shove routing, you’ll see whether this will have an impact on the shape that you cannot work with. Maybe it will get too narrow and breaks into pieces. The shape could pour into an area under a critical high-speed signal. Is it not better to know this immediately as you make the routing change (so you can find an alternate solution!) than to make a slew of changes, update the shape once, and find out then that you need to undo all your work?
All this said, there ARE cases where you want to convert shapes to static. If the shape has no voids in it, like a bounding shape you’ve added to connect a set of ground plane vias together, and the only reason that it will change is if you change the via pattern, then a static shape IS the correct type to pick. If the via and shape pattern is one you use repeatedly in the design, consider taking things one step further and create a routing structure of the set of elements. Doing this lets you quickly place more instances across the design. Best of all, if you need to make a change, you can update the structure definition and push that to all the instances in seconds!
I also hear this one regularly. Cadence is continually working hard on shape update performance. Every hotfix of 17.2 and 17.4 today comes with performance improvements. They might not apply to a specific case you’re hitting – every case won’t be improved by every change, as we know – but the overall flow continues to speed up. Should you be worried about performance, there are two main ways that you can improve things.
First, look for dynamic shapes that really should be static. See our discussion point above. If the shape has no voids and isn’t supposed to have voids, then there is no reason for the tool to check it for void updates as the design changes.
Second, consider changing the shape update from smooth to either fast/rough or even to disabled. This will let the tool commit fewer resources to keep shapes artwork ready. Fast and rough modes will still give you a DRC clean shape that doesn’t worry about small shape alterations like rounding acute angles or adding all possible thermal ties. Disabled turns off real-time voiding entirely. If you’re doing something like auto-routing the design, disabled is a reasonable state to do this in. After all, the shape needs to flood the areas left AFTER the routing is completed. The shape adapts to the routing, not the other way around.
With static shapes, once the shape’s outer boundary is changed, like it being cut in to clear a pin near the edge, that change is permanent. If the pin is later moved or deleted, the shape will never return to the outline as you drew it originally. The boundary you drew, unlike the outline on the boundary class for a dynamic shape, is not retained.
This is a key difference between static and dynamic shapes. Understanding will help you decide what type of shape you need. It also helps to understand the problems, the dangers even, of converting a dynamic shape to a static shape.
When a dynamic shape is changed to static, its current auto-generated pieces are locked. Their outlines will never again be able to get back to the “ideal” outline you had drawn on the boundary class. That outline is gone as soon as you convert to static.
Likewise, if you convert a static shape to dynamic, you are NOT going back to the dynamic shape that you originally drew the first time. You are instead creating a dynamic shape – possibly even a set of shapes – each of which uses the static shape’s outline as a new ideal outline. This means that it will never be more than it is at this moment in time. No matter what you do to the shape above, it will never be the yellow rectangle on the outside again.