In the distant past, where I worked we made a lot of use
of the Diva DRC "get_texted" function. For example we put
device PCell name on text layer within the PCell, so every
instance had this "tag" and each device island could be
readily identified as to its intended content, by Boolean

xxxxn1_island = MinIs AND get_texted("xxxxn1", "text", "drawing")

(pay no attention to the syntax, I'm sure some brain cells
have died between then and now).

I took a look through the API function list and didn't see
anything that looked similar. What I want is a way to make
a geometry (new layerobject) based on a specific text
whose origin lies within the object extents, and has the
constrained layer
purpose and text-value that match the
argument. We also checked for islands with no such tag,
to enforce the scheme.

Has anyone found this, done this for DRC and device
recognition? In some technologies I have seen numerous
(say) NPN variants, which differ by details such as simple
or ring collector, simple or walled base, single or dual emitter,
single or dual base, and getting the right model and the
right rules-subset applied by geometric inspection and
logic alone would be difficult, and any knowledge of the
-intent-, ???

If there is such a facility I'd like to get a clean syntax example?


  • edited February 16

    Hi Jim,

    Yes, there is such a thing.

    In KLayout, currently there is no nice support for texts, but you can let DRC give you a layer with small markers (2x2 DBU) indicating the position of selected texts. You can use this layer with "interact" to emulate "get_texted":

    layer9 = input(9)
    # gives small markers on "VSS" texts.
    # NOTE: "texts" can be used on original layers only as texts are removed on layout processing
    layer9_VSS_texts = layer9.texts("VSS")
    # emulates "get_texted"
    layer9.interacting(layer9_VSS_texts).output(9999, 0)

    "texts" accepts glob-style wildcards (e.g. "V" will select all texts starting with upper-case "V", "A[0-9]" every texts starting with "A0" ... "A9", "{A,B}*" will select every text starting with "A" or "B").

    This scheme works both in deep and flat mode.


Sign In or Register to comment.