Get email delivery of the Cadence blog featured here
I don’t remember the first time I was asked this question. At its core, the question was one of finding not the minimum constraint value in the design, but instead the minimum ACTUAL spacing value for a given set of objects in the design.
As we all know, just because Constraint Manager says micro vias on M1 must be 20 um apart, this doesn’t mean that there IS a pair of vias placed this closely together. Perhaps the closest any two vias get to each other is 25 um. I am going to assume you haven’t violated the spacing rules and hopefully, none exist that are closer than 20 um apart.
Nevertheless, it can be very useful to understand what the closest items get to each other is. What if spacing is large enough you can have a higher manufacturing tolerance? Could you reduce the number of bond finger tiers if you were to re-space everything to true minimum clearance? There are many reasons why having this information available to you might be handy.
There is no “Minimum Spacing Report” in the tool. Nothing that will allow you to run a batch DRC pass and get back an HTML report listing every constraint in the system, its minimum in-design value, and the location and objects involved. That doesn’t mean this information isn’t readily available to you when you want it for a given constraint, though.
Before we get to measuring the gaps themselves, the first thing you will need is a way to select only those items you want to calculate the minimum gap between. For this, the Find by Query tool should be your best friend. The powerful ability to define characteristics that an object must match to be selected will allow you to configure searches for such objects as:
Blind/Buried vias with drill holes less than 10 um in diameter
Routing cline segments under 20 um width on layers M2 and M3
Signal bond fingers (not power/ground ring bonds) with more than one connected wire
Below, I’ve configured the query tool to find all the vias that use the padstack VIA_PAD and are on the VSS net:
Saving this query to disk will allow me to reuse it with any command from the Find panel in the main canvas. You can create as many saved queries as you want, with as many criteria as necessary, to find only the items you care about.
What you shouldn’t concern yourself with here, normally, are things like the XY location or the layer names of elements. Why? Because different designs will have different extents and different layer cross-sections. When computing minimum air gaps, you want to be able to select the area and layers to be searched – you might only want items under the die cage or near the package edge for one check, as an example. Leaving these criteria out allows you to better reuse the queries across many designs, which in turn makes you more efficient.
The next tool you will need is the min air gap calculator, available from the Display menu (right under the Measure entry):
As the name implies, this tool is designed to work like the measure command, but to find the closest points on a set of objects instead of between a pair of them. That means you have a few more options to help you out. Control for whether to consider only items on different nets (same net spacing requirements often not matching the regular spacing constraints) and to use your saved queries to select large swaths of database objects makes it ideal for this type of calculation.
Above, for my simple design, I’ve used the via query saved from step #1. I windowed the die cage area of my design to select the objects. Now, I can switch between the layers, seeing the gap on any layer I need to know the results for (don’t worry; you don’t need to select the objects again after you change the layer!).
Beyond just being able to compute the minimum gap, there is one other notable feature here. You can pick any layer for the spacing calculation to be performed on. If you are worried about soldermask opening spacing for your bond fingers or the minimum distance between component place bounds, just select the right object types in the find filter – or pick your saved query! – and set the layer. You’re all set!
Nope. It’s just that simple. If you use queries to control what items to be selected, then the minimum gap tool will give you more than a constraint report of minimum as-designed values could. Search in critical areas, ignore elements you aren’t worried about, and create a report of the specific values you seek.
Have an idea for making this better? Do you need a SKILL API to automate the output of a report specific to the key constraints for your designs? Let us know, so we can work together to make the design flow as efficient as possible!