User properties in object properties window

edited November 2009 in KLayout Support
Hi,

Is there some examples of how to use the user properties you can find in each object properties window?
have tried many things with no success. Basically a thing which can be vary interesting, is for example, to define say a key and a value, which cna be used as parameter for, for example setting the width of a ractangle.
Is it possible or does the user property relate to something else??

By the way: nice and powerful tool. i have to dig a bit into the RBA scripting, but seems very powerful.
Will you plan to have something like a DRC (a script interpreteur ala calibre will be very nice thing, but probably a lot of work)
Regards
J . cOllet

Comments

  • edited November -1

    Hi,

    The user properties are a generic concept provided by the OASIS and GDS format. It is possible to associate shapes with more or less arbitrary properties. Sometimes, these properties are used for example to annotate net names to geometrical objects. The user properties are not related to geometrical properties. In that respect, user properties and not equivalent to shape properties in SKILL for example.

    KLayout provides access to these properties so they can be edited as part of the shape specification but does make only little use of them itself. For example, KLayout can display shapes using a property filter - i.e. display only shapes with a certain net name.

    Regarding the DRC: parts of the functionality is already there (boolean, sizing), but the main features like width and spacing checks are missing yet. I have plans to provide them but before that I am going to provide a DRC report database infrastructure in the next release.

    Best regards,

    Matthias

  • edited November -1
    Hi Matthias,

    First of all, thanks for developing and supporting such a great tool. I like it very much and it is very useful in my daily CAD developer's work.

    Second, you mentioned in your post that "KLayout can display shapes using a property filter". It's a very useful feature I wasn't aware of. Can you please elaborate how I can do it?

    Thanks again,
    Alex
  • edited April 2010

    Hi Alex (H. I assume :-)),

    A brief description can be found here: Transforming views and property selectors.

    The idea is basically to have a "source specification" which tells where the layer's geometrical objects are taken from. The source specification can be edited using the "Select Source" function from the layer list's context menu.

    Usually, the layer source is a GDS layer/datatype specification together with a specification for the index of the layout (if multiple layouts are loaded into the view). For example "5/0@1" is layer 5, datatype 0 from the first loaded layout.

    The "source specification" however allows to specify a lot more, i.e. a transformation to apply (which allows for example to shift one layout so it aligns to another layout) or to specify property filters. Property filters are written in square brackets. Usually such a filter is a simple expression like

    "5/0@1 [#5==X]"

    This expressions specifies to use all shapes from layer 5, datatype 0 and first layout which have a property with the numeric key 5 and a string value of "X". In GDS, property keys are always integers, so the key will be "#n" always. The value is always a string. Property filters can use the operators "!" (not), "&&" and "||" and round brackets to create combined expressions such as

    "5/0@1 [#5==A||#5==B]"

    Note, that each layer can have it's own property selector. For example, two layers can be specified with "5/0@1" having green color and "5/0@1 [#5==X]" having red color. Provided the red colored layer is drawn after the green one, all shapes having "X" for the #5 property will be drawn in red while the others will be drawn in green.

    Frankly, the property selection feature seems not be used frequently. Probably because the main application might be to select nets by their properties in annotated GDS. However, this application suffers from the fact that nets are labeled differently on different hierarchy levels which is not covered by this simple filter semantics.

    Best regards,

    Matthias

Sign In or Register to comment.