• 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. In the Assembler corner UI: Can we make one corner variable...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 8143
  • 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

In the Assembler corner UI: Can we make one corner variable dependent on another variable?

StephanWeber
StephanWeber over 3 years ago

Hi,

In my circuit the sense resistance is of course corner-dependent, like it changes by +-20% from slow to fast corner. I can compensate with my trimming bus, to use e.g. 32 for TYP, but e.g. 10 slow and 40 for fast. And I can use a trim variable with according settings in a corner setup. For only one corner combination like slow + trim=10- this is easy to setup.

However, I need to run many corners like Cslow, Rfast, 1v2MosFast, 5VmosSlow, etc. So I need a corner like R: slow typ fast, C: slowtyp  fast, 1v2mos: slow fast typ, etc., like 3x3x3... combinations to run.

Such setup is simple too, but now I also need to include the trim varaible, and I need trim=10 for Rslow, 0 for Rtyp and 40 for Rfast!

How can I set trim in corner UI according to the resistor corner?? If need something like a function taking R corner section  value string as input and using a case structure to deliver the right integer value for trim.

I hope this is possible with a little skill trick?

Bye Stephan

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

    Stephan,

    This is not that straightforward because you can't make it a function - e.g. using axlGetCornerNameForCurrentPointInRun() in a global variable expression because that doesn't work (I have CCR 2298397 asking for this). This function can only reused in output expressions and output ocean script measurements.

    The alternative might have been if we had support for "paramset" type links between parameters in complex corners (i.e.corners with sweeps) so that you could link two variables/sections with the same number of sweeps. Right now that can only be done by expanding the corners (you can expand as param set).

    One possibility would be to include a different model file with sections rather than the real resistor model files, which looked like this:

    library myresistors {
      section fast 
        include "realmodelfile.scs" section=fast
        parameters rtrim=40
      endsection fast
      section slow 
        include "realmodelfile.scs" section=slow
        parameters rtrim=0
      endsection fast
      section typ 
        include "realmodelfile.scs" section=typ
        parameters rtrim=0
      endsection typ
    endlibrary myresistors

    I didn't try this, but I think it should work in principle.

    Andrew

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

    Many thanks, Andrew. My current workaround is indeed to have groups of corners like all the ones with slow+trim=xxx, etc. Also the idea of paramesets came to my mind, but was not working. The file idea is good too, but our model file setup is complex. Maybe this is the way to go.

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

    Dear StephanWeber,

    StephanWeber said:
    How can I set trim in corner UI according to the resistor corner?? If need something like a function taking R corner section  value string as input and using a case structure to deliver the right integer value for trim.

    As perhaps you are aware Stephan, one means of providing this functionality is to pass a variable from one simulation to another using calcVal(). In fact, there are several means to provide a calibration simulation prior to a "main" simulation using the calibrated value from the calibration simulation at URL:

    https://support.cadence.com/apex/articleattachmentportal?id=a1O0V000006AicEUAS&pageName=ArticleContent&attachId=0690V000003i7fqQAA&sq=null&caseSessionKey=null

    It seems this is a more robust solution than parsing a model corner as your ability to parse the process case for resistor type may vary from process node to process node or PDK. Including a calibration run prior to the  main simulation guarantees the appropriate calibration word will be chosen for any process and environment. This method also more closely emulates the actual circuit as, in reality, some type of calibration will be performed using your sense resistor.

    Just a thought...

    Shawn

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan over 3 years ago in reply to StephanWeber

    Dear StephanWeber,

    StephanWeber said:
    How can I set trim in corner UI according to the resistor corner?? If need something like a function taking R corner section  value string as input and using a case structure to deliver the right integer value for trim.

    As perhaps you are aware Stephan, one means of providing this functionality is to pass a variable from one simulation to another using calcVal(). In fact, there are several means to provide a calibration simulation prior to a "main" simulation using the calibrated value from the calibration simulation at URL:

    https://support.cadence.com/apex/articleattachmentportal?id=a1O0V000006AicEUAS&pageName=ArticleContent&attachId=0690V000003i7fqQAA&sq=null&caseSessionKey=null

    It seems this is a more robust solution than parsing a model corner as your ability to parse the process case for resistor type may vary from process node to process node or PDK. Including a calibration run prior to the  main simulation guarantees the appropriate calibration word will be chosen for any process and environment. This method also more closely emulates the actual circuit as, in reality, some type of calibration will be performed using your sense resistor.

    Just a thought...

    Shawn

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