• 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. desVar interdependencies in maestro

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 126
  • Views 10108
  • 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

desVar interdependencies in maestro

Ymmen
Ymmen over 3 years ago

hi,

In maestro view (ADE Explorer) I have defined desVar "Vin1" which is a function of another desVar "Pin1".

Pin1 = -40

Vin1 = sqrt(2*50*10**((Pin1-30)/10))

In HB analysis when I sweep Pin1 from -40 to 0, I see Pin1 sweeping but Vin1 evaluates 3.16e-3 which corresponds to Pin1=-40. In other words, Vin1 does not change its value with the sweep. This problem is seen in maestro. ADEL didn't had this issue. In picture attached I have added netlist and maestro view. 

Is there a way we can enable desVar interdependency so that if one of them is swept, the other updates automatically?

virtuoso: IC6.1.8-64b.500.20

spectre: 19.1.0.373.isr7

Fullscreen 0714.netlist.txt Download
// Point Netlist Generated on: Feb 24 09:19:28 2022
// Generated for: spectre
// Design Netlist Generated on: Feb 24 09:19:28 2022
// Design library name: NUECES_ygoel
// Design cell name: HB_plots
// Design view name: schematic
simulator lang=spectre
global 0
parameters Pin1=-40 frf1=1G Vin1=3.16227766016838e-3

// Library name: NUECES_ygoel
// Cell name: HB_plots
// View name: schematic
PORT1 (net2 0) port r=50 type=sine
PORT0 (net1 0) port r=50 type=sine freq=frf1 ampl=Vin1
R0 (net1 net2) resistor r=1m
simulatorOptions options psfversion="1.4.0" reltol=1e-3 vabstol=1e-6 \
    iabstol=1e-12 temp=27 tnom=27 homotopy=all scalem=1.0 scale=1.0 \
    gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 digits=5 cols=80 pivrel=1e-3 \
    sensfile="../psf/sens.output" dochecklimit=yes checklimitdest=both \
    bsimsoi_va=yes disk_check_thresh=1.048576e+08 
sweephb  sweep  param=Pin1  start=-40  stop=0  step=20  {
  hb  hb  tstab=0  oversample=[1]  fundfreqs=[(frf1)]  maxharms=[5]
+   errpreset=moderate  annotate=status

}

modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts where=rawfile
asserts info what=assert where=rawfile
saveOptions options save=selected

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 3 years ago

    Dear Ymmen,

    Ymmen said:
    In HB analysis when I sweep Pin1 from -40 to 0, I see Pin1 sweeping but Vin1 evaluates 3.16e-3 which corresponds to Pin1=-40. In other words, Vin1 does not change its value with the sweep. This problem is seen in maestro. ADEL didn't had this issue. In picture attached I have added netlist and maestro view. 

    It appears there is a known deficiency in IC6.1.8 shown at the following URL:

    support.cadence.com/.../techpubDocViewerPage

    and included below for your convenience. In your case, have you set Pin1 as a global variable?



    CCR 875662: A dependent expression always takes values from the global variable even if the local variable is enabled for a test

    Description: If a dependent expression is based on a variable that is overridden and enabled at the test level to use its local value, its output incorrectly uses the value specified for that variable at the global level.

    Solution: To use the local value in the dependent expression, define the expression inside another variable defined at the test level.

    Shawn

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

    Thanks for the reply Shawn. In my case, I am using ADE Explorer instead of ADE Assembler. So I think In my case all design variables are local and there is nothing defined as global variable. Pin1 is not defined explicitly as global variable.

    given info above, "Vin1" should have depended on "Pin1", as PIn1 is not defined as global variable?

    you can see the screenshot of maestro (ADE explorer) view in my first post.

    Thanks

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

    This is a bug. We've had some challenges in certain cases where dependent variables are prematurely evaluated, which breaks a variable being swept as in this case. The challenge is that you can have SKILL expressions in ADE which have to be evaluated before simulation, but some expressions could be handled by the simulator (such as these) and if you want to sweep one of the dependencies you really need it to be deferred.

    I'll file a CCR for this specific case (since I created a testcase to try it out). You can workaround it by using this instead:

    (2*50*10**((Pin1-30)/10))**0.5

    It seems to be the sqrt that is causing the trouble.

    Andrew

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

    Thanks for the workaround Andrew. it would be great if you can post the CCR number once you file it. that way I can track it and apply the fix whenever available.

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

    Thanks for the workaround Andrew. it would be great if you can post the CCR number once you file it. that way I can track it and apply the fix whenever available.

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

    The CCR is 2619468. To track this, you'll need to log a case with customer support and request that a duplicate is filed on your behalf.

    Regards,

    Andrew.

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