首页> 中国专利> 用于电路设计中的静态时序分析的方法和系统

用于电路设计中的静态时序分析的方法和系统

摘要

本公开内容涉及用于电路设计中的静态时序分析的方法和系统。在一个实施例中,公开了一种用于在电路设计的静态时序分析中计算路径延迟的方法,包括:确定所述电路设计的路径中的第一器件与第二器件的连接关系;基于所述连接关系生成与所述第一器件和所述第二器件相关联的延迟约束,所述延迟约束规定所述第一器件的第一器件延迟与所述第二器件的第二器件延迟之间的相关性;以及使用符合延迟约束的所述第一器件延迟和所述第二器件延迟来计算所述路径的路径延迟。还描述了相应的系统。

著录项

  • 公开/公告号CN105701266A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201410712156.2

  • 发明设计人 刘洋;欧鹏;牛佳;戴红卫;

    申请日2014-11-28

  • 分类号G06F17/50(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人酆迅

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-18 15:45:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-07

    授权

    授权

  • 2016-07-20

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20141128

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

技术领域

本发明的实施例总体上涉及电路设计,并且特别涉及用于电路 设计中的静态时序分析的方法和系统。

背景技术

静态时序分析(StaticTimingAnalysis,STA)是电路设计中的 重要部分。已经开发了大量用于STA的工具和方法。STA过程的主 要目的是通过分析路径的延迟,计算出电路设计的各项时序性能指 标,以发现违反时序要求的路径。计算电路设计中各个路径的路径 延迟(pathdelay)是STA的基础。路径包括一个或多个器件,例如 门(gate)。路径的延迟可以基于路径中的器件延迟来确定。器件延 迟可以被事先确定和存储,例如存储在标准单元库(StandardCell Library)中,并且可在STA过程中被访问和使用。

已知的是,器件延迟通常随着不同的输入模式/条件而变化。以 三输入异或门(XOR3)为例,其第一输入端到输出端的延迟通常与 第二输入端和第三输入端的输入值相关。具体地,在第二输入端和 第三输入端的输入模式为“11”(即,这两个输入值均为“1”)、“10” 或“01”(即,这两个输入值中一个为“0”、另一个为“1”)以及输入模 式“00”(即,这两个输入值均为“0”)的情况下,第一输入端到输出 端的延迟通常是不同的。对于其他电路器件同样存在这种情况。

在传统的STA方法中,路径延迟是通过将路径中的各个器件的 最大器件延迟相加而获得的。换言之,每个个体器件都被假设达到 最大器件延迟。这样得到的路径延迟随后被用来确定路径是否满足 时序需要。然而,基于最大器件延迟的传统STA方法所得到的路径 延迟往往是“悲观的”。也就是说,路径的实际最大延迟可能小于所 计算的路径延迟。例如,在某些情况下,路径中的某些器件不可能 同时达到最大器件延迟。悲观的路径延迟计算影响了STA的准确性, 并且可能指示不会现实发生的时序违例。为此,将要花费不必要的 努力对电路设计进行优化,并且可能增加运行时间和晶片尺寸。

发明内容

总体上,本发明的实施例提出一种用于电路设计中的静态时序 分析的技术方案。

在本发明的一个方面,提供一种用于在电路设计的静态时序分 析STA中计算路径延迟的方法。所述方法包括:确定所述电路设计 的路径中的第一器件与第二器件的连接关系;基于所述连接关系生 成与所述第一器件和所述第二器件相关联的延迟约束,所述延迟约 束规定所述第一器件的第一器件延迟与所述第二器件的第二器件延 迟之间的相关性;以及使用符合延迟约束的所述第一器件延迟和所 述第二器件延迟来计算所述路径的路径延迟。

在本发明的另一方面,一种用于在电路设计的静态时序分析 STA中计算路径延迟的系统。所述系统包括:连接关系确定单元, 被配置为确定所述电路设计的路径中的第一器件与第二器件的连接 关系;延迟约束生成单元,被配置为基于所述连接关系生成与所述 第一器件和所述第二器件相关联的延迟约束,所述延迟约束规定所 述第一器件的第一器件延迟与所述第二器件的第二器件延迟之间的 相关性;以及路径延迟计算单元,被配置为使用符合延迟约束的所 述第一器件延迟和所述第二器件延迟来计算所述路径的路径延迟。

根据本发明的实施例,可以利用器件中的连接关系生成相连器 件的延迟约束。根据这样的延迟约束,可以确定在实际中不可能出 现的器件延迟(例如,最大器件延迟)或其配对。由此,可以在计 算路径延迟时将不可能出现的器件延迟排除在考虑范围之外。以此 方式,可以有效地消除路径延迟计算中的悲观性,从而提高STA的 准确性,进而改善时序优化的效率。本发明的其他特征和优点将通 过下文描述而变得容易理解。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本 发明的上述以及其它目的、特征和优势将变得更加明显其中:

图1示出了适于用来实现本发明实施例的示例性计算机系统/服 务器的示意性框图;

图2示出了电路设计的路径中具有共同输入端的两个器件的示 意图;

图3示出了根据本发明实施例的用于在STA中计算路径延迟的 方法的示意性流程图;

图4示出了可用于存储器件延迟信息的标准单元库的一部分的 示意图;

图5示出了电路设计的路径中与相同的寄存器相关的两个器件 的示意图;

图6示出了电路设计的路径中的具有信号截断可能的两个器件 的示意图;

图7示出了根据本发明一个实施例的用于将基于连接关系的延 迟约束与STA结合使用的方法的示意性流程图;以及

图8示出了根据本发明实施例的用于在STA中计算路径延迟的 系统的示意性框图。

在附图中,相同或相似的标号被用来表示相同或相似的元素。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附 图中显示了本公开的优选实施方式,然而应该理解,可以以各种形 式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这 些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/ 服务器12的方框图。图1显示的计算机系统/服务器12仅仅是一个 示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图1所示,计算机系统/服务器12以通用计算设备的形式表现。 计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理 器或者处理单元16,系统存储器28,连接不同系统组件(包括系统 存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或 者存储器控制器,外围总线,图形加速端口,处理器或者使用多种 总线结构中的任意总线结构的局域总线。举例来说,这些体系结构 包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及 外围组件互连(PCI)总线。

计算机系统/服务器12典型地包括多种计算机系统可读介质。这 些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包 括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介 质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计 算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失 性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用 于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘 驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁 盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘 (例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。 在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与 总线18相连。存储器28可以包括至少一个程序产品,该程序产品 具有一组(例如至少一个)程序模块,这些程序模块被配置以执行 本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以 存储在例如存储器28中,这样的程序模块42包括—但不限于—操 作系统、一个或者多个应用程序、其它程序模块以及程序数据,这 些示例中的每一个或某种组合中可能包括网络环境的实现。程序模 块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如 键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用 户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计 算机系统/服务器12能与一个或多个其它计算设备进行通信的任何 设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/ 输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过 网络适配器20与一个或者多个网络(例如局域网(LAN),广域网 (WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配 器20通过总线18与计算机系统/服务器12的其它模块通信。应当明 白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件 和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单 元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储 系统等。

下面将详细描述本发明实施例的机制和原理。除非特别声明, 在下文和权利要求中使用的术语“基于”表示“至少部分地基于”。术语 “包括”表示开放性包括,即“包括但不限于”。术语“多个”表示“两个 或更多”。术语“一个实施例”表示“至少一个实施例”。术语“另一实施 例”表示“至少一个另外的实施例”。此外,在此使用的“第一”、“第二” 等术语仅仅是为了区分所指代的对象,并未意在施加顺序、时间、 空间或者任何其他方面的限制。其他术语的定义将在下文描述中给 出。

为了更清楚地阐释本发明的机制和原理,下面将首先分析传统 STA中的问题和缺陷。在传统的STA中,所分析的路径中的每个器 件都被假设达到最大器件延迟。而后,通过按照连接顺序将这些器 件的最大器件延迟相加,可以获得对路径延迟的估计。但是,如上 文所述,以这种方式获得的路径延迟往往具有明显的“悲观性”。发 明人通过大量实验和研究发现:路径中彼此相连的器件的器件延迟 之间彼此约束,而这种约束关系转而影响整条路径的路径延迟。目 前,在估计路径延迟时,没有将种器件间的约束关系纳入考虑。

如图2所示,在电路设计的一条路径200中,器件210和220 相互连接。假设根据标准单元库确定:器件210达到其最大器件延 迟的条件是其输入端212的输入值为“1”,而器件220达到其最大器 件延迟的条件是其输入端222的输入值为“0”。然而,在路径200中, 器件210的输入端212与器件220的输入端220连接至共同的引线 230。在这种情况下,不可能出现第一器件210的输入端212接收输 入值“1”而第二器件220的输入端222接收输入值“0”的情况。因此, 第一器件210和220不会同时达到最大器件延迟。

传统STA得到的悲观估计是不利的。由于这种悲观的路径延迟 估计,原本符合设计要求的路径可能被错误地标识为违反时序要求; 原本只是轻微违反时序要求的路径可能被错误地标识为比较严重地 违反时序要求。相应地,需要花费不必要的时间和精力对这些路径 进行时序优化。从设计时间和成本的角度看,这都是不期望的。

为了克服传统STA中的上述以及其他潜在问题,本发明的实施 例在STA的路径延迟计算中,将器件之间的连接关系纳入考虑。通 过根据器件的连接关系生成表征器件相关性的延迟约束,能够有效 地消除传统路径延迟估计的悲观性,改善STA的准确性。

图3示出了根据本发明实施例的用于在STA中计算路径延迟的 方法300的示意性流程图。为讨论方便起见,将主要描述路径中的 两个相互连接的器件。然而,应当理解,方法300可以适用于包含 任意数目的器件的路径。

如图所示,方法300开始于步骤S310,在此确定两个器件之间 的连接关系。为讨论方便,将这两个器件称为“第一器件”和“第二器 件”。而后,方法300进行到步骤S320,在此至少部分地基于步骤 S310处确定的第一器件和第二器件的连接关系,生成与第一器件和 第二器件相关联的延迟约束。

在此使用的术语“器件”主要是指路径中的逻辑器件,例如门器 件。门的示例包括但不限于:与门、或门、非门、异或门、与非门、 与或门,等等。任何目前已知或者将来开发的逻辑器件均可与本发 明的实施例结合使用,本发明的范围在此方面不受限制。

如已知的,电路路径中的每个器件都具有固有的器件延迟。器 件延迟可具有多个可能的候选值。当输入模式不同时,器件的器件 延迟在这些候选值之间变化。作为示例,对于具有三个输入端的异 或门而言,其第一输入端到输出端的延迟可随第二输入端和第三输 入端的输入模式而改变。第二输入端和第三输入端的输入值具有四 种可能的输入模式(inputpattern),即,“00”、“01”、“10”和“11”, 每种输入模式可能导致器件延迟具有不同的取值。当然,取决于器 件的类型,器件延迟的取值在不同的输入模式下保持不变也是可能 的。

一般而言,一个器件的器件延迟的候选值与相应的输入模式可 以被事先确定和存储。例如,关于器件延迟的信息可以被存储在标 准单元库中。作为示例,图4示出了一个标准单元库的一部分的示 意图。在所示的示例中,器件类型为“AOI211”的电路元件410的器 件延迟的多个候选值以及对应的输入模式被存储在标准单元库的代 码片段420中。标准单元库中所存储的这些信息可以在STA中被访 问和使用。

根据本发明的实施例,与第一器件和第二器件相关联的延迟约 束用于规定第一器件与第二器件的器件延迟之间的相关性。具体而 言,对于第一器件的器件延迟(称为“第一器件延迟”)和第二器件 的器件延迟(称为“第二器件延迟”)的任何取值配对(valuepair), 只有在其满足延迟约束的情况下,才可能在计算路径延迟时被纳入 考虑。反之,不符合延迟约束的器件延迟的任何取值配对将在路径 延迟计算中被排除在考虑范围之外。换言之,在步骤S320处生成的 延迟约束根据步骤S310处确定的第一器件与第二器件的连接关系, 在计算路径延迟时限制第一器件和第二器件各自的器件延迟的取 值。下面将描述本发明的几个若干示例性实施例。

在一个实施例中,可以在步骤S310处确定第一器件与第二器件 是否具有共同的输入端。更具体地,可以确定第一器件的任何输入 端和第二器件的任何输入端是否连接至同一引线或者彼此直接连 接。例如,在图2所示的情况中,第一器件210的输入端212和第 二器件220的输入端222连接至相同的引线,因此可被认为是彼此 连接。

响应于在步骤S310处确定第一器件的第一输入端与第二器件的 第二输入端直接连接,在步骤S320处可以生成相应的延迟约束。为 讨论方便起见,将该延迟约束称为“第一延迟约束”。第一延迟约束 规定:在STA的路径延迟计算中,第一器件的第一器件延迟的取值 所对应的第一输入端的输入值,与第二器件的第二器件延迟的取值 所对应的第二输入端的输入值应当相同。只有当满足第一延迟约束 时,器件延迟的相应取值配对才是可能的。反之,任何违反第一延 迟约束的器件延迟的取值配对都应在计算路径延迟时被排除。

为讨论方便之目的,仍然考虑图2所示的示例。根据本发明的 实施例,针对第一器件210和第二器件220将会生成第一约束,其 规定:第一器件210的器件延迟的取值所对应的输入端212的输入 值,应当等于第二器件220的器件延迟的取值所对应的输入端222 的输入值。

以最大器件延迟为例,假设根据标准单元库中的信息确定:第 一器件210达到其最大器件延迟时的输入端212为“1”,并且第二器 件220达到其最大器件延迟时的输入端222为“0”。此时,第一器件 210和第二器件220的最大器件延迟的取值配对不满足第一约束,因 为此时第一器件和第二器件上彼此连接的输入端的输入值不同。因 此,第一器件和第二器件不能同时达到各自的最大器件延迟。相应 地,如下文所述,在计算路径延迟时,将禁止第一器件210和第二 器件220同时取其最大器件延迟。

反之,如果根据标准单元库中的数据确定:第一器件210达到 其最大器件延迟时的输入端212为“1”,并且第二器件220达到其最 大器件延迟时的输入端222也为“1”,则这个取值配对满足第一约束 (因为此时第一器件和第二器件上彼此连接的输入端的输入值相 同)。因此,在计算路径延迟时,第一器件210和第二器件220可 以同时达到各自的最大器件延迟。

仍然参考图3描述本发明的示例性实施例。备选地或附加地, 在一个实施例中,可以在步骤S310处确定第一器件和第二器件是否 具有与一个或多个相同的寄存器相关的输入端。如已知的,在电路 中,除了门之类的逻辑运算器件之外,还可以包括充当存储元件的 寄存器。在某些情况下,不同逻辑器件的输入端并未直接彼此连接, 但是却与共同的一个或多个寄存器相关联。

图5示出了与相同的寄存器相关联的器件的示意图。在图5所 述的路径500中,第一器件210的输入端(称为“第三输入端”)214 和第二器件220的输入端(称为“第四输入端”)224没有直接相连。 然而,输入端214和224都与相同的寄存器510和520相关。为讨 论方便,在下文描述中,与第一器件的第三输入端和第二器件的第 四输入端均相关的一个或多个寄存器被称为“共同寄存器”。

此时,可以在步骤S320处生成相应的延迟约束,称为“第二延 迟约束”。第二延迟约束规定:第一器件210的第一器件延迟所对应 的共同寄存器(在此例中为寄存器510和520)的状态(称为“第一 状态”)应与第二器件220的第二器件延迟所对应的共同寄存器的状 态(称为“第二状态”)相同。

类似于第一延迟约束,只有当第一器件210与第二器件220的 器件延迟的取值配对满足第二延迟约束时,该取值配对才可能在计 算路径延迟时被纳入考虑。反之,违反第二延迟约束的任何器件延 迟的取值配对将被排除在路径延迟的计算之外。

作为示例,仍然考虑器件的最大器件延迟。假设根据标准单元 库中的数据确定:第一器件210达到其最大器件延迟时寄存器510 和520的状态为“00”或者“10”,并且第二器件220达到其最大器件延 迟时寄存器510和520的状态为“01”。此时,第一器件210达到最 大器件延迟所需的共同寄存器的第一状态与第一器件220达到最大 器件延迟所需的共同寄存器的第二状态不可能相同(二者交集为 空)。由此,可以确定第一器件210和第二器件220不能同时达到 最大器件延迟。

反之,如果第一器件210达到其最大器件延迟时寄存器510和 520的状态为“00”或“10”,并且第二器件220达到其最大器件延迟时 寄存器510和520的状态为“10”,则第一器件210和第二器件220 可能同时达到最大器件延迟(当寄存器510和520的状态为“10”时)。 因此,这两个器件的最大器件延迟的配对可以在路径延迟计算中被 纳入考虑。

在另一些实施例中,除了在步骤S310处确定的器件连接关系之 外,在步骤S320处确定延迟约束时,还可以将一个或多个其他相关 因素纳入考虑。例如,在一个实施例中,延迟约束可以基于器件的 连接关系以及至少一个器件的类型来确定。

参考图6描述一个具体示例。在图6所示的示例中,假设路径 600中的第一器件210的输入端216与第二器件220的输入端226 通过同一引线610而直接连接(或者与一个或多个共同寄存器相关, 图中未示出)。而且,如图所示,第一器件210在路径600中位于 第二器件220的上游。进一步假设:第一器件210达到最大器件延 迟的条件是输入端216的输入值为“1”。由此,在第一器件210达到 最大器件延迟的情况下,第二器件220的输入端226的输入值也必 然为“1”。如果第二器件220包括或门,那么不论第一器件210向第 二器件220的输入端228馈送何值,第二器件220的输出都将为“1”。

也就是说,在这种情况下,第一器件210的输出被第二器件220 截断。由此,路径600的信号延迟本质上不会受到第一器件210的 器件延迟的影响。相应地,在这种情况下,在计算路径延迟时可以 将第一器件210的器件延迟排除在考虑范围之外。

类似地,当第二器件220包括与门时,同样可能截断第一器件 210的输出。例如,如果第一器件210达到最大器件延迟的条件是输 入端216的输入值为“0”,则第一器件220的输入必然被第二器件220 截断。这是因为,当第一器件210的输入端216的输入值为“0”时, 第二器件220的输入端226的输入值也为“0”。由此,第二器件220 的输出必然为零。此时,第一器件210的器件延迟也应被排除在路 径延迟计算之外。

应当理解,第二器件220并非一定是或门或者与门本身。实际 上,只要第二器件220能够执行“与”运算或者“或”运算,便可 截断路径中的信号。例如,第二器件220可以是与非门、或非门、 与或门等任何包含或门和/或与门的器件。

在上面描述的这些情况下,如果确定第一器件延迟达到给定值 会导致第一器件的输出将被第二器件截断,则可以在步骤S320处生 成第三延迟约束,其排除在计算路径延迟时第一器件延迟取所述给 定值的可能性。

将会理解,尽管上文已经描述了延迟约束的若干示例,但是这 些示例仅仅是示范性的,无意以任何方式限制本发明的保护范围。 任何其他适当的延迟约束及其生成方式都是可行的。例如,备选地 或附加地,在一个实施例中,可以使用已知的或将来开发的分析引 擎对电路中的逻辑锥(logiccone)或其部分进行扫描。

如已知的,逻辑锥是指需要确定信号逻辑的组合电路,其可由 布尔表达式来表示。通过扫描逻辑锥(或其部分),可以确定电路 或其给定路径中不可能出现的输入模式,即,不可行输入模式。另 外,例如通过访问标准单元库,可以获取与第一器件的器件延迟的 候选值相对应的第一组输入模式,以及与第二器件的器件延迟的候 选值相对应的第二组输入模式。基于不可行输入模式、第一组输入 模式和第二组输入模式,可以生成与第一器件和第二器件相关联的 延迟约束。具体而言,可以从第一组输入模式和第二组输入模式中 排除不可行输入模式。例如,可以从第一组输入模式和/或第二组输 入模式中,移除被包括在不可行输入模式中的那些输入模式(如果 有的话)。以此方式,可以在计算路径延迟时排除相应的器件延迟 的候选值。

继续参考图3,方法300进行到步骤S330,在此使用符合在步 骤S320处获得的延迟约束的第一器件和第二器件各自的器件延迟, 来计算整条路径的路径延迟。

将会理解,根据本发明的实施例,不同类型的延迟约束可以单 独使用,也可以任意组合使用。在一个实施例中,在步骤S320处生 成的一个或多个延迟约束可以被存储在任意适当格式的约束文件 中。相应地,在步骤S330处可以访问约束文件,并且将与约束文件 冲突那些器件延迟的取值配对排除在路径延迟计算之外。

例如,在一个实施例中,在步骤S320处可以首先假设所有器件 都达到标准单元库所指示的最大器件延迟。而后,可以检查这种假 设是否违反延迟约束。如果根据相关的延迟约束确定某些器件无法 同时达到最大器件延迟,则可以从标准单元库中选择其他候选值, 使得器件延迟的取值配对符合延迟约束。

与总是基于每个器件的最大器件延迟来计算路径延迟的传统方 案相比,本发明的实施例能够极大地消除路径延迟计算的悲观性。 例如,实验证明:仅仅使用第一延迟约束就可以排除掉大量不可能 出现的相连器件同时达到最大器件延迟的情况。

应当理解,尽管在上文结合图3的描述中着重讨论了最大器件 延迟,但是这仅仅是示例性的,无意以任何方式限制本发明的范围。 在其他实施例中,在计算路径延迟时,可以根据延迟约束确定是否 应当排除标准单元库中所存储的器件延迟的任何候选值。

另外,根据本发明的实施例,可以从STA过程伊始便应用上文 参考图3描述的方法300。备选地,为了更加符合实践应用的需求, 也可以将基于连接关系的延迟约束与传统的STA方法结合使用。图 7示出了一个根据本发明实施例的将基于连接关系的延迟约束与传 统STA相结合的方法700的示意性流程图。

方法700开始于步骤S710,在此向电路设计应用STA过程。例 如,在一个实施例中,在STA过程中,可以假设电路中的所有器件 都达到其最大器件延迟,由此获得每条路径的路径延迟。路径延迟 可以与预定义的时序要求进行比较,从而确定路径是否违规。也即, 如果一条路径在先前STA中被确定的先前路径延迟大于时序要求所 规定的期望延迟,则确定路径违反了时序要求。STA过程将返回电 路中的一条或者多条不满足时序设计要求的路径(如果存在的话)。

方法700进行到步骤S720,在此判断电路中是否包含违反时序 要求的路径。如果所有路径均符合时序要求(分支“否”),方法700 进行到步骤S730,在此输出电路设计。否则,如果电路中包含一条 或多条违反时序要求的路径(分支“是”),方法700进行到步骤S740, 在此确定违规路径中的一条路径的在先前STA中的路径延迟超出时 序要求所规定的期望延迟的时间量是否低于阈值。

如果违规路径的先前路径延迟超出期望延迟的时间量在预定阈 值之下(分支“是”),方法700进行到步骤S750,在此基于器件的 连接关系而生成延迟约束。步骤S750对应于上文描述的方法300中 的步骤S310和S320,其细节不再重复。

可以看到,在方法700中,只有当初始STA所确定的违规路径 的先前路径延迟与时序要求所规定的期望延迟之间的差距足够小 时,才启用基于连接关系的延迟约束。这是因为,当路径严重违反 时序要求时,即使利用延迟约束修正了路径延迟计算中的悲观性, 对于时序优化的帮助也往往不甚明显。此时,可以暂不启用基于延 迟约束的修正,而是直接对违规路径进行时序优化。通过一轮或者 多轮优化,当违规量降低到阈值之下时,再基于延迟约束消除悲观 性,从而更加有效和高效地完成时序优化。

在步骤S750之后,方法进行到步骤S760,在此基于步骤S750 处获取的延迟约束重新计算违规路径的路径延迟。具体而言,如上 所述,对于彼此连接的第一器件和第二器件,可以参照延迟约束来 确定其是否可能在当前连接关系下达到最大器件延迟。如果不能, 则可以通过更新第一器件和/或第二器件的器件延迟,来重新计算路 径延迟,从而对初始STA的结果进行修正。

在步骤S770,确定是否还有更多尚未处理的违规路径。如果是, 方法700返回到步骤S740,以便继续处理。另一方面,如果在步骤 S740处确定已经处理了所有违规路径,方法700在步骤S780处对 违规路径进行时序优化。可以理解,在步骤S780所处理的违规路径 中,可能包括那些因为违规量超过阈值而没有重新计算路径延迟的 违规路径,也可能包括违规量低于阈值并且因此在步骤S750和S760 重新计算了路径延迟的违规路径。

在步骤S780之后,方法700可以返回步骤S720,在此确定经过 时序优化之后的电路设计中是否还包括违规路径。如果违规路径仍 然存在,则可以执行一轮或多轮的进一步优化。以此方式,通过一 次或多个迭代,能够有效地、准确地完成对电路设计的时序优化, 消除违规路径。

图8示出了根据本发明实施例的用于在STA中计算路径延迟的 系统800的示意性框图。如图所述,系统800包括:连接关系确定 单元810,被配置为确定所述电路设计的路径中的第一器件与第二器 件的连接关系;延迟约束生成单元820,被配置为基于所述连接关系 生成与所述第一器件和所述第二器件相关联的延迟约束,所述延迟 约束规定所述第一器件的第一器件延迟与所述第二器件的第二器件 延迟之间的相关性;以及路径延迟计算单元830,被配置为使用符合 延迟约束的所述第一器件延迟和所述第二器件延迟来计算所述路径 的路径延迟。

在一个实施例中,所述延迟约束生成单元820可以包括:第一 延迟约束生成单元,被配置为响应于所述第一器件的第一输入端与 所述第二器件的第二输入端直接连接而生成第一延迟约束,所述第 一延迟约束规定:所述第一器件延迟所对应的所述第一输入端的输 入值与所述第二器件延迟所对应的所述第二输入端的输入值应当相 同。

在一个实施例中,所述延迟约束生成单元820可以包括:第二 延迟约束生成单元,被配置为响应于所述第一器件的第三输入端与 所述第二器件的第四输入端与相同的寄存器相关而生成第二延迟约 束,所述第二延迟约束规定:所述第一器件延迟所对应的所述寄存 器的第一状态与所述第二器件延迟所对应的所述寄存器的第二状态 应当相同。

在一个实施例中,所述延迟约束生成单元820可以包括:基于 器件类型的延迟约束生成单元,被配置为基于所述连接关系以及所 述第一器件和第二器件中至少一个的器件类型而生成所述延迟约 束。在一个实施例中,所述第一器件在所述路径中位于所述第二器 件的上游。此时,所述基于器件类型的延迟约束生成单元包括:第 三延迟约束生成单元,被配置为若所述第一器件延迟达到给定值会 导致所述第一器件的输出将被所述第二器件截断,则生成第三延迟 约束,所述第三延迟约束排除所述第一器件延迟取所述给定值的可 能性。在这样的实施例中,所述第二器件可以是支持“或”运算或 者“与”运算的器件。

在一个实施例中,所述延迟约束生成单元820可以包括:不可 行输入模式确定单元,被配置为通过扫描所述电路设计的逻辑锥的 至少一部分,确定所述电路设计中的不可行输入模式;第一输入模 式获取单元,被配置为获取与所述第一器件延迟的候选值相对应的 第一组输入模式;第二输入模式获取单元,被配置为获取与所述第 二器件延迟的候选值相对应的第二组输入模式;以及基于输入模式 的延迟约束生成单元,被配置为通过从所述第一组输入模式和所述 第二组输入模式中排除所述不可行输入模式而生成所述延迟约束。

在一个实施例中,所述路径在先前STA中的先前路径延迟超出 时序要求所规定的预期延迟。在此实施例中,所述系统800还可以 包括:违反量比较单元,被配置为将所述先前路径延迟超出所述预 期延迟的时间量与预定阈值进行比较。所述连接关系确定单元810 可被配置为仅在所述时间量低于所述预定阈值的情况下,确定所述 第一器件与所述第二器件的所述连接关系。

在一个实施例中,在所述先前STA中,所述第一器件延迟是所 述第一器件的最大器件延迟、并且所述第二器件延迟是所述第二器 件的最大器件延迟。在此实施例中,所述路径延迟计算单元830可 以包括:路径延迟重计算单元,被配置为响应于确定所述延迟约束 在所述先前STA中被违反,通过更新所述第一器件延迟和所述第二 器件延迟中的至少一个,来重新计算所述路径的路径延迟。

在一个实施例中,系统800还可以包括:时序优化单元,被配 置为基于重新计算的路径延迟对所述路径进行时序优化。

为清晰起见,图8中没有示出系统800所包括的可选单元或者 子单元。上文所描述的所有特征和操作分别适用于系统800,故在此 不再赘述。而且,系统800中的单元或子单元的划分不是限制性的 而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的 功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实 现。本发明的范围在此方面不受限制。

而且,系统800所包含的单元可以利用各种方式来实现,包括 软件、硬件、固件或其任意组合。例如,在某些实施方式中,系统 800可以利用软件和/或固件来实现。备选地或附加地,系统800可 以部分地或者完全地基于硬件来实现。例如,系统800中的一个或 多个单元可以实现为集成电路(IC)芯片、专用集成电路(ASIC)、 片上系统(SOC)、现场可编程门阵列(FPGA),等等。本发明的 范围在此方面不受限制。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产 品可以包括计算机可读存储介质,其上载有用于使处理器实现本发 明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使 用的指令的有形设备。计算机可读存储介质例如可以是—但不限 于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导 体存储设备或者上述的任意合适的组合。计算机可读存储介质的更 具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机 存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存 储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式 压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、 软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起 结构、以及上述的任意合适的组合。这里所使用的计算机可读存储 介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的 电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤 电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质 下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、 广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包 括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、 网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或 者网络接口从网络接收计算机可读程序指令,并转发该计算机可读 程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质 中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令 集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、 状态设置数据、或者以一种或多种编程语言的任意组合编写的源代 码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、 Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类 似的编程语言。计算机可读程序指令可以完全地在用户计算机上执 行、部分地在用户计算机上执行、作为一个独立的软件包执行、部 分在用户计算机上部分在远程计算机上执行、或者完全在远程计算 机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以 通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连 接到用户计算机,或者,可以连接到外部计算机(例如利用因特网 服务提供商来通过因特网连接)。在一些实施例中,通过利用计算 机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻 辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA), 该电子电路可以执行计算机可读程序指令,从而实现本发明的各个 方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程 序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流 程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都 可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机 或其它可编程数据处理装置的处理器,从而生产出一种机器,使得 这些指令在通过计算机或其它可编程数据处理装置的处理器执行 时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/ 动作的装置。也可以把这些计算机可读程序指令存储在计算机可读 存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他 设备以特定方式工作,从而,存储有指令的计算机可读介质则包括 一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规 定的功能/动作的各个方面的指令。

计算机可读程序指令也可加载到计算机、其它可编程数据处理 装置、或其它设备上,使得在计算机、其它可编程数据处理装置或 其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而 使得在计算机、其它可编程数据处理装置、或其它设备上执行的指 令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系 统、方法和计算机程序产品的可能实现的体系架构、功能和操作。 在这点上,流程图或框图中的每个方框可以代表一个模块、程序段 或指令的一部分,所述模块、程序段或指令的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现 中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。 例如,两个连续的方框实际上可以基本并行地执行,它们有时也可 以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组 合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并 非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的 各实施例的范围和精神的情况下,对于本技术领域的普通技术人员 来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨 在最好地解释各实施例的原理、实际应用或对市场中技术的技术改 进,或者使本技术领域的其它普通技术人员能理解本文披露的各实 施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号