• 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. Deleting ghost layer

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 144
  • Views 19067
  • 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

Deleting ghost layer

dNora
dNora over 13 years ago

 Hi,

I'm trying to delete ghost layers that exists in database but you can't select or view. I can get layers through

foreach(lpp cv~>lpps when(lpp~>purpose=="hv" printf("layer found %s %s\n" lpp~>layerName lpp~>purpose) ) )

dbDeleteObject complains it's invalid type, if I try to use ddDeleteObj then I get

 *Error* ddDeleteObj: argument #1 should be a ddUserType (type template = "b") - db:248248124

What other command can I use?

 

  • Cancel
  • skillUser
    skillUser over 13 years ago

    Hi dNora,

    unfortunately you don't show the code where dbDeleteObject is called - are you calling it with the lpp's found by the foreach, where your printf statement is?  If so I am not sure this is valid - you can delete the shapes of the lpp, but I don't know about deleting the lpp itself.  Try something like this (assuming you were calling dbDeleteObject(lpp) ) :

      mapcar('dbDeleteObject lpp~>shapes)

     A dd object is different to a db object, so this is why the ddDeleteObj function would not work - if you do not have a dd object, then it will not work.  Think of the dd objects as being similar to what you see in the Library Manager, a library dd object, a cell, a view and so on.

    The lpp (LP) object is a collection object, I believe that it is automatically created in virtual memory for shapes on layer purposes, so it probably cannot be directly modified, but if you modify the shapes, this in turn should update the lpps attribute of the cellview object.

    I hope that this helps you.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dNora
    dNora over 13 years ago

     Hi Lawrence,

    I was confused by the way Cadence reported the lpps. I assumed it should report layers in the level I'm querying. But I think it was reporting through whole hierarchy. It was reporting lpps with no shape associated. I wrote script to scan through whole hierarchy, found the shape and deleted it using dbDeleteObject. Thanks for your help.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 13 years ago

    You are welcome.  I probably should have noted that the lpps (or layerPurposePairs) attribute is collected for levels of hierarchy that have been opened - so if you are at the level 0 and do not open or display levels below this (i.e. 1+ ) then you would only see lpps containing the layer purpose pairs from level 0 shapes.  I am glad that you figured it out though.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • calla dai
    calla dai over 13 years ago

     hi,

    i meet the similar problem to you. i dont know which file was deleted or which application will disturbe the virtuoso.

    the virtuoso tells me an error: ddMapGetFileViewType: argument #1 should be addUserType (type template = " b") -nil

    how can i solve this problem? 

    Any guides or helps will be pleased.

    Regard

    Calla

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dNora
    dNora over 13 years ago

    Not quite sure about the question. Maybe something like this script might help. This works on whole library, you could change it to be hierarchy.

    procedure(del_layer(libname layer)
    let((libId viewn cv )
    libId = ddGetObj(libname)
    viewn = "layout"
    ;;cv= geGetEditCellView()

     foreach(cell libId~>cells
       when(member(viewn cell~>views~>name)
          cv = dbOpenCellViewByType(libname cell~>name viewn nil "a")
          info(".. Processing %s\n" cv~>cellName)
                foreach(shape cv~>shapes
                when( (shape~>layerName == layer)
                                 dbDeleteObject(shape)
                      ) ;when
                      );foreach
                dbSave(cv)
         );when
      );foreach
     );let
    );procedure

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

    I can't see how that error message is anything to do with the discussion in this thread - that's related to dd objects, not db objects. Those are cellViews, cells, libraries etc, not shapes or layers.

    You'll need to provide more details.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • calla dai
    calla dai over 13 years ago

     hi,

    I input the command "virtuoso" in the terminal to start the application and the cds.log shows me everything is ok. Then i want to exit the virtuoso, the cds.log shows me the error and some warnings as following:

    set forth at FAR 1252.227-19 or its equivalent.
    \o Loading geView.cxt
    \o Loading menuBuilder.cxt
    \o Loading schView.cxt
    \o Loading selectSv.cxt
    \o Loading LVS.cxt
    \o Loading layerProc.cxt
    \o Loading xlUI.cxt
    \o Loading auCore.cxt
    \o Loading vhdl.cxt
    \o Loading seismic.cxt
    \o Loading ci.cxt
    \o Loading ams.cxt
    \o Virtuoso Framework License (111) was checked out successfully. Total checkout time was 0.02s.
    \o END OF USER CUSTOMIZATION
    \w *WARNING* (reader): a '(' at line 269 was still unclosed on EOF, ')' added
    \w                     at line 286 of file .cdsinit
    \o //
    \o //  Calibre Skill Interface * (v2008.1_20.15) *
    \o //
    \o //                 Copyright Mentor Graphics Corporation 2005
    \o //                             All Rights Reserved.
    \o //         THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
    \o //            WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
    \o //              OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
    \o //
    \o //
    \i ddsWhatsNew()
    \p >
    \o Loading rte.cxt
    \a hiCloseWindow(window(2))
    \r t
    \w *WARNING* LIB cdsDefTechLib from File /software_tools/edi912/EDI91/share/cdssetup/dfII/cds.lib Line 1 redefines
    \w LIB cdsDefTechLib from File /software_tools/IC614/share/cdssetup/dfII/cds.lib
    \w Insert UNDEFINE cdsDefTechLib
    \w before DEFINE cdsDefTechLib
    \w     in /software_tools/edi912/EDI91/share/cdssetup/dfII/cds.lib
    \w Or remove or comment out DEFINE cdsDefTechLib
    \w     in /software_tools/IC614/share/cdssetup/dfII/cds.lib
    \w to suppress this warning message.
    \w *WARNING* LIB basic from File /software_tools/edi912/EDI91/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib Line 1 redefines
    \w LIB basic from File /software_tools/IC614/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w Insert UNDEFINE basic
    \w before DEFINE basic
    \w     in /software_tools/edi912/EDI91/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w Or remove or comment out DEFINE basic
    \w     in /software_tools/IC614/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w to suppress this warning message.
    \w *WARNING* LIB US_8ths from File /software_tools/edi912/EDI91/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib Line 2 redefines
    \w LIB US_8ths from File /software_tools/IC614/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w Insert UNDEFINE US_8ths
    \w before DEFINE US_8ths
    \w     in /software_tools/edi912/EDI91/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w Or remove or comment out DEFINE US_8ths
    \w     in /software_tools/IC614/tools.lnx86/dfII/etc/cdsDotLibs/composer/cds.lib
    \w to suppress this warning message.
    \e *Error* ddMapGetFileViewType: argument #1 should be a ddUserType (type template = "b") - nil
    \e *Error* ddMapGetFileViewType: argument #1 should be a ddUserType (type template = "b") - nil
    \e *Error* ddMapGetFileViewType: argument #1 should be a ddUserType (type template = "b") - nil
    \e *Error* ddMapGetFileViewType: argument #1 should be a ddUserType (type template = "b") - nil
    \e *Error* ddMapGetFileViewType: argument #1 should be a ddUserType (type template = "b") - nil
    \a ciwHiExit()
    \p >
    \a hiDBoxOK(ciwDBox)
    \r t
    \o Loading cph.cxt
    \o
    \# Memory report: on exit 89157632 (0x5507000) bytes, UTC 2011.12.09 06:15:29.027

    By the way,  you tells me the script might help and I could change it to be hierarchy, what is the script name? Shall I creat a new file which has the above information? 

    thanks a lot.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • calla dai
    calla dai over 13 years ago

    The more detail i got shows on the reply to dNora. I don't know how to solve it. 

    Any helps and guides are welcomed.

    Regard.

    Calla

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

    Calla,

    The reason why the reply from dNora doesn't help is because your problem has nothing to do with anything discussed in this thread. This topic is about deleting shapes on layers in a layout. Your problem is to do with an error message you get in the CIW - it's not even anything to do with anything being deleted as far as I can see, so I have no idea why you thought it was related to this thread, except for the fact that the error message in the original posting by dNora was referring to an error message due to incorrectly calling the function ddDeleteObj instead of dbDeleteObject. Even then the similarity was simply the message about the expected type of the argument - the operations where completely different.

    I suggest this conversation is continued in your other post and we leave this one alone.

    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