CN115587560A - 用于分布式引擎的运行时和存储器高效的属性查询处理 - Google Patents
用于分布式引擎的运行时和存储器高效的属性查询处理 Download PDFInfo
- Publication number
- CN115587560A CN115587560A CN202210349354.1A CN202210349354A CN115587560A CN 115587560 A CN115587560 A CN 115587560A CN 202210349354 A CN202210349354 A CN 202210349354A CN 115587560 A CN115587560 A CN 115587560A
- Authority
- CN
- China
- Prior art keywords
- attribute
- attribute information
- information
- query
- iterative loop
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 title abstract description 25
- 238000013461 design Methods 0.000 claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000005192 partition Methods 0.000 claims abstract description 43
- 230000009471 action Effects 0.000 claims abstract description 18
- 238000003860 storage Methods 0.000 claims description 83
- 238000004458 analytical method Methods 0.000 claims description 15
- 230000015572 biosynthetic process Effects 0.000 claims description 9
- 230000003068 static effect Effects 0.000 claims description 8
- 230000002441 reversible effect Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 18
- 238000004519 manufacturing process Methods 0.000 description 10
- 238000012795 verification Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013515 script Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 108010014172 Factor V Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013440 design planning Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 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/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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/33—Design verification, e.g. functional simulation or model checking
- G06F30/3315—Design verification, e.g. functional simulation or model checking using static timing analysis [STA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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
Abstract
本公开的各实施例涉及用于分布式引擎的运行时和存储器高效的属性查询处理。提供了一种方法、一种系统和一种非暂态计算机可读介质。该方法包括:由一个或多个计算设备执行电路设计的文件的前瞻扫描,以提取与迭代循环中的查询相关联的信息;在执行迭代循环之前,执行用于从电路设计的一个或多个分区取回属性信息的动作;以及使用所存储的属性信息查询迭代循环。该动作基于所提取的信息来存储属性信息。
Description
相关申请的交叉引用
本申请要求于2021年4月1日提交的美国临时专利申请号63/169,337的权益,上述申请出于所有目的通过引用以其整体并入本文。
技术领域
本公开总体上涉及电子设计自动化(EDA)系统。特别地,本公开涉及用于为分布式引擎提供运行时和存储器高效的属性查询处理的系统和方法。
背景技术
静态时序分析(STA)是超大规模集成(VLSI)设计流程中的步骤之一,因为没有利用STA的最终签核,没有芯片被流片。随着集成电路的复杂性和尺寸的增加,利用单个机器对设计执行STA是困难的,因为它是耗时的。还可能难以用单个机器执行STA,因为设计可能不适合单个机器。尝试解决该问题的大多数方法基于微建模(例如,使用提取时序模型(ETM)、接口逻辑模型(ILM)的分析),这可能导致精度损失。
发明内容
在一个方面,方法包括:由一个或多个计算设备执行电路设计的文件的前瞻扫描(lookahead scan),以提取与迭代循环中的查询相关联的信息;在执行迭代循环之前,执行用于从电路设计的一个或多个分区取回属性信息的动作;以及使用所存储的属性信息查询迭代循环。该动作基于所提取的信息来存储属性信息。
在一个方面,一种系统包括存储指令的存储器,以及与存储器耦合并执行指令的处理器。指令在被执行时使处理器:执行对电路设计的文件的前瞻扫描,以提取与迭代循环中的查询相关联的信息;在执行迭代循环之前,执行用于从电路设计的一个或多个分区取回属性信息的动作,其中动作基于所提取的信息来存储属性信息,并且使用所存储的属性信息来查询迭代循环。
附图说明
根据下面给出的详细描述和本公开的实施例的附图,将更全面地理解本公开。附图用于提供本公开的实施例的知识和理解,并且不将本公开的范围限制于这些具体实施例。此外,附图不一定按比例绘制。
图1A和图1B是示出根据本公开的实施例的使用集中式服务器的分布式架构的示意图。
图2A和图2B是示出根据本公开的实施例的使用分布式机器的另一分布式架构的示意图。
图3示出了根据本公开的实施例的静态时序分析(STA)流程的流程图。
图4示出了根据本公开的实施例的在执行迭代循环之前要执行的动作的流程图。
图5是示出根据本公开的实施例的高速缓存命令形成图的示意图。
图6是示出根据本公开的实施例的用于属性查询处理的工作流的示意图。
图7是示出根据本公开的实施例的存储服务器的示意图。
图8A至图8C是示出根据本公开的实施例的存储服务器的示意图。
图9是示出根据本公开的实施例的存储服务器的示意图。
图10示出了根据本公开的实施例的用于执行迭代循环的方法的流程图。
图11至图13示出了根据本公开的实施例的示例性结果。
图14示出了根据本发明的一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。
图15描绘了本公开的实施例可以在其中操作的示例计算机系统的图。
具体实施方式
本公开的各方面涉及用于分布式引擎的查询处理。查询可以包括属性数据查询、属性查询或分析数据查询。
在用于执行复杂集成电路的STA分析的另一类方法中,设计被分成多个片段并且使用多个机器来求解而不损失准确度。这类方法有助于保持周转时间可接受。此外,这类方法可以用于非常大尺寸的设计,因为它是可缩放的。
分布式静态时序分析(DSTA)可以用于处理超大规模集成(VLSI)设计。分布式基础设施(例如,图2A和图2B中所示的分布式系统)在迭代循环中处理属性查询(例如,用于在诸如foreach_in_collection的对象集合中存在的每个元素上迭代的命令)时可能存在问题。例如,当查询的数目太大时,在迭代循环中查询属性数据非常慢。这是因为对于每个属性查询,主机器(即,负责控制分布式机器的中央机器)从多个分区(即,负责实际计算的分布式机器)请求属性信息。多个分区中的每个分区计算属性值并将属性值发送到主机器。在该方法中,与实际属性查询相比,建立通信的建立时间更大。
一种方法是通过引入附加命令而一次性收集所需属性来使用用户脚本的改变。例如,可以在磁盘上写入数据,并且可以在属性查询期间解析属性数据(例如,使用report_attribute命令)。该方法涉及手动工作,并且在大多数情况下,客户没有准备好改变他们的脚本。
本文公开的实施例解决了利用分布式基础设施在迭代循环中处理大量属性查询的不可行性问题。在一些方面,执行部分用户脚本的前瞻扫描以加速属性查询。利用前瞻扫描,收集所需的数据信息。收集的数据信息允许提取块中的属性数据,这导致更快的属性查询。
在一些实施例中,可以实现公共存储服务器(智能存储机制、存储机制)以避免分区处的存储器开销。公共存储服务器可以跨不同的进程共享,因为所需的存储器是临时的(即,仅在属性迭代循环期间使用)。此外,存储服务器不影响主机器(即,主处理器、中央处理器)的存储器。此外,存储服务器被设计为使得在属性查询期间存在较少的数据获取操作。
本公开的优点包括但不限于控制主机器处的峰值存储器增加以及减少获取操作的数目,这导致改进的运行时间。另外,当使用本文描述的方法时,与常规(即,单个机器、非分布式)流程相比,预期获得用于属性查询的几乎相等或更好的运行时间。在具有分布式架构的用户脚本中存在最小改变或没有改变。此外,对主机器的存储器的影响最小或没有影响。因此,在DSTA中高效地处理迭代循环中的属性查询和隐式迭代属性查询,诸如基于属性值对对象集合进行排序/过滤。
为了执行DSTA,使用各种分布式架构。存在两种广泛用于STA的分布式架构(在图1和图2中示出)。每个分布式架构具有其自己的如下所述的优点和缺点。
图1A和图1B是示出根据本公开的实施例的使用集中式服务器(或主设备)102的分布式架构100的示意图。分布式架构100可以包括集中式服务器102和多个分布式处理器(或工作器)104。多个分布式处理器104可以包括N个工作器机器(例如,104a、104b、…、104n)。在分布式架构100中,分析由多个分布式处理器104完成。在分析完成之后,数据被聚集并存储在集中式服务器102中的数据存储106中,如图1B所示。分布式处理器104可以将其他数据(例如,网表、约束信息等)存储在与多个分布式处理器104中的每个分布式处理器相关联的数据存储110(例如,110a、110b、…、110n)中。集中式服务器102还可以包括数据存储112,其包括设计信息(例如,网表、约束信息等)。
分布式架构100提供如下优点:在集中式服务器102中(例如,在数据存储106中)具有时序报告而在迭代循环期间不访问分布式处理器104。另外,可以在分析完成之后释放分布式处理器104。分布式架构100的缺点是集中式服务器102可能需要大的存储器。因此,分布式架构100可能不适合于求解大型设计,因为该架构是不可缩放的。
图2A和图2B是示出根据本公开的实施例的使用分布式机器204(或工作器机器)的另一分布式架构200的示意图。STA可以由主机器202和多个分布式机器204(诸如用于N个分区的N个工作器机器(例如,204a、204b、…、204n))处理。如本领域普通技术人员将理解的,工作器机器的数目(因此分区的数目)可以基于用户规范、计算资源可用性等。
主机器202是灵活的(即,可以被配置为处理包括多个分布式机器的多个任务)。在一个实施方式中,主机器202可以是轻量级的(即,低存储器要求)。在其他实现中,主机器202可以存储足够的信息以在本地执行基本STA报告命令。一旦分区完成,STA可以在分布式机器204上以分布式机器204之间的最小通信并行执行。经分析的数据/结果跨分布式机器204保持,而不是在分析之后执行聚合。例如,经分析的数据可以存储在如图2B所示的与每个分布式机器相关联的数据源206(例如,206a、206b、…、206n)中。例如,数据源206a可以与分布式机器204a相关联。主机器202可以包括设计数据库208。多个分布式机器204中的每个分布式机器还可以包括设计数据库210(例如,210a、210b、…、210n)。例如,分布式机器204a可以包括设计数据库210a。设计数据库208和210可以存储网表、约束信息等。
在一些实施例中,当从用户接收到请求或查询(例如,取回时序数据的请求)时,主机器202可以从分布式机器204取回数据。结果可以从多个分布式机器204中的每个分布式机器单独获得。
图3示出了根据本公开的实施例的静态时序分析(STA)流程300的流程图。在302处,读取电路设计的设计数据。举例来说,可以硬件描述语言(HDL)(例如,Verilog或超高速集成电路硬件描述语言(VHDL)文件)的形式读取设计数据。在304处,应用逻辑和物理约束(例如,期望的性能要求)。在306处,执行时序分析以在无实际模拟的情况下找到设计的预期时序。例如,时钟时序信号或数据信号通过电路设计传播。测量每个节点处的信号的到达时间以确定整个电路设计中每个节点处的延迟。可以将到达时间和延迟与逻辑和物理约束中指定的时间进行比较。在时序分析完成之后,可能需要评估时序分析的结果。在308处,执行各种报告命令以检查结果。在一些实施例中,期望检查每个对象(例如,设计对象)的结果。这通常使用迭代循环(例如,迭代报告查询310)来执行。设计对象可以包括逻辑门、子系统块、系统块等。例如,用户可以查询设计的一个或多个对象的时序数据。
在一些实施例中,迭代报告查询310可以处理对象的集合。在迭代报告查询310中,对象的迭代器可能需要属性值(例如,foreach_in_collection)。迭代属性查询可以包括基于属性值对对象集合进行排序和/或过滤。对象可以是电路设计的元件。例如,对象可以包括端口、线网、单元等。属性可以是与携带关于对象的一些信息的对象相关联的字符串或值。属性可以包括最差松弛度、最差松弛度边沿、最大延迟、路径数目等。
本文描述的方法加速了分布式STA的迭代循环中的这种报告查询。在执行用于每当标识迭代循环时报告的脚本时,在执行循环内的查询之前执行一个或多个附加动作。
图4示出了根据本公开的实施例的在执行迭代循环之前要执行的动作(命令)的流程图400。在402处,执行前瞻扫描。在前瞻扫描期间,解析迭代循环的主体。例如,图3的迭代报告查询310被解析。标识关于属性查询使用或需要的对象的信息。例如,可以标识依赖于另一对象的对象。
在404处,创建形成图。形成图可以表示属性与一个或多个对象之间的关系。形成图用于标识要为属性化查询而高速缓存的信息。关于图5进一步描述形成图。
在406处,形成用于构建存储服务器的密钥。密钥可用于从存储服务器取回数据,如下文进一步描述。关于图6进一步描述存储服务器。存储服务器可以顺序地存储属性信息。
在408处,由主机器创建高速缓存命令。在410处,主机器可以将高速缓存命令发送到所有分布式机器(例如,分区)。多个分布式机器中的每个分布式机器可以向存储服务器发送属性信息。基于高速缓存命令确定要发送到存储服务器的属性信息。在412,属性信息被存储在存储服务器中。
一旦执行了步骤402-412,就可以开始迭代循环的实际执行。
图5示出了根据本公开的实施例的高速缓存命令形成图500。在一些实施例中,具有修改诸如foreach_in_collection的迭代命令的功能的执行用户脚本的前瞻扫描被执行。在前瞻扫描期间执行以下操作和步骤。
迭代循环的内容(例如,图3中的每个foreach_in_collection查询310的主体)被解析以提取用于属性查询的所有相关信息(表示为来自图500中的对象的前向遍历)。相关信息可以包括在查询中使用的对象和/或属性。然后,使用解析的信息来标识期望来自分区的数据的属性502(例如,属性502a、属性502b和属性502n)。使用解析的信息来标识期望属性数据的对象(例如,对象504、迭代器506和集合508)。集合可以指对象的集合。集合可以包括单元的集合、时序路径的集合、引脚的集合等。迭代器可以是集合中的元素。在一些方面,单个对象可以是对象集合的迭代器。在图500中,对象504是迭代器506上的因变量。在图500中,“cmd”是对对象进行操作并产生不同或相同类型的对象的运算符。属性502a与对象503(cmd3)相关,并且对象504依赖于迭代器506(cmd2)。基于该关系和运算符(cmd),找到使用属性502a的对象。类似地,使用迭代器506、属性502b和属性502n。图5中的实线表示使用cmd的关系/运算符。它从上到下(从根节点开始通过中间节点到叶节点),并根据先前的对象(图500中的父节点)生成对象。图5中的虚线从包含属性信息的叶节点开始。它表示有助于找出需要哪个属性信息的对象的信息的属性对象关系。
利用对象和属性,使用反向图遍历(在图5中由虚线指示),形成高速缓存命令以从分区获得来自使用的对象的所有相关属性数据。即,形成取回在查询中使用的对象的相关属性的值的命令。
在一些实施例中,当在执行实际查询之前对象和对应的属性信息可用时,在一个命令中取回(即,收集)期望的信息(由查询而返回的信息)。因此,(机器之间的)通信所需的建立时间是可忽略的。
图6示出了根据本公开的实施例的用于属性查询处理的工作流。在一些实施例中,主机器602可以使用对应于在对象(Obj)上查询的属性的相关信息来准备高速缓存命令610。高速缓存命令610可以被发送到所有分区(PT)604。分区604处理对象并计算分区中存在的每个对象的属性值(Val)。
在一些实施例中,数据被发送到主机器602的处理器,同时收集属性(attr)数据作为可以在实际迭代期间使用的数据。然而,如果完整数据被发送到主机器602,则主机器602的存储器需求可能大大增加。类似地,如果所收集的数据保持在分区本身(例如,分区604)中,则增加分区的存储器需求。在整个运行期间保留大存储器大小的机器,但是仅在迭代期间使用数据。在一些实施例中,分区604可以以密钥的形式将数据发送到存储服务器606,如本文稍后所述和图9所示。
在一些实施例中,存储服务器606可以跨多个运行共享,因为每个运行使用临时存储空间。存储服务器606可以是基于云存储的密钥数据模型,因为不执行复杂操作。也就是说,存储服务器606可能不执行STA或其他需要相对处理的操作。
在一些方面,分区604可以同时将数据612发送到存储服务器606。数据612可以对应于与高速缓存命令610相关联的数据。数据612可以包括属性和对象数据。当由存储服务器606接收到数据612时,存储服务器606可以将确认发送回分区604。然后,分区604可以通知主机器602属性数据在存储服务器606中可用。主机器602可以开始查询属性值。当由主机器602接收到用于取回对象上的属性(例如,get_attribute)的值的函数614时,主机器602可以从存储服务器606请求对应于密钥的数据块616。从存储服务器606接收的数据618可以存储在主机器602的高速缓存608中。主机器602可以与高速缓存608通信620以获得属性信息。在一些实施例中,在一些迭代之后删除高速缓存608。
图7是示出根据本公开的实施例的存储服务器706的示意图。存储服务器706可以由多个分布式运行共享。分布式运行可以包括第一分布式运行708a、第二分布式运行708b、第三分布式运行708c,……以及第n分布式运行708n。每个分布式运行可以包括主机器和一个或多个工作器机器。存储服务器706可以存储来自第一分布式运行708a、第二分布式运行708b、第三分布式运行708c,……和第n分布式运行708n的信息。例如,如前所述,用于分布式运行的每个主机器可以向工作器机器发送高速缓存命令。进而,工作器机器可以将信息发送到存储服务器706。因此,主机器的峰值存储器可能不会增加,因为数据被发送到存储服务器706。
在一些实施例中,工作器机器可以经由网络连接而连接到存储服务器706。网络连接可以是有线连接(例如,以太网)、无线连接(例如,802.11Wi-Fi或蓝牙)或其他适当的联网技术。存储服务器706可以包括任何数目的存储设备(例如,存储盘、存储共享、NFS共享和导出)。
图8A至图8C是示出根据本公开的实施例的存储服务器800的示意图。
在一些实施例中,迭代循环可以包括n个对象的集合。迭代循环可以要求单个属性数据。在一个示例中,数据可以驻留在单个分区中。n个对象的集合可以被划分为“k”个块(部分)(在本文中也称为划分因子)。对于每个块,创建唯一密钥。如图8A所示,为组块中的对象来高速缓存属性数据。例如,在从主机器接收到高速缓存命令之后,每个分区可以将唯一密钥发送到存储服务器806。
在第一属性查询(对应于第一对象)的迭代期间,对应于第一密钥的属性数据被移动到主机器802并从存储服务器806删除,如图8B所示。对于随后的(n/k-1)对象属性查询,属性数据已经在主机器802中,因此不需要从存储服务器806提取数据,如图8B所示。
对于第(n/k+1)对象,从存储服务器806提取属性。因此,从主机器802删除对应于第一密钥的属性数据,并且将对应于第二密钥的属性数据移动到主机器802。如图8C所示,从存储服务器806删除对应于第二密钥的属性数据。针对与所有密钥相关联的所有数据属性重复该过程。
仅考虑对象的索引来生成图8A至图8C中使用的唯一密钥。然而,在迭代循环中,多个对象集合使用多个属性数据,并且数据可以驻留在多个分区中。因此,密钥可以是分区编号、属性索引、集合索引、(集合的)块索引的组合,如下面进一步描述的。
图9是示出根据本公开的实施例的存储服务器900的示意图。如前所述,使用密钥来存储和取回来自存储服务器的属性数据不会增加主机器的峰值存储器。另外,使用存储服务器900将属性数据存储在存储服务器中,诸如最小化来自服务器的提取操作的数目。存储属性数据,使得其能够顺序访问。
基于存储服务器(例如,图6的存储服务器606)中的密钥来存储属性数据。所存储的数据的大小取决于为一组对象生成每个密钥的方式。如本文先前所讨论的,可以在前瞻扫描的帮助下收集信息(即,属性数据)。例如,可以收集对象的总数和需要数据的属性的数目。利用该信息,可以估计存储器要求以在整个迭代期间保持属性数据。取决于可用/允许的存储器(例如,峰值和使用的存储器之间的差异),对象被分成若干部分。对于每个部分,分配密钥。存储服务器900中的密钥可以是分区编号(i)、属性索引或名称(j)、集合的索引(k)和集合本身(即,第k个集合中的对象块)的组合。图9示出了两组密钥。在一些方面,可以存在“n”个密钥集合。在第一组密钥中,存在T个密钥。集合索引从1变为T。在第二组密钥中,两个属性被高速缓存。两个密钥表示对应于具有不同属性信息的组块1的数据。
在一些实施例中,每当数据在主机器中不可用时,它从存储服务器被提取。对象的分组是诸如可能存在最小数目的提取操作的方式,并且每次提取带来适当大小的属性数据。因为执行了前瞻扫描,所以每个属性的对象查询的完整序列是已知的。因此,每个密钥以与迭代循环内的对象的迭代相同的方式形成(例如,foreach_in_collection)。即时密钥生成提供了控制主机器处的峰值存储器增加以及减少提取操作的数目从而导致改进的运行时间的优点。在一个示例中,第一查询可以通过对象五来提取与对象一相关联的数据。因此,一旦在迭代循环期间接收到下一查询,数据就已经在主机器的高速缓存中可用,并且不从存储服务器提取附加数据。
在一些实施例中,划分因子k可以用于控制主机器的高速缓存的大小。划分因子越小意味着每个密钥的对象数目越多。因此,较小的划分因子导致较大的高速缓存大小要求。划分因子可以由用户选择。
图10示出了根据本公开的实施例的用于执行迭代循环的方法1000的流程图。方法1000示出了迭代循环中的单个命令执行。在1002,确定命令是否是属性查询。响应于确定命令是属性查询,过程前进到步骤1004。响应于确定命令不是属性查询,过程前进到步骤1014。
在1004,确定属性信息在主机器的高速缓存中是否可用。该确定可以基于主机器的高速缓存中的数据的密钥的可用性。响应于确定属性信息可用,过程前进到步骤1014。响应于确定属性信息不可用,过程前进到步骤1006。在1006处,从主机器(例如,主机器602)的高速缓存中删除前一块的属性信息。在1008处,形成基于下一个块编号的新密钥。在1010处,使用新密钥(在1008处形成)从存储服务器(例如,存储服务器606)请求属性信息。在1012处,将信息存储在主机器的高速缓存中。在1014处,执行命令。
本文描述的存储服务器最小化属性查询的附加动作的数目。因此,在步骤1004的确定导致比“否”更频繁的“是”。也就是说,当使用本文所述的存储服务器时,属性信息更可能在主机器的高速缓存中可用。
图11是示出根据本公开的实施例的常规方案与DSTA(具有和不具有本文描述的方法)之间的运行时比较的示意图1100。在示意图1100中,x轴对应于多个对象,并且y轴对应于以秒为单位的运行时间。示出了针对四个属性的结果。曲线1102示出了无高速缓冲存储器的DSTA的运行时间。曲线1104示出了如本发明中所描述的具有高速缓冲存储器的DSTA的运行时间。曲线1106示出了常规方案(即,单个机器解决方案)的运行时间。
在不使用本文描述的方法的情况下,执行迭代属性查询所需的运行时间是关于对象数目的多项式,如曲线1102所示。使用本文描述的方法,运行时间与如曲线1104所示的对象的数目是线性的。而且,运行时间与曲线1106所示的常规方案相当。对于显著更大数目的对象,本文描述的方法提供了相对于常规方案的改进的运行时间。如图11所示,在不使用本文描述的方法的情况下,可能无法在分布式解决方案的迭代循环中执行更大的属性查询。
图12是示出针对不同数目的属性的常规方案与具有高速缓存的DSTA之间的运行时间比较的示意图。所示示例中的对象数目是32,610,751。图12示出了当属性的数目大(例如,在该示例中为8个属性或16个属性)时,本文公开的方法与常规方案相比具有更好的性能。此外,用于存储数据的高速缓存的大小随着属性数目的增加而增加。
图13是示出针对不同划分因子(k)的运行时间和峰值存储器的示意图。通过设计适当的密钥,可以控制存储器使用,而对运行时间的影响可以忽略不计。如前所述,更大的划分因子具有使用更少峰值存储器的优点。例如,相比于划分因子一使用14.2GB的存储器,划分因子五可以使用0.3GB的存储器。对运行时的影响是可忽略的。划分因子五的运行时间是40分钟,而划分因子一的运行时间是37分钟。可以基于主机器(主机器)中的可用存储器缓冲器在运行中选择k因子。
图14图示了在诸如集成电路的制品的设计、验证和制造期间用于变换和验证表示集成电路的设计数据和指令的示例过程集1400。这些过程中的每个过程可以被构建和启用为多个模块或操作。术语“EDA”表示术语“电子设计自动化”。这些过程开始于使用设计师提供的信息创建产品构思1410,信息被变换为创建使用EDA过程集1412的制品。当设计完成时,设计被流片1434,流片1434是当集成电路的图稿(例如,几何图案)被发送到制造设施以制造掩模集时,掩模集随后被用于制造集成电路。在流片之后,半导体管芯被制造1436并且封装和组装过程1438被执行来生产完成的集成电路1440。
电路或电子结构的规范范围可以从低级晶体管材料布局到高级描述语言。使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(‘HDL’)可以使用高级表示来设计电路和系统。HDL描述可以被转换为逻辑级寄存器传输级(‘RTL’)描述、门级描述、布局级描述或掩模级描述。作为更详细描述的每个较低表示级在设计描述中添加更多有用的细节,例如,包括描述的模块的更多细节。作为更详细描述的较低表示级可以由计算机生成,从设计库派生,或由另一设计自动化过程创建。用于指定更详细描述的较低级表示语言的规范语言示例是SPICE,它用于对具有许多模拟部件的电路进行详细描述。每个表示级的描述都可以由该层的对应工具(例如,形式验证工具)使用。设计过程可以使用图14中描述的序列。过程由EDA产品(或工具)描述。
在系统设计1414期间,待制造的集成电路的功能被指定。设计可以针对所需特性来优化,诸如功耗、性能、面积(物理和/或代码行)和成本降低等。在这个阶段可以将设计划分为不同类型的模块或部件。
在逻辑设计和功能验证1416期间,电路中的模块或部件以一种或多种描述语言指定,并且规范的功能准确性被检查。例如,电路的部件可以被验证来生成与正在设计的电路或系统的规范要求相匹配的输出。功能验证可以使用仿真器和其他程序,诸如测试台生成器、静态HDL检查器和形式验证器。在一些实施例中,被称为“仿真器”或“原型系统”的特殊部件系统被用于加速功能验证。
在用于测试的综合和设计1418期间,HDL代码被转换为网表。在一些实施例中,网表可以是图形结构,其中图形结构的边表示电路的部件,并且图形结构的节点表示部件如何互连。HDL代码和网表均是分层的制品,制品可以由EDA产品使用来验证集成电路在制造时是否按照指定的设计执行。网表可以针对目标半导体制造技术进行优化。附加地,完成的集成电路可以被测试来验证集成电路是否满足规范要求。
在网表验证1420期间,网表被检测是否符合时序约束以及是否与HDL代码对应。在设计规划1422期间,构建集成电路的总体平面图并针对时序和顶层布线进行分析。本文中描述的方法可以在1420中实现。
在布局或物理实现1424期间,发生物理布局(诸如晶体管或电容器的电路部件的定位)和布线(通过多个导体连接电路部件),并且从库中选择单元以启用特定的逻辑功能可以被执行。如本文所使用的,术语“单元”可以指定提供布尔逻辑功能(例如,AND、OR、NOT、XOR)或存储功能(诸如触发器或锁存器)的晶体管集、其他部件和互连。如本文所使用的,电路“块”可以指代两个或更多个单元。单元和电路块均可以被称为模块或部件,并且可以作为物理结构和在仿真中启用。参数(诸如尺寸)指定选定单元(基于“标准单元”)指定,并可在数据库中访问以供EDA产品使用。
在分析和提取1426期间,电路功能在布局级被验证,这允许布局设计的细化。在物理验证1428期间,检查布局设计来确保制造约束正确,诸如DRC约束、电气约束、光刻约束,并且电路功能与HDL设计规范匹配。在分辨率增强1430期间,布局的几何形状被转换来改进电路设计的制造方式。
在流片期间,创建用于生产光刻掩模的数据(根据需要,在应用光刻增强之后)。在掩模数据准备1432期间,“流片”数据被用于生产用以生产成品集成电路的光刻掩模。
计算机系统(诸如图15的计算机系统1500)的存储子系统可以被用于存储由本文所述的一些或所有EDA产品使用的程序和数据结构,以及用于开发库的单元以及用于使用该库的物理和逻辑设计的产品。
图15图示了其中可以执行指令集,用于使得机器执行本文讨论的任一个或多个方法的计算机系统1500的示例机器。在备选实现方式中,机器可以在LAN、内联网、外联网和/或互联网中被连接(例如,联网)到其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份操作,作为对等(或分布式)网络环境中的对等机器操作或者作为云计算基础设施或环境中的服务器或客户端机器操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥或者能够执行指定该机器要采取的动作的指令集(时序或以其他方式)的任何机器。此外,虽然单个机器被图示,但是术语“机器”也应被理解为包括单独或联合执行一个(或多个)指令集来执行本文所讨论的任一个或多个方法的机器的任何集合。
示例计算机系统1500包括经由总线1530彼此通信的处理设备1502、主存储器1504(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、静态存储器1506(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1518。
处理设备1502表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器或实现指令集组合的处理器。处理设备1502也可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备1502可以被配置为执行指令1526来执行本文中描述的操作和步骤。
计算机系统1500还可以包括网络接口设备1508,以通过网络1520进行通信。计算机系统1500还可以包括视频显示单元1510(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1512(例如,键盘)、光标控制设备1514(例如,鼠标)、图形处理单元1522、信号发生设备1516(例如,扬声器)、图形处理单元1522、视频处理单元1528和音频处理单元1532。
数据存储设备1518可以包括机器可读存储介质1524(也被称为非暂态计算机可读介质),其上存储有一个或多个指令集1526或体现本文所述的任一个或多个方法或功能的软件。指令1526还可以在由计算机系统1500执行期间完全或至少部分地驻留在主存储器1504内和/或处理设备1502内,主存储器1504和处理设备1502也构成机器可读存储介质。
在一些实现方式中,指令1526包括用于实现与本公开相对应的功能的指令。虽然机器可读存储介质1524在示例实现方式中被示出为单个介质,但是术语“机器可读存储介质”应被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“机器可读存储介质”还应被理解为包括能够存储或编码指令集,以供机器执行并且使得机器和处理设备1502执行本公开的任一个或多个方法的任何介质。因此,术语“机器可读存储介质”应包括但不限于固态存储器、光学介质和磁介质。
前述详细描述的一些部分已根据算法和计算机存储器内的数据位上的操作的符号表示来呈现。这些算法描述和表示是数据处理领域的技术人员用来将他们的工作内容最有效地传达给本领域的其他技术人员的方式。算法可以是导致期望结果的操作序列。操作是那些需要对物理量进行物理操作的操作。这样的量可以采取能够被存储、组合、比较和以其他方式操纵的电或磁信号的形式。这样的信号可以被称为位、值、元素、符号、字符、术语、数字等。
然而,应记住,所有这些和类似的术语都将与适当的物理量相关联并且仅是应用于这些量的方便标签。除非从本公开中清楚地另外明确说明,否则应当理解,在整个描述中,某些术语是指计算机系统或类似电子计算设备的动作和过程,其将被表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储设备内的物理量的其他数据。
本公开还涉及用于执行本文中的操作的装置。该装置可以为预期目的专门构造,或者它可以包括由计算机中存储的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以被存储在各自与计算机系统总线耦合的计算机可读存储介质中,计算机可读存储介质诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合存储电子指令的任何类型的介质。
本文提出的算法和显示与任何特定的计算机或其他装置没有内在的关系。根据本文的教导,各种其他系统可以与程序一起使用,或者可以证明构造更专业的装置来执行方法是方便的。此外,没有参考任何特定的编程语言来描述本公开。应当理解,可以使用多种编程语言来实现如本文所述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,指令可以被用于对计算机系统(或其他电子设备)进行编程来执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开中,已参考其具体示例实现方式描述了本公开的实现方式。显然,在不脱离所附权利要求中阐述的本公开的更广泛的精神和实现范围的情况下,可以对其进行各种修改。在本公开以单数时态提及一些元素的情况下,可以在附图中描绘多于一个元素并且相同的元素使用相同的附图标记来标记。因此,本公开和附图应被视为例示性意义而非限制性意义。
Claims (20)
1.一种方法,包括:
执行电路设计的文件的前瞻扫描,以提取与迭代循环中的查询相关联的信息;
在执行所述迭代循环之前,由一个或多个处理器执行用于从所述电路设计的一个或多个分区取回属性信息的动作,其中所述动作基于所提取的信息存储所述属性信息;以及
使用所存储的属性信息来查询所述迭代循环。
2.根据权利要求1所述的方法,执行所述动作包括:
建立存储系统,所述存储系统顺序地存储所述属性信息以最小化所述迭代循环的执行期间的获取操作的数目;以及
将所述属性信息存储在所述存储系统中。
3.根据权利要求1所述的方法,执行所述查询包括:
确定所述信息是否被存储在主机器中;
当所述信息未被存储在所述主机器中时,基于块编号形成密钥;
使用所述密钥从存储系统取回与所述块编号相关联的所述属性信息;以及
将所取回的属性信息存储在所述主机器中。
4.根据权利要求3所述的方法,其中形成所述密钥还基于分区编号和所述查询的数目。
5.根据权利要求3所述的方法,还包括:
在取回与所述块编号相关联的所述属性信息之前,删除存储在所述主机器中的与前一块编号相关联的所述属性信息。
6.根据权利要求1所述的方法,其中所述文件包括所述迭代循环;并且执行所述前瞻扫描包括:
解析所述迭代循环,以提取与所述查询相关联的信息;以及
基于所述信息标识与所述查询相关联的对象。
7.根据权利要求1所述的方法,其中执行所述前瞻扫描还包括:
形成表示属性与一个或多个对象之间的关系的形成图;
从用于命令的对象执行所述形成图的前向遍历;以及
从属性执行所述形成图的反向遍历,其中所述属性由所述命令使用。
8.根据权利要求1所述的方法,其中所述查询提取与所述电路设计的时序数据相关联的属性,并且其中所述时序数据是使用由一个或多个处理器执行的分布式静态时序分析(DSTA)而获得的。
9.根据权利要求1所述的方法,其中执行所述动作还包括:
基于在所述前瞻扫描期间取回的信息,向一个或多个处理器发送高速缓存命令,其中所述一个或多个处理器中的每个处理器确定属性值并且将所述属性值发送到存储系统;以及
查询所述存储系统,以取回所述属性值。
10.一种系统,包括:
存储器,所述存储器存储指令;以及
处理器,所述处理器与所述存储器耦合并且用于执行所述指令,所述指令在被执行时使所述处理器:
执行电路设计的文件的前瞻扫描,以提取与迭代循环中的查询相关联的信息;
在执行所述迭代循环之前,执行用于从所述电路设计的一个或多个分区取回属性信息的动作,其中所述动作基于所提取的信息存储所述属性信息;以及
使用所存储的属性信息来查询所述迭代循环。
11.根据权利要求10所述的系统,其中所述处理器还被配置为:
建立存储系统,所述存储系统顺序地存储所述属性信息以最小化所述迭代循环的执行期间的获取操作的数目;以及
将所述属性信息存储在所述存储系统中。
12.根据权利要求10所述的系统,其中所述处理器还被配置为:
确定所述信息是否被存储在主机器中;
当所述信息未被存储在所述主机器中时,基于块编号形成密钥;
使用所述密钥从存储系统取回与所述块编号相关联的所述属性信息;以及
将所取回的属性信息存储在所述主机器中。
13.根据权利要求12所述的系统,其中形成所述密钥还基于分区编号和所述查询的数目。
14.根据权利要求12所述的系统,其中所述处理器还被配置为:
在取回与所述块编号相关联的所述属性信息之前,删除存储在所述主机器中的与前一块编号相关联的所述属性信息。
15.根据权利要求10所述的系统,其中所述文件包括所述迭代循环;并且所述处理器还被配置为:
解析所述迭代循环,以提取与所述查询相关联的信息;以及
基于所述信息标识与所述查询相关联的对象。
16.根据权利要求10所述的系统,其中所述处理器还被配置为:
形成表示属性与一个或多个对象之间的关系的形成图;
从用于命令的对象执行所述形成图的前向遍历;以及
从属性执行所述形成图的反向遍历,其中所述属性由所述命令使用。
17.根据权利要求10所述的系统,其中所述处理器还被配置为:
基于在所述前瞻扫描期间取回的信息,向一个或多个处理器发送高速缓存命令,其中所述一个或多个处理器中的每个处理器确定属性值并且将所述属性值发送到所述存储系统;以及
查询所述存储系统,以取回所述属性值。
18.一种非暂态计算机可读介质,包括被存储的指令,所述指令在由处理器执行时使所述处理器:
执行电路设计的文件的前瞻扫描,以提取与查询相关联的信息;
在执行所述查询之前,执行用于从所述电路设计的一个或多个分区取回属性信息的动作,其中所述动作基于所提取的信息存储属性信息;以及
使用所存储的属性信息来执行所述查询。
19.根据权利要求18所述的非暂态计算机可读介质,其中所述处理器还被配置为:
建立存储系统,所述存储系统最小化所述迭代循环的执行期间的获取操作的数目;以及
将所述属性信息存储在所述存储系统中。
20.根据权利要求18所述的非暂态计算机可读介质,其中所述处理器还被配置为:
确定所述信息是否被存储在主机器中;
当所述信息未被存储在所述主机器中时,基于块编号形成密钥;
使用所述密钥从存储系统取回与所述块编号相关联的所述属性信息;以及
将所取回的属性信息存储在所述主机器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163169337P | 2021-04-01 | 2021-04-01 | |
US63/169,337 | 2021-04-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115587560A true CN115587560A (zh) | 2023-01-10 |
Family
ID=83450184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210349354.1A Pending CN115587560A (zh) | 2021-04-01 | 2022-04-01 | 用于分布式引擎的运行时和存储器高效的属性查询处理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220318481A1 (zh) |
CN (1) | CN115587560A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230141190A1 (en) * | 2021-11-09 | 2023-05-11 | Google Llc | Late Materialization of Queried Data in Database Cache |
-
2022
- 2022-04-01 US US17/711,371 patent/US20220318481A1/en active Pending
- 2022-04-01 CN CN202210349354.1A patent/CN115587560A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220318481A1 (en) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922106B2 (en) | Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning | |
US7111269B2 (en) | Comparison of two hierarchical netlist to generate change orders for updating an integrated circuit layout | |
US11256845B2 (en) | Machine-learning driven prediction in integrated circuit design | |
KR20220148913A (ko) | 초기 단계 회로 설계에서 기계 학습 기반 메트릭 예측 | |
US20210357314A1 (en) | Smart regression test selection for software development | |
US20220300688A1 (en) | Fast synthesis of logical circuit design with predictive timing | |
US11836425B2 (en) | Engineering change orders with consideration of adversely affected constraints | |
US20220318481A1 (en) | Runtime and memory efficient attribute query handling for distributed engine | |
US20230351082A1 (en) | Satisfiability-based resubstitution for incremental mapped optimization | |
TW202333039A (zh) | 使用超級葉單元的記憶體個體重新配置 | |
US20210390244A1 (en) | System and Method for Synchronizing Net Text Across Hierarchical Levels | |
US11467851B1 (en) | Machine learning (ML)-based static verification for derived hardware-design elements | |
US20220058328A1 (en) | Synthesis placement bounds based on physical timing analysis | |
US11630934B1 (en) | Integrated circuit analysis using a multi-level data hierarchy implemented on a distributed compute and data infrastructure | |
US20230126888A1 (en) | Computation of weakly connected components in a parallel, scalable and deterministic manner | |
US11734080B1 (en) | Memory efficient and scalable approach to stimulus (waveform) reading | |
US20230252208A1 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
US11222154B2 (en) | State table complexity reduction in a hierarchical verification flow | |
US20220198109A1 (en) | Boolean methods for engineering change order (eco) patch identification | |
US11416661B2 (en) | Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow | |
US20220284161A1 (en) | Automated design hierarchy identification and simplified reduced model generation for static verification of circuit designs | |
US20220391569A1 (en) | Parallel and scalable computation of strongly connected components in a circuit design | |
US20220327266A1 (en) | Generating a reduced block model view on-the-fly | |
US20230083003A1 (en) | Optical path tracing in an optical circuit design | |
KR20240014460A (ko) | 회로 설계에서 강하게 접속된 컴포넌트들의 병렬 및 확장가능한 계산 |
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 |