• 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. Vary transistor parameters using Monte Carlo simulation...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 15343
  • 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

Vary transistor parameters using Monte Carlo simulation.

EngTu
EngTu over 6 years ago

Hello colleagues, 

I am using Virtuoso version IC6.1.18 and Spectre -subversion 18.1.0.077.

I have tried both the Classic Spectre Simulation and the ADE XL tool to run Monte Carlo simulations (MCs) on a ring oscillator circuit. The Model Card used for this design is model n bsim3v3 and model p bsim3v3 (myModel.scs).  Simulation configurations were configured on a cfg control file by using the following command in the standalone (Classic Spectre Simulation):

spectre +config cfgMonteCarlo1 inverter_ring.scs

The cfgMonteCarlo1 and the inverter_ring.scs attached to this post.

The simulations were simulated successfully and their results were plotted in the viva XL tool for both tools (Classic Spectre Simulation and the ADE XL).

I read the following documents:

  • Spectre® Circuit Simulator Reference, Product Version 18.1,
  • Spectre® Classic Simulator,
  • Spectre Accelerated Parallel Simulator (APS), and Spectre Extensive Partitioning Simulator (XPS) User Guide, Product Version 18.

Also, I joined the online course Virtuoso Analog Simulation: T3 Monte Carlo Simulations Using ADEXL.

They explained about the commands how to vary transistor parameters in Spectre® Circuit Simulator Reference document and in the T3 online course but when I used these commands to vary transistor parameters by using the statistical blocks (Process and mismatch) as in cfgMonteCarlo2 file showed these errors:

Error found by spectre during hierarchy flattening.

ERROR (SFE-11): Unknown parameter `l' specified in process vary statement.
ERROR (SFE-11): Unknown parameter `vth' specified in process vary statement.
ERROR (SFE-12): Unknown parameter `l' specified in mismatch vary statement.
ERROR (SFE-12): Unknown parameter `vth' specified in mismatch vary statement.

Q1) the parameters are unknown, do I need to match the names of the above parameters as in the Model Card file? They do not exist in the model card at all under these names. So, how could I vary the transistor parameters (Gate length, Gate width, effective mobility, Threshold voltage) using the statistical blocks: Process and mismatch variation?

Q2) if I want to replace the Model Card I have (model n bsim3v3 and model p bsim3v3) with, for example, a PTM model Card 45nm? How could I do this safely without getting errors? I have tried many times and I have got some errors while I am running the simulation.  

Thank you in advance for your help and looking forward to your prompt response.

Turki

  • Cancel
  • EngTu
    EngTu over 6 years ago

    ------------------------------------------------------------------------

    //cfgMonteCarlo2

    simulator lang=spectre
    vdd_I1 ( vdd 0 ) vsource dc=3.3
    vss_I1 ( vss 0 ) vsource dc=0


    //simulatorOptions options save=all currents=all
    //tran1 tran step=0.010n stop=35n


    mc1 montecarlo variations=all numruns=100
    {
    tran1 tran start=0 stop=100n // a child analysis
    }

    parameters l=200 vth=10 μeff=1 

    statistics {
    process {
    // process: generate random number once per MC run
    vary l dist=gauss std=4 percent=yes 
    vary vth dist=gauss std=5 percent=yes 
    //vary μeff dist=gauss std=21 percent=yes 
    }

    mismatch {
    // mismatch: generate a random number per instance
    vary l dist=gauss std=4 percent=yes
    vary vth dist=gauss std=5 percent=yes 
    //vary μeff dist=gauss std=21 percent=yes 
    }
    }

    simulatorOptions options save=all currents=all

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • EngTu
    EngTu over 6 years ago in reply to EngTu

    I figured out the issue:

    • The transistor parameters names used in the configuration file //cfgMonteCarlo2 must match the names as in the model cards file for the model n bsim3v3 and model p bsim3v3.
    • Also, the parameters must be defined in the configuration file //cfgMonteCarlo2.

    • 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