Saber中如何更好地提高仿真的收敛性(二)

电子说

1.3w人已加入

描述

SDB 命令

SDB 命令用于监控无法通过任何其他调试工具直接监控的仿真器事件。SDB 命令在 SaberRD 命令行中用于查看仿真器事件,例如牛顿步长限制、阈值和调度事件。下面给出sdb命令的用法。

语法 -> sdb on ns_limit(提供牛顿步长限制的调试信息)。

仿真器

语法 -> sdb on thresh(提供阈值评估的调试信息)

仿真器

语法 -> sdb on schedule(提供调度事件或取消调度事件的调试信息,包括阈值、中断和状态变化事件)

仿真器

监控进度

在直流工作点和瞬态分析中都可以使用监视器进度。分配 1 到 1000 之间的任何值将打开监视器进度,仿真器转录窗口将显示仿真进度的百分比以及仿真解决点 (ASP)、截断误差、牛顿迭代次数或事件数等详细信息,如下所示。

仿真器

在瞬态分析期间以及当 DC 分析使用动态电源斜坡时,监视器显示区域的左列中有一个额外的单字符字段,称为仿真解决方案点 (ASP)。ASP 代码以单字符的形式给出消息是否找到解决方案,执行任何时间步长,无限解决方案和调度事件。下表给出了 ASP 代码列表。

仿真器

解释 ASP 代码非常重要,因为它可以帮助您了解仿真器进度的方向。如果您在瞬态等名义分析期间在转录窗口中频繁观察到像 ?、-、d 和 N 这样的 ASP 代码,则表明设计中存在收敛问题。建议在初始阶段解决这些问题中的任何一个,然后继续推进仿真,如蒙特卡罗、最坏情况、灵敏度、周期性小信号和故障。

跟踪显示的截断错误(terror)也很重要。理想情况下,它应该是接近零的非常小的值。如果它显示大值,尝试将terror值从 0.005(默认值)降低到 0.001 或 0.0001 和/或将目标迭代(tniter)从 3(默认值)增加到 5、10 或 20。terror值和 tniter 值应更改并应记录每次更改的影响。terror值越小,仿真时间越长。重要的是要跟踪每次terror变化的结果的准确性。下一节将解释校准分析的重要性。

校准分析

仿真性能和结果的准确性可以通过仿真设置来控制,例如采样点密度和截断误差。采样点密度越大,一步时间获取的数据点就越多。因此,密度越高,结果将越准确,但会花费仿真时间。截断误差可以建立具有较小值的数值积分算法的高精度,但它也花费了仿真时间。因此,考虑到仿真器的性能和结果的准确性,仿真工程师必须对这些仿真设置进行精细的平衡。

Newton Target Iteration 和Integration Order 等其他仿真设置也会影响仿真器性能和结果的准确性。NewtonTarget Iteration (tniter) 定义了仿真器在瞬态分析期间尝试不超过的Newton-Raphson 迭代次数。增加此值将导致仿真器倾向于在仿真中花费更多时间。减小该值将导致仿真器趋向于更快地仿真。默认值为3。Integration Order(阶次),决定是使用Backward Euler Method(order = 1)还是梯形法(order = 2)来确定下一个外推的时间点。顺序仅在积分方法为GEAR时适用。

对于像电力电子转换器设计这样的开关电路,解决收敛问题的一个简单方法是将积分阶数设置为 1。积分阶数 = 1 将不考虑电路中非线性无源元件的影响。因此,通过减少半导体开关中的振荡和振铃,收敛问题被最小化。但失去了结果的准确性。

然后,您需要收紧截断误差和/或增加目标迭代以提高结果的准确性。也就是说,如果结果的准确性可能会受到影响,或者设计人员正在使用行为切换模型,那么 order = 1 将是一个很好的解决方法。

仿真器

验证结果

结果验证是任何仿真工作中的重要一步。在处理收敛问题时,您的主要目标不仅是消除错误,而且还要关注预期结果。很多时候,错误可能会通过调整一些随机仿真设置来解决,但结果不一定像预期的那样。只有在获得预期结果的情况下,才称收敛问题的解是正确的。

下面举例说明校准分析和验证结果的重要性。

示例考虑了设计(该设计可用于 SaberRD 2017.06 及更高版本)。一开始,瞬态分析使用默认仿真设置运行。可以看出,仿真没有收敛并给出错误。作为开关电路,将积分顺序更改为 1 将是一个简单的解决方法。在第二次迭代中,使用积分阶数 = 1,可以看出仿真收敛了。但结果并未显示引线电感等寄生元件的任何影响,并且负载电流尚未达到稳定状态。

此外,牛顿迭代限制显示为 46.2%。就收敛问题而言,错误信息已经消失,但具体问题的解决方案尚未确定。因此,设置order = 1 不是此收敛问题的正确解决方案。对于许多其他开关电路,设置 order =1 可能是可接受的解决方案。此示例显示了遵循最佳实践的优势。

使用前面解释的最佳实践重新启动调试过程,按照显示的错误消息运行第三次迭代。错误消息“ALG_INCR_TNITER”提供了产品帮助文档中有关 tniter 和terror的信息。可以看出,通过增加目标迭代和减少截断误差来消除错误。在第三次迭代中,仿真以terror = 1u、tniter = 6 和阶数 = 2 运行。阶数设置回2以查看无源元件的效果。在第三次迭代中,可以看到仿真收敛并且负载电流处于稳定状态。但仍有改进的余地,因为迭代被限制在 22% 左右,而且门脉冲不符合预期。从栅极电压波形可以看出,有些情况下有电压尖峰,有些情况下没有。还,在信号“gate_lo”中预期栅极电感的影响。因此,半导体没有正确切换,设计具有很高的损耗。

因此,应进一步加强仿真设置以获得一致的波形。稍后在第四次迭代中,采用试错法来确定可以给出预期仿真结果的适当仿真设置。仿真设置,terror从1u改为100u,tniter增加到20。这两个设置都是逐渐调整的。

现在,可以看出两个门脉冲都给出了预期的结果。采用试错法来确定可以给出预期仿真结果的适当仿真设置。仿真设置,terror从1u改为100u,tniter增加到20。这两个设置都是逐渐调整的。

现在,可以看出两个门脉冲都给出了预期的结果。采用试错法来确定可以给出预期仿真结果的适当仿真设置。仿真设置,terror从1u改为100u,tniter增加到20。这两个设置都是逐渐调整的。现在,可以看出两个门脉冲都给出了预期的结果。

1、仿真设置为:截断误差 = 0.005(默认)目标迭代 = 3(默认)积分顺序 = 2(默认),仿真器输出信息见下图:

仿真器

结果:由于收敛问题导致的错误信息

2、仿真设置为:截断误差 = 0.005(默认)目标迭代 = 3(默认)积分顺序 = 1,仿真器输出信息见下图:

仿真器

仿真结果:

仿真器

3、仿真设置为:截断误差 = 1u,目标迭代 = 6,积分顺序 = 2。仿真器输出信息见下图:

仿真器

仿真结果:

仿真器

4、仿真设置为:截断误差 = 100u,目标迭代 = 20,积分顺序 = 2。仿真器输出信息见下图:

仿真器

仿真结果:

仿真器

在所有这些迭代中的另一个密切观察是,当使用适当的仿真设置时,仿真运行得更快(参见仿真结束时的执行时间)。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分