• 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. "calcval" doesn't work with reliability simulation(for aged...

Stats

  • Replies 5
  • Subscribers 125
  • Views 925
  • Members are here 0

"calcval" doesn't work with reliability simulation(for aged analysis)

RA202502215244
RA202502215244 5 months ago

hi,

i'm trying to run "calcval" function withing reliability simulation, while taking output expression from source simulation as variable for the target one..

i added the required setups as "?relxName" & "?ageValue".

for "fresh" analysis it does work, but in "aged" analysis somehow it gives me a waveform with all the corner sweep results from source simulation to target(like it doesn't correlating the results according to corner).

is it a bug which supposed to be solved in the future? is there any workaround to solve it?

Thx

  • Sign in to reply
  • Cancel
  • JankoK
    JankoK 5 months ago

    Hi,

    Perhaps you are missing ?getFirstSweepPoint or ?cornerName... This is very hard to debug without a complete context. A few screenshots would help, but it is probably best to file a case on support.cadence.com and work with you local AE over a screen-sharing session. 

    BR

    /Janko

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • RA202502215244
    RA202502215244 5 months ago in reply to JankoK

    hi,

    Thx for the reply, will explain my self brightly.

    i'm running gradual aging simulation of 10 years. i have 2 reliability analysis simulations, where i take fresh & aged expression outputs from source simulation, and using them as variable inputs for the "fresh" & "aged" test of the target simulation respectively:

    The variable inputs are calcval functions of course:

    variable for fresh: calcVal("phase_offset_error" "fresh_pb_vern132" ?relxName "aging_cp_vern132_test" ?ageValue "Fresh" ?getFirstSweepPoint t)

    variable for aged: calcVal("phase_offset_error" "fresh_pb_vern132" ?relxName "aging_cp_vern132_test" ?ageValue "10" ?getFirstSweepPoint t)

    The reason why i use "getFirstSweepPoint" is because the target simulation contains a sweep.

    after running simulation, the "Fresh" input variable is valid, but for "aged" one i'm getting the following netlist error:

    *Error* ERROR (ASSEMBLER-2736): Failed to evaluate the calcVal("phase_offset_error" "fresh_pb_vern132" ?relxName "aging_cp_vern132_test" ?ageValue "10" ?getFirstSweepPoint t) expression from test 'fresh_pb_hys_vern132_aged' because the evaluation data point cannot be determined.  Ensure that the provided corner nil exists and is enabled.

    The only way it works is at the following options:

    1. when running single corner, and changing calcval setups to"?getFirstSweepPoint nil"

    2. when running few corners, but changing calcval setup to ?getFirstSweepPoint nil" & also adding ?cornerName" with a specific corner.

    At the rest of the cases, it gives me a netlist Error.

    it seems like calcval is not working the same when trying to move "aged" results from one test to another(or maybe the "gardual aging" is the problem here).

    anyway, it will be lovely to get help..

    Thx

      

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • JankoK
    JankoK 5 months ago in reply to RA202502215244

    Hi,

    Yes, there used to be a problem with gradual aging, where it only "saw" the fist age point. This should have been fixed in latest versions. Anyway, your testcase might be specific in some sense, your results have multiple dimensions over sweeps, corners, multiple age points... it gets complicated for calcVal() to fetch the right thing from complex database. So, your example might still be broken. That's why I suggested filing an official case, so someone can investigate your specific case.

    BR

    /Janko 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • RA202502215244
    RA202502215244 5 months ago in reply to JankoK

    thank you very much,

    submitted a case...

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • Harsh Gupta
    Harsh Gupta 5 months ago in reply to RA202502215244

    In order to use the calcVal() feature for Reliability, we have to use the calcValForRel() function, which is built using calcVal() but is specific to the Reliability flow.

    Its recommended to use the latest IC23.1 ISRs for running calcValForRel() like one shown: 

    calcValForRel("phase_offset_error" ?relxName "aging_cp_vern132_test" ?ageValue "10")

    • 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