Previous article: ADS Tutorial (VI) Optimization in ADS
In this section, we will learn about Monte Carlo simulation.
In ADS (Advanced Design System), Monte Carlo simulation is used to analyze the performance of circuits under parameter changes or uncertainties. Monte Carlo simulation helps engineers evaluate the stability and reliability of circuits under the influence of manufacturing tolerances, temperature changes, aging and other factors by performing multiple random sampling and simulations on circuit parameters.
In the previous section, we performed optimizations to obtain a set of component values that basically met the design requirements. In this section, we set some tolerances to observe some simulation effects and determine whether we can achieve good circuit performance under the premise of these tolerances.
First, in order to avoid affecting the previous design, we need to copy a Cell. In the ADS main interface, we right-click on “TestBench_MyFilter” and select “Copy Cell”:

After clicking, the Copy Cell window appears:

It can be seen that there is no hierarchy by default when copying, and only the currently selected cell will be copied. The Hierarchy option includes the hierarchy, and will copy the currently selected cell and its sub-cells. The Hierarchy and all referenced items option includes the hierarchy and all referenced items, and will copy the currently selected cell, its sub-cells, and all referenced items. At this time, we select “Hierarchy” and name the New Name “TestBench_MyFilter_MC” and “Design1_MC” (in slightly older versions of ADS, the name will not be automatically updated, and a yellow exclamation mark will appear, which is a prompt that it already exists and needs to be renamed, but in the new version of ADS (such as 2024update2), a version suffix (such as _v1) will be automatically added to the name of the original Cell):

Click “OK” and we can see that we have created two new cells. Open the schematic of the newly created TestBench and you can see that the subcircuit inside is the new cell after duplication:

At this point we can delete OPTIM and GOALs.
Monte Carlo simulation is divided into two steps:
The first step is to change the Library Palettes to “Optim/Stat/DOE” and then select
and place a Monte Carlo controller in the design:


First, we need to define SimInstanceName. Since we already have an Instance “SP1”, we change it to “SP1″ (with quotes). Monte Carlo simulation can be run on any type of analysis, such as S-parameter simulation, DC simulation, transient simulation, etc. Then, we need to define NumIters (number of iterations). Since Monte Carlo is a statistical simulator, the distribution values obtained by simulation will be different depending on the number of iterations. This time, in order to demonstrate its function, it is set to 250. In the actual simulation process, it may require much higher than 250 iterations. Seed represents the random seed. If no value is specified, the default random seed is used. If you need to reproduce the same random number sequence, you need to set a specific seed value. SaveSolns=yes means that each simulation result in the iteration will be saved. SaveSpecs=yes means that the specifications of each simulation result will be saved. SaveRandVars=yes means that the values of random variables used in each simulation will be saved. UpdateDataset=no means that the dataset is not updated. SaveAllIterations=yes means that the results of all iterations will be saved. UseAllSpecs=yes means that all defined specifications will be used. StatusLevel=2 indicates medium-level detailed status information. RerunTrials=”” means rerunning the test. Since no specific test is specified, leave it blank.
The second step is to assign the statistical variability to the components. We click on “Simulate – Simulation Variables Setup”, then we select the “Statistics” tab and check the parameters we need to simulate:

Among them, we can define its type, and in this experiment we choose “Gaussian”:

- Gaussian (normal distribution): Normal distribution (Gaussian distribution) is a continuous probability distribution. The data is symmetrically distributed around the mean. Most data points are concentrated near the mean, and there are fewer data points far from the mean. It is often used to simulate the manufacturing tolerance and random error of component parameters, such as the manufacturing tolerance of resistors, capacitors, and inductors.
- Lognormal: Lognormal distribution means that the logarithmic value of a variable follows a normal distribution. The data points are offset in the positive direction and are suitable for describing positive variables. It is often used to simulate parameters with positive skewness, such as the leakage current of transistors and the parameters of certain power devices.
- Uniform: A uniform distribution is a continuous distribution where all data points are equally likely to be within a specified range. It is often used to model parameters that are randomly distributed within a certain range, such as uniform tolerances on resistors or capacitors.
- Discrete: Discrete distribution means that the variable can only take discrete values, and each value has a specific probability. It is often used for discrete parameters such as analog switch states and logic levels in digital circuits.
You can also define the format. In this experiment, we choose “+/- stddev”:

- +/- stddev: Indicates the standard deviation of the parameter expressed as an absolute value. For example, if the mean is 10 pF and the standard deviation is 1 pF, then the value of the parameter will fluctuate between 9 pF and 11 pF.
- +/- stddev %: Indicates the standard deviation of the parameter expressed as a percentage. For example, if the mean is 10 pF and the standard deviation is 10%, then the value of the parameter will fluctuate between 9 pF and 11 pF (i.e., plus or minus 10% of 10 pF).
In the offset column, ADS sets it to 5% of the original data by default, but we can modify it as needed.
Then click “OK”. Next, we click
to simulate, and then we insert a Rectangle Plot to display dB(S(2,1)) and dB(S(1,1)) respectively. At the same time, we add delay(2,1) to observe the delay:

We can see that the plot obtained at this time is no longer a single curve, but a summary of the results obtained by simulation under different conditions.
Then save the result.
Next article:
Yield Analysis in ADS (8)