CN112513861B - 使用并行处理进行层次电路模拟的方法和系统 - Google Patents
使用并行处理进行层次电路模拟的方法和系统 Download PDFInfo
- Publication number
- CN112513861B CN112513861B CN201980051374.7A CN201980051374A CN112513861B CN 112513861 B CN112513861 B CN 112513861B CN 201980051374 A CN201980051374 A CN 201980051374A CN 112513861 B CN112513861 B CN 112513861B
- Authority
- CN
- China
- Prior art keywords
- sci
- sub
- level
- circuit
- processor
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000012545 processing Methods 0.000 title abstract description 11
- 238000004088 simulation Methods 0.000 title description 18
- 239000013598 vector Substances 0.000 claims abstract description 129
- 239000011159 matrix material Substances 0.000 claims abstract description 124
- 230000004044 response Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 239000003990 capacitor Substances 0.000 description 3
- 230000005669 field effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004377 microelectronic Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- PVADDRMAFCOOPC-UHFFFAOYSA-N oxogermanium Chemical compound [Ge]=O PVADDRMAFCOOPC-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/137—Hierarchical processing, e.g. outlines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/02—CAD in a network environment, e.g. collaborative CAD or distributed simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种用于模拟层次电路的方法,包括在一系列迭代轮次的每个轮次中的自下而上的处理和自上而下的处理。自下而上处理从层次电路的底部层级开始,并获得层次电路中每个子电路实例(SCI)的子矩阵和子向量。对于每个SCI,在获得每个SCI的第一、第二子矩阵和第一、第二子向量后,将第二子矩阵和第二子向量上传到层次结构中的上一层级,并将其用于计算上一层级中的父SCI的电路方程。在自上而下的处理中,从顶层电路开始,确定层次电路中每一层级的信号值。父SCI的某些信号值被向下传递给每个子SCI,并与子SCI的第一子矩阵和第一子向量一起用于确定子SCI的内部信号值。
Description
技术领域
本文中描述的各种实施例大体涉及超大规模集成电路的计算机辅助设计,更具体地说,涉及使用并行处理进行分层电路模拟的方法和系统。
背景技术
集成电路的密度和复杂度越来越高,对计算机系统进行电路模拟的速度和容量提出了越来越高的要求,以便进行计算机辅助电路设计。传统的电路模拟器(如SPICE(Simulation Program with Integrated Circuit Emphasis)或SPICE 2)已被采用作为计算机辅助设计工具,用于分析电路的电信号传播特性。虽然SPICE或SPICE 2可以用来模拟微电子电路、包括逻辑器件和互连路径,但随着微电子电路的尺寸和复杂性不断增加,使用SPICE或SPICE 2进行完整的模拟已经变得非常耗时,而且可能会超过用于运行模拟的计算机系统的存储和处理能力。
发明内容
在一些实施例中,使用一个或多个计算机系统执行模拟层次电路的方法。该一个或多个计算机系统接收包括层次结构中的顶层电路和多个子电路实例(SCI)的层次电路网表,或者接收扁平电路网表并将扁平电路分割成层次电路网表。该层次结构具有在所述顶层电路下方的第一层级和在所述第一层级下方的至少一个第二层级,使得所述多个子电路实例(SCI)中的每个SCI是更高层级的另一个SCI的子级或所述顶层电路的子级。在一些实施例中,层次结构的每个层级包括至少一个SCI,多个SCI中的每个SCI具有外部端口,并且多个SCI中的至少一个还包括内部网。
在某些实施例中,该方法可以通过一系列迭代轮次来执行。每一迭代轮次包括一个自下而上的过程,以生成每个SCI和顶层电路的电路方程,随后是一个自上而下的过程,以求解顶层电路和层次结构中的SCI的电路方程。在每一迭代伦次中,自下而上的处理从层次结构的最底层级开始,逐级向上移动。对于层次结构中的每一个层级和层级中的每一个SCI,自下而上的处理获得SCI的第一和第二子矩阵以及第一和第二子向量。第一和第二子向量分别对应于第一子矩阵和第二子矩阵中的各个子向量。然后将第一子矩阵和第一子向量存储在一个或多个存储器中。第二子矩阵和第二子向量被向上传递到层次结构中的上一级,并并入到父SCI的电路方程中。
在某些实施例中,可以使用多个计算机系统或一个或多个计算机系统中的多个处理器来生成电路方程并且并行提取相同或不同层次结构层级中不同的不同SCI的子矩阵和子向量。在某些实施例中,对由第一计算机系统中的第一处理器提取的子SCI的第二子矩阵和第二子向量的访问被传递或提供给第一或第二计算机系统中的第二处理器,该第二处理器用于生成父SCI的电路方程。
在同一迭代轮次期间中,在自上而下的处理中,一个或多个计算机系统进一步确定顶层电路中的信号值,该信号值包括紧靠顶层电路下方的第一层SCI的外部端口的信号值。然后,从层次结构的第一层级开始,一个或多个计算机系统继续确定层次结构的每一层级的每个SCI的外部信号值和内部信号值。每个SCI的外部信号值从它的父SCI或顶层电路传递下来,并与SCI的第一子矩阵和第一子向量一起,用来计算SCI的内部信号值。
因此,在自下而上的处理中,较低层级计算的中间结果被并入到高层计算中,直到生成顶层电路的电路方程。在自上而下的处理中,来自较高层级计算的信号值被用于较低层级的计算,直到所有叶子SCI的信号值被确定。与各个SCI相关的计算可以被分配在一台或多台计算机的多个处理器之间。当SCI的信号在前几轮连续迭代之间缓慢变化或保持不变时,可以简化/跳过任何SCI的计算。根据一些实施例的方法能够使用多个处理器/计算机在相同的SPICE精度下分层地模拟非常大的电路。该方法还具有在保持SPICE精度的同时,像FAST-SPICE一样加速的能力。
附图说明
在所附附图的各个图中,以举例而非限制的方式对本申请的实施例进行了说明,其中相似的附图标记指示相似的元件,其中:
图1A是计算机系统的框图,该计算机系统可被配置为单独地或与一个或多个类似配置的其他计算机系统一起执行根据一些实施例的模拟层次电路的方法。
图1B是示出多个计算机系统的框图,该多个系统可用于共同执行根据一些实施例的模拟电路的方法;
图2A示出了根据一些实施例的包括基本器件和子电路实例(SCI)的电路200;
图2B示出了根据一些实施例的电路的网表的例子;
图2C示出了根据一些实施例的输入信号随时间变化的波形的例子;
图2D示出了根据一些实施例的模拟输出信号随时间变化的例子;
图3A至3D是说明根据一些实施例的模拟层次电路的方法300的流程图;
图4示出了根据一些实施例的包括顶层电路、基本器件和多个子电路实例的层次网表;
图5A示出了扁平化电路作为例子;
图5B示出了分层电路作为例子。
图6A至6O示出了根据一些实施例的、用于获得层次网表中每个SCI的子矩阵和子向量以及构造顶层电路的电路方程的处理。
图7A示出了根据一些实施例的自下而上的处理。
图7B示出了根据一些实施例的自上而下的处理;以及
图8A和8B示出了根据一些实施例的使用并行处理的层次电路模拟。
具体实施方式
根据一些实施例,用于模拟电路的方法可以由一个或多个计算机系统中的一个或多个处理器执行,该一个或多个计算机系统中的每个计算机系统包括至少一个处理器。改一个或多个计算机系统包括一个或多个存储器设备或可访问一个或多个存储器设备。图1A是计算机系统100的框图,该计算机系统100可被配置为单独地或与一个或多个类似配置的其他计算机系统一起执行根据一些实施例的模拟电路的方法。如图1A所示,计算机系统100包括一个或多个耦接到总线108的处理器102、一个或多个耦接到总线108的可选图形处理单元(GPU)104、可由处理器102和GPU 104访问的存储器106、以及耦接到总线108的输入设备112、输出设备114和存储设备116。输入设备112可以包括例如键盘鼠标和扫描仪等。输出设备114可以包括例如显示器和打印机等。存储设备116可以包括例如固态盘、硬盘、U盘、DVD、CD等。
图1B是示出包括多个计算机系统的计算机网络150的框图,该多个计算机系统可用于共同执行根据一些实施例的模拟电路的方法。在一些实施例中,多个计算机系统包括主计算机系统152和一个或多个其他计算机系统(例如,计算机系统162、164、166和/或168),该主计算机系统152和一个或多个其他计算机系统彼此直接耦接或通过网络154耦接。网络154可以是局域网(LAN)或广域网(WAN)。在一些实施例中,计算机系统100可以用作计算机系统152、162、164、166和168中的每一个。主计算机152中的处理器被配置为接收表示需要模拟的电路的电路网表,启动用于模拟电路的方法,并管理计算机系统152、162、164、166和/或168中的其他处理器和/或GPU以计算输出结果。计算机系统152、162、164、166和/或168的(一个或多个)存储器106被配置为存储电路网表、中间结果和最终结果。在一些实施例中,网络154被配置为在计算机系统152、162、164、166和/或168之间传递中间结果。
在一些实施例中,主计算机系统152中的处理器被配置为从存储设备116检索电路网表(或网表),该网表是要模拟的电路的文本表示。处理器也可以通过网络154从另一个计算机系统或存储设备接收网表,或者作为用户输入通过输入设备112接收。在一些实施例中,电路包括互连的电路元件。现代集成电路(例如,极大规模集成电路或VLSI)的设计在很大程度上依赖于其层次结构,其中,电路被视为构件或模块的集合,这些构件或模块以递归和层级的方式进一步被划分为子模块或子电路。在层次结构的某一层级的子电路的使用称为实例。在给定层级的子电路实例可以包括在较低层级的其他子电路实例。在这种情况下,给定层级的子电路实例被称为是较低层级的其他子电路实例的父实例,较低层级的其他子电路实例可以被称为是该给定层级的子电路实例的子实例。没有子电路的子电路实例被称为叶子电路实例。在层次结构的任何一个层级,还可以有基本电路元件或器件,如电阻器、电容器和晶体管,其不包括任何其他子电路的实例。一般来说,子电路实例(SCI)由它的外部端口而不是由它的内容(如电路元件)来表示。对于所有子电路实例都被递归地替换成各自的内容的电路,其层级深度将减少到1,并被称为扁平化或完全实例化。
例如,图2A示出了根据一些实施例的包括基本器件和子电路实例(SCI)的电路200。如图所示,电路200包括多个外部端口(例如,端口"in"202、端口"out"204、电源端子VDD 206和接地端子GND 208)。电路200还包括子电路实例(例如,SCI_1 230、SCI_2 232)、基本器件(例如,电阻器r1 222和电容器c1 224)和内部网(例如,子电路实例SCI_1 230和电阻器r1 222之间的内部网"n1"212)。电阻器r1 222在端口"in"202和内部网"n1"212之间耦接,电容c1 224在内部网"n1"212和接地端子GND 208之间耦接。SCI_1 230具有四个外部端口(例如,端口"n1"212、端口"out"204、端口VDD 206和端口GND208)。SCI_1 230具有两个子SCI(例如,SCI_11 226和SCI_12 228)和两个子SCI之间的一个内部网"n2"214。SCI_2232具有两个外部端口(例如,端口VDD206和端口GND 208)而没有内部网。SCI_11 226具有外部端口"n1"212、"n2"214、VDD 206和GND 208,而没有内部网。SCI_12 228具有外部端口"n2"214、输"out"204、VDD 206和GND 208,而没有内部网。SCI的外部端口和内部网也称为其节点。
图2B示出了根据一些实施例的电路200的网表201的例子。如图所示,网表201包括电路拓扑结构的文本定义和电路200中的元件值。在网表201中,电路中的每个元素由包括元件名称(例如,SCI_1)、连接端口或节点(例如,n1、GND、out、VDD、GND)和电参数值(如果有的话)的元件行指定。
一般地,在电路模拟过程中,电路层次结构通常会被扁平化到器件层级。例如,电路模拟程序(如SPICE)会读取待模拟电路的网表及其所有输入信号,并对涉及扁平化电路中所有电路组件或元件的数学方程进行求解,从而以输出信号的形式获得电路响应。由于电路是扁平化和完全实例化的,所以在模拟过程中必须存储大量(如数百万)互连器件中每个器件的器件连接情况和器件参数。如此巨大的内存使用量使得使用现有的电路模拟器对当今的VLSI电路进行全芯片电路模拟是不切实际的。此外,对涉及扁平化电路中所有电路组件或元件的数学方程组一起求解,使得很难甚至不可能使用多个处理器或计算机来加快计算速度。因此,传统的电路程序在速度和容量上都存在不足。
根据一些实施例的用于模拟电路的系统和方法通过利用电路的层次结构克服了传统电路模拟器的问题。图3A至3D是说明根据一些实施例的模拟电路(例如,电路200)的方法300的流程图。方法300可以由一个或多个计算机系统(例如,计算机系统100、152、162、164、166和/或168)中的一个或多个处理器执行。如图3A所示,方法300包括由一个或多个计算机系统的一个或多个处理器接收(310)要模拟的电路的网表,并确定(320)该网表是否描述了层次电路。有时,网表来自于传统的模拟器,并且是扁平化的。在这种情况下,方法300还包括将网表分割(330)为分层结构。
例如,如图4所示,电路200的层次网表400包括:形成至少三个层级的顶层电路402(其包括r1和c1等基本元件)以及多个子电路实例(SCI)(例如,与SCI_1 230对应的SCI_1412、与SCI_1 232对应的SCI_2 414、与SCI_1226对应的SCI_11 422和与SCI_1 228对应的SCI_12 424),该三个层级包括在顶层电路402下方的第一层级410和在第一层级410下方的第二层级420(恰好是底层)。第一层级410包括子电路实例SCI_1 412、SCI_2 414,第二层级420包括子电路实例SCI_11 422、SCI_12 424)。多个SCI中的每个子电路实例(SCI)是更高层级的另一个SCI的子级,或者是顶级电路的子级。多个SCI的每个子电路实例(SCI)是较低层级的一个或多个其他SCI的父级,或者它是没有子SCI的叶子SCI。因此,层次结构的每个级别包括至少一个SCI。在一些实施例中,多个SCI(例如,SCI_1 412)中的每一个都具有外部端口(例如,端口"n1"和输出端口204),并且多个SCI(例如,SCI_1 230)中的至少一个包括一个或多个内部网(例如,节点"n2")。在一些实施例中,子SCI的外部端口可以是父SCI的外部端口或内部网,而子SCI的任何内部网不是父SCI的内部网。在本例中,顶层电路402处于层次结构的顶端,并且具有子SCI_1 412和SCI_2 414。SCI_1 412具有子SCI_11 422和SCI_12 424。另外,SCI_2 414、SCI_11 422和SCI_12 424是层次结构中的叶子SCI,没有子SCI。顶层电路402和SCI 412、414、422和424中的每一个还可以包括诸如电阻器、电容器、电感器、互感器、传输线、二极管、双极结晶体管(BJT)、结场效应晶体管(JFET)、金属氧化物-半导体场效应晶体管(MOSFET)、金属-半导体场效应晶体管(MESFET)、薄膜晶体管(TFT)等基本器件。
在一些实施例中,如果接收到的电路是具有基本器件但没有SCI和层次结构的扁平电路网表,则方法300将包括对扁平电路网表进行分割(330)以形成层次网表。在一些实施例中,对扁平电路进行分割(330)可以包括将基本器件分到不同的组,通过将基本元件移动到相应的SCI中而向每个组添加一个或多个SCI。例如,如图5A所示,扁平化时的电路502被显示为包括基本器件1~8,所有器件都在一个层级中。在分组时,基本器件3~4作为SCI_11放置在组522,基本器件5~6作为SCI_12放置在组524,基本器件7~8作为SCI_2放置在组514。SCI_11和SCI_12作为SCI_1一起归入组512。因此,经过分割后,电路502具有类似于图4所示的层次结构,如图5B所示。
在一些实施例中,出于效率的目的,对扁平电路网表进行分割(330)以形成层次网表,还可以包括通过以下方式调整层次结构:(1)压缩部分分层结构(例如,将SCI_11和SCI_12吸收到SCI_1中),以及(2)通过将部分SCI分割为多个层级的多个SCI来扩展层次结构。
在一些实施例中,一个或多个计算机系统中的一个或多个处理器接收电路网表的各部分。一个或多个处理器中的每个处理器可以被分配来执行模拟过程的相应部分,并且可以读取整个电路网表或电路网表的相应部分,其为执行分配给该处理器的运算所需要的。一个或多个处理器可以并行地读取整个电路网表或电路网表的各部分,并且并行地执行模拟处理的各部分。
参考图3A,方法300还包括读取(332)用户输入。在一些实施例中,用户输入可以从一个或多个计算机系统的用户提供,作为顶层电路(例如,电路200)的外部端口(例如,端口"in")的输入信号的波形。图2C示出了根据一些实施例的输入信号随时间变化的波形的例子。方法300还包括确定(334)一系列迭代轮次(或步骤),每个迭代轮次(或步骤)对应于不同时间点的一组输入信号值中的输入信号值。如图3A所示,在一些实施例中,方法300然后进行一系列迭代轮次(340)的迭代来计算与一组输入信号值中的每一个相对应的另一个外部端口(例如,端口"out")处的响应输出信号值。图2D示出了输出信号随时间变化的例子,作为执行方法300的一个或多个计算机系统输出的模拟结果。
参照图3A,方法300包括在一系列迭代的每一迭代伦次中自下而上的处理(350),该处理从底部层级开始并在层次结构中逐级向上移动,以便对于层次结构中的每一个层级和该层级中的每一个SCI,获得(3502)SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量。如图3C所示,根据一些实施例,在层次结构中的每一个层级和对于各层级中的每一个SCI,获取(3502)SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量包括确定(3504)当前迭代轮次是否是初始迭代轮次(例如,系列迭代轮中的第一个或多个迭代轮次中的一个)。响应于确定当前迭代轮次是初始迭代轮次之后,处理350继续生成(3514)以例如矩阵方程(例如下面的方程(1))的形式()来表示各个SCI的电特性和行为的电路方程。
G·V=I (1)
其中G为SCI的左手矩阵,V为SCI的信号向量,I为各SCI的右手向量。
在其扩展形式中,对于一个有n个节点的SCI,方程(1)变成了以下形式。
其中,Gij代表对应于节点i和节点j的右手矩阵元素(i=1,...,n,j=1,...,n)。Ii代表对应于节点i的右手向量元素。Vi代表节点i的信号值。Gij和Ii可以使用本领域技术人员熟知的标准SPICE方法来确定。Vi是要使用方法300计算的信号值。在一些实施例中,矩阵方程被布置为使得节点1至k是外部端口(k=2,...,n),而节点k+1至n是内部网。换句话说,外部端口和内部网在矩阵方程(1)或(1a)中分别排列。通过分别排列外部端口和内部网,方程(1)可以用子矩阵Ge、Gie、Gei、Gi和子向量Ve、Vi、Ie、Ii表示,如下:
其中,
如图3B所示,获得SCI的(3502)第一子矩阵和第二子矩阵以及第一子向量和第二子向量还包括从左手矩阵中提取(3516)第一子矩阵和第二子矩阵以及从右手向量中提取第一子向量和第二子向量。第一子向量和第二子向量分别对应于第一子矩阵和第二子矩阵中。在一些实施例中,提取(3516)子矩阵和子向量包括对方程(2)执行高斯消除以变换左手矩阵和右手向量。结果,方程(2)变成方程(3),如下所示:
其中
其中,Gie’和Ge’分别是提取的SCI的第一子矩阵和第二子矩阵,Ii′和Ie′分别是提取的SCI的第一子向量和第二子向量。子矩阵Gei’现为[0]矩阵,子矩阵Gi’现在是一个单位矩阵。等式(3)也可以写成:
可以将其分解为两个子方程:
[Vi]=[Ii′]-[Gie′]×[Ve] (4a)
[Ge′]×[Ve]=[Ie′] (4b)
由子方程(4a)可知,内部信号值[Vi]可由外部端口信号值[Ve]、第一子矩阵[Gie']和第一子向量[Ii']计算得出。在子方程(4b)中,第二子矩阵Ge'为外部端口对应的代表性特征矩阵,第二子向量Ie'为外部端口对应的右手向量,向量Ve包括外部端口值,此时未知。
在一些实施例中,使用高斯消除将方程(2)转化为方程(3)的处理可以通过对子矩阵Gi进行LU分解或因式化(以适当的行和/或列排序或排列),将其转化为两个因式--下三角矩阵Li和上三角矩阵Ui,例如:
Gi=Li*Ui (5a)
或
因此,通过对方程(5b)进行高斯消减,[Ge][Gie]和[Gei]被消除,并且Li和Ui的列/行以及Gei’变成[0]。
在一些实施例中,如图3C所示,响应于确定当前迭代轮次不是初始迭代轮次之一,获取(3502)SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量将包括确定(3506)各SCI是否是激活的SCI。在一些实施例中,如果在之前的迭代轮次中,其任何信号值的变化超过了预设阈值,例如,(例如,Vei,i=1,...,n)在紧接当前迭代轮次之前的连续两轮迭代中确定的特定信号的值的差异大于该特定信号的预设阈值。响应于确定各SCI不是激活的SCI,获取(3502)SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量可以包括检索和在当前迭代轮次中重用(3510)在前一迭代轮次中获得的子矩阵和子向量,并且可以跳过当前迭代轮次的针对该SCI的步骤3514、3516和3518。响应于确定各SCI为激活的SCI,获取(3502)该SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量将包括确定各SCI是否为叶子SCI以及其是否具有预先计算的子矩阵和子向量模板。
响应于确定各SCI是叶子SCI并且具有预先计算的子矩阵和子向量模板,获得(3502)SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量将包括根据预先计算的子矩阵和子向量模板计算(3512)叶子SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量。响应于确定各个SCI不是叶子SCI或没有预先计算的子矩阵和子向量模板,生成代表各个SCI的电特性的矩阵方程(3514),并且如上所述,从左手矩阵中提取第一子矩阵和第二子矩阵(3516),从右手向量提取第一子向量和第二子向量(3516)。因此,对于网表中的每一个SCI,在初始迭代轮次期间且当SCI是激活的SCI并且不是具有预先计算的子矩阵和子向量模板的叶子SCI时,生成SCI的左手矩阵和右手向量。
在一些实施例中,将步骤3502中获得的第一子矩阵和第一子向量存储在一个或多个存储器装置(例如,存储器106)中,而将步骤3502中获得的第二子矩阵和第二子向量并入当前SCI的父SCI的矩阵方程中。因此,如图3B所示,处理350还包括将至少第一子矩阵和第一子向量保存(3518)到存储器(例如,存储器106)和/或存储装置(例如,存储装置116)中。在一些实施例中,将当前SCI的第二子矩阵和第二子向量传递(3520)到被分配计算上一层级的父SCI的矩阵方程的处理器。在一些实施例中,执行各SCI计算的各处理器在其也被指定执行其父SCI的计算的情况下,缓存该SCI的第二子矩阵和第二子向量。或者,如果同一或不同计算机系统中的另一个处理器已被指定执行该父SCI的计算,则由当前SCI的处理器通过总线108或网络154向该另一个处理器提供对持有当前SCI的第二子矩阵和第二子向量的存储器空间的访问。在这两种情况下,当前SCI的第二子矩阵和第二子向量在同一迭代轮次中被传递(3520)到父SCI的矩阵方程并且并入其中。
参照图3B,在各个SCI的子矩阵和子向量被提取并保存和/或传递到层次结构的上一层级的计算之后,处理350继续确定(3522)当前层级的每个SCI的子矩阵和子向量是否已经被提取了,如果是,则确定(3523)上述层次结构的上一层级是否是层次结构中的最高层级。如果在当前层级中有更多的SCI要处理,或者上述层次结构的上一层级不是层次结构中的最高层级,则处理350返回到步骤3502,对同一层级或上述上一层级的下一个SCI进行计算。处理350在本迭代轮次获得了网表中每个SCI的子矩阵和子向量后完成。
如上所述,生成(3514)表示父SCI的电特性和行为的矩阵方程将包括并入其每个子SC的第二子矩阵和第二子向量。由于处理350从层次结构的底部层级开始,并且一次向上移动一个层级,因此在处理350开始生成父SCI的矩阵方程(例如,方程(1))之前,应该已经提取了每个子SCI的第二子矩阵和第二子向量。
作为示例,图6A至6O示出了如何获得层次网表400(如图4所示)中每个SCI的子矩阵和子向量。从处于层次结构的最低层级(即底层420)的叶子SCI(例如,SCI_11 422)开始,图6A示出了SCI_11的矩阵方程,包括SCI_11的左手矩阵[G11]和右手向量[I11]。SCI_11具有外部端口"n1"212、"n2"214、VDD206、GND 208、以及用"...."表示的内部网。SCI_11的方程表示可以如图6A所示组织,但是列和行的顺序可以不同。由于这是一个叶子SCI,左手矩阵[G11]中的元素可以根据现有的模板或根据标准的SPICE电路分析计算。图6B为经过高斯消除后SCI_11的变换矩阵方程,其具有提取的第一和第二子矩阵[Gie'11]和[Ge'11]以及第一和第二子向量[Ii'11]和[Ie'11]。由于在这一层级还有另一个SCI(例如,SCI_12),所以处理350继续计算SCI_12的子矩阵和子向量。图6C示出了SCI_12的矩阵方程,包括SCI_12的左手矩阵[G12]和右手向量[I12]。SCI_12具有外部端口"n2"214、out、VDD 206、GND 208以及用"...."表示的内部网。SCI_12的方程表示可以如图6C所示组织,但是列和行的顺序可以不同。图6D显示了经过高斯消除后SCI_12的变换矩阵方程,其具有提取的第一和第二子矩阵[Gie'12]和[Ge'12]以及第一和第二子向量[Ie'12]和[Ii'12]。在一些实施例中,SCI_11的第二子矩阵[Ge'11]和第二子向量[Ie'11]以及SCI_12的第二子矩阵[Ge'12]和第二子向量[Ie'12]沿层次结构向上一层级传递,用于生成SCI_1的左手矩阵和右手向量,如图7A所示。
在计算了底部层级420的每一个SCI后,处理350继续计算上一层级(在本示例中是顶层电路402下的第一层级410)的下一个SCI(如SCI_1)。SCI_1具有外部端口"n1"212、out204、VDD 206、GND 208和内部网"n2"214,具有左手矩阵[G1]和右手向量[I1]的SCI_1的方程表示可以如图6E所示进行排序。由于该SCI_1具有子SCI,根据一些实施例,SCI_1的左手矩阵[G1]和右手向量[I1]的元素是通过并入其每个子SCI的第二子矩阵和第二子向量中的相应元素生成的。
例如,如图6F所示,通过将SCI_11的第二子矩阵Ge'11的每个元素添加到左手矩阵[G1]中对应于相同行/列节点的元素中(例如,与节点n1/n1对应的元素Ge'11 [11]、与节点n1/n2对应的元素Ge'11 [12]、与节点n1/VDD对应的元素Ge'11 [13]和与节点n1/GND对应的元素Ge'11 [14]分别添加到节点n1/n1对应的元素Ge1 [11]、节点n1/n2对应的元素Gei1 [11]、节点n1/VDD对应的元素Ge1 [13]和节点n1/GND对应的Ge1 [14]),将SCI_11的第二子矩阵Ge'11并入SCI_1的左手矩阵的一些元素中(用粗体标记)。另外,通过将SCI_11的第二子向量Ie'11的每个元素加到右手向量[I1]中对应于相同行节点的元素中(例如,与节点"n1"对应的元素Ie'11 [1]、与节点"n2"对应的Ie'11 [2]、与节点VDD对应的元素Ie'11 [3]和与节点GND对应的元素Ie'11 [4]分别添加到与节点"n1"对应的元素Ie1 [1]、与节点"n2"对应的元素Ii1 [1]、与节点VDD对应的元素Ie1 [3]和与节点GND对应的元素Ie1 [4]上),将SCI_11的第二子向量Ie'11并入SCI_1的右手矢量的一些元素中(用粗体标记)。
同样,如图6G所示,通过将SCI_12的第二子矩阵Ge'12的每个元素添加到左手矩阵[G1]中对应于相同行/列节点的元素(例如,将与节点n2/n2对应的元素Ge'12 [11]、与节点n2/out对应的元素Ge'12 [12]、与节点n2/VDD对应的元素Ge'12 [13]和与节点n2/GND对应的元素Ge'12 [14]分别添加到与节点n2/n2对应的元素Gi1 [11]、与节点n2/out对应的元素Gie1 [12]、与节点n2/VDD对应的元素Gie1 [13]和与节点n2/GND对应的元素Gie1 [14]),将SCI_12的第二子矩阵Ge'12并入SCI_1的左手矩阵的部分元素(用粗体标记)。此外,通过将SCI_12的第二子矩阵Ge'12的每个元素加到右侧向量[I1]中对应同一行节点的元素(例如,与节点"n2"对应的元素Ie'12 [1]、与节点out对应的元素Ie'12 [2]、与节点VDD对应的元素Ie'12 [3]、与节点GND对应的元素Ie'12 [4]分别添加到与节点"n2"对应的元素Ii1 [1]、与节点out对应的元素Ie1 [2]、与节点VDD对应的元素Ie1 [3]、与节点GND对应的元素Ie1 [4]上),将SCI_12的第二子向量Ie'12并入SCI_1的右手矢量的部分元素(用粗体标记)。
换句话说,SCI_1的左手矩阵的元素可以用其子SCI的第二子矩阵生成,具体如下:Ge1 [11]=Ge'11 [11],Ge1 [12]=0,Ge1 [13]=Ge'11 [13],Ge1 [14]=Ge'11 [14],Ge1 [21]=0,Ge1 [22]=Ge'12 [22],Ge1 [23]=Ge'12 [23],Ge1 [24]=Ge'12 [24],Ge1 [31]=Ge'11 [31],Ge1 [32]=Ge'12 [32],Ge1 [33]=Ge'11 [33]+Ge'12 [33],Ge1 [34]=Ge'11 [34]+Ge'12 [34],Ge1 [41]=Ge'11 [41],Ge1 [42]=Ge'12 [42],Ge1 [43]=Ge'11 [43]+Ge'12 [43],Ge1 [44]=Ge'11 [44]+Ge'12 [44],Gie1 [11]=Ge'11 [21],Gie1 [12]=Ge'12 [12],Gie1 [13]=Ge'11 [23]+Ge'12 [13],Gie1 [14]=Ge'11 [24]+Ge'12 [14],Gei1 [11]=Ge'11 [12],Gei1 [21]=Ge'12 [21],Gei1 [31]=Ge'11 [32]+Ge'12 [31],Gei1 [41]=Ge'11 [42]+Ge'12 [41],以及Gi1 [11]=Ge'11 [22]+Ge'12 [11]。另外,SCI_1的右手向量的元素可以利用其子SCI的第二子向量生成,如下所示:Ie1 [1]=Ie'11 [1],Ie1 [2]=Ie'12 [2],Ie1 [3]=Ie'11 [3]+Ie'12 [3],Ie1 [4]=Ie'11 [4]+Ie'12 [4],以及Ii1 [1]=Ie'11 [2]+Ie'12 [1]。
图6H为经过高斯消除后的SCI_1的变换矩阵方程,其具有提取的SCI_1的第一和第二子矩阵[Gie'1]和[Ge'1]以及第一和第二子向量[Ie'1]和[Ii'1]。图6I为生成的SCI_2的左手矩阵[G]和右手向量[I]。图6J为经过高斯消除后的SCI_2的变换矩阵方程,其具有提取的SCI_2的第一和第二子矩阵[Gie'2]和[Ge'2]以及第一和第二子向量[Ii'2]和[Ie'2]。在一些实施例中,如图7A所示,SCI_1的第二子矩阵[Ge'1]和第二子向量[Ie'1]以及SCI_2的第二子矩阵[Ge'2]和第二子向量[Ie'2]沿层次结构向上一层级传递,用于生成顶层电路402的左手矩阵和右手向量。
因此,在一些实施例中,可以在通过并入其每个子SCI的第二子矩阵Ge'和第二子向量Ie'而获得其每个子SCI的子矩阵和子向量之后形成SCI的方程(2)。当有多个子SCI时,获得每个子SCI的子矩阵和子向量的处理可以在获得其他每个子SCI的子矩阵和子向量的处理之前或之后进行或平行地独立进行。换句话说,SCI对其子SCI有计算依赖性,但子SCI之间没有计算依赖性。
再参考图3A,在一些实施例中,方法300还包括:在系列迭代轮次的每个迭代轮次中,计算(360)顶层电路的电路方程参数,并求解(362)顶层电路的电路方程以确定顶层电路的信号值。在一些实施例中,计算(360)顶层电路的电路方程参数包括将每个SCI的第2子矩阵和第2子向量并入紧靠顶层电路下方的第一层次中。例如,图6K示出了顶层电路402的矩阵方程,其包括左手矩阵G、信号向量V和右手向量I,左手矩阵G包括分别对应于顶层电路的外部端口(例如,外部端口"in"、out、VDD、GND)和内部网(例如,内部网"n1")的行,以及分别对应于顶层电路的外部端口(例如,外部端口"in"、out、VDD、GND)和内部网(例如,内部网"n1")的列。右手向量I包括一组元素,分别对应于顶层电路的外部端口(例如,外部端口"in"、out、VDD、GND)和内部网(例如,内部网"n1")。在一些实施例中,左手矩阵G中的每个元素可以使用顶层电路402的每个基本器件(例如,r1和c1)的左手矩阵中的相应元素和紧靠顶层电路402下方的第一层级中的每个SCI(例如,SCI_1和SCI_2)的第2子矩阵中的相应元素来计算。同样,右手矩阵I中的每个元素可以使用顶层电路402的每个基本器件(例如,r1和c1)的右手向量中的相应元素和紧接顶层电路402下方的第一层级中的每个SCI(例如,SCI_1和SCI_2)的第2子向量中的相应元素来计算。
例如,图6L示出了通过将r1的每个参数添加到顶层电路402的左手矩阵G和右手向量I中的相应元素(例如,对应于"n1"和"in"的元素,它们是r1两侧的节点)中,将与顶层电路402中的基本元件r1相关联的参数并入顶层电路的左手矩阵的一些元素(用粗体文字标记)中。图6M示出了通过将每个c1的参数添加到顶层电路402的左侧矩阵G和右侧向量I中的相应元素(例如,对应于"n1"和GND的元素,其为c1两侧的节点)中,将顶层电路402中与基本器件c1相关联的参数并入顶层电路左侧矩阵的一些元素(以粗体文字标记)中。
图6N示出了通过将SCI_1的第二子矩阵Ge'1的每一个元素添加到左手矩阵[G]中的相应元素中(例如,将与行/列n1/n1对应的元素Ge'1 [11]、与行/列n1/out对应的元素Ge'1 [12]、与行/列n1/VDD对应的元素Ge'1 [13]、与行/列n1/GND对应的元素Ge'1 [14]分别添加到对应于行/列n1/n1的元素G[22]、对应于行/列n1/out的元素G[23]、对应于行/列n1/VDD的元素G[24]和对应于行/列n1/GND的元素G[25]等等),将SCI_1的第二子矩阵Ge'1并入顶层电路的左手矩阵的一些元素(用粗体文字标记)中。图6N还示出了通过将SCI_1的第二子向量Ie'1的每个元素加到右手向量矩阵[I]中的相应元素中(例如,将与行n1对应的元素Ie'1 [1]、与行out对应的元素Ie'1 [2]、与行VDD对应的元素Ie'1 [3]和与行GND对应的元素Ie'1 [4]分别添加到与行n1对应的元素I[2]、与行out对应的元素I[3]、与行VDD对应的元素I[4]和与GND对应的元素I[5]上等等),将SCI_1的第二子向量Ie'1并入顶层电路的右手矩阵[I]的一些元素(以粗体文字标记)中。
图6O显示了通过将SCI_2的第二子矩阵Ge'2的每一个元素添加到左手矩阵[G]中的相应元素中(例如,将与行/列VDD/VDD对应的元素Ge'2 [11]、与行/列VDD/GND对应的元素Ge'2 [12]分别添加到对应于行/列VDD/VDD的元素G[44]和对应于行/列VDD/GND的元素G[45]等等),将SCI_2的第二子矩阵Ge'2并入顶层电路的左手矩阵[G]的一些元素(用粗体文字标记)中。图6O还显示了通过将SCI_2的第二子矢量Ie'2的每一个元素添加到右手矢量矩阵[I]中的相应元素中(例如,将与行VDD对应的元素Ie'2 [1]、与行GND对应的元素Ie'2 [2]分别添加到对应于行VDD的元素Ie'2 [2]和对应于行GND的元素I[5]等等),将SCI_2的第二子向量Ie'2并入顶层电路的右手矩阵[I]的一些元素(用粗体文字标记)中。
请参考图3A,在一些实施例中,方法300还包括:在一系列迭代轮次的每个迭代轮次中,计算(360)顶层电路的电路方程参数,并求解(362)顶层电路的电路方程以确定顶层电路的信号值。根据一些实施例,使用层次电路模拟方法,顶层电路的矩阵方程的尺寸比扁平化的整个电路小得多,因为顶层电路的矩阵方程只包括与顶层电路的外部端口和内部网(其位于基本元件与紧靠顶层电路下面的第一层级的SCI之间)相关的参数其。此外,如上所述,顶层电路的左手矩阵和右手向量中的元素可以通过并入第一层级中的SCI中每个SCI的第二子矩阵和第二子向量来确定。因此,在给定顶层电路的某些外部端口的信号值(例如,对应于外部端口"in"的V[1])的情况下,可以很容易地由计算机系统100或150中的一个或多个处理器使用顶层电路的矩阵方程来求解顶层电路的其他外部端口的信号值(例如,对应于外部端口"out"的V[3],V[4]对应于外部端口VDD的V[4],以及对应于外部端口GND的V[5])及其内部网的信号值(例如,与内部网"n1"对应的V[2])。
在一些实施例中,至少一些顶层电路的信号值被向下传递到下一层次结构层级,并用于确定下一层次结构的层级的SCI的一些信号值,然后至少一些信号值被向下传递并用于确定下一层级下方的层级中SCI的信号值,以此类推。如图3A所示,方法300还包括:在一系列迭代轮次的每个迭代轮次中自上而下的处理(370),该处理使用从较高层级SCI(或顶层电路)传递下来的信号值来确定较低层级SCI的信号值,该处理从第一层次结构层级开始,每次沿层次结构向下移动一个层级。
如图3D所示,根据一些实施例,处理370对网表中的每一个SCI执行电路计算,从层次结构的第一层级开始(3702),并且每次沿层次结构向下移动一个层级。对于特定层级的每个SCI,处理370包括从SCI的父SCI(或顶层电路)获取(3704)SCI的外部端口的信号值,并使用外部端口的信号值确定(3706)SCI的内部网的信号值。然后,处理370继续确定(3708)是否已经计算出当前层级中所有SCI的信号值。如果当前层级中不是所有SCI的信号值都被计算出来,则处理370接着移动到同一层级中的下一个SCI,并且对下一个SCI重复步骤3704和3706。如果当前迭代轮次,已经计算出了当前层级中所有SCI的信号值,则处理370继续确定当前层级是否是底部层级(或是否没有其它层级低于当前层级)。如果当前层级不是底部层级,则处理370移动到下一个层次结构层级,并对下一个层次结构层级中的每个SCI重复步骤3704和3706。否则,处理370完成,处理300继续判断(380)当前迭代轮次是否是最后一轮迭代,如果当前迭代不是最后一轮迭代,则在下一迭代轮次重复处理350、360/362和370。
例如,对于层次电路400,图6K所示的顶层电路402的矩阵方程中的信号向量V包括节点"n1"、"out"、VDD和GND的信号值。节点"n1"、"out"、VDD和GND恰好是SCI_1的外部端口,而节点VDD和GND恰好是SCI_2的外部端口。因此,"n1"、"out"、VDD和GND处的信号值对应于子向量[Ve1]中的信号值,VDD、GND处的信号值也对应于子向量[Ve2]中的信号值。在一些实施例中,如图7B所示,与子向量[Ve1]中的信号值对应的"n1"、"out"、VDD和GND处的信号值在层次结构中被向下传递,并用于使用公式4(a)计算SCI_1的内部网的信号值[Vi1]。同样,如图7B所示,与子向量[Ve2]中的信号值相对应的VDD和GND的信号值被向下传递,并用于使用公式4(a)计算SCI_2(如果有的话)的内部网的信号值[Vi2]。
在本例中,SCI_2没有任何内部网。SCI_1具有内部网"n2",它是SCI_11和SCI_12在下方下一层级的外部端口。在一些实施例中,如图7B所示,与子向量[Ve11]中的信号值对应的"n1"、"out"、VDD和GND处的信号值在层次结构中被向下传递,并用于使用方程4(a)计算SCI_11的内部网的信号值[Vi11]。同样,如图7B所示,与子向量[Ve12]中的信号值相对应的"n2"、"out"、VDD和GND的信号值被向下传递,并用于使用方程4(a)计算SCI_2(如果有的话)的内部网的信号值[Vi12]。
在一些实施例中,如图6A至6O所示,层次电路400中不同SCI的矩阵/向量和子矩阵/子向量可以在不同的处理器/计算机中计算。例如,如图8A所示,第一计算机中的第一处理器(例如,处理器1)可以被分配来计算SCI_11的子矩阵/子向量,而第一或第二计算机中的第二处理器(例如,处理器2)可以被分配来计算SCI_12的子矩阵/子向量。第二处理器(例如,处理器2)可以将SCI_12的第二子矩阵/子向量传递给第一处理器(例如,处理器1),第一处理器将把SCI_11和SCI_12的第二子矩阵/子向量并入SCI_1,并计算SCI_1的子矩阵/子向量。第二处理器(例如,处理器2)可以在计算SCI_1的子矩阵/子向量的几乎同时,计算SCI_2的子矩阵/子向量。然后,第二处理器(例如,处理器2)可以将SCI_2的第二子矩阵/子向量提供给第一处理器(例如,处理器1)以计算顶层电路402的左手矩阵和右手向量。
作为另一个例子,如图8B所示,第二处理器(例如,处理器2)可以被分配来计算SCI_11、SCI_12和SCI_1的子矩阵/子向量,而第一处理器(例如,处理器1)可以被分配来计算SCI_2和顶层电路的子矩阵/子向量。
因此,根据一些实施例的方法允许将电路方程的计算分配在单个或多个计算机系统中的多个处理器上,这些处理器并行操作以执行模拟。此外,由于网表中的每个SCI的第二子矩阵和第二子向量沿层次结构向上传递,并并入各父SCI或顶层电路的左手矩阵和右手向量中,因此它们不需要保存到用于执行SCI计算的计算机系统的存储器106或存储装置116中。因此,根据某些实施例的方法提供了更快的模拟,并且显著降低了存储器需求,使得在非常大规模的集成电路上执行整个电路的模拟成为可能。
Claims (20)
1.一种由一个或多个计算机系统执行以模拟电路的方法,所述一个或多个计算机系统中的每个计算机系统包括至少一个处理器,所述一个或多个计算机系统包括或可访问一个或多个存储器设备,所述方法包括:
由所述一个或多个计算机系统中的一个或多个处理器接收所述电路的网表,该网表包括形成层次结构的多个子电路实例SCI和顶层电路,该层次结构具有在所述顶层电路下方的第一层级和在所述第一层级下方的至少一个第二层级,使得所述多个SCI中的每个SCI是更高层级的另一个SCI的子级或所述顶层电路的子级,且所述多个SCI中的每一个SCI都是所述层次结构中的叶子或者是更低层级的不同SCI的父级,所述多个SCI中的每一个SCI都具有外部端口,所述多个SCI中至少一个SCI包括内部网;以及
对于一系列迭代步骤中的每一个迭代步骤:
从所述层次结构的最底层级开始,对于所述层次结构的每一个层级和各层级的每一个SCI:通过所述一个或多个计算机系统的处理器获得该SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量,并将该SCI的第一子矩阵和第一子向量存储在一个或多个存储器设备中,其中,该SCI的第一子向量和第二子向量分别对应于该SCI的第一子矩阵和第二子矩阵;其中,对于所述多个SCI中的至少一个第一SCI并且在所述一系列迭代步骤中的至少一个期间,获得所述第一SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量包括:将一个或多个第二SCI中的每个SCI的第二子矩阵和第二子向量并入表示所述第一SCI的电特性的电路方程中,并从所述电路方程中提取所述第一SCI的第一子矩阵和第二子矩阵以及所述第一子向量和第二子向量,所述一个或多个第二SCI中的每一个都是所述第一SCI的子级;
由所述一个或多个计算机系统的一个或多个处理器确定所述顶层电路中的信号值,该信号值包括所述顶层电路的外部端口的信号值和紧靠所述顶层电路下方的第一层级处的SCI的外部端口的信号值;
从所述层次结构的第一层级开始,由所述一个或多个计算机系统的一个或多个处理器确定所述层次结构中每一层级处的每个具体SCI的信号值,其中与第四SCI的外部信号值相对应的第三SCI的某些信号值被传递给所述第四SCI,并连同存储在所述一个或多个存储器设备中的所述第四SCI的第一子矩阵和第一子向量一起用于确定所述第四SCI的内部信号值,其中,所述第四SCI是所述第三SCI的子级。
2.如权利要求1所述的方法,其中所述电路方程包括左手矩阵和右手向量,且其中所述第一SCI的所述第一子矩阵和第二子矩阵从所述左手矩阵中提取,所述第一SCI的所述第一子向量和第二子向量从所述右手向量中提取。
3.如权利要求1所述的方法,其中,所述一系列迭代步骤包括一个或多个初始迭代步骤,其中,对于所述一个或多个初始迭代步骤之后的每个迭代步骤,获得各SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量包括确定该SCI是否是激活的SCI,并且响应于该SCI不是激活的SCI,重新使用在先前的迭代步骤中获得的该SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量。
4.如权利要求3所述的方法,其中,确定该SCI是否为激活的包括确定在先前的迭代步骤中该SCI的任何信号值的变化是否超过预设阈值。
5.如权利要求1所述的方法,其中,所述一系列迭代步骤包括一个或多个初始迭代步骤,其中,对于所述一个或多个初始迭代步骤之后的每个迭代步骤,获得各SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量包括确定该SCI是否是叶子SCI。
6.如权利要求5所述的方法,还包括:响应于该SCI为叶子SCI,确定所述叶子SCI是否为激活的SCI并具有相应的预计算的子矩阵模板和子向量模板;响应于该SCI为激活SCI并具有预计算子矩阵模板和子向量模板,利用所述预计算子矩阵模板和子向量模板计算该SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量。
7.如权利要求6所述的方法,其中确定该SCI是否为激活的包括确定在先前的迭代步骤中该SCI的任何信号值的变化是否超过预设阈值。
8.如权利要求1所述的方法,其中,获得所述层次结构的特定层级上特定SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量与获得所述特定层级上另一SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量无关。
9.如权利要求8所述的方法,其中,所述一个或多个处理器包括第一处理器和第二处理器,其中,获得所述特定层级上特定SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量由所述第一处理器执行,获得所述特定层级上另一SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量由第二处理器执行。
10.如权利要求9所述的方法,其中,所述一个或多个计算机系统包括第一计算机系统以及通过网络与所述第一计算机系统耦接的第二计算机系统,并且其中,所述第一处理器位于所述第一计算机系统中,所述第二处理器位于所述第二计算机系统中。
11.如权利要求1所述的方法,其中,所述一个或多个处理器包括第三处理器和第四处理器,其中所述第一SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量由所述第三处理器获得,并且其中所述一个或多个第二SCI中的至少一个的第二子矩阵和第二子向量由所述第四处理器获得。
12.如权利要求11所述的方法,还包括将一个或多个第二SCI中的至少一个SCI的第二子矩阵和第二子向量从所述第四处理器传递到所述第三处理器。
13.如权利要求11所述的方法,其中,所述一个或多个计算机系统包括第三计算机系统以及通过网络与所述第三计算机系统耦接的第四计算机系统,并且其中,所述第三处理器位于所述第三计算机系统中,所述第四处理器位于所述第四计算机系统中。
14.如权利要求13所述的方法,还包括通过网络将一个或多个第二SCI中的至少一个SCI的第二子矩阵和第二子向量从所述第三计算机系统传送到所述第四计算机系统。
15.如权利要求1所述的方法,其中所述一个或多个处理器包括第五处理器和第六处理器,并且其中接收所述网表包括由所述第五处理器接收所述网表的第一部分以及由所述第六处理器接收所述网表的第二部分。
16.如权利要求1所述的方法,其中所述一个或多个处理器包括第七处理器和第八处理器,并且其中接收所述网表包括由所述第七处理器接收所述网表并且由所述第七处理器向所述第八处理器提供所述网表的至少一部分。
17.如权利要求16所述的方法,其中,所述一个或多个计算机系统包括第一计算机系统和通过网络与所述第一计算机系统耦接的第二计算机系统,其中,所述第七处理器在所述第一计算机系统中,所述第八处理器在所述第二计算机系统中,并且其中,所述网表的所述至少一部分由所述第一计算机系统通过网络传送到所述第二计算机系统。
18.一种用于模拟电路的系统,包括:
第一处理器,被配置为接收所述电路的网表的至少第一部分,该网表包括形成层次结构的多个子电路实例SCI和顶层电路,该层次结构具有在所述顶层电路下方的第一层级和在所述第一层级下方的至少一个第二层级,使得所述多个SCI中的每个SCI是更高层级的另一个SCI的子级或所述顶层电路的子级,且所述多个SCI中的每一个SCI都是所述层次结构中的叶子或者是更低层级的不同SCI的父级,所述多个SCI中的每一个SCI都具有外部端口,所述多个SCI中至少一个SCI包括内部网;以及
一个或多个第二处理器,被配置为对于多个SCI中的一个或多个第一SCI中的每个SCI,并在一系列迭代步骤中的至少一个步骤中,获得该SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量,并将该SCI的第一子矩阵和第一子向量存储在一个或多个存储器设备中,以及将该SCI的第二子矩阵和第二子向量传递给所述第一处理器;
其中,所述第一处理器还被配置为:
将所述一个或多个第一SCI中的每一个SCI的第二子矩阵和第二子向量并入表示第二SCI的电特性的电路方程中,并从所述电路方程中提取所述第二SCI的第一子矩阵和第二子矩阵以及第一子向量和第二子向量,所述第二SCI是所述一个或多个第一SCI的父级。
19.如权利要求18所述的系统,还包括一个或多个第三处理器,其中所述第一处理器、所述一个或多个第二处理器以及所述一个或多个第三处理器中的处理器被配置为确定所述顶层电路中的信号值,该信号值包括所述顶层电路的外部端口的信号值和紧靠所述顶层电路下方的第一层级处的SCI的外部端口的信号值。
20.如权利要求18所述的系统,其中,所述第一处理器、所述一个或多个第二处理器以及所述一个或多个第三处理器中的一个或多个处理器被配置为:
从所述层次结构的第一层级开始,确定所述层次结构中每一层级的每个具体SCI的信号值,其中与第四SCI的外部信号值相对应的第三SCI的某些信号值被向下传递给所述第四SCI,使得使用所述第三SCI的某些信号值以及存储在所述一个或多个存储器设备中的所述第四SCI的第一子矩阵和第一子向量一起确定所述第四SCI的内部信号值,其中,所述第四SCI是所述第三SCI的子级。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862679645P | 2018-06-01 | 2018-06-01 | |
US62/679,645 | 2018-06-01 | ||
PCT/US2019/035013 WO2019232447A1 (en) | 2018-06-01 | 2019-05-31 | Method and system for hierarchical circuit simulation using parallel processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112513861A CN112513861A (zh) | 2021-03-16 |
CN112513861B true CN112513861B (zh) | 2022-10-21 |
Family
ID=68694024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980051374.7A Active CN112513861B (zh) | 2018-06-01 | 2019-05-31 | 使用并行处理进行层次电路模拟的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11074385B2 (zh) |
EP (1) | EP3803644A4 (zh) |
CN (1) | CN112513861B (zh) |
WO (1) | WO2019232447A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513861B (zh) * | 2018-06-01 | 2022-10-21 | Icee解决方案有限公司 | 使用并行处理进行层次电路模拟的方法和系统 |
US11663383B2 (en) * | 2018-06-01 | 2023-05-30 | Icee Solutions Llc. | Method and system for hierarchical circuit simulation using parallel processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577992B1 (en) * | 1999-05-07 | 2003-06-10 | Nassda Corporation | Transistor level circuit simulator using hierarchical data |
TWI340906B (en) * | 2005-12-19 | 2011-04-21 | Synopsys Inc | Parallel multi-rate circuit simulation |
CN102663166A (zh) * | 2011-12-08 | 2012-09-12 | 清华大学 | 一种片上供电网络仿真方法及系统 |
CN107944183A (zh) * | 2017-12-11 | 2018-04-20 | 深圳市紫光同创电子有限公司 | Fpga顶层网表的创建方法、装置、计算机设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6807520B1 (en) * | 2000-12-11 | 2004-10-19 | Synopsys, Inc. | System and method for simulation of an integrated circuit design using a hierarchical input netlist and divisions along hierarchical boundaries thereof |
US7181383B1 (en) * | 2003-11-26 | 2007-02-20 | Cadence Design Systems, Inc. | System and method for simulating a circuit having hierarchical structure |
US20060101358A1 (en) * | 2004-10-28 | 2006-05-11 | Shah Gauray R | Circuit design simulation |
US20060161413A1 (en) * | 2005-01-14 | 2006-07-20 | Legend Design Technology, Inc. | Methods for fast and large circuit simulation |
US7555733B1 (en) * | 2005-09-18 | 2009-06-30 | Infinisim, Inc. | Hierarchical partitioning |
US8694302B1 (en) | 2006-05-31 | 2014-04-08 | Worldwide Pro Ltd. | Solving a hierarchical circuit network using a Barycenter compact model |
US8832635B2 (en) * | 2012-01-06 | 2014-09-09 | Mentor Graphics Corporation | Simulation of circuits with repetitive elements |
US9152754B2 (en) * | 2013-05-07 | 2015-10-06 | Synopsys, Inc. | Sub-module physical refinement flow |
US10783292B1 (en) * | 2015-05-21 | 2020-09-22 | Pulsic Limited | Automated analog layout |
CN112513861B (zh) * | 2018-06-01 | 2022-10-21 | Icee解决方案有限公司 | 使用并行处理进行层次电路模拟的方法和系统 |
-
2019
- 2019-05-31 CN CN201980051374.7A patent/CN112513861B/zh active Active
- 2019-05-31 WO PCT/US2019/035013 patent/WO2019232447A1/en unknown
- 2019-05-31 EP EP19810535.5A patent/EP3803644A4/en active Pending
- 2019-05-31 US US16/428,703 patent/US11074385B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577992B1 (en) * | 1999-05-07 | 2003-06-10 | Nassda Corporation | Transistor level circuit simulator using hierarchical data |
TWI340906B (en) * | 2005-12-19 | 2011-04-21 | Synopsys Inc | Parallel multi-rate circuit simulation |
CN102663166A (zh) * | 2011-12-08 | 2012-09-12 | 清华大学 | 一种片上供电网络仿真方法及系统 |
CN107944183A (zh) * | 2017-12-11 | 2018-04-20 | 深圳市紫光同创电子有限公司 | Fpga顶层网表的创建方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112513861A (zh) | 2021-03-16 |
US20190370426A1 (en) | 2019-12-05 |
US11074385B2 (en) | 2021-07-27 |
EP3803644A4 (en) | 2022-03-16 |
WO2019232447A1 (en) | 2019-12-05 |
EP3803644A1 (en) | 2021-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11663383B2 (en) | Method and system for hierarchical circuit simulation using parallel processing | |
US9147032B2 (en) | Machine-learning based datapath extraction | |
US20090307636A1 (en) | Solution efficiency of genetic algorithm applications | |
JP2007172258A (ja) | タイミング検証方法及びレイアウト最適化方法 | |
US11675951B2 (en) | Methods and systems for congestion prediction in logic synthesis using graph neural networks | |
CN115204076B (zh) | 集成电路的逻辑优化方法、装置、电子设备及可读介质 | |
CN112513861B (zh) | 使用并行处理进行层次电路模拟的方法和系统 | |
KR100895260B1 (ko) | 회로 모델 축소 해석 방법 | |
US20220391566A1 (en) | Machine learning models for predicting detailed routing topology and track usage for accurate resistance and capacitance estimation for electronic circuit designs | |
US8260600B1 (en) | Circuit simulator | |
US20060111884A1 (en) | Electrical isomorphism | |
CN113408226B (zh) | 一种基于深度学习的芯片供电网络凸快电流估算方法及系统 | |
US7036096B1 (en) | Estimating capacitances using information including feature sizes extracted from a netlist | |
US20050108672A1 (en) | Method of generating a physical netlist for a hierarchical integrated circuit design | |
CN113239655B (zh) | 半导体电路的约束确定系统和方法 | |
EP3827369B1 (en) | Elmore delay time (edt)-based resistance model | |
US10031989B2 (en) | Integrated circuit performance modeling using a connectivity-based condensed resistance model for a conductive structure in an integrated circuit | |
Chen et al. | TSA-TICER: A Two-Stage TICER Acceleration Framework for Model Order Reduction | |
Smith | Data Driven Surrogate Models for Faster SPICE Simulation of Power Supply Circuits | |
CN117540670B (zh) | 用于数字电路的全局真值表生成方法及装置 | |
US8819086B2 (en) | Naming methodologies for a hierarchical system | |
US20230252208A1 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
Buurman | From Circuit to Signal: development of a piecewise linear simulator | |
Zheng et al. | Electrical modeling of integrated-package power and ground distributions | |
CN116562353A (zh) | 存算一体系统的仿真平台提供方法、仿真方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |