• 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. dbOpenCellViewByType question

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 20482
  • 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

dbOpenCellViewByType question

nosaj
nosaj over 14 years ago

 Hi all,

 I'm writing a procedure that creates a library and layout views and it seems to work ok except when I try to open the Top cell that's created from my procedure, I'll get a warning :

*WARNING* (LE-104268): LibX/Top/layout has already been opened in edit mode.

When I try to close the cellview, it'll ask me if I want to save the changes, even though no changes were made. if I say NO, then reopen the cell, everything's gone.  If I say YES, what I've created from the SKILL will get saved. This behavior only happens on the Top cell where I create last. But I'm creating it the same way other cells are created. The warning is still there even though I've saved the top cell already.  it's as if I have it opened else where.  Also, when opening the subcell created, I'll get the warning but won't ask me to save changes.

I make sure to dbSave and dbClose all the cellview I have opened in "w" mode and "r" mode.  (see below)

Any idea what causes this?  I welcome any suggestion.

;====================================================

topId=dbOpenCellViewByType(lib top "layout" "maskLayout" "w")
...

cellId=dbOpenCellViewByType(lib cell "layout" "maskLayout" "r")
inst=dbCreateInst(topId cellId ........)
dbClose(cellId)

.....

dbSave(topId)
dbClose(topId)

 ;====================================================

  • Cancel
  • skillUser
    skillUser over 14 years ago

    Hi Nosaj,

    Perhaps the problem is that "cell" can be equal to "top" at some point?  It is not possible to open the cellview in read mode when it is already opened in write/append mode in virtual memory, so you will get two references to the cellview and both "topId" and "cellId" will point to the same cellview database object - the cellview is opened once for efficiency and "cellId" is a second pointer to the same object in virtual memory.

    If this is not the case then I am not sure what is happening, however, if you do have multiple "pointers" to the cellview database ID open, calling dbClose() multiple times until it returns 'nil' should close each one out until the cellview is purged from VM.

    Hope this helps.

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago
    Another possibility is that the variable top is being used elsewhere in you code and has not been properly declared as a local variable and is being overwritten. So top at the beginning ends up being different from top at the end (where the save occurs).

    If you have the SKILL development license, you could use:

    tracev(topId)

    To see when the variable is being set - and track the different values. Maybe also:

    trace(dbSave dbOpenCellViewByType)

    Regards,

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 14 years ago

    I think the multiple cell pointers is probably what is happening. You can use dbPurge instead of dbClose to make sure all pointers to the cell are removed. You can also force it back to read mode with dbReopen(cv "r").

    Do you need to open the cell in "w" mode? Are you creating it from scratch? Using "w" instead of "a" would explain why the cell ends up empty after a save.

     Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • nosaj
    nosaj over 14 years ago

    turns out there were multiple "pointers" which was causing the issue.

    thank you all for your inputs! 

    • 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