• 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. Usage of commands dbOpenCellViewByType and deOpenCellView...

Stats

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

Usage of commands dbOpenCellViewByType and deOpenCellView and difference between geGetWindowCellView and geGetEditCellView !!!

Sonu Chopra
Sonu Chopra over 5 years ago

Hello Everyone,

I have few queries regarding the usage of dbOpenCellViewByType and deOpenCellView skill commands.

1. issues with Creation of new cells by dbOpenCellViewByType:-

I am using dbOpenCellViewByType Command in my skill script. As the user documentation of this command it mention that this command can create new cells (if not existing) for "w" and "a" modes. 

But When i am running this command on CIW to create new cells for append or write ("a" or "w") mode it returns nil. I am not able to understand why its returning nil . While on my colleague side its working fine in some script. So , its really depend upon the Virtuoso Version ?

2.  issues with  deOpenCellView for existing cells :-

I am overwriting/appending any existing cell by using deOpenCellView command in the my script.  When i load the script , it shows me a pop-menu ("Whether you want to overwrite the cells") and till i press yes , lots of  errors gets generated (this is due to not able to find the cell id of cells (due to delayed in response by pressing yes) , But for new cells scripts works perfectly fine.)

I am not able to understand how to correct such issues.

3. Difference between geGetWindowCellView and geGetEditCellView :-

Can somebody explain me difference between geGetWindowCellView and geGetEditCellView.  In which Cases/Scenario which one will be more suitable?

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    Some answers:

    1. Most likely you don't have permission to create the cellView, or the library name you've given doesn't exist. There normally would be a warning explaining the problem - check your Options->Log Filter to make sure you're not hiding the warnings and errors
    2. deOpenCellView is to open in a graphical window - and doesn't make a great deal of sense to use as part of a script to generate data. That said, I would expect it to block until you've interacted with the popup that asks you to overwrite. Oh, that would be in a normal program - if you've just got a "script" with a sequence of SKILL functions and are just using load to load that, then it won't block. Instead I suggest you surround your code with curly brackets as this will then group it together so that it runs it as a program rather than just a sequence of non-blocking commands:
      {
        deOpenCellView("mylib" "mycell" "schematic2" "schematic" nil "w")
        ; because of the curly brackets (could use let(), prog() or similar too) the next line only runs when deOpenCellView returns
        println("HELLO WORLD")
      }
    3. I nearly always use geGetEditCellView. The difference comes when you are using edit-in-place; then geGetEditCellVIew() returns the cellView you're editing, and geGetWindowCellView() returns the cellView that is visible in the window - and since you usually want to be operating on what you're editing, geGetEditCellVIew() is nearly always the right function to be using. When not editing in place they return the same thing (off the top of my head I can't think of any other situation where they return different objects).
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sonu Chopra
    Sonu Chopra over 5 years ago in reply to Andrew Beckett

    Hello Andrew,

    Thanks for all the answers.

    Still point 1 is not clear for me .

    I am writing the following commands in the CIW Window to create new cell dummy_cell (Library dummy is already existing for sure ) :-

    dbOpenCellViewByType("dummy" "dummy_cell" "layout" "maskLayout" nil "w")

    or

    dbOpenCellViewByType("dummy" "dummy_cell" "layout" "maskLayout" nil "a") 

    then on Execution , following waring appears in the CIW Window :

    100dbOpenCellViewByType("dummy" "dummy_cell" "layout" "maskLayout" nil "w")

    *WARNING* (DB-270212): dbOpenCellViewByType: Failed to open cellview (dummy_cell layout) from lib (dummy) in 'r' mode because cellView database does not exist, or cellview type is not recognized by dbOpenCellViewByType.
    nil

    Can you suggest some help based on this warning ?

    Just an additional query in the above command what are various values of view type supported (like "maskLayout")  for layout as a view?

    Regards

    Sonu

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Sonu Chopra

    Hi Sonu,

    I checked, and that warning can only come if you open with "r" mode. The issue is that you've called the function with an extra argument nil in place of the access mode, and so it's defaulting to "r" mode. You would need:

    dbOpenCellViewByType("dummy" "dummy_cell" "layout" "maskLayout" "w") ; don't pass nil between the viewType and the mode

    The view name can be whatever you want, but assuming you want to represent layout data (i.e. such that it will open in the layout editor), then "maskLayout" is the only choice that makes sense for layout data. The documentation lists the four viewTypes used nowadays - maskLayout, schematic, schematicSymbol and netlist.

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Sonu Chopra
    Sonu Chopra over 5 years ago in reply to Andrew Beckett

    Thanks Andrew , its works perfectly fine.

    Sorry , Typo on my side as I assume that parameters are same for dbOpenCellViewByType and deOpenCellView (as no window specification parameter for dbOpenCellViewByType)

    Thanks for all the help.

    Regards

    Sonu

    • 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