Home > Community > Forums > Custom IC SKILL > Create new PCell attributes or properties to hold a list of object identifiers

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Create new PCell attributes or properties to hold a list of object identifiers 

Last post Wed, Jan 30 2013 2:31 PM by Dynamic Duo. 7 replies.
Started by Dynamic Duo 30 Jan 2013 11:07 AM. Topic has 7 replies and 1141 views
Page 1 of 1 (8 items)
Sort Posts:
  • Wed, Jan 30 2013 11:07 AM

    • Dynamic Duo
    • Not Ranked
    • Joined on Fri, Jan 18 2013
    • Austin, TX
    • Posts 6
    • Points 75
    Create new PCell attributes or properties to hold a list of object identifiers Reply

    Dear All,

    I am trying to do the following with SKILL in IC6.1.5.500.12:
    ================================
    Given: an object identifier of a schematic instance Inst0_sch = db: 0x15b7f112, where Inst0_sch is a MOSFET PCell

    Obj: assign a list of object identifiers (from the same schematic) listA = list( db:0x15b7f345 db:0x15b7f456 db:0x15b7f678 ) to Inst0_sch as a new attribute or property: "impactNeighbors"
    ================================

    I am thinking this would make query much easier, sort of to minic the reference/pointers in C/C++.
    But haven't been able to get it work. Somehow I cannot make new attributes.. And in making a new property, I did not see supported valueType of l_objId?

    Alternatively we can define a global list of lists: memlist_, to hold these "impactNeighbors", then assign the list index as a new property to Inst0_sch, e.g.,
    dbSetq(Inst0_sch 32 "impactNeighbors"), where nth(32 memlist_) is listA..

    But I'd strongly prefer the first way.. Could anyone give me some pointers?

    Thanks a bunch!
    Duo p, li { white-space: pre-wrap; }

    • Post Points: 20
  • Wed, Jan 30 2013 11:19 AM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,594
    • Points 16,040
    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply

    Hi Duo,

    With the exception of a property database object itself, any database object can have a user-defined property associated with it (for a property on a property you would need to create a hierarchical prop using dbCreateHierProp()). So your example should work, as long as you don't try to type in the database ID's.  For a quick test, let's say you've selected the three "neighbours" to Inst0, then you might do something like this:

    Inst0_sch~>impactNeighbors = geGetSelectedSet()
    =>  (db:0x15b7f345 db:0x15b7f456 db:0x15b7f678)

    You can create the prop more formally with a call to dbCreateProp() where you are required to give the type as well as the property name and value.

    Hopefully this will help you?

    Regards,

    Lawrence.

    • Post Points: 35
  • Wed, Jan 30 2013 12:11 PM

    • Dynamic Duo
    • Not Ranked
    • Joined on Fri, Jan 18 2013
    • Austin, TX
    • Posts 6
    • Points 75
    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply
    Thanks a lot for the prompt reply, Lawrence! This helps a lot.

    For my case, the db objects are derived from inside the SKILL program, instead of being selected from the window.
    For example:

    inst1 = nth(1 setof(x cvId_sch~>instances x~>xy....))
    inst2 = nth(2 ....)
    inst3 = nth(3 ....)

    listA = list( inst1 inst2 inst3)

    So when I do the following, it's not assigning the hier prop correctly:

    >> dbCreateHierProp(inst0_sch "impactNeighbors")  <-- I typed this line to CIW

    >> inst0_sch~>impactNeighbors = listA                   <-- I typed this line to CIW

    >> (db:0x15b7edff db:0x1bfc5a96 db:0x1bfc5a9d)      <-- The return of the previous line

     

    the returned value from the command line is correct, the same as listA.

    But when I check the property value:

    >> inst0_sch~>impactNeighbors                              <-- I typed this line to CIW

    >>  ((db:364375551)

    (db:469523094)

    (db:469523101)

    )

     
    Somehow what I set is not what I get? Is this related to the exception you mentioned? Any ideas is appreciated..


    Regards,

    Duo
    • Post Points: 5
  • Wed, Jan 30 2013 12:47 PM

    • Dynamic Duo
    • Not Ranked
    • Joined on Fri, Jan 18 2013
    • Austin, TX
    • Posts 6
    • Points 75
    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply

    BTW, I observed the same issue when using geGetSelectedSet():

    3 instances selected in the schematic window:

    In CIW:

    >>geGetSelectedSet()

    (db:0x1bfc5a9d db:0x1bfc5a96 db:0x15b7edff)

     

    >>inst0_sch~>impactNeighbors = geGetSelectedSet()

    (db:0x1bfc5a9d db:0x1bfc5a96 db:0x15b7edff)

     

    >>inst0_sch~>impactNeighbors

    ((db:469523101)

    (db:469523094)

    (db:364375551)

    )

     

    This is really wierd..

    • Post Points: 20
  • Wed, Jan 30 2013 1:08 PM

    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply

    Actually it's not wierd. Only certain object types are supported as property types - these are strings, integers, floats and lists (there are some other types which are represented as these - so "time" is a special string, for example). If it's an ILList type (i.e. a list), it can only be a list containing strings, integers, floats and lists. So you can't store a list containing a table, or a list containing a file port, or a list containing a database object. It probably ought to error out if you try to store a list containing other object types, but it doesn't for historical reasons (and quite possibly for performance reasons).

    If you are trying to create relationships between objects that you want to store in the database, you should use groups not properties (e.g. using dbCreateGroup). The benefit of these is that they allow ordered and unordered groups, and can tidy up after themselves when a member object is deleted, say.

    Regards,

    Andrew.

    • Post Points: 20
  • Wed, Jan 30 2013 1:32 PM

    • Dynamic Duo
    • Not Ranked
    • Joined on Fri, Jan 18 2013
    • Austin, TX
    • Posts 6
    • Points 75
    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply

    Many thanks for the clarification, Andrew.
    I guess that means what I wanted cannot be done using properties.. But what about *attributes*?

    when I do inst0_sch~>??, there are couple of them storing lists of dbId's, and that's exactly what I want.
    E.g, inst0_sch~>instTerms, inst0_sch~>prop, inst0_sch~>conns

    Is there a way I create a new attribute inst0_sch~>impactNeighbors? Considering the existing attributes, I think such an idea should make sense..

    Mini conclusion: Will use groups to store object relations in the database.

    Regards,
    Duo

    • Post Points: 20
  • Wed, Jan 30 2013 2:20 PM

    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply

    Duo,

    It's not possible to add your own attributes. The set of attributes is fixed - that's precisely why user groups and user properties exist, to store such additional data.

    Kind Regards,

    Andrew.

    • Post Points: 5
  • Wed, Jan 30 2013 2:31 PM

    • Dynamic Duo
    • Not Ranked
    • Joined on Fri, Jan 18 2013
    • Austin, TX
    • Posts 6
    • Points 75
    Re: Create new PCell attributes or properties to hold a list of object identifiers Reply
    Many thanks to the timely replies from Lawrence and Andrew! They are really helpful.

    Conclusion of the thread: groups (dbCreateGroup) should be used in a cell view to store instances' relation info involving object identifier data types

    Regards,
    Duo
    • Post Points: 5
Page 1 of 1 (8 items)
Sort Posts:
Started by Dynamic Duo at 30 Jan 2013 11:07 AM. Topic has 7 replies.