• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Creating new attributes and sub-attributes

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 16415
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Creating new attributes and sub-attributes

lkphoto
lkphoto over 11 years ago

 Hi Everyone,

I would like to add an attribute, for example to a cellview Cv.
The attribute should have itself other attributes, and so on.
It should work therefore similarly to the well-known
Cv~>shapes
which can be called again like this:
Cv~>shapes~>points
or like this:
Cv~>shapes~>lpp


Summarizing, given a cellview Cv I would like to create MyNewAttribute, MyNewSubAttribute1 and  MyNewSubAttribute2 such that I can call them by writing:
Cv~> MyNewAttribute~> MyNewSubAttribute1
Cv~> MyNewAttribute~> MyNewSubAttribute2

I know the command dbCreateHierProp(Cv "MyNewAttribute") but I have two problems using it:
1. It stores MyNewAttribute not directly under Cv, but under Cv~>prop. This is just an esthetic problem since the command Cv~>MyNewAttribute still works, but the command Cv~>? does not show MyNewAttribute (which is very unpractical)
2. I cannot create MyNewSubAttribute1

How can I do?

Thanks a lot in advance for any suggestions,
lkphoto

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

     You cannot create new attributes. The set of attributes is fixed by Cadence. You can create new user defined properties (and hierarchical user-defined properties) and also user-defined groups. Properties are good for storing values, and you can store integers, floats, strings, datestamps, and SKILL Lists (where the lists are lists of integers, floats, strings or other lists). Groups are good for storing relationships between database objects (because a database object or list of database objects cannot be stored as a user-defined property).

    Whilst they don't show up in the ~>? output directly, they are easily accessible:

    dbCreateHierProp(cv "MyNewAtt")
    db:0x16e2f2c7
    cv~>MyNewAtt~>MySubAtt=5
    5
    cv~>MyNewAtt~>MySubAtt2="hello"
    "hello"
    cv~>MyNewAtt~>value~>name
    ("MySubAtt" "MySubAtt2")
    cv~>MyNewAtt~>MySubAtt2
    "hello"
    cv~>prop~>name
    ("expansionData" "MyNewAtt" "spectre" "schGeometryLastUpdated" "connectivityLastUpdated"
        "instance#" "pin#" "net#" "schXtrVersion" "lastSchematicExtraction"
        "schGeometryVersion" "spectreS" "viewNameList" "lastDesignExtraction" "cdsSpice"
    )

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • lkphoto
    lkphoto over 11 years ago

    Thanks, very clear.
    I didn’t expect it was possible to write on non-existing properties:
    Cv~>MyNewProperty~>NonYetExistingProperty = ‘’YouWillExistSoonThough”
    -so, good to know.
    Feels like I am improving my SKILLs

    Regards,
    lkphoto

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • lkphoto
    lkphoto over 11 years ago

     Actually, I gave a closer look and I still have a problem:

    In the example above “MyNewAtt” is a single property, while I would like it to be a list of elements having themselves properties.
    The example of “shapes” and “points” fits pretty well:

    If I type:
    cv~>shapes
    I can get MANY objects, not only one.

    And if I type:
    cv~>shapes~>points
    I get a list of points for EACH shape.

    Unfortunately, I do not find a way of doing same using the function dbCreateHierProp.
    What I am trying to do, is defining new types of ports. Each ports, has some properties, for example a center and a width.
    Each cellview Cv has multiple ports.

    I tried:

        defstruct( Port center width  )    
        dbCreateHierProp(Cv "Ports")
        Port1 = make_Port( ?center list(1.0 1.0) ?width 1.0 )
        Port2 = make_Port( ?center list(2.0 2.0) ?width 2.0 )
        Ports = list(Port1 Port2)    
        Cv~>Ports = Ports ; defining the property to be the list of structures (appears working OK)
        ; Testing:
        Ports~>?                      ; works fine.
        nth(0 Ports)~>point0      ; works fine.    
        Cv~>Ports~>center        ; but this fails.
     
    Any idea?
    I could not find any way of using groups either.

    Many thanks in advance,
    lkphoto

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • theopaone
    theopaone over 11 years ago

     You are trying to store the contents of SKILL defstruct instance as a property on the cellView. This does not work as you cannot assign the value which is probably a memory pointer to the SKILL defstruct to a property.

    You may want to store the data in a list of DPLs or assoc lists so it can be written to the database.

    Ted

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    lkphoto said:
    Unfortunately, I do not find a way of doing same using the function dbCreateHierProp.
    What I am trying to do, is defining new types of ports. Each ports, has some properties, for example a center and a width.
    Each cellview Cv has multiple ports.

     

    You can't. As I said, you can't create attributes and new object types - you can use the existing props, hierProps and groups to store the information, but you can't directly use SKILL data structures (as Ted said) to store info like this. You could use those SKILL data structures in memory, but then store them as SKILL lists if you want to permanently store them on disk.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information