CN104866678B - Fpga时序约束布局方法 - Google Patents
Fpga时序约束布局方法 Download PDFInfo
- Publication number
- CN104866678B CN104866678B CN201510289075.0A CN201510289075A CN104866678B CN 104866678 B CN104866678 B CN 104866678B CN 201510289075 A CN201510289075 A CN 201510289075A CN 104866678 B CN104866678 B CN 104866678B
- Authority
- CN
- China
- Prior art keywords
- path
- delay
- port
- layout
- trigger
- 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
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明属于电子技术领域,具体为一种FPGA时序约束布局方法。本发明针对输入输出延时约束与端口路径延时约束。对于输入输出延时约束,本发明提出一种递归搜索算法进行输入端口到触发器(或触发器到输出端口)的路径搜索,当搜索到触发器Q顶点时,使用延时分类路径存储方法进行路径保存;对于端口路径约束,本发明对所约束的输入端口进行正向拓扑排序,对所约束的输出端口进行反向拓扑排序,对两者求交集得到约束路径,并设计了该类约束的路径延时增量式计算策略。本发明提出的方法能够很好的处理这两类时序约束的路径存储与延时计算问题,能够指导布局引擎进行时序路径约束布局。
Description
技术领域
本发明属于电子技术领域,具体涉及FPGA布局算法的时序约束布局功能实现方法。
背景技术
随着FPGA阵列的规模和电路设计的复杂度不断增加,某些FPGA设计中可能存在对特定路径有较高时序性能要求的情况,而FPGA CAD流程中的布局结果对最终电路实现的时序性能产生着巨大的影响。因此,需要设计一种时序约束布局算法对用户约束路径上存在单元放置的更加紧密,以满足约束路径的延时要求。
发明内容
本发明提出一种新型FPGA时约束布局方法,目的为在进行FPGA布局过程中,在不舍弃过多电路线网长度与整体电路时序性能的情况下,尽可能减少用户所约束路径的延时。
在FPGA设计中存在4中路径:(1)输入端口到触发器;(2)触发器到输出端口;(3)触发器到触发器;(4)输入端口到输出端口。其中针对触发器到触发器延时的处理为时序驱动布局算法所研究对象。本发明所提出的时序约束布局算法主要针对以下两类时序约束:(1)输入输出延时约束;(2)端口路径延时约束。下面简要介绍这两类时序约束的意义和目的。
(1)输入输出延时约束
此类约束是指对输入端口到触发器或者触发器到输出端口的路径进行延时约束,如图1所示,用户通过设定端口名与延时约束值,使得外部端口信号满足FPGA内部的时序要求。
(2)端口路径延时约束
此类约束只针对组合逻辑电路设计,若用户对电路设计的某些输入端口到某些输出端口的路径延时有明确要求,用户可以使用该类约束规定这些端口之间的最大延时不得超过用户约束值,如图2所示。
这些时序约束能够处理用户设定的时序约束路径存储与路径延时计算工作,指导布局引擎进行时序路径约束处理。
技术方案
(一)关于输入输出延时约束的布局算法
图1中所示的输入延时约束是较为简单的情况,而在实际FPGA设计中,某个输入端口经过组合逻辑所到达的触发器有可能不只一个,从输入端口到同一个触发器的路径也可能不止一条,并且,这些路径中有些是外部线网构成的,有些是内部线网或者内部基本逻辑电路单元连接关系构成的。因此,在实际操作中有必要将时序路径存储下来以方便计算延时。本发明通过将时序图中有向边分类,提出了一种存储端口到触发器路径与计算路径延时的方法。下面以输入延时约束为例进行描述,输出延时约束处理策略完全类似。
如图3所示,输入INPUT端口信号在SLICE1内并行传输进两个组合逻辑模块1与2后经过SLICE2到达SLICE4内的触发器DFF1,另一条路径为经过SLICE3后到达SLICE5内的触发器DFF2。输入延时约束需要保证输入端口到达任何一个触发器延时都要小于约束值。因此,首先需要搜索输入端口到任意触发器的所有路径,并对搜索到的每条路径进行处理与存储,通过这样的方法可以大大简化每次计算各条路径延时的时间复杂度。本发明设计了一种递归搜索算法解决该问题,其流程图如图4所示。设CurVertex代表搜索到的当前顶点,Cur_Path代表保存当前搜索到的有向边的堆栈,具体步骤如下:
(1)判断CurVertex是否为由触发器Q端口顶点,若是,则证明发现了触发器,需要分析当前所存储路径栈Cur_Path,进行该路径存储与计算,否则转步骤(2);
(2)遍历当前顶点所连接的所有出边,设当前遍历到的出边为OutEdge,则OutEdge所连接的顶点为ConnectVertex;若所有出边都遍历完成,则转步骤(4);
(3)存储当前出边OutEdge到Cur_Path中,将ConnectVertex为当前顶点CurVertex,递归调用本算法,即转步骤(1);
(4)算法结束。
该算法核心思想为使用递归算法进行某一输出端口的所有路径搜索,若某一顶点存在出边且该顶点不为触发器Q端口顶点,则遍历该顶点的出边并使该出边入栈,并递归调用本算法进行后续顶点的搜索。若当前搜索到的顶点为触发器Q端口顶点,则需要对当前所存储的路径栈Cur_Path进行分析与计算,本发明设计以下方法进行处理:
如图3所示,在时序图中唯一变化的是由外部线网构建的有向边延时,因此,现将时序图中有向边分为两类:
(1)可变延时有向边(Alterable Delay Edge,ADE):即构建时序图时由外部线网构建的有向边。
(2)固定延时有向边(Constant Delay Edge,CDE):即内部基本逻辑电路单元模型构建的有向边,或这些基本单元之间互联关系构建的有向边。
根据这样的分类,任意一条从输入端口到触发器Q顶点的路径可表示为:
Path = n*ADE + m*CDE
即该路径可表示为n个ADE与m个CDE的组合。所以,本发明在ADE组合确定情况下,取CDE组合的最大延时值来存储一条路径。
按照以上所述的路径搜索与路径存储策略,将输入端口到触发器的路径简化为若干个以唯一ADE集合所代表的路径,每个路径还存储着对应该ADE集合情况下的最大固定延时有向边延时的最大值Max_CDEDelaySum。
在两个布局可交换单元进行位置交换后,其影响到所有线网AfferctedNets是已知的。而输入延时所存储的路径可能有多条,需要对每条路径的ADE集合判断其是否与AfferctedNets有交集,如果有交集则证明该条路径的延时将发生变化并计算该路径新的延时,而未被影响到的路径将继续保持原来的延时值。最后,取所有路径中最大的延时值作为交换后输入端口到触发器延时
根据上述内容,输入输出延时约束布局算法具体步骤如下:
(1)使用本发明提出的递归路径搜索算法,对所约束的输入端口(或输出端口)进行该端口到后续所有触发器的路径搜索;在搜索的同时,对当前搜索到的路径进行分析处理。搜索完毕后,存储下若干个以唯一ADE为代表的路径,这些路径其ADE集合各不相同,且每个ADE集合对应一个最大的CDE组合延时值Max_CDEDelaySum;
(2)计算所存储的每条路径的延时,其值等于该路径的ADE集合各元素延时之和加上Max_CDEDelaySum;取所存储每个路径的最大值,即为该输入端口到触发器(或触发器到输出端口)的最大延时;
(3)在每次布局交换后,分析当前延时有变化的外部线网是否影响到了所存储的某一路径,若某一路径受到影响,则该路径的延时只需在原有基础上增加变化线网的延时变化量即可。最后判断该条被影响到的路径的最新延时值是否大于步骤2中的延时,并取两者的最大值,即为布局交换后被约束的输入端口到触发器(或触发器到输出端口)的最新延时,布局引擎使用该延时值指导其布局过程。
(二)关于端口路径延时约束的布局算法
为了处理该类约束,首先需要能够构建出准确输入端口到输出端口准确的时序图,并且需要排除掉其他无用的顶点和有向边。本发明提出了一种使用正向拓扑排序图与反向拓扑排序图求交集的方法,排除时序图中无用顶点与时序边。如图7所示,分为三个步骤:
(1)对所约束的每个输入顶点进行正向的拓扑排序,得到正向拓扑排序图(Forward Topological Graph,FTG)。
(2)对所约束的每个输出顶点进行反向的拓扑排序,得到反向拓扑排序图(Reverse Topological Graph,RTG)。
(3)将FTG与RTG求交集,所得结果即为所约束的输入端口到输出端口的时序图(From-To Graph)。
使用上述方法可构建出准确的输入端口到输出端口时序图,并排除掉其余非约束路径的时序节点和时序边。
在交换两个布局单元后,需要分析交换后是否影响到了约束路径导致最大延时值发生变化。本发明设计了以下增量式延时变化计算方法解决该问题,其步骤如下:
(1)将From-To Graph进行拓扑排序结果记为TopoVertex,将该图中所有由外部线网构建的有向边集合记为ADE_Set。
(2)设交换后受到影响的外部线网集合名为AfferctedNets,将ADE_Set和AfferctedNets求交集的结果记为Affercted_ADE_Set。
(3)顺序遍历TopoVertex中每个顶点,若当前顶点的出边存在于Affercted_ADE_Set中时停止遍历,记当前顶点为CurVertex。
(4)以CurVertex作为起点进行有向图拓扑遍历,重新计算被遍历到顶点的Etv。所约束输出端口所有顶点的最大Etv值即为交换后路径的最大延时值。
根据上述内容,端口路径延时约束布局算法具体步骤如下:
(1)对所约束的输入端口进行正向拓扑排序,对所约束的输出端口进行方向拓扑排序,两者求交集构建出完整的端口路径延时约束时序图From-To Graph。
(2)对From-To Graph所有顶点计算最晚发生时间Etv,则所有输出端口的最大Etv即为当前端口路径约束的最大延时值。
(3)在每次布局交换后,判断所影响到的外部线网在From-To Graph中拓扑排序最靠前顶点,并从该顶点重新计算与其有连接关系的所有后续顶点的Etv,则所有输出端口最大的新Etv值即为布局交换后该端口路径约束的最大延时值,使用该值指导布局引擎。
附图说明
图1为输入输出延时约束。
图2为端口路径延时约束。
图3为输入输出延时路径示意图。
图4为输入输出延时约束的路径搜索算法流程图。
图5为输入输出延时约束路径存储与计算方法。
图6为端口延时约束电路时序图。
图7为构建端口路径延时约束时序图流程图。
图8为构建端口路径延时约束时序图举例。
图9为端口路径延时约束的延时增量式计算方法。
具体实施方式
(一)输入端口到触发器延时约束举例
如图3所示,用户约束输入端口INPUT到触发器DFF的延时最大值为10ns,则其含义为从信号到达INPUT端口,传播到触发器DFF1或DFF2的延时不得大于用户约束值10ns。
首先对输入端口INPUT进行递归路径搜索工作,存储下的路径共2条,如图5所示,其中Path1为以外部线网ADE①-③为代表的路径,该路径的CDE最大组合延时为Max_CDEDelaySum1,该路径的延时为ADE①-③与Max_CDEDelaySum1之和,记为PathDelay1。而Path2为以外部线网ADE④⑤为代表的路径,其CDE最大组合延时为Max_CDEDelaySum2,Path2的延时为ADE④⑤与Max_CDEDelaySum2之和,记为PathDelay2。则INPUT端口到触发器的延时即为PathDelay1与PathDelay2的最大值。
当进行布局交换后,需要判断所存储的路径是否受到影响,如图5所示,假设外部线网ADE①的延时变化量为Δ1,ADE③的延时变化量为Δ3。则路径Path1的交换后延时即为交换前路径延时PathDelay1与Δ1、Δ3之和。而路径Path2因未受到影响继续保持原延时值,最终取Path1与Path2两者间的最大值作为交换后INPUT到触发器的最新延时,布局引擎使用该值指导布局过程。
(二)端口路径延时约束举例
如图2所示,用户指定输入端口INPUT1到输出端口OUTPUT2、OUTPUT3之间的延时不得大于某个用户设定的约束值。
首先排除掉其他无用的顶点和有向边,如图6所示,有向边上的数字代表线网延时,在计算CL2Inner顶点的最晚发生时间Etv时,不应该考虑INPUT2到CL2Inner的路径延时对CL2Inner的影响,且CL1In、CL1Out与OUTPUT1三个顶点的最晚发生时间也不需计算。使用本发明提出的正向反向拓扑排序图求交集的方法构建端口路径约束时序图,如图8(a)为对输入端口INPUT1进行正向拓扑排序的结果FTG,可见INPUT2与CL2In2两个顶点和与之相关的有向边为虚线,代表这些顶点和有向边不存在于FTG中。图8(b)为对OUTPUT2、OUTPUT3进行反向拓扑排序的结果RTG,可见CL1In、CL1Out和OUTPUT1三个顶点和与之相关的有向边不再存在于RTG中。最后,FTG与RTG求交集后得到INPUT1到OUTPUT2、OUTPUT3的时序图,如图8(c)所示。最后,对From-To Graph中每个顶点求最晚发生时间Etv,取输出约束组中所有顶点中的最大Etv值,即为端口路径约束的最大延时值。
在进行布局交换后,需要判断此次布局交换是否对端口约束路径产生影响。若此次交换影响到的线网不存在与图8(c)中时,则该端口路径延时约束的延时值不发生变化,不需要重新计算。而若存在影响,则需使用本发明提出的增量式延时变化计算方法重新计算延时。如图9(a)所示,CL2In1与CL2Inner之间的线网延时从2变为4,则需要从CL2In1开始重新计算其后的所有顶点的Etv。而在图9(b)中,CL2Inner与CL2Out2之间的线网从3变为1,在此种变化下,只需要对CL2Out2与OUTPUT3重新计算Etv。最后取所约束输出端口Etv的最大值,即为布局交换端口路径约束的最新延时值,布局引擎使用该值指导布局过程。
Claims (4)
1.一种FPGA时序约束布局方法,针对输入输出延时约束,其特征在于具体步骤为:
(1)使用递归路径搜索算法,对所约束的输入端口或输出端口进行该端口到后续所有触发器的路径搜索;在搜索的同时,对当前搜索到的路径进行分析处理;搜索完毕后,存储下若干个以唯一ADE为代表的路径,这些路径其ADE集合各不相同,且每个ADE集合对应一个最大的CDE组合延时值Max_CDEDelaySum;
(2)计算所存储的每条路径的延时,其值等于该路径的ADE集合各元素延时之和加上Max_CDEDelaySum;取所存储每个路径的最大值,即为该输入端口到触发器,或触发器到输出端口的最大延时;
(3)在每次布局交换后,分析当前延时有变化的外部线网是否影响到了所存储的某一路径,若某一路径受到影响,则该路径的延时只需在原有基础上增加变化线网的延时变化量即可;最后判断该条被影响到的路径的最新延时值是否大于步骤(2)中的延时,并取两者的最大值,即为布局交换后被约束的输入端口到触发器,或触发器到输出端口的最新延时,布局引擎使用该延时值指导其布局过程;
其中,ADE为时序图中可变延时有向边,即构建时序图时由外部线网构建的有向边;CDE为时序图中固定延时有向边,即内部基本逻辑电路单元模型构建的有向边,或这些基本单元之间互联关系构建的有向边。
2.根据权利要求1所述的FPGA时序约束布局方法,其特征在于步骤(1)中所述使用递归路径搜索算法,对所约束的输入端口或输出端口进行该端口到后续所有触发器的路径搜索的具体过程为:
设CurVertex代表搜索到的当前顶点,Cur_Path代表保存当前搜索到的有向边的堆栈,具体步骤如下:
(1)判断CurVertex是否为触发器Q端口顶点,若是,则说明发现了触发器,分析当前所存储路径栈Cur_Path,进行该路径存储与计算,否则转步骤(2);
(2)遍历当前顶点所连接的所有出边,设当前遍历到的出边为OutEdge,则OutEdge所连接的顶点为ConnectVertex;若所有出边都遍历完成,则转步骤(4);
(3)存储当前出边OutEdge到Cur_Path中,将ConnectVertex设为当前顶点CurVertex,递归调用本算法,即转步骤(1);
(4)算法结束。
3.一种FPGA时序约束布局方法,针对端口路径延时约束,其特征在于具体步骤为:
(1)对所约束的输入端口进行正向拓扑排序,对所约束的输出端口进行反向拓扑排序,两者求交集,构建出完整的端口路径延时约束时序图From-To Graph;
(2)对From-To Graph所有顶点计算最晚发生时间Etv,则所有输出端口的最大Etv即为当前端口路径约束的最大延时值;
(3)在每次布局交换后,判断所影响到的外部线网在From-To Graph中拓扑排序最靠前顶点,并从该顶点重新计算与其有连接关系的所有后续顶点的Etv,则所有输出端口最大的新Etv值即为布局交换后该端口路径约束的最大延时值,使用该值指导布局引擎。
4.根据权利要求3所述的FPGA时序约束布局方法,其特征在于步骤(3)中布局交换后该端口路径约束的最大延时值的计算过程为:
(1)将From-To Graph进行拓扑排序的结果记为TopoVertex,将该图中所有由外部线网构建的有向边集合记为ADE_Set;
(2)设交换后受到影响的外部线网集合名为AfferctedNets,将ADE_Set和AfferctedNets求交集的结果记为Affercted_ADE_Set;
(3)顺序遍历TopoVertex中每个顶点,若当前顶点的出边存在于Affercted_ADE_Set中时停止遍历,记当前顶点为CurVertex;
(4)以CurVertex作为起点进行有向图拓扑遍历,重新计算被遍历到顶点的Etv;所约束输出端口所有顶点的最大Etv值即为交换后路径的最大延时值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289075.0A CN104866678B (zh) | 2015-06-01 | 2015-06-01 | Fpga时序约束布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289075.0A CN104866678B (zh) | 2015-06-01 | 2015-06-01 | Fpga时序约束布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866678A CN104866678A (zh) | 2015-08-26 |
CN104866678B true CN104866678B (zh) | 2017-12-29 |
Family
ID=53912503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510289075.0A Active CN104866678B (zh) | 2015-06-01 | 2015-06-01 | Fpga时序约束布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866678B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710998B (zh) * | 2018-02-27 | 2021-01-05 | 上海安路信息科技有限公司 | 内存优化型静态时序分析方法及其系统 |
CN110750954B (zh) * | 2019-10-29 | 2020-12-25 | 上海安路信息科技有限公司 | 电路原理图生成方法及生成系统 |
WO2024041290A1 (en) * | 2022-08-24 | 2024-02-29 | Shanghai Univista Industrial Software Group Co., Ltd. | Method and system for emulating ic design with fpga, and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054110A (zh) * | 2011-01-27 | 2011-05-11 | 复旦大学 | Fpga可编程逻辑块通用装箱方法 |
US8296704B1 (en) * | 2010-07-09 | 2012-10-23 | Altera Corporation | Method and apparatus for simultaneous switching noise optimization |
CN102768506A (zh) * | 2012-07-18 | 2012-11-07 | 复旦大学 | 带时序约束的fpga时序驱动布局方法 |
US8677298B1 (en) * | 2013-01-04 | 2014-03-18 | Altera Corporation | Programmable device configuration methods adapted to account for retiming |
-
2015
- 2015-06-01 CN CN201510289075.0A patent/CN104866678B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296704B1 (en) * | 2010-07-09 | 2012-10-23 | Altera Corporation | Method and apparatus for simultaneous switching noise optimization |
CN102054110A (zh) * | 2011-01-27 | 2011-05-11 | 复旦大学 | Fpga可编程逻辑块通用装箱方法 |
CN102768506A (zh) * | 2012-07-18 | 2012-11-07 | 复旦大学 | 带时序约束的fpga时序驱动布局方法 |
US8677298B1 (en) * | 2013-01-04 | 2014-03-18 | Altera Corporation | Programmable device configuration methods adapted to account for retiming |
Non-Patent Citations (3)
Title |
---|
FPGA的静态时序分析研究与设计;孟祥志;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130315;I135-403/第17-57页 * |
一种减少重复搜索的FPGA快速布线算法;刘洋等;《计算机辅助设计与图形学学报》;20140630;第26卷(第6期);第1015-1024页 * |
应用于FPGA芯片IO的延时管理模块的设计和实现;王鹏翔;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150315;I135-361/第9-14、32-59页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104866678A (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105938572B (zh) | 一种物流存储系统预防干涉的多自动导引车路径规划方法 | |
CN104866678B (zh) | Fpga时序约束布局方法 | |
CN105447565B (zh) | 一种基于离散蝙蝠算法的片上网络映射方法 | |
CN105489008B (zh) | 基于浮动车卫星定位数据的城市道路拥堵计算方法及系统 | |
CN106052701B (zh) | 一种交通溢流状态下车辆路径选择的方法 | |
CN104217579B (zh) | 基于路段子网络冗余度的交通网络关键路段搜索方法 | |
US10498631B2 (en) | Routing packets using distance classes | |
CN103810260B (zh) | 基于拓扑特性的复杂网络社团发现方法 | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN104217086A (zh) | 一种城市公交线网优化方法 | |
CN105318882B (zh) | 兴趣点绑定道路的方法及装置 | |
CN107766406A (zh) | 一种采用时间优先搜索的轨迹相似性连接查询方法 | |
CN105490834A (zh) | 一种基于顶点覆盖和弱顶点覆盖的探针部署方法 | |
CN106981204B (zh) | 一种信息处理方法及装置 | |
CN101881811A (zh) | 一种可编程逻辑器件互连资源的故障测试方法 | |
CN108073771B (zh) | Fpga静态时序分析方法 | |
CN104239965B (zh) | 一种基于重叠社团划分的大规模道路网络双层路由方法 | |
CN102571423B (zh) | 基于gshlpn的网络数据传输建模及性能分析方法 | |
CN105808454A (zh) | 一种多端口访问共享缓存的方法及装置 | |
CN103905276A (zh) | 一种快速的网络拓扑探测方法 | |
CN104618852B (zh) | 基于层次聚类的数据汇聚方法和系统 | |
CN106878067A (zh) | 一种动态AdHoc网络关键节点识别方法 | |
CN102780589A (zh) | 一种基于虚拟链路的静态路由网络时延抖动测试方法 | |
CN107302208B (zh) | 一种煤矿高压电网速断设置并行检验方法 | |
CN108712336A (zh) | 一种提高无标度网络传输容量的局部信息动态路由算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |