cadence >> controlling mismatch in MC simulations

by » Wed, 09 Jul 2008 12:32:02 GMT

I've got a simulation testbench with multiple instances of a 6T SRAM
cell and each instance is used to measure one specification. When I
run MC simulations with the mismatch only option, Cadence assigns each
transistor a unique Vt (Vt is the only mismatch variable in this
case). However, I want to simulate mismatch between the 6 transistors
inside the cell, but not between each instance of the 6T cell. I need
6T instances to be identical. I thought of a couple tricks to do this
but neither seemed practical. For example, I can create unique models
for each transistor in the 6T cell and use global process parameters
to model mismatch (This will complicate things while simulating other
circuits). Cadence also lets me define correlations between
transistors but doesn't allow 1.0 correlation. Any suggestions?

Thank you,
Umut Arslan

cadence >> controlling mismatch in MC simulations

by Riad KACED » Fri, 18 Jul 2008 08:08:00 GMT

Hi Umut,

A similar question has been already discussed in this forum. I thought
this link useful for you. Please let me know otherwise. #2c48fb870c626391



cadence >> controlling mismatch in MC simulations

by » Sun, 20 Jul 2008 07:26:50 GMT

Hi Riad,

Thanks for the link but I am actually asking a different question than
the one posted in the link. I know that mismatch only MC assigns a
different parameter value at each iteration. I am asking whether there
is a way to control the mismatch between two transistors in the
testbench. In my setup, I want to have mismatch between 6 transistors
in the SRAM cell, but I want each instance of the cell to be


cadence >> controlling mismatch in MC simulations

by Riad KACED » Mon, 21 Jul 2008 06:58:24 GMT

Hi Umut !

Spectre supports a mismatch correlation but I have never used in the
case you're describing. I rather used it to correlate matched devices,
i.e, force Spectre to not exceed a certain mismatch percentage between
2 subcircuits by defining a correlation parameter.

I may need to give it a go with your case but I'm offline right now.

You may give a look at the Spectre Ref manual in the meanwhile.
There is a snippet from this doc.
Mismatch Correlation (Matched Devices):
The syntax of the instance or mismatch correlation statement is:
correlate dev=[list of subcircuit instances] {param=[list of
parameters]} cc=<value>
where the device or subcircuit instances to be matched are listed in
the list of subcircuit
instances, and the list of parameters specifies exactly which
parameters with mismatch
variations are to be correlated.
The instance mismatch correlation statement is used to specify
correlations for particular
subcircuit instances. If a subcircuit contains a device, you can
effectively use the instance
correlation statements to specify that certain devices are correlated
(i.e. matched) and give
the correlation coefficient. You can optionally specify exactly which
parameters are to be
correlated by giving a list of parameters (each of which must have had
distributions specified
for it in a mismatch block), or specify no parameter list, in which
case all parameters with
mismatch statistics specified are correlated with the given
correlation coefficient. The
correlation coefficients are specified in the <value> field and must
be between +/- 1.0.

There is a good explanation of Matched Devices and Correlate
Statements in the following document as well:

Once again, I'm not sure is Spectre handles your specific case. Andrew
is the best person in here to comment about it !


Similar Threads

1. Mismatch problem in MC simulation


I have added the following statistics block to my model file for a poly

parameters rphCtRes=100.0          // Poly h resistor
parameters rphSheetRho=1000.0      // Poly h resistor
statistics {
    mismatch  {  vary rphSheetRho dist=gauss std=100
    process   {  vary rphCtRes    dist=gauss std=50 

When I simulate a voltage divider consisting of one ideal resistor from
analogLib and one poly resistor I see a variation for process variation 
(as expected).

When I simulate a voltage divider consisting of two poly resistors for
process I see changes in the current (as expected) and no change in
division ratio (as expected).  When I simulate mismatch in a transient
simulation and a dcmatch simulation I don't see any variation in the
divider voltage.  I have tried with and without correlation between the
resistors without any effect.

If I swap the rphSheetRho and rphCtRes parameters around in the statistics
block then the results are the same except that the numerical values are
different because of the different effects that the parameters have on the
resistor model. I.e. I still see no variation of division ratio in the
mismatch simulations.

It seems like the mismatch section is ignored.  I have swapped the
mismatch and process sectons around without it having an effect on the

I am completed lost, any help would be appreciated.


BTW, do we need new license codes to run IC5141 if we have codes for IC5033 ?

2. Monte Carlo Simulation for MOS mismatch

3. Montecarlo Simulation (mismatch variation)

Hello all,

I am running a simple montecarlo simulation on two transistor on the
same schematic.When I use mismatch only option in MC tool,result does
not vary.For process variation thought it works.Even defining a
correlation between 2 transistor doesn'nt proudce different  results.

Now as i searched out the solution is defining an inline subcircuit(or
some prametrized model inside subcircuit)and so so....

What is this ?
can anybody tell me in a simple way what to add in model file to get
this thing working?


4. ADC Control Logic - Simulation

5. Controlling sequence of simulations in Analog Artist

I would like to simulate a transient in order to get a spectre.fc
containing the node voltages that I read in as values for the nodes in
an ac simulation. Problem is that in ADE the ac simulation is executed
before my transient simulation.

I would also like to have a short transient simulation before running
a longer transient simulation. In the first simulation I switch off
all other components in order to find the bias point for my component.
This write the node voltages to spectre.fc which I then use for node
voltages for the second and longer transient simulation with all
external components connected.

I can't find a way to add another transient simulation via ADE.
Directly in a spectre file, I can name them tran1 tran2 tran3 etc. and
the simulations are run sequentially. This way I can also control
which simulation is simulated first.

A pointer to more reading is appreciated.


6. NCSim: controlling a top-level simulation environment from an external application

7. control over plot order and spline control

I have a problem where draworder is not controlling the plotted output.
The problem is occuring within an XREF. I've set the draworder in the
XREF file and set VISRETAIN to 0 in the sheet in which it's attached.
The problem is a profile spline that is plotting behind a grid instead
of above it.

Also, is there a spline equivalent to turning on linetype generation
for a polyline?

We are using ACAD200 and an HP Deskjet 1220c. I've been off ACAD for 2
years, so things that seem obvious to others in this group will be
brand new to me.

Thanks for any suggestions,

8. get nominal results from MC analysis