Home
  • Products
  • Solutions
  • Support
  • Company
  • Products
  • Solutions
  • Support
  • Company
Community Forums Custom IC Design Finding and transferring the value of a variable that gives...

Stats

  • Replies 8
  • Subscribers 128
  • Views 1249
  • Members are here 0

Finding and transferring the value of a variable that gives the minimum value of an output in a test where more than one variable swept to another test using calcVal function in Assembler

baltaci
baltaci 2 months ago

Hello,

I am using Virtuoso version IC6.1.8.

My goal is to transfer and assign the output (let's call output_2) of one test (let's call test_1) to one of the variables (let's call var_2) of another test (let's call test_2) in Assembler.

In test_1, I run a DC analysis where I sweep temperature as the Sweep Variable in DC analysis settings. Additionally, I sweep another variable (let's call var_1) using the Design Variables (i.e. var_1 = 0:1:7).

At the end of test_1, I would like to find the var_1 value that results in the minimum output_1 value and transfer it to the var_2 variable of test_2. I can find the var_1 value that results in the minimum output_1 value by evaluating xmin(output_1) expression in the calcualtor and I get the correct var_1 value. However, when I assign the same expression to an output, I get "eval err" because this output is calculated for each swept var_1 value instead of taking the full range (0:1:7) into account. At the end, the following, which came to my mind as the first idea, doesn't work:

For test_1; output_2 =  xmin(output_1)

For test_2; var_2 = calcVal("output_2" "test_1")

How can I make this work?

Many thanks in advance.

Best regards,

Can

  • Reply
  • Cancel
  • Cancel
Parents
  • ShawnLogan
    ShawnLogan 2 months ago

    Dear Can,

    If I understand your question correctly, I think the use of the ?matchParams argument of the calcVal() function is what is needed. When ?matchParams is set to "all", calcVal() will look at all of the sweep points in  test_1. Have you tried that? In other words:

    var_2 = calcVal("output_2" "test_1" ?matchParams "all")

    The default value for ?matchParams is "none".

    The documentation for calcVal(), including an explanation of some common errors, is at the On-line support site at URL:

    https://support.cadence.com/apex/techpubDocViewerPage?xmlName=maeskillref.xml&title=Virtuoso%20ADE%20SKILL%20Reference%20--%20Output%20Functions%20-%20Troubleshooting%20calcVal&hash=pgfId-1116037&c_version=ICADVM20.1&path=maeSKILLref/maeSKILLrefICADVM20.1/measures.html#pgfId-1116037

    I do not have access to the Cadence tools to verify this currently, so I cannot be sure this will accomplish your objective, but it came to mind and wanted to at least suggest it Can.

    Shawn

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • baltaci
    baltaci 2 months ago in reply to ShawnLogan

    Dear Shawn,

    Many thanks for your answer. I tried to use ?matchParams "all" argument after your message but it didn't solve the issue.

    Can

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • ShawnLogan
    ShawnLogan 2 months ago in reply to baltaci

    Dear baltaci,

    baltaci said:
    tried to use ?matchParams "all" argument after your message but it didn't solve the issue.

    Sorry Can!! I thank you for trying, but am sorry to have wasted your time!

    Well, I re-read your Forum post again and I think I may have overlooked an important fact.

    baltaci said:
    I can find the var_1 value that results in the minimum output_1 value by evaluating xmin(output_1) expression in the calcualtor and I get the correct var_1 value. However, when I assign the same expression to an output, I get "eval err" because this output is calculated for each swept var_1 value instead of taking the full range (0:1:7) into account.

    I think the problem is that you have defined an output that is a measurement across all corners and not a value computed from one corner. There is a relatively new function measureAcross() that allows you to define an output that represents a measurement using all corners of a simulation set.

    I think the syntax you want to use is something like:

    For test_1; output_2 =  measureAcross( xmin(output_1) parameters list("temperature")) or

    output_2 =  measureAcross( xmin(output_1 ?overall t) parameters list("temperature"))

     You can add this as an output in Assembler as detailed in the reference manual at URL:

    support.cadence.com/.../techpubDocViewerPage

    The function definition for measureAcross() is at URL:

    https://support.cadence.com/apex/techpubDocViewerPage?path=maeSKILLref/maeSKILLrefICADVM20.1/measures.html#measureAcross

    if you clear the error with your output_2 output, I think you will be able to pass it to test_2.

    Shawn

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • baltaci
    baltaci 2 months ago in reply to ShawnLogan

    Hi Shawn,

    Many thanks for your answer. In fact, using measureAcross() works. I can build the test set-up correctly and transfer the output of one test to the variable of another test. However, I have a new issue now. If I run Monte Carlo mismatch analysis with the correct set-up, the second test takes very long, more than four days (still ongoing in fact)! Actually, when I look at the log files of each MC run, the simulation time is reported as 10 seconds. I have 400 MC runs in the second simulation: 400 x 10 sec = 66 minutes. If I run the second test standalone (i.e. with a pre defined var_2), it finishes in a reasonable time. However, if it is run with var_2 set by measureAcross() and calcVal(), the the time of the second test is very very long. Do you have any idea why? It seems that if a variable set using measureAcross() and the second test is run usng calcVal() in MC mismatch analysis, the algorithm spends a very large time somewhere between the MC iterations (in test_2).

    To check if this issue is specific to my design or not, I created a very simple schematic and maestro view where I have one vd
    c and one res from analoglib. I observe a very similar behaviour.

    What would you suggest regarding this issue?

    Many thanks in advance.

    Best regards,
    Can


    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • ShawnLogan
    ShawnLogan 2 months ago in reply to baltaci

    Dear Can,

    baltaci said:
    In fact, using measureAcross() works. I can build the test set-up correctly and transfer the output of one test to the variable of another test.

    Excellent! Thank you for letting us know! Once again, sorry for my first response - I shold have read your Forum post more carefully before I responded.

    baltaci said:
    It seems that if a variable set using measureAcross() and the second test is run usng calcVal() in MC mismatch analysis, the algorithm spends a very large time somewhere between the MC iterations (in test_2).
    baltaci said:
    What would you suggest regarding this issue?

    I do not have visibility into the Cadence CCRs and therefore do not know if this is a known issue or if there exists a workaround. Others who monitor this forum do aand may have a comment with respect this potential issue.

    However, your thoughtful test case and its result would serve as an excelllent resource to provide Cadence if you were to submit an SR by contacting customer support. One item I might suggest is to try the example that Cadence provides as a tar file in the support article detailing the use of measureAcross() with a Monte Carlo run at URL:

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O3w000009fpasEAA&pageName=ArticleContent

    It would be worth checking to see if its behavior is similar.

    Shawn

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 2 months ago in reply to ShawnLogan

    I wouldn't expect this behaviour - you must be using something recent if you're using measureAcross, so I would follow Shawn's suggestion and log a case via http://support.cadence.com

    Probably we'd need to get some insight into your setup and see log files, and so on to understand what's going on.

    Andrew

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • baltaci
    baltaci 1 month ago in reply to ShawnLogan

    Hi Shawn, Andrew, many thanks for sharing the link. I used the recommended set-up of the link. The simulation works the same as what I had before (i.e. it is the same correct set-up). However, the simulation time is still very long. I will proceed with creating a case in Cadence Support.
    Can

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • ShawnLogan
    ShawnLogan 1 month ago in reply to baltaci

    Dear Can,

    baltaci said:
    I used the recommended set-up of the link. The simulation works the same as what I had before (i.e. it is the same correct set-up). However, the simulation time is still very long. I will proceed with creating a case in Cadence Support.

    Thank you for the added information! Contacting Customer Support sounds like a great idea. Good luck Can.

    Shawn

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan 1 month ago in reply to baltaci

    Dear Can,

    baltaci said:
    I used the recommended set-up of the link. The simulation works the same as what I had before (i.e. it is the same correct set-up). However, the simulation time is still very long. I will proceed with creating a case in Cadence Support.

    Thank you for the added information! Contacting Customer Support sounds like a great idea. Good luck Can.

    Shawn

    • Cancel
    • Up 0 Down
    • Reply
    • 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.

© 2023 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information