Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

DRC, layer references in operations, can names be used rather than layer/datatype pairs?

Reading the DRC Runsets documentation, I see the examples all use the "raw" layer specification (layer/datatype):

out-of-place size:

layer = input(1, 0)
layer2 = layer
layer = layer.sized(0.0)
layer.output(100, 0)
layer2.output(101, 0)

Now I have just gone and made a nice fat layertable (.lyp) that has all (188) layers named uniquely per (used) layer/datatype pair. This includes Tanner meta-layers which I am trying to stick with, in translating the Tanner DRC deck. I would like to use the same "human readable" names for layers, if this is supported. But the syntax for so-doing, I do not find (unless this here, shows it?):

method style:

layer.width(0.2).output("width violations")

function style:

w = width(layer, 0.2)
output(w, "width violations")

Question1: is output(100,0) the same as output("width violations") if the layer named "width violations" exists and is defined as 100/0@1?

Question 1b: is "width violations" a layer, or something else (like a report-section label)?

Question2: Has anybody here got interesting examples of runsets that work, and exercise "most of what DRC usually does"? Getting from textbook to runs-clean code, like?

Comments

  • Hi Jim,

    the variable names will be human-readable form, but "input" cannot take information from the .lyp. These are different domains (views vs. database).

    There may be a dirty trick to achieve this (basically, DRC has access to the layer views), but this will render the DRC useless for standalone execution.

    Question 1 is tricky - in general, layer matching happens first on numbers, then on name. If numbers are present, the names are ignored. So if the layout is GDS and every layer has a number, output("xyz") shouldn't match any original layer and should produce a new layer (not tested yet).

    output("xyz") is a report database layer if your output is sent to a report (use "report" statement in DRC script). Otherwise it's a database layer in the active layout.

    For an example, maybe you'd like to see this: https://github.com/klayoutmatthias/si4all. Real-world examples are unknown to me as all foundries keep their design manuals confidential and provide details only when signing a NDA. One cannot publish these DRC decks therefore.

    If you know a foundry with a different policy, let me know.

    Matthias

Sign In or Register to comment.