KLayout / klayout

KLayout Main Sources
http://www.klayout.org
GNU General Public License v3.0
808 stars 206 forks source link

DRC input "METAL (17/0)" filter does not work #1887

Closed Fusion86 closed 4 weeks ago

Fusion86 commented 1 month ago

If I read the docs correctly then these two statements should produce the same result. However, the second one throws an error.

active = input(RBA::LayerInfo::new(43, 1, "active"))
active = input("active (43/1)")

image

This code is inside an LVS macro, but as far as I understand this code is the same as what the DRC engine runs? Could also be that this is intentional behavior, but then the docs might be wrong?

It works fine if you only specify the layer name without the space+numbers (set inside 'Edit Layer Specification' which is somehow different from the right-click->Rename name?)

klayoutmatthias commented 1 month ago

You're right. Thanks for pointing that out. The documentation was not updated when introducing multi-layer inputs.

The string-only versions provide filters that can collect multiple layout layers into one DRC layer, e.g.

# combines all datatypes of layer 1 in one DRC layer
l1 = input("1/*") 
# combines layer 1/0 and 10/0
l1_and_10 = input("1/0", "10/0")

So your case would be:

active = input("active", "43/1")

However, my proposal is to use layer/datatypes only if you're working with GDS or OASIS. In GDS there is no layer name at all and OASIS is weird - the name can refer to multiple layers or not be present at all. The only reliable layer coordinate is layer/datatype.

Layer names are provided mainly for formats that only use named layers, such as CIF and DXF.

Matthias