Home
  • Products
  • Solutions
  • Support
  • Company
  • Products
  • Solutions
  • Support
  • Company
Community Forums Custom IC Design Error During Using calcVal for Calibration and Performing...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 128
  • Views 22020
  • 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

Error During Using calcVal for Calibration and Performing Temperature Sweep

baltacican87
baltacican87 over 4 years ago

Hello,

I am using Virtuoso version IC6.1.7.

I would like to perform a very simple calibration (transient) simulation in ADE Assembler, where I run two simulations. Let's call them calibration and main_test. I have two variables. They are called myVar and temperature (is the temperature basically). In calibration, I measure one voltage output (scalar, let's call v1) at nominal conditions (process, temperature and voltage). In main_test, i provide v1 as a the value of myVar by using calcVal function as:

calcVal("v1" "calibration").

Additionally, I would like to perform main_test for two temperature values that are 25 and 30. For that, I check the box next to temperature under the design variables section of the main_test simulation and enter 25 30. The simulations works well for calibration. However, I get the following error in main_test:

ERROR (SFE-1996): "input.scs" 13: Parameter 'myVar': Cannot run the simulation becaise an unknown parameter 'nil' has been specified in expression 'nil'. Correct expression and rerun the simulation.

As an extra information, if I enter a single value for temperature, main_test runs without any problem. Only multiple entries result in failure.

Many thanks in advance for your support.

Best regards,

Can

  • Cancel
  • Dimitra Papazoglou
    Dimitra Papazoglou over 4 years ago

    Hi Can,

     In your case you are using calcVal and also having a local sweep. You are trying to pass a value from (single point) calibration test to (multiple points) main_test and the propagation (1 to multiple) cannot be done without clarifying what exactly you want to do. Thus it does not pass the value at all in the end and nil is printed in the netlist for myVar.
    So for your case, you need to add arg ?getFirstSweepPoint to specify that you want the first v1 value of calibration test (even though there are not more v1 values in your case!). So the calcVal expression should be like below:
    myVar calcVal(“v1” “calibration” ?getFirstSweepPoint t)
    After adding the above it should be ok.
    Regards,
    Dimitra
    • Cancel
    • Up +2 Down
    • Cancel
  • baltacican87
    baltacican87 over 4 years ago in reply to Dimitra Papazoglou

    Hi Dimitra,

    Many thanks for your answer. Now the simulation works with no problem and I can perform a temperature sweep in main_test by having the first value of v1 obtained from calibration, used in all temperature points in main_test.

    My second step is to perform a Monte Carlo simulation including process variations and mismatch (i.e. performing the previous test for each Monte Carlo seed separately, by having the v1 value calculated in calibration for each Monte Carlo seed separately and assigned to myVar in each following main_test). However, what happens is that the simulator assigns the v1 value obtained from calibtarion of the first Monte Carlo seed to myVar in main_test for all following Monte Carlo seeds. What should I do to have the different v1 values assigned to myVar for each separate Monte Carlo seeds?

    Many thanks in advance.

    Best regards,

    Can

    p.s. The temperature sweep in main_test should still be applied.

    • Cancel
    • Up 0 Down
    • Cancel
  • Dimitra Papazoglou
    Dimitra Papazoglou over 4 years ago in reply to baltacican87

    Hi Can,

     I assume that by saying Monte Carlo Seed you mean Monte Carlo sample/iteration. 

    If my assumption is correct then for your case you need to assign the following to myVar:

    myVar = calcVal(“v1” “calibration” ?matchParams list( list("temperature" "27") ) )

    to specify to match myVar for temp 25 and 30 with what v1 returns for temp 27 (which is the temp of "calibration" ) for each Monte Carlo iteration. 

    ?matchParams is a very useful argument to specify which values to pass via calcVal and can be used with various ways. For more details have a look into the below documentation, you might need it for the future. 

    Using calcVal() and its arguments with ADE Assembler

    Regards,

    Dimitra

     

    • Cancel
    • Up 0 Down
    • Cancel
  • venkmanbuster
    venkmanbuster over 2 years ago in reply to Dimitra Papazoglou

    Hi Dimitra,

    Thanks. I had a similar problem and it worked for me too. Can you tell me in the argument  ?getFirstSweepPoint t, we have 't' for any specific parameter or it's just part of the argument ?getFirstSweepPoint?

     

    • Cancel
    • Up 0 Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to venkmanbuster

    The ?getFirstSweepPoint argument is a keyed argument (i.e. specified by name) and for these there is a key and a value. So the t is the value to indicate that getFirstSweepPoint should be enabled. If nil was specified (which is the default), then getFirstSweepPoint would be disabled.

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

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

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