• 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. Measurement across Corners/Sweeps/All in ADE Assembler

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 125
  • Views 8081
  • 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

Measurement across Corners/Sweeps/All in ADE Assembler

Senan
Senan over 3 years ago

Hello,

I am using Cadence Virtuoso version IC6.1.8-64b.500.6

I am running some calculations at the result of specific corner. for example, I am calculating the average current at the output of a resistor resulting from temperature change from -40 to 85 °C and at a specific process corner.

I do this by introducing an expression to th ADE Assembler output setup and changing the EvalType to "ALL"

Up to this point, I have had no issue 

However, if I add a second corner, the average current will be the average of the output from corner 1 and 2, while my target is to have the average of each individually

I hope I made the status clear

thank you in advance

Regards

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago

    It sounds as if you shouldn't be using EvalType=All but EvalType=Sweeps instead. That will measure across the sweeps, not across everything, and you'll get one result per corner.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thank you very much for your reply, 

    I have used your suggestion EvalType=Sweeps, unfortunately, it gives an evaluation error by the Cadence.

    In order to investigate this problem with you further, I have tried my temperature sensor on it to calculate the accuracy error (in °C) at three process corners with temperature variation. Note that this temperature sensor is working in the principle of temperature to frequency converter.

    The following results are performed for each corner individually. The results are following exactly the expression and I have no doubt about it

    To have all results in one simulation shot which is more convenient to compare between the process corners and also consume less time. I have selected the three corners together and I run the simulation. The simulation setup is shown below

    and below is the result of the run. As you can see the output frequency on the three corners is correct. But the calculation of the sensor accuracy is not correct as it was shown before

    This is accuracy equation I am using in the output expression

    ((((average(deriv(frequency(VT("/vout"))) ?overall t) * VAR("temp")) + value(frequency(VT("/vout")) 0)) - frequency(VT("/vout"))) / average(deriv(frequency(VT("/vout"))) ?overall t))

    Thank you once again for your help

    I do appreciate your time to solve my issues

    Regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Senan

    By the way, I have discovered something

    It looks like when I select the three corners together in the last simulation setup, the Cadence is not waiting to end with the corner to evaluate the expression, he is performing the expression at every step and hence giving wrong result

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to Senan

    OK, EvalType=Sweeps won't work because you are doing your sweep of temperature within the corners. You didn't mention that - which was rather important. If you add sweeps within corners, it just creates sub-corners which simply means you are getting many more corners. EvalType=All won't work because it looks across all the corners, as it wouldn't magically know which subset of the corners you wanted to average over.

    This can be solved by not varying the temperature in the corners, but instead adding a global variable temperature and sweeping that instead. Then you can use EvalType=Sweeps.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Andrew Beckett

    Dear Andrew

    Thank you very much for your great help,

    Perfectly now it is working as you can see 

    Regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Senan

    A minor question, please

    I see that if I sweep the temperature as available outside the corner setup is taking more time in simulation as compared if I do the sweep in the corner, I am thinking that ADE  Explorer is extracting the netlist for every sweep point run while sweeping inside the corner extract the netlist once

    is there a method to accelerate the sweep in ADE Explorer  like using the envGetVal("spectre.envOpts" "controlMode") as with ADEL parametric 

    Thanks

    Regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to Senan

    There is also some grouping of runs in ADE Assembler to change parameters in memory when it can. I'm not sure why that would be different between the two runs - I suggest you contact customer support.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Andrew Beckett

    Thank you Andrew,

    You cleared it all for me

    Regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Senan
    Senan over 3 years ago in reply to Andrew Beckett

    Dear Andrew,

    After you solved my problem by making the sweep of the temperature outside the corners,

    Now I am facing another problem if I add a second variable in the design like VDD sweep from 3 to 3.6 in 100 mV step. While I want my result over every voltage individually, but EvalType=Sweeps will mix the results of the temperature with the VDD sweeps.

    Thank you in advance

    Best Regards

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to Senan

    In that case, why don't you put the sweep of VDD in the corners?

    There is not complete flexibility here - we have measurement across sweeps, across corners, and across all - there's nothing to do "across a specific variable". The only way of really doing that (easily) is to do the analysis with (say) the ADE MATLAB interface (which requires an additional product) - but even then it would need some thought. 

    From what you've described though, it sounds as if putting the VDD sweep into the corners would solve it.

    Andrew

    • Cancel
    • Vote Up +1 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