• 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. set parameter in definition files of adexl but given error...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 125
  • Views 17168
  • 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

set parameter in definition files of adexl but given error of variable not defined (monte carlo simulation)

monglebest
monglebest over 7 years ago

I want to vary some resistor/capacitor values in monte carlo simulation and hence write a definition file named mc.h to be included in adexl simulation.

But the adexl will still request me to give values to this parameters.

What's more, my stastictics block are not recognized by monte carlo simulation and hence there is no variation reported in the output. Can anyone tell me what do I do wrong?

I have tried to post twice here but my post was considerred as abusive, I don't understand why. I will post more codes if this post will be posted.

  • Cancel
  • monglebest
    monglebest over 7 years ago

    I am trying to do a similar thing as the bottom links did but my object to change is resistor/capacitors in analoglib. I try to see monte carlo variation results for a passive network composed of LC. I tried to include .h file but the adexl report variable are not set error. May I know if is this the right way to run parameters monte carlo simulation in adexl?

    // Generated for: spectre
    // Generated on: Aug 2 16:07:12 2018
    // Design library name: gaofeng_28nm_tb
    // Design cell name: tb_low_pass_filter_v3_2Aug2018
    // Design view name: schematic
    simulator lang=spectre
    global 0
    include "/proj/nio/users/gfan/sos/nio_28nm_ip/cdsrun/mc.h"

    // Library name: gaofeng_28nm_tb
    // Cell name: tb_low_pass_filter_v3_2Aug2018
    // View name: schematic
    R32 (Vin2 net7) resistor r=50
    R27 (Vin2 net1) resistor r=Rs_Elliptic
    R34 (Chebyshev_PreDistort_Tune net11) resistor r=8.21
    R33 (0 Chebyshev_PreDistort_Tune) resistor r=10K
    R29 (Elliptic_Tune_10K net12) resistor r=16
    R28 (0 Elliptic_Tune_10K) resistor r=10K
    C35 (net1 Elliptic_Tune_10K) capacitor c=2.18p
    C37 (net7 0) capacitor c=7.6p
    C34 (net1 0) capacitor c=1.73p
    C36 (Chebyshev_PreDistort_Tune 0) capacitor c=7.28p
    C33 (Elliptic_Tune_10K 0) capacitor c=4.67p
    L21 (net7 net11) inductor l=25n
    L20 (net1 net12) inductor l=17.51n
    V1 (Vin2 0) vsource mag=1 phase=0 type=dc
    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
    tnom=27 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" \
    checklimitdest=psf 
    ac ac start=10M stop=10G dec=20 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
    saveOptions options save=all pwr=all currents=all

    What's inside my "mc.h" is

    parameters Rs_Elliptic=50 C1_Elliptic=1.73p L2_Elliptic=17.51n C3_Elliptic=4.67p Cp2_Elliptic = 2.18p Rl_Elliptic=10K R2para_Elliptic=16
    parameters Rs_Chebyshev=50 C1_Chebyshev=7.6p L2_Chebyshev=25n C3_Chebyshev=7.28p Rl_Chebyshev=10K R2para_Chebyshev=8.21

    statistics {
    process {
    vary Rs_Elliptic dist=gauss std=12 percent=yes 
    vary C1_Elliptic dist=gauss std=12 percent=yes
    vary L2_Elliptic dist=gauss std=12 percent=yes
    vary C3_Elliptic dist=gauss std=12 percent=yes
    vary Cp2_Elliptic dist=gauss std=12 percent=yes
    vary Rl_Elliptic dist=gauss std=12 percent=yes
    vary R2para_Elliptic dist=gauss std=12 percent=yes
    vary Rs_Chebyshev dist=gauss std=12 percent=yes
    vary C1_Chebyshev dist=gauss std=12 percent=yes
    vary L2_Chebyshev dist=gauss std=12 percent=yes
    vary C3_Chebyshev dist=gauss std=12 percent=yes
    vary Rl_Chebyshev dist=gauss std=12 percent=yes
    vary R2para_Chebyshev dist=gauss std=12 percent=yes
    }
    mismatch {
    vary Rs_Elliptic dist=gauss std=2 percent=yes 
    vary C1_Elliptic dist=gauss std=2 percent=yes
    vary L2_Elliptic dist=gauss std=2 percent=yes
    vary C3_Elliptic dist=gauss std=2 percent=yes
    vary Cp2_Elliptic dist=gauss std=2 percent=yes
    vary Rl_Elliptic dist=gauss std=2 percent=yes
    vary R2para_Elliptic dist=gauss std=2 percent=yes
    vary Rs_Chebyshev dist=gauss std=2 percent=yes
    vary C1_Chebyshev dist=gauss std=2 percent=yes
    vary L2_Chebyshev dist=gauss std=2 percent=yes
    vary C3_Chebyshev dist=gauss std=2 percent=yes
    vary Rl_Chebyshev dist=gauss std=2 percent=yes
    vary R2para_Chebyshev dist=gauss std=2 percent=yes
    }
    }

    My reply to the below link has been identified as abuse.

    https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/11630/monte-carlo-analysis-varying-spice-model-files/16002#16002

    https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/31159/monte-carlo-simulation-cadence-ic6/1339524#1339524

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • monglebest
    monglebest over 7 years ago

    I am not able to post my statistics sentences here and I don't know why it considered abusive.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to monglebest

    Your post (which I approved and then merged into this thread) was flagged as potential spam because of the repeated text in the post (not your fault). That's one of the strategies that has to be taken because of the occasional spam attacks we face on the forums where we get lots of repeated (often non-English) text posts. All it means is that it goes into moderation where a human (usually me) reviews and then approves or denies the post. So I approved this one, but denied the post you made with the exact same contents which was on the end of an 8-year old thread. The forum guidelines ask you not to duplicate post or post on the end of very old threads (of course, you were probably just trying to find a way to post the details).

    Anyway, ADE will automatically find any variables that are used in the design directly and expect them to be set in the ADE UI. So I would suggest that you take out the parameters statement from your included file and define all those variables in ADE - then ADE will netlist the parameters statements.

    Note however that mismatch won't work in your setup as described - because mismatch normally is applied to the usage of a parameter in each subckt instance. In this case there are no subckts around the components. However, I think you can solve this by setting the option mismatchlevel=1 - this may not be on the ADE Options form, so you may need to go to Simulation->Options->Analog, Miscellaneous tab and then at the very bottom in the Additional Arguments field type mismatchlevel=1.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • monglebest
    monglebest over 7 years ago in reply to Andrew Beckett

    Thank you, Andrew B:

    I was really frustrated initially when my code was treated as spam/abusive. 

    I have tried your suggestion of applying mismatchlevel=1 and it works and I am able to see the ac response variation. Meanwhile, I have tried to use "spectre input.scs" to run monte carlo but was turned to be too complicated and also viva/calculator doesn't support the transition smoothly.

    May I know when can I find the information related to "mismatchlevel=1". It seems on the another level of programming language, I guess it's ocean skill? Anyway, I get lost with so many user manual provided from cadence.

    Regards

    monglebest

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to monglebest

    This is a spectre option - so it's a parameter to the options statement in Spectre's language. It's covered in the Spectre documentation <SPECTREinstDir>/bin/cdnshelp - you can search for mismatchlevel. Or you can use "spectre -h options" from the UNIX command line and see the option there.

    In general statistics blocks are normally only set up by foundries when they deliver their models, and not by end users. Using mismatchlevel would normally then be set as part of the models rather than by a user on the form, and even then it's more usual to have subckt models for devices with mismatch variation, so this is a fairly rarely used option (it's a relatively recent addition to spectre too).

    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