1.本技术属于集成电路技术领域,涉及一种可编程逻辑器件的线网延迟估算方法、装置、设备及介质。
背景技术:2.布局和布线是可编程逻辑器件通过设计软件进行设计的关键流程,fpga(fieldprogrammablegatearray,现场可编程门阵列)是常用可编程逻辑器件的主要类型之一,以fpga为例,布局的目的是将fpga设计网表中的设计单元放置到fpga的可编程逻辑模块上,布线的目的是在布局完成后,通过fpga中的可编程互连线配置设计网表中的设计线网,设计线网用于连接设计单元。
3.为了提高fpga的设计性能,fpga的布局流程和布线流程需要计算时序驱动,时序驱动的好坏由设计线网的延迟决定,由于布局流程没有可编程互连线的走线信息,因此会进行延迟估算,即布局流程延迟估算的准确性是对fpga性能影响最重要的因素。
4.传统的延迟估算方法为:通过运行大量的测试用例,根据使用测试用例时设计线网的实际延迟和距离,拟合出距离-延时估算公式,在布局流程和布线流程使用拟合出的估算公式计算延迟。
5.然而基于拟合出的估算公式计算线网延迟虽然有着实现简单的特点,但是在fpga器件中,因为可编程互连线的延迟和距离是离散关系,因此很难产生准确的延迟和距离的数学关系模型,尤其是在可编程互连线走线较长的情况下,此时线网是由很多个可编程互连线级联连接的,而在实际的布线流程中,线网是不同类型的可编程互连线的配置组合,并且每种类型的可编程互连线资源都是有限的,所以实际的线网延迟具有较大的随机性,这也导致在布局流程中,不可能拟合出较为准确的长度-延迟估算公式,即传统的延迟估算方法所计算出的结构仍然有较大的误差,这对布局流程的时序优化产生了不利的影响。
技术实现要素:6.本技术的目的在于提供一种可编程逻辑器件的线网延迟估算方法、装置、设备及介质,以解决现有的线网延迟估算方法所计算的延迟不够准确的技术问题。
7.为解决上述技术问题,本技术的技术方案如下:
8.本技术提供一种可编程逻辑器件的线网延迟估算方法,包括:
9.将可编程逻辑器件划分为若干个区域,并获取所述区域内的可编程互连线和所述区域内已布局的布局资源;
10.根据所述区域内布局资源的位置确定所述区域内由所述可编程互连线组成的线网路径,并计算每一个所述线网路径的延迟,所述线网路径用于为所述区域内拥有连接关系的任两个所述布局资源提供布线资源;
11.根据所述区域内拥有连接关系的所述布局资源之间的线网时序要求在所述布局资源之间适配所述线网路径,将所述线网路径的延迟作为所述布局资源之间的线网延迟。
12.进一步地,所述计算每一个所述线网路径的延迟的步骤,包括:
13.获取所述线网路径中每一个可编程互连线的类型,确定不同类型的所述可编程互连线的延迟;
14.累加每一个所述可编程互连线的延迟,确定所述线网路径的延迟。
15.进一步地,所述根据所述区域内拥有连接关系的所述布局资源之间的线网时序要求在所述布局资源之间适配所述线网路径的步骤,包括:
16.根据所述布局资源之间的线网时序要求和所述布局资源之间的线网设定延迟的差值确定所述布局资源之间的线网时序余量;
17.将延迟最小的所述线网路径适配至所述线网时序余量最小的所述布局资源之间,直至所述区域内所述的所述布局资源之间均适配有所述线网路径。
18.进一步地,所述可编程逻辑器件的线网延迟估算方法还包括:
19.当所述区域内布局资源的位置发生变化时,重新执行上述所述的可编程逻辑器件的线网延迟估算方法。
20.进一步地,重新执行上述所述的可编程逻辑器件的线网延迟估算方法时,所述根据所述区域内拥有连接关系的所述布局资源之间的线网时序要求在所述布局资源之间适配所述线网路径的步骤,包括:
21.根据所述布局资源之间的线网时序要求和两个所述布局资源之间的线网路径延迟的差值确定所述布局资源之间的线网时序余量;
22.将延迟最小的所述线网路径适配至所述线网时序余量最小的所述布局资源之间,直至所述区域内所述的所述布局资源之间均适配有所述线网路径。进一步地,所述根据所述区域内拥有连接关系的所述布局资源之间的线网时序要求在所述布局资源之间适配所述线网路径,将所述线网路径的延迟作为所述布局资源之间的线网延迟的步骤之后,还包括:
23.存储所述线网路径的适配结果,为所述可编程逻辑器件的布线阶段提供所述线网路径的适配结果。
24.基于上述可编程逻辑器件的线网延迟估算方法,本技术还提供一种可编程逻辑器件的线网延迟估算装置,包括:
25.区域划分模块,用于将所述可编程逻辑器件划分为若干个区域,并获取所述区域内所有的可编程互连线;
26.线网路径整合模块,用于根据所述区域内布局资源的位置确定获取所述区域内由所述可编程互连线组成所有的线网路径,并计算每一个所述线网路径的延迟,所述线网路径用于为所述区域内拥有连接关系的任两个所述布局资源提供布线资源;
27.延迟估算模块,用于根据所述区域内拥有连接关系的所述布局资源之间的线网时序要求在所述布局资源之间适配所述线网路径。
28.进一步地,所述可编程逻辑器件的线网延迟估算装置还包括:
29.存储模块,用于存储所述线网路径的适配结果,为所述可编程逻辑器件的布线阶段提供所述线网路径的适配结果。
30.基于上述可编程逻辑器件的线网延迟估算方法,本技术还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其
特征在于,所述处理器执行所述计算机程序时实现如上述任一项所述可编程逻辑器件的延迟估算方法的步骤。
31.基于上述可编程逻辑器件的线网延迟估算方法,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述任一项所述可编程逻辑器件的延迟估算方法的步骤。
32.相比于现有技术,本技术的有益效果在于:
33.本技术提供的可编程逻辑器件的线网延迟估算方法,将可编程逻辑器件划分为若干个区域,确定每个区域内可编程互连线的总量,并根据布局资源的位置进一步获取区域内由可编程互连线组成所有的线网路径,根据线网时序要求为两个布局资源分配合适的线网路径,将线网路径的延迟作为估算结果,由于考虑到了区域内的可编程互连线,因此能更准确地估算出线网延迟。
34.进一步地,本技术提供的可编程逻辑器件的线网延迟估算方法,根据布局流程布局资源的位置变化实时估算线网延迟,模拟布线流程中的线网竞争和解拥塞过程,使得布局流程能根据预估出的可编程互连线的总量使用情况估算出更准确的线网延迟。
35.进一步地,本技术提供的可编程逻辑器件的线网延迟估算方法,能够将时序估算产生的可编程互连线的使用信息传递给布线模块,加快了布线速度,并且进一步确保了布局和布线时序的一致性。
附图说明
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1为本技术实施例提供的可编程逻辑器件的线网延迟估算方法的流程图。
38.图2为本技术实施例提供的一种fpga内部结构的简化示意图。
39.图3为本技术实施例提供的可编程逻辑器件的线网延迟估算方法的另一流程图。
40.图4为本技术实施例提供的fpga架构的简化示意图。
41.图5为本技术实施例提供的可编程逻辑器件的延迟估算方法的一种装置的示意图。
42.图6为本技术实施例提供的可编程逻辑器件的延迟估算方法的另一种装置的示意图。
43.图7为本技术实施例提供的计算机设备的示意图。
44.图8为本技术实施例提供的计算机存储介质的示意图。
具体实施方式
45.下面结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
47.fpga(fieldprogrammablegatearray,现场可编程门阵列)是常用可编程逻辑器件的主要类型之一,主要由可配置逻辑模块clm(configurablelogic module),输入输出模块iob(input/outputblock)和可编程互连线模块srb(signalrelaybox)组成,其中,可编程互连线是fpga的核心结构,该结构包含大量的可编程开关互连网络,能够完成可编程逻辑模块之间的端口信号互连;以下实施例的可编程逻辑器件的线网延迟估算方法以fpga为示例进行说明。
48.图1为本技术实施例提供的可编程逻辑器件的线网延迟估算方法的流程图,如图1所示,本技术实施例提供的可编程逻辑器件的线网延迟估算方法包括:
49.步骤s1:将可编程逻辑器件划分为若干个区域,并获取区域内的可编程互连线。
50.在fpga中,可编程逻辑模块和可编程互连线资源都是规则阵列的,即fpga中可编程互连线资源的数量是可以确定的,因此如果将fpga划分为若干个区域,则分区域后每个区域内可供使用的可编程互连线资源总量可以被确定,本技术实施例的目的在于在布局流程估算fpga的线网延迟,fpga的线网延迟即指布线后连接两个布局资源所使用到的可编程互连线的延迟,因此当可编程互连线的数量在一个区域内被确定,进而也能够确定两个布局资源之间的线网延迟。
51.应当明确的是,对于fpga而言,虽然其内部可编程互连线资源的总数量可以确定,但是如果直接根据可编程互连线资源的总数量获取线网路径,则会因为可编程互连线的总数量太多会导致无法算出fpga内由可编程互连线组成的线网路径;此外,fpga的可编程互连线资源是规则阵列的,也包括了很多重复的可编程互连线资源,如果直接根据可编程互连线资源的总数量获取线网路径,还会得到很多重复的线网路径,因此为了避免重复计算也有必要进行分区域计算。
52.步骤s2:根据布局资源的位置确定区域内由可编程互连线组成所有的线网路径,并计算每一个线网路径的延迟,线网路径用于所述区域内拥有连接关系的任两个所述布局资源提供布线资源,即线网路径为布线流程中的布线资源;
53.因为fpga在布局流程之前已经通过硬件语言将各个功能模块表达出来,并通过逻辑综合将硬件语言描述的功能模块转换为查找表、触发器与门、或门等基本逻辑单元互连的设计网表,其中,组成该功能模块的基本逻辑单元即为fpga布局流程的布局资源,在fpga中,布局资源之间的连接关系可以根据设计网表得到;因此当本技术实施例在步骤s1中确定了区域内可编程互连线资源的总量时,则能进一步根据区域内布局资源的位置确定该区域内由可编程互连线组成所有的线网路径。
54.应当明确的是,设计网表仅能表示出布局资源之间的连接关系,此时布局资源在fpga中的位置并没有确定,而线网路径是fpga的布线资源,是表示布局资源在fpga中的具体连接,因此本技术实施例优先确定区域内布局资源的位置时,然后根据布局资源的具体位置再得到区域内所有的线网路径;其中,本技术实施例应用于fpga布局流程中估算线网
延迟,因此区域内布局资源的位置由布局流程确定。
55.在一些实施例中,步骤s2中计算每一个线网路径的延迟的具体步骤包括:
56.步骤s21:获取线网路径中每一个可编程互连线的类型,确定不同类型的可编程互连线的延迟。
57.步骤s22:累加每一个可编程互连线的延迟,确定线网路径的延迟。
58.图2为本技术实施例提供的一种fpga内部结构的简化示意图,fpga的可编程逻辑模块阵列称为tile,一个tile包括多个可编程逻辑模块和一个可编程互连线模块,如图2所示,srb表示可编程互连线(signalrelaybox),clm表示可编程逻辑模块(configurablelogicmodule),可编程逻辑模块内部的可编程逻辑单元通过可编程互连线连接到其他的可编程逻辑模块,其中,r如图2所示的fpga内部结构的简化示意图将一个tile简化为一个可编程互连线和一个可编程逻辑模块,在fpga中,将可编程互连线根据跨度可以分为不同的类型,可编程互连线根据跨度的分类包括:
59.一线,指相邻模块即距离为1个tile的可编程逻辑模块互连,如图2所示,水平方向或垂直方向相邻的两个可编程互连线表示一线。
60.二线,指距离为2个tile的可编程逻辑模块互连,如图2所示,水平或垂直方向间隔一个tile的可编程互连线表示二线。
61.四线,指距离为4个tile的可编程逻辑模块互连,图2未示出四线,但与一线和二线同理,水平或垂直方向间隔3个tile的可编程互连线表示四线。
62.长线,不同的fpga架构设计长线的定义可能不同,通常指距离8-16个tile的可编程逻辑模块互连,图2未示出四线,但应当明确的是,长线的定义与一线、二线和四线相同。
63.理论上相同类型的可编程互连线延迟也相同,而可编程互连线可编程互连线的跨度越大,该可编程互连线的延迟也就越大,即长线延迟>四线延迟>二线延迟>一线延迟,因此本技术实施例可以根据线网路径包含的可编程互连线的类型计算出线网路径的延迟。
64.应当明确的是,事实上,对于fpga而言,即使是相同类型的可编程互连线,其延迟也可能会存在有较小的误差,或是不同方向上(水平方向和垂直方向)相同类型的可编程互连线的延迟也可能会存在有较小的误差,但这种误差相比于不同类型的可编程互连线之间的延迟完全可以忽略,并且如果追求更高的精度计算,不同方向导致的延迟误差仍然能被获取,并通过步骤s21和步骤s22的累加计算出线网路径的总延迟。
65.步骤s3:根据区域内拥有连接关系的任两个布局资源之间的线网时序要求在布局资源之间适配线网路径,将线网路径的延迟作为布局资源之间的线网延迟。
66.在fpga中,电路性能与线网延迟相关,当忽略影响电路性能的其他参数(如器件延迟、时钟延迟等)时,通常线网延迟越小,电路性能就越高;如果线网延迟越大,则电路性能越低,表示该电路的时序差。fpga在设计时会有设计性能要求,时序分析工具会根据设计性能要求对设计电路的性能进行分析,计算出每段路径的延迟要求,即线网时序要求,布局布线时会使实际的线网延迟尽量满足该延迟要求。
67.本技术实施例中,已经获取到了区域内所有的线网路径,则只需要根据线网时序要求为拥有连接关系的两个布局资源分配合适的线网路径,使得该线网路径能满足该线网时序要求;因为本技术实施例最终需要估算出区域内所有布局资源之间的线网延迟,因此在分配线网路径时,本技术实施例将在区域内顺序分配,即线网时序要求越高,分配到的线
网路径的延迟越低,以此来确保区域内所有的布局资源之间的线网延迟都符合线网时序要求。
68.应当明确,本技术实施例中,为拥有连接关系的两个布局资源分配线网路径的目的是将该线网路径的延迟作为估算结果,fpga在布线流程并不一定采用该预估的线网路径来进行布线,该结果对于布线流程而言仅仅是提供参考作用。
69.在一些实施例中,步骤s3中根据区域内拥有连接关系的布局资源之间的线网时序要求在布局资源之间适配线网路径的步骤具体包括:
70.步骤s31:根据布局资源之间的线网时序要求和布局资源之间的线网设定延迟的差值确定布局资源之间的线网时序余量。
71.时序余量等于线网时序要求减去线网延迟,当实际的线网延迟大于线网时序要求时,则会出现时序违例,即表示性能无法满足设计的性能要求,本技术实施例中,线网延迟属于待估算的参数,因此为了计算时序余量,设计人员在设计fpga时,会设定一个初始值作为两个布局资源之间的线网设定延迟,通常该初始值为设计人员根据经验进行设定,或者设计人员还可以通过粗略的延迟估算方法在fpga实施布局流程之前先进行一次估算,将估算结果作为线网设定延迟。
72.步骤s32:将延迟最小的线网路径适配至线网时序余量最小的布局资源之间,直至区域内所有的布局资源之间均适配有线网路径,时序余量越小则表示时序要求与线网设定延迟越接近时序要求,为了确保区域内所有的布局资源之间的线网延迟都符合线网时序要求,所以应当优先分配延迟小的线网路径给时序余量小的两个布局资源。
73.在一些实施例中,本技术实施例提供的可编程逻辑器件的线网延迟估算方法还包括:
74.当区域内布局资源的位置发生变化时,重新执行步骤s1—步骤s3。
75.应当明确,fpga在进行布局流程时,区域内布局资源的位置随着布局流程的运行随时可能发生变化,上述已经估算出的线网路径也将因为布局资源的位置变化需要重新估算,即本技术实施例提供的可编程逻辑器件的线网延迟估算方法在布局流程是动态运行的。
76.在另一些实施例中,布局资源的位置可能会发生变化,但是其位置通常不会超出步骤s1已经划分的区域,因此重新估算时只需要重新执行步骤s3即可。
77.在一些实施例中,当布局资源的位置发生变化时,步骤s3中根据区域内拥有连接关系的布局资源之间的线网时序要求在布局资源之间适配线网路径的步骤具体包括:
78.根据布局资源之间的线网时序要求和两个布局资源之间的线网路径延迟的差值确定两个布局资源之间的线网时序余量;
79.将延迟最小的线网路径适配至线网时序余量最小的布局资源之间,直至区域内所有的布局资源之间均适配有线网路径。
80.当重新估算线网路径时,只需要根据线网时序要求和前一次估算出的线网路径延迟计算时序余量即可。
81.在一些实施例中,图3为本技术实施例提供的可编程逻辑器件的线网延迟估算方法的另一流程图,如图3所示,步骤s3根据区域内拥有连接关系的两个布局资源之间的线网时序要求为拥有连接关系的两个布局资源分配线网路径,将线网路径的延迟作为两个布局
资源之间的线网延迟的步骤之后,还包括:
82.步骤s4:存储线网路径的适配结果,为可编程逻辑器件的布线阶段提供线网路径的适配结果。
83.本技术实施例提供的可编程逻辑器件的线网延迟估算方法,除了在布局流程中估算出线网延迟,还能将布局阶段所估算出的结果保留至布线流程以为布线流程提供参考,既能加快布线速度,也能够进一步的保证布局布线时序结果的一致性;应当明确,当线网延迟被确定,则表示可编程互连线的连接关系确定,进一步地,区域内因为可编程互连线造成的拥塞也能被确定,因此布局阶段所估算出的结果除了包括线网延迟,还包括线网路径可能造成的拥塞。
84.本技术实施例提供的可编程逻辑器件的线网延迟估算方法,通过将可编程逻辑器件划分为若干个区域,进而可以确定每个区域内可编程互连线的总量,并根据布局资源的位置和设计线网的连接关系进一步计算出区域内由可编程互连线组成所有的线网路径,根据线网时序要求为两个布局资源分配合适的线网路径,相比于现有技术能估算出更准确的线网延迟。
85.进一步地,本技术实施例提供的可编程逻辑器件的线网延迟估算方法,根据布局流程布局资源的位置变化实时估算线网延迟,模拟布线流程中的线网竞争和解拥塞过程使得布局流程能根据预估出的可编程互连线的总量使用情况估算出更准确的线网延迟。
86.以下根据图4对本技术实施例提供的可编程逻辑器件的线网延迟估算方法举例说明,图4为本技术实施例提供的fpga架构的简化示意图,如图4所示,本技术实施例简化的可编程逻辑模块(clm)只包括4个触发器,可编程互连线(srb)简化为只有一线和二线两种类型的互连资源,将一个tile简化为由一个可编程逻辑模块和可编程互连线构成。
87.为了便于举例说明,假设一线的延迟为5,二线的延迟为8,相同类型的可编程互连线其水平方向和垂直方向的延迟相同。
88.假设要估算tile_0_0的触发器ff0到tile_2_0的触发器ff0之间的线网net1的延迟、tile_0_0的触发器ff1到tile_2_0的触发器ff1之间的线网net2的延迟和tile_0_0的触发器ff2到tile_2_0的触发器ff2之间的线网net3的延迟,并假设net1的时序余量最小,net3的时序余量最大;为了便于说明,假设该区域内的布局资源只包括上述所述。
89.在如图4所示的区域内,获取可能存在的所有的线网路径,本技术实施例中,线网路径包括:
90.线网路径1:二线tile_0_0到tile_2_0,线网1的延迟为8;
91.线网路径2:一线tile_0_0到tile_1_0,一线tile_1_0到tile_2_0,线延迟为5+5=10;
92.线网路径3:一线tile_0_0到tile_0_1,二线tile_0_1到tile_2_1,一线tile_2_1到tile_2_0,线延迟为5+8+5=18;
93.线网路径4:一线tile_0_0到tile_0_1,一线tile_0_1到tile_1_1,一线tile_1_1到tile_2_1,一线tile_2_1到tile_2_0,线延迟为5+5+5+5=20;
94.为了便于对本技术实施例提供的可编程逻辑器件的线网延迟估算方法进行说明,本技术实施例在此只列举4个线网路径进行说明,但容易得知如图4所示的区域内的tile_0_0到tile_2_0之间存在的线网路径远远不止4个。
95.应当明确,为了方便说明,如图4所示的示意图已经将可编程互连线的连接图示出来,但事实上,fpga的布局流程并不会出现可编程互连线的实际连接,但是实际估算延迟时,布局资源之间的连接关系可以通过fpga的设计网表获取。
96.如上,估算线网延迟时,优先为时序余量最小的线网net1分配线网路径,其中线网路径1的延迟最小,因此将线网路径1的延迟作为线网net1的延迟估算结果;其次为线网net2分配线网路径,此时线网路径2的延迟最小,因此将线网路径2的延迟作为线网net2的延迟估算结果;最后为线网net3分配线网路径,此时线网3的延迟最小,因此将线网路径3的延迟作为线网net3的延迟估算结果。
97.应当明确,本技术实施例所举例的延迟估算只是为了进行原理性的说明,实际的布局流程进行延迟估算时,会根据本技术实施例所提供的线网延迟估算方法设计相应的算法进行估算,以提高软件的运行速度。
98.基于上述可编程逻辑器件的线网延迟估算方法,本技术实施例还提供一种可编程逻辑器件的线网延迟估算装置30,如图5所示,该装置包括:
99.区域划分模块100,用于将可编程逻辑器件划分为若干个区域,并获取区域内所有的可编程互连线;
100.线网路径整合模块200,用于根据区域内布局资源的位置确定获取区域内由可编程互连线组成所有的线网路径,并计算每一个线网路径的延迟,线网路径用于为区域内拥有连接关系的任两个布局资源提供布线资源;
101.延迟估算模块300,用于根据区域内拥有连接关系的布局资源之间的线网时序要求在布局资源之间适配线网路径。
102.在一些实施例中,如图6所示,本技术实施例还提供一种可编程逻辑器件的线网延迟估算装置40,该装置40除包括区域划分模块100、线网路径整合模块200、延迟估算模块300外,还包括:
103.存储模块400,用于存储线网路径的适配结果,为可编程逻辑器件的布线阶段提供线网路径的适配结果。
104.关于上述可编程逻辑器件的线网延迟估算装置中各模块实现上述技术方案的其他细节,可参见上述实施例中提供的可编程逻辑器件的线网延迟估算方法中的描述,此处不再赘述。
105.基于上述可编程逻辑器件的线网延迟估算方法,本技术实施例还提供了一种计算机设备50,如图7所示,包括存储器51、处理器52以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例提供的可编程逻辑器件的延迟估算方法的步骤。
106.基于上述可编程逻辑器件的线网延迟估算方法,本技术实施例还提供了一种计算机可读存储介质60,如图8所示,计算机可读存储介质60存储有计算机程序61,计算机程序61被处理器执行时实现上述实施例提供的可编程逻辑器件的延迟估算方法的步骤。
107.以上内容是结合具体的实施方式对本技术所作的进一步详细说明,不能认定本技术的具体实施只局限于这些说明。对于本技术所属技术领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干简单推演或替换,都应视为本技术的保护范围。