• 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. How to delete all outputs for test in ADE-XL/Assembler using...

Stats

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

How to delete all outputs for test in ADE-XL/Assembler using SKILL

alexstepanov75
alexstepanov75 over 8 years ago

Hi,

I want to delete all outputs for specific test in ADE-XL/Assembler using SKILL

After some digging in manuals I see that I can get list of outputs for test like this:

session = axlGetWindowSession()

sevSession = axlGetToolSession(session test_name)
testObj = asiGetSession(sevSession)
testOutputsList=asiGetOutputList(testObj)

After this it is maeDeleteOutput and axlDeleteOutput functions to delete outputs.

The problem is both functions require output name, but there may be many outputs without name.

So how can I delete all outputs? Is it a way to delete outputs without name?

Best regards,

Alex.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Hi Alex,

    The maeDeleteOutput and axlDeleteOutput functions do work - you just have to pass them the signal or the expression if they are unnamed. It's possible the code below is incomplete and doesn't handle all output types though:

    foreach(testOutput testOutputList
      cond(
        (testOutput->name axlDeleteOutput(session test_name testOutput->name))
        (testOutput->signal axlDeleteOutput(session test_name testOutput->signal))
        (testOutput->expression axlDeleteOutput(session test_name sprintf(nil "%L" testOutput->expression)))
      )
    )

    I think there's an argument to provide a function which retrieves the "name" for each output - i.e. the name that can be passed to axlDeleteOutput/maeDeleteOutput. Perhaps an maeGetOutputNames() or something like that? Worth contacting customer support to ask for such a function - because the above requires a bit too much knowledge of the way things are stored.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alexstepanov75
    alexstepanov75 over 8 years ago
    Hi Andrew,

    Thank you for replay.
    Actually I tried something like this but for expression I tried to pass expression directly and this not worked. With sprintf(nil "%L" testOutput->expression) this seems to work fine.

    I have two additional questions:
    1. I am getting a lot of WARNING (ADE-1199) messages. Is it possible to mask/suppress them somehow?
    2. axlDeleteOutput and maeAddOutput functions seems to be very slow. To delete 30 outputs and then add 30 outputs takes 15-20 seconds. Is it possible to speedup this somehow?

    Best regards,
    Alex.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Alex,

    Don't have time to test this today, but you might be able to suppress the warning by calling getWarn() after each axlDeleteOutput. However, if the warning is already flushed by the code then that won't work.

    The other way to suppress the warnings is to surround the code that does the deletion with something like this:

    let(((nullport (outfile "/dev/null")))
      let(((woport nullport))
        ; do the loop with all the deletion here
      )
      close(nullport)
    )

    This is using SKILL's dynamic scoping to temporarily reassign woport to write to /dev/null. The benefit of using this scoping-based way of doing it is that if the code aborts with an error for some reason, the stack unwinding will cause woport to be restored to its standard value.

    If you have a concern about performance, it may make sense to contact customer support to request a function to delete all the outputs; I suspect doing it one at a time is doing a bunch of synchronisation per delete, and it may be more efficient to be able to delete them all in one go. Unfortunately the functions that I can think of to do that are private - so this would probably need an enhancement CCR to improve.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • alexstepanov75
    alexstepanov75 over 8 years ago
    Andrew,

    Thank you.
    I just want to mention that as far as I understand WARNING (ADE-1199) not printed to woport, so poport can be used in your code to redirect all output including warnings.
    It actually will be good if it will be some way to selectively suppress warning messages.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    You're quite right - it is. That's a bit strange (I can see where in the code this happens). Anyway, the higher level function which can delete multiple outputs also provides the option to suppress these warnings, but the API to do it isn't public (and I'm not sure it's complete in itself and not so friendly for maestro or adexl views).

    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