QSpice-(6) 蒙特卡洛和高斯分布
Hello uu们,晚上好!
什么是Monte Carlo分析呢?Monte Carlo一般翻译过来交蒙特卡洛,是不是非常抽象根本不知道是什么东西对不对?
Monte Carlo simulation的来源:
蒙特卡洛模拟(Monte Carlo simulation)的概念源自于20世纪的物理学领域,特别是用于解决统计力学问题时引入了一种随机数值方法来估计物理系统的行为。这一术语首次出现在1943年一篇名为《The Monte Carlo Method》的文章中,由尼古拉斯·加乌斯(Nikolaos Metropolis)和斯坦利·米尔诺尔(Stanley Ulam)共同撰写。这个概念最初是为了解决原子核反应的复杂性问题。
蒙特卡洛(Monte Carlo)分析主要用于在不确定性的环境中预测结果分布,尤其是在需要处理概率和随机变量时。这种方法是通过模拟大量的随机试验来估算预期的结果,并为这些结果提供一个概率上的范围。
回到正文:
在电子电路系统中,器件都会存在容差(Tolerance),Monte Carlo就是为了模拟这种容差对电路造成的影响到底会有多恶劣,如果在器件的容差范围内,电路输出的正态分布满足你的产品定义,例如他的输出分布在6sigma内,说明这个产品设计没啥问题,不同的sigma等级对应的良率如下所示。
Sigma等级对应表
西格玛等级 |
百万次错误率 |
残疵百分比 |
产出百分比 |
1 |
691,462 |
69% |
31% |
2 |
308,538 |
31% |
69% |
3 |
66,807 |
6.7% |
93.3% |
4 |
6,210 |
0.62% |
99.38% |
5 |
233 |
0.023% |
99.977% |
6 |
3.4 |
0.00034% |
99.99966% |
但是随着温度的变化器件也是会变化的,所以在选择器件的时候不仅要考虑器件在常温下的标准容差也需要考虑到器件在高温下的漂移。
既然我们知道Qspice有Monte Carlo这个东西,咱们就直接去搜Monte 看看到底在哪里。说明书里Monte Carlo是个函数,用mc(x,y)表示如图1所示,直接看这个还是不太好理解的,咱们就做个简单的电路试试看吧,如图2所示。
图1:Monte Carlo 说明书
图2:Monte Carlo 基本分压电路
快捷键复习:
- S -- Voltage Control Switch
- R -- Res
- T -- Spice Command
- C -- CAP
- D -- DIODE
构建完基本的分压电路我们用了mc这个函数,参数是x=1 y=0.1代表他的容差(tolerance)是0.1仿真结果如下图3所示。
图3:分压电路仿真结果
发现他分压出来的电压确实不是2.5V,但如果是0.1的话,不应该是2.6xV或者是2.38V左右的电压吗?为啥仿了一个这样的电压出来?
因为Monte Carlo 只保证在这个0.1范围里面,所以他不一定是那个电压,为了看更多的R1情况,我们需要加上Step,给大家一个范例,如下图4所示,扫描结果如图5所示。
图4: 利用STEP做Monte Carlo扫描
图5:Step Monte Carlo扫描结果
是不是发现这玩意也不正态分布啊!为啥呢?还是那句话他只保证在0.1里面不保证怎么分布,如果我要看正态分布那可咋整,正态分布通常也叫Gaussian distribution,高斯分布咱们就去找Gaussian找到的内容如下agauss(nom, var, sigma),虽然在Qspice中没有详细的说明,但是Hspice有啊!具体不细说了,感兴趣就直接去查找参考文档里面的内容。更改电路如下图6所示。仿真结果如图7所示。
图6:高分布扫描
图7:高斯分布仿真结果
看到中间的密度更高,但是电压离2.5V非常接近,感觉不大对,因为他不是按照比例来,Var是变化的绝对值,如果我们要改成Var = 1,那就相当于最大的时候是11,最小的时候是9修改Var为1时候的仿真结果如下图8所示。
图8:agauss(10,1,6) 仿真结果
仿真代码:
*R1 N01 Vout {mc(10,0.1)} monte carlo 分析注释第二行
R1 N01 Vout {agauss(10,1,6)}
R2 Vout 0 10
V1 N01 0 5
.TRAN 8m
.step param X 0 100 1
.end |
今晚就先到这里了,温度我们下回在讲。
参考文档
Ai -- qianwen2
6标准差 -- wiki
HSPICE Compatibility Functions