首页 / 系统仿真

系统仿真无效专利 发明

技术内容

技术领域 本发明一般地涉及仿真,更特别地涉及大复杂系统的精确波形级别的计算 机仿真。 背景技术 使用计算机系统进行仿真,使得设计者或者开发者在生产之前可以对设计 进行测试。例如,设计者可以使用计算机应用程序来设计复杂的电路。然后, 在一定输入情况下该应用程序以一定次数仿真电路的输出。使用这种仿真,设 计者可以容易地原型设计几个电路,并且无需实际建造这些电路就对电路进行 测试。 仿真通常需要广泛的计算资源。以廉价的方式提供这些资源的一个途径是 使用并行运行的机器集群。例如,几个计算机系统可一起联网来为单一问题的 解决方案而共同工作。并行执行这些仿真的一个挑战是在这些机器之间分割和 协调工作。 通常使用集成电路模拟的仿真程序(SPICE)仿真器或其衍生产品来执行 电路仿真。这些仿真器使用公知为“直接求解”方案方法的数值积分。随着电 路变得较大并且信号完整性效果变得更为重要,运行这些仿真所花费的时间已 受到限制。这些仿真典型地涉及电路的瞬态特性,并且需要解决初始值问题。 图1是示出使用初始值问题确定仿真解决方案的过程的流程图。步骤100 可用于使用直接求解方法来确定较大仿真的特定部分的方案。例如,可将电路 仿真分成几个块,每个块可由微分代数方程(DAE)表示。根据一个实施方式, 使用修正节点分析法(MNA)提供DAE。然后可简化并解答这些方程以获得 该仿真的解决方案。 步骤100在起始方框102开始。在方框104中,从设备模型提供DAE。 例如,DAE可以是形式。在方框106中,对DAE应用后向差分公 式以获得有限差分方程。有线差分方程可以是 F ( t n , y n , y n - y n - 1 h n ) = 0 形式。这些 是非线性代数方程。 由于非线性方程困难并且解决计算上花费高,所以在方框108中,执行牛 顿-雷夫森(NR)迭代法以获得线性代数方程。NR迭代法的形式为: y n m + 1 = y n m - ( F h y + F y ) - 1 F ( t n , y m n , y m n - y n - 1 h n ) . 然后在方框110中,使用线性系统 解算器可以解决Ax=b形式的由此得到的线性代数方程。 方框108和110形成NR循环,该循环可重复,直到在方框110中的线性 系统解算器的方程解收敛。在方框112中,判断NR方程解是否收敛。如果收 敛,则程序继续方框114。如果方程解不收敛,则NR循环重复,并且程序返 回方框108。 在方框114中,如果还有更多待处理的时间步,则程序100返回方框106, 并且及时确定新点的解决方案。如果没有时间步,则程序在方框116中结束。 此时,获得该问题的解决方案。 并行仿真 利用不同输入波形或动态矢量,芯片设计的验证需要运行许多瞬态仿真。 并行执行仿真能够加速仿真。通信开销和通过通信对同步计算的需求会造成并 行实施中的瓶颈。由于通信和同步开销,直接求解方法在并行执行中提供有限 的性能收益。 用于系统并行仿真的方法分为两种一般类型,这里称为方法内并行性和系 统内并行性。使用方法内并行性的方式,可使步骤100的NR迭代法并行化。 但是,使NR迭代法并行化需要在整个电路中的任何地方上的活动(即,变量 值中的快速变化)所规定的时标中整个电路通信同步。 在电路仿真的环境中,系统内并行性的方式在电路仿真文献中还称为“波 形松弛法”。系统内并行性涉及将电路分成多个支路,并且允许通过在多个支 路上交换整个波形来并行仿真初始值问题(瞬态仿真)。但是,在大多数实际 电路中,由于反馈,得到的收敛减慢。 当在系统内并行性仿真中使用的支路是强耦合系统中的部分时,收敛减慢 所造成的问题加重。如果系统中两个不同支路的两个或多个节点“紧密耦合” (J.White和A.I.Sangiovanni-Vincentelli的用于电路仿真的波形松弛法的划分 算法和并行实施,ICAS-85的议事录,第221-224页),则包括两个或多个支 路的系统或系统的一部分视为“强耦合”(参见Kevin Burrage的用于常微分 方程的系统的并行方法,计算数学进展,1997,第1-31页)。 由于慢收敛,系统内并行性实施的益处减小,其导致许多松弛迭代。为了 解决这个问题,已提出许多方法用于处理由局部耦合的环境中的强耦合导致的 慢收敛。“局部耦合”一词是指位于两个实体之间的特定连接。在多个电路的 环境中,局部耦合可以对应于装载使一个电路的一个端口连接到另一电路的另 一端口的导线。例如,在图18中,在S1和S2之间的耦合V1构成局部耦合。 例如,在J.White和A.I.Sangiovanni-Vincentelli的用于电路仿真的波形松 弛法的划分算法和并行实施,ICAS-85的议事录,第221-224页,V.一种利用 几种仿真工具用于混合系统分析的改进松弛方法(Dmitriev-Zdorov,V.B.; Klaassen,B.设计自动化会议,1995,EURO-VHDL,议事录EURO-DAC’95., 欧洲,Vol.,Iss.,18-22,1995年9月,第274-279页)中,记载了一些解决由 于强局部耦合造成的慢收敛问题的一些尝试。 与“局部耦合”相比,“整体耦合”是指以形成循环的方式通过连接多个 实体形成耦合。例如,整体耦合可通过使电路A与电路B连接形成,其中电 路B与电路C连接,而电路C又与电路A连接。因此,在图18中,包括V1、 V2和V3的耦合是整体耦合,其形成在S1、S2与S3之间的循环连接。解决 “整体耦合”的一些尝试在(作为提高基于松弛法的解算器中的收敛的一种方 法的广义耦合,Dmitriev-Zdorov,V.B.,设计自动化会议,1996,EURO-VHDL ‘96和展览会,议事录EURO-DAC’96,欧洲,Vol.,Iss.,16-20,1996年9 月,第15-20页)和(具有整体反馈回路的电路的并行波形松弛法,设计自动 化会议,1992,第12-15页)中记载,但这些尝试的结果是效率低。 在实践中,当系统内并行性方法用于使系统的仿真并行化时,多个划分变 得很大以至于不能获得计算加载的有效并行化,或者通信和同步开销使得方法 的效率很低。因此,需要一种减少执行并行化仿真所需的时间并且兼顾局部强 耦合与整体强耦合的方法。 发明内容 这里说明各种新颖的技术和系统,包括基于与仿真系统相关联的一个或 多个估计成本,通过将系统自动分解成第一组分区以仿真系统的方法。执行系 统仿真,其中使用精密度相对较低的仿真机制仿真对应于所述第一组分区的该 系统的部分。在仿真所述第一组分区中的每个分区期间,使用精密度相对较高 的仿真机制执行第二组仿真。 此后描述的另一新颖技术包括通过将系统分解成多个分区来仿真该系 统。可以层级了解方式执行分解。第一组分区对应于在第一类型仿真器而不是 第二类型仿真器上进行仿真的第一类型技术。第二组分区对应于在第二类型仿 真器而不是第一类型仿真器上进行仿真的第二类型技术。通过下列步骤仿真系 统,所述步骤包括:使用第一类型仿真器仿真第一组分区的每个分区;以及使 用第二类型仿真器仿真第二组分区的每个分区。 随后描述的另一新颖技术涉及通过自动检测与待使用以仿真系统的仿真 器相关的许可信息来仿真系统,并且至少部分基于所述许可信息仿真该系统。 随后描述的仿真技术允许对大的强耦合电路运行仿真,(由于容量限制) 所述电路不能在精密度较高的仿真器中运行。此外,所述仿真技术允许对登记 设计提取中产生的大的强耦合电路运行仿真。 使用这里描述的技术,可以对大的强耦合电路进行仿真,所述电路包括 电网/地网/基板栅格网,并且需要高仿真精确度以分析和识别信号完整性。 可将单个仿真操作分成在多个CPU和/或多核上同时运行的多个任务。例 如,在一个实施方式中,对多个CPU生成执行计划以及调度执行。在一个实 施方式中,调度涉及排程器先行。 所述技术还用于执行仿真进展报告和中介结果报告。这些报告技术可以 提供对执行仿真非常有用的反馈。 附图说明 通过实例示出本发明的一个或多个实施方式,但并不限于附图所示,其 中,相同的附图标记代表相同的元件,其中: 图1是示出使用初始值问题来确定仿真方案的过程的流程图; 图2示出实施本发明一实施方式的计算机系统; 图3示出根据本发明一实施方式的计算机系统集群; 图4是描述根据本发明一个实施方式的用于划分系统并执行仿真的过程 的流程图; 图5示出强耦合多端口非线性电路; 图6示出根据本发明一实施方式的包括近似的强耦合电路; 图7示出分解成几个较小分区的一个大分区; 图8示出具有m个近似分区的用于电路700的预览器电路; 图9示出用于对几个不同分区执行仿真的几个处理器; 图10示出根据本发明并行运行的几个处理器; 图11示出与预览器电路600类似的用于强耦合电路的预览器; 图12示出与电路800类似的包括许多独立分区的电路; 图13示出展示双向局部耦合的电路; 图14示出使用标准高斯塞德尔分解的慢收敛; 图15示出用于非线性元件G2的近似; 图16示出包括非线性元件G2的分段线性近似的电路; 图17是示出电路的加速收敛的曲线图; 图18示出双二次滤波电路; 图19示出使用高斯塞德尔分解划分的电路; 图20是示出使用高斯塞德尔分解的电路的仿真收敛的曲线图; 图21示出根据本发明一实施方式的从电路分解出的预览器; 图22是示出根据本发明一实施方式分解的电路的收敛的曲线图; 图23A示出非线性二维网格; 图23B和图23C示出网格的分解图; 图24示出用于来自电路的全参考仿真和全阶线性近似的片的中心节点电 压的曲线图; 图25示出在近似低阶预览器响应与用于片中心节点电压的全参考系统之 间的差值; 图26是示出使用基于预览器近似的实施方式在三次迭代之后仿真的电压 输出误差的曲线图; 图27是根据本发明一实施方式的用于仿真系统的系统的方框图; 图28A是由一条或多条导线彼此连接在一起的两个部件(Y和Z)的方 框图; 图28B是图28A中已隔离的部件Y和Z的系统的方框图; 图29是已划分成三个独立“Y”分区和三个独立“Z”分区的系统的方框 图。 具体实施方式 在下面的说明中,为了解释,阐述大量的具体细节来提供对本发明的全面 理解。但是,应理解无需这些具体细节也可实践本发明。在其他实例中,为了 避免使本发明不清楚,在方框中显示了公知结构和装置。 术语 应理解,在本说明中,参考“一个实施方式”或“一实施方式”的意思是 所参考的特征包含在本发明的至少一个实施方式中。此外,在本说明中的单独 参考“一个实施方式”或“一实施方式”不必参考同一实施方式;但是,除非 声明,否则这些实施方式不相互排斥,并且从本说明书中本领域的技术人员容 易了解除外情况。例如,在一个实施方式中描述的特征、结构、动作等还可以 包括在其他实施方式中。因此,本发明可以包括这里所述的实施方式的各种组 合和/或结合。 概述 如上所述,系统内并行涉及将系统分解为几个分区。更容易使较小的分区 并行化,因此潜在地减小仿真所需的时间。此外,较小的分区还需要较小的总 计算。通常,通过交换分区之间的波形来使仿真并行化。波形代表特定分区的 输出和输入。一旦交换的波形接近公值,波形便收敛,由此得到解决方案。两 个分区之间的强耦合能够增加收敛所需的迭代数目(或者两个分区之间的波形 交换)。 系统内仿真方法的优先实施仅能够有效地处理局部强耦合。这里描述的技 术是通过执行强耦合分区的近似“预览”方案来减少收敛所需的迭代数目。在 仿真开始之前引入这些预览方案,由此减少局部耦合和整体耦合的效果。如下 面将要描述的,引入近似法减少波形收敛所需的计算时间量,并且解决局部和 整体强耦合。 仿真迭代的概述 下面提供使用一连串仿真迭代来并行仿真系统的技术。根据一个实施方 式,系统被分成多个分区。在将系统分成多个分区之后,在所述分区中选择待 近似并单独仿真的一个或多个分区。选择待近似并单独仿的那些分区在这里称 为“所选分区”。系统中不属于任何所选分区的那些部分在这里通称为系统的 “剩余部分”。 在建立一组所选分区之后,执行仿真迭代。每个仿真迭代涉及两个仿真阶 段:预览器仿真阶段和所选分区仿真阶段。在预览器仿真阶段,在使用精密度 相对较低的仿真机制来仿真系统的所选分区期间,执行系统仿真。在所选分区 仿真阶段,在使用精密度相对较高的仿真机制来仿真每个所选分区期间,执行 一组仿真。 通过对比预览器仿真阶段的结果与所选分区仿真阶段的结果来确定是否 需要附加仿真迭代。如果需要附加仿真迭代,则执行附加仿真迭代,其中每个 后继仿真迭代考虑前一仿真迭代的结果。 根据一个实施方式,在预览器仿真阶段,使用所选分区的精密度相对较低 的数学模型,并且在所选分区仿真阶段,使用所选分区的精密度相对较高的数 学模型。在这种实施方式中,在两个仿真迭代阶段期间,可以使用相同的仿真 器仿真所选分区。 根据本发明的另一实施方式,在预览器仿真阶段,使用精密度相对较低的 仿真器来仿真所选分区,并且在所选分区仿真阶段,使用精密度相对较高的仿 真器来仿真所选分区。在这种实施方式中,在两个仿真迭代阶段期间,可以使 用所选分区的相同数学模型。 仿真系统的概述 图27是根据本发明一实施方式的用于仿真系统的系统2700的方框图。系 统2700通常包括系统定义剖析器2702、分割器2704和排程器2706。 系统定义剖析器2702接收待仿真系统的定义,并且向分割器2704的API 2706呈现该系统的规范描述。系统2700可以包括几个不同的系统定义剖析器, 每个系统定义剖析器设计为剖析不同类型的系统定义。例如,如果待仿真的系 统是电路,则可以采用能够剖析描述电路的网络表的系统定义剖析器2702。 在剖析网络表之后,系统定义剖析器2702将向分割器2704呈现该电路的规范 描述。 尽管使用不同的系统定义剖析器,分割器2704能够与各种类型的系统一 起使用。因为这些系统定义剖析器向分割器2704呈现了系统的规范描述,所 以待仿真的系统的特性对于分割器2704可以是非常透明的。 分割器2704将待仿真系统分成多个分区。如下面将更详细所述,划分待 仿真系统的过程可涉及几个阶段。一旦划分完待仿真系统之后,分割器产生描 述将仿真系统的计划。然后将这里称为仿真的“执行计划”的该计划提供给排 程器2706。 排程器2706接收来自分割器2704的用于仿真的执行计划,并且执行计划。 典型地,执行计划涉及仿真器的激励和仿真问题、调用仿真器2708、以及接 收来自仿真器2708的仿真结果。在电路仿真的环境中,仿真器2708可以包括 SPICE和/或FAST SPICE仿真器。如下面将更详细所述,在仿真的某些阶段 中,排程器2706使多个仿真器2708并行仿真,其中并行操作对应待仿真系统 所划分成的几个分区。 N端口系统的仿真 尽管将广泛讨论电路仿真,但是应理解其他仿真可以受益于这里说描述的 技术。例如,用联网的n端口来描述生物、化学和汽车仿真。 n端口可想成能与其他系统联网的较大系统的一分区。用n端口描述的任 何类型的系统可受益于所公开的技术。例如,n端口描述为诸如温都、速度、 力、功率等数值。现在诸如Verilog AMS的几个仿真标准能够描述n端口的各 种系统。 n端口系统的划分 图4是描述根据本发明一个实施方式的用于划分包括n端口或电路的系 统并执行仿真的过程的流程图。过程400描述将待仿真的较大系统分成与系统 内并行方法一起使用的较小分区。如下面所述,通过将整个系统分成较小的块, 减少用于每个分区的节点N数量,由此减少所需计算的总量。这些计算包括 对于收敛所需的波形迭代的数量的每个分区的运行波形仿真。 大分区、或者具有许多未知节点变量的那些分区比较小分区在波形仿真 期间通常需要更多的计算。对于不具有信号完整性效应的大多数纯数字电路, 每个时间点的计算成本与节点N的数量成比例,大致为Nα,其中α的范围是 从1.4到1.6。但是,当包括诸如电网网格的信号完整性效应时,α的范围是 从1.8到2.4。此外,对于较大电路,仿真中的时间点的数量由于较高总活动 而较大。同时,如果收敛速度和费用不受到负面影响,这些效应非常有利于运 行较小分区。 通常,较少节点或变量N电路具有每个时间点所需的较少计算。例如, 在α=2的系统中,具有1000个节点的分区将在波形中的每个时间点需要 1,000,000个浮点运算。另一方面,如果1000个节点电路分成均具有100个节 点的10个较小电路,则这10个较小电路在每个时间点仅需要10,000次浮点 运算。此外,对于较大电路,仿真中时间点的数量由于较大总活动而更多。 权衡考虑强耦合效应与将系统分成较小分区的优点。例如,分区可以包 括一种电路,该电路包含其行为严重依赖电路的其他元件的元件。如果分割这 些强耦合分区,则由此得到的仿真通常需要许多波形迭代来收敛。因此,收敛 所需的迭代的增加数量可超过由于较小分区的用于仿真每个波形迭代所需的 减少的时间。如下所述,引入使用预览器的近似法减少整体和局部耦合的效应, 减少收敛所需的迭代数量。 过程400在方框402开始。在方框404中,创建将整个系统分成子系统 的初始划分。基于由系统的固有属性产生的弱耦合来完成该划分。有效地,扫 描整个系统以确定初始分区的数量及他们的仿真顺序。选择这些分区,从而在 按照固有耦合顺序仿真时,这些分区以相对较少的迭代而收敛。大初始分区是 强耦合的结果。如上所述,较大分区对每个波形仿真需要明显更多的计算时间。 较长时间使得限制并行化的计算机负载不平衡。在方框406中,识别需要进一 步并行化的有序分区。通过检查在方框404中产生的还可分的分区来识别这些 分区。被识别的分区是比预期更大的强耦合分区。在方框408中,引入预览器 仿真以进一步并行化并获得细化划分和顺序。下面将进一步解释预览器及其运 行,但是通常预览器包括将引入强耦合系统中的近似法以提供近似预览器方 案。预览器“预览”仿真器的方案。由于预览器在分区仿真开始之前产生近似 值,所以系统减少局部和整体耦合的效应,下面将进行说明。 预览器确定进一步分割的最佳候选。在方框410,执行细化的分区仿真, 包括在计算机平台上按照新顺序的预览器仿真。该操作是其仿真的性能。使用 SPICE、Verilog AMS、或另一仿真应用程序执行该仿真。 在方框412中,监控仿真进展,并且执行对所提分割的收敛进行测试。 如果需要,进一步细化分割以产生最佳块组,由此最佳仿真。 通常使用n端口的互连描述在诸如电路仿真区域中出现的动态系统的仿 真。诸如Verilog AMS的仿真语言能使设计者用n端口分级描述大规模系统。 诸如SPICE的电路仿真器允许用n端口支路进行分级描述。任何n+1终端设 备可以描述为n端口支路。每个n端口内部描述为一组微分-代数方程。在端 口的互连导致诸如克希霍夫电流定律(KCL)或克希霍夫电压定律(KVL)的 进一步限制。 划分电路的实例 图5示出强耦合多端口非线性电路。电路500包括电路502和504,他们 可称为单独n端口。电路500是上述划分404的结果。电路500可以是过于大 的分区,所以将增加仿真所需的时间。但是,电路500还是强耦合的,并且如 果分割,将非常慢地收敛。较大的电路500可初步分成两个电路502和504, 其中电路502可以被近似,并且电路504是原始电路500的剩余部分。 特别地,电路500分成两个分区:电路502和电路504。为了描述的目的, 假设电路502是选择为近似并且单独仿真的唯一分区。因此,电路502是电路 500的“所选分区”,并且电路504是“剩余部分”。 假设将电路502表示为n端口阻抗H1,并且电路504是较大分区500的 剩余部分。电路502可以是n+1终端电路,其中n是电路中发现的端口的数目, 并且电路502与电路504的剩余部分共享公共点406。 如果通过引入计算上廉价的近似法来转换电路500以替代电路502,假定 ,则可加速收敛。 图6示出根据本发明一实施方式的包括近似的强耦合电路600。电路600 是电路500的“预览器”,其中电路502(所选分区)被近似电路602替代。 剩余电路504保持不变。只要近似是合理的,如下文所述,预览器电路600 变成与原始电路分区502H1弱耦合,并且预览器电路600和电路502的收敛将 快很多。选择近似是计算上廉价的,从而预览器电路600仿真与分区H2仿 真和分区502H1仿真几乎同时进行。 并行执行 在划分待仿真系统之后,分割器2704构造用于仿真的并行执行计划。分 割器2704将并行执行计划传递至排程器2706,并且排程器2706基于该计划 调用仿真器2708。例如,在仿真迭代的预览器仿真阶段,排程器2706可以调 用仿真器以仿真待仿真系统的预览器。在仿真迭代的所选分区仿真阶段,排程 器2706可以为待仿真系统的每一所选分区调用单独仿真器。每个仿真迭代的 结果用于确定是否应执行附加仿真迭代。 根据一个实施方式,以这种方式仿真待仿真系统,同时监控仿真性能。 如果仿真执行得比所指示的成本估计明显大很多,则可暂停仿真。在暂停仿真 之后,分割器2704可以修改仿真中使用的划分。例如,一旦检测到分区的仿 真花费比原始估计明显大很多,分割器2704可以进一步分解系统的该分区。 在已改变划分之后,基于新划分方案可以产生新执行计划。新执行计划传递到 排程器2706,其基于新执行计划重启开始仿真。 例如,分割器2704可以划分特殊系统,直到该系统的所有分区具有等于 或小于X的估计仿真成本。 在实际仿真期间,系统2700可以检测到所述分区之一的仿真的成本比X 大很多。关于此点,系统2700可以暂停仿真,并且进一步将特定分区分解成 多个较小的分区。然后,使用基于所述多个较小分区的执行计划,系统2700 可以重新开始仿真过程。 匆忙进一步分解确定为“过大”的分区,而不是重新开始整个仿真过程。 因此,在一个仿真迭代期间,可以仿真特定分区。在多个仿真迭代之间,该特 定分区可分成几个较小分区。因此,在后继仿真迭代期间,单独仿真每个较小 分区。 在一个实施方式中,在“最终”执行计划之前,由系统2700执行一个或 多个“特征化运行”。在特征化运行期间,在多个分区上执行测试仿真,由此 确定哪些分区需要进一步分解。 并行仿真的实例 一旦划分电路500,并且已创建预览器电路600,在电路500的预览器仿 真阶段,可使用预览器电路600来仿真电路500。 由于仿真预览器电路600涉及分区502的精密度较小的仿真,所以预览器 电路600的仿真可比电路500的仿真执行地快得多。 由仿真电路600产生的结果不如直接仿真电路500产生的结果精确。但是, 通过执行多次仿真迭代,能够产生精确的仿真结果。 仿真的波形迭代描述为: 1)k=1;初始波形ΔV1 k-1=0 2)通过仿真预览器电路600, 3)通过仿真分成的独立阻抗电路502H1,给定电压波形 ΔV 1 k = V 1 k - V ^ 1 k 4)如果 | | Δ V 1 k - 1 - Δ V 1 k | | > tol , 则k=k+1,返回操作2),否则结束。 在每个迭代中值k递增。在第一运算1)中,变量初始化。 第二运算2)表示预览器仿真阶段,在此期间使用预览器电路600来确定 值ΔV1 k-1对应用于前一迭代k-1的实际电压波形与近似 电压波形之差。将该值输入到电路600,运行仿真,并且使用预览器确定用于 当前波形的值和对于该迭代的电压波形的近似值。 第三运算3)构成所选分区仿真阶段,在此期间将用于当前波形的确定值 输入到电路502(所选分区)以确定用于该迭代的电压波形的值。 然后确定用于该迭代的实际和近似值之差ΔV1 k。在第四运算4)中,如果 波形ΔV1 k-1与ΔV1 k之差的规范(norm)大于预定容差,则迭代继续,否则过 程返回至运算2)。如果差值小于该容差,则波形收敛,并且确定电路602的仿 真值。下面将说明波形规范的计算和预览器中近似值的选择。 具有多个所选分区的仿真实例 在上述给定实例中,在电路500仿真期间,使用单个支路(电路502)作 为“所选分区”。在某些情况中,需要将几个近似引入到单个分区中。图7 示出分解成几个较小分区的一个大分区。如图7中所示,电路700是从初始划 分保留的大分区。电路700是强耦合,所以其分成几个支路702a-702x,其中 x是等于m近似分区的分区的任意数量。支路702a-702x均耦合到电路700的 剩余部分H0 704,其通常包括诸如电阻器的简单无源元件。图8示出具有m 个近似分区的用于电路700的预览器电路800。支路702a-702x分别由近似 至802a-802x代替。剩余电路H0 804与剩余部分704相同。 用于电路800收敛的波形迭代过程为: 1)初始化k=1。波形ΔVi 0=0用于i=1,...m 2)通过仿真预览器800。704-(802a...802x) 3)通过仿真每个划分的独立阻抗多端口电路 V i k = H i ( H i k ) , i=1,...m,给定波形 Δ V i k = V i k - V ^ i k . 该运算并行执行。 4)如果 | | ΔV i k - 1 - ΔV i k | | > tol , i=1,...m则k=k+1,返回运算2),否则结束。 该过程与上述有关图6说明的过程类似。但是,在这种情况下,有几个必 须执行仿真的不同分区。在每个迭代中值i递增。 使所选分区仿真阶段并行化 在所选分区仿真阶段,对每个所选分区进行仿真。根据一个实施方式,在 并行执行所选分区仿真阶段执行仿真。图9示出用于对几个不同分区执行仿真 的几个处理器。一旦在第二运算2)中从预览器可获得当前波形Ii k,通过在单 独处理器904a-904x上对每个原始分区902a-902x进行仿真,能够使运算3) 并行化。否则,该过程与上述有关图6所述的相同。 如上所述,连在第二算法2)之后能够使第三运算3)并行化。当合成近 似的计算成本小于每个单独电路分区的成本 V i k = H i ( I i k ) 时,能够实现第二运算 2)和第三运算3)的并行化。图10示出根据本发明一实施方式并行运行的几 个处理器。在一个实施方式中,选择几个分区,从而每个分区近似需要对仿真 的相同计算时间量。 图10示出在上述使仿真过程并行化的同时,几个处理器1002、1004和 1006沿时间线1008的动作。时间tsim是用于仿真的每个迭代的时间。在迭代 期间,仿真间隔分成几个时间段。图10示出均需要相等计算时间tsim/2的两个 时间段的实例。通常将预览器的计算分配给第一处理器1002。将各个分区分 配给第二和第三处理器1004和1006,并且仿真这些分区。在该实例中,第一 处理器1002运行合成近似(预览器),第二处理器1004运行第一分区902a, 并且第三处理器1006运行第二分区902b。例如,第一处理器1002在迭代1010a 的前一半期间运行合成近似1012。当完成近似1012,将其传递至处理器1004 和1006,其中在迭代的后一半,每个处理器1004和1006仿真各个分区。换 句话说,在t0至t0+tsim/2之间的时段期间,第一处理器1002计算预览器1012, 处理器1004和1006将使用该预览器1012来分别运行其仿真1014和1016。 在t0+tsim/2至t0+tsim之间的时段中,第一处理器1002将计算第一迭代的后一半 的预览器仿真。在此期间,处理器1004和1006使用处理器1002在至t0+tsim/2 期间产生的预览器来仿真迭代的前一半。在t0+tsim和t0+1.5*tsim时间中,处理 器1004和1006使用处理器1002在timet0+tsim/2和t0+tsim期间产生的预览器方 案122来执行仿真1018和1020。该过程一直继续到仿真收敛为止。 更详细地,在仿真间隔1010的前一半结束时,用于迭代1010a的前一半 间隔的端口电流波形Ii 1,i=1,2对于处理器1002是可用的。这些电流波形传递 给分配运行单独分区的处理器1004和1006。单独分区开始其前一半间隔的仿 真,同时处理器1002运行仿真间隔的后一半仿真。当处理器1004和1006在 t0+tsim完成间隔的前一半仿真时,他们将来自用于前一半间隔的分区的电压 波形Vi 1,i=1,2提供给在下一迭代期间使用的处理器1002上的合成近似。这允 许处理器1002在时间t0+tsim继续进行用于第二迭代的前一半间隔的仿真。流 水线评估能够有效地并行执行该方法。 图11和图12示出使用除了阻抗和电压之外的导纳和电流的本发明实施方 式。图11示出与预览器电路600类似的用于强耦合电路的预览器1100。电路 1100包括近似电路1102和电路1104的剩余部分。图12示出与电路800类似 的包括许多独立分区的电路1200。电路1200包括几个分区1202a-1202x,以 及电路1204的剩余部分。与上述阻抗和电压n端口类似,波形迭代如下进行: 1)初始化k=1,波形ΔIi 0=0,i=1,...m。 2)通过仿真预览器系统0-1’…m’,如上述图11 中所示。 3)通过仿真每个所划分的单独导纳多端口电路 I i k = H i ( V i k ) , i=1,...m,给定波形 Δ I i k = I i k - I ^ i k . 该运算可并行执行。 4)如果 | | Δ I i k - 1 - Δ I i k | | > tol , i=1,...m则k=k+1,返回至运算2),否则结束。 如这里所使用的,对于第一分区1202a,i=1,对于最后分区1202x,i=m。 如之前所述,波形ΔIi k测量电流的实际计算值与近似值之差。在第四运算4) 中,如果前一迭代与当前迭代的波形ΔIi k之差的规范小于容差tol,则迭代收敛, 并且完成对于该分区的仿真。在图8和图12中,任一n端口是混合多端口。 相应的输入和输出是电压和电流的混合(组合)。为用于电路的适当输入和输 出修改波形迭代。 仿真益处 该方法还有很多优点。由于考虑一般强耦合非线性多端口系统,所以一起 处理整体和局部反馈情况。以前的方法试图与整体反馈独立地处理在单个终端 处的加载中出现的局部反馈。这些现有方法采用MOS电路的特定单向结构。 在出现强局部双向耦合时,将导致收敛困难。现有方法在出现强整体耦合时也 出现慢收敛问题。 本方法应用于将非线性波形映射到在巴拿赫空间中的非线性波形的任何 仿真。相应的巴拿赫空间规范使用在迭代期间的收敛测试,并且为下面的近似 计算递增的运算器增益。因此,不使用多端口系统的特定结构以得到其益处。 除了从该方法得到益处,可以使用采用基础(underlying)区域结构的任何仿 真器来采用该结构。例如,在诸如SPICE的电路仿真器中,由仿真器自身采 用基础电路方程的稀少结构。在仿真各个部件中使用SPICE允许采用电路方 程的稀少结构。 可以使用各种方法仿真合成近似。例如,在MOS电路仿真器中,在事件 驱动仿真中,使用表格驱动分段近似模型来构造合成近似。还称作快时序仿真 器的这种仿真器以比SPICE快10-1000倍的速度提供近似波形。但是,近似波 形仅精确到5-10%。近似仿真的另一实例是使用降阶建模(MOR)。对于大 RLC网络,MOR以误差达10%的代价来提供量级更快的计算。 假设近似满足收敛的条件,可以使用任何区域特定仿真器和区域特定近 似。值得注意的是相当粗糙的近似导致快速收敛。 选择近似 下面描述在上述过程中使用的选择近似的过程。用于强耦合系统的预览器 包括具有下列属性的合成近似: 1)在与精确仿真每个原始部件n端口所需的时间可比的时间内,预览器 在其自己的仿真器中进行仿真。上面的解释关于图10中的流水线过程。 2)剩余电路H0是普通的,通常包括诸如电阻器或节点的无源器件。 3)每个近似部件n端口满足关于Hi的误差测试。该测试是用于 的递增运算器增益的测试。 近似候选包括利用简化非线性延迟模型的仿真、开关级仿真、宏模型和降 阶模型。这些近似可涉及用于再利用部件的预先特征化。此外,需要均衡近似 质量与其运行时间速度。在预先特征化时,使用下列计算Hi和之间的误差: 使u1,u2,…,ul作为在配件(fitting)中使用的特殊输入向量。 使y1,y2,…,yl作为来自运行的Hi的输出向量,具有输入:yj=Hi(uj) 使作为来自运行的的输出向量,具有输入: y ^ j = H ^ i ( u j ) 这里,uj表示输入波形值,yj=Hj(uj)表示分区Hi的实际波形输出,给定 输入uj,并且 y ^ j = H ^ i ( u j ) 表示给定uj的用于分区的近似输出。为了确定近似的 误差,递增运算器增益的估值如此计算: γ ^ i = max j , j | | ( y j - y ^ j ) - ( y j - y ^ j ) | | | | ( u j - u j ) | | 其中,输入或输出向量波形的规范是: | | y | | = ( 0 T | y ( t ) | 2 dt ) 1 / 2 在任意给定时间t,y(t)是电压或电流变量的向量。|y(t)|表示有序实际n 元组的线性空间中的规范。例如,如果y(t)由四个电压构成,则 y(t)=[V1(t),V2(t),V3(t),V4(t)],然后 |y(t)|=max[abs(V1(t)),abs(V2(t)),abs(V3(t)),abs(V4(t))],或者 |y(t)|=(V12(t)+V22(t)+V32(t)+V42(t))1/2。 在另一实施方式中,对于线性运算器, γ ^ i = max ω σ 2 { H i ( ω ) - H ^ i ( ω ) } , 即,H∞- 规范。诸如MATLAB(来自Mathworks)的标准软件也提供用于计算的工具。 如果部件是缓和非线性,则在计算H∞-norm中可以使用运算器的线性化版本。 在其他实施方式中,可以诸如Ln ∞-规范的其他功能空间规范。在那种情 况下,要计算一致的递增运算器增益根据本发明的一个实施方式,必须 足够小以至于实现良好近似。可以考虑潜在候选近似的数量,子系统Hi的 H ^ i j , j = 1,2 , . . n . 然后,该系统利用最小选择近似值。 剩余描述来说明这里说明的技术的几个实例。这些说明可理解为实例,并 且还应理解本发明还有几个其他具体实施和实施方式。 图13-图17示出根据本发明一实施方式的展示双向局部耦合的电路仿真。 图13示出展示双向局部耦合的电路。电路1300是强耦合电路,其包括非线性 元件G2 1302,可由两个并行二极管方程描述: i 2 = g 2 * v 2 + I 0 * ( e v 2 / Φ T - e ( V T - v 2 ) / Φ T ) . 电路1300将分成指定为H1的第 一分区1304和电路1306的剩余部分。电路1300还包括三个电容器C1 1308、 C2 1310和C3 1312、线性元件G1 1314和电源J 1316。 标准节点分析(使用克希霍夫电流定律)给出两个耦合微分方程: ( C 1 + C 2 ) * v · 1 - C 3 * v · 2 + G 1 * v 1 = J v1(0)=v1 ( C 3 + C 2 ) * v · 2 - C 3 * v · 1 + i 2 ( v 2 ) = 0 v2(0)=v2 使用高斯塞德尔迭代将该电路分成多个分区的在先方法产生下列方程: ( C 1 + C 2 ) * v · k 1 - C 3 * v · k - 1 2 + G 1 * v k 1 = J vk 1(0)=v1 ( C 3 + C 2 ) * v · k 2 - C 3 * v · k 1 + i 2 ( v k 2 ) = 0 vk 2(0)=v2 注意的是通过耦合电容器C3 1312分别使用作为源的单独解决每 个微分方程。表示来自其他电路的荷载效应的近似。 当耦合电容器C3 1310具有比其他电容器C1 1308和C2 1310更大的电容 时,收敛速度很慢。图14示出使用标准高斯塞德尔分解的慢收敛。曲线1400 的x轴1402描绘时间,y轴1404是电压。每条划线1406示出使用现有高斯 塞德尔分解的与电路1300的实际值相比仿真的每个累进迭代的误差。曲线 1400示出通过十个迭代慢收敛的仿真。划线1406a示出第一迭代的误差,并 且划线1406j示出用于第十迭代的误差。尽管仿真朝向校正方案慢收敛,但是 在第十迭代之后,误差在某些时间点上超过0.6V。清楚的是这些低收敛速度 在实际中是不可接受的。使用现有方法的启发式划分算法不能划分电路1300。 但是,在较大电路中使用该方法导致并行计算的不充分粒度。 图15示出用于非线性元件G2 1302的近似。曲线1500示出x轴1502为 电压、y轴1504为电流的曲线。在曲线1500中实线表示仿真曲线1506。曲线 1508现实近似值。使用这里所述的技术,例如使用近似分段线性查表法获得 该近似值。 图16示出包括非线性元件G2的分段线性近似1508的电路1300。预览 器电路1600是包括近似1602以代替初始非线性元件1302的电路1300。分区 1604代替分区1304,如图5和图6中所述。 图17是示出使用预览器电路1600的加速收敛的曲线图。与曲线1500一 样,曲线1700的x轴1702为时间,y轴1704为电压。曲线中的电压是由电 路1300产生的实际输出中的误差。应注意,y轴1704上的尺度比y轴1504 上的尺度小很多,由此表示,即使对于第一迭代1706a,该误差也比第十迭代 1506j的误差小很多。通过第三迭代1706c,仅有非常小的误差,并且仿真非 常接近电路1300的即使计算值。结果是,使用本发明这里所述的实施方式, 迭代收敛比无需近似的快得多。 图18-图22示出根据本发明一个实施方式的单向整体和局部双向耦合及 其仿真。图18示出双二次滤波电路1800。电路1800包括单个运算放大器级 1802、1804和1806。理想过滤器从输入电压到输出电压的转换功能是具有振 荡响应的第二级。实际响应具有诸如在运算放大器和嵌位中的转换速率的非线 性效果。此外,在线性化转换功能中呈现更高级的寄生极点和零点。考虑到每 个运算放大器级1802、1804和1806作为支路,显然,在一经过功能块的单向 输入-输出信号流时,强整体耦合创建振荡响应。除整体耦合之外,还有在每 个连接节点处的局部双向荷载效应。整体耦合是快速作用和强大的。 图19示出使用高斯塞德尔分解划分的电路1800。分解1900示出分成几 个有序分区1902、1904和1906的电路1800。使用公知的高斯塞德尔分解划 分这些分区。 图20是示出使用高斯塞德尔分解的电路1800的仿真收敛的曲线图。曲 线2000的x轴2002是时间,y轴2004是电压。曲线2006示出电路l800的 实际响应。曲线2008示出使用高斯塞德尔分解1900的五次迭代之后的输出。 曲线2010示出使用高斯塞德尔分解1900的十次迭代之后的输出。如图所示, 波形收敛得非常慢。 根据本发明的一实施方式,可以图7、图8和图9中电路700相同的方式 分解电路1800。图21示出根据本发明一实施方式的从电路1800分解出的预 览器。每个支路级H1 1802、H2 1804、和H3 1806可视为非线性2端口阻抗运 算器。剩余电路H0 2108仅包括互连导线的节点。通过用等效理想电压控制的 电压源代替完全非线性运算放大器来完成对每个级2102、2104、和2106的近 似。 图22是示出根据本发明一实施方式分解的电路1800的收敛的曲线图。 曲线2200的x轴2202表示时间,y轴2204表示输出电压。曲线2206是全仿 真。曲线2208是第一迭代之后的输出,并且曲线2210是第二迭代之后的输出。 如图中所示,当使用图7、图8和图9中所示的分解时,仿真快速收敛。 图23-图26示出根据本发明实施方式的双向局部和整体耦合的非线性网 格实例。图23A示出非线性二维网格2300。图23B和图23C示出网格2300 的分解图。网格2300可以是集成电路(IC)中的电网。网格2300包括四个电 阻器2302,在每个内节点2304与四个相邻节点连接。在每个节点2304,电容 器2306和二极管2308接地。二极管2308是反向偏置的。网格角落通过四个 连接电阻器2302与供应节点连接。如图23A中所示,网格2300包括3×2片 构成的栅格。每片2312包括中心节点2304,高阻抗电源2314与该中心节点 连接。 如图23C中所示,多个片2312通过连接电阻器2316连接。这些连接电 阻器2316可以组成剩余电路H0,并且每片2312可以包括分区Hi,如图7、 图8和图9中所示。根据本发明实施方式可以这种方式分解网格2300。 使用Hi的线性化阻抗的降阶模型制造用于网格2300的近似。由此得到 的预览器是有效仿真的低阶线性系统。 图24示出用于来自电路2300的全参考仿真和全阶线性近似的片2312的 中心节点电压的曲线图2400。x轴2402显示时间,y轴2404显示输出的电压。 曲线2406示出全参考仿真,曲线2408示出全阶线性近似。在二极管2308的 非线性中出现两个曲线2406和2408之差。 图25示出在近似低阶预览器响应与用于片2312的中心节点电压的全参 考系统之间的差值。x轴2502显示时间,并且y轴2504显示电压。曲线2506 示出近似与全参考之间的差值相当大。 图26是示出使用基于预览器近似的实施方式在三次迭代之后仿真的电压 输出误差的曲线图。曲线2600包括显示时间的x轴2602和显示电压的y轴 2604。曲线2606示出仅在三次迭代之后,误差将存在于可接受容限。相反, 使用标准高斯塞德尔分解,收敛接受五十次迭代。 分解待仿真系统 如下面将更详细所述,在所选分区仿真阶段,单独仿真由分割器2704产 生的每个分区。根据一个实施方式,并行执行所选分区的仿真。因此,通过分 割器2704产生的最昂贵仿真分区来规定所选分区仿真阶段的持续时间。 分区越小/较不复杂,仿真分区越快。但是,由于待仿真系统的分区变得 较小,因此分区的数量增多。由于分区数量增多,所以与协调和执行仿真的并 行操作相关的开销也增大。 为了判断分区是否过大,分割器2704包括确定分区“尺寸”大小的机制。 用于确定分区尺寸的机制可以基于包括待仿真系统的特性各种向量而在各实 施中变化。 在电路环境中,例如,将分割器2704至少基于下述配置为用于确定基于 电路的分区尺寸:在分区描述中的节点数量、在分区中所表示的元件数量、用 于仿真分区的仿真器能力、每个处理器可用的易失存储器数量等。 可以基于各种因素,包括仿真预览器电路的时间估量以及待仿真系统的分 解的期望度,选择用于判断是否进一步分割分区的阈值尺寸。反过来,基于包 括执行仿真可用的计算机资源数量、启动仿真器的成本、以及将系统划分成太 多分区导致的通信开销量的各种因素,可以改变分解的期望度。 根据一个实施方式,分割器2704包括基于可用计算资源、系统分成的分 区的数量和尺寸、正在使用的仿真器等,用于评估仿真待仿真系统的总成本的 机制。只要通过子分割分区减小总仿真成本,分割器2704就继续子分割分区。 如果通过进一步子分割分区不能减小总仿真成本,则不再执行分解。 多阶段分解 根据本发明一实施方式,分割器2704配置为在多个阶段划分系统。通常, 通过以允许相对较快收敛(即,相对较少的仿真迭代)、有效使用可用计算资 源、以及仿真的减小总计算成本的方式分解系统,分割器2704划分待仿真系 统。 为了描述各个阶段,将给出待仿真系统是电路的实例。但是,由分割器 2704采用的划分技术可应用于任何类型的待仿真系统。下面将更详细地说明 划分的各个阶段。 Y/Z分解 根据一个实施方式,由分割器2704执行的划分的第一阶段是Y/Z分解。 在Y/Z分解阶段期间,分割器2704在待仿真系统中查找满足一定可分性标准 的部件。根据一个实施方式,可分性标准包括(1)由一个或多个导线连接所 述部件,和(2)如果单独仿真,则在一个或多个导线上的波形将收敛。 图28A是由一条或多条导线彼此连接在的两个部件(Y和Z)的方框图。 在Y/Z分解阶段,如果通过反复执行下列步骤将出现收敛,所述步骤为:(1) 在Y仿真期间,使用Z的现有仿真产生的电压作为那些导线上的输入电压; 以及(2)在Z仿真期间,使用Y的现有仿真产生的电流作为那些导线上的输 入电流,则Y和Z被分成不同分区。在图28B中,通过从Z中分离Y来划分 包括部件Y和Z的系统。 通过识别在接口节点呈现对地低阻抗的支路,开始Y/Z分解。例如,在 微芯卡电路中的电网/地网表示在使其连接到有源元件的端口处的对地低阻 抗。由电网/地网提供的有源元件通常在使其连接到电网/地网的端口提供对地 低导纳。假定其他侧提供与由Z支路提供的对地阻抗相比对地相当高的阻抗 (或低导纳Y),从接地节点开始,通过低电阻路径到达的所有节点被识别为 Z支路。 如图29中所示,在Y/Z分解阶段之后,可将初始系统分成许多分区。在 图29中,Y/Z划分阶段使得系统分成三个独特“Y”分区,和三个独特“Z” 分区。但是,该结果仅是示例性的。由Y/Z分解阶段得到的特点组分区和这些 分区的类型将基于待划分系统的特性和特征而改变。 RLCM分解 根据本发明的一个实施方式,两个阶段划分操作的第二阶段这里指RLCM 分解。RLCM代表电阻(R)、电感器(L)、电容器(C)和MOS晶体管(M)。 在RLCM分解期间,对在Y/Z分解阶段产生的分区执行测试,以判断是否进 一步划分那些分区。 测试分区中的每个电路元件,由此基于由电路元件提供的耦合强度来判断 用于将分区进一步分解成多个分区的候选。在所有候选元件中,测试限制在电 阻、电感器、电容器和MOS晶体管。此外,在s=0(导电测试)并且s=无穷 大(电容测试)的连接节点,使用诺顿等效计算元件的耦合强度(参见J.White 和A.I.Sangiovanni-Vincentelli,…ICAS,1985和用于仿真VLIS电路的松弛技术, 1987)。分解的该阶段采用电路的固有特性。由于来自分区上的强单向流的整 体反馈,回路可以形成。当遇到回路中的长循环延迟时,时间窗口(参见J.White 和A.I.Sangiovanni,ICAS1985,T.A.Jhonson和A.E.Ruehli,DAC 1992)提供 用于有效分区的机制。对于遇到回路中的短时延迟,回路中的多个分区返回合 并,在合并之后可能形成大分区。 在电路环境中,在自动Y/Z划分期间产生的“Z”分区通常对应于电网或 地网。相反,“Y”分区通常是有源非地网结构。根据一个实施方式,分割器 2704判断Z分区是否是电网,并且由于RLCM测试未必产生对电网的更多分 区,所以不测试在RLCM阶段识别的任何电网。 基于预览器的划分 在一个实施方式中,在Y/Z分解和RLCM分解之后,认为继续达到一定 阈值尺寸的任何分区过大,并且对那些分区执行基于预览器分解的下一个阶 段。 通常,基于预览器的划分涉及对每个大分区应用在图5至图12中描述的 方法。对于每个这样的分区,具有如图7、图12和图21中的预览器分区以及 图9中相应的子分区。 执行计划的生成 一旦识别最终分区和子分区,仿真任务便是创建网表文件。在一个实施方 式中,网表文件包括来自其他仿真任务的信号,作为激励文件。通过收集已运 行仿真任务的输出、计算激励以及写出该激励来创建激励文件。在一个实施方 式中,写出激励作为分段线性信号。执行计划包括待运行仿真任务的说明、以 及一个仿真任务对其他仿真任务的输出的依赖。在一个实施方式中,执行计划 包括直接非循环图,用以表示仿真任务中的数据依赖。 仿真的调度和执行 在一个实施方式中,通过执行下列步骤来执行仿真的运行时间调度:1) 在任何给定时间基于需要运行的输入可用性来识别准备运行的所有仿真任务, (2)将执行计划中准备运行的仿真任务添加到执行队列中,3)此时识别具有 仿真权限而可运行的所有处理器,以及4)将执行队列中的下一仿真任务分派 到步骤3)中的任何可用处理器。包括步骤1)至4)的运行时间调度循环重 复,直到完成执行计划中的所有仿真任务。 许可了解分解和仿真 在一些安装中,对用于执行仿真的仿真器的数量加以限制。例如,可由许 可软件执行仿真器,其中用于仿真器软件的许可对特殊方可以使用的仿真器数 量加以限制。因此,根据一个实施方式,这种限制是待仿真系统的分解期间分 割器2704考虑的因素。例如,响应表示仅十个许可仿真器可用的输入,分割 器2704可以限制分区的数量为十。 根据一个实施方式,仿真系统2700配置为在执行仿真之前查找仿真器许 可指示。例如,系统2700可配置为仅使用发现许可指示的仿真器进行仿真。 如上所述,系统2700还可以将所发现的许可信息用作判断分解待仿真系统的 精细程度的因素之一。 层级了解分解和仿真 在许多系统中,系统的元件具有彼此相对的层级关系。根据一个实施方式, 分割器2704在确定是否分解系统时,考虑系统元件之间的层级关系。例如, 当评估进一步分解现存分区的成本时,分割器2704考虑该分区中各元件之间 的层级关系。以将相关元件分成较多独立分区的方式细分分区比以将相关元件 分成较少独立分区的方式细分分区的成本更高。 补偿错误仿真结果 但是仿真器不总是产生精确结果。例如,在移动环境下,当生成用于一连 串点的数据时,一些仿真器产生用于该串中最后一点的错误信息。根据一个实 施方式,当排程器2706调用仿真器时,排程器2706使仿真器仿真超过实际期 望的一连串点的一串连点。当排程器2706接受用于所请求串点的结果时,排 程器2706放弃与所请求串中最后一点相关联的多余的、可能错误的仿真结果。 排程器先行 根据一个实施方式,排程器2706设计为具有先行特征。例如,当调度执 行计划中的特定等级时,排程器2706分析该执行计划以判断当前待仿真任务 之间的关系,以及这些任务与未来需调度的任务之间的关系。通过先行与未来 任务相关的执行计划的一部分,排程器2706可以对如何调度当前待调度任务 做出明智的决定。例如,一旦根据特定当前待调度任务检测许多未来任务,排 程器2706可以调度在其他当前待调度任务之前的特定任务。 仿真进展报告 根据一个实施方式,排程器2706配置为具有报告仿真操作的进展的机制。 排程器2706例如可以配置为以某种方式公布整个待仿真系统的仿真进展的指 示,和/或每个所选分区的仿真进展。公布进展指示的方式可以随不同的实施 而改变。例如,排程器2706可以暴露可被调用以检索进展指示的API。或者, 排程器2706可以生成进度条的可视显示。在另一实施方式中,通过改变显示 元件的颜色来可视呈现进度。 中间结果报告 根据一个实施方式,排程器2706配置为具有用于在完成整个仿真操作之 前报告初步仿真结果的机制。例如,排程器2706可以暴露被调用以检索由最 近仿真迭代产生的仿真结果的API。那些结果可以整体或者基于各个分区提供 给系统。 根据一个实施方式,排程器2706产生(1)识别由所选分区表示的系统一 部分的信息,以及(2)通过仿真所选分区产生的最近仿真结果。尽管整个系 统的仿真正在进行,但是对于特定分区的仿真结果可能是“最终的”,这是因 为已利用仿真预览器电路的结果收敛仿真该分区的结果。 待仿真系统 这里描述的技术可以使用于任何系统,只要预览器阶段仿真的结果和所选 分区阶段仿真将收敛。因此,尽管这里给出的一些实例是在电路仿真环境中, 但是这些相同的技术可以用于使许多环境中的仿真并行化,包括但不限于:飞 机/机身仿真、油田仿真、提炼/化学仿真、商业/股市仿真、医学成像、计算机 动画、气象学、生物工艺仿真、机械仿真、建筑仿真、微机械仿真(MEMS)、 光系统仿真、视频编码和/或加密、以及配电仿真。 多节点系统 在上述给出的实例中,待仿真系统初步涉及一种类型的技术。例如,待仿 真系统可以是模拟电路,或者RF电路。但是,这里所描述的技术可以相似地 应用于仿真包括不同类型子系统的系统。例如,这些技术可用于仿真包括使用 不同技术的两个或者更多子系统的系统,因此需要不同的仿真器。例如,这些 技术可以用于仿真包括与模拟电路连接的RF电路的系统,该模拟电路还与数 字电路连接,等。这种系统这里称为“多模式”系统。 当用于仿真多模式系统时,仿真的第一步可涉及基于必须使用以仿真系统 的不同子系统的仿真器来分割系统。当子系统是强耦合时,在该等级使用基于 浏览器的划分。还可进一步细分以这种方式创建的分区以实现分解的期望度。 可以使用仿真波形来进行分区仿真之间的数据交换。因此,允许利用完全不同 的仿真机制使用仿真器。专用于特定类别电路的仿真器可以提供比一般仿真明 显更快的速度。 多核CPU 多核CPU具有在单个芯片上的多个处理单元。与在同一芯片上的多核之 间的通信相关的费用明显少于在不同芯片上的多个处理器之间的通信相关的 费用。根据一实施方式,该差别是在待仿真系统的分解和仿真调度期间考虑的 因素之一。 例如,响应检测到多核CPU,可分解电路以创建各组分区,其需要在该 组中的分区之间相对更多的通信。在仿真期间,将该组中的分区分配给同一多 核CPU。在一个实施方式中,划分中使用的成本度量包括在仿真分区之间的 相关通信负荷。 集成仿真器 在一个实施方式中,在每次需要执行新仿真操作时,由排程器2706调用 仿真器2708。但是,频繁启动仿真器可导致开销过大,特别是仿真较小分区。 开销包括读取和分析定义待仿真分区的信息。 根据一个实施方式,仿真器2708集成在系统2700中,并且设计成保留分 配在仿真操作之间。因此,在分区的第一仿真迭代期间,仿真器可以读取和分 析定义分区的网表。在第一迭代之后,保留有关网表的分析后信息。因此,当 仿真器执行同一分区的后继仿真迭代时,不需要分析该网表。 在一个实施方式中,由仿真器计算所分析的网表中的预览器近似值。集成 仿真器可以存储来自第一运行的计算后的近似值,并在预览器的后继仿真迭代 中使用该近似值。 创建并传播辅助信息 仿真器的输入需要因不同的仿真而改变。一些仿真器在提供上述信息并除 去待仿真系统的定义时能够更有效地运行。这些信息这里称为“辅助”信息。 辅助信息的一个实例是有关电路中的元件之间层级的信息。一些电路仿真 器可以使用这种层级信息以更有效地仿真电路。根据一个实施方式,这种层级 信息作为输入提供给系统2700。当由系统2700分解待仿真系统时,识别与每 个分区相关联的层级信息,并且将该信息提供给负责仿真分区的仿真器。 根据另一个实施方式,基于待仿真系统的定义,由系统2700得出层级信 息。由此,尽管未向系统2700提供层级信息,层级信息也可提供给仿真器以 提高仿真效率。 在一个实施方式中,为了便于待仿真系统的分解,系统2700使描述待仿 真系统的层级“变平”。但是,系统2700保留有关层级的信息,从而该信息 可提供给使用该信息的仿真器。 层级信息仅是仿真器可以使用以更有效执行仿真的辅助信息的一个实例。 根据一个实施方式,系统2700将应用于每个分区的辅助信息的一部分提供给 分配有执行该分区仿真任务的仿真器。 其他环境的并行化 这里说明的并行化技术已在仿真操作环境中进行描述。但是,这些技术可 以类似方式应用在其他环境。例如,这里描述的解构/并行化技术可应用于微 型芯片设计操作中。 单个CPU平台 图2示出实施本发明一实施方式的计算机系统。计算机系统200可以是 图3中将描述的较大集群的一部分。计算机系统200包括总线22,其用作贯 穿计算机系统200中用于信息的分配通道。处理器204与总线22连接。处理 器204可以是任何合适的处理器,包括但不限于Intel和Motorola制造的处理 器。处理器204还可包括多处理器。内存206还与总线202连接。内存206 可包括随机存取存储器(RAM)、只读存储器(ROM)、闪存等。基本输入/ 输出单元208接受来自诸如键盘、鼠标、等几个来源的输入,并且向诸如显示 器、扬声器等的输出设备输出。存储器210可以包括任何类型的永久性或暂时 存储器,包括诸如硬盘驱动器的磁性或光存储器或者光盘只读存储器 (CD-ROM)。操作系统(OS)212的副本可存储在存储器210中。OS 212包 括运行计算机系统200必须的软件,并且可以是诸如Linux等Unix衍生物, 例如微软Windows或Macintosh OS。网络适配器214使计算机系统200与其 他系统成串连接,并且通过连接216与诸如互联网的其他网络连接。应理解, 计算机系统200仅是可用于执行本发明的计算机系统的一个实例,并且可以使 用任何其他适当的配置。 集群平台环境 图3示出根据本发明一实施方式的计算机系统集群300。利用中央开关或 路由器302,几个计算机系统200使用对等配置联网在一起。或者,在联网系 统300中的计算机系统200之一是中央服务器。使用该实施,几个廉价计算机 系统200可联网到集群300以提供能够解决并行化问题的强大系统。 应理解,本发明的实施方式不限于电路仿真。例如,可以使用这里说明的 系统和技术来执行几个其他类型的仿真,例如化学仿真、生物仿真、汽车仿真 等。这些技术可适于特定应用。 已参考特定实例性实施方式说明各种技术。但是,本领域技术人员将明白: 不脱离本发明的更宽精神和范围内,可对这些实施方式进行各种改变。因此, 说明书和附图是实例性的,并非有限制意义。

相关技术
桑尼尔·C·仙发明人的其他相关专利技术