• 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. Monte Carlo Simulation: Global+Local vs Local and Process...

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 128
  • Views 56362
  • 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

Monte Carlo Simulation: Global+Local vs Local and Process vs Mismatch

yayla
yayla over 13 years ago

Hi,

I am runnig some Monte Carlo simulations and there are some options for model libraries like Global+Local and Local. Also, after choosing model setup in ADE, in Monte Carlo simulation, you can choose Process only, Mismatch Only and Process and Mismatch. First, I want to learn what the diffrence is between model setup(Global+Local vs Local) and difference between Monte Carlo Options(Process&Mismatch vs Process vs Mismatch). I have searched a litlle bit  and I have talked with colleagues but I couldn't find so much useful info.

If you help me or direct me to some useful references, I will appreciate.

 

Thanks,

yayla

  • Cancel
Parents
  • HoWei
    HoWei over 5 years ago

    Hi,

    more than 8 years later, I still have the same question and did not find any useful information on this topic.

    What I understood so far is:

    1. In Corner (ss/tt/fs/sf/ff) simulations the variation from wafer-to-wafer and lot-to-lot is simulated. But all devices do have the same model-parameters during simulation - means "deviceA" behaves the same as its adjacent "deviceB" with model parameters of the actual simulated corner. No mismatch between devices.

    2.  "MC_local" simulates the variation (mismatch) of devices within one wafer - means "deviceA" has slightly different model-parameters as its adjacent "deviceB", but at the typical "tt" process corner. So it is assumed that the process corner is "tt".

    3.  "MC global" simulates the variation (mismatch) of devices from wafer-to-wafer and lot-to-lot. This is like a Corner simulation, but "deviceA" can have the "slow"-corner-parameters, whereas its adjacent "deviceB" can have "fast"-corner-parameters.

    Now, what I have difficulties with, is to understand the use-case for point 3. As an example, in a differential amplifier, it might not happen that one device is at "fast" whereas the other device is at "slow",right ? What instead can happen is, that both devices are at "slow", but do have the "local" variation around this "slow" process corner.

    What I would like to simulate is, to set a process corner (ss/ff/tt..) and the apply local variation to the devices within each process corner.

    I think I am missing something in my understanding of process corners and MC simulations.

    Can anyone explain the missing parts ?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to HoWei

    I'm not sure what this "MC global" is that you are taking about. This might be something in the particular PDK/models you've got, but it's not how Spectre normally works. Other than corners (which are straightforward to understand), spectre has three different things it can simulate with monte carlo:

    1. Process. This is where you have distributions for various parameters, and each monte carlo point randomises the parameter within that distribution, and then uses the value of that parameter everywhere. Effectively this is doing a global variation, and it means that you are effectively simulating lot to lot random variation, and excluding any local (mismatch) effects.
    2. Mismatch. This is where you have distributions for various parameters (and it will be a different distribution than the process variation) and in each monte carlo point it randomises the parameter within that distribution for each instance in the design. So each instance will see a different value of that parameter, and hence it models the effective of local random variation. I find the term "mismatch" a little misleading because it's not really simulating mismatch, but mismatch is a consequence of the local random variation.
    3. All. This first determines the Process (global) variation across the entire lot per point, and then each instance will have the local (mismatch) variation about that global process value. So you can think of it that the process variation moves the mean value for all devices for that point in the monte carlo, and then the mismatch (local) variation provides the device to device variation. Put another way, All is doing Process+Mismatch together

    There's nothing in spectre that would apply process variation differently per instance (i.e. point 3 in  your list above)

    Some foundry models are a bit odd however - they require you to use "All" all the time, and then the model section you pick ensures that the variation is appropriately computed. You'd need to check with the foundry (or their documentation) to understand exactly what they are doing.

    I always point out too that "mismatch" is actually modelling the remaining random local variation and is not trying to model systematic effects (e.g. due to poor layout alignment or proximity). Sometimes people worry about how they should be correlating the parameters to capture how well the layout is aligned, but in general that's not what Monte Carlo models capture. That said, a design which is sensitive to random local variation of instances is likely to also require well matched layout, so information about mismatch contributions can be useful to prioritise good layout practice (although understanding the design normally tells you that too).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to Andrew Beckett

    Dear HoWei,

    I might be able to shed a little more light on your question based on experience with our foundry.  What may, or may not, be confusing you is the process cases offered by your foundry. Our foundry offers a set of process corners with two options - the standard corners (ss,ff,tt,sf, fs...) - as well as a second smaller set called "global" corners. They happened to be named similarly to the standard corners but include a "g" suffix. Hence, as an example, for the slow process case there are two corners - what are termed a "total corner" and a "global corner". The "total corner" is representative of the maximum device parameter variation including local device variation effects. However, it is not a statistical corner. The "global" corner is defined as the "total" corner minus the impact of "local variation". Hence, if you were to examine simulation results for a parameter using a "total" and "global" corner, you would find the range of variation will be less with the "global" corner than with the "total" corner.

    The "global" corner is provided for use in statistical simulations. Hence, when performing a Monte-Carlo simulation, the "global" corner is selected - NOT the "total" corner.

    When simulating the impact of local variation in Monte-Carlo using ADE-XL, Assembler, or Maestro using the "global" corner, one must check the radio button to simulate "Mismatch" under the "Statistical Variation" section of the "Monte-Carlo Sampling..." panel and not the "All" nor the "Process" radio buttons to assess the impact of local variation.

    To address your specific question:

    "What I would like to simulate is, to set a process corner (ss/ff/tt..) and the apply local variation to the devices within each process corner."

    a set of three Monte-Carlo simulation sets is required using the respective "global" corner for each case (ss/ff/tt) using the "Mismatch" radio button selected. You will find each will provide a different level of statistical variation. As a side note, in lieu of telling spectre to automatically determine the proper number of simulations to run to estimate parameter standard deviation, I usually initially run a large set (200 to 1000) and plot the value of the resulting standard deviation as a function of the number of simulations run. This provides a very good estimate of the impact of the number of Monte-Carlo simulations and its impact of my estimate for the standard deviation.

    I hope this helps explain your situation based on my experience with our foundry.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to Andrew Beckett

    Dear HoWei,

    I might be able to shed a little more light on your question based on experience with our foundry.  What may, or may not, be confusing you is the process cases offered by your foundry. Our foundry offers a set of process corners with two options - the standard corners (ss,ff,tt,sf, fs...) - as well as a second smaller set called "global" corners. They happened to be named similarly to the standard corners but include a "g" suffix. Hence, as an example, for the slow process case there are two corners - what are termed a "total corner" and a "global corner". The "total corner" is representative of the maximum device parameter variation including local device variation effects. However, it is not a statistical corner. The "global" corner is defined as the "total" corner minus the impact of "local variation". Hence, if you were to examine simulation results for a parameter using a "total" and "global" corner, you would find the range of variation will be less with the "global" corner than with the "total" corner.

    The "global" corner is provided for use in statistical simulations. Hence, when performing a Monte-Carlo simulation, the "global" corner is selected - NOT the "total" corner.

    When simulating the impact of local variation in Monte-Carlo using ADE-XL, Assembler, or Maestro using the "global" corner, one must check the radio button to simulate "Mismatch" under the "Statistical Variation" section of the "Monte-Carlo Sampling..." panel and not the "All" nor the "Process" radio buttons to assess the impact of local variation.

    To address your specific question:

    "What I would like to simulate is, to set a process corner (ss/ff/tt..) and the apply local variation to the devices within each process corner."

    a set of three Monte-Carlo simulation sets is required using the respective "global" corner for each case (ss/ff/tt) using the "Mismatch" radio button selected. You will find each will provide a different level of statistical variation. As a side note, in lieu of telling spectre to automatically determine the proper number of simulations to run to estimate parameter standard deviation, I usually initially run a large set (200 to 1000) and plot the value of the resulting standard deviation as a function of the number of simulations run. This provides a very good estimate of the impact of the number of Monte-Carlo simulations and its impact of my estimate for the standard deviation.

    I hope this helps explain your situation based on my experience with our foundry.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • HoWei
    HoWei over 5 years ago in reply to ShawnLogan

    Hi Andrew and Shawn,

    thanks for this insightful discussion - bthw. I am pretty sure I am using the same PDK as Shawn does ;-)

    I spend some hours on investigating the behaviour by observing the "Vth" for two NMOS instances (M0 and M1)  versus different corners and MC setups. Our PDK-modelfile offers 4 different "sections" of Corner/MC simulation cases:

    1. "Total_Corner"

    There we can select between sections "ss, ff, tt, sf, fs".

    This sets the "Vth" for both M0/M1 to the same value without any difference between the two devices. It has no mismatch included. it does not matter whether I select "Process/Mismatch/All" - I always get the "Vth" for the selected corner.

    2. "Global Corner + Local MC"

    There we can select between sections "ttg_localmc, ssg_localmc, ..." .

    Selecting "Process" sets the "Vth" for both devices to the same value (no mismatch), depending on the selected "section".

    Selecting "Mismatch" adds some variation between M0 and M0 "Vth" - that is the mismatch around the selected corner.

    E.g. if I want to see the mismatch of devices at the process corner "fs", I just select the section "fsg_localmc" and apply "Mismatch or All" (give same results because process cannot be varied, as it has been selected via section already).

    3. "Local MC only"

    The section "localmconly" provides simple access to the "tt" corner.

    Selecting "Process" it results in the same as selecting section "tt". Selecting "Mismatch" results in the same as selecting "ttg_localmc".

    4. Global MC + Local MC

    The section "global_localmc" applies monte-carlo to process and mismatch.

    Selecting "Process" varies the "Vth" somehow between the process corners (with normal-distribution around the "tt" mean), but both devices doe have the same "Vth" - no mismatch included. That is the only case, where the "Vth" is varied over the full range of "Process" corners.

    Selecting "Mismatch" applies variation to the "Vth" of the two instances M0 and M1 around the "tt" corner. This gives the same result as "ttg_localmc".

    Selecting "All" (this is actually the only case where "All" gives a different result as "Mismatch") combines the "Process" and "Mismatch" variations. The simulator first selects a "Vth" from the "Process" variation and applies it to both M0/M1, and then applies "Mismatch" to the instances, causing a different "Vth" in M0/M1 within the distribution of "localmc". The result is a full range of process and mismatch variation - but one cannot distinguish anymore which point belong to what corner (because it can be any value between corners) and it does not tell the distribution around dedicated corners. It might only be useful for yield-estimation,  but not for matching in e.g. diffamp or for R2R-resistors.

    Thats at least how I understood it eventually.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • HoWei
    HoWei over 5 years ago in reply to HoWei

    Hi Shawn,

    can you tell me how the variation resistors and MOS is simulated in Global_LocalMC ?

    As I understand the NMOS values are varied with their mismatch distribution around a specific Global (Process) point. But will the resistor values have an independent GlobalMC (Process) point - means can it be the case that the NMOS are at the ff-corner and the resistor is at ss-corner, and at the next MC point, the NMOS are still at ff-corner and the resistors at ff-corner ?

    I am wondering anyways if the resistor-values (in reality - not simulation) are dependent or independent of the Process corner ?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to HoWei

    Dear HoWei,

    First your description of the four cases you outlined appears consistent with my understanding. Great!

    Let me attempt to provide my thoughts on your additional questions.

    > can you tell me how the variation resistors and MOS is simulated in Global_LocalMC ?
    > As I understand the NMOS values are varied with their mismatch distribution
    > around a specific Global (Process) point.

    I assume you also mean to include PMOS devices as well as NMOS devices as both will show variation if this condition is selected for your Monte-Carlo analysis.

    > But will the resistor values have an independent GlobalMC (Process) point
    >  - means can it be the case that the NMOS are at the ff-corner and the
    > resistor is at ss-corner, and at the next MC point,
    > the NMOS are still at ff-corner and the resistors at ff-corner ?

    > I am wondering anyways if the resistor-values (in reality - not simulation)
    >  are dependent or independent of the Process corner ?

     If you examine the PDK you are using, this Monte-Carlo condition is mapped to the typical silicon process. It only invokes modeling information from the typical corner case. For each Monte-Carlo iteration, the process variation applied to MOS devices is identical, but the local variation will vary from device to device if Mismatch is selected. Discrete resistor variation (i.e., those not composed of MOS devices), however, is independent of MOS device variation based on how they are fabricated. Its sheet rho and dimensional parameters are not related physically to the sheet resistance nor dimensional varation of MOS devices. Hence, it is very possible that the resistor value in a given Monte-Carlo iteration may appear "slower" or "faster" than the corresponding MOS devices in the same iteration.
     
     Did I understand your concern, and does this make sense HoWei? I hope so anyway.
     
     Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • HoWei
    HoWei over 5 years ago in reply to ShawnLogan

    Hi Shawn,

    I think you answered my questions (which was not very precisely given).

    I understand that PMOS/NMOS/N-Well-Resistors are correlated, but undergo mismatch variation between instances (like all other devices do).

    What I actually asking about was the correlation between *MOS and Poly resistors, and I think what you wrote makes sense, that those are not correlated to *MOS.

    Which means it can happen that for any *MOS corner, the poly-resistors can have arbitrary value (high (slow) / low (fast) - in reality.

    And by looking into the PDK documentation for "model_usage.pdf" it seems that this is covered in simulation by the given modelfile sections (except for "Total_Corner" where "ff-MOS" is connected to "ff-Res" and "ss-MOS" is connected to "ss-Res" and all others "sf/fs/tt" are connected to "tt-Res").

    I will now have to do more simulations to find out what "ff-Res" means - I assume these are the low-resistance-values.

    Above you wrote:

    >The "total corner" is representative of the maximum device parameter variation including local device variation effects. However,

    >it is not a statistical corner. The "global" corner is defined as the "total" corner minus the impact of "local variation". Hence, if you

    >were to examine simulation results for a parameter using a "total" and "global" corner, you would find the range of variation will

    >be less with the "global" corner than with the "total" corner.

    During my investigations I found the following "mean" values for a NMOS "Vth" different simulation cases (fictive numbers) for "process only" (no mismatch):

    1. Total_Corner:   ff/fs/tt/sf/ss      300 / 350 / 400 / 500 /550 

    I am wondering why ff and fs, as well as sf and ss do have different Vth values for NMOS - shouldn't these be the same ? Or are they measured/derived on different wafers and not assumed to be the same ?

    2. Global Corner + LocalMC:    ffg_localmc / ssg_localmc        310 / 540

    Here I am expecting that "ffg_*" would have the same mean as "ff" above (same for "ssg" and "ss"). Why do they not have same mean ?

    Is it what you described above, that the "ff" value for "Vth" is mean+5*sigma, whereas "ffg_*" is mean-only ?

    BR

    Ho

    • 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