Ah, the NONDEFAULT rule. This is a routing rule that is, well, not the default! It usually consists of double-wide or triple-wide metal, and at least double-wide spacing, but it can be whatever you like as long as it follows DRC rules (no violating the min or max metal widths, for example). NONDEFAULT rules are typically used to route clock nets or other sensitive nets. If you are very lucky, your tech LEF came with some NONDEFAULT rules already defined. But this is not usually the case. Those of us who have been around a while always dreaded the creation of NONDEFAULT rules -- it's not difficult, but it is tedious to write out a large tech LEF section by hand.Well, for some time now, EDI has had the ability to create NONDEFAULT rules for us! It's easy and fast. Here's how to do it:In the EDI 9.1 Menu, go to Edit -> Create Non Default Rule. You'll see the following form:
Name your NONDEFAULT rule something descriptive, and then choose an existing rule to start from. In most cases, all you'll have so far is the Default rule. That's a great starting point. With the default rule width and spacing numbers right in front of you, it's easy to enter values that are twice or three times as large for a double- or triple-wide rule.Now, the vias: the vias from the default rule (or whatever rule you chose as your starting point) will be listed. In most cases, it's fine to just use the default rule vias.Finally, decide if you want the NONDEFAULT rule to follow Hard Spacing. This means that violations of the NONDEFAULT rule spacing are considered and flagged as true violations. Without Hard Spacing turned on, the NONDEFAULT spacing is followed as much as possible, but if it needs to be broken to complete the route or follow other routing/spacing rules, then it's not considered a violation.When you click OK or Apply, the rule is created and exists in your design database. But here is the crucial part: we want to add this NONDEFAULT rule to our tech LEF. Let's say we named our NONDEFAULT rule "DblWide" and we'll output it to a temporary file called tmp.lef. At the EDI prompt, type:
Now, you can cut and paste the NONDEFAULT portion of tmp.lef into your tech LEF. (The section you need starts with "NONDEFAULTRULE DblWide" and ends with "END DblWide" in this example.)Much easier than typing the whole thing in by hand!
Would you like to be notified when the next Five-Minute Tutorial comes out? Subscribe to the Digital Implementation blog!
Thanks,. worth & Good info.
thanks for the info
Hi Patrice, I'll post this also in the forum thread where Bob already replied, but just to close the loop for anyone following here: check the LEF manual for the NONDEFAULT rule section. There are some things you can do that may achieve what you want, specifically the MINCUTS and/or USEVIARULE statements.
In case we also want "array" of vias for interconnecting those created wider wires, do we have to define them in the LEF or is there a way to tell Encounter to create vias array (like its does automatically for power/gnd for exemple).
So far, I am ending up with the single default vias with my big wires.
Thanks, Bob! Always a great reminder to look in the gift directory for helpful scripts. I do notice that this one does not add any SPACING values in the LEF. Maybe we can enhance that for the next release?
Great stuff Kari. I think this is very useful.
It reminds me to mention a related script we ship in the gifts directory:
It takes a user-defined width factor and writes the corresponding NDR. Like this:
Example: genXWidthNDR -width 1.2
Perhaps another avenue to pursue depending on the requirements at hand.