CN116578339A - 平衡时序违例的寄存器合并方法、装置、终端及存储介质 - Google Patents

平衡时序违例的寄存器合并方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN116578339A
CN116578339A CN202310141759.0A CN202310141759A CN116578339A CN 116578339 A CN116578339 A CN 116578339A CN 202310141759 A CN202310141759 A CN 202310141759A CN 116578339 A CN116578339 A CN 116578339A
Authority
CN
China
Prior art keywords
register
registers
slack
determining
overlapping area
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
Application number
CN202310141759.0A
Other languages
English (en)
Inventor
陈燕
邱进超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202310141759.0A priority Critical patent/CN116578339A/zh
Publication of CN116578339A publication Critical patent/CN116578339A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明涉及计算机技术领域,具体涉及平衡时序违例的寄存器合并方法、装置、终端及存储介质。该方法包括通过对所有寄存器的setup时序检查的slack值进行分类;基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。本发明在寄存器合并的时候,考虑了setup时序检查的slack值,使得合并后的寄存器不引起setup时序检查违例,并且对于slack值为负的时序检查也做了分析,能够修复setup检查的时序违例,从而为后期的时序收敛做了准备以及节省了工作的run time。

Description

平衡时序违例的寄存器合并方法、装置、终端及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及平衡时序违例的寄存器合并方法、装置、终端及存储介质。
背景技术
目前,多比特寄存器合并技术,已应用在对功耗严格要求的芯片设计中。寄存器合并通过共享衬底、共享逻辑和共享电源,以此减少了芯片的面积和功耗。
图1显示了,一个合并后的二比特的寄存器具有比两个单比特的寄存器更小的面积;合并后的二比特寄存器具有相同的复位信号和时钟信号pin(引脚),这为后期的复位信号和时钟树建立减小了复杂度。
目前进行寄存器合并的前提条件是:
(1)寄存器的类型相同;
(2)具有相同的逻辑层次;
(3)目标库中有相同类型的多比特寄存器;
(4)寄存器由相同的时钟和控制信号驱动;
(5)寄存器没有dont_touch或size_only属性;
(6)在寄存器的时钟pin或公共pin上,没有timingexceptions(一些的时序上的约束条件)(包括grouppaths)grouppaths为一些时序路径的合在一起为一个组。
目前,单比特寄存器只要满足上述条件,并且在芯片布局中的位置相近就可以合并为多比特寄存器,如图2所示。按照现有方法进行寄存器合并,虽然可以减小芯片面积和降低功耗,但是这种合并方法忽略了寄存器的时序问题,这会使得后续的时序收敛很难满足。
现有互连线计算模型整个电路中的总延时由celldelay(单元的延时)和netdelay(互连线的延时)构成。关于netdelay的计算,在芯片设计的物理实现的流程的不同阶段,使用的计算模型也是不同的。在综合工具(DC),布局布线工具(ICC2),时序分析工具(PrimeTime)中都嵌入了不同的互连线计算引擎,这些引擎往往在工作时间(runtime)和精度方面有一些折衷,但是目的就是以尽量小的误差去模拟绕线的SPICE模型,从而更接近芯片生产出来后的真实的性能。在逻辑综合(Synthesis)阶段,早期的DC用的WireLoadModel模型,现在工具也增加了ElmoreDelay模型;在布局布线工具ICC2中,AWE模型和Arnoldi模型使用的比较多;当然,AWE本身也有一阶模型,结果与Elmore类似,但是误差也较大(与SPICE模型相比),可能达到74%,二阶AWE模型的误差可以减少到22%,四阶AWE的近似结果和SPICE模型的结果误差已经很小了。AWE模型的优点是容易实现,缺点是数值不稳定,计算时间较长。而Arnoldi模型会更加稳健,在目前EDA的工具中,在postroute阶段应用比较多。PrimeTime(Synopsys的时序检查工具)用的则是SPICE模型,能够能够准确的netdelay。本文主要针对的是没有真实绕线前的netdelay的计算,所以选用的是ElmoreDelay模型,并且在没有绕线之前的RC寄生参数值可以从TLUplus(由Foundry提供的提供的,用于RC寄生参数的抽取的文件)文件中获取,根据预估的绕线所在层(layer)的分布就可以提取出相对准确的RC寄生参数值。根据分布RC模型,可以获得互连线计算公式如下:
其中,Td为互联的延时,l为互连线的长度,Rp和Cp为单位长度的电阻值和电容值(可以在TLUplus文件中获得),Cload为信号转化时互连线驱动端口的电容值(由时序信息文件中获得)。
寄存器setup时序检查的计算
setuptime(建立时间)是指在时钟有效沿之前,数据输入端信号必须保持稳定的最短时间。通常,有一个发起寄存器(launch)和捕获寄存器(capture),建立时间检查将验证从launch到capture的最长(或最大)路径,确保launch发射的数据在下一个时钟周期内能够被capture捕获。
如图3所示,寄存器UFF1的setup时序检查计算,时钟CLKM的第一个上升沿,在Tlaunch时间出现在launch的时钟pin上,发起的数据出现在UFF1的Dpin的所需时间为Tlaunch+Tck2q+Tdp。时钟CLKM的第二个上升沿(通常在一个周期后检查建立时间)出现在UFF1的时钟pin上的时间为Tcycle+Tcapture。这两个时间之差必须大于寄存器UFF1的建立时间(Tsetup)要求,以确保寄存器UFF1可靠地捕获数据。同样在检查UFF2的setuptime是否满足要求时,UFF1有作为了launch,UFF2作为了capture,计算方法和上面一样。它们共同满足的计算公式如下:
Tlaunch+Tck2q+Tdp≤Rcapture+Tcycle-Tsetup(1-2)
把它转换为常见的时序检查报告里的slack,计算公式如下:
slack=Tcapture+Tcycle-Tsetup-Tlaunch-Tck2q-Tdp(1-3)
这里关注的是,寄存器的位置发生改变,不仅会影响自身的setup时序检查,也会影响它的后一级的寄存器的setup时序检查。
发明内容
为了解决上述现有技术中存在的技术问题,本发明提供了一种平衡时序违例的寄存器合并方法、装置、终端及存储介质。
为实现上述目的,本发明实施例提供了如下的技术方案:
第一方面,在本发明提供的一个实施例中,提供了平衡时序违例的寄存器合并方法,该方法包括以下步骤:
通过对所有寄存器的setup时序检查的slack值进行分类;
基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
作为本发明的进一步方案,所述通过对所有寄存器的setup时序检查的slack值进行分类,包括:
获取其中一个寄存器自身的setup时序检查的slackF值,将slackF值转换为net长度为lF
获取后一级寄存器自身的setup时序检查的slackB值,将slackB值转换为net长度为lB
其中,将slack值转换为net的长度l,l的表达式为:
将net长度l转化为对应寄存器可以移动的范围为:|x|+|y|=l;(l>0),其中x为寄存器可移动的水平距离,y为寄存器可移动的垂直距离。
作为本发明的进一步方案,基于slackF值和slackB值分类,包括如下情况:
所有寄存器均slackF>0并且slackB>0;
存在任一寄存器的slackF<0和slackB>0;
存在任一寄存器的slackF>0和slackB<0;
存在任一寄存器的slackF<0和slackB<0。
作为本发明的进一步方案,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
所有寄存器均当slackF>0并且slackB>0时:
S211、选择任一寄存器为当前寄存器,根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,得到两个正方形的区域,其重叠部分为当前寄存器可以移动的范围,记作为F;
S212、对每个寄存器执行S211获得每个寄存器对应的可移动范围;
S213、基于设计需求,确定多比特寄存器的型号;获得所有需要合并的寄存器可移动范围的重叠区域G;
S214、基于重叠区域G确定合并后多比特寄存器摆放位置。
作为本发明的进一步方案,所述基于重叠区域G确定合并后多比特寄存器摆放位置,包括:计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。
作为本发明的进一步方案,所述基于重叠区域G确定合并后多比特寄存器摆放位置,包括:计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。
作为本发明的进一步方案,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
当存在任一寄存器的slackF<0和slackB>0时;
S221、抓取所有前一级寄存器存在一个象限的当前寄存器及当前寄存器的所有前一级寄存器,组成合并寄存器集1;
S222、选择合并寄存器集1中的任一寄存器为当前寄存器,根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,得到当前寄存器的两个正方形的区域,取前一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器的移动范围F;
S223、对每个寄存器执行S222获得每个寄存器对应的可移动范围;基于设计需求,确定多比特寄存器的型号;获得合并寄存器集中所有寄存器可移动范围的重叠区域G;
S224、基于重叠区域G确定合并后多比特寄存器摆放位置。
作为本发明的进一步方案,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
当存在任一寄存器的slackF>0和slackB<0时;
S231、抓取所有后一级寄存器存在一个象限的当前寄存器及当前寄存器的所有后一级寄存器,组成合并寄存器集2;
S232、选择合并寄存器集2中的任一寄存器为当前寄存器,根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,得到当前寄存器的两个正方形的区域,取后一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器的移动范围F;
S233、对每个寄存器执行S232获得每个寄存器对应的可移动范围;基于设计需求,确定多比特寄存器的型号;获得合并寄存器集中所有寄存器可移动范围的重叠区域G;
S234、基于重叠区域G确定合并后多比特寄存器摆放位置。
第二方面,在本发明提供的又一个实施例中,提供了平衡时序违例的寄存器合并装置,该装置包括:分类单元和确定单元;
所述分类单元,用于通过对所有寄存器的setup时序检查的slack值进行分类。
所述确定单元,用于基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
第三方面,在本发明提供的又一个实施例中,提供了一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器加载并执行所述计算机程序时实现平衡时序违例的寄存器合并方法的步骤。
第四方面,在本发明提供的再一个实施例中,提供了一种存储介质,存储有计算机程序,所述计算机程序被处理器加载并执行时实现所述平衡时序违例的寄存器合并方法的步骤。
本发明提供的技术方案,具有如下有益效果:
本发明提供的平衡时序违例的寄存器合并方法、装置、终端及存储介质,通过对寄存器的setup时序检查的slack值进行分类,针对不同的slack值和setup时序检查的前后级寄存器位置,建立了不同的模型,把slack值转化为寄存器可以移动的范围;可移动范围有重叠的寄存器,即为可以合并的寄存器。最后,确定合并后多比特寄存器的摆放位置。该方法在寄存器合并的时候,考虑了setup时序检查的slack值,使得合并后的寄存器不引起setup时序检查违例,并且对于slack值为负的时序检查也做了分析,能够修复setup检查的时序违例,从而为后期的时序收敛做了准备以及节省了工作的run time。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为两个单比特寄存器合并为一个二比特寄存器示意图。
图2为寄存器合并示意图。
图3为寄存器setuptiming检查示意图。
图4为本发明一个实施例的平衡时序违例的寄存器合并方法流程图。
图5为本发明一个实施例的平衡时序违例的寄存器合并方法中寄存器的可移动范围示意图一。
图6为本发明一个实施例的平衡时序违例的寄存器合并方法中四个可以合并的寄存器寄存器。
图7为合并后的多比特寄存器的摆放位置示意图一。
图8为slackF<0时,前一级寄存器摆放位置图(黑色圆点为前一级寄存器摆放位置)。
图9为本发明一个实施例的平衡时序违例的寄存器合并方法中寄存器的可移动范围示意图二。
图10为可以合并的寄存器寄存器及多比特寄存器放置区域示意图二。
图11为本发明一个实施例的平衡时序违例的寄存器合并装置结构图。
图中:分类单元-100、确定单元-200。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
具体地,下面结合附图,对本发明实施例作进一步阐述。
请参阅图4,图4是本发明实施例提供的一种平衡时序违例的寄存器合并方法的流程图,如图4所示,该平衡时序违例的寄存器合并方法包括步骤S10至步骤S20。
S10、通过对所有寄存器的setup时序检查的slack值进行分类;
在本发明的实施例中,所述通过对所有寄存器的setup时序检查的slack值进行分类,包括:
获取其中一个寄存器自身的setup时序检查的slackF值,将slackF值转换为net长度为lF
获取后一级寄存器自身的setup时序检查的slackB值,将slackB值转换为net长度为lB
其中,将slack值转换为net的长度l,l的表达式为:
将net长度l转化为对应寄存器可以移动的范围为:|x|+|y|=l;(l>0),其中x为寄存器可以移动的水平距离,y为寄存器可以移动的垂直距离,这个公式可以看作y是x的分段函数,以寄存器自身所在的pin为原点就可以画出这个分段函数。
基于slackF值和slackB值分类,包括如下情况:
所有寄存器均slackF>0并且slackB>0;
存在任一寄存器的slackF<0和slackB>0;
存在任一寄存器的slackF>0和slackB<0;
存在任一寄存器的slackF<0和slackB<0。
S20、基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
在本发明的实施例中,S20、基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
所有寄存器均当slackF>0并且slackB>0时:
S211、根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,得到两个正方形的区域,其重叠部分为这个寄存器可以移动的范围,记作为F;
如图5所示,S212、对每个寄存器执行S211获得每个寄存器对应的可移动范围;
S213、基于设计需求,确定多比特寄存器的型号;获得所有需要合并的寄存器可移动范围的重叠区域G;
所述多比特寄存器的型号可以为2bit,4bit或8bit。
示例性的,如图6给出了四个寄存的可移动范围F1,F2,F3和F4,这四个寄存器可以合并为一个4bit寄存器。四个可移动范围重叠的区域记为G,如果当多个可移动范围F重叠,并且F数目不是我们期望的bit数时,采用退一法,并选取能获得最大G的F。
S214、基于重叠区域G确定合并后多比特寄存器摆放位置:
如图7,所述基于重叠区域G确定合并后多比特寄存器摆放位置:
包括计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。计算出x和y取最小值,即为坐标(a,b)的值。
计算x和y取最小值的表达式为:
x=|x1-a|+|x2-a|+|x3-a|+|x4-a|
y=|y1-b|+|y2-b|+|y3-b|+|y4-b|。
在本发明的实施例中,S20、基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:当存在任一寄存器的slackF<0和slackB>0时;
S221、抓取所有前一级寄存器存在一个象限的当前寄存器及当前寄存器的所有前一级寄存器,组成合并寄存器集1;
当slackF<0时,意味着寄存器的setup时序检查没有满足要求。这时,我们需要对这个寄存器的所有前一级寄存器的所在的位置进行分类。按照寄存器所在位置为原点建立坐标,那么它的所有的前一级寄存器可能出现的位置,就是下图8的所有的情况。对于slackF<0的情况,解决setup时序违例的办法是,将寄存器靠近它的前一级寄存器摆放,所以当它的前一级寄存器的位置比较分散时,这样就不能解决掉所有的setup时序违例。再加上目前工具摆放的策略,是会将相同层次下的寄存器聚集在一起的,出现下图8中(1-1)的概率远远大与其他情况的概率。所以我们只考虑(1-1)这种位置的情况。
如图9所示,S222、根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,可以得到当前寄存器的两个正方形的区域,取前一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器的移动范围F。可以理解为,把寄存器向它的前一级靠近了超过了lF的距离,这样可以修掉一部分的setup时序违例。
S223、对每个寄存器执行S222获得每个寄存器对应的可移动范围,基于设计需求,确定多比特寄存器的型号;获得合并寄存器集1中所有寄存器可移动范围的重叠区域G。所述多比特寄存器的型号可以为2bit,4bit或8bit。
S224、基于重叠区域G确定合并后多比特寄存器摆放位置。
如图10所述基于重叠区域G确定合并后多比特寄存器摆放位置:
包括计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。计算出x和y取最小值,即为坐标(a,b)的值。
计算x和y取最小值的表达式为:
x=|x1-a|+|x2-a|+|x3-a|+|x4-a|
y=|y1-b|+|y2-b|+|y3-b|+|y4-b|。
在本发明的实施例中,S20、基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:当存在任一寄存器的slackF>0和slackB<0时;
S231、抓取所有后一级寄存器存在一个象限的当前寄存器及当下寄存器的所有后一级寄存器,组成合并寄存器集2;
当slackF<0时,意味着寄存器的setup时序检查没有满足要求。这时,我们需要对这个寄存器的所有前一级寄存器的所在的位置进行分类。按照寄存器所在位置为原点建立坐标,那么它的所有的前一级寄存器可能出现的位置,就是下图8的所有的情况。对于slackF<0的情况,解决setup时序违例的办法是,将寄存器靠近它的前一级寄存器摆放,所以当它的前一级寄存器的位置比较分散时,这样就不能解决掉所有的setup时序违例。再加上目前工具摆放的策略,是会将相同层次下的寄存器聚集在一起的,出现下图8中(1-1)的概率远远大与其他情况的概率。所以我们只考虑(1-1)这种位置的情况。
S232、根据|x|+|y|=l;(l>0),lF以Dpin,lB则以Qpin原点,可以得到当前寄存器的两个正方形的区域,取后一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器可以移动的范围F。可以理解为,把寄存器向它的前一级靠近了超过了lF的距离,这样可以修掉一部分的setup时序违例。
S333、对每个寄存器执行S232获得每个寄存器对应的可移动范围,基于设计需求,确定多比特寄存器的型号;获得合并寄存器集2中所有寄存器可移动范围的重叠区域G。所述多比特寄存器的型号可以为2bit,4bit或8bit。
S234、基于重叠区域G确定合并后多比特寄存器摆放位置。
所述基于重叠区域G确定合并后多比特寄存器摆放位置:
包括计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。计算出x和y取最小值,即为坐标(a,b)的值。
计算x和y取最小值的表达式为:
x=|x1-a|+|x2-a|+|x3-a|+|x4-a|
y=|y1-b|+|y2-b|+|y3-b|+|y4-b|。
在本发明的实施例中,S20、基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:存在任一寄存器的slackF<0和slackB<0,这种情况寄存器前后级都存在setup时序违例,留给寄存器可移动的范围比较苛刻。这时就不考虑做多比特寄存器合并了,优先解决寄存器自身的时序问题。
本发明通过对寄存器的setup时序检查的slack值进行分类,针对不同的slack值和setup时序检查的前后级寄存器位置,建立了不同的模型,把slack值转化为寄存器可以移动的范围;可移动范围有重叠的寄存器,即为可以合并的寄存器。最后,确定合并后多比特寄存器的摆放位置。该方法在寄存器合并的时候,考虑了setup时序检查的slack值,使得合并后的寄存器不引起setup时序检查违例,并且对于slack值为负的时序检查也做了分析,能够修复setup检查的时序违例,从而为后期的时序收敛做了准备以及节省了工作的run time。
应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,参见图11所示,在本发明的实施例中还提供了平衡时序违例的寄存器合并装置,该装置包括分类单元100和确定单元200。
所述分类单元100,用于通过对所有寄存器的setup时序检查的slack值进行分类。
所述确定单元200,用于基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
在一个实施例中,在本发明的实施例中还提供了一种终端,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信。
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的计算机程序时,执行所述的平衡时序违例的寄存器合并方法,该处理器执行指令时实现上述方法实施例中的步骤。
上述终端提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(RandomAccessMemory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
所述终端包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述终端可单独运行来实现本发明,也可接入网络并通过与网络中的其他终端的交互操作来实现本发明。其中,所述终端所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
还应当进理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本发明的一个实施例中还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种平衡时序违例的寄存器合并方法,其特征在于,该方法包括:
通过对所有寄存器的setup时序检查的slack值进行分类;
基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
2.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,所述通过对所有寄存器的setup时序检查的slack值进行分类,包括:
获取其中一个寄存器自身的setup时序检查的slackF值,将slackF值转换为net长度为lF
获取后一级寄存器自身的setup时序检查的slackB值,将slackB值转换为net长度为lB
其中,将slack值转换为net的长度l,l的表达式为:
其中,l为互连线的长度,Rp和Cp为单位长度的电阻值和电容值,Cload为信号转化时互连线驱动端口的电容值;
将net长度l转化为对应寄存器可以移动的范围为:|x|+|y|=;(l>0),其中x为寄存器可移动的水平距离,y为寄存器可移动的垂直距离。
3.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,基于slackF值和slackB值分类,包括如下情况:
所有寄存器均slackF>0并且slackB>0;
存在任一寄存器的slackF<0和slackB>0;
存在任一寄存器的slackF>0和slackB<0;
存在任一寄存器的slackF<0和slackB<0。
4.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
所有寄存器均当slackF>0并且slackB>0时:
S211、选择任一寄存器为当前寄存器,根据|x|+|y|=;(l>0),lF以Dpin,lB则以Qpin原点,得到两个正方形的区域,其重叠部分为当前寄存器可以移动的范围,记作为F;
S212、对每个寄存器执行S211获得每个寄存器对应的可移动范围;
S213、基于设计需求,确定多比特寄存器的型号;获得所有需要合并的寄存器可移动范围的重叠区域G;
S214、基于重叠区域G确定合并后多比特寄存器摆放位置。
5.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,所述基于重叠区域G确定合并后多比特寄存器摆放位置,包括:计算得到合并后多比特寄存器摆放位置坐标(a,b);所述坐标(a,b)为到区域G各个顶点的曼哈顿距离之和最小的点。
6.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
当存在任一寄存器的slackF<0和slackB>0时;
S221、抓取所有前一级寄存器存在一个象限的当前寄存器及当前寄存器的所有前一级寄存器,组成合并寄存器集1;
S222、选择合并寄存器集1中的任一寄存器为当前寄存器,根据|x|+|y|=;(l>0),lF以Dpin为远点,lB则以Qpin为原点,得到当前寄存器的两个正方形的区域,取前一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器的移动范围F;
S223、对每个寄存器执行S222获得每个寄存器对应的可移动范围;基于设计需求,确定多比特寄存器的型号;获得合并寄存器集中所有寄存器可移动范围的重叠区域G;
S224、基于重叠区域G确定合并后多比特寄存器摆放位置。
7.如权利要求1所述的平衡时序违例的寄存器合并方法,其特征在于,所述基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置;包括:
当存在任一寄存器的slackF>0和slackB<0时;
S231、抓取所有后一级寄存器存在一个象限的当前寄存器及当前寄存器的所有后一级寄存器,组成合并寄存器集2;
S232、根据|x|+|y|=;(l>0),lF以Dpin,lB则以Qpin原点,得到当前寄存器的两个正方形的区域,取后一级寄存器所在的象限,lF以外及lB以内的区域,即为寄存器的移动范围F;
S233、对每个寄存器执行S232获得每个寄存器对应的可移动范围;基于设计需求,确定多比特寄存器的型号;获得合并寄存器集中所有寄存器可移动范围的重叠区域G;
S234、基于重叠区域G确定合并后多比特寄存器摆放位置。
8.一种平衡时序违例的寄存器合并装置,其特征在于,该装置包括:分类单元和确定单元;
所述分类单元,用于通过对所有寄存器的setup时序检查的slack值进行分类;
所述确定单元,用于基于分类后的slack值,分别采用对应的方法确定对应寄存器的移动范围;获取需要合并的寄存器的移动范围的重叠区域,基于重叠区域确定合并后多比特寄存器的摆放位置。
9.一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器加载并执行所述计算机程序时实现如权利要求1-7任一项所述的平衡时序违例的寄存器合并方法的步骤。
10.一种存储介质,存储有计算机程序,所述计算机程序被处理器加载并执行时实现如权利要求1-7任一项所述的平衡时序违例的寄存器合并方法的步骤。
CN202310141759.0A 2023-02-17 2023-02-17 平衡时序违例的寄存器合并方法、装置、终端及存储介质 Pending CN116578339A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310141759.0A CN116578339A (zh) 2023-02-17 2023-02-17 平衡时序违例的寄存器合并方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310141759.0A CN116578339A (zh) 2023-02-17 2023-02-17 平衡时序违例的寄存器合并方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN116578339A true CN116578339A (zh) 2023-08-11

Family

ID=87532829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310141759.0A Pending CN116578339A (zh) 2023-02-17 2023-02-17 平衡时序违例的寄存器合并方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN116578339A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118194790A (zh) * 2024-05-15 2024-06-14 北京壁仞科技开发有限公司 芯片设计方法以及芯片设计系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118194790A (zh) * 2024-05-15 2024-06-14 北京壁仞科技开发有限公司 芯片设计方法以及芯片设计系统

Similar Documents

Publication Publication Date Title
WO2021000556A1 (zh) 一种工业设备剩余有效寿命预测方法、系统及电子设备
US8453085B2 (en) Method for estimating the latency time of a clock tree in an ASIC design
US10776547B1 (en) Infinite-depth path-based analysis of operational timing for circuit design
CN106326510B (zh) 验证时钟树延迟
US11449803B2 (en) Data class analysis method and apparatus
CN109901049B (zh) 检测集成电路用时序路径中异步路径的方法、装置
CN104978749A (zh) 一种基于fpga的sift图像特征提取系统
CN116578339A (zh) 平衡时序违例的寄存器合并方法、装置、终端及存储介质
CN111160242A (zh) 图像目标检测方法、系统、电子终端及存储介质
CN111985414B (zh) 一种关节点位置确定方法及装置
CN113868992A (zh) 集成电路的时序约束方法、装置、电子设备及芯片
US7836421B2 (en) Semiconductor layout design apparatus and method for evaluating a floorplan using distances between standard cells and macrocells
CN108880872B (zh) 一种互联网测试床拓扑结构分解方法及装置
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
US9483593B2 (en) Method for decomposing a hardware model and for accelerating formal verification of the hardware model
CN110032792B (zh) 一种超导数字电路设计方法
CN111222558A (zh) 图像处理方法及存储介质
US11531803B1 (en) IPBA-driven full-depth EPBA of operational timing for circuit design
Narasimhamurthy et al. Fast architecture for low level vision and image enhancement for reconfigurable platform
US11068632B2 (en) Simulation apparatus, description conversion method and simulation method
US9710580B2 (en) Timing analysis method for digital circuit design and system thereof
TWI531921B (zh) 數位電路設計的時序分析方法及其系統
CN113627107A (zh) 确定电源电压数据的方法、装置、电子设备和介质
CN116451625B (zh) 用于rtl和带sdf网表的联合仿真的装置和方法
CN118070724B (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