• 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. Calculator special function Forms

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 144
  • Views 17934
  • 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

Calculator special function Forms

Curtisma
Curtisma over 7 years ago

I am trying to make a calculator function with a form.  However I am finding the documentation to do this lacking and have some questions about setting up the form and about setting the buffer.

The example provided uses a function "ahiCreateStringField" which is otherwise undocumented.  It seems to act exactly the same as "hiCreateStringField" (no "a" at the start")  However when I define a field using a function without the a and one using the function with the a in the same calculator form it doesn't display the form when you click on the function in the calculator.  I also noticed that I seem to be able to add other types of fields by taking a normal form function and appending "a" on the front.  However none of theses other functions are mentioned at all in the documentation.  

Form Questions

1. What is the functional difference between "ahiCreateStringField" and "hiCreateStringField"?

2. Do all of the form functions have an "a" equivalent?  Is there a way to check what arguments they accept?

Buffer Questions

3. Currently I am using "calCreateSpecialFunctionsForm"  to set the calculator buffer.  However this automatically puts the current buffer value as the first argument to my function. It seems like I could write my own CB function using "calSetBuffer" to set the buffer,  Is there anything else I need to take care of when I do this? 

4.  Also I am using "calCreateSpecialFunctionsForm"  but it seems like it would be more flexible to perform it's function myself to make a more advanced form. I could use "calRegisterSpecialFunction" to register the function, and "hiCreateForm" to open the form.  Is there anything else I need to take care of when I do this?  Would I then need to use the form functions without "a" appended?

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Curtis,

    Are you using IC617 or ICADV122/123? If you are, then creating a form could be redundant - just want to ask this before I spend time answering a question that may be obsolete...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago
    I am using IC6.1.7
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago
    I am using IC6.1.7.

    Also note I made an edit to the last question of the original post to split it into 2 questions and clarify it.

    I don't think the function template will work in this particular case because it needs a more advanced form than specified in the template method. Also, I need to distribute this to several other designers and it is easier to do this in SKILL code loaded from the .cdsinit than to add the function template file to a Cadence directory which I don't think I have write access to without jumping through some hoops.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Curtis,

    The function template can be saved into the same file that you wrote your SKILL in, and then it can be loaded from the .cdsinit as well (there's an API to do this).

    Can you outline why you can't use the template? I'm calling it a night tonight (been a long day) but I'll try to answer your other questions soon (maybe tomorrow, all being well).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago

    Andrew:
    I am trying to make a dynamic form that takes an integer, say n, and then has n fields after it. Hence I need to be able to specify a callback for that first field.

    I was able to get that plotting method I had mentioned on this forum last week working. I already have it working with a fixed number of waveforms but would like to be able to specify an arbitrary number of waveforms. Right now the only formatting the general multi trace plot function does is use the name of the output as the title.

    I have also written an auto plot function that is used for a standard plot that we document each time we run final verification on our designs. It has a fixed set of signals that must be plotted using the same format each time and we often have to rerun it and format it manually each time. The user just specifies the actual expression for each standard signal, e.g. the supplies, standard outputs, etc. Then the function formats and annotates each of them appropriately.

    However I will likely want to be able to add some more options in the future to the more general use function. I'm not sure if I should develop a standard to try to specify all the formatting I want in the expression or if I should try and save the settings to the ADEXL database directly. Perhaps I could use "axlSDBPutExtension" to save the output's formatting as an extension to the database. I'm just not sure how to make sure that the output and the entry in the database are in sync. Such as if the user were to change the output information without using the form. I suppose I could just document the limitation and skip that particular output if it is corrupted or store most of the data in the database and make the output text very simple. It would be nice if there was a way to store more information in an output object, such as another SKILL++ object that could store the formatting of the plot.

    -Curtis

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago
    Hey Andrew:

    Have you had a chance to consider my questions? Any other comments?

    I hope you're doing well.

    -Curtis
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago
    Any body able to answer my questions?
    Andrew? I know you mentioned you were going to try to get to them soon but that was more than a week ago. I would guess the original questions would have straightforward answers.

    Thanks,
    Curtis
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Curtis,

    Apologies - I was out of the office 4 days last week (3 days on vacation) and am at a conference for 2 days this week and a customer for the next 2 days too. I did a bit of catch up on the plane on Sunday, and will do a bit more when travelling tonight - I've downloaded the complete thread and will aim to answer it then.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Curtisma
    Curtisma over 7 years ago
    No Worries. I just wanted to make sure it it hadn't been forgotten. Yesterday I also submitted a support request to see if someone could take a look at this post but I hadn't heard back yet. It would be great to get your comments though, especially since you are already familiar with what I am trying to do.

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

    Hi Curtis,

    Thanks for your patience. Some answers to your original questions:

    1. I believe the ahi functions add some wrappers around things (and have a slightly different return value than the standard forms) primarily to ensure that they are unique per ADE session. This prevents each ADE session from interfering with each other. You have to use all ahi or all hi - you can't mix them (AFAIK).
    2. From a quick look there does seem to be most of them present. They really ought to be documented, but we are gradually removing the need for them. It might be better for longer term sanity to contact customer support and ask for a mechanism to have dynamically added fields somehow in the template mechanism,
    3. I've never done it this way - instead for complicated things I've used calCalcInput. See abApplyToWave in this post
    4. I vaguely recall trying to use a form built with hi rather than ahi functions in the past, but I don't think it worked - probably because it expects to launch the form with ahiDisplayAppForm (and it's all or nothing). So you're on your own here - I simply have not pursued doing this, and I'm currently in the process of retrofitting the new built-in form to most of my existing calculator functions.

    As for your idea of using axlSDBPutExtension you might be better off using axlAddOutputsColumn to add a custom column in the outputs pane, and then using axlGetOutputUserDefinedData() to retrieve the value the user has entered (maybe the Set equivalent too if you're going to want to provide a means of populating the data).

    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