• 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. problem with figs~>lpps~>layerName

Stats

  • Locked Locked
  • Replies 21
  • Subscribers 143
  • Views 9019
  • 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

problem with figs~>lpps~>layerName

ToMWUT
ToMWUT over 16 years ago
Hello,

I have such a problem with my SKILL code and design:

My code looks like this

cv=geGetWindowCellView(window(3))

printf("\nALL LPPS (Layer purpose pair) \n")

; Here I want to check what LPPS I have in my design

;

for( i 0 length(cv~>lpps~>layerName)-1

printf( "LPP name: %s purpose %s \n", nth(i

cv~>lpps~>layerName), nth(i cv~>lpps~>purpose))

);for

printf("\n Figures belongs to LPPS \n")

print(cv~>nets~>figs~>lpps~>layerName)cv=geGetWindowCellView(window(3))

printf("\nALL LPPS (Layer purpose pair) \n")

for( i 0 length(cv~>lpps~>layerName)-1

printf( "LPP name: %s purpose %s \n", nth(i

cv~>lpps~>layerName), nth(i cv~>lpps~>purpose))

);for

; Here I'd like to check if all figs belongs to appropriate LPPS (2)

;

printf("\n Figures belongs to LPPS \n")

print(cv~>nets~>figs~>lpps~>layerName)

The problem is that in (2) I get an empty list (nil)

The result of the above code looks like this:

ALL LPPS (Layer purpose pair)

LPP name: pin purpose drawing

LPP name: device purpose drawing

LPP name: PO1 purpose drawing

LPP name: ME1 purpose drawing

Figures belongs to LPPS

(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil)

Why is it so? Does anyone have any ideas?
  • Cancel
  • skillUser
    skillUser over 16 years ago

     Hi,

     First, I strongly recommend that you use foreach instead of the for loops you show, it will be much easier to read and write and will be more efficient too.  For example:

     
    foreach( lpp cv~>lpps
     printf("Name: %s, Purpose: %s\n" lpp~>layerName lpp~>purpose)
    ); foreach

     As to why you get lots of 'nil' in you last section, it is because a figure will not have "lpps", that is a cellview attribute, rather a figure will have "lpp" which is a list of layer and purpose, and not an LPP object (which is what lpps is).

    Hope it helps!

    Lawrence.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ToMWUT
    ToMWUT over 16 years ago
    Thank you Lawrence for your reply.

    I agree to you first suggestion to use foreach loop rather than for loop. But I still got nil's when I use code:

    print(cv~>nets~>figs~>lpp)

    Is there any tutorial which could be helpful for me, where I could find information about the object data base, so I could read more about figs~>lpp object?

    Any more ideas? Thanks :)
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 16 years ago

    Not sure if you really need to go via the nets or not. As for tutorial, I'm not sure there is one - although this is covered quite well in the standard Cadence SKILL Programming course - see the "Support & Training" link at the top of this web site...

    You can also read the "Design Framework II SKILL Functions" manual - this covers the database in some detail.

    I've changed your code a bit, to show some slightly different information - using foreach() as Lawrence suggested (you shouldn't use nth() to access lists in a loop, as lists are sequentially accessed, rather than random access, so it can be slow with long lists). You may find this code useful:

    cv=geGetWindowCellView()
    printf("\nALL LPPS (Layer purpose pair) \n")
    
    ; Here I want to check what LPPS I have in my design
    ;
    foreach(lpp cv~>lpps
        printf( "LPP name: %s purpose %s \n", lpp~>layerName lpp~>purpose)
    );foreach
    
    printf("\n Figures belongs to LPPS \n")
    ;print(cv~>nets~>figs~>lpps~>layerName)
    pprint(cv~>shapes~>lpp)
    newline()
    
    foreach(lpp cv~>lpps
        printf( "LPP name: %s purpose %s \n", lpp~>layerName lpp~>purpose)
        printf( "Shapes on this lpp are: \n")
    ;; could look at whatever you want.
        pprint(lpp~>shapes~>objType)
        newline()
    )
    

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ToMWUT
    ToMWUT over 16 years ago

    Thank you Andrew for your replay,

     

    In fact I will check if this code will give me any results:

    pprint(lpp~>shapes~>objType)

     

    But the problem is that I already have a SKILL application whitch uses and I have to use this objects

    cv~>nets~>figs~>lpp

     

    The quiestion still remains the same: why while listing all LPPS from CellView, there is no problem, but when I use: cv~>nets~>figs~>lpp the result is nils?

     

    Thanks,

    ToM

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

    My guess is that you don't have any connectivity in your layout database - if it's just shapes, then there may not be any connectivity, or there may be connectivity, but no routing on those nets - so no figures on the nets. Very hard to tell without knowing what your data looks like.

    Easiest to break down using cv~>nets then cv~>nets~>figs (just type it in the CIW to see what you get).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ToMWUT
    ToMWUT over 16 years ago

    Thanks once again Andrew,

    You where right about two things: first of all you're right that you don't have any data about my design, so I've decided to put a screen shot with it, so you can have a look.

    http://home.elka.pw.edu.pl/~tscislo/layout.jpg

    This is a very simple design which was extracted from layout using Assura extraction tool. This is a NAND cell.

    The second thing about which you were right was that I have a problem with routing, because when I execute:

    cv~>nets~>figs I get nils

    But the problem after the extraction process is that you can actually see the nets on the layout, so I have no idea why the Cadence data base has no information about the figures...

    Thanks,

    ToM.

     
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ToMWUT
    ToMWUT over 16 years ago

     So, no ideas huh guys?

     ToM

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 16 years ago

    I'm not sure what you mean by "seeing nets on the layout". Cadence has net objects and figure objects (paths, rectangles, etc) but if the net information is not attached to the figs, then cv~>nets~>figs can return nil. Select a shape in your layout and see if it has "connectivity" by querying it. If there is no connectivity on the shape, then the shape doesn't have net information.

     Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ToMWUT
    ToMWUT over 16 years ago

    Thank you for your reply Derek,


    I've checked what you've suggested and it seams that you were right, when put sth like this in CIW:

    cv~>shapes~>net the result was also nils. But I have shapes in my design, because when i put:

    cv~>shapes~>isShape I get true as a result...


    However I still don't have any idea why, when the connectivity on the layout seams to be ok, Cadence Data Base... has such strange data about my design...


    I remind you that, SKILL reports that I have actually nets in design using

    cv~>nets


    Thanks,

    ToM

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

    ToM.

    Apologies for not replying sooner - I've been travelling visiting customers and there are only a finite number of hours in the day ;-(

    Anyway, if this view was created by Assura extraction, it's possible that there was no saveInterconnect() in the rules and perhaps just copyGraphics() statements. Or it may be because you've done RC extraction, and so there are no actual shapes left (all the shapes have become resistors - I've not checked to see what it looks like as I'm in an airport right now).

    Anyway, it's not really clear what you're actually trying to check, so perhaps if we knew that we could make other suggestions (although I think I already did that earlier?).

    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