• 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. ADEXL: detecting process corners

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 125
  • Views 16353
  • 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

ADEXL: detecting process corners

kawan
kawan over 10 years ago

Hello,

Is there anyway I can have a circuit block decide its output value based on the process corner selected? Details as follows:

So I set up my process corners  to go FF & SS & TYP in a ADEXL simulation.

Block A puts out a value to calibrate for the process corner, It has analog and digital circuitry inside with clocking and all te fancy stuff. But at the end of the day, the value put out feeds all other analog blocks so they can tune in to the process corner.

I can run Block A withe mixed mode sims and collect the data. So I now know the value based on the process corner.

Can I have a view for Block A that puts out the value  based on the corner that ADEXL is running its present simulation? In other words, how do I detect a process corner and act on that information.

Thanls

zakir

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    OK, here's an approach that should work and is fairly simple.

    First create a variable for your test called (say) cornerNum and give it a default value (say 0). Then over the test do Right Mouse->Pre Run Script. On the form hit the "Load Template" button and then the edit icon (the one on the left) and erase the contents and replace with:

    ocnxlUpdatePointVariable("cornerNum"
      sprintf(nil "%d"
        case(axlGetCornerNameForCurrentPointInRun()
          ("" 0)
          ("C0_0" 1)
          ("C0_1" 2)
          ("C0_2" 3)
          ("C0_3" 4)
          ("C0_4" 5)
          ("C0_5" 6)
          ("C0_6" 7)
          ("C0_7" 8)
          ("C0_8" 9)
          (t 0) ; default in case matching corner not found
        )
      )
    )

    Save and quit the editor and OK the form. You could also just refer to an existing file rather than using the template approach, but I was trying to keep it simple.

    If I use VAR("cornerNum") in my output expressions, I see the corner number tracking the corner. Of course, you can change the above case statement to match your actual corner names, or use SKILL code to look up the mapping from a file, or rather than having a corner number you could use your captured calibration values - take your pick.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    OK, here's an approach that should work and is fairly simple.

    First create a variable for your test called (say) cornerNum and give it a default value (say 0). Then over the test do Right Mouse->Pre Run Script. On the form hit the "Load Template" button and then the edit icon (the one on the left) and erase the contents and replace with:

    ocnxlUpdatePointVariable("cornerNum"
      sprintf(nil "%d"
        case(axlGetCornerNameForCurrentPointInRun()
          ("" 0)
          ("C0_0" 1)
          ("C0_1" 2)
          ("C0_2" 3)
          ("C0_3" 4)
          ("C0_4" 5)
          ("C0_5" 6)
          ("C0_6" 7)
          ("C0_7" 8)
          ("C0_8" 9)
          (t 0) ; default in case matching corner not found
        )
      )
    )

    Save and quit the editor and OK the form. You could also just refer to an existing file rather than using the template approach, but I was trying to keep it simple.

    If I use VAR("cornerNum") in my output expressions, I see the corner number tracking the corner. Of course, you can change the above case statement to match your actual corner names, or use SKILL code to look up the mapping from a file, or rather than having a corner number you could use your captured calibration values - take your pick.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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