• 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. ADEL - skill : adding signals on the list of outputs to...

Stats

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

ADEL - skill : adding signals on the list of outputs to be plot/saved

Marcel Preda
Marcel Preda over 7 years ago

Hi,

In ADEL I want to modify the list of outputs to be plot/saved using skill.

Is there any skill procedure to to this?

Assume that the simulator is spectre, and the proper session is open in ADEL.

Thank you,

Marcel

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Marcel,

    There are no public functions to do this. You can get the output list using asiGetOutputList but to update it, you require some private functions (not just one, but a few that have to be synchronised particular to ensure that the ordering information is preserved).

    Sorry!

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Marcel,

    There are no public functions to do this. You can get the output list using asiGetOutputList but to update it, you require some private functions (not just one, but a few that have to be synchronised particular to ensure that the ordering information is preserved).

    Sorry!

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Marcel Preda
    Marcel Preda over 7 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks a lot.

    At least I can check if there are missing signals, and they have to be added manually in the list of saved outputs.

    Best Regards,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • drdanmc
    drdanmc over 7 years ago in reply to Marcel Preda

    I share your pain on this one!

    There are a couple of things you can try though.  To get a list of expressions, both of these seem to work:

    win = hiGetCurrentWindow()
    sessId = sevSession(win)
    sessId_str = symbolToString(sessId) ;; needed due to a bug that was only fixed in the last month or so in the latest IC617 ISR
    session = asiGetSession(win)

    ;; this gives you a list of sevOutputStruct

    my_outputs = asiGetOutputList(session)

    ;; this gives you a list of lists, each sublist is list(name expression)

    my_outputs2 = sevGetExpressions(sessId_str)

    Those functions are documented as public so it should be ok.  Don't ask me to explain fully the difference between a session from sevSession() and the one from asiGetSession() because I'm not clear on that.

    for setting outputs, I've tried things like this which mostly work but the last one you add won't have the plot box checked.  You can work around that by adding one more call to sevAddExpression() after you've added the ones you want.  sevAddExpression is in the manual so I guess it should be ok to use but I get the distinct impression that it is not used much by users because it is not so friendly.  For example, I couldn't find a way to change an existing expression and you have to jump through some hoops to get the plot/save checkboxes to update the way you might want.  

    session = sevSession(hiGetCurrentWindow())

    r = sevAddExpression(session "MyOutputName" "VT(\"/out\")")  ;; documented in the manual

    cadr(r)~>plot = t ;; not documented so it may change in the future

    r = sevAddExpression(session "MyOutputName2" "VT(\"/out2\")")

    cadr(r)~>plot = t

    ;; dummy call (won't overwrite, but will trigger the form to redraw and fix the plot box).  This is also not documented behavior so we can't count on it.

    sevAddExpression(session "MyOutputName" "dummy_expression")

    You can also jump through some hoops trying to use get_pname(session->window->hiForm) which gives you something like "sevWindowForm3".  You'll need to extract out the "3" (or whatever number) part, save to form_number, and then do something like:

    myForm=evalstring(sprintf(nil, "sevOutForm%d", form_number))

    sevSetTableItem(myForm->outListBox expression_number 2 "true") ;; to enable plotting

    sevSetTableItem(myForm->outListBox expression_number 3 "true") ;; to enable saving

    expression_number needs to be set to the index to this particular expression in the table.  You can get at that by using sevGetExpressions().

    but... all of this hacking of forms seems like a good way to have code that may work for a while on the current release and then possibly fail in unexpected ways on the next release because I don't think we (users) are really supposed to be poking around in the internals of the form. 

    This would be a nice enhancement though.  In general I feel like there could be a much nicer API for ADE-L which probably carries over to Explorer.  Personally, I'd love to have something for both design variables and outputs where there was a simple query by name:

    out_val = myGetOutputByName("FOO")

    and a simple way to set it along with maybe some flags to overwrite if it already exists and easily set the save/plot states.

    Good luck!

    -Dan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to drdanmc

    Hi Dan,

    With Explorer and Assembler, there's a new simplified interface (the sev functions are not properly documented in my opinion, with quite a lot of holes. Plus you were using a number of private capabilities there). There's maeAddOutput for example.

    The results with Explorer and Assembler are always in the RDB, so getting the results are more consistent. So in practice we're moving towards an API that works with Explorer/Assembler as the way forward, rather than adding something for ADE L which then works in the others. Architecturally it makes more sense to focus on the Explorer/Assembler way as that's the way forward.

    There may still be gaps in the "mae" APIs - but there's general willingness to fill those gaps.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 7 years ago in reply to drdanmc

    Hi Dan,

    Thanks a lot for the hints.

    The original request that I had was next one: people will provide a list of signals that must be in the save outputs, and if there are some signals that are not in thelist they need to be added .

    But for now, because there is no API,  we decided to implement something else: compare the initial list with what is already in the save outputs list and if there are missing signals a warning message has to be provided, and the user has to add the signals manually.

    BR,

    Marcel

    • 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