CN103324774B - 一种基于时钟规划偏差算法的处理器性能优化方法 - Google Patents
一种基于时钟规划偏差算法的处理器性能优化方法 Download PDFInfo
- Publication number
- CN103324774B CN103324774B CN201210589451.4A CN201210589451A CN103324774B CN 103324774 B CN103324774 B CN 103324774B CN 201210589451 A CN201210589451 A CN 201210589451A CN 103324774 B CN103324774 B CN 103324774B
- Authority
- CN
- China
- Prior art keywords
- violation
- allowance
- path
- clock
- register
- 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.)
- Expired - Fee Related
Links
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种基于时钟规划偏差算法的处理器性能优化方法,包括以下步骤:首先是布图规划阶段,根据SRM前、后级寄存器与多个SRM之间的路径联系,将SRAM归组。其次是布局阶段,进行时钟偏差规划,分为两个阶段:时钟树综合之前,根据SRAM与前、后级寄存器若干条路径的平均裕量来调节SRAM时钟延时,同时采取局部裕量借用算法来规划寄存器时钟偏差;时钟树综合之后,采取时钟树算法修正和工程变更两种方法来分别处理大量和少量时序违规;在后续阶段,为处理布线后的保持时间违规,用基于分布式多场景时序分析的、ECO命令和脚本相结合的修复方案。
Description
技术领域
本发明涉及对处理器的性能优化领域,具体涉及一种基于时钟规划偏差算法的处理器性能优化方法。
背景技术
半导体制造工艺飞速发展,已经进入了纳米时代,SoC集成度按照摩尔定律在指数增长。作为SoC核心的处理器,它的设计规模也越来越大,复杂度越来越高,性能要求不断提升。时钟偏差规划很早就被提出作为优化处理器性能的一种有效物理设计策略,合理的时钟偏差规划能够改善性能,降低功耗,提高可靠性。
集成电路设计中的时序收敛指前、后端设计时序一致,即前端给出的网表能运行在多高频率,后端完成布局布线后的电路也能运行到该频率。前端设计人员在时序分析时没有精确的线延迟信息,这样就容易造成和布局布线后的时序不一致。纳米级设计中,工艺参数的变化、噪声、串扰、压降、温度等都会对时序造成不利影响,使芯片的性能有明显的下降;互连线延时已经超过总延时的50%,占据了主导地位,时序收敛问题越来越严重。
当时序不收敛时需要进行时序优化。首先选用EDA工具更高的优化选项来实施优化,如果EDA工具无法达到要求,就需要设计人员手动地调整布图规划,手动地调整单元的驱动能力大小和插入缓冲器,对某些模块设置布局布线约束甚至手动地布局布线,这个过程是费时费力的,非常依赖于设计人员的经验,而且不一定能达到优化时序的目的。如果物理设计人员采取各种方法均无法满足时序要求,就须要返回逻辑设计阶段,进行逻辑结构的调整,甚至修改设计。
虽然对时钟偏差规划算法和算法实现的研究已经取得了丰硕的成果,但是,由于一些因素的影响,实际项目中使用时钟偏差规划技术仍然不是很普遍,这些因素主要有:第一,由于对工艺偏差的担心,设计人员倾向于采取比较保守的设计方式。工艺参数变化所造成的延迟不确定性,使得EDA工具在时钟树综合时无法准确控制时钟信号的传播延迟,这成为时钟偏差规划必须面对的新的挑战。Tsai等人提出在一定的时钟周期下、追求良率的时钟偏差规划算法Prop。方君对此算法进行了改进,提出了comp-Prop算法。这些算法依然没有被应用到商业工具中,设计人员仍然倾向于采用零时钟偏差设计策略。第二,时钟偏差规划需要的时间较长,尤其是时序分析消耗的时间长。相对于算法本身所花的时间,时钟偏差规划所需要的时序分析时间要长得多。第三,在实际应用中,商业化综合工具的优化策略往往会限制时钟偏差规划的优化空间。物理设计流程中时钟偏差规划是作为点工具被使用的,和前端的综合工具缺乏交互。要解决这个问题,需要改进综合工具和设计流程。但目前为止,EDA厂商尚没有提出成熟的改进方案。
发明内容
本发明的目的在于,针对上述问题提出一种基于时钟规划偏差算法的处理器性能优化方法,通过SRAM的联系关系确定摆放关系,再通过平均裕量来确定时钟长度,从而提高处理器工作频率,优化性能。
为实现上述目的,本发明采用的技术方案如下:
一种基于时钟规划偏差算法的处理器性能优化方法,包括以下步骤:
(1)首先是物理设计人员接收逻辑设计人员综合之后的网表和约束文件,即设计数据;在布图规划阶段,依据SRAM前、后级寄存器与多个SRAM之间的路径联系,将SRAM归组;
(2)其次是布局阶段,进行时钟偏差规划,分为两个阶段:时钟树综合之前,根据SRAM与前、后级寄存器若干条路径的平均裕量来调节SRAM时钟延时,同时采取局部裕量借用算法来规划寄存器时钟偏差;如果时序满足,则可以开始时钟树综合,否则返回再次进行调节;在时钟树综合时,将布局阶段的时钟延时调节策略映射到真实的时钟树上;时钟树综合之后,如果有大量时序违规,采用时钟偏差规划算法修正这些违规,然后重新进行时钟树综合;如果只是少量的时序违规,可以采用时钟树工程变更的方法来处理这些违规,如果没有违规,进入下一步;
(3)布线阶段,布线完成之后对本设计进行静态时序分析;如果没有任何时序问题,则结束当前工作;如果只有少量的时序问题,可以对时钟树进行ECO操作,并重新进行静态时序分析;如果还存在大量的时序违规,则需要再次运用时钟偏差规划算法修正,之后返回重新进行时钟树综合;
(4)后续阶段,为处理布线后的保持时间违规,可采用基于分布式多场景时序分析的、ECO命令和脚本相结合的修复方案。
本发明的精细布图规划不仅仅考虑到SRAM之间直接的联系和层次化信息,还会分析SRAM前、后级寄存器与SRAM的联系,将与单个寄存器有联系的多个SRAM归组,尽量邻近摆放,从而尽量缩短与SARM有关路径的线长,减小线延时,优化这些路径的时序。
本发明使用了局部裕量借用算法来实施寄存器的时钟偏差规划。算法以设计中违规的时序路径为处理对象,得到违规路径前、后级裕量作为时钟延时调节依据。借助于Tcl语言和EDA工具的交互,编写一些辅助设计的脚本来对一些有潜在联系的SRAM(通过一个寄存器联系在一起)进行归类靠近摆放。在对违规关键路径的处理上,利用SRAM前后裕量的平均值确定SRAM的时钟长度,然后再处理SRAM前后以及寄存器和寄存器之间的违规,利用平均裕量确定这些寄存器的时钟长度。
与现有技术相比,本发明的有益效果是:通过平均裕量来调节SRAM以及寄存器的时钟偏差,在性能方面,相对于传统的零时钟偏差策略,以额外的设计时间和标准单元面积为代价,提升了频率。
附图说明
图1为本发明的整体框架图。
图2为本发明的时钟偏差调节示意电路图。
图3为本发明的布局规划阶段SRAM的三种关系示意图。
图4为本发明的布局规划阶段SRAM的隐藏关系示意图。
图5为本发明的布局规划阶段搜寻TOMEM的SRAM之间隐藏联系的示意图。
图6为本发明的布局规划阶段搜寻FROMMEM的SRAM之间隐藏联系的示意图。
图7为本发明的布局阶段有用时钟偏差规划SRAM时钟延时调节影响示例图。
图8为本发明的布局规划阶段基于TOMEM、FROMMEM平均裕量调节SRAM时钟延时的示意图。
图9为本发明的布局规划阶段TOMEM违规路径寄存器的调节示意图。
图10为本发明的布局规划阶段FROMMEM违规路径寄存器的调节示意图。
图11为本发明的局部裕量借用算法示意图。
图12本发明的布局规划阶的时序约束例图。
图13为本发明的布局规划阶段三步调节示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明是基于ARM1136JF-S这样一个多SRAM处理器的平台来实施该有效方法的。
如图1所示,为本发明的整体框架图,用于设计的数据经过布图规划,有关联的SRAM将会被放置好。然后进入布局阶段,通过时钟偏差规划调整关键路径,这个过程需要迭代几次才能达到理想的效果。最后布线形成最终的版图并进行静态时序分析,将保持时间违规的地方处理干净,最终得到准确详细的性能提升参数。
如图2和表1所示,为本发明的时钟偏差调节示意电路图以及时钟偏差方案示例表。同一时钟域中,时钟源到由它驱动的任意时序单元最大延时差称为全局偏差。同一时钟域中,存在路径的两个相关时序单元的时钟延时差称为局部偏差。tCLK1、tCLK2、tCLK3分别是时钟源到寄存器1、2、3的时钟延时,由于寄存器的延时、建立时间、保持时间均较小,在不影响分析的前提下,暂时将其忽略。情形A:时钟树完全平衡,全局偏差为0,寄存器1到寄存器2的路径是设计的关键路径,时钟周期至少是2ns才能满足建立时间和保持时间的约束要求;情形B:利用了有用时钟偏差调节,时钟周期只需1.3ns即可满足建立时间的要求,同时满足了保持时间的要求;情形C:寄存器1到寄存器2的路径中δ<0,最小时钟周期是2.2ns,降低了设计性能,这是有害的。寄存器2到寄存器3的路径中,δ=0.7ns,太大,发生了保持时间违规。由这个示例分析可得,有益时钟偏差降低了周期,提升了设计频率,有害时钟偏差会降低性能;有益时钟偏差带来了保持时间违规的可能,然而比较容易修复。合理调整时钟偏差,使组合逻辑延迟较长的路径拥有有益的时钟偏差,而组合逻辑延迟较短的路径拥有零时钟偏差或有害的时钟偏差,则设计的性能就能够得到提升,同时会提高稳定性。时钟偏差规划就是研究如何合理地调整时钟偏差,从而满足对设计的特殊需求。
tCLK1 | tCLK2 | tCLK3 | 全局偏差 | 局部偏差 | 时钟周期 | 保持时间 | |
A | 1ns | 1ns | 1ns | 0 | 0 | 2ns | 满足 |
B | 1ns | 2ns | 1ns | 1ns | 1ns | 1.3ns | 满足 |
C | 1.5ns | 1.3ns | 2ns | 0.7ns | 0.7ns | 2.2ns | 不满足 |
表1
如图3和4所示,图3为本发明的布局规划阶段SRAM的三种基本关系示意图。在含有SRAM的设计中,通常将以SRAM输入端口(时钟端口除外)为终点的时序路径分组成TOMEM,将以SRAM时钟端口为起点的时序路径分组成FROMMEM。处理器中,SRAM众多,TOMEM和FROMMEM的路径涉及了大量的寄存器、锁存器(ARM1136JF-S中FROMMEM的终点均对应锁存器,这是这个设计的独特之处)。布图规划阶段,SRAM位置的常规布局是由SRAM之间的连接关系决定的,有连接关系的SRAM邻近摆放,如(a)所示;尽量将一个模块内的SRAM邻近摆放,如(b)所示,SRAM3、SRAM4处在同一模块A/B;对于同一模块内拆分的小块SRAM则邻近对称摆放,如(c)所示。常规布局根据直观的连接关系摆放,然而有些SRAM之间的关系并不能这么直观地发现,如图4所示。图4中,FROMMEM路径上SRAM1、SRAM2的终点对应同一个寄存器Reg1,当SRAM1与SRAM2之间没有传统的那种直观联系时,如果这两个SRAM在版图上相距甚远,很可能造成很大的线延时,发生时序违规,TOMEM的亦然。为了找到这种隐藏的联系,首先找到设计中TOMEM、FROMMEM的所有时序路径,再由这些时序路径找到对应的寄存器(锁存器),逐个搜寻与单个寄存器有路径关系的SRAM。如果有多个SRAM对应一个寄存器(如图4中的SRAM1、SRAM2对应Reg1),则将这些SRAM放在一个组内,然后在常规SRAM布局的基础之上,将同一组内的SRAM尽量邻近放置。
图5和6所示的是用来寻找图4所示那些不太容易直接看出联系的SRAM的示意图。根据TOMEM、FROMMEM路径分组的脚本将搜寻具有隐藏联系的SRAM,处理得到TOMEM的分组结果和FROMMEM的分组结果,进而指导SRAM布局。如图5所示,首先是得到TOMEM的所有路径,找出这些路径的起始点,做去重处理,重复的起始点只保留一个。然后取一个起始点,得到以这个起始点为起点的在TOMEM里的所有路径,得到这些路径的终点,找出这些终点对应的单元(cell),这些即是对应的SRAM,将这些SRAM的全名存入一个新创建的列表(cells_list)并且继续做去重处理,得到的就是一个起点对应的所有SRAM。如果SRAM数目大于1,则这些SRAM之间存在隐藏联系,将该列表存入新的列表group_tomems_result中;如果SRAM数目为1,不做处理。最后对列表group_tomems_result做去重处理,然后将存储在其中归组之后的结果输出在文件file_tomem_group_result里,结果将反馈给物理设计人员。根据反馈回来的结果,在版图上调整SRAM的位置,从而改善TOMEM路径的时序。对于图7来说,首先得到FROMMEM的所有路径,找出这些路径的终点,去重,将结果存入列表unique_endpoints中。然后从unique_endpoints中取一个元素,得到以这个元素为终点的在FROMMEM里的所有路径,得到这些路径的起始点,找出这些起始点对应的单元,这些即是对应的SRAM。将这些SRAM放入一个新创建的列表cells_list中。继续对列表cells_list做去重处理,得到的就是一个终点对应的所有SRAM。如果SRAM数目大于1,则这些SRAM之间存在隐藏联系,从而将该列表存入新的列表group_frommems_result中;SRAM数目为1,不做处理。最后对列表group_frommems_result做去重处理,输出结果,反馈给物理设计人员。根据分组结果调整SRAM摆放的位置,从而使得FROMMEM路径的时序得到改善。
图7所示了在时钟偏差规划时率先调节SRAM的时钟长度的好处。传统的时钟偏差规划算法为了简化模型,方便计算,将SRAM、IP等模块单元等同于普通寄存器。模块单元的端口众多,存在大量以这些模块端口作为终点或起点的时序路径,调节模块的时钟延时对整个设计影响非常大。传统的时钟偏差规划仅仅只分析模块前、后级最差的时序路径,会导致QoR的严重下降。图中展示了不同时钟偏差规划算法对TOMEM、FROMMEM路径的影响,TOMEM存在多条违规路径,违规值相对较小,最大为-0.10ns,FROMMEM路径中大部分满足时序或存在很小的违规,个别路径违规值很大,最大的达到-0.30ns,总的违规值(TotalNegativeSlack,TNS)为-0.60ns。按照常规的偏差规划算法,SRAM的时钟树长度应该减小0.10ns,这样TOMEM和FROMMEM路径的最大违规均为-0.20ns,平衡了最差路径。然而,此时TOMEM存在大量的违规较大的路径,TNS变为-0.89ns,恶化了48.3%,QoR变差较明显,为了消除这些违规,需要大量大幅度地调节SRAM前一级的寄存器,这样的调节还会出现因为修复少量FROMMEM路径建立时间违规,过度减小SRAM时钟延时,从而产生大量TOMEM路径保持时间违规的情况。为了尽量不损失QoR,在提升性能时尽可能少地调节时序单元,以尽量减小工艺偏差带来的影响,本发明设计的对SRAM时钟延时规划方案首先对SRAM前、后级违规路径进行采样,采样其若干条时序最差的路径,计算这些路径裕量的平均值,依据这个有代表性的平均裕量调节SRAM时钟延时。如对图(a)的调节,样本取3,则调节结果为图(c),TNS为-0.65ns,恶化了8.33%,可以接受。本发明设计的时钟偏差规划方案优先调节SRAM的时钟延时,再对违规路径上的寄存器进行时钟偏差规划,采用的做法是双向调节,即处理违规路径时,增大当前寄存器时钟延时,减小前级寄存器时钟延时。单向调整是仅仅增大寄存器时钟延时的做法。双向调节相对于单向调节可以减小时钟偏差规划给时钟树带来的额外面积和线长的增加。ARM1136JF-S中,FROMMEM路径的终点均是锁存器的数据端。锁存器使能时,相当于一个逻辑单元,信号可以直接传输通过锁存器,因此锁存器可以平衡前、后级路径的裕量。因此,仅仅分析FROMMEM路径并不能反映真实的时序,要分析接连的SRAM、锁存器、寄存器的时序才有意义。确保FROMMEM路径不违规的前提下(可以增加锁存器时钟延时),可以用锁存器到寄存器路径的时序来代表从SRAM出发路径的时序,因此下文所指的FROMMEM裕量即指这条路径的裕量,FROMMEM寄存器即指这条路径上的寄存器。在以FROMMEM寄存器时钟端口作为起始点的路径上,将这条路径的终点对应的寄存器称为FROMMEM后第二级寄存器。
图8所示了基于TOMEM、FROMMEM平均裕量调节SRAM时钟延时的示意图,首先是从设计中所有的SRAM中取出一个SRAM,得到它的时钟端口、除时钟端口外的输入端口。然后用脚本搜寻到SRAM的不超过样本数量的路径,每个输入端口取最差的一条,得到这些路径的建立时间裕量,然后分别统计出这些裕量总和tt_slack和数目num_of_slack,据此计算出TOMEM的平均裕量。接下来计算FROMMEM的平均裕量。搜寻从SRAM出发的、到锁存器的路径,找到锁存器,继而搜索从这些锁存器到寄存器的关键路径,根据这些关键路径的裕量计算出从SRAM出发的、一个具有代表性的平均裕量。首先得到从SRAM出发的所有路径,根据这些路径的终点得到对应的锁存器数据输入端口,再由这些端口得到锁存器。然后对锁存器逐个操作。先取出一个锁存器,得到时钟输入端口(即锁存器使能端口)和数据输入端口。得到由这个锁存器时钟输入端口作为起点的时序路径,求出这条路径的裕量。计算锁存器借给起点的时间(timegiventostartpoint),由这个数值和之前得到的裕量计算出真实的建立时间裕量。最后将真实的建立时间裕量存储在一个列表slacks中。再将列表slacks中的元素按照升序排列,计算出列表中的元素数目,并与设定的样本数目sample_num对比,num_of_slack取slacks的真实元素数目和样本数目的最小值。取排序后的列表sorted_slacks中的前num_of_slack个元素,求和。根据求得的裕量总和tt_slack和裕量数目num_of_slack,计算出平均建立时间裕量ave_slack_frommem_toreg。最后根据计算出的TOMEM、FROMMEM平均建立时间裕量,调整SRAM的时钟端口延时。综上,可在原先设定好的SRAM端口延时基础之上,加上($ave_slack_frommem_to_reg-$ave_slack_tomem)/2,即得调整之后的SRAM时钟端口延时。
图9和10分别为通过调节SRAM前、后级寄存器来消除TOMEM、FROMMEM违规路径的示意图。图8已经给出了调节SRAM时钟端口延迟的方法看,当确定SRAM的时钟端口延时后,将不再改变这个值。如图9所示,首先是得到设计中所有TOMEM违规路径,根据这些违规路径得到寄存器的时钟端口,做去重处理,从而得到一个元素都不重复的、SRAM前一级寄存器时钟端口的集合。然后取出一个寄存器的时钟端口,得到以它作为起点的、在TOMEM中的违规路径,因而得到这条路经的裕量和寄存器时钟端口的时钟延时以及到这个寄存器的输入数据端口。再根据路径的裕量和寄存器时钟端口的时钟延时,计算出为使路径不违规,寄存器时钟端口需要设置的新的时钟延时值。同时记录下这个寄存器的输入数据端口,将时钟信号端口和新的时钟延时信息输出到文件中。这些文件可以直接在EDA工具中执行,而记录了寄存器输入数据端口的列表tomem_regs_ds,将用来调节SRAM前第二级寄存器:即将tomem_regs_ds作为终点的违规路径的起点对应的寄存器。如图10所示,得到设计中所有的FROMMEM路径之后,根据路径得到SRAM后一级锁存器的输入数据端口。接着取出一个锁存器的输入数据端口,得到以它作为终点的、在FROMMEM中的、裕量最小的路径,得到这条路径中锁存器借用的时间,将该时间存储在元素名为该锁存器时钟端口(即使能信号端口)的数组中。依次处理所有的锁存器输入数据端口。再由锁存器输入数据端口得到锁存器时钟信号端口,搜寻所有以这些锁存器时钟信号端口作为起点的路径,得到这些路径的终点(即为寄存器输入数据端口),去重。然后取出一个寄存器输入数据端口,据此得到寄存器的时钟端口,得到所有从锁存器到寄存器的路径。再将所得路径逐条取出,得到路径的裕量,减去锁存器借给起点的时间,计算出真实的裕量。将这些真实的裕量存储在列表中,对列表中元素排序,取出最小的那个值。如果这个最小值小于0,表示从锁存器到这个寄存器的最差路径建立时间违规,根据寄存器时钟端口的时钟延时和违规值,计算该寄存器时钟端口的新的时钟延时,以使路径不违规。得到的输出文件可以直接执行实施调节,记录了寄存器时钟端口的列表将用来调节SRAM后第二级寄存器:即将其作为起点的路径的终点寄存器。
表2所示了对SRAM前、后两级寄存器的调节后,如何解决设计中剩下的寄存器到寄存器(REG-REG)路径的时序违规的示意图。针对这样的时序违规,本发明设计了双向调节的局部裕量借用算法。处理违规路径时,算法考虑了当前违规路径和前、后级路径的裕量,时钟偏差规划时,同时调节路径两端寄存器的时钟延时。算法将调节尽量少的寄存器时钟延时,来尽量满足性能的优化需求,执行效率很高。介绍一下本发明设计的针对REG-REG双向调节的局部裕量借用算法,算法将寻找违规路径前、后级裕量,判断是否存在正裕量,存在时将解决是否应该优先借用,借多少的问题。设计中违规路径前、后级裕量的正负总共有4种情况。S-1、S0、S1分别表示违规路径前一级、当前、后一级的最小裕量,为负表示违规,为正表示时序满足,有富余裕量。(S-1,S0,S1)为(---)时,当前违规路径的前、后级均违规,无裕量可借;(--+)时,可以向后借;(+--)时,可以向前借;(+-+)时,前后均可借。有裕量可借时,需要解决优先向哪个方向借裕量,以及借用裕量后对其它违规路径借用裕量产生的影响。为此,需要考虑前、后两级的情况,不妨以(S0,S1,S2)来说明((S-2,S-1,S0)原理一样,S2表示当前违规路径后第二级路径的最小裕量),当(S0,S1,S2)为(-++)时,第二级路径时序满足,可以无后顾之忧地借用第一级的裕量;为(-+-)时(这里的S1可以不是最小裕量,只表示存在的这种路径关系),意味着第一级裕量可能会被当前违规路径和第二级违规路径借用,按照优先解决最大违规路径的原则决定谁优先借用,如果当前路径优先借用了,则对第二级违规路径来说,前一级可借裕量已经减少了,因此必须更新它的前一级裕量。具体来说,可以首先建立一个存储所有违规路径信息(包括起点寄存器、终点寄存器、裕量)的数组matrix,一个存储(-+-)这种裕量关系及其时序信息的数组special_matrix。对于matrix中的元素,按照裕量从小到大的方式处理(即先处理最差路径),搜寻违规路径的前、后级裕量进行时钟偏差规划,调节时钟延时后,要更新matrix、special_matrix,依次处理所有的元素。第一步是建立空数组matrix,special_matrix。第二步是搜寻设计中的违规路径,得到这些路径上起点、终点寄存器对应的输入数据端口和时钟端口。第三步是建立数组special_matrix。得到裕量不小于0的、起点为终点寄存器的时钟端口、终点为起点寄存器的输入数据端口的路径,这些路径就是(-+-)中“+”的那些特殊路径,它们的裕量要随着调节而更新。逐条取违规路径,得到起点寄存器、终点寄存器和裕量,判断special_matrix中是否存在这个元素,不存在则建立;存在则判断已经存在的裕量和新的裕量大小,将较小的裕量赋给元素。第四步是将数组matrix初始化。采用与建立special_matrix数组相同的思想,目的是建立一个元素不重复的、存储违规路径信息的数组,元素信息包括起点寄存器、终点寄存器和裕量。数组初始化时,元素按照裕量从小到大的顺序排列。
S-1 | S0 | S1 |
- | - | - |
- | - | + |
+ | - | - |
+ | - | + |
表2
图11为本发明的局部裕量借用算法示意图,forward_slack、present_slack、backward_slack分别代表前级裕量、当前违规路径裕量、后级裕量。第一步是判定前级裕量、当前违规路径裕量、后级路径裕量之间的关系。如果是(---)的情况,意味着当前违规路径的前、后级均是违规路径,无法从前、后级借裕量,不执行操作。如果是(--+)的情况,则可以从后一级借裕量。首先判断后级裕量是否可以补偿当前路径和前级路径的违规,可以则调节违规路径两端寄存器的时钟延时,使前级路径和当前路径均满足建立时间的要求;如果不可以,则再次判断后级裕量补偿当前路径违规值后是否还有余量,有则调节两端寄存器,使当前路径满足建立时间的要求,同时将余量借给前级路径,减小其违规值;如果后级裕量不足以补偿当前违规路径,则调节违规路径终点寄存器将后级裕量借给当前违规路径,减小当前路径违规值。如果是(+--)的情况,采用类似于(--+)的方法实施调节,尽量使当前路径满足建立时间的要求,有余量则借给后级路径。如果是(+-+)的情况,首先判断后级裕量能否满足消除当前违规路径的需求,如果可以,则只调节终点寄存器;如果后级裕量不足够大,继续判断前级裕量能否消除当前路径的违规,能则只调节起点寄存器;如果仅仅调节起点寄存器或仅仅调节终点寄存器均不能满足当前违规路径的裕量需求,则同时调节起点、终点寄存器,继续判断前、后级裕量之和能否满足当前违规路径的裕量需求,能则先借用全部后级裕量,再借用部分前级裕量,不能则全部借用前、后级裕量。
以图12的时序约束图作为例子进行分析说明算法对该时序约束图的调节过程,如图13所示,图12中,A-I均是寄存器,初始时钟延时都是1.00(默认的理想平衡时钟树),寄存器之间的连线表示存在路径关系,标注在寄存器路径之间的S表示该路径的裕量。首先,根据时序约束图描述的违规路径信息建立数组:matrix(C,D)=-0.09matrix(F,G)=-0.06matrix(B,C)=-0.04
special_matrix(D,F)=0.06
regs_latency(B)=1.00regs_latency(C)=1.00regs_latency(D)=1.00
regs_latency(F)=1.00regs_latency(G)=1.00
接下来算法实施调节:
1)首先处理违规最大的路径C->D,present_slack=-0.09,forward_slack=-0.04,backward_slack=0.04,关系为(--+),根据裕量大小,将后级0.04的裕量全部借用。D时钟延时增加0.04,更新matrix(C,D)=-0.05,special_matrix(D,F)=0.02,regs_latency(D)=1.04得新的时序约束图,如图15图中(a)所示。
2)处理违规路径F->G。present_slack=-0.06,forward_slack=0.02,backward_slack=0.04,关系为(+-+),根据裕量大小,将后级0.04的裕量和前级0.02的裕量全部借用,G时钟延时增加0.04,F时钟延时减小0.02。更新matrix(F,G)=0.00,special_matrix(D,F)=0.00,regs_latency(G)=1.04,regs_latency(F)=0.98,得新的时序约束图,如图15图中(b)所示。
3)处理违规路径B->C。present_slack=-0.04,forward_slack=0.12,backward_slack=-0.05,关系为(+--),根据裕量大小,将借用前级0.09的裕量,当前路径分配0.04,后级路径分配0.05。B时钟延时减小0.09,C时钟延时减小0.05。更新matrix(B,C)=0.00,matrix(C,D)=0.00,regs_latency(B)=0.91,regs_latency(C)=0.95,得新的时序约束图如图15图中(c)所示。经过算法处理之后,该示例中的违规路径均已处理干净,得到最终的数组信息:matrix(C,D)=0.00matrix(F,G)=0.00matrix(B,C)=0.00
special_matrix(D,F)=0.00
regs_latency(B)=0.91regs_latency(C)=0.95regs_latency(D)=1.04
regs_latency(F)=0.98regs_latency(G)=1.04
将regs_latency中的信息反标到设计中,即可处理这些违规路径。
实施调节时,该局部裕量借用算法只考虑借用违规路径前、后级的裕量,调节的寄存器数目尽量少,调节的时钟延时幅度尽量小。
在时钟树综合之后进行时钟树偏差的修正来满足时序要求。该方案包括两部分:1)针对少量违规,利用ECO脚本进行小范围的修复来满足时序要求;2)针对大量时序违规,ECO实现的代价太大,用算法修正之前设定的时钟偏差,重新实施时钟树综合,从而得到一个时序良好的时钟树综合结果。
ARM1136JF-S的签核工艺角:WC、WCL、ML、BC、LT,签核模式:function(724MHz)、capture(10MHz)、shift(10MHz)。总计需要创建15个场景,每个场景分配一个CPU。在DMSA环境下,先用fix_eco_timing这条ECO命令来修复保持时间违规,逐渐减小建立时间裕量和保持时间余量。最后,当建立时间裕量很小而仍然存在保持时间违规时,采用脚本修复的方案。
实验数据如表3所示:第1次迭代和第2次迭代中的第一次PrimeTime内部迭代使用了命令修复,第2次迭代的第二次和第3次迭代使用了脚本修复。如图可知,经3次迭代,所有保持时间违规均已修干净,而且没有产生建立时间违规。这种基于DMSA的快速修复方案,修复保持时间违规的时间都是分钟量级的,即使存在较多违规(3192条违规路径,1555个违规终点),该方案仍然仅花费了5min就几乎完全将其修干净。最为重要的一点是,该方案不会因为修复保持时间违规而产生降频的影响。
表3
如表4所示,在高速定制SRAM基础上,分别采用了有用时钟偏差规划和零时钟偏差两种策略实施物理设计,在STA阶段记录保持时间违规修复的代价。由图10b可得,相对于零时钟偏差策略,有用时钟偏差规划在保持时间违规方面,违规的终点数目多了14.66%,违规的路径数目多了30.51%,总的违规值多了52.63%,修复违规时多使用了18.46%的缓冲器。结果显示,有用时钟偏差规划恶化了保持时间,产生了更多的保持时间违规,增加了修复这些违规使用的缓冲器数目。
CSS | 0skew | Cost | |
Hold violations endpoints | 1564 | 1364 | 14.66% |
Hold critical paths | 3238 | 2481 | 30.51% |
Hold WNS | -0.100883 | -0.056664 | |
Hold TNS | -19.005001 | -12.451428 | 52.63% |
Buffer used | 1636 | 1381 | 18.46% |
表4
表5所示了不同策略下的设计时间。
表5
Claims (1)
1.一种基于时钟规划偏差算法的处理器性能优化方法,其特征在于,包括以下步骤:
(1)首先是物理设计人员接收逻辑设计人员综合之后的网表和约束文件,即设计数据;在布图规划阶段,依据SRAM前、后级寄存器与多个SRAM之间的路径联系,将SRAM归组,具体为找到SRAM的所有时序路径,再由这些时序路径找到对应的寄存器及锁存器,逐个搜寻与单个寄存器或锁存器有路径关系的SRAM,如果有多个SRAM对应一个寄存器或锁存器,则将这些SRAM放在一个组内,然后在常规SRAM布局的基础之上,将同一组内的SRAM尽量邻近放置;
(2)其次是布局阶段,进行时钟偏差规划,分为两个阶段:时钟树综合之前,根据SRAM与前、后级寄存器若干条路径的平均裕量来调节SRAM时钟延时,同时采取局部裕量借用算法来规划寄存器时钟偏差;如果时序满足,则可以开始时钟树综合,否则返回再次进行调节;在时钟树综合时,将布局阶段的时钟延时调节策略映射到真实的时钟树上;时钟树综合之后,如果有大量时序违规,采用时钟偏差规划算法修正这些违规,然后重新进行时钟树综合;如果只是少量的时序违规,可以采用时钟树工程变更的方法来处理这些违规,如果没有违规,进入下一步;
其中,局部裕量借用算法具体为:违规路径前、后级裕量的正负总共有4种情况,S-1、S0、S1分别表示违规路径前一级、当前、后一级的最小裕量,为负表示违规,为正表示时序满足,有富余裕量,(S-1,S0,S1)为(---)时,当前违规路径的前、后级均违规,无裕量可借;(--+)时,可以向后借;(+--)时,可以向前借;(+-+)时,前后均可借;采取局部裕量借用算法来规划寄存器时钟偏差时,第一步是判定前级裕量、当前违规路径裕量、后级路径裕量之间的关系,如果是(---)的情况,意味着当前违规路径的前、后级均是违规路径,无法从前、后级借裕量,不执行操作;如果是(--+)的情况,则可以从后一级借裕量,首先判断后级裕量是否可以补偿当前路径和前级路径的违规,可以则调节违规路径两端寄存器的时钟延时,使前级路径和当前路径均满足建立时间的要求,如果不可以,则再次判断后级裕量补偿当前路径违规值后是否还有余量,有则调节两端寄存器,使当前路径满足建立时间的要求,同时将余量借给前级路径,减小其违规值;如果后级裕量不足以补偿当前违规路径,则调节违规路径终点寄存器将后级裕量借给当前违规路径,减小当前路径违规值;如果是(+--)的情况,采用类似于(--+)的方法实施调节,尽量使当前路径满足建立时间的要求,有余量则借给后级路径;如果是(+-+)的情况,首先判断后级裕量能否满足消除当前违规路径的需求,如果可以,则只调节终点寄存器;如果后级裕量不足够大,继续判断前级裕量能否消除当前路径的违规,能则只调节起点寄存器;如果仅仅调节起点寄存器或仅仅调节终点寄存器均不能满足当前违规路径的裕量需求,则同时调节起点、终点寄存器,继续判断前、后级裕量之和能否满足当前违规路径的裕量需求,能则先借用全部后级裕量,再借用部分前级裕量,不能则全部借用前、后级裕量;
(3)布线阶段,布线完成之后对本设计进行静态时序分析;如果没有任何时序问题,则结束当前工作;如果只有少量的时序问题,可以对时钟树进行ECO操作,并重新进行静态时序分析;如果还存在大量的时序违规,则需要再次运用时钟偏差规划算法修正,之后返回重新进行时钟树综合;
(4)后续阶段,为处理布线后的保持时间违规,可采用基于分布式多场景时序分析的、ECO命令和脚本相结合的修复方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210589451.4A CN103324774B (zh) | 2012-12-29 | 2012-12-29 | 一种基于时钟规划偏差算法的处理器性能优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210589451.4A CN103324774B (zh) | 2012-12-29 | 2012-12-29 | 一种基于时钟规划偏差算法的处理器性能优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103324774A CN103324774A (zh) | 2013-09-25 |
CN103324774B true CN103324774B (zh) | 2016-05-25 |
Family
ID=49193517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210589451.4A Expired - Fee Related CN103324774B (zh) | 2012-12-29 | 2012-12-29 | 一种基于时钟规划偏差算法的处理器性能优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324774B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105404352B (zh) * | 2014-09-11 | 2018-05-11 | 北京华大九天软件有限公司 | 一种检查时钟树综合结果瓶颈从而提高综合质量的方法 |
US9571074B2 (en) * | 2014-10-27 | 2017-02-14 | Samsung Electronics Co., Ltd. | Efficient skew scheduling methodology for performance and low power of a clock-mesh implementation |
CN106777441B (zh) * | 2015-11-24 | 2020-04-21 | 龙芯中科技术有限公司 | 时序约束管理方法及装置 |
CN105512381B (zh) * | 2015-12-03 | 2019-08-09 | 上海兆芯集成电路有限公司 | 时钟延迟验证方法 |
CN106874593B (zh) * | 2017-02-13 | 2020-11-13 | 上海兆芯集成电路有限公司 | 数字电子装置设计调整方法以及服务器 |
US10170166B1 (en) * | 2017-09-08 | 2019-01-01 | Winbond Electronics Corp. | Data transmission apparatus for memory and data transmission method thereof |
CN107831824B (zh) * | 2017-10-16 | 2021-04-06 | 北京比特大陆科技有限公司 | 时钟信号传递方法、装置、复用芯片和电子设备 |
CN107784185B (zh) * | 2017-11-17 | 2021-06-11 | 海信视像科技股份有限公司 | 一种门级网表中伪路径的提取方法、装置及终端设备 |
CN107908884B (zh) * | 2017-11-20 | 2020-04-07 | 北京华大九天软件有限公司 | 一种通过调整时钟树分支改善时序的交互式eco方法 |
CN110377922B (zh) * | 2018-04-12 | 2023-06-30 | 龙芯中科技术股份有限公司 | 保持时间违例修复方法、装置及设备 |
CN109086436B (zh) * | 2018-08-15 | 2020-05-12 | 陕西公众仕达软件科技有限公司 | 一种公路工程肢解变更违规行为确定方法及系统 |
CN109446673B (zh) * | 2018-11-01 | 2023-04-18 | 京微齐力(北京)科技有限公司 | 一种通过部分映射时钟使能信号来改善布局完成率的方法 |
CN109376467B (zh) * | 2018-11-19 | 2022-12-06 | 武汉工程大学 | 集成电路中时钟树布局流程方法和时钟树偏差补偿装置 |
CN109815545B (zh) * | 2018-12-25 | 2023-04-07 | 河南工程学院 | 基于寄存器重定时的多流水级时序电路再综合操作方法 |
CN109783984B (zh) * | 2019-02-19 | 2023-02-07 | 中国人民解放军国防科技大学 | 一种适用于cpu核频率提升的布局布线方法 |
CN111858412B (zh) * | 2020-06-23 | 2022-06-21 | 深圳市飞仙智能科技有限公司 | 调整时序的方法、装置、计算机设备及介质 |
CN111881645B (zh) * | 2020-07-03 | 2021-05-04 | 广芯微电子(广州)股份有限公司 | 一种基于噪声时序的时钟树抗干扰方法及装置 |
CN112632887B (zh) * | 2020-12-18 | 2023-04-18 | 展讯通信(上海)有限公司 | 存储器的时钟延时调整方法及装置、存储介质、终端 |
CN113177383B (zh) * | 2021-04-29 | 2023-01-31 | 飞腾信息技术有限公司 | 一种基于dummy的时钟设计方法 |
CN113673193B (zh) * | 2021-08-09 | 2022-11-22 | 东南大学 | 一种基于寄存器灵活时序库的电路时序优化方法 |
CN113917321B (zh) * | 2021-12-13 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 扫描链测试方法、装置、计算机设备及存储介质 |
CN114997087B (zh) * | 2022-08-03 | 2022-10-25 | 飞腾信息技术有限公司 | 一种时钟树的优化方法、优化装置和相关设备 |
CN115470747B (zh) * | 2022-09-29 | 2023-12-15 | 西安工程大学 | 一种实现时序快速收敛的时钟树综合方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682158A (zh) * | 2012-04-16 | 2012-09-19 | 东南大学 | 基于时钟偏差规划算法的数字电路工作频率优化方法 |
CN102799698A (zh) * | 2011-05-26 | 2012-11-28 | 国际商业机器公司 | 一种用于专用集成电路的时钟树规划的方法和系统 |
-
2012
- 2012-12-29 CN CN201210589451.4A patent/CN103324774B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799698A (zh) * | 2011-05-26 | 2012-11-28 | 国际商业机器公司 | 一种用于专用集成电路的时钟树规划的方法和系统 |
CN102682158A (zh) * | 2012-04-16 | 2012-09-19 | 东南大学 | 基于时钟偏差规划算法的数字电路工作频率优化方法 |
Non-Patent Citations (4)
Title |
---|
Clock Skew Scheduling with Optimizing-potential Prediction;Kai Huang,et al.;《Applied Mechanics and Materials》;20120926;全文 * |
Highest frequency optimization of VLSI by a novel clock skew scheduling scheme;Kai Huang,Zhikuang Cai;《Automatic Control and Artificial Intelligence (ACAI 2012), International Conference on》;20120305;全文 * |
基于电路裁剪的统计时钟偏差估计方法;方君 等;《微电子学》;20071031;第37卷(第5期);全文 * |
面向裕量优化的高效时钟偏差规划和延迟提取;王逵,等;《计算机辅助设计与图形学学报》;20081031;第20卷(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103324774A (zh) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324774B (zh) | 一种基于时钟规划偏差算法的处理器性能优化方法 | |
CN102799698B (zh) | 一种用于专用集成电路的时钟树规划的方法和系统 | |
Tsay | Exact zero skew | |
KR101471237B1 (ko) | 적응형 전압 스케일링 최적화를 이용하는 집적 회로들을 설계하기 위한 시스템 및 방법 | |
US5751596A (en) | Automated system and method for identifying critical timing paths in integrated circuit layouts for use with automated circuit layout system | |
CN109376467B (zh) | 集成电路中时钟树布局流程方法和时钟树偏差补偿装置 | |
US20060225022A1 (en) | Method, apparatus and program for determining the relationship of correspondence between register transfer level description and behavioral description | |
CN113688593B (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 | |
WO2022100630A1 (zh) | 高效评估芯片Feed-through流水级数的方法及装置 | |
CN113569524B (zh) | 芯片设计中基于综合网表提取时钟树的方法及应用 | |
CN112651207B (zh) | 一种异步电路物理实现方法及系统 | |
CN111046624A (zh) | 芯片模块接口时钟结构的构建方法、装置、设备及介质 | |
Gibiluka et al. | A bundled-data asynchronous circuit synthesis flow using a commercial EDA framework | |
Jun et al. | Partial connection-aware topology synthesis for on-chip cascaded crossbar network | |
CN116341438A (zh) | 提高fpga原型验证时序收敛的方法、系统、设备和存储介质 | |
US6687889B1 (en) | Method and apparatus for hierarchical clock tree analysis | |
CN101504680A (zh) | 时钟偏差局域性优化分析方法 | |
Sze et al. | Path based buffer insertion | |
Paik et al. | Implementation of pulsed-latch and pulsed-register circuits to minimize clocking power | |
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 | |
CN109388839A (zh) | 时钟系统性能分析方法及装置 | |
Nielsen et al. | Towards behavioral synthesis of asynchronous circuits-an implementation template targeting syntax directed compilation | |
Yoshikawa et al. | Timing optimization on mapped circuits | |
CN112862080A (zh) | EfficientNet的注意力机制的硬件计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160525 Termination date: 20181229 |
|
CF01 | Termination of patent right due to non-payment of annual fee |