Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.
1 to 6 of 6
I just have a rough idea about the meaning of this rule, so I can just guess.
Maybe you want to try this:
poly = input(2)
metal = input(1)
# e1 = metal edges overlapping poly by less than 1µm
e1 = metal.overlap(poly, 1.0.um, projection).edges
# e2 = metal edges inside poly
e2 = (metal.edges & (metal & poly).edges)
# e3 = metal edges overlapping poly by more than 1µm
e3 = e2 - e1
# Checks 4µm rule
metal.edges.overlap(e3, 4.0.um).output("Metal width >= 4µm where Poly overlaps metal by more than 1µm")
# Check 3µm rule
(metal.edges - e3).width(3.0.um).output("Metal width >= 3µm otherwise")
All checks is designed to check "less" not "less or equal", so the overlap check should do what you're expecting: it will check width >= 4.0 and report an error on < 4.0 µm. Doesn't it?
If you really need to check the other way around, you an add or subtract a tiny value, preferably one database unit:
4.um - 1.dbu # a "little less" than 4 µm
1.um + 1.dbu # a "little more" than 1 µm
(one database unit is the smallest distance that can be represented by the design's resolution).
The options are documented with the "width" method. There should be a link from the other methods embedded in the text. At least it's working on the HTML documentation here for example.