布局布线后的时序优化方法、系统、设备及存储介质与流程

文档序号:29207738发布日期:2022-03-12 02:29阅读:162来源:国知局
布局布线后的时序优化方法、系统、设备及存储介质与流程

1.本发明涉及现场可编程门阵列(fpga,field programmable gate array)集成电路软件工具设计领域,特别是涉及布局布线后的时序优化方法、系统、设备及存储介质。


背景技术:

2.目前并没有确定的布局布线之后的时序优化方法,在布局布线产生结果之后的改动多为一种带有尝试性质的不确定会有正面效应的修改。同时,基于布局布线结果的时序优化有诸多困难,如扰乱之后难以找到新的可行解,不能确定搜索到的可行解的时序结果比之前的结果更为优秀等。
3.现有的布线方法在同时考虑时序和拥塞的情况下迭代次数较多时通常会出现拥塞因素淹没时序因素的现象,导致最后产生的布局布线结果因为拥塞因素不能满足时序要求。


技术实现要素:

4.基于此,本发明提供了一种布局布线后的时序优化方法,解决了优化在迭代后期,由于时序和拥塞对布线路径影响程度差异,导致的路径时序无法满足需求的问题。同时,本发明还提供了一种布局布线后的时序优化系统。
5.本发明实施例提供的一种布局布线后的时序优化方法,包括:
6.存储当前的布线结果;
7.搜索所述布线结果的待优化net,其中net为用户设计中端口之间的连接关系;
8.在所述布线结果中设置禁用特殊节点;
9.为待优化load搜索新路径,其中load为接收信号的端口;并搜索该新路径上被其他net占用的点,标记为冲突点,拆除所有冲突的net;
10.收集解路径不完整的net,为所述解路径不完整的net搜索合法解路径,时序差的net优先搜索;所述合法解路径为与其他解路径相互不冲突且完整的解路径;
11.重新进行布线。
12.进一步地,所述搜索所述布线结果的待优化net的步骤,包括:
13.设置阈值,若driver与load间根据距离评估的所有子路径布线后时序违例风险与时序约束的差值小于所述阈值,则从路径的最后一级net开始,逐个net向前搜索;其中driver为信号发出的端口;
14.若当前net在当前路径中load的延时估算值小于当前实际延时值,则当前net为待优化net。
15.进一步地,所述特殊节点为优化前扇出数量大的前10%-30%的节点,或者driver与load路径上横纵坐标差值绝对值之和大于30的节点,或者driver与load间根据距离评估的所有子路径布线后时序违例风险与时序约束的差值大于所述阈值且两者差值小于800皮秒路径上的节点。
16.进一步地,所述为待优化load搜索新路径,包括:
17.将当前待优化load的解路径擦除到当前解路径上距离当前load最近的分叉点;
18.在擦除后的解路径上以单向扩展的形式搜索到load的最短路径。
19.进一步地,所述重新进行布线的步骤,包括:
20.若新生成的解路径时序比原有解路径的时序更差,则将新生成的解路径删除,将存储的原有布线结果还原;
21.若新生成的解路径时序优于原有解路径的时序,则监测搜索到load的次数达到上限是否达到上限;
22.若没有达到上限,则从下一个load进行新一轮优化;
23.若迭代次数达到上限,则结束优化。
24.本发明实施例提供的一种布局布线后的时序优化系统,包括:
25.还原模块,用于存储当前的布线结果,以及还原优化失败后的路径;
26.优化模块,用于对还原模块存储的当前布线结果进行路径优化,并对优化后路径进行时序分析,重新进行布线。
27.进一步地,所述还原模块中存储优化后的布线结果,具体包括:
28.存储待优化net的解路径,待优化net优化失败后还原目标net的解路径,并对还原路径上的节点属性进行设置、检查还原结果合法性;以及待优化net优化成功后对保存的路径进行清除。
29.进一步地,所述优化模块,进一步包括:
30.路径搜索模块,用于搜索还原模块存储布线结果的待优化net,并在所述布线结果中设置禁用特殊节点;为待优化load搜索新路径,并搜索该新路径上被其他net占用的点,标记为冲突点,拆除所有冲突的net;以及用于收集解路径不完整的net,为所述解路径不完整的net搜索合法解路径,时序差的net优先搜索;
31.迭代控制模块,用于新生成解路径时序与原有解路径的时序比较;
32.若新生成解路径时序比原有解路径时序更差,则控制还原模块将新生成路径删除,将存储的原有布线结果还原;
33.若新生成解路径时序优于原有解路径时序,则监测搜索到load的次数达到上限是否达到上限;
34.若没有达到上限,则控制路径搜索模块从下一个load进行新一轮优化;
35.若迭代次数达到上限,则结束优化。
36.本发明实施例提供了一种布局布线后的时序优化设备,包括:
37.存储器,用于存储计算机程序;
38.处理器,用于执行所述计算机程序实现上述任一项所述布局布线后的时序优化方法的步骤。
39.本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述布局布线后的时序优化方法的步骤。
40.本发明实施例提供的一种布局布线后的时序优化方法,通过拆掉时序余量较大的路径,解决了关键路径最优解被其他路径占用的问题,改善了关键路径的时序。整个优化过
程为循环迭代,每次迭代之后,均会判断优化结果的时序是否好于优化前的布线结果;若时序变差,则还原到优化前的布线结果,改变优化条件进入下一轮迭代;若时序变好,则保持优化后的结果,直接进入下一轮迭代;具有明确的优化效果,只要最终的布线结果存在变动,就一定会比原有的结果时序更好,增加了布局布线的稳定性。本技术实施例提供的布局布线后的时序优化系统、设备及存储介质,具有上述有益效果,在此不再赘述。
附图说明
41.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本技术实施例提供的一种布局布线后的时序优化方法的流程图;
43.图2为本技术实施例提供的一种布局布线后的时序优化迭代控制工作流程图;
44.图3为本技术实施例提供的一种布局布线后的时序优化系统的示意图;
45.图4为本技术实施例提供的另一种布局布线后的时序优化系统的示意图;
46.图5为本技术实施例所提供的一种布局布线后的时序优化设备的结构图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.本技术中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本技术实施例中所有方向性指示(诸如上、下、左、右、前、后
……
)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
49.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
50.请参考图1-图2,图1为本技术实施例提供的一种布局布线后的时序优化方法的流程图;图2为本技术实施例提供的一种布局布线后的时序优化迭代控制工作流程图;
51.所述方法具体包括如下步骤:
52.步骤s1:存储当前的布线结果;
53.在优化之前,将当前的布线结果先存储,保证优化的正向结果,即在每次优化迭代之后,判断优化结果的时序是否好于优化前的布线结果,若时序变差,则可以将存储的优化前的布线结果还原。
54.步骤s2:搜索所述布线结果的待优化net;
55.用户根据需求设置阈值,若slack值小于设置的阈值,则此路径为待优化路径;然后从待优化路径最后一级net,逐个net向前搜索,若当前net在当前路径中load的延时估算值小于当前实际延时值,则当前net为待优化net。其中driver为信号发出的端口;load为接收信号的端口;slack值为driver与load间根据距离评估的所有子路径布线后时序违例风险与时序约束的差值;net为用户设计中端口之间的连接关系。
56.步骤s3:在所述布线结果中设置禁用特殊节点;
57.对于优化前扇出较大的节点,即扇出数量大的前10%-30%的节点;或距离driver较远的load的路径上的点,即driver与load路径上横纵坐标差值绝对值之和大于30的节点;或slack值大于阈值且两者差值较小的路径上的点,即slack值大于所述阈值且两者差值小于800皮秒路径上的节点设置为禁止节点,保证优化速度以及效果。
58.步骤s4:为待优化load搜索新路径,并搜索该新路径上被其他net占用的点,标记为冲突点,拆除所有冲突的net;
59.为待优化load搜索新路径前,先将当前优化load的解路径擦除到当前解路径上距离当前load最近的分叉点;使用路径搜索算法在擦除后的解路径上以单向扩展的形式搜索到load的最短路径,并记录搜索过程中被其它net占用的点,标为冲突点。将搜索可用路径时得到的冲突点设置为非法状态,完成对其他net的擦除。
60.步骤s5:收集解路径不完整的net,为所述解路径不完整的net搜索合法解路径;
61.再次使用路径搜索算法,为当前解路径不完整的net搜索新的解路径。在搜索之前要对需要搜索解路径的net进行排序,时序差的net优先搜索。其中所述合法解路径为与其他解路径相互不冲突且完整的解路径。
62.可以理解,在本实施例中,路径搜索算法可以为现有的任意一种路径搜索算法,如a*算法,在优化前先将现有布线资源的历史代价值清空,可以避免之前的流程遗留下的代价值对路径搜索结果产生影响,因为a*算法解决冲突的方式是代价值的增加。
63.步骤s6:重新进行布线;
64.若新生成的解路径时序比原有解路径的时序更差,则将新生成的解路径删除,将存储的原有布线结果还原;
65.若新生成的解路径时序优于原有解路径的时序,则监测搜索到load的次数达到上限是否达到上限;若没有达到上限,则从下一个load进行新一轮优化;若迭代次数达到上限,则结束优化。
66.可以理解,在本实施例中,搜索load的次数达到上限,即找到了多条可用路径。在扩展过程中计算延时,限制扩展延时值大于原有延时的点,即可得到时序优于原有路径的优化路径。有些待优化的net并不存在多条可用路径,则对扩展的总次数进行限制。同时,搜索可用路径的数量同样会随着迭代次数的不同而改变。
67.由于路径之间存在冲突的可能,随着解决冲突的迭代次数的增加,又有可能出现
拥塞与时序失衡的情况,所以在优化时往往不能通过一次优化就得到最优结果,需要多次执调才可得到想要的优化效果。由于某些布局布线执行结果的优化空间较小,数次迭代之后就已经无法产生更优的结果,则通过设置迭代次数保证迭代的合理性,从而缩短程序的运行时间。
68.同时,扇出的数量、距离driver较远的load以及slack值与阈值差的上限初始值根据芯片规模定的,在迭代过程中可以进行调整,如当前迭代的结果时序变差的时候调整这三个值,扇出的数量乘0.9、距离driver较远的load乘0.9、slack值与阈值差减50皮秒;如果结果时序变好则恢复到初始值。
69.请参考图3,图3为本技术实施例提供的一种布局布线后的时序优化系统的示意图;该优化系统包括:
70.还原模块201,用于存储当前的布线结果,及优化失败后路径还原;
71.还原模块主要负责记录net改动前的布线结果以及优化失败后的还原工作;
72.采取拷贝的方式对原有布线路径进行记录,还原时只需将当前net现有的布线擦除并将还原模块中保存的原有布线路径重新拷贝一份即可。
73.还原模块的主要功能包括:添加net的解路径,添加net的解路径通过driver获取到当前net的解路径的根节点,添加时对整棵树进行拷贝并保存根节点以及叶子节点与load的对应关系,这样不用保存整棵树的所有节点也可以完成对解路径的遍历。
74.还原目标net的解路径,对还原的路径上的节点的属性进行设置、检查还原结果合法性以及对保存的路径进行清除。即还原目标路径时首先将当前解路径删除,并清空对应节点的属性。然后将还原模块中记录的解路径拷贝一份并与当前还原的net进行绑定。最后再重新设置路径上所有节点的各项属性。
75.还原结果检查即检查当前net是否合法,即与其他解路径不相互冲突及解路径是否完整。
76.优化模块202,用于对还原模块存储的当前布线结果进行路径优化,并对优化后路径进行时序分析,重新进行布线。
77.优化模块主要负责选择需要优化的路径、搜索更优的布线路径以及解决冲突等工作。优化模块为本系统的核心部分,其中保存着待优化路径的筛选条件以及影响优化效果的各项参数,可通过调整各参数的设置实现对不同时序范围的net进行优化。此外,优化流程的各接口也由优化器保存。
78.完成优化之前的数据准备工作,对建立临时布线结果以及全量时序分析。结束优化的整理工作包括清除临时布线结果以及还原模块与优化模块的析构。
79.优化迭代是该系统的主体流程,由优化路径模块以及迭代控制模块两个模块组成,两个模块串行执行。
80.请参考图4,图4为本技术实施例提供的另一种布局布线后的时序优化系统的示意图;所述优化模块202,进一步包括:
81.路径搜索模块,用于搜索还原模块存储布线结果的待优化net,并在所述布线结果中设置禁用特殊节点;为待优化load搜索新路径,并搜索该新路径上被其他net占用的点,标记为冲突点,拆除所有冲突的net;以及用于收集解路径不完整的net,为所述解路径不完整的net搜索合法解路径,时序差的net优先搜索;
82.迭代控制模块,用于新生成解路径时序与原有解路径的时序比较;
83.若新生成解路径时序比原有解路径时序更差,则控制还原模块将新生成路径删除,将存储的原有布线结果还原;若新生成解路径时序优于原有解路径时序,则监测搜索到load的次数达到上限是否达到上限;若没有达到上限,则控制路径搜索模块从下一个load进行新一轮优化;若迭代次数达到上限,则结束优化。
84.请参阅图5,图5为本技术实施例所提供的一种布局布线后的时序优化设备的结构图。
85.该时序优化设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)301(例如,一个或一个以上处理器)和存储器302,一个或一个以上存储应用程序303或数据304的存储介质305(例如一个或一个以上海量存储设备)。其中,存储器302和存储介质305可以是短暂存储或持久存储。存储在存储介质305的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器301可以设置为与存储介质305通信,在时序优化设备300上执行存储介质305中的一系列指令操作。
86.时序优化设备300还可以包括一个或一个以上电源306,一个或一个以上有线或无线网络接口307,一个或一个以上输入输出接口308,和/或,一个或一个以上操作系统309,例如windows servertm,mac 0s xtm,unixtm,linuxtm,freebsdtm等等。
87.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
88.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
89.以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1