Hello everyone, I have a question regarding the mi...
# sky130
s
Hello everyone, I have a question regarding the mismatch/monte carlo models in skywater130. I am trying to make sure my chip has a certain robustness incorparated in the design and to do this I am running a monte carlo simulation on the mismatch models. To me it seems that the tt_mm, ss_mm, etc. models only incorporate a gradual variation, but i can't seem to find much documentation on this matter. I was wondering if the mc model takes a more broader variation into account besides the normal process variation and if there is something like an mm model that incorparates the whole variation range in it's model.
t
With the definitions in
sky130.lib.spice
, the "mc" corner (as defined) does not enable mismatch, but only process variation. That's not to say you can't do it. It just means that I didn't provide a convenient corner section for it in the lib.spice file. You can define your own by omitting the
.lib
line from the simulation and replacing with:
Copy code
* Monte Carlo process variation with mismatch

.param mc_mm_switch=1
.param mc_pr_switch=1

.include "parameters/critical.spice"
.include "parameters/montecarlo.spice"
That would give you device mismatch on top of monte carlo process variation. Probably I should just add the section above to
sky130.lib.spice
and call it
mc_mm
.
๐Ÿ‘ 1
๐Ÿ‘€ 1
s
Would encorparating the abovementioned lines instead of .lib line run the mismatch on the whole range of ss/tt/ff or would the mismatch be limited to a specific configuration such as tt?
t
@Stijn van Himste: You can't (and wouldn't want to) run monte carlo and corners at the same time. The purpose of monte carlo is that it is more realistic than corners (because having all parameters skew in the same direction is an extremely low-probability event) and has tighter bounds. If you use corners, then process parameters are all set to specific values at one extreme or the other. If you use monte carlo, then process parameters are randomized. Mismatch is another random distribution that is independent of the process parameter settings. So you can have "mismatch + corner" or "mismatch + monte carlo" but you can't have "corner + monte carlo" because those are mutually exclusive.
a
I've seen references made to running monte carlo on corners. This reddit post has a comment from highspeedlynx with a brief reference to it. Here is a post on the cadence forums discussing potentially confusing nomenclature from a PDK using local monte carlo and global monte carlo and how that interacts with "mismatch" options. I think many of these references to "monte carlo + corners" are actually "mismatch + corner" as Tim describes. But the differences in nomenclature don't help much with clarifying this. If we were to assume "monte carlo + corners" existed it seems you would need to have model data out to 2*corner (2*FF if centered on FF, for example). I'm not sure if PDKs generally ship with this.
s
That makes sense, thank you very much!
t
@Adrian Bradd: True, the term "monte carlo" just refers to randomized outcomes which is true of both mismatch and process variation. I was sticking with the SkyWater nomenclature, where they have a "monte carlo" device model file that is specifically for process variation, and mismatch variation is defined in other files.
๐Ÿ‘ 1