CN112597739B - 修复电路中的保持时间违例的方法和装置 - Google Patents
修复电路中的保持时间违例的方法和装置 Download PDFInfo
- Publication number
- CN112597739B CN112597739B CN202011643001.XA CN202011643001A CN112597739B CN 112597739 B CN112597739 B CN 112597739B CN 202011643001 A CN202011643001 A CN 202011643001A CN 112597739 B CN112597739 B CN 112597739B
- Authority
- CN
- China
- Prior art keywords
- path
- time
- node
- violation
- repair
- 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
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
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供了一种修复电路的保持时间违例的方法和装置。该方法包括以下步骤:将多模式多拐角保持时间违例的所有报告文件按照预定的系数全部折算到一个文件中;按照保持时间违例程度对所述文件重新排序,以确保始终在修复保持时间最悲观的路径;将排序后的文件中的路径以及相关时序信息存储在数组变量中;对于选定的每条路径执行修复,包括:比较路径的起点和终点在所有保持时间违例报告中出现的次数,来确定在路径中寻找用于插入延迟单元的节点的方向;根据建立时间余量与阈值的比较结果在路径中确定插入延迟单元的节点;在确定的节点中插入足够修复且数量最少的延迟单元以进行修复;以及更新与修复节点相关的路径和时序信息所对应的数组。
Description
技术领域
本发明主要涉及集成电路物理设计领域,尤其涉及一种修复电路中的保持时间违例的方法和装置。
背景技术
决定集成电路芯片的运行速度和设计面积的主要因素包括:代码编码风格、代码到版图的实现、生产工艺等。在代码到版图实现过程中,修复时序往往是重要的关键步骤之一。
在现代大规模集成电路设计过程中,在完成了静态时序分析(STA,Static TimingAnalysis)后,会产生多模式多拐角(Multi-Mode Multi-Corner,简称MMMC)的保持时间(Hold)违例报告。目前业界主要采用以下几种方法中的一种或者多种去修复保持时间违例。
采用华大九天公司的ICExplorer-XTop工具,它是物理位置感知的时序修复,会读入DEF/LFE文件。它的缺点是需要花费数小时甚至一天先从STA工具吐出MMMC的时序数据,这个数据量非常大占据磁盘空间,且该工具需要付费购买许可(license)。
对于以新思科技(Synopsys)的PT(Prime Time)作为时序签收(Timing SignOff)的公司来说,PT-DMSA(Distributed multi-scenario analysis,分布式多场景分析)也是物理位置感知的时序修复。这一方法的缺点是运行时间非常长,比如对11nm工艺而言,修复10个MMMC保持时间违例报告大约需要10个小时。另外即使设置比较大的建立时间(Setup)余量,修复保持时间违例后仍然会引起新的建立时间违例,导致又要重新修复建立时间违例反复迭代耗费时间和人力,再者DMSA修复保持时间违例产生的日志(log)可读性不强,不利于分析一些保持时间违例无法修复的原因。
对于以Cadence Tempus作为时序签收的公司来说,Tempus-ECO也是物理位置感知的时序修复。它和PT-DMSA流程基本类似,缺点也是运行时间长,会产生一些新的建立时间违例,需要反复迭代,修复过程中产生的日志可读性不强,不利于后续分析。
还有一种手工修复方式,直接在终点插入延迟单元。如果某些路径冒出新的建立时间违例,就删掉部分延迟单元重新迭代。这种方法对低速扫描模式或者时钟频率非常低的保持时间违例比较有效。但它的缺点很多,不同路径的建立时间余量以及保持时间违例不一样,手工处理耗时耗力,需要多次迭代;很多情况下在终点插入延迟单元并不是最优解,这种方法浪费面积,容易导致绕线拥塞而出现物理设计规则检查(Physical DRC)违例;且对于功能(Function)和高速MBIST(Memory built-in self-test,存储器自建自测试)模式的保持时间违例,有建立时间余量的地方都不是在终点,因此无法修复这类路径的保持时间违例。
发明内容
本发明要解决的技术问题是提供修复电路中的保持时间违例的方法和装置,可以减少修复所需的数据量且缩短修复时间。
为解决上述技术问题,本发明提供了一种修复电路的保持时间违例的方法,包括以下步骤:将多模式多拐角保持时间违例的所有报告文件按照预定的系数全部折算到一个文件中;按照保持时间违例程度对所述文件重新排序,以确保始终在修复保持时间最悲观的路径;将排序后的文件中的路径以及相关时序信息存储在数组变量中;对于选定的每条路径执行修复,包括:比较所述路径的起点和终点在所有保持时间违例报告中出现的次数,来确定在所述路径中寻找用于插入延迟单元的节点的方向;根据建立时间余量与阈值的比较结果在所述路径中确定插入延迟单元的节点;在确定的节点中插入延迟单元以进行修复;更新与修复节点相关的路径和时序信息所对应的数组。
在本发明的一实施例中,将排序后的文件中的路径以及相关时序信息存储在数组变量中的步骤至少包括存储如下信息:每个路径上的起点、终点和中间节点的名字;每个路径上起点和终点的建立时间余量、保持时间违例值和保持时间违例次数;每个路径上中间节点的建立时间余量和保持时间违例值;以及每个起点、终点和中间节点所在的路径。
在本发明的一实施例中,按照保持时间违例程度对所述文件重新排序,以确保始终在修复保持时间最悲观的路径的步骤包括:路径的保持时间余量越小,则修复次序越高。
在本发明的一实施例中,所述阈值包括可调补偿量,用于补偿插入延迟单元造成的延迟恶化。
在本发明的一实施例中,在确定的节点中插入足够修复且数量最少的延迟单元以进行修复的步骤包括:在每条路径上最多只选择一个节点插入延迟单元。
在本发明的一实施例中,更新与修复节点相关的路径和时序信息所对应的数组的步骤包括:更新已修复节点经过的路径上从起点寄存器出发,以及到达终点寄存器的违例次数;更新已修复节点经过的路径的保持时间余量;更新已修复节点经过的路径上的终点、中间节点的建立时间余量。
在本发明的一实施例中,在一条路径修复完毕后,再执行下一条路径的修复。
本申请还提出一种修复电路中的保持时间违例的装置,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
本申请还提出一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的方法。
与现有技术相比,本发明解决了现有方法运行时间长且数据量大占据磁盘的缺陷,该方法实现采用数组来存储和更新违例路径的信息。存储和更新这些信息都转化为对数组变量的处理,几乎不消耗时间也不需要占据磁盘空间。该方法会分析整个时序网络的建立时间/保持时间信息,找一个最优点去插入延迟单元从而节省面积,在节点插入延迟单元后会更新相关时序路径的建立时间/保持时间信息,从而不会恶化建立时间。本发明不基于物理位置信息,仅仅通过在输入引脚插入延时单元,吐出修复脚本给布局布线(PR)工具使用的实现过程。针对MMMC百万条的保持时间违例,在2-3分钟内一次迭代即可产生修复脚本,数据量小几乎不占据磁盘空间。
附图说明
包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本申请原理的作用。附图中:
图1是根据本申请一实施例的待修复电路示意图。
图2是根据本申请一实施例的修复装置框图。
图3是根据本申请一实施例的修复方法流程图。
图4是根据本申请一实施例的对每一条时序路径进行修复的方法流程图。
具体实施方式
为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
在本申请的描述中,需要理解的是,方位词如“前、后、上、下、左、右”、“横向、竖向、垂直、水平”和“顶、底”等所指示的方位或位置关系通常是基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,在未作相反说明的情况下,这些方位词并不指示和暗示所指的装置或元件必须具有特定的方位或者以特定的方位构造和操作,因此不能理解为对本申请保护范围的限制;方位词“内、外”是指相对于各部件本身的轮廓的内外。
为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位(旋转90度或处于其他方位),并且对这里所使用的空间相对描述作出相应解释。
此外,需要说明的是,使用“第一”、“第二”等词语来限定零部件,仅仅是为了便于对相应零部件进行区别,如没有另行声明,上述词语并没有特殊含义,因此不能理解为对本申请保护范围的限制。此外,尽管本申请中所使用的术语是从公知公用的术语中选择的,但是本申请说明书中所提及的一些术语可能是申请人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本申请。
应当理解,当一个部件被称为“在另一个部件上”、“连接到另一个部件”、“耦合于另一个部件”或“接触另一个部件”时,它可以直接在该另一个部件之上、连接于或耦合于、或接触该另一个部件,或者可以存在插入部件。相比之下,当一个部件被称为“直接在另一个部件上”、“直接连接于”、“直接耦合于”或“直接接触”另一个部件时,不存在插入部件。同样的,当第一个部件被称为“电接触”或“电耦合于”第二个部件,在该第一部件和该第二部件之间存在允许电流流动的电路径。该电路径可以包括电容器、耦合的电感器和/或允许电流流动的其它部件,甚至在导电部件之间没有直接接触。
图1是根据本申请一实施例的待修复时序电路的局部示意图。参考图1所示,寄存器B0和B1作为起点,是电路中的输出引脚。寄存器E0和E1作为终点,为电路中的输入引脚。A、B、C和D为路径上经过的中间节点,为电路中的输入引脚。
一条完整的保持时间违例路径,一行行显示从起点,经过的中间节点,到终点。终点也算节点,即终点也会考虑是否可以插入延时单元。每一行会包含很多时序信息,如线延时、单元延时、线长、电容、位置、串扰值等等10到20项的信息。电路中一共存在7条路径,列出如下:
路径1:B0 B E0
路径2:B0 A B E0
路径3:B0 A D E0
路径4:B0 A D E1
路径5:B1 C B E0
路径6:B1 C D E0
路径7:B1 C D E1
假设每条路径都出现保持时间违例。在nworst=1模式,报告中只会出现2条路径,即到每个终点仅报告保持时间最悲观的一条。在此,保持时间余量小于0,表示保持时间有违例,保持时间余量负得越多,表示违例越大,越悲观。路径1,2,3,5,6中选择保持时间余量最小的一条报出来,即到终点E0报1条。路径4,7中选择保持时间余量最小的一条报出来,即到终点E1报1条。
图2是根据本申请一实施例的修复装置框图。修复装置200可包括内部通信总线201、处理器(Processor)202、只读存储器(ROM)203、随机存取存储器(RAM)204、通信端口205以及硬盘207。内部通信总线201可以实现修复装置200组件间的数据通信。处理器202可以进行判断和发出提示。在一些实施例中,处理器202可以由一个或多个处理器组成。通信端口205可以实现修复装置200与外部的数据通信。在一些实施例中,修复装置200可以通过通信端口205从网络发送和接受信息及数据。修复装置200还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘207,只读存储器(ROM)203和随机存取存储器(RAM)204,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器202所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,例如显示器,用于在用户界面上显示。
具有一组(至少一个)程序模块的程序/实用工具206,可以存储在例如硬盘207中,这样的程序模块包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。
图3是根据本申请一实施例的保持时间违例修复方法流程图。参考图3所示,本实施例的保持时间违例修复方法可包括如下步骤:
在步骤301,将多模式多拐角保持时间违例的所有报告文件按照预定的系数全部折算到一个文件中。
在此对MMMC的保持时间违例报告进行分析。一个保持时间违例报告典型地包括许多保持时间违例的时序路径。在此,根据保持时间余量来确定修复顺序。在一个实施例中,按照预定的比例系数将每条路径的保持时间余量(Hold Slack)折算到FF角下。比如在FF1(Fast-Fast)角和FF角下同一个组合逻辑的延时比例大概为N:1,则FF1角下的保持时间余量折算到FF角下后会除以N(N可能大于也可能小于1)。对MMMC报告完成折算以后,都合并成一个报告文件。
在步骤302,按照保持时间违例程度对文件重新排序,以确保始终在修复保持时间最悲观的路径。
在此,比较多条路径的保持时间余量以对文件重新排序。例如,对路径按照保持时间余量从小到大重新排序,即优先修复保持时间余量最小(最悲观)的时序路径。这是因为,当修复了某条时序路径后,如果插入延迟单元的节点出现在后面别的时序路径上面,后面这些时序路径的保持时间违例就被自动地修复掉,就不需要再处理了。这一方法优势在于,可以用最少的延迟单元数量、最快的速度修复完保持时间违例。
在步骤303,将将排序后的文件中的路径以及相关时序信息存储在数组变量中。
在一实施例中,采用数组来存储排序后报告文件中的路径以及相关时序信息。这些要存储的信息包括但不限于:每个路径上的起点、终点和中间节点的名字;每个路径上起点和终点的建立时间余量、保持时间违例值和保持时间违例次数;每个路径上中间节点的建立时间余量和保持时间违例值;每个起点、终点和中间节点所在的路径。
该数组会在每一次修复后被更新。例如,每次在某个时序路径的某节点插入延迟单元后,会更新违例次数(NUM)、保持时间余量(Hold Slack)、建立时间余量(Setup Slack)等信息。这种更新是对数组变量值的修改,几乎不消耗时间也不需要占据磁盘空间。而且通过每次对整个网络的更新,使得该算法在修复保持时间违例后不会引起建立时间的恶化。
在步骤304,对于选定的每条路径执行修复。修复的顺序按照步骤302确定的顺序。
图4是根据本申请一实施例的对时序进行修复的方法流程图。
对每一条路径来说,首先在步骤401,比较路径的起点和终点在所有保持时间违例报告中出现的次数,来确定在路径中寻找用于插入延迟单元的节点的方向。方向例如可以选择从路径的起点(例如图1中的B0、B1)还是终点(例如图1中的E0、E1)去寻找节点以插入延迟单元。
在一个实施例中,提供了两种模式“起点-终点对”(begin_end_pair)或“终点”(end)去选择从哪个方向寻找节点。当保持时间违例报告是用nworst=1(number ofworst,最差路径数量)选项产生时,用户可以选择“终点”模式,即从终点开始往前(起点方向)寻找用于插入延迟单元节点。当报告是用start_end_pair(例如Synopsys PT工具)或者begin_end_pair(例如Cadence Tempus)选项产生时,用户可以选择“begin_end_pair”模式。
在“终点”模式下,如果从起点寄存器出发的保持时间违例次数(HoldNUM)大于设定的阈值ReverseVth时,该算法会转变为从起点(例如B0、B1)往后寻找节点。ReverseVth的值一般可设定为20。通常在时序修复(Timing ECO)的早期,由于保持时间违例次数巨大,可以选择这种模式。
在“begin_end_pair”模式下,如果从起点寄存器出发的Hold NUM大于到达终点寄存器的Hold NUM,则从起点(例如B0、B1)往后(终点方向)寻找节点,反之则从终点(例如E0、E1)往前寻找节点。
由于从起点寄存器出发,和到达终点寄存器的Hold NUM每次都会被动态地更新,因此该方法实现了以修复总的违例次数(Total Hold Number)为目标,能够节省延迟单元的面积和数量,减小绕线拥塞的影响。
在步骤402,根据建立时间余量与阈值的比较结果确定在路径中确定插入延迟单元的节点。
当确定了从哪个方向开始寻找节点后,对时序路径上的某一个节点,判定其插入延迟单元后是否有足够的建立时间余量(Setup Margin),从而确定是否在该节点插入延迟单元。换言之,判断某个节点是否有建立时间余量允许插入延迟单元。在一个示例中,判定标准是某节点的建立时间余量满足如下等式:
Setup Slack≥|Hold Slack|*RSetupHold+Setup Margin
|Hold Slack|表示Hold Slack的绝对值。RSetupHold是Worst(简称SSslow slow)拐角和FF拐角下单元延时的比例系数。由于本实施例是不基于物理位置的,公式右侧的阈值包括Setup Margin(比如可以设置成0.1ns),这是额外增加的非负常量,用来保证插入的延迟单元在位置合法化(Legalize Location)时引起的延迟值恶化。可以采用统计的方法得到比较精确的RSetupHold值,再加上一定的Setup Margin从而能够保证了该方法不会引起建立时间的恶化。
在第一轮修复或者早期修复时,因为保持时间为例数目较多,需要加入比较大的且正的Setup Margin。因为加入的延迟单元很多时,延迟恶化的概率比较大。阈值越大,越不容易修掉保持时间违例。在后期已经没有多少保持时间违例后,这个阈值可以适当变小,变成很小甚至为0,极少数情况下可以变成负值。
在步骤403,在确定的节点中插入足够修复且数量最少的延迟单元以进行修复。
在此步骤中,最多选择一个节点插入延迟单元。在确定延迟单元数量时,从多个延迟单元选择至少一个延迟单元,使其延迟值满足条件:完全修复保持时间违例(意味着足够修复),且不造成建立时间违例。当条件不满足时,放弃对路径进行修复。在此,选择一次性修复全部保持时间违例或者完全不修复,即不会只修一部分保持时间违例;且优先选择单个延迟时间最大的延迟单元,而不是用多个延迟单元拼接。因为单元越多,位置合法化越容易失控而产生延迟值偏差较大。这样做可以尽量插入更少的延迟单元同时减少建立时间恶化的风险。对于没有Setup Margin的保持时间违例,报出来以后通过手工分析,也可以被修复。
下面参考图1所示描述确定节点的过程。例如修复到E0的路径时,从E0往后,依次到起点(B0或B1),看哪个节点先有足够Setup Margin。但修复这条路径时,如果发现从起点出去的违例次数超过比如20(阈值)时,改为从起点开始,依次到终点,看哪个节点先有足够的建立时间余量。有建立时间余量则遍历结束,插入延迟单元,然后更新,然后再修复下一条保持时间违例路径。
在起点-终点对模式,报告中只会出现4条路径,即B0到E0(B0到E0有3条违反,报告只报违例最大的那条)、B0到E1、B1到E0(B1到E0有2条违反,报告只报违例最大的那条)、B1到E1。修复B0到E0的路径时,比较是从B0出去的保持时间违例次数多,还是到E0出现的保持时间违例次数多。如果从前者多于后者,则从起点开始找,一直找到终点,看哪个节点先有足够的建立时间余量,有则该条路径遍历结束,在节点插入延迟单元,然后更新,然后再修复下一条保持时间路径。反之,则从终点往回找,一直找到起点,看哪个节点先有足够的建立时间余量,有则该条路径遍历结束。
下面描述确定延迟单元数量的示例过程。为了详细说明该算法采用的策略,假设设计库有一共有三种延迟单元,分别为A/B/C,在FF角下相应的延迟值分别为5ps/20ps/50ps,RSetupHold=1.0,SetupMargin=0。要求保持时间余量(Hold Slack)要大于等于0,建立时间余量(Setup Slack)也要大于等于0。
当某个节点的建立时间余量和保持时间余量如下表1所示时,该算法采取的策略如结果一栏所示。
表1
在步骤404,更新与修复节点相关的路径和时序信息所对应的数组。
在此步骤中,更新与修复节点相关的路径和时序信息所对应的数组。更新的内容包括:已修复节点经过的路径上从起点寄存器出发,以及到达终点寄存器的保持时间违例次数;已修复节点经过的路径的保持时间余量;已修复节点经过的路径上的终点、中间节点的建立时间余量。在一条第一时序路径修复完毕,更新好后,再执行下一条时序路径的修复。
举例来说,修复某条保持时间违例时,假设在节点B插入延时单元共延时100ps,假设RSetupHold=3,则:
Setup Slack≥|Hold Slack|*RSetupHold+Setup Margin
|Hold Slack|表示Hold slack的绝对值。
经过B的所有路径的起点和终点的保持时间违例次数依次减掉1。具体地说,假设这7条路径都报保持时间违例,由于B0和B同时出现在2条路径(路径1和路径2)上,那么从B0出发的违例次数减掉2。从B1出发的违例次数减掉1。到E0的保持时间违例次数减掉3。
经过B的所有路径的保持时间余量加上100ps。如路径1,2,5的保持时间余量+100ps。因为报告会被按照Hold Slack值从小到大重新排序,假设先修复的是路径2,表示该路径的Hold Slack负得最多,在节点B插入了100ps的延迟后,路径1和路径5的余量值通过更新加100ps,直接变成了正值,属于没有保持时间违例了,不需要再修复路径1和路径5了。
经过B的所有路径上的节点的建立时间余量减掉300ps。如节点A、节点B、节点C、终点E0的建立时间余量都减掉300ps。因为这节点A和节点B同时出现在同一路径上;节点C和节点B也同时出现在同一路径上;终点E0和节点B也同时出现在同一路径上。
综上所述,该方法虽然仅仅通过插入延迟单元,且不考虑物理位置,但在各个步骤都采用了较为优化的延迟单元插入方法,较为谨慎的SetupMargin考虑策略。最终该方法能在极短时间内通过1-2轮ECO几乎可以修复掉MMMC所有保持时间违例。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
为了验证本实施例的有效性,将该方法用脚本编程语言tcl实现,写成一个文件fix_hold.tcl。该文件头部包含了上述实现前述方法中提到的一些参数和其它设置。再按照以下三个步骤进行实施:
1)在Worst角下,分别打开之前每个模式保存的setup database(建立时间数据库,简称db),该db可以来自Synopsys的PT,也可以来自Cadence的Tempus。
2)手动修改文件fix_hold.tcl开头的一些设置后,在各个db都加载即source该文件,再输入get_margin命令,得到MMMC所有时序节点初始的建立时间余量信息。
3)在某一个db输入fix_hold命令,即可吐出ECO脚本给PR工具使用。
以某AIoT芯片JAxxx为例,该芯片对功耗和面积要求极高,采用三星11nm工艺。以其中的一个模块为例,该模块分别有3/6个建立/保持时间拐角,有4个模式,即共有24个MMMC保持时间违例报告文件。将Synopsys PT-DMSA以及本实施例提出的算法,进行了对比试验,对比结果如下表2所示。与PT-DMSA相比,虽然本申请的方法加入的延迟单元的数量多了15%,但功耗却没有增加,而修复保持时间违例效果非常显著,且并未引起建立时间的恶化,产生ECO脚本的时间仅为1分钟。
修复保持时间违例前:
表2
其中WNS为最大违例值(Worst Negative Slack)。
其中TNS为总的违例值(Total Negative Slack)。
修复保持时间违例后:
表3
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。
Claims (8)
1.一种修复电路的保持时间违例的方法,包括以下步骤:
将多模式多拐角保持时间违例的所有报告文件按照预定的系数全部折算到一个文件中;
按照保持时间违例程度对所述文件重新排序,以确保始终在修复保持时间最悲观的路径;
将排序后的文件中的路径以及相关时序信息存储在数组变量中;
对于选定的每条路径执行修复,包括:
比较所述路径的起点和终点在所有保持时间违例报告中出现的次数,来确定在所述路径中寻找用于插入延迟单元的节点的方向;
根据建立时间余量与阈值的比较结果在所述路径中确定插入延迟单元的节点;
在确定的节点中插入足够修复且数量最少的延迟单元以进行修复;
以及更新与修复节点相关的路径和时序信息所对应的数组;
按照保持时间违例程度对所述文件重新排序,以确保始终在修复保持时间最悲观的路径的步骤包括:路径的保持时间余量越小,则修复次序越高。
2.如权利要求1所述的方法,其特征在于,将排序后的文件中的路径以及相关时序信息存储在数组变量中的步骤至少包括存储如下信息:
每个路径上的起点、终点和中间节点的名字;
每个路径上起点和终点的建立时间余量、保持时间违例值和保持时间违例次数;
每个路径上中间节点的建立时间余量和保持时间违例值;以及
每个起点、终点和中间节点所在的路径。
3.如权利要求1所述的方法,其特征在于,所述阈值包括可调补偿量,用于补偿插入延迟单元造成的延迟恶化。
4.如权利要求1所述的方法,其特征在于,在确定的节点中插入足够修复且数量最少的延迟单元以进行修复的步骤包括:在每条路径上最多只选择一个节点插入延迟单元。
5.如权利要求1所述的方法,其特征在于,更新与修复节点相关的路径和时序信息所对应的数组的步骤包括:
更新已修复节点经过的路径上从起点寄存器出发,以及到达终点寄存器的违例次数;
更新已修复节点经过的路径的保持时间余量;
更新已修复节点经过的路径上的终点、中间节点的建立时间余量。
6.如权利要求1所述的方法,其特征在于,在一条路径修复完毕后,再执行下一条路径的修复。
7.一种修复电路中的保持时间违例的装置,包括:
存储器,用于存储可由处理器执行的指令;以及
处理器,用于执行所述指令以实现如权利要求1-6任一项所述的方法。
8.一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643001.XA CN112597739B (zh) | 2020-12-30 | 2020-12-30 | 修复电路中的保持时间违例的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643001.XA CN112597739B (zh) | 2020-12-30 | 2020-12-30 | 修复电路中的保持时间违例的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597739A CN112597739A (zh) | 2021-04-02 |
CN112597739B true CN112597739B (zh) | 2023-04-07 |
Family
ID=75206699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011643001.XA Active CN112597739B (zh) | 2020-12-30 | 2020-12-30 | 修复电路中的保持时间违例的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597739B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836846B (zh) * | 2021-09-13 | 2023-10-17 | 北京大学 | 一种gpu加速计算的集成电路无悲观路径分析方法 |
CN114861578B (zh) * | 2022-07-05 | 2022-10-11 | 飞腾信息技术有限公司 | 保持时间违例修复方法、装置、设备及存储介质 |
CN115017846B (zh) * | 2022-07-15 | 2022-11-18 | 飞腾信息技术有限公司 | 基于接口的时序修复方法、设备及介质 |
CN115577675B (zh) * | 2022-11-23 | 2023-03-07 | 飞腾信息技术有限公司 | 时序违例修复方法、装置、服务器及可读存储介质 |
CN117150997A (zh) * | 2023-09-07 | 2023-12-01 | 广州市粤港澳大湾区前沿创新技术研究院 | 集成电路时序违例修正方法、装置、电子设备及存储介质 |
CN117131825B (zh) * | 2023-10-27 | 2024-01-30 | 中科亿海微电子科技(苏州)有限公司 | 一种基于建立时间的修复布线方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095285A (zh) * | 2007-03-30 | 2013-05-08 | 阿尔特拉公司 | 可配置的时间借用触发器 |
CN110377922A (zh) * | 2018-04-12 | 2019-10-25 | 龙芯中科技术有限公司 | 保持时间违例修复方法、装置及设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003196336A (ja) * | 2001-12-26 | 2003-07-11 | Nec Microsystems Ltd | 半導体集積回路のタイミング設計方法 |
US7590957B2 (en) * | 2006-08-24 | 2009-09-15 | Lsi Corporation | Method and apparatus for fixing best case hold time violations in an integrated circuit design |
CN102339338B (zh) * | 2010-07-22 | 2013-03-27 | 上海华虹集成电路有限责任公司 | 一种时序修复方法 |
JP2013105249A (ja) * | 2011-11-11 | 2013-05-30 | Renesas Electronics Corp | 半導体集積回路のレイアウト設計方法 |
CN203012720U (zh) * | 2012-11-23 | 2013-06-19 | 上海宇芯科技有限公司 | 多终点保持时间违规修复后的电路 |
CN103164585B (zh) * | 2013-03-29 | 2016-02-10 | 龙芯中科技术有限公司 | 缓冲器的插入方法及装置 |
CN105787213B (zh) * | 2016-04-01 | 2019-02-05 | 中国人民解放军国防科学技术大学 | 一种保持时间违反的修复方法 |
CN109583103B (zh) * | 2018-12-04 | 2023-02-17 | 珠海一微半导体股份有限公司 | 一种基于时间余量的时序修复方法 |
CN109800511B (zh) * | 2019-01-23 | 2023-02-07 | 中国人民解放军国防科技大学 | 一种寻找最优公共点的保持时间违反修正方法及系统 |
CN110111020B (zh) * | 2019-05-16 | 2021-03-02 | 天津飞腾信息技术有限公司 | 基于自动评估建立时间余量的保持时间修复方法、系统及介质 |
-
2020
- 2020-12-30 CN CN202011643001.XA patent/CN112597739B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095285A (zh) * | 2007-03-30 | 2013-05-08 | 阿尔特拉公司 | 可配置的时间借用触发器 |
CN110377922A (zh) * | 2018-04-12 | 2019-10-25 | 龙芯中科技术有限公司 | 保持时间违例修复方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112597739A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112597739B (zh) | 修复电路中的保持时间违例的方法和装置 | |
US7788241B2 (en) | Method for reducing overhead of validating constraints in a database | |
US9223720B2 (en) | Systems and methods for rapidly generating suitable pairs of hash functions | |
US7844422B2 (en) | Method and system for changing a description for a state transition function of a state machine engine | |
US9244857B2 (en) | Systems and methods for implementing low-latency lookup circuits using multiple hash functions | |
CN108009055B (zh) | 一种修复保持时间违例的方法和装置 | |
US20100153897A1 (en) | System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce leakage power in an electronic circuit and electronic design automation tool incorporating the same | |
US20230185480A1 (en) | Ssd-based log data storage method and apparatus, device and medium | |
CN111914500A (zh) | 一种快速单磁通量子rsfq电路布局方法和装置 | |
US7913213B2 (en) | Tool and method for automatically identifying minimum timing violation corrections in an integrated circuit design | |
WO2024124843A1 (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US8776003B2 (en) | System and method for employing side transition times from signoff-quality timing analysis information to reduce leakage power in an electronic circuit and an electronic design automation tool incorporating the same | |
CN114547086B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
US20100049713A1 (en) | Pattern matching device and method | |
CN114676132A (zh) | 一种数据表关联方法、装置、存储介质及电子设备 | |
US10761847B2 (en) | Linear feedback shift register for a reconfigurable logic unit | |
US20150269304A1 (en) | System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce total power within a circuit design | |
CN112749526A (zh) | 电源轨设计方法、装置及其非瞬时计算机可读介质 | |
CN118113660B (zh) | Fpga延时优化方法、装置、设备、存储介质及程序产品 | |
CN112364581B (zh) | 自动在寄存器传输级设计文件中插入特定代码的方法及装置 | |
CN116090383B (zh) | 实现静态时序分析的方法、装置、计算机存储介质及终端 | |
CN115204074A (zh) | 关键路径复制方法及装置 | |
US9830419B2 (en) | Modifying implant regions in an integrated circuit to meet minimum width design rules | |
CN117829041A (zh) | 用于设计芯片的方法、装置、设备和存储介质 | |
CN118113660A (zh) | Fpga延时优化方法、装置、设备、存储介质及程序产品 |
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 |