前言
在仿真过程中,由于仿真模型的不连续性,或者模型没有适当地表征/参数化,或者当求解器无法求解控制模型行为的方程时,可能就会出现仿真的收敛问题。
当然,收敛问题没有唯一的解决方案,因此应仔细研究每个设计行为,并应为该设计确定适当的解决方案。
解决仿真的收敛问题,要避免对仿真设置进行随机更改,也要注意避免更改原始设计拓扑。因此可以:
1、使用系统方法。在解决收敛问题时记录好更改。
2、在开始调查问题之前,尝试用最新的Saber 版本中运行设计。
3、对问题进行初步调查并确定攻击点。
4、仔细研读系统给出的错误信息,并参考产品帮助文档判断症结所在。
5、有效地利用调试工具。
6、确保校准分析。
初步调查
可能会出现收敛问题原因很多。因此了解调试过程的起点很重要。初步调查有助于启动调试。有时通过遵循初步调查中提到的纠正措施来解决收敛问题。
初步调查步骤如下。
1、在SaberRD中打开设计时,您是否看到有关缺少符号的任何消息?
识别设计中缺少的符号、连接或节点。在 SaberRD 中打开设计时,Netlister 会弹出一条关于缺少符号的消息(如果有),如下所示:
这可能是由于模型更新、库重构或复制设计文件夹时的人为错误造成的。在这种情况下,请确保模型模板 ( .sin) 和符号 ( .ai_sym) 在工作目录或自定义库或 SaberRD 库中可用。
2、检查是否有任何浮动引脚
浮动引脚是未连接到设计中的任何组件或节点的节点。它们在网表中也被称为“freenet”。此外,某些节点可能会因人为错误而断开连接。如果存在收敛问题,建议检查这些浮动引脚并确保它们被故意遗漏。在大型设计中,很难识别freenet,您可以在Netlist 中搜索关键字“freenet”,并确保有意将它们排除在外,以避免对收敛造成任何影响。
3、检查任何具有挑战性的电路
确保设计不存在如下所示的任何电路条件。设置电感直流阻抗和电容的绝缘阻抗,使设计更加真实。避免电容器和电感器的初始条件冲突,如下所示,并为隔离电路提供适当的参考。下面给出了具有挑战性的电路的示例。
- 无法解决的配置 违反能量守恒定律的电路条件。
- **人为错误 **对于理想的并联电容器和串联的理想电感器,初始条件应该相同。初始条件的错误使用会导致数值振荡。
- **隔离地 ** 如果有变压器之类的电气隔离,则应提供适当的接地参考。
- 同步数字事件 两个数字事件之间应该有有限的延迟。
4、删除临时文件并创建新的网表文件。
SaberRD 在工作目录(保存设计文件的位置)中写出许多与 Netlister 和 Simulator 相关的支持文件。这些文件具有*.ai_tdb、 .ai_ns、 .ai_str、 .ai_grm、 .ai_out、 .ai_compiled、work.ai_vfs、 .ai_vhddsn、*.ai_vhdgrm 等扩展名,并包括等网表文件。sin和.vhd。由于不受支持的 GUI 操作、版本更改或数据损坏,这些支持文件可能会损坏。建议在清除这些支持文件后重新网表设计。
注意:不要删除扩展名为*.ai_sch、 .ai_dsn、 .ai_sym、 .sin(仅适用于模型)的文件和来自模型架构工具的文件(如 .ai_dp、 .ai_mosfet、 .ai_mct、 . ai_igbt1、 .ai_ams、 .ai_scan、 .ai_tlu等)。在删除任何这些文件之前进行备份是个不错的习惯。
5、设计之前是否进行过仿真? 如果是这样,那么发生了什么变化并导致了错误?
如果收敛问题刚好在一些设计修改之后发生,那么这个问题可能是在修改过程中引起的。了解修改的效果以及修改是否是收敛错误的原因。如果修改是将设计的一小部分集成到更大的设计中,请确保小部分经过验证并且电路行为符合预期。此外,确保在集成后,设计行为符合预期,并且电路遵循基尔霍夫电压和电流定律。
6、直流工作点或瞬态分析时是否显示收敛错误?
当出现收敛问题时,仿真器会显示错误消息。错误消息包含指向提供有关错误信息的产品帮助文档的链接。错误中的消息可能是调试的起点。有关产品帮助文档的更多详细信息,将在以下部分中详细说明,遵循错误消息。
有关错误及其发生的知识有助于确定调试过程的起点。有关错误发生的信息至关重要,因为它有助于追踪设计中的任何事件或切换,并从那时起继续调查。对于 DC 工作点,可以使用调试、holdnodes、SDB 命令等仿真器选项进行调试。对于瞬态分析,可以利用监控进度和 ASP(仿真解决方案点)代码进行调试。这也将在本文后面详细介绍。
按照错误信息判断
当出现收敛问题时,SaberRD 会显示错误消息,帮助调试问题并解决问题。收敛问题期间的一些常见错误消息如下所示:
在 SaberRD 中,当显示错误消息时,该工具会指出问题中最可能的部分。受影响的组件/节点将以红色突出显示。当鼠标悬停在突出显示的部分时,紧凑的错误消息显示如下。
脚本窗口中的错误消息将包含一个链接,您可以单击该链接并重定向到产品帮助文档。SaberRD 产品帮助文档简要说明了错误以及解决这些错误的技巧。可以使用产品帮助文档中的链接访问每条错误消息的详细信息。产品帮助文档的快照如下所示。
使用调试工具
SaberRD 提供调试工具,用于监控仿真器性能和诊断收敛问题的可能原因。可用的不同调试工具包括调试选项、Holdnodes、SDB 命令和监控进度。
调试选项
调试选项仅在直流工作点分析中可用,可以通过高级仿真设置访问。调试选项是一个切换开关,当设置为“Yes”时,仿真器转录窗口将显示仿真器变量,如行列式符号、函数值、变量的相对变化、牛顿步长限制和超出区域的变量数,如下所示。
如上图,当找到解决方案时:
- 雅可比行列式的符号通常保持相同的符号 (+)
- 函数值(通常)首先增加,然后减少(通常是非单调的)直到接近零
- 变量的相对变化趋近于小值
- 牛顿步长变量在迭代结束时为零
- 没有发现区域外的变量,或者只是偶尔发现一些变量
但是当没有找到解决方案时,仿真器将显示如下信息:
观察到行列式的不同符号。
- 可以看到非常高的功能值
- 变量的相对变化值高
- 可以看到更多的牛顿步长变量
- 发现某些变量超出区域
仔细研究仿真器参数的变化有助于确定收敛问题的原因和解决方案。例如,让我们看一个随附的案例研究。
在下面给出的仿真器报告截图中,可以看出,
- 行列式变化广泛
- 函数值和相对变化过,然后急剧增加到NaN,
- 大量变量受牛顿步长限制
- 突然变量超出区域
这种行为的原因可能是由于牛顿步长限制不足。要了解有关牛顿步长限制的更多信息,请参阅产品帮助文档(The Designer’s Guide to Analog & Mixed-Signal Modeling> Simulator Convergence>NumericalOscillation and Divergence)。在这种情况下,推荐的解决方案是增加牛顿阶跃密度。将操作点高级仿真设置中的 Newton Step Density 从 3(默认)增加到 5,可以看到仿真收敛并找到了解决方案。
保持节点
对于具有多个稳定工作点(例如锁存器、触发器和计数器)的系统,无偏直流工作点分析可能会在工作点之间“卡住”,而不是找到一个。另一方面,根据设计,DC 分析可能可以轻松找到工作点,但它找到的可能不是您最感兴趣的。使用Holdnodes,可以将指定节点保持在指定值,而运行工作点分析。Holdnodes 可用于将系统偏向特定的解决方案。要将节点保持在特定值,请输入节点名称及其路径和值,以空格分隔,如下所示。
语法->::.:
**释放保持节点 **
此选项指定是否应分两步找到解决方案,首先保留节点,然后释放。设置为 Yes 时,操作点分析分两步运行。在第一步中,节点保持在指定的值,然后在第二步中,节点被释放并使用第一步的结果作为输入。当设置为 No 时,不使用 Holdnodes 的操作点分析(第二步)不会在使用 Holdnodes 的分析之后运行。您还可以同时持有多个节点。每个节点及其各自的值应由空格分隔,如下面的界面所示。
注意:不支持信号名称中的通配符。您必须指定要保持的信号名称。
在上面的例子中,模型 boostavg 的顶级节点“v_battery”和内部节点“il”分别保持在值 1 和 0。当释放保持节点处于活动状态时,这些节点保持在指定的值,然后运行操作点分析,然后释放它们并使用在第一部分中获得的值作为初始点运行操作点的第二部分。
-
电容器
+关注
关注
64文章
6217浏览量
99532 -
电感器
+关注
关注
20文章
2329浏览量
70506 -
仿真器
+关注
关注
14文章
1017浏览量
83719 -
隔离电路
+关注
关注
8文章
66浏览量
37110 -
变压器
+关注
关注
0文章
1126浏览量
4010
发布评论请先 登录
相关推荐
评论