• 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. Assembler: How to achieve a trimming with calcVal for a...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 125
  • Views 9245
  • 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

Assembler: How to achieve a trimming with calcVal for a corner analysis, e.g. for process , T and Vdd?

StephanWeber
StephanWeber over 2 years ago

Hi,

I managed to implement a trimming with calcVal and using?&cornerName "Nominal" for Monte-Carlo. I need to trim at typ. T and Vdd, and it works great. However, next I want to create a setup for the corner run, with trimming for all different process corners (like FF, SS) vs T and Vdd, for trim done at nom. T and nom. Vdd.

However, it looks very difficult, although initially I thought matched params or 1st point option could help.

Here is an overview: Corner setup like p(TT,SS,..)+T(27,125)+Vdd(nom,max)

                  TT+27C+Vddnom                          TT + 125C + Vddmax            FF+27C+Vddnom    FF+125C+Vddmax

TrimTest      run it                                         no need to run                                 run it                  no need to run

VerifTest   take calcVal from the above      take fromTTS + 27C+Vddnom     take from above      take from FF+27C+Vddnom

Can anybody tell me how to setup calcVal for this?

Alternatively, I could also setup corners only for process, but use a sweep for T and Sweep. The disadvantage here would be that I would not be able for sweep parameters with having pass/fail for T and Vdd.

Bye Stephan

  • Cancel
Parents
  • StephanWeber
    StephanWeber over 2 years ago

    Hi,

    I found in the Cadence help for calcVal this hint:

    To use the results of a non-identical corner from the source test, use the default value of ?matchParams and specify the corner name of the source test by using the ?cornerName argument.

    This might be close to what I need?

    My corner setup is like this:

                      TT                             FF

    temp          27 125                    27 125

    mosSection TT                           FF

    This gets expanded as:

    TT_0, TT_1, FF_0, FF_1

    The verification test needs to be executed at all 4 corners, but the trim test only at TT_0 and FF_0.

    So for FF_1 the verification test should use calcVal with referencing to FF_0 results from the trim test.

    Could something like this work?

    trimVal = calcVal("trimFound" "testTrim" ?cornerName "OwnCornerName" ?matchParams list("temp" "27"))

    How to define the same process corner name?

    Bye Stephan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to StephanWeber

    There was another similar question recently here. If that doesn't help, I suggest you contact customer support.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to StephanWeber

    There was another similar question recently here. If that doesn't help, I suggest you contact customer support.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • StephanWeber
    StephanWeber over 2 years ago in reply to Andrew Beckett

    Indeed, this post looks very similar. I will try to apply the tricks like calcVal("VBIAS" "calTest" ?ignoreParams list("vdd" "temperature" "modelFiles"))

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • StephanWeber
    StephanWeber over 2 years ago in reply to StephanWeber

    Hi Andrew,

    I think I made my full setup as you described, i.e. with having two corners (one fix, one with sweep on temperature).

    Only one small difference: I have 2 trim tests (both enabled only to the non-sweep corner).

    The transfer from Test1 to Test2 works, but not to Test3:

    In the verification test which is using calcVal("VBIAS" "calTest" ?ignoreParams list("temperature")) I got now "nil" netlisted.

    Do you have an idea what goes wrong?

    In Test2 I use calcVal("trimOpI" "Test1" ?ignoreParams list("temperature")) and have no problem.

    The execution sequence in ADE looks fine, i.e. we wait for Test3 till Test1+2 are executed.

    Bye Stephan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to StephanWeber

    Stephan,

    Please contact customer support. It's very hard to debug these things via the forums - we really need to set the precise setup to figure out what's going on.

    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