• 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 Design
  3. Using Existing Calculator Functions in Custom SKILL Functions...

Stats

  • Replies 3
  • Subscribers 126
  • Views 1692
  • Members are here 0

Using Existing Calculator Functions in Custom SKILL Functions for ADE Assembler

baltaci
baltaci 5 months ago

Hello,

I am currently developing custom calculator functions using SKILL for use within ADE Assembler, and I would like to confirm whether it is possible to reuse existing built-in calculator functions (such as lshif, clip, deriv, etc.) directly within my SKILL code.

For example, if I want to define a custom waveform function that internally uses a left shift or applies a clipping operation, can I call these built-in functions from my SKILL implementation — or are they only available through the ADE calculator GUI?

If this is supported, could you kindly provide a very simple working example of a custom SKILL function that internally uses one of these existing calculator functions (e.g., lshif or clip)?

I would greatly appreciate your help or any official documentation that explains this behavior.

Best regards,

Can

  • Sign in to reply
  • Cancel
Parents
  • Volker T
    Volker T 5 months ago

    Sure you can. Simple example using clip function to clip from first waveform value to specified end of waveform values:

    procedure( clipTo( signal to )
        (cond
            ((drIsWaveform signal)
                clip(signal firstVal(signal) to)
            )
            ((famIsFamily signal)
                (famMap 'clipTo signal to)
            )
            (numberp(signal)
                signal
            )
            (t
                (error "clipTo: Signal %L is neither a waveform, nor a waveform family.\n" signal)
            )
        )
    )

    You see, the function uses the standard "clip" function, but inserts firstVal(signal) as start of clipping, again "firstVal" being a calculator function.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 5 months ago in reply to Volker T
    Volker T said:
    Sure you can. Simple example using clip function to clip from first waveform value to specified end of waveform values

    Thanks for this - you beat me to it!  Joy

    A small (rather pedantic) point - you could just use clip(signal nil to) - if nil is specified as one of the clip limits, it defaults to the first (or last if it's the third argument) point. 

    However, the key point here was to show a simple example, and you did that beautifully - thanks very much!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett 5 months ago in reply to Volker T
    Volker T said:
    Sure you can. Simple example using clip function to clip from first waveform value to specified end of waveform values

    Thanks for this - you beat me to it!  Joy

    A small (rather pedantic) point - you could just use clip(signal nil to) - if nil is specified as one of the clip limits, it defaults to the first (or last if it's the third argument) point. 

    However, the key point here was to show a simple example, and you did that beautifully - thanks very much!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Volker T
    Volker T 5 months ago in reply to Andrew Beckett

    Andrew, any "pedantic" points that make the code more efficient are very welcome on my side...Thumbsup

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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