• 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. ddDeleteObj() and its warnings

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 15633
  • 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

ddDeleteObj() and its warnings

Aldo2
Aldo2 over 5 years ago

Hello,

After deleting cells using the following loop:

foreach(cellId ddGetObj(libName)~>cells
    ddDeleteObj(cellId)
)

the following warnings are printed in the CIW:

*WARNING* (SCH-2162): "... symbol" has been updated since "... schematic" was last saved. Validate that the schematic is correct and run Check and Save to suppress this warning.
*WARNING* (DB-270337): dbGetInstHeaderMaster: Failed to open cellview '...' from library '...' in read-only mode because the cellview does not exist. This cellview was instantiated in cellview '...' of library '...'. Ensure that the cellview exists in the library.

Is it possible to turn them off?

Thank you

Best regards,

Aldo

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    I can't really see why ddDeleteObj should be causing sch or db warnings, unless there's some triggers in place (maybe as part of a design management integration?) to do some checks? I'm guessing here - but there's certainly no specific way with ddDeleteObj to deal with these warnings.

    In current versions you have the muffleWarnings() construct that you could surround your code with to swallow any warnings. muffleWarnings was introduced in IC618/ICADVM181 ISR1.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Aldo2
    Aldo2 over 5 years ago in reply to Andrew Beckett

    Thank you Andrew.

    Unfortunately, I am using IC616 and so I cannot use muffleWarnings(). I tried also to disable the design management sw, but I continue having warnings.

    Best regards,

    Aldo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Aldo2

    Hi Aldo you could use the CCFcaptureWarnings macro or this code if you don't care about capturing the warnings in a variable:

    /* abMuteWarnings.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Dec 31, 2018 
    Modified   
    By         
    
    A macro to mute the output from anything sent to woport (warnings).
    Based on abMute (written many years ago)
    
    abMuteWarnings(warn("test this\n") warn(""))
    
    will produce nothing.
    
    Relies on SKILL's dynamic scoping, so will not work in SKILL++
    unless you do:
    
    inSkill(abMuteWarnings(warn("test this\n") warn("")))
    
    ***************************************************
    
    SCCS Info: @(#) abMuteWarnings.il 12/31/18.11:36:17 1.1
    
    */
    
    (defmacro abMuteWarnings (@rest body)
      `(progn
         (unless (openportp (getqq abMuteWarnings nullport))
           (putpropqq abMuteWarnings (outfile "/dev/null") nullport))
         (let ((woport (getqq abMuteWarnings nullport)))
           ,@body
           )
         )
      )

    You can then just use:

    foreach(cellId ddGetObj(libName)~>cells
        abMuteWarnings(ddDeleteObj(cellId))
    )

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Aldo2
    Aldo2 over 5 years ago in reply to Andrew Beckett

    Thank you, Andrew. It works.

    Just a clarification: Lint sees woport variable as unused. Is it possible to have "clean" Lint report?

    Thank you

    Best regards,

    Aldo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Aldo2

    I don't see woport reported just by using these macros, but I can see the you might get it if you have something like this:

    let(((nullport outfile("/dev/null")))
      let(((woport nullport))
        warn("this")
        warn("that")
        getWarn()
      )
    )

    I think the only way to suppress the message is to do:

    skIgnoreMessage("Unused")

    but that will suppress all unused variables. I don't believe there's a more selective way of ignoring specific variables. Of course, you could cheat by doing:

    let(((nullport outfile("/dev/null")))
      let(((woport nullport))
        ; reference to a variable just to get clean Lint score
        woport
        warn("this")
        warn("that")
        getWarn()
      )
    )

    Personally I don't like doing that - I'd sooner just document the reasons for a score being lower.

    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