0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PSpice仿真教程之蒙特卡洛分析

jf_g8DHAusG 来源:吴少琴的模电课 作者:吴少琴 2022-11-10 09:57 次阅读

从上次更新至今又悄悄过去三个月了,看到公众号后台有很多需要“PSpice”的新伙伴留言:

小电觉得还是需要把PSpice的教程续写下去,否则实在不好意思面对热情满满的新伙伴们

前面我们已经讲了PSpice提供的三种最基本的分析方法:直流分析交流扫描分析瞬态分析,也讲了一种进阶分析:参数扫描分析,今天我们讲一种统计分析方法——蒙特卡洛分析(Monte Carlo)

蒙特卡洛方法得名于欧洲著名赌城——摩纳哥的蒙特卡洛,大概是因为赌博游戏与概率有着很深的内在联系。蒙特卡洛方法也被称为计算机随机模拟方法,是一种使用随机抽样统计来估算数学函数的计算方法,它适用于对离散系统进行计算仿真试验。

电路仿真软件中的蒙特卡洛分析是做什么用的呢?

大家知道仿真软件中用到的器件都是认为它是精确的,仿真时都是取其标称值下分析其响应,然而对于电阻电容和电感等实际分立元件,以及半导体器件,其参数值均有一定的容差,例如当选择容差是5%,阻值是10kΩ的电阻,仿真就按标称值10kΩ进行分析,但在实际中你可能买到的电阻会9.5kΩ~10.5 kΩ之间。当所有元器件的容差效果组合一起时,可能对电路的输出响应造成巨大偏差。这就使得仿真结果和实际相差很远.

因此在电路仿真中有两种统计分析:蒙特卡洛分析和最坏情况分析,是用于研究元器件参数值变化(容差),或者影响元器件参数值的物理参数变化(比如温度有容差)时,对某些电路特性的影响。

概 述

蒙特卡洛分析是一种统计模拟方法,它是对选择的分析类型(包括直流分析、交流分析、瞬态分析)多次运行后进行的统计分析。第一次运行采用所有元器件的标称值进行运算,最后将各次运行结果同第一次运行结果进行比较,得出由于元器件的容差而引起输出结果偏离的统计分析,如电路性能的中心值、方差,以及电路合格率、成本等等。用此结果作为是否修正设计的参考,增加了模拟的可信度。

直观的理解就是: 蒙特卡洛分析是在模拟实际搭建的电路可能出现的偏差,毕竟实际中的元器件可不是理想的,而蒙特卡洛分析是在容差内随机选取,可以让机器随机算几千次或更多,把实际中可能出现的情况都包含上。

本期以双运放窄带通滤波器为例,设计指标要求:中心频率为50Hz,品质因数为20。电路如图1所示。希望利用蒙特卡洛分析方法分析电路元器件容差对滤波器的频率特性产生的偏差,选择最合适的器件将技术指标的误差控制在10%以内。

47014306-6038-11ed-8abf-dac502259ad0.png

图1 本期实例电路

元器件容差设置

图1的电路图大家看到电阻电容数值的旁边都标着5%或10%,这就是该元件的容差,一般元件从元件库中选取放置时,容差默认是0,也就是都是取其标称值,在进行蒙特卡洛分析和最坏情况分析时需要额外设置元器件的容差。

有下面几种方法设置元器件容差:

1、属性编辑器中添加容差参数

新版本中分立元件R、L和C均具有容差参数,通过双击器件,打开属性编辑器就可以对其容差进行添加和设置。但输入容差参数时,务必在数值后面输入%,例如10%,否则会出现偏差。图2是对电容C的属性编辑框中直接输入容差值。若需要在电路图上显示容差数值,需要选择整个TOLERANCE容差行,然后右键选择Display,在随后的对话框中选择Value only即可只对数值进行显示。

472d8dd0-6038-11ed-8abf-dac502259ad0.png

图2 属性编辑器中添加容差值

2、BREAKOUT库元件添加容差参数

早期的版本中只有通过选择breakout元件库中的元件,通过模型编辑器为分立元件添加容差。例如对电容添加容差,首先从breakout库中选择Cbreak元件,然后通过点击右键选择Edit PSpice Model打开模型编辑器,最后通过设置语句对其容差进行添加。如下图所示:

474c6566-6038-11ed-8abf-dac502259ad0.png

其中:Cbreak为模型名称;CAP为PSpice模型类型;C=1表示数值因子为1,用于设置电容参数值的倍率;LOT和DEV是两种容差类型:

DEV称为器件容差

指同一模型名称的元件其参数值在该容差范围内独立变化;

LOT 称为批容差

指同一模型名称的元件其参数值在该容差范围内统一变化,即它们的值同时变大或变小。

如何设置模型参数的变化模式应根据实际情况确定。如果设计的电路要用印刷电路板(PCB)装配,则不同PCB中针对电路设计中同一个元器件采用的元器件参数将独立随机变化,就只需要选用DEV。但是如果在集成电路生产中,不同批次之间的元器件参数还存在起伏波动,就还应该用LOT。

方法一属性编辑框设置的容差其实就是DEV容差;而breakout中同时设置DEV和LOT,比如DEV=10%,LOT=5%,那么共同作用下这个电容的总容差将达到±15%。

3、半导体器件的参数容差设置

分立元件的参数主要就是它的数值,但半导体器件有着很多参数,容差设置只能针对某一个参数进行设置。比如需要对晶体管的放大倍数添加容差值,可以点击晶体管,右键找到Edit PSpice Model,进入模型编辑器,如图4所示,直接在Bf值后添加DEV容差。

47748820-6038-11ed-8abf-dac502259ad0.png

图4 晶体管的放大倍数设置容差

4、分布类型的设置

蒙特卡洛分析过程中元器件参数值的改变是遵循特定的统计分布的,一般分立元件是默认均匀分布,在元件属性编辑器中可以看到默认项:

47c004b2-6038-11ed-8abf-dac502259ad0.png

如果需要修改为高斯分布,可以直接双击后将FLAT改为GAUSS。

对于晶体管的参数,比如图4中晶体管的电流放大倍数,通常情况下更符合高斯分布,那么可以在模型编辑窗口中如图4下,将dev=50%增加为dev/gauss=50%,这样就把Bf的概率分布设置为高斯分布了。

电路中所有具有容差的元器件都设置好容差和统计分布后,就可以进行仿真参数设置。

蒙特卡洛分析的基本操作

蒙特卡洛分析和参数扫描分析一样,属于进阶分析,它需要在基础分析(比如交流扫描分析)的基础上附加的一种分析。

本期实例电路的设计指标明确表示是要看中心频率,于是先对电路进行交流扫描分析,频率范围从1Hz至1kHz,每十倍频1000个点。并在Options对话框中选择Monte Carlo/Worst Case分析

47f64b6c-6038-11ed-8abf-dac502259ad0.png

图5 蒙特卡洛分析设置对话框

分析参数设置

对于蒙特卡洛分析,我们需要做如下几个设置:

01设置输出变量

仿真输出变量由用户制定,可以为节点电压值、独立电流源或者独立电压源。在本例中输出变量设置为V(out)。

02设置运行次数

运行次数(Number of runs)是用来设置电路进行直流分析、交流分析或者瞬态分析的仿真次数。在最新版本中,最大运行数量已经从4000次增加至10000次,数量大大扩展,以满足用户的需求。电路运行第一次仿真时使用的元器件参数为其标称值。

03参数分布规律的选择

在“Use distribution”中提供了三种分布供选择,用于反映实际生产中元器件参数的分布情况。

Ø Gaussian:正态分布,又称高斯分布,选用该分布时,PSpice采取将元器件的标称值设为均值,DEV容差作为标准偏差,从而产生一组随机数代表元件的分布情况;

ØUniform:指均匀分布,即元器件取的每个值的概率相等;

Ø GaussUser:也是随机分布,但是如果选用此项分布,还需要在右侧下拉列表中选择一个数值,表示元件值分散范围对应几倍DEV的容差设置值。

04随机“种子数”的选定

与通用随机数发生器一致,PSpice软件也需要利用初始种子数生成随机数。“Random number seed”一栏设置的数值就是用于指定蒙特卡罗分析中进行随机抽样时产生随机数所用的“种子数”。其值必须在1~32767之间的奇数,若未指定,采用内定值为17533。如果种子数相同,则产生的随机数是完全相同的,若使用者希望模拟不同批次生产的电子产品参数分布情况,则每次应该在设置蒙特卡罗分析时,采用不同的种子值。

05数据保存形式

按照指定的运行方式对仿真数据进行保存。

None:只保存标称值运行的电路响应

All:保存每一次运行的数据

First:只显示前n次的结果,n填在随后的编辑框里

Every:每n次模拟显示一次,n也填在随后的编辑框里

Run(list):显示所有指定次数的结果,最多可在后面填入25个数字

运行查看结果

按照图5的设置,确定后,点选PSpice→Run,或其对应图标。仿真结束后,会出现如图6所示的画面。此对话框告知用户有一百项模拟结果的波形资料,可以任选一项或多项,也可以全部选择, 确认对话框后就可以得到分析结果了。

482ecf28-6038-11ed-8abf-dac502259ad0.png

图6 分批模拟结果的波形资料

由于图1中使用了“dB Magnitude of Voltage”的探针,于是直接显示了一百条输出的幅频特性曲线。

484f4ece-6038-11ed-8abf-dac502259ad0.png

图7 蒙特卡洛分析的结果

点选View→Output File可以看到蒙特卡洛分析的文字结果,如图8所示。从图中可以看到第44次仿真达到最大偏差。

48780526-6038-11ed-8abf-dac502259ad0.png

图8 蒙特卡洛分析的输出文档

同时我们还可以得出器件随机取不同容差得到的这100次仿真结果中,每一次的中心频率和品质因数值是多大。方法:

在PSpice波形显示窗口下点选Trace--->Evaluate Measurement,或者在工具栏中找到f(x)的图标,点击即可

489fb468-6038-11ed-8abf-dac502259ad0.jpg

会出现测量函数选择的对话框,

48b7db38-6038-11ed-8abf-dac502259ad0.jpg

选择计算品质因数Q_Bandpass(V(out),3)和中心频率CenterFrequency(V(out),3),确定后在波形显示窗口的下方给出了100个数值

48e898ae-6038-11ed-8abf-dac502259ad0.jpg

虽然一百组的数据都已经呈现,但这些数据还需要处理才能看出是否能满足不超过10%的误差,这就需要通过直方图来呈现了

直方图的使用方法

对电路进行蒙特卡洛分析后,可以绘制描述电路特性分散情况的分布直方图,能预计该电路投入生产时的成品率。

方法是在完成分析之后启动电路性能分析(Performance Analysis),Probe窗口将转化为直方图绘制窗口,这时选用的特征值函数在显示窗口中为x轴坐标变量,y轴坐标刻度为百分数。这就是说,只要在Monte Carlo分析以后启动电路性能分析,就自动进入直方图绘制状态。

在Probe窗口下选择Trace→Performance Analysis,或直接按下菜单栏中的:

49034604-6038-11ed-8abf-dac502259ad0.jpg

然后选择Trace→Add Trace添加需要分析的测量函数。

49538600-6038-11ed-8abf-dac502259ad0.png

图9 选取中心频率函数

确定后得到图10的中心频率直方图结果。

4987cca8-6038-11ed-8abf-dac502259ad0.png

图10 滤波器中心频率直方图

上图中重要参数的说明如下:

n samples

蒙特卡罗分析的次数,现设为100 次,上限是10000次;

n divisions

显示的长方形个数,现设为20 次,条数越多越清楚,可通过设置 Number of Divisions 值来修改

Mean

输出变量平均值,这里是中心频率的平均值为50.2437Hz

Sigma

输出变量标准差 σ,即均方根误差

Minimum、maximum、median

输出变量的最小值、最大值、中间值

10 th %ile

按从大到小顺序排列的100个滤波器样本中第10号样本和第11号样本的带宽平均值

90 th %ile

按从大到小顺序排列的100个滤波器样本中第90号样本和第91号样本的带宽平均值。

对于直方图X轴数据范围划分的区间数,以及直方图下方是否同时显示有关信息和统计分析结果,均可以由用户通过有关任选项设置确定。具体方法是选择Tools→Options 命令,得到图11的对话框。

4a7c77b2-6038-11ed-8abf-dac502259ad0.png

图11 设置直方图相关信息

用同样的方式可以得到品质因数的统计直方图。

4aab20a8-6038-11ed-8abf-dac502259ad0.png

图12 品质因数的直方图

如果设计要求指标的误差需要控制在10%以内,那么需要中心频率在45 ~55之间,品质因数在18~22之间。从图10和图12可知,成品率均未达到100%。说明选取的器件容差有些偏高,将电容容差修改为5%,电阻容差修改为1%,运行后得到图13,可知设计可以满足要求。

4ac9afa0-6038-11ed-8abf-dac502259ad0.png

图13 修改器件容差后的统计结果

这里对于没有满足设计要求时是采用将所有电阻、电容都调整为精确度较高的元件。如果能够找到影响各技术指标的关键器件,那就只需要对关键元件进行修改,这可以大大节省器件成本了,这将会在后续PSpice AA模块的灵敏度分析工具中介绍。敬请期待哟O(∩_∩)O 好了,这一期就到这,下一期讲解另一种统计分析——最坏情况分析,下期见。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132161
  • PSPICE
    +关注

    关注

    18

    文章

    221

    浏览量

    71287
  • 蒙特卡洛
    +关注

    关注

    0

    文章

    12

    浏览量

    8038

原文标题:跟小电学PSpice仿真 | 第七期 蒙特卡洛分析

文章出处:【微信号:吴少琴的模电课,微信公众号:吴少琴的模电课】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #电路仿真 #PSpice 蒙特卡洛直方图和温度扫描分析

    EDA工具算法Cadence蒙特卡洛采样
    电子技术那些事儿
    发布于 :2022年08月21日 10:04:13

    蒙特卡洛法求解估计值

    蒙特卡洛
    YS YYDS
    发布于 :2022年10月28日 23:05:40

    MATLAB蒙特卡洛算法汇集篇

    蒙特卡洛算法,大家可以看看
    发表于 03-30 17:55

    模拟电路故障:用PSPICE做电路故障蒙特卡洛分析遇到问题

    本人新手,研究生论文为模拟电路故障仿真,在用PSPICE做电路故障蒙特卡洛分析,现在遇到问题,如何将仿真结果导入Matlab进行画图或者
    发表于 07-29 15:38

    基于蒙特卡洛法算圆的面积

    这是一个比较简单的入门程序,是通过概率来算面积的比如说一个面积为1的正方形如果里面有n1个点,一个圆里面有n2个点,则圆的面积是n2/n1.大家可以试验一下。%蒙特卡洛法求面积sita=0:0.01
    发表于 09-10 15:16

    multisim 对电路进行蒙特卡洛分析 在相同的时间内多次分析后导出的数据点怎么不一样多呢?

    multisim 对电路进行蒙特卡洛分析在相同的时间内多次分析后导出的数据点怎么不一样多呢?
    发表于 11-05 22:05

    求助关于multisim中蒙特卡洛分析不能添加输出节点的问题

    请问各位大神有没有什么好的方法能让我一次观测好多变量。举个例子如图。我只能选择一个变量,如V(probe1)进行***仿真。我能不能选择V(probe1)~V(probe5)之后再进行蒙特卡洛仿真呢?或者有没有什么方法能让我每进
    发表于 03-05 16:53

    蒙特卡洛分析方法示例

    仿真中,可以对整体特性的波动进行评估。这在电路整体的特性受多个电路元素影响时是非常有效的分析方法。其实方法有很多,一般采用的方法是围绕对整体特性有较大影响的电路元素来模拟波动。蒙特卡洛分析
    发表于 07-12 04:20

    用ADE XL做蒙特卡洛仿真分析,要怎样设置呢?

    用ADE XL做蒙特卡洛仿真分析,在弹出的对话框里面,要怎样设置呢?只知道有一个是设置仿真点数的,其他的各项设置都是什么含义呢?
    发表于 06-22 06:36

    怎么处理TSMC65GP工艺蒙特卡洛仿真model选择问题?

            我在使用TSMC 65GP 工艺 跑蒙特卡洛仿真,我只用了lvt的N管和P管,MODEL里面我把所有带lvt的都选了,还是遇到这个问题,有大神可以帮忙一下吗
    发表于 06-24 07:08

    请问怎样设置才能让蒙特卡洛仿真正确的运行?

    小弟进行蒙特卡洛仿真的时候出现了这个错误,求大神解答!还请问下,我这里设置的模型文件是这样设置的,因为我的电路里面有标准库里面的电容电阻,我就学习了一个视频的方法在下面加入了MIM和RES的TT的模型,设置方式是参考那个视频的设置方法
    发表于 06-24 06:57

    蒙特卡洛对比较器的失调电压做了仿真是错了吗?

    第一次用蒙特卡洛对比较器的失调电压做了下仿真,请问是不是哪里错了,不清楚怎么样才算对的。请问一下大哥,是需要搭建一个专门用来测动态比较器失调电压的仿真电路嘛?我从网上找了一个电路,是这个样子的吗,但是我参数不一定设置的对吧
    发表于 06-24 06:12

    请教大神怎样用蒙特卡洛去测试差分结构输入端失调电压?

    如何用蒙特卡洛测试差分结构输入端失调电压?希望得到testbench,谢谢!(对OTA(小电压增益),opamp进行测试)
    发表于 06-24 06:12

    蒙特卡洛分析时出现错误是什么原因导致的?

    蒙特卡洛分析时出现这个错误是什么原因蒙特卡洛仿真有用吗?
    发表于 06-25 07:59

    求助!!!!蒙特卡洛仿真时出现错误如何解决???

    求助!!!! 在蒙特卡洛仿真时出现下面的错误如何解决呢?? 不知道是不是model配置的有问题,不清楚model file里的文件是什么意思以及如何选取??
    发表于 11-17 10:45