CN113971383A - 分布式静态时序分析 - Google Patents
分布式静态时序分析 Download PDFInfo
- Publication number
- CN113971383A CN113971383A CN202110846428.8A CN202110846428A CN113971383A CN 113971383 A CN113971383 A CN 113971383A CN 202110846428 A CN202110846428 A CN 202110846428A CN 113971383 A CN113971383 A CN 113971383A
- Authority
- CN
- China
- Prior art keywords
- cone
- topology
- logic
- information
- timing
- 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/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/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- 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
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本公开涉及使用基于结构的自对齐并行分区的存储高效可扩展分布式静态时序分析。一种方法包括:从电路设计的文件中提取与约束相关联的信息和时钟信息;基于针对电路设计的两个或更多个切分中的切分提取出的信息,确定拓扑锥;基于所述拓扑锥,对所述两个或更多个切分中的切分执行时序分析。所述拓扑锥包括与电路设计的两个或更多个切分中的切分相关联的对象。
Description
相关申请的交叉引用
本申请根据35U.S.C.于2020年7月24日提交的美国临时专利申请第63/056112号第119(e)条,出于所有目的,通过引用将其全部并入本文。
技术领域
本公开涉及分布式静态时序分析。具体地,本公开涉及使用基于结构的自对齐并行切分的存储高效可扩展分布式静态时序分析。
背景技术
静态时序分析(STA,static timing analysis)是在不执行仿真的情况下估计电路的预期时序的方法。在STA中,时序分析可以以独立于输入的方式进行,以确定设计中电路在所有可能的输入组合上的最坏情况延迟。除非STA结果如所期望的那样,否则用户不可以继续设计流程中的后续步骤。随着集成电路的复杂度和尺寸的日益增加,对设计执行STA既耗时又耗费资源。例如,对于拥有数十亿逻辑门的大型人工智能(AI,artificialintelligence)芯片,完成STA可能需要数天时间和具有大量物理存储的服务器。因此,在许多情况下,STA工具会越来越成为设计流程的主要瓶颈。
发明内容
在一个方面,提供了一种用于静态时序分析的方法。该方法包括:从电路设计的文件中提取与约束相关联的信息和时钟信息;基于针对电路设计的两个或更多个切分中的切分提取出的信息,确定拓扑锥;基于拓扑锥,对所述两个或更多个切分中的切分执行时序分析。拓扑锥包括与电路设计的两个或更多个切分中的切分相关联的对象。
在一个方面,提供了一种用于静态时序分析的系统。该系统包括:存储器,其存储指令;处理器,其与所述存储器耦合,并用于运行指令。指令在运行时使处理器:从电路设计的文件中提取与约束相关联的信息和时钟信息;基于针对电路设计的两个或更多个切分中的切分提取出的信息确定拓扑锥;基于拓扑锥,对所述两个或更多个切分中的切分执行时序分析。拓扑锥包括与电路设计的两个或更多个切分中的切分相关联的对象。
在一个方面,提供了一种用于静态时序分析的方法。该方法包括:访问电路设计的至少一个文件;将电路设计切分为两个或更多个切分;与至少另一计算机处理器共享与所述两个或更多个切分相关联的局部切分信息,并且接收与所述两个或更多个切分中的每个切分相关联的核时序更新数据。
附图说明
根据下面给出的具体实施方式并根据本公开实施方式的附图,本公开将会得到更全面的理解。附图用于提供对本公开实施方式的熟悉和理解,而并非将本公开的范围限制到这些特定实施方式。此外,附图不一定是按比例绘制的。
图1示出根据本公开实施方式的用于静态时序分析(STA,static timinganalysis)的处理。
图2A示出根据本公开实施方式的包括先行扫描的STA的处理。
图2B示出根据本公开另一实施方式的包括先行扫描的STA的处理。
图3示出根据本公开实施方式的拓扑锥。
图4示出根据本公开实施方式的扩充逻辑。
图5示出根据本公开实施方式的包括分布式先行扫描的STA的处理。
图6示出根据本公开实施方式的用于STA的方法的流程图。
图7示出根据本公开实施方式的示例性更新时序运行时间。
图8示出根据本公开实施方式的示例性的所用存储结果。
图9示出根据本公开实施方式的示例性性能结果。
图10描绘根据本公开一些实施方式的在集成电路的设计和制造期间使用的各种处理的流程图。
图11描绘可以运行本公开实施方式的示例计算机系统的图。
具体实施方式
本公开的各方面涉及使用基于结构的自对齐并行切分的存储器高效可扩展分布式静态时序分析(STA,static timing analysis)。STA是芯片设计流程的关键步骤之一。
将整个设计适配到用于STA的单台机器上可能会变得具有挑战性。作为一种变通办法,许多客户做出艰难的权衡,并采取一种有风险的途径,即在单台机器上只在设计的一部分中执行STA,然后在另一部分单独运行。使用这种递归技术,可以在不超过单台机器存储容量的情况下运行设计的STA。否则,全打平STA的存储需求非常高,以至于需要非常大型的机器运行STA。然而,这种流程是非常危险的,这是因为其可能错过一些关键路径,导致芯片故障。此外,STA的迭代次数增加以覆盖整个设计,这进一步对周转时间产生负面影响。本文描述的系统和方法将电路设计切分为两个或更多个切分。每个切分可以在单独的机器或设施上并行运行。本文描述的方法用于解决较慢的运行时间、较大的资源需求,并避免有风险的错综复杂的客户STA流程。不涉及全打平设计的其他STA流程(例如,HyperScale(超大规模)分析)也可受益于本文描述的方法。本文描述的系统和方法通过对电路设计进行切分,然后在多个设施上并行运行每个切分,从而对于时序分析具有更快的运行时间和更小的存储占用。
图1示出根据本公开实施方式的用于静态时序分析的处理。在处理100的102,主要以硬件描述语言(HDL,hardware description language)(例如,Verilog或VHDL(veryhigh-speed integrated circuit hardware description language,超高速集成电路硬件描述语言)文件)的形式读取设计。在104,设计与技术库链接(在此称为链接)。在106,创建与技术库链接的设计的早期时序图表示。例如,时序图表示可以是包括单元以及信息如何流过单元的有向图的可视化表示。在108,接收(例如,读入、获取)各种STA约束。STA约束从SDC(Synopsys Design Constraints,Synopsys设计约束)中读取,或者从包含时序约束命令的TCL文件中读取。例如,读入诸如时钟描述和时序异常之类的时序约束。在110,从寄生参数文件馈送物理信息(例如,单元的尺寸、形状、引脚位置)。例如,从寄生参数文件中读取寄生参数信息,然后将寄生参数信息注释到电路设计的网络中。寄生参数文件可以包括针对每个网的电阻和电容的网络。寄生参数信息可用于计算单元延迟和网络延迟。在112,使用寄生参数信息(在110读取),通过在106创建的时序图中传播寄生参数信息,并检查时序是否针对在108读取的约束得到满足,从而确定所有电路元件的延迟。在114,向用户提供各种报告命令。该报告包括有关设计时序的信息。例如,该信息可以包括设计中针对网络、引脚和单元中的全部或子集的时序路径。
本文描述的方法基于STA流程中非常早期的设计的结构,将全打平设计切分为多个重叠的切分(即,电路设计的一部分可以包括在两个或更多个切分中),使得大多数分析步骤是完全分布式和并行的。
切分是在流程的非常早期执行的,甚至在整个设计的和细化打平之前。切分是基于结构的,并与扫描时序约束并行。时序路径永远不会因为切分而中断。时序路径全部保存在单台工作机器中。设计切分是开销函数,这是因为其在STA流程中引入了额外的步骤。设计切分通常不存在于典型的STA流程(例如,图1所示的处理100)中。有多种方法可用于以最小分析流程开销提供高质量的切分。
在一个实施方案中,针对N个切分,可以用一主机器(主机)和N台工作机器(在此也称为工作机器或切分器)处理STA。如本领域普通技术人员所理解的,工作机器的数量(因此,切分的数量)可以基于用户说明书、计算源可用性或诸如此类。主机器可以有一个或多个配置。可以根据设施配置来配置主机器。在一个实施方案中,主机器可以配置为使用更少的存储器。在其他实施方案中,主机器可以有足够的信息用于在本地执行基本的STA报告命令,从而在主机器本地进行一些报告查询。一旦切分完成,就可以以工作机器之间传送最少的方式在工作机器上并行执行STA。在更新打平设计的时序后,可以从多台工作机器合并结果,也可以从每台工作机器分别获得结果。例如,如果查询存在于多个切分中的引脚的时序余量(slack),则从所有这些切分收集数据,并在合并数据后报告最悲观的值。早期切分导致大部分STA流程在简化的设计上工作。因此,由于STA的运行时间与电路设计的尺寸成比例,所以实现了更快的STA完成时间。
在一些实施方式中,对象可以出现在多个切分中。全局标识(id)空间可用于唯一标识每个对象。不同切分中具有不同本地标识的共享对象具有相同的全局id。另外,每个对象都有一个负责其时序数据的主切分。在一个实施方案中,基于名称对对象空间进行排序,以创建全局id。可以使用其他排序方法创建全局id。
因为较小的工作机器和重量轻的主机器,本文描述的方法还显著降低了对于大型设计的STA的峰值存储需求。这使得可以进行高效的基于云的计算。此外,客户可以在超大型十亿门设计上运行全打平STA,而无需采用有风险的迭代STA流程。此外,运行时间和存储优势可以随切分的数量而上升。增加切分的数量减少了单个切分尺寸,从而改善了运行时间和存储。
图2A示出根据本公开实施方式的用于包括先行扫描步骤的电路设计的STA流程的处理200。如本文前面所述,与图1的处理100相比,处理200具有更快的运行时间和更小的存储占用。
在202,开始向每个工作机器分配工作负荷。在一个实施方式中,可以在设计创建之后进行分配。此时既不创建时序图,也不读取任何时序约束。在另一个实施方式中,甚至在打平设计之前,也可以在折叠的网表上进行切分,这称为链接(例如,与技术库链接)。折叠的网表可允许用实例多次表示单个定义。
在204,设计被读取并与技术库链接。
在206,可以在主机器228中执行核切分,使得每个切分与其他切分相比可以具有相等或基本相等的逻辑量。在该模式下,由主机器228和工作机器230(230a…230n)执行切分。因此,切分是主机器228和工作机器230分别在206和212执行的共享步骤。然后,在208,主机器228可以与工作机器230传送局部切分信息。局部切分信息包括种子端点。种子端点可以表示存储设备的数据引脚或指代设计的任何主输出端口。在212,工作机器230完成切分。每个工作机器向后追踪以创建对应于其各自切分的逻辑锥。这种模式进一步改进了跨切分的平衡。在一个实施方式中,可以创建数百个切分,这是因为用于传送的切分开销可以忽略。
在210,由每个工作机器执行先行扫描。在图5中进一步描述先行扫描。在一个实施方案中,步骤210可以与步骤206并行执行。先行扫描捕获与约束、用于串扰分析的耦合逻辑和时钟信息相关联的数据。提取并存储由先行扫描获得的信息。在212,使用由先行扫描获得的信息完成切分。可以对与电路设计相关联的所有文件执行先行扫描,或者对与电路设计相关联的文件的一部分执行先行扫描作为局部先行扫描,如图5中进一步描述的。
每台工作机器都有主逻辑锥。主锥被称为拓扑锥。图3中示出示例性拓扑锥。为了正确地对拓扑锥执行STA,需要来自其他逻辑的额外数据。在一个实施方式中,可以通过传送从其他切分获得那些数据。但是跨切分的传送是昂贵的处理。因此,在另一实施方式中,执行逻辑扩充以减少切分间数据依赖性。图4中示出示例性扩充逻辑。然后基于扩充数据执行拓扑锥的计时。
在212,每个工作机器创建其执行STA的拓扑锥。在210提取出的信息用于完成拓扑锥的创建、扩充和子设计创建。一旦创建了拓扑锥和扩充逻辑,那么所有其他数据都被删除。例如,工作机器230a可以创建与其各自切分相关联的拓扑锥。然后,工作机器230a可以对拓扑锥执行STA。
在一些实施方式中,如图2B所示,在206由工作机器执行核切分(即,设计被切分)。可以以自对齐的方式创建切分,而无需在主机器228和工作机器230(230a、…、230n)之间进行任何传送。每个切分都知道完整的种子端点集。在自对齐模式下,每个切分都挑选一个种子端点子集,并从中创建切分。对于大多数大型设计,这种模式提供了跨切分逻辑的合理平衡。
图3示出根据本公开实施方式的拓扑锥300。拓扑锥300是工作者追踪的主要逻辑锥。每个计时端点可以是一个切分的一部分。计时端点可以表示存储设备的数据(D)引脚,或指代该设计的任何主输出端口。例如,触发器312的D引脚可以表示计时端点。拓扑锥300包括通过切分计时的计时端点集合中的捕获时钟锥306、一个或多个拓扑发射时钟锥304和拓扑数据锥302。
拓扑数据锥302可以包括从触发器312的D输入端扇入的逻辑。为时钟网络中的拓扑数据锥302中的每个序列单元确定拓扑发射时钟锥(反向遍历,back traversal)。例如,可以确定单元316的第一拓扑发射时钟锥304。可以确定单元318的第二拓扑发射时钟锥314。因此,拓扑发射时钟锥304、314表示用于触发器312的D输入端的发射时钟网络。此外,通过向后跟踪来确定触发器312的时钟引脚(CP)的拓扑捕获时钟锥306。拓扑捕获时钟锥306捕获触发器312的CP引脚上的数据。
在时序分析中可以使用表示串扰和噪声分析的额外数据。额外数据可以包括在拓扑锥300中。额外数据可以包括与串扰相关联的逻辑的一部分或全部。在一些实施方式中,额外数据可以传送到拓扑锥300。在一些实施方式中,与拓扑切分310相关联的一阶交叉耦合逻辑的浮空干扰源308(也称为非切分干扰源,并且还可以包括预浮空逻辑320)可以包括在拓扑锥300中。浮空干扰源可以指的是不直接或间接连接到任何拓扑逻辑的逻辑。干扰源可以通过一个或多个耦合电容器将串扰毛刺注入拓扑锥300的网络上。串扰毛刺可能影响网络中的时序计算(例如,减小或增大延迟)。一阶干扰源可能在网络上有显著的串扰。网络的二阶干扰源可影响一阶干扰源(例如,干扰一阶干扰源的转换波形)。在一些方面,二阶干扰源不保存在切分中。在一些方面,浮空干扰源308的拓扑锥(例如,单元的拓扑发射时钟锥)可以不包括在拓扑锥300中。
图4示出根据本公开的实施方式的拓扑和扩充逻辑(即,对拓扑部分执行适当的STA可能需要的除拓扑锥以外的任何额外逻辑)示意图400。扩充逻辑包括:浮空阶段、浮空阶段之前的称为预浮空阶段的一个阶段、连接到某个拓扑引脚的称为接收方阶段的额外阶段。对于某些拓扑阶段,接收方阶段可用于适当的延迟计算。
在一些实施方式中,逻辑412e、412f和412g表示图3的拓扑数据锥302。扩充逻辑(浮空和预浮空)被添加到所需的逻辑。寄存器410可以表示单元316。逻辑412d可以表示拓扑发射时钟锥304。逻辑412a、412b、412c和412h表示触发器408的拓扑捕获时钟锥306。逻辑406a和406b可以表示浮空干扰源308。在一些实施方式中,浮空干扰源406b的逻辑404a和404b可以包括在设计中。逻辑404a和404b可以称为预浮空逻辑。在一些实施方式中,拓扑数据锥302的接收方的第一阶段可以包括在拓扑锥中(例如,逻辑402a和402b)。
在一个实施方案中,在设计中只保留拓扑逻辑,而不是保留所有这种扩充逻辑。在这种情况下,额外的时序数据可以从其他工作机器传送而不是执行扩充。传送的数据可用于执行拓扑锥的适当时序分析。
参考图2,在214,为简化的设计创建早期时序图表示。例如,可以创建切分的时序图。该时序图可以在216读取约束之后进一步得到修改。
在216,为与切分相关联的电路设计读取和注释各种STA约束。例如,可以获得时序和功能约束。在218,从寄生参数文件馈送物理信息。物理信息可以包括与每个网络的电容和电阻相关联的参数。约束文件和寄生参数文件都用于完整的设计,但在切分中,只有与简化的设计相关联的部分被注释,其余部分被丢弃。
在220,使用在216和218读取的约束信息和寄生参数信息来执行STA的核。每个工作者对他们所拥有的设计的拓扑部分执行STA。在核时序更新期间,工作机器230和主机器228在222多次通信,以收集数据获得准确的时序。在222,使用寄生参数(其在218读取出),通过在214创建的时序图中传播该寄生参数并检查时序是否针对在216读取出的约束得到满足,从而确定所有电路元件的延迟。
在224,向用户提供各种报告命令。该报告包括有关设计时序的信息。在226,报告命令的一部分可以被传送到主机器228和/或工作机器230。
应当理解,图2的流程图的以上步骤中的一些可以按照与图中所示和描述的顺序不同的顺序或次序来运行或执行。此外,以上步骤中的一些可以在其他步骤之前很好地执行,或者可以基本上同步或并行地运行或执行。
图5示出根据本公开实施方式的包括分布式先行扫描步骤以进一步减少开销的STA流程的处理500。
在502,工作负载的分配开始于工作者之间。在一个实施方式中,可以在设计创建之后进行分配。在一个实施方式中,此时既不创建时序图,也不读取任何时序约束。在另一实施方式中,甚至在打平设计之前,也可以在折叠的网表上进行切分,这被称为链接。
在504,设计被读取并与技术库链接。
在506,执行核切分(即,设计被切分)。在主机器528和工作机器530(530a、…、530n)之间进行最小传送或不进行传送的情况下以自动对齐的方式创建切分。然后,在步骤508,主机器528可以与工作机器530传送局部切分信息。局部切分信息包括种子端点。
在510,由每个工作机器530执行局部先行扫描。在各工作机器530和共享数据之间划分先行扫描,这可提高较大设计的效率。每个工作机器只对与设计相关联的文件(约束文件、寄生参数文件、设计文件)的一部分执行先行扫描,而不是如先行扫描210中所描述的与设计相关联的所有文件。在步骤528,在工作机器530之间共享先行扫描数据。例如,在使用四个工作机器的系统中,第一工作机器可以从第二、第三和第四工作机器接收数据。在先行扫描期间,识别并解析寄生参数文件,以从寄生参数文件的一部分确定关于工作机器530之间的耦合网络的知识。(例如,从拓扑锥)提取所有时钟和生成的时钟源引脚。时钟是主要的设计对象,其需要跨切分保持一致。提取可影响时序的约束,即使不存在于拓扑锥中(例如,外部延迟,数据到数据的检查)。
在512,工作机器530完成切分。每个工作机器向后追踪以创建对应于其各自切分的逻辑锥。这种模式进一步改进了跨切分的平衡。
在512,每个工作机器530创建相应的工作机器530将计时的拓扑锥。在510提取的信息和在528接收的数据用于创建拓扑锥、扩充和子设计创建。一旦创建了拓扑锥和扩充逻辑,那么所有其他数据都被删除。
在514,为简化的设计创建早期时序图表示。
在516,为简化的设计读入各种STA约束。
在518,从寄生参数文件输入物理信息。
在520,执行核时序更新。在核时序更新期间,工作机器530和主机器528可以在522进行通信,以收集数据从而获得准确的时序。
在524,向用户提供各种报告命令。该报告包括有关设计时序的信息。在526,可以传送命令的一部分。
图6示出根据本公开实施方式的用于STA的方法600的流程图。
在602,电路设计可被切分为两个或更多个切分。
在604,执行电路设计的文件的先行扫描,以提取与约束相关联的信息和时钟信息。在一些实施方式中,可以通过从文件中识别寄生参数文件、提取时钟信息和共享提取出的信息,从而执行先行扫描。在一些实施方式中,每个工作机器可以对文件的一部分执行局部先行扫描。先行扫描数据可以在工作机器之间共享。
在606,基于针对两个或更多个切分中的每个切分提取出的信息来确定拓扑锥。在一些方面,拓扑锥可以包括与两个或更多个切分的每个切分相关联的对象(时钟、单元、网络、存储设备)。
在608,基于拓扑锥,对两个或更多个切分中的每个切分执行核时序更新(时序分析)。
应当理解,图6的流程图的以上步骤中的一些可以按照与图中所示和描述的顺序不同的顺序或次序来运行或执行。此外,以上步骤中的一些可以在其他步骤之前很好地执行,或者可以基本上同步或并行地运行或执行。
这里描述的方法和系统提供了许多改进。例如,对于超大型设计情况下的STA,时序更新比作为单个单元分析打平时快4-10倍,比打平存储需求小2-3倍(主机器)和3-6倍(工作机器),并且获得了与打平100%匹配的结果质量(QoR)。
图7示出根据本公开实施方式的示例性更新时序运行时间。图表700示出各种切分组合的时序更新相对于打平时序更新运行时间(即,图1的步骤112相比于图2中的步骤220)的运行时间x因子。x轴对应于切分的数量。y轴对应于更新时序运行时间x因子。如图表700所示,运行时间x因子与工作机器的增加而增高。图表700对应于具有182M逻辑门的电路。用于打平的STA在具有16个核的处理器上实施。分布式分析包括1个主机器(主)和N个工作机器,每个以16个核运行。例如,对于N=8,更新时序的减少是6.68。
图8示出根据本公开实施方式的用于工作机器的存储数量的减少。图表800示出图7中描述的设计的完整STA流程的存储减少x因子。x轴对应于切分的数量。y轴对应于全流程使用的存储减少x因子。
图9示出根据本公开实施方式的示例性性能结果。图形900示出具有不同设计风格的各种设计利用本文描述的方法的分布式STA运行的结果。设计A包括63M逻辑门。设计B包括182M逻辑门。设计C包括136M逻辑门。设计D包括86M逻辑门。设计E包括404M逻辑门。打平STA在16个核上运行。本文描述的分布式方法运行在主机器和8个工作机器上,每个机器以16个核运行。x轴对应于设计。y轴对应于图1的步骤112相比于图2中的步骤220的运行时间x因子。
图10示出在诸如集成电路的制造物品的设计、验证和制造期间用于转换和验证表示集成电路的设计数据和指令的示例性处理集1000。这些处理中的每一个都可以作为多个模块或操作进行结构化和启用。术语“EDA”指的是术语“电子设计自动化(ElectronicDesign Automation)”。这些处理开始于利用设计者提供的信息创建产品构思1010,该信息被转换以创建使用了一组EDA处理1012的制品。当设计最终完成时,设计被流片1034,这是当集成电路的布线图(例如,几何图案)被发送到制造厂以制造掩模组时,掩模组随后被用于制造集成电路。在流片之后,制造半导体管芯1036,并且进行封装和组装处理1038,以产生成品集成电路1040。
电路或电子结构的规格的范围可以从低级晶体管材料版图到高级描述语言。高级表示可用于通过使用诸如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera之类的硬件描述语言('HDL')来设计电路和系统。HDL描述可以转换为逻辑级寄存器传输级('RTL')描述、门级描述、版图级描述或掩码级描述。每个较低的表示级别(即更详细的描述)向设计描述中添加更多有用的细节,例如,包含描述的模块的更多细节。更详细描述的较低级别的表示可以由计算机生成、从设计库得到或由另一设计自动化处理创建。用于指定更详细描述的较低级表示语言的规范语言的示例是SPICE,其用于具有许多模拟组件的电路的详细描述。每个表示级别上的描述都可以由该层的相应工具(例如,形式验证工具)使用。设计处理可以使用图10中描绘的次序。所描述的处理可以由EDA产品(或工具)启用。
在系统设计1014期间,指定要制造的集成电路的功能。设计可以针对诸如功耗、性能、面积(物理和/或代码行)以及成本降低等所需特征进行优化。在此阶段可将该设计切分到不同类型的模块或组件。
在逻辑设计和功能验证1016期间,以一种或多种描述语言指定电路中的模块或组件,并针对功能准确性检查规范。例如,可以验证电路的组件以生成与所设计的电路或系统的规格要求相匹配的输出。功能验证可以使用仿真器和诸如测试台生成器、静态HDL检查器和形式验证器之类的其他程序。在一些实施方式中,使用被称为“模拟器”或“原型系统”的特殊组件系统来加速功能验证。
在用于测试的合成和设计1018期间,HDL代码被转换为网表。在一些实施方式中,网表可以是这样的图形结构:其中图形结构的边表示电路的组件,并且图形结构的节点表示组件如何互连。HDL代码和网表都是分层的制品,其可供EDA产品用于验证集成电路在被制造时按照指定的设计执行。可以针对目标半导体制造技术优化网表。另外,可以测试成品集成电路以验证集成电路满足规范的要求。
在网表验证1020期间,针对与时序约束的一致性以及与HDL代码的对应性检查网表。在设计规划1022期间,为时序和顶层布线构建和分析集成电路的总体布图规划。
在版图或物理实现1024期间,发生物理布局(诸如晶体管或电容器之类的电路组件的定位)和布线(电路组件通过多个导体的连接),并且可以执行从库中选择单元以使得可以进行特定逻辑功能。如本文所使用的,术语“单元”可以指定提供布尔逻辑功能(例如,与、或、非、异或)或存储功能(例如,触发器或锁存器)的晶体管、其他组件和互连的集合。如本文所使用的,电路“块”可以指两个或更多个单元。单元和电路块都可以被称为模块或组件,并且既可以实现为物理结构也可以在仿真中实现。为所选单元(其基于“标准单元”)指定参数,例如尺寸,并使得可在数据库中访问该参数,以供EDA产品使用。
在分析和提取1026期间,在版图级别验证电路功能,这允许优化版图设计。在物理验证1028期间,检查版图设计以确保制造约束是正确的,例如DRC约束、电约束、光刻约束,并且确保电路功能与HDL设计规范匹配。在分辨率增强1030期间,转换版图的几何形状以改进如何制造电路设计。
在流片(tape-out)期间,创建数据以便(如果适当的话,在应用光刻增强之后)使用数据生产光刻掩模。在掩模数据准备1032期间,使用“流片”数据生产光刻掩模,光刻掩模用于生产成品集成电路。
计算机系统(例如,图11的计算机系统1100)的存储子系统可用于存储:本文所述的一些或全部EDA产品所使用的程序和数据结构,以及用于库和使用该库的物理与逻辑设计的单元的开发的产品所使用的程序和数据结构。
图11示出计算机系统1100的示例机器,在该计算机系统1100中,可执行用于使机器执行本文讨论的方法中的任何一个或多个的指令集。在替代实施方案中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其他机器。机器可以在客户机-服务器网络环境中以服务器或客户机的身份运行,在对等(或分布式)网络环境中作为对等机运行,或者在云计算基础设施或环境中作为服务器或客户机运行。
机器可以是个人计算机(PC,personal computer)、平板PC、机顶盒(STB,set-topbox)、个人数字助理(PDA,Personal Digital Assistant)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够执行指定由该机器采取的动作的指令集(顺序的或以其他方式)的任何机器。此外,虽然示出了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文讨论的任何一个或多个方法的任何机器集合。
示例计算机系统1100包括经由总线1130彼此通信的处理设备1102、主存储器1104(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)之类的动态随机存取存储器(DRAM)、静态存储器1106(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1118。
处理设备1102表示一个或多个处理器,例如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实现其他指令集的处理器,或者实现指令集组合的处理器。处理设备1102还可以是一个或多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备1102可以配置为运行用于执行本文描述的操作和步骤的指令1126。
计算机系统1100可进一步包括网络接口设备1108,以通过网络1120进行通信。计算机系统1100还可以包括视频显示单元1110(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1112(例如,键盘)、光标控制设备1114(例如,鼠标)、图形处理单元1122、信号生成设备1116(例如,扬声器)、图形处理单元1122、视频处理单元1128和音频处理单元1132。
数据存储设备1118可以包括机器可读存储介质1124(也称为非暂时性计算机可读介质),其存储一组或多组指令1126或实现本文描述的方法或功能中任何一个或多个的软件。在计算机系统1100执行指令1126期间,指令1126还可以完全或至少部分地驻留在主存储器1104和/或处理设备1102内,所述主存储器1104和处理设备1102也构成机器可读存储介质。
在一些实施方案中,指令1126包括用于实施对应于本公开的功能的指令。虽然机器可读存储介质1124在示例实施方案中被示为单个介质,但术语“机器可读存储介质”应被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被理解为包括如下这样的任何介质:其能够存储或编码供机器运行的指令集,并且使机器和处理设备1102执行本公开任何一个或多个方法。因此,术语“机器可读存储介质”应被理解为包括但不限于固态存储器、光学介质和磁介质。
已经在关于计算机存储器中数据位的运算的算法和符号表示方面呈现了前面的具体实施方式的某些部分。这些算法描述和表示是数据处理技术领域的技术人员最有效地将其工作的实质传达给本领域的其他技术人员所使用的方式。算法可以是导致期望结果的一系列操作。该操作是要求物理量的物理操纵的那些操作。这些量可以采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这样的信号可以称为比特、值、元素、符号、字符、术语、数字等。
然而,应该记住,所有这些和类似的术语都是与适当的物理量相关联的,并且只是应用于这些量的方便的标签。除非从本公开明确地特别另外说明,否则应理解,在整个说明书中,某些术语指的是计算机系统或类似的电子计算设备的动作和处理,该计算机系统或类似的电子计算设备操纵并将表示为计算机系统寄存器和存储器内的物理(电子)量的数据转换为类似表示为计算机系统存储器或寄存器或其他此类信息存储设备内的物理量的其他数据。
本公开还涉及用于执行本文的操作的装置。该装置可以为预定目的而特别构造,或者其可以包括由存储在计算机中的计算机程序选择性地启用或重新配置的计算机。这种计算机程序可以存储在计算机可读存储介质中,例如但不限于每个都耦合到计算机系统总线的任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适合存储电子指令的任何类型的介质。
本文提出的算法和显示内在不涉及任何具体计算机或其他装置。各种其他系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专用的装置来执行该方法是方便的。此外,本公开不参考任何特定编程语言来描述。要理解,可以使用各种编程语言来实施本文所述的本公开的教导。
本公开可提供为这样的计算机程序产品或软件:其可包括存储有指令的机器可读介质,该指令可用于对计算机系统(或其它电子设备)进行编程以执行根据本公开的处理。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备之类的机器(例如,计算机)可读存储介质。
在以上公开中,已经参考本公开的具体示例实施方案描述了本公开的实施方案。显然,在不脱离所附权利要求中阐述的本公开的实施方案的更广泛精神和范围的情况下,可以对其进行各种修改。在本公开涉及单数时态的一些元件的情况下,可以在附图中绘制一个以上的元件,并且用相同的数字标记相同的元件。因此,本公开和附图应被认为是说明性意义而不是限制性意义。
Claims (20)
1.一种用于静态时序分析的方法,所述方法包括:
从电路设计的文件中提取与约束相关联的信息、以及时钟信息;
基于针对所述电路设计的两个或更多个切分中的切分提取出的信息,通过至少一个计算机处理器确定拓扑锥,所述拓扑锥包括与所述电路设计的两个或更多个切分中的切分相关联的对象;以及
基于所述拓扑锥,对所述两个或更多个切分中的所述切分执行时序分析。
2.根据权利要求1所述的方法,进一步包括:
将全局标识和本地标识与被包括在多个切分中的对象相关联。
3.根据权利要求2所述的方法,进一步包括:
将所述对象与主切分相关联;以及
基于按所述电路设计的对象的名称的排序,将所述全局标识分配给所述对象。
4.根据权利要求1所述的方法,其中,所述提取包括执行局部先行扫描,所述局部先行扫描包括:
从所述文件的一部分提取所述时钟信息、所述约束或寄生参数中的一个或更多个;以及
与至少另一计算机处理器共享所提取的信息。
5.根据权利要求1所述的方法,其中,所述提取包括执行先行扫描,所述先行扫描包括:
从所述文件提取所述约束和寄生参数。
6.根据权利要求1所述的方法,进一步包括:在切分所述电路设计之后或之前,链接所述电路设计。
7.根据权利要求6所述的方法,进一步包括:
针对时序约束,与所述切分同时扫描所述电路设计,其中,所述切分包括:基于所述设计的结构重叠切分。
8.根据权利要求1所述的方法,其中,所述拓扑锥包括与对每个序列单元进行钟控相关联的逻辑、从对象的输入扇入的逻辑、以及与在所述对象的时钟引脚捕获的数据相关联的逻辑。
9.根据权利要求1所述的方法,其中,确定所述拓扑锥包括:
增加一个或更多个浮空阶段逻辑和预浮空阶段逻辑,其中,浮空阶段逻辑是第一阶段的干扰源,预浮空阶段逻辑是所述第一阶段之前的第二阶段的干扰源。
10.根据权利要求1所述的方法,进一步包括:
在执行时序分析的同时,从至少另一计算机处理器接收与所述两个或更多个切分中的另一切分的时序分析相关联的数据。
11.根据权利要求1所述的方法,进一步包括:
基于从所述两个或更多个切分中的另一切分接收到的数据,对所述拓扑锥进行计时。
12.根据权利要求1所述的方法,进一步包括:
对所述电路设计执行逻辑扩充,以获得用于所述切分的扩充数据;以及
基于所述扩充数据,对所述拓扑锥进行计时。
13.一种系统,包括:
存储器,存储指令;以及
处理器,与所述存储器耦合,并且执行所述指令,所述指令在被执行时使所述处理器:
从电路设计的文件提取与约束相关联的信息、以及时钟信息,
基于针对所述电路设计的两个或更多个切分中的切分提取出的信息确定拓扑锥,所述拓扑锥包括与所述切分相关联的对象,以及
基于拓扑锥,对所述切分执行时序分析。
14.根据权利要求13所述的系统,其中,所述处理器进一步配置为:
将全局标识和本地标识与被包括在多个切分中的对象相关联。
15.根据权利要求13所述的系统,其中,所述提取包括执行局部先行扫描,所述局部先行扫描包括:
从所述文件的一部分提取所述时钟信息、所述约束和寄生参数中的一个或更多个;以及
与至少另一计算机处理器共享所提取的信息。
16.根据权利要求13所述的系统,其中,所述提取包括执行先行扫描,所述先行扫描包括:
从所述文件提取所述约束和寄生参数。
17.根据权利要求13所述的系统,其中,所述拓扑锥包括与对每个顺序单元进行钟控相关联的逻辑、从对象的输入扇入的逻辑、以及与在所述对象的时钟引脚捕获的数据相关联的逻辑。
18.根据权利要求13所述的系统,其中,所述处理器进一步配置为:
基于从所述两个或更多个切分中的另一切分接收到的数据,对所述拓扑锥进行计时。
19.根据权利要求13所述的系统,其中,所述处理器进一步配置为:
对所述电路设计执行逻辑扩充,以获得用于所述切分的扩充数据;以及
基于所述扩充数据,对所述拓扑锥进行计时。
20.一种用于静态时序分析的方法,所述方法包括:
由至少一个计算机处理器将电路设计切分为两个或更多个切分;
由所述至少另一计算机处理器,和至少另一计算机处理器共享与所述两个或更多个切分中的切分相关联的局部切分信息,其中,所述局部切分信息包括种子端点;以及
由所述至少一个计算机处理器,接收与所述两个或更多个切分中的每个切分相关联的时序分析信息,其中,所述至少另一计算机处理器基于切分的拓扑锥执行所述切分的时序分析。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063056112P | 2020-07-24 | 2020-07-24 | |
US63/056,112 | 2020-07-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113971383A true CN113971383A (zh) | 2022-01-25 |
Family
ID=79586354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110846428.8A Pending CN113971383A (zh) | 2020-07-24 | 2021-07-26 | 分布式静态时序分析 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11922106B2 (zh) |
CN (1) | CN113971383A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114742001A (zh) * | 2022-03-16 | 2022-07-12 | 南京邮电大学 | 一种基于多fpga的系统静态时序分析方法 |
CN116029239A (zh) * | 2022-12-30 | 2023-04-28 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统、计算机可读取介质 |
CN116090382A (zh) * | 2023-03-28 | 2023-05-09 | 深圳鸿芯微纳技术有限公司 | 时序报告生成方法和设备 |
CN116090383A (zh) * | 2022-12-27 | 2023-05-09 | 广东高云半导体科技股份有限公司 | 实现静态时序分析的方法、装置、计算机存储介质及终端 |
CN116774777A (zh) * | 2023-08-16 | 2023-09-19 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11514218B1 (en) * | 2021-07-30 | 2022-11-29 | Cadence Design Systems, Inc. | System and method for performing static timing analysis of electronic circuit designs using a tag-based approach |
CN116306415B (zh) * | 2022-12-30 | 2023-10-20 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6202192B1 (en) | 1998-01-09 | 2001-03-13 | International Business Machines Corporation | Distributed static timing analysis |
US8261220B2 (en) * | 2009-11-30 | 2012-09-04 | Synopsys, Inc. | Path preserving design partitioning with redundancy |
-
2021
- 2021-07-23 US US17/383,869 patent/US11922106B2/en active Active
- 2021-07-26 CN CN202110846428.8A patent/CN113971383A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114742001A (zh) * | 2022-03-16 | 2022-07-12 | 南京邮电大学 | 一种基于多fpga的系统静态时序分析方法 |
CN114742001B (zh) * | 2022-03-16 | 2023-08-29 | 南京邮电大学 | 一种基于多fpga的系统静态时序分析方法 |
CN116090383A (zh) * | 2022-12-27 | 2023-05-09 | 广东高云半导体科技股份有限公司 | 实现静态时序分析的方法、装置、计算机存储介质及终端 |
CN116029239A (zh) * | 2022-12-30 | 2023-04-28 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统、计算机可读取介质 |
CN116029239B (zh) * | 2022-12-30 | 2023-09-05 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统、计算机可读取介质 |
CN116090382A (zh) * | 2023-03-28 | 2023-05-09 | 深圳鸿芯微纳技术有限公司 | 时序报告生成方法和设备 |
CN116774777A (zh) * | 2023-08-16 | 2023-09-19 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
CN116774777B (zh) * | 2023-08-16 | 2023-11-10 | 沐曦集成电路(上海)有限公司 | 芯片时钟数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
US20220027542A1 (en) | 2022-01-27 |
US11922106B2 (en) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922106B2 (en) | Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning | |
US11994979B2 (en) | Smart regression test selection for software development | |
KR20220148913A (ko) | 초기 단계 회로 설계에서 기계 학습 기반 메트릭 예측 | |
US11836425B2 (en) | Engineering change orders with consideration of adversely affected constraints | |
US20230260591A1 (en) | Transforming local wire thru resistances into global distributed resistances | |
Yue et al. | Scalability and generalization of circuit training for chip floorplanning | |
US20220391566A1 (en) | Machine learning models for predicting detailed routing topology and track usage for accurate resistance and capacitance estimation for electronic circuit designs | |
US11966678B2 (en) | Modelling timing behavior using augmented sensitivity data for physical parameters | |
US20220058328A1 (en) | Synthesis placement bounds based on physical timing analysis | |
US11734489B2 (en) | Circuit layout verification | |
CN115587560A (zh) | 用于分布式引擎的运行时和存储器高效的属性查询处理 | |
US11467851B1 (en) | Machine learning (ML)-based static verification for derived hardware-design elements | |
US11022634B1 (en) | Rail block context generation for block-level rail voltage drop analysis | |
US11120184B2 (en) | Satisfiability sweeping for synthesis | |
US12014127B2 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
US20240232486A1 (en) | Using surrogate netlists for variation analysis of process variations | |
US11914939B1 (en) | Clock re-convergence pessimism removal through pin sharing during clock tree planning | |
US12032894B2 (en) | System and method for synchronizing net text across hierarchical levels | |
US11868694B1 (en) | System and method for optimizing emulation throughput by selective application of a clock pattern | |
US11087059B2 (en) | Clock domain crossing verification of integrated circuit design using parameter inference | |
US20220327266A1 (en) | Generating a reduced block model view on-the-fly | |
US20210390244A1 (en) | System and Method for Synchronizing Net Text Across Hierarchical Levels | |
US20230306180A1 (en) | Static timing analysis of multi-die three-dimensional integrated circuits | |
US20220391568A1 (en) | Deterministic netlist transformations in a multi-processor parallel computing system | |
US20220398372A1 (en) | Dynamic clock tree planning using feedtiming cost |
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 |