CN115510792A - 瞬态电路仿真中不收敛误差的检测方法及系统 - Google Patents
瞬态电路仿真中不收敛误差的检测方法及系统 Download PDFInfo
- Publication number
- CN115510792A CN115510792A CN202210629419.8A CN202210629419A CN115510792A CN 115510792 A CN115510792 A CN 115510792A CN 202210629419 A CN202210629419 A CN 202210629419A CN 115510792 A CN115510792 A CN 115510792A
- Authority
- CN
- China
- Prior art keywords
- transient
- circuit
- simulation
- convergence
- circuit simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种瞬态电路仿真中不收敛误差的检测方法及系统,包括获取用于瞬态电路仿真的电路相关的电路网表和控制语句,并在预设时间点执行瞬态电路仿真;判断瞬态电路仿真过程中是否出现不收敛错误;在判定确定出现非收敛错误的情况下,启动瞬态调试模式;在启动瞬态调试模式后,重复执行瞬态电路仿真并判断是否出现不收敛错误;以及在瞬态电路仿真不出现非收敛误差的情况下,确定瞬态电路仿真的结果。利用本实施例的定位在电路仿真中引起非收敛误差的点,可以对电路仿真提供更好和更完整的分析。
Description
技术领域
本发明涉及电路设计技术领域,尤其涉及一种瞬态电路仿真中不收敛误差的检测方法及系统。
背景技术
调试瞬态非收敛故障可能是电路设计人员或EDA工程师面临的最困难的任务之一。设计人员/工程师需要运行大量额外的测试模拟,挖掘日志文件中的数百万行,并与模拟器供应商反复讨论导致不收敛失败的原因的线索。该过程需要数天或数周,有时甚至数月,但通常无法得出任何确定性结论。然而,不收敛是一个严重的问题,因为它表明设计中可能存在错误,或者半导体组件没有被PDK中的SPICE模型正确建模。设计人员经常在不知道究竟是什么导致不收敛的情况下重新设计电路。因此急需一种检测这些非收敛故障的解决方案。
发明内容
本发明实施例提供一种瞬态电路仿真中不收敛误差的检测方法及系统,用以检测瞬态电路仿真期间是否发生了不收敛错误。
本发明实施例提供一种瞬态电路仿真中不收敛误差的检测方法,包括:
获取用于瞬态电路仿真的电路相关的电路网表和控制语句,并在预设时间点执行瞬态电路仿真;
判断瞬态电路仿真过程中是否出现不收敛错误;
在判定确定出现非收敛错误的情况下,启动瞬态调试模式;
在启动瞬态调试模式后,重复执行瞬态电路仿真并判断是否出现不收敛错误;以及
在瞬态电路仿真不出现非收敛误差的情况下,确定瞬态电路仿真的结果。
可选的,还包括:基于启动所述瞬态调试模式时,所保存的最近的正常仿真求解时间点,来执行所述瞬态电路仿真。
可选的,启动瞬态调试模式之后,还包括:
判断是否已启动瞬态调试模式;
在未能启动瞬态调试模式的情况下,则基于接收到的与所述电路网表和所述控制语句相关的时间点执行瞬态电路仿真;
基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真;
判断瞬态电路仿真是否出现不收敛;
在收敛的情况下,则保存新的最近的正常仿真求解时间点;
重复执行瞬态电路仿真,直到出现不收敛;以及
在不收敛的情况下,分析瞬态电路仿真以确定不收敛的原因。
可选的,基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真包括:
响应保存的最近的正常仿真求解时间点预测下一个时间点的时间步长;以及
求解下一个时间点的非线性电路方程。
可选的,求解下一个时间点的非线性电路方程包括:
确定电路中的非线性器件;
基于确定的非线性器件形成线性方程组;以及
求解所形成的线性方程组,以确定是否出现不收敛。
可选的,分析瞬态电路仿真以确定不收敛的原因包括:
为电路中的各节点确定剩余条件和更新条件;
确定电路中各节点是否满足剩余条件和更新条件;以及
建立非收敛误差,所述非收敛误差用于确定电路中的各节点是否满足剩余条件和更新条件。
可选的,建立非收敛误差包括:
对连接到不满足剩余条件和更新条件的各节点的器件执行线性检查;以及
为每个未通过线性检查的器件,报告为错误模型器件。
可选的,建立非收敛误差还包括:
确定连接到不满足剩余条件的电路的每个节点的每个非线性器件的电导;和
在确定的电导超过预定阈值的情况下,则报告器件短路。
可选的,建立非收敛误差还包括:
为不满足更新条件的电路的每个节点确定电导矩阵的对应对角元素的浮动节点情况检查值;以及
在确定的浮动节点情况检查值小于预定阈值的情况下,则报告浮动节点情况。
本申请实施例还提出一种用于检测瞬态电路仿真中的不收敛误差的系统,包括:
电路仿真器,用于在电路上运行瞬态电路仿真;
存储器,用于至少存储瞬态电路仿真的最近的正常仿真求解时间点;
在电路模拟器内实现的不收敛检测器,用于在瞬态电路模拟期间检测不收敛误差,其中不收敛检测器还被配置为执行前述的瞬态电路仿真中不收敛误差的检测方法。
本发明实施例提出了确定电路仿真中可能出现的非收敛错误的原因的方法,利用本实施例的定位在电路仿真中引起非收敛误差的点,可以对电路仿真提供更好和更完整的分析。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了收敛误差检测电路仿真电路的系统框图示例;
图2示出了电路模型和仿真系统的系统框图示例;
图3A-3E示出了发生在某个器件模型的超出范围的参数或变量仿真电路程序的流程示例;
图4A示出了模拟的二极管电流与电压之间的关系曲线;
图4B示出了模拟的二极管电导和电压之间的关系曲线;
图5示出了在电路仿真中的确定收敛误差的方程流程示例;
图6示出了在电路中不收敛的各种潜在原因示例;
图7示出了本申请实施例克服电路瞬态性能的仿真问题的方法示例;
图8示出了本申请实施例检测收敛误差仿真电流的方法的流程示例;
图9示出了本申请实施例自动调试功能的瞬态电路仿真的流程示例;
图10示出了本申请实施例调试特性被初始化进行瞬态电路分析的方法示例;
图11示出了本申请实施例在仿真中利用牛顿-拉弗森方法在确定收敛的流程示例;
图12示出了本申请实施例错误分析过程的流程示例。
具体实施方式
现在参考附图,其中相同的附图标记在本文中用于通篇表示相同的元件,示出和描述了用于通过分析集成电路的失败瞬态仿真来识别设计错误或半导体建模错误的系统和方法的各种视图和实施例,并且描述了其他可能的实施例。附图不一定按比例绘制,并且在某些情况下,附图在某些地方被夸大和/ 或简化仅用于说明目的。基于以下可能实施例的示例,本领域的普通技术人员将理解许多可能的应用和变化。
电路模拟器
如图1中所示,本公开涉及自动分析失败的瞬态仿真并报告不收敛、设计错误或有缺陷的SPICE模型的确切原因的方法或系统102。可以毫不费力地将方法/系统102包括/实施在任何现代电路模拟器104中。电路模拟器的一个例子在下面关于图1和2进行说明。
图2是说明示例性计算机仿真系统1的简化框图,该计算机仿真系统1 可用于生成和利用修改的(或增强的或替换的)设备模型来仿真电子电路和系统。系统1包括工作站10,工作站10包括CPU(中央处理单元)2,CPU(中央处理单元)2通过总线11、网络接口21A、另一总线11A和服务器21B可操作地耦合到一个或多个计算机可读大容量存储设备模型库5。模型库5可以包括磁盘驱动器和CD-ROM驱动器等,并且存储“基本参数模型”和电路器件的修改、替换或增强的参数模型。工作站10还包括程序存储器3A、数据存储器3B和输入/输出接口7,每个都耦合到总线11。输入/输出接口7通过总线 8耦合到外围功能单元4,外围功能单元4可以包括键盘、诸如鼠标、轨迹球、光笔、触摸屏输入设备等的数字指针设备,以及诸如LCD屏幕的显示设备。
如图2所示,工作站10执行保存在存储器资源中的要被仿真的集成电路的软件指令。如众所周知的SPICE系统或者其他类似的仿真系统,对电子电路的模拟是基于一组电器元件进行仿真的,这些电路又是通过指定的“节点”和整体的“网表”进行描述。每一个电路元素由一个对应的模型指定,该模型指定仿真行为,电路元件对施加在电路元件上的输入刺激做出反应。为了模拟电路的瞬态响应,需要对建模电路设置初始条件,这个条件可由用户通过外设4来进行初始化,也可以通过存储在模型库5的数据来进行初始化。(比如,通过事先存储在外围设备块4或者通过检索之前保存的时间间隔的数据来进行瞬态响应分析的数据初始化。)传统的瞬态分析通过选定的时间间隔来进行时间离散化,在其中已建模电路的一个方程组中是通过在每一个离散的时间点内,通过分段的方式来进行解决的。这种离散瞬态时间点的时间间隔,通过传统的时间步进方式来进行选择。
如前述,电路器件或者设备,传统的SPICE电路模型是通过数学表征的集合组成的数学模型来描述的。比如输入输出转移函数,描述设备/组件的各种参数。这种数学表征在这里被称为“参数模型”。特定的电路组件/元件可以表示为各种基本参数的设备模型。与“基本参数设备模型”相关联的树通常通过相应物理设备的测量来收集或“提取”,并用于生成设备模型,例如,将实际设备数据“曲线拟合”到基本参数模型中使用的方程。在模拟运行期间,如果基本参数设备模型运行在生成该基本参数设备模型的提取物理设备数据之外,则认为它“超出范围”,因此不再有效。当这种情况发生时,基本参数设备模型方程会被动态修改,即增强或替换为允许模拟器计算收敛的更简单的方程。
电路中半导体器件的基本参数模型在仿真过程中“超出范围”的原因有很多。在仿真过程中的某个时刻,基本参数设备模型可能会接收或生成非常大的电流或电压(或参数)表示,这会导致其“超出范围”并因此不准确。例如,有时设计人员以非常宽松的参数容差运行“顶级仿真”,这可能会导致基本参数设备模型出现较大的超出范围的电压波动或“过冲”。在某些情况下,不正确的器件模型可能会被用于模拟电路中“不太重要”的器件。在某些情况下,基本参数设备模型的“超出范围”操作可能是设计错误的结果。在任何情况下,每当基本参数设备模型超出操作范围时,就不再可以考虑准确描述被模拟电路中相应实际物理设备的行为。
图3A示出了顶层流程图,其中START标签12指示模拟待模拟的特定电路的DC或瞬态操作的整个过程的开始(其结构已由用户输入到模拟系统1中),例如,由仿真系统1(图2)执行的仿真程序可以接收包括适当电路组件模型连接的描述的电路网表,并且还可以接收“控制语句”,如框13所示。控制语句通常包括各种设备参数容差,通常还包括所需的电路分析次数,并指出它们是交流分析还是直流分析。
参考框14,仿真过程根据需要修改或增强或替换基本参数设备模型,以提供合适的简化设备模型,仿真系统1发现基本参数设备模型运行时,允许仿真计算收敛范围。仿真程序评估所有基本参数设备模型,只要在给定的范围内运行,就具有很强的非线性,因此超出范围的设备模型可以被修改或替换为线性或非线性模型。具体来说,仿真系统1动态修改基本参数设备模型,这些模型表现出超出其正常工作范围的强非线性。高度非线性的设备函数,如指数函数,被更简单的函数所取代,如一阶线性或二阶多项式函数,等其他具有更适合模拟器的数值特性的属性。然后模拟系统1执行用户指定的一个或多个DC和/或瞬态分析。例如,在每个指定分析期间,仿真系统1重复评估/计算被仿真电路中非线性器件条件的实例(即评估/计算通过二极管的电流、正向电压和电导)。如果非线性设备在仿真过程中的某个时间点进入超范围的状态,则仿真系统1从原始非线性基础参数模型切换到指定的线性函数或二阶函数,并在修改后的时间内使用它设备模型保持在超出范围的状态,然后返回到原始的非线性基础参数模型。(定义设备模型的“超出范围条件”,以使设备模型的终端参数和/或变量落在基本参数设备模型中已使用的实际物理设备值之外。)步骤详情参照后续描述的图3B中对应的框14的描述进行执行。
参考框16,修改的或增强的或替换的设备模型(以下简称为“已修改的设备模型”),被用于使用修改的/替换的设备模型执行一个或多个DC和/或瞬态分析。具体而言,会根据当前用户选择的指定分析,按照随后进行描述的图3C的瞬态分析过程来执行。在执行分析时,如果被评估的设备模型需要进行交流分析,则先需要计算直流工作点。这需要事先对这个非线性设备模型进行评估。要执行交流分析,有必要在直流工作点对相关设备模型进行线性化。(操作点分析可以是(但不必是)一个独立分析。)如图3A中的决策框 17所示,仿真程序接下来需要根据框16来确定执行的当前分析是否成功,以及是否需要进一步分析。如果判定框17的返回结果是真值,则模拟程序通过流程图路径17A返回到框16并执行下一个用户指定的分析。如果判定框17 的确定是假值,则此电路的整体仿真完成,如“END”标签24所示。
图3A中的框14指示的评估设备模型的过程细节在图3B中进行详细指示,其中设备评估程序从开始标签经由路径13A行进到框26,并从模型库5的模拟电路库5中获取设备模型(例如由后续描述的等式(1)和(2)表示的器件模型);该设备模型运行在超出范围时,可能会表现出很强的非线性。然后程序进入方框28以接收指定的控制参数。控制参数的获取可以在电路级别或设备级别。例如,其中一个电路级别的控制参数可以是电路中所有器件的最大电导。另一个控制参数可能是某些二极管型号的最大电流。
然后程序进行到框30,并且确定所考虑的设备模型的正常操作范围的边界,其中可以实现的一种方式为通过使用后续描述的等式(3)。接下来,程序进入决策框32,并根据用户指定的选项确定当前的非线性基本参数设备模型是否应该被修改或增强或替换为一阶线性多项式或二阶多项式。如果判定框 32的选择是使用一阶多项式,则程序进行到框34,并且为超出范围的设备数学函数计算适当的参数,同时需要保持设备函数和它们的一阶导数的连续性。如路径10和标签38所示,由此形成了期望的修改或增强或替换的设备模型。如果判定框32的选择是使用二阶多项式,则程序转到框36并计算适当的参数,以用于超出范围的设备。修改后的设备模型的结果,如路径10所示,进入到标签38。然后,根据图3A中的框16的过程使用修改后的设备模型。
在本实施例中,由以下等式(1)和等式(2)表示的二极管模型,说明了原始基本参数器件模型。参考框26,仿真/分析系统1从模型库5(图2)中获取此二极管模型,其电流-电压特性由公式(1)确定,其电导特性由公式(2) 确定:
其中,vd是二极管的正向电压,Id是二极管电流,gd是二极管电导,Is和 Vte是模型参数。Is是饱和电流。Vte=K*q/T,其中K是玻尔兹曼常数,q是电荷,T是开氏温度。(图4A显示了公式(1)的二极管电流Id的代表图,图4B 显示了相对应的二极管电导gd的图。图4A和4B中的实线曲线表示公式(1) 和(2)分别表示曲线的虚线部分和已根据本发明动态修改的曲线部分。虽然Id及其导数都是连续的,但对于较大的vd值,它们是强非线性的。例如在图4A 中,可以看出,大约vd=0.75V(伏特)处,指数二极管模型可能被认为超出范围,从那时起,需要在合适的“易于-收敛”线性或多项式函数来代替原来的指数函数。)
参考该示例的图3B中的框28,模拟/分析系统1接收用于修改二极管模型的控制参数,包括电压、电流和电导值(例如,Vmax=0.7V,Imax=1A(安培), gmax=(1×10+3)mhos,以及等式(1)中指数表达式的替代选择(例如,一阶或二阶多项式方程)
参考图3B中的框30,此示例中的仿真/分析系统1,二极管模型的等式(1) 的正向电压vd的“正常”工作范围的边界电压V0,由下式给出:
其中V0是括号内指示的三个电压中的最小值。
如果检测到超过边界电压V0的操作,则仿真/分析系统1会选定相对应的二极管模型中的线性或二阶超范围电流方程,并计算相应的器件模型参数对方程进行修改。如果根据决策框34选择线性近似,则仿真/分析系统1使用下述等式(4)、(5)、(6)和(7)根据二极管电流和二极管电导的连续性条件计算以下参数,如框34所示:
Id=a0+a1(vd-v0) (6)
gd=a1 (7)
然而,如果仿真/分析系统1在决策框32中,决定用二阶多项式近似将对二极管的超出范围操作的Id建模,则仿真/分析系统1计算如下模型参数,如框36所示,参考如下电流、电导和电流方程的二阶导数的连续性条件:
Id=a0+a1(vd-v0)+a2(vd-v0)2 (9)
gd=a1+2a2(vd-v0) (10)
需要注意的是,如果基本模型是连续的,则修改后的设备模型的电流及其导数也必须保持连续。
图3C与2009年6月26日、2009年12月31日公开号为2009/0326882 的公开的题为“用于处理阈值交叉事件的方法和系统”的美国专利申请的图2A 相同,并且引用到本申请中。如图3C所示,瞬态分析在时间间隔(0,T)上执行,该时间间隔在计算上被划分为离散时间点tm,其中时间索引m是分析过程中生成的时间点的索引。时间间隔的开始和停止可以由用户指定。对建模电路进行修正节点分析,构造微分代数方程,将微分代数方程的时间导数项离散化,生成非线性代数方程组。初始化包括预测时间索引m=1的时候的,初始时间步长h1,以及生成时间索引m=0的时候,对应的时间点t0的电路方程的解,来分析求得这时候的v0。为了便于描述,假设分析开始于t0=0(也可以是任何其他用户指定的时间点)。
在图3C中,START标签通过路径14A从图3A中的框14到框200。在框200中,模拟程序首先初始化本示例中的瞬态分析。比如,可以确定要执行的瞬态分析的起点(在该起点处,初始时间可能被设置为零)。瞬态分析初始化后,为每个时间索引m生成时间点(即求解非线性代数方程),并在达到停止时间T时终止瞬态分析。时变输入源提供输入激励信号,例如一个电压或电流,其值是时间的函数,因此当前时间点的改变可能需要调整对应输入源的值。为了在时间点tm的时候生成解,时变输入源被更新以生成对应的输入激励值,这些基于前一个时间点的更新后的解决方案。注意,该方法的这一点,时间点tm处于时间步长hm,该时间步长hm是在框200的初始化过程期间或在验收先前时间点tm-1之后预测的,按照框212中指示的。如果修改后的预测时间步长的非线性代数方程的解不能收敛或不可用,则按照框210的流程进行修改。
然后,如框202所示,可变的输入激励在下一个时间点被更新,并且下一个时间步长的初始“猜测”的合理的仿真值被确定。可以通过任何合适的方式来确定解vm的初始猜测值,例如通过外推法进行推导。如框206所示,在当前时间点求解电路方程。(一旦确定了激励vm的初始推测值,非线性代数方程在当前时间点tm使用牛顿-拉弗森迭代方法求解,下面将对参考图3D进行更详细的描述。一般来说,牛顿-拉弗森迭代法先得到一个初始解,并迭代对其进行多次计算,使推测值在每次迭代中越来越准确。)
如果迭代方法收敛于解vm并且解vm满足框208对应的任何用户指定的要求,则根据框212求解时间点tm的解为vm。依据框212产生的时间点包括输出用户请求时间点的任何信息,即结果。输出可能涉及到包括诸如存储所请求的结果和/或将结果提供给另一个软件的应用和/或以人类可读的形式(例如在纸上或在显示器上)来显示结果。任何用于生成时间点的数据结构都会根据当前时间点进行更新。
然后根据框214预测下一个时间点的时间步长。然后根据框202-214的流程,基于新的时间步长生成下一个时间点,并求下一个时间点的解,重复直到某些终止标准已满足分析条件(例如根据决策框215已达到瞬态分析的停止时间)。
如果迭代方法没有收敛于解vm,或者根据框208的解vm不能满足所有用户指定的要求,则需要适当减小当前时间步长hm,使当前时间点tm更接近前一个时间点。然后尝试生成当前时间点tm,如果不符合,重复上述步骤,直到已满足终止分析的某些标准,或者当前时间hm步长太小。如果模拟解收敛并且是可接受的,如判定框208的结果为“是”,则表示当前时间点是可被接受,跳转到框212。框214的步骤,通过预测来确定下一个时间点的时间步长。如果判定框208的结果为“否”,则程序转到框210并减少当前时间步长。然后程序进入判定框215,如果该判定结果是否定的,则程序返回到更新时变输入源这一步,并确定解的另一个初始猜测,如框202所示。如果该判定框215 判定结果是肯定的,则程序沿着路径16A到达图3A中的判定框17。(框 200-206的更多细节参见后续描述的图3D。)在某些情况下,会出现阻止迭代产生收敛的非收敛误差。下面将进一步描述该问题的解决方案。
图3D是第2009/0326882号公布(并以引用的方式并入本申请)的图2B的简化版本。图3D示出了简化的牛顿-拉弗森数值分析处理流程,并且示出了在当前时间点tm处求解非线性代数电路方程组的方法的流程图。该方法是一种基于牛顿-拉弗森方法的迭代方法,他用于求解非线性代数方程。本质上,该方法试图在时间点tm收敛于解vm。如前所述(参考图3C的框202),该方法从在当前时间点tm处的解vm的投影初始猜测开始,并迭代直到收敛到根据决策框236确定的解。
在图3D中,START标签来自图3C的框206,来评估所有非线性模型,如下面参考图3E所述。在评估非线性器件之后,形成代表被模拟的集成电路的线性方程组(通常以矩阵表示),如方框226所示。更具体地,非线性代数方程围绕当前解vm k进行线性化(可以使用任何合适的可用于形成线性方程组的技术。)然后求解线性方程组,如图3D的框228所示,以确定当前解vm k的更新Δvm k+1。然后将下一次迭代k+1的解vm k+1计算为当前解vm k和更新Δvm k+1的总和。然后,根据框226,模拟系统1形成线性系统。然后,根据方框228,模拟系统1求解线性方程组。
根据判定框236检查解Δvm k+1和其他收敛标准(例如,基尔霍夫电流定律)是否收敛。如果框236的判定结果是肯定的,则说明解收敛,图3D的程序终止并返回到图3C的方框208中。如果决策框236的判决结果是未收敛,则执行框224-228,进行另一次迭代。
图3E的流程图,说明了图3D中的框224的设备评估过程。因此,图3E 中的START标签与图3D中的起始点相同,即,图3D中框206的入口点。模拟程序根据决策框15判定是否需要评估更多的设备模型。如果结果返回真值,则程序进入到判定框18,并确定当前设备实例(即,设备模型)是否在超出范围中进行操作,并且判断相应的合适的修改设备模型是否可用。如果判定框18的返回结果是真值,则模拟程序转到框22评估(即计算)修改后的超出范围的设备模型方程。如果判定框18的返回结果是假值,则仿真程序转到框20并评估原始基本设备的模型方程。到了这一步,任何情况,模拟程序都返回到决策框15。如果决策框15的返回结果是假值,则程序返回到图 3D的框226。
因此,仿真系统1(图2)会自动查找和识别被仿真电路中的器件的基本参数模型超出范围的条件,并在必要时对其进行替换、增强或修改高度非线性(因此不准确)的器件,具有线性和/或二阶多项式函数的原始基本参数模型的函数(例如指数函数),以保持原始基本参数模型的连续性和单调性。该技术极大地提高了仿真系统1的数值稳定性并避免了收敛失败,并减少了仿真器运行时间,从而提高了SPICE(或其他)电路仿真系统1的鲁棒性和性能。
这与更改模拟器设置和/或修改正在模拟的电路等现有解决方案形成对比,这些解决方案实际上是手动试错,本质上是非常低效、耗时且成本高昂的。例如,判断设备模型所描述的条件是否超出范围的技术,不需要确定模型中的数学函数和/或其导数是否连续,也不需要尝试“修复”这种现有技术的要求的不连续性(如上述已公开的Liu等人的专利申请)。相反,本发明的所述实施例子只通过简单的一阶或二阶多项式函数等自动替换或修改原始基本参数模型,以使模型具有更小的非线性。然而,本发明的所述实施例不“修复”设备模型的不连续性。
电路仿真的基础在下文中描述。大多数电路模拟器使用改进的节点分析 (基于基尔霍夫定律)来制定N个微分代数方程(DAE)系统:
现在参考图5,微分方程(11)中的时间导数项可以在502使用时间积分方案进行离散化。为了不失一般性和简单起见,在504使用反向欧拉方案来求解方程(11)。由此产生的非线性方程组是:
其中,m是时间点索引,hm是时间步长。
在506中使用牛顿-拉弗森方法来获得非线性方程组(12)的解,其迭代求解以下线性系统直到满足收敛标准
牛顿-拉弗森方法有两个收敛标准,第一个标准或剩余条件在508指定 KCL应在一定程度上得到满足:
其中∈v是更新条件的容差。
有缺陷的SPICE模型
如上所述,在解不收敛的地方可能会出现不收敛错误。如图6所示,不收敛602有多种潜在原因。其中包括有缺陷的SPICE模型604和设计错误606。对于有缺陷的SPICE模型604的出现,牛顿-拉弗森方法将收敛在两种情况下。这些条件包括1)解的初始猜测值与实际的解足够接近;2)非线性电路方程(12)的二阶导数,存在。
在瞬态仿真过程中,第一个条件在大多数情况下都可以满足,因为可以减小时间步长以确保信号的变化足够小。然而,在某些情况下,器件模型方程在某些区域具有负斜率(负电导或电容),如果初始猜测无法避开负斜率区域,则会导致不收敛。
大多数现代模拟器没有形成明确的非线性电路方程(12)。相反,半导体元件SPICE模型方程用于组成雅可比矩阵和线性系统(13)的右侧。第二个条件相当于电导,并且这些模型的电容必须是可推导的。如果电导或电容在某些区域没有导数,或者更糟糕的是,不连续,牛顿迭代可能就不会收敛。
在这两种情况下,模型都需要由模型提供者修复。用牛顿-拉弗森方法使用等式(13)所示的线性表达式来逼近非线性函数,提出以下线性检查公式来检测两种有缺陷的模型情况:
设计错误
数字在计算机中由有限数量的数字表示。由于舍入误差,在浮点运算期间可能会降低数字精度。对于某些特殊情况,降低的精度会导致不收敛。这些特殊情况通常是由错误的设计造成的,需要引起设计师的注意。
第一个设计故障问题涉及近乎短路的情况。在计算流入/流出节点的电流总和时,由于可能存在较大的舍入误差,会导致违反等式(15)的剩余准则。
第二个设计缺陷是高阻抗节点的情况。节点处的接地阻抗非常大,该节点被认为是“浮动的”或与其他电路节点隔离的。由于舍入误差的问题从而导致了违反等式(16)的更新准则,因此无法准确计算出牛顿节点之间的电压更新。
对于现有的电路模拟器,有两个问题会使得调试瞬态非收敛错误变得非常困难。首先,在因非收敛错误而失败之前,瞬态仿真可能会运行数天。然后,设计师或EDA工程师还需要几天时间来重现故障。其次,大多数现代模拟器通过尝试许多的启发式方法来努力解决非收敛问题,比如减小时间步长、更改时间积分方法、重新调整矩阵、放宽容差,甚至微调电路本身。这种救援工作通常是在用户不知情的情况下以“放到最后处理”的方式进行,从而阻碍了用户识别不收敛的实际原因。
基于此本实施例提出一种瞬态电路仿真中不收敛误差的检测方法,如下步骤:
获取用于瞬态电路仿真的电路相关的电路网表和控制语句,并在预设时间点执行瞬态电路仿真。
判断瞬态电路仿真过程中是否出现不收敛错误。
在判定确定出现非收敛错误的情况下,启动瞬态调试模式。
在启动瞬态调试模式后,重复执行瞬态电路仿真并判断是否出现不收敛错误;以及
在瞬态电路仿真不出现非收敛误差的情况下,确定瞬态电路仿真的结果。
在一些实施例中,还包括:基于启动所述瞬态调试模式时,所保存的最近的正常仿真求解时间点,来执行所述瞬态电路仿真。
在一些实施例中,基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真包括:
响应保存的最近的正常仿真求解时间点预测下一个时间点的时间步长;以及
求解下一个时间点的非线性电路方程。
在一些实施例中,求解下一个时间点的非线性电路方程包括:
确定电路中的非线性器件;
基于确定的非线性器件形成线性方程组;以及
求解所形成的线性方程组,以确定是否出现不收敛。
具体的,图7示出了在702处执行瞬态电路仿真期间,克服的第一个问题的方法。图中704处,该方法保存常规瞬态电路仿真期间的“最后正常工作”的时间点(也即后续的最近的正常仿真求解时间点)。最后正常工作的时间点是最近接受的时间点,在该时间点,很容易牛顿收敛(迭代次数很少)并且完全准确。当在706检测到不收敛错误时,保存的信息允许模拟器从保存的时间点顺利重启。如果没有错误,模拟流程从702继续执行。例如,如果用后向欧拉法进行时间积分计算,则只需保存当前和先前时间点的解向量以及当前时间点的电荷向量作为最后一个正常工作的时间点。对于第二档的方法,需要将更多的先前时间点的解和电荷向量保存为最后一个正常工作的时间点。另外,为了顺利重启仿真,还需要保存电路状态变量和时间步长信息,如果电路中有Verilog-A模块,也会保存 Verilog-A模型的内部状态,这样就可以在重启中正确恢复。此外,在混合信号或AMS仿真的情况下,需要保存数字仿真器和接口组件的状态,以确保,通过记录最后正常工作时间点的方式,能够成功重启。正常时间点在框704 处会不断更新,因为电路模拟器在不断运行推进。
如果瞬态电路仿真由于非收敛错误而失败,则流程会自动进入到框708 处,并打开调试模式,并在框710处,从已经保存的最后正常工作时间点处重新启动瞬态仿真。在框712处,一旦重启后的瞬态仿真首次检测到牛顿故障,该模拟就会停止(没有放到最后处理或用其他变通方法)在框714处,并在框716开始识别不收敛的原因。如果在框712没有检测到牛顿故障,则会跳转到框718处继续模拟,直到检测到故障或模拟完成。
在一些实施例中,分析瞬态电路仿真以确定不收敛的原因包括:
为电路中的各节点确定剩余条件和更新条件;
确定电路中各节点是否满足剩余条件和更新条件;以及
建立非收敛误差,所述非收敛误差用于确定电路中的各节点是否满足剩余条件和更新条件。
参考图8,在框802处,该方法会强制根据等式(15)和(16)对所有等式/节点的剩余条件和更新条件进行全面检查,然后执行下面的步骤。首先,对于不满足剩余条件(15)或更新条件(16)的每个节点(分支A),在框804处找到连接该节点的所有非线性器件实例。对于每个连接的器件实例,在框806节点,检测对于此节点的电流和电荷的贡献。
在一些实施例中,建立非收敛误差包括:
对连接到不满足剩余条件和更新条件的各节点的器件执行线性检查;以及
为每个未通过线性检查的器件,报告为错误模型器件。
具体可以使用等式(17)和(18)以及用户指定的选项∈i和∈q来评估不等式。在判断框808中,如果在线性检查中失败,则会跳转在810处,通过输出带有模型名称、器件实例名称、终端参数(电流或电荷)和实例偏差的“坏模型”消息来报告“坏模型”情况。
在一些实施例中,建立非收敛误差还包括:
确定连接到不满足剩余条件的电路的每个节点的每个非线性器件的电导;和
在确定的电导超过预定阈值的情况下,则报告器件短路。
具体的,对于每个不满足等式(15)的剩余条件(KCL)的节点(分支B),在 812处找到连接该节点的所有非线性器件实例。对于每个连接的器件实例,在 814处,检查连接到该节点的每个电导。如果任何电导大于用户在查询步骤 816指定的阈值,则在818通过输出带有模型名称、实例名称、电导名称、电导值和实例偏差的“短路”消息来报告“短路”情况。
在一些实施例中,建立非收敛误差还包括:
为不满足更新条件的电路的每个节点确定电导矩阵的对应对角元素的浮动节点情况检查值;以及
在确定的浮动节点情况检查值小于预定阈值的情况下,则报告浮动节点情况。
对于未能满足更新条件(16)的每个节点(分支C),在820处,检查电导矩阵的对应对角线元素的等式(14)中的值,即节点的接地阻抗值。如果该值小于用户在查询步骤822指定的阈值,则在824通过输出带有节点名称和对角元素值的“浮动节点”消息来报告“浮动节点”的情况。
在一些实施例中,启动瞬态调试模式之后,还包括:
判断是否已启动瞬态调试模式;
在未能启动瞬态调试模式的情况下,则基于接收到的与所述电路网表和所述控制语句相关的时间点执行瞬态电路仿真;
基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真;
判断瞬态电路仿真是否出现不收敛;
在收敛的情况下,则保存新的最近的正常仿真求解时间点;
重复执行瞬态电路仿真,直到出现不收敛;以及
在不收敛的情况下,分析瞬态电路仿真以确定不收敛的原因。
具体的,参考图9-图12,来更全面地说明该过程,电路仿真的基本流程见图3A-3E。现在参考图9,说明了具有自动调试功能的瞬态电路仿真的高一级的流程图。该过程从步骤902开始,并且在步骤904接收特定设计电路的电路网表和控制语句。在步骤906开始对电路设计执行瞬态分析。在步骤908 确定瞬态分析是否成功,或者需要将电路分析进入调试模式。分析没检测到如上所述的不收敛错误则认为是成功的。如果检测到收敛错误则进入调试模式,在步骤910开启瞬态调试模式,并利用如前所述的最后保存点的数据,载入后返回步骤906。如果在查询步骤908确定分析成功,则过程在步骤912 结束。
进一步参考图10,一旦启动调试模型,进行瞬态电路的分析。该过程更具体地描述了图9的执行瞬态分析框906中的操作。该过程从框1002开始。在步骤1004进行瞬态分析的初始化。步骤1006查询该过程是否在调试模式。如果在调试模式内,则跳转到框1008,读取先前保存的在存储器中的“最后良好”时间点(最近的正常仿真求解时间点),来恢复存储。如果分析过程不在步骤框1006确定的调试模式内,或者步骤1008恢复了“最后保存”时间点,则在步骤1010预测下一个时间点的时间步长。基于预测的时间,在步骤1012 中,更新时变输入源,并在步骤1012中生成初始预测值。基于预测值,在步骤1014中求解当前时间点的非线性电路方程。查询步骤1016的返回结果是否收敛。如果是,则在步骤1018接受并存储当前时间点,并且查询步骤1020 确定暂态误差是否已经终止。如果暂态误差没有终止,则控制流程返回到步骤1010以预测下一个时间点的时间步长,重复该过程。如果在查询步骤1020 确定瞬态误差被终止,则控制路程从框1026返回到图9的框908。如果步骤 1016确定没有收敛或没有可接受的解,则控制流程跳转到步骤1022,通过查询来确定当前进程是否处于调试模式。如果不在调试模式内,则控制流程返回到步骤1010,来预测下一时间点的下一步骤。如果步骤1022查询后,该过程处于调试模式,则在步骤1024中,分析收敛失败原因,以便识别不收敛的原因。然后控制流程转到步骤1026。
图11示出了通过使用牛顿-拉弗森方法来确定是否收敛的流程图。图11 具体地示出了在图10的框1014内发生的关于在当前时间点求解非线性电路方程以检测收敛的过程。该过程从步骤1102开始。在步骤1104进行非线性设备实例的评估。在步骤1106生成电路方程的线性系统。在步骤1108对电路方程的线性系统进行求解。在步骤1110检查线性系统的收敛标准。查询步骤1112确定系统是否已经收敛或者分析进程是否需要终止。如果系统既没有收敛也不需要终止,则控制流程返回到步骤1104。如果系统收敛或需要终止,则控制流程转到框1114,并将流程返回到图10的框1016。
参考图12,图12示出了发生在图10的框1024中的故障分析过程的流程图。该过程从步骤1202开始,并且在步骤1204中检查所有节点的剩余条件和更新条件,使用上面的等式(15)和(16)来对节点的剩余进行描述并更新等式。对于未能满足剩余或更新条件的每个节点,在步骤1206找到连接到该节点的所有非线性器件实例。对于每个连接的器件实例,对节点有贡献的终端电流和电荷的线性进行连接。此分析失败会导致报告模型设备实例的错误。对于未能满足剩余条件的每个节点,在步骤1208定位连接到该节点的所有非线性器件实例。对于每个非线性器件实例,检查连接到该节点的电导,并且如果任何电导大于指定的阈值由用户提供短路情况报告。最后,对于未能满足更新条件的每个节点,报告电导矩阵的相应对角元素的“浮动节点”案例检查值。如果该值小于指定的阈值,则报告浮动节点情况。此流程结束后,控制流程从1212返回到图9的框908。
本申请实施例描述了确定电路仿真中可能出现的非收敛错误的原因的方法。本申请提出一种特定的方式来定位在电路仿真中引起非收敛误差的点,从而对电路仿真提供更好和更完整的分析。
本申请实施例还提出一种用于检测瞬态电路仿真中的不收敛误差的系统,包括:
电路仿真器,用于在电路上运行瞬态电路仿真;
存储器,用于至少存储瞬态电路仿真的最近的正常仿真求解时间点;
在电路模拟器内实现的不收敛检测器,用于在瞬态电路模拟期间检测不收敛误差,其中不收敛检测器还被配置为执行前述的瞬态电路仿真中不收敛误差的检测方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种瞬态电路仿真中不收敛误差的检测方法,其特征在于,包括:
获取用于瞬态电路仿真的电路相关的电路网表和控制语句,并在预设时间点执行瞬态电路仿真;
判断瞬态电路仿真过程中是否出现不收敛错误;
在判定确定出现非收敛错误的情况下,启动瞬态调试模式;
在启动瞬态调试模式后,重复执行瞬态电路仿真并判断是否出现不收敛错误;以及
在瞬态电路仿真不出现非收敛误差的情况下,确定瞬态电路仿真的结果。
2.如权利要求1所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,还包括:
基于启动所述瞬态调试模式时,所保存的最近的正常仿真求解时间点,来执行所述瞬态电路仿真。
3.如权利要求1所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,启动瞬态调试模式之后,还包括:
判断是否已启动瞬态调试模式;
在未能启动瞬态调试模式的情况下,则基于接收到的与所述电路网表和所述控制语句相关的时间点执行瞬态电路仿真;
基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真;
判断瞬态电路仿真是否出现不收敛;
在收敛的情况下,则保存新的最近的正常仿真求解时间点;
重复执行瞬态电路仿真,直到出现不收敛;以及
在不收敛的情况下,分析瞬态电路仿真以确定不收敛的原因。
4.如权利要求3所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,基于已启动瞬态调试模式时保存的最近的正常仿真求解时间点执行瞬态电路仿真包括:
响应保存的最近的正常仿真求解时间点预测下一个时间点的时间步长;以及
求解下一个时间点的非线性电路方程。
5.如权利要求4所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,求解下一个时间点的非线性电路方程包括:
确定电路中的非线性器件;
基于确定的非线性器件形成线性方程组;以及
求解所形成的线性方程组,以确定是否出现不收敛。
6.如权利要求3所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,分析瞬态电路仿真以确定不收敛的原因包括:
为电路中的各节点确定剩余条件和更新条件;
确定电路中各节点是否满足剩余条件和更新条件;以及
建立非收敛误差,所述非收敛误差用于确定电路中的各节点是否满足剩余条件和更新条件。
7.如权利要求6所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,建立非收敛误差包括:
对连接到不满足剩余条件和更新条件的各节点的器件执行线性检查;以及
为每个未通过线性检查的器件,报告为错误模型器件。
8.如权利要求6所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,建立非收敛误差还包括:
确定连接到不满足剩余条件的电路的每个节点的每个非线性器件的电导;和
在确定的电导超过预定阈值的情况下,则报告器件短路。
9.如权利要求6所述的瞬态电路仿真中不收敛误差的检测方法,其特征在于,建立非收敛误差还包括:
为不满足更新条件的电路的每个节点确定电导矩阵的对应对角元素的浮动节点情况检查值;以及
在确定的浮动节点情况检查值小于预定阈值的情况下,则报告浮动节点情况。
10.一种用于检测瞬态电路仿真中的不收敛误差的系统,其特征在于,包括:
电路仿真器,用于在电路上运行瞬态电路仿真;
存储器,用于至少存储瞬态电路仿真的最近的正常仿真求解时间点;
在电路模拟器内实现的不收敛检测器,用于在瞬态电路模拟期间检测不收敛误差,其中不收敛检测器还被配置为执行如权利要求1-9任一项所述的瞬态电路仿真中不收敛误差的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210629419.8A CN115510792A (zh) | 2022-06-02 | 2022-06-02 | 瞬态电路仿真中不收敛误差的检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210629419.8A CN115510792A (zh) | 2022-06-02 | 2022-06-02 | 瞬态电路仿真中不收敛误差的检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115510792A true CN115510792A (zh) | 2022-12-23 |
Family
ID=84500784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210629419.8A Pending CN115510792A (zh) | 2022-06-02 | 2022-06-02 | 瞬态电路仿真中不收敛误差的检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115510792A (zh) |
-
2022
- 2022-06-02 CN CN202210629419.8A patent/CN115510792A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5880967A (en) | Minimization of circuit delay and power through transistor sizing | |
US6272668B1 (en) | Method for cell swapping to improve pre-layout to post-layout timing | |
JP2018139136A (ja) | 系および部品における信頼性情報の影響の識別および分析のためのモデルに基づく設計の拡張 | |
US7643979B2 (en) | Method to analyze an analog circuit design with a verification program | |
US6278964B1 (en) | Hot carrier effect simulation for integrated circuits | |
US9424379B2 (en) | Simulation system and method for testing a simulation of a device against one or more violation rules | |
US8230382B2 (en) | Model based simulation of electronic discharge and optimization methodology for design checking | |
JP6193038B2 (ja) | 故障シミュレーション方法およびその装置 | |
US20040078175A1 (en) | Method and apparatus for modeling and simulating the effects of bridge defects in integrated circuits | |
US20030018459A1 (en) | Method for debugging of analog and mixed-signal behavioral models during simulation | |
US10169502B2 (en) | Addressing of process and voltage points | |
Leveugle et al. | Multi-level fault injections in VHDL descriptions: alternative approaches and experiments | |
US20100100860A1 (en) | Method and apparatus for debugging an electronic system design (esd) prototype | |
US20150161306A1 (en) | Fault insertion for system verification | |
US20070079205A1 (en) | Circuit simulation with decoupled self-heating analysis | |
US20140244223A1 (en) | Method For Simulating Circuitry By Dynamically Modifying Device Models That Are Problematic For Out-of-Range Voltages | |
Tuzov et al. | DAVOS: EDA toolkit for dependability assessment, verification, optimisation and selection of hardware models | |
US7096384B2 (en) | Fault simulator for verifying reliability of test pattern | |
US9996656B2 (en) | Detecting dispensable inverter chains in a circuit design | |
CN115510792A (zh) | 瞬态电路仿真中不收敛误差的检测方法及系统 | |
US8863050B1 (en) | Efficient single-run method to determine analog fault coverage versus bridge resistance | |
WO2021121240A1 (en) | System and method for identifying design faults or semiconductor modeling errors by analyzing failed transient simulation of integrated circuit | |
US11842134B2 (en) | Automated determinaton of failure mode distribution | |
US7236917B1 (en) | Method and apparatus for generating minimal node data and dynamic assertions for a simulation | |
US20190163844A1 (en) | Checking equivalence between changes made in a circuit definition language and changes in post-synthesis nets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |