CN112131813B - 基于端口交换技术的用于提升布线速度的fpga布线方法 - Google Patents
基于端口交换技术的用于提升布线速度的fpga布线方法 Download PDFInfo
- Publication number
- CN112131813B CN112131813B CN202011023776.7A CN202011023776A CN112131813B CN 112131813 B CN112131813 B CN 112131813B CN 202011023776 A CN202011023776 A CN 202011023776A CN 112131813 B CN112131813 B CN 112131813B
- Authority
- CN
- China
- Prior art keywords
- port
- signals
- configurable logic
- logic cluster
- wiring
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种基于端口交换技术的用于提升布线速度的FPGA布线方法,涉及FPGA技术领域,该方法在常规的布线流程中构建布线网表之后、在进行全局布线之前加入了重新规划逻辑单元的过程,在重新规划逻辑单元的过程中,从可配置逻辑簇实例所连接的每个信号的负载点中选取种子端口,根据种子端口所在的逻辑单元端口组对该信号连接的其他负载点进行端口交换,利用逻辑单元端口等价交换技术,根据布线资源连接盒结构对用户设计网表中逻辑单元占用的端口进行重新规划,使规划后的逻辑单元连接更加符合布线资源架构,从而可以有效减少布线通道和布线开关的占用和协商探路算法中搜索节点的个数,缩减布线运行时间,提升布线效率。
Description
技术领域
本发明涉及FPGA技术领域,尤其是一种基于端口交换技术的用于提升布线速度的FPGA布线方法。
背景技术
FPGA布线是在芯片布局以后,利用器件的可编程互连资源把已经占用的逻辑单元连接起来的过程。FPGA布线的通常流程如下,请参考图1:(1)根据芯片结构构建计算机可识别的数据结构来描述可编程互连资源以及它们之间的连接关系;(2)加载布局后网表,确定每个逻辑单元在器件上都有一个合法的位置;(3)对布局后的网表进行处理,根据布线模块特点构建布线网表得到相应的数据结构;(4)进行全局布线,不考虑资源冲突,为布线网表中每一条信号寻找一条最优路径;(5)进行详细布线,为布线网表中每一条信号寻找一条有效路径,且没有可编程互连资源冲突(相同的点被不同的信号重复使用。
可编程互连资源是FPGA中的各模块实现信号传递的桥梁,用于连接内部可配置逻辑簇(CLC,Configure Logic Cluster)、可编程IO、BRAM等资源,通过该数据传递通道使大量可配置资源协同工作。可编程互连资源主要包括开关盒(SWB,Switch Box)、连接盒(CB,Connection Box)和布线通道等,如图2所示,开关盒位于水平布线通道和垂直布线通道的交汇处,主要实现布线方向的切换和不同布线类型间的切换。连接盒位于可配置逻辑簇的四周,通过开关或者多路选择器实现可配置逻辑簇的输入和输出连接到任意一条水平或者垂直的线道上,连接盒内部提供丰富的布线资源,增加布线的灵活性。用可编程互连资源把已经占用的逻辑单元连接起来的过程本质就是要确定可编程连线资源实际的走线方式。布线器通常使用协商探路算法进行布线,但随着FPGA器件规模越来越大,用户设计越来越复杂,导致协商探路算法中搜索节点的个数较多,布线在FPGA应用开发流程中占用大量的运行时间,布线效率的优劣直接影响应用开发效率和用户使用体验,因此如何提高布线效率减少布线时间是FPGA设计流程中一个关键问题。
发明内容
本发明人针对上述问题及技术需求,提出了一种基于端口交换技术的用于提升布线速度的FPGA布线方法,本发明的技术方案如下:
一种基于端口交换技术的用于提升布线速度的FPGA布线方法,在FPGA布线过程中,在构建布线网表之后、在进行全局布线之前,还包括:
确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,可配置逻辑簇实例中包括M个逻辑单元,每个逻辑单元分别包括若干个端口;可配置逻辑簇实例包含的所有端口共形成K个逻辑单元端口组,每个逻辑单元端口组包括分别包括M个逻辑单元中的一个端口,每个负载点分别为可配置逻辑簇实例中的一个端口;
从可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口,i为参数且i的起始值为1;
确定种子端口所在的逻辑单元端口组,并将第i个信号对应的除种子端口之外的其他各个负载点与逻辑单元端口组中的各个端口进行交换,交换的负载点与端口属于同一个逻辑单元;
令i=i+1并再次执行从可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口的步骤,直至i=N时完成对可配置逻辑簇实例的端口重规划并更新对应的可配置逻辑簇实例网表以及逻辑表达式;
遍历布线网表中的各个可配置逻辑簇实例,直至对所有可配置逻辑簇实例完成端口重规划。
其进一步的技术方案为,从可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
当第i个信号对应的所有负载点中包括预设的特殊端口时,直接选取特殊端口作为种子端口;
当第i个信号对应的所有负载点中不包括预设的特殊端口时,按照预定选取逻辑从第i个信号对应的所有负载点中选择一个负载点作为种子端口。
其进一步的技术方案为,按照预定选取逻辑从第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
选择可用资源数量最少的一个负载点作为第i个信号的种子端口,负载点的可用资源数量是负载点所在的逻辑单元端口组中未被占用的端口的数量。
其进一步的技术方案为,按照预定选取逻辑从第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
选择时延最短的一个负载点作为第i个信号的种子端口。
其进一步的技术方案为,该方法还包括:
根据连接盒结构建立逻辑簇数据模型,逻辑簇数据模型包括所有信号与可配置逻辑簇的所有端口之间的映射关系;
则确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,包括:
获取可配置逻辑簇实例并根据可配置逻辑簇实例重置逻辑簇数据模型,根据重置后的逻辑簇数据模型确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点。
其进一步的技术方案为,对于每个可配置逻辑簇实例,直至i=N时完成对可配置逻辑簇实例的端口重规划还包括:
当i=N时,检查可配置逻辑簇实例中是否存在端口同时连接至少两个不同的信号;
若存在端口同时连接至少两个不同的信号则确定端口存在重叠现象,则将其中一个信号连接至端口所在的逻辑单元中其他未被占用的端口上,完成对可配置逻辑簇实例的端口重规划;
若不存在端口同时连接至少两个不同的信号的情况,则完成对可配置逻辑簇实例的端口重规划。
其进一步的技术方案为,当可配置逻辑簇实例中存在至少两个逻辑单元包括存在重叠现象的端口时,按照逻辑单元包含的未被占用的端口数量由小到大的顺序依次对各个逻辑单元进行处理。
其进一步的技术方案为,对于每个可配置逻辑簇实例所连接的N个信号,按照负载点的数量从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择负载点数量相等的信号进行处理,则第i+1个信号的对应的负载点的数量小于等于第i个信号的对应的负载点。
其进一步的技术方案为,对于每个可配置逻辑簇实例所连接的N个信号,按照信号在网表的总扇出数量从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择总扇出数量相等的信号进行处理,则第i+1个信号的对应的总扇出数量小于等于第i个信号的总扇出数量。
其进一步的技术方案为,对于每个可配置逻辑簇实例所连接的N个信号,按照信号的边界框从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择边界框相等的信号进行处理,则第i+1个信号的边界框小于等于第i个信号的边界框。
其进一步的技术方案为,对于每个可配置逻辑簇实例所连接的N个信号,按照信号的时序余量从小到大的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择时序余量相等的信号进行处理,则第i+1个信号的时序余量大于等于第i个信号的时序余量。
其进一步的技术方案为,同一个可配置逻辑簇实例在端口重规划前后的功能保持一致。
其进一步的技术方案为,可配置逻辑簇实例所连接的N个信号包括可配置逻辑簇实例所连接的所有信号,或者可配置逻辑簇实例所连接的其中部分信号。
其进一步的技术方案为,当N个信号是可配置逻辑簇实例所连接的部分信号时,N个信号是可配置逻辑簇实例所连接的所有信号中在网表的总扇出数量大于第一预定阈值的信号,或者,N个信号是可配置逻辑簇实例所连接的所有信号中边界框大于第二预定阈值的信号,或者,N个信号是可配置逻辑簇实例所连接的所有信号中时序余量小于第三预定阈值的信号。
本发明的有益技术效果是:
本申请公开了一种基于端口交换技术的用于提升布线速度的FPGA布线方法,该FPGA布线方法基于图1所示的常规的FPGA布线流程,但在构建布线网表之后、在进行全局布线之前加入了重新规划逻辑单元的过程,在重新规划逻辑单元的过程中,利用逻辑单元端口等价交换技术,根据布线资源连接盒结构对用户设计网表中逻辑单元占用的端口进行重新规划,使规划后的逻辑单元连接更加符合布线资源架构,从而可以有效减少布线通道和布线开关的占用和协商探路算法中搜索节点的个数,缩减布线运行时间,提升布线效率。
附图说明
图1是现有的FPGA布线方法的流程图。
图2是FPGA中可配置逻辑簇与可编程互连资源的连接示意图。
图3是本申请的FPGA布线方法的流程图。
图4是本申请一个示例中可配置逻辑簇实例的端口重新规划前后的示意图,其中(a)是端口重新规划前的示意图,(b)是端口重新规划后的示意图。
图5是端口等价交换技术的一个应用示意图,(a)是一个示例中的逻辑单元的端口示意图,(b)是对(a)进行一种方式的端口等价交换后的示意图,(c)是对(a)进行另一种方式的端口等价交换后的示意图。
图6是本申请中对可配置逻辑簇实例进行端口重新规划的流程图。
图7是本申请的另一个示例中的开关盒与连接盒的互连示意图。
图8是基于图7所示的互连结构,采用常规布线方法与采用本申请的布线方法得到的布线结果对比图,其中(a)是网表连接示意图,(b)是采用常规布线方法得到的最差布线结果示意图,(c)是采用常规布线方法得到的最优布线结果示意图,(d)是采用本申请的布线方法得到的布线结果示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种基于端口交换技术的用于提升布线速度的FPGA布线方法,该FPGA布线方法基于图1所示的常规的FPGA布线流程,但在构建布线网表之后、在进行全局布线之前加入了重新规划逻辑单元的过程,则FPGA布线流程的总体流程图请参考图3,其余步骤与常规布线过程相同,本申请不再赘述,新增加的重新规划逻辑单元的过程主要包括三个部分:收集可配置逻辑簇实例的信号→基于收集到的信号进行可配置逻辑簇实例的端口重新规划→基于重新规划的端口更新可配置逻辑簇实例网表以及逻辑表达式,本申请对这三部分分别介绍如下:
一、收集可配置逻辑簇实例的信号。
每个可配置逻辑簇实例中包括M个逻辑单元,每个逻辑单元分别包括若干个端口,常见的逻辑单元比如LUT,每个LUT包括若干个端口,因此整个可配置逻辑簇实例包括若干个端口,可配置逻辑簇实例中的端口通过开关盒和连接盒的切换利用布线通道连接到相应的驱动源获取相应的信号。而由于在FPGA设计流程中,装箱通常使用聚类及最小割算法将关联度大的逻辑单元组装到一个可配置逻辑簇实例中以减少信号与外部的连接和装箱面积,因此在装箱后的可配置逻辑簇实例中,可配置逻辑簇实例内部的逻辑单元之间会出现存在相同驱动源的共享信号的情况,也即一个信号同时驱动多个逻辑单元中的多个端口。比如请参考图4中的(a)所示的互连示意图,可配置逻辑簇实例中包括4个逻辑单元LUTA、LUTB、LUTC和LUTD,每个LUT均包括6个端口,LUTA包括A1~A6,LUTB包括B1~B6,LUTC包括C1~C6,LUTD包括D1~D6,如图4(a)所示示意图,信号SRC1可以同时驱动A2、B2、C1和D1端口,信号SRC2可以同时驱动A3、B5和C4端口,SRC3可以同时驱动A1和B4端口,其他端口可能未被占用或者被其他信号驱动。同时根据连接盒结构,可配置逻辑簇实例包含的所有端口共形成K个逻辑单元端口组,每个逻辑单元端口组包括分别包括M个逻辑单元中的一个端口;比如在图4(a)所示的结构中,可配置逻辑簇实例包含的所有端口共形成6个逻辑单元端口组,每个逻辑单元端口组分别包括4个端口,这4个端口分别来自LUTA、LUTB、LUTC和LUTD,具体的分组情况由芯片架构决定比如示例性的,6个逻辑单元端口组分别为{A1,B1,C6,D6},{A2,B2,C4,D4},{A3,B3,C5,D5},{A4,B4,C2,D2},{A5,B5,C3,D3},{A6,B6,C1,D1}。
通过对可配置逻辑簇实例建模可以确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,每个负载点分别为可配置逻辑簇实例中的一个端口。比如在图4(a)所示的互连示意图中,可配置逻辑簇实例所连接的N个信号包括信号SRC1、SRC2和SRC3,SRC1对应的负载点包括A2、B2、C1和D1端口,SRC2对应的负载点包括A3、B5和C4端口,SRC3对应的负载点包括A1和B4端口。
其中,这N个信号包括可配置逻辑簇实例所连接的所有信号,或者可配置逻辑簇实例所连接的其中部分信号。当这N个信号是可配置逻辑簇实例所连接的部分信号时,这N个信号是可配置逻辑簇实例所连接的所有信号中在网表的总扇出数量大于第一预定阈值的信号,或者,这N个信号是可配置逻辑簇实例所连接的所有信号中边界框(Net BoundingBox)大于第二预定阈值的信号,或者,N个信号是可配置逻辑簇实例所连接的所有信号中时序余量小于第三预定阈值的信号。其中的各个预定阈值均可以自定义配置。
由于不同的可配置逻辑簇实例的结构以及信号连接情况都不同,而且FPGA内部包含的可配置逻辑簇实例的数量较多,因此若对每个可配置逻辑簇实例分别建模获取上述信息,则内存开销较大,因此本申请的做法是:
1、根据连接盒结构建立逻辑簇数据模型,逻辑簇数据模型包括所有信号与可配置逻辑簇的所有端口之间的映射关系。
2、遍历布线网表获取可配置逻辑簇实例并根据可配置逻辑簇实例重置逻辑簇数据模型的数据,根据重置后的逻辑簇数据模型即能确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点。
由于所有可配置逻辑簇实例都使用该逻辑簇数据模型,因此可以有效减少内存开销。
二、基于收集到的信号进行可配置逻辑簇实例的端口重新规划。
本申请的端口重新规划主要基于端口等价交换技术,首先本申请对端口等价交换技术进行介绍如下:在数字电路中,逻辑单元进行端口等价交换后不会影响逻辑单元的逻辑运算功能,端口等价交换技术可以增加布线灵活度、提升布同率,根据端口交换方式不同,逻辑单元等价交换存在两种类型:(1)已连接信号的端口间的逻辑等价交换,如实现一个功能的LUT,输出=A1+A2,如图5所示,A1、A2分别由信号a和b来驱动,因此输出=a+b(图中以a|b表示),如图5中的(a)所示。交换A1和A2的信号连接得到如图5中的(b)所示,此时输出=b+a,LUT的逻辑功能保持不变。(2)已连接信号的端口与未被占用的端口间的交换,比如图5中,移动一个输入A1到未使用的端口A3上,则由图5中的(a)交换变为图5中的(c),此时输出=A3+A2=a+b,且逻辑功能保持不变。
本申请基于上述设计思想进行端口重新规划,对于每个可配置逻辑簇实例,在获取到其所连接的N个信号以及每个信号对应的负载点后,通过如下步骤对该可配置逻辑簇实例进行端口重新规划,请参考图6所示的流程图:
步骤S1,从该可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口,i为参数且i的起始值为1。
当第i个信号对应的所有负载点中包括预设的特殊端口时,直接选取特殊端口作为种子端口,该特殊端口为预先配置的端口,通常是逻辑单元中位置不可变动的端口,比如可以配置图4(a)中A6、B6、C6和D6为特殊端口。当第i个信号对应的所有负载点中不包括预设的特殊端口时,按照预定选取逻辑从第i个信号对应的所有负载点中选择一个负载点作为种子端口。
本申请的预定选取逻辑包括如下两种中的任意一种:
(1)选择可用资源数量最少的一个负载点作为第i个信号的种子端口,负载点的可用资源数量是负载点所在的逻辑单元端口组中未被占用的端口的数量。比如在图4(a)所示的示意图中,假设A6、B6、C6和D6为特殊端口,当第i个信号是SRC3信号时,SRC3信号对应的所有负载点中不包括特殊端口,假设负载点A1所在的逻辑单元端口组{A1,B1,C6,D6}中B1、C6和D6均已被占用,则负载点A1的可用资源数量为1,负载点B4所在的逻辑单元端口组{A4,B4,C2,D2}中只有A4和C2被占用,负载点B4的可用资源数量为2,则选择负载点A1作为种子端口。若存在至少两个负载点的可用资源数量相等,则可以任意选择其中一个负载点作为种子端口或者按照预先自定义的逻辑选取。
(2)选择时延最短的一个负载点作为第i个信号的种子端口,同样的,若存在至少两个负载点的时延相等,则可以任意选择其中一个负载点作为种子端口或者按照预先自定义的逻辑选取。
步骤S2,确定种子端口所在的逻辑单元端口组,并将第i个信号对应的除种子端口之外的其他各个负载点与逻辑单元端口组中的各个端口进行交换,交换的负载点与端口属于同一个逻辑单元。
比如在图4(a)所示的连接示意图中,如上举例,假设第i个信号是SRC3信号,其种子端口为负载点A1,则将SRC3信号对应的除种子端口A1之外的负载点B4与A1所在的逻辑单元端口组{A1,B1,C6,D6}中的端口交换,且具体将负载点B4与属于同一个逻辑单元LUTB的B1进行交换。
再比如假设第i个信号是SRC1信号,其种子端口为A2,则将SRC1信号对应的除种子端口A2之外的负载点B2、C1和D1与种子端口A2所在的逻辑单元端口组{A2,B2,C4,D4}中端口交换,具体的,负载点B2与同一个逻辑单元LUTB的B2相同则不交换,负载点C1与同一个逻辑单元LUTC的C4交换,负载点D1与同一个逻辑单元LUTD的D4交换。
再比如假设第i个信号是SRC2信号,其种子端口为A3,则将SRC2信号对应的除种子端口A3之外的负载点B5和C4与种子端口A3所在的逻辑单元端口组{A3,B3,C5,D5}中端口交换,具体的,负载点B5与同一个逻辑单元LUTB的B3交换,负载点C4与同一个逻辑单元LUTC的C5交换。
步骤S3,令i=i+1并再次执行从可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口的步骤,也即重复执行上述步骤S1,直至i=N时完成对可配置逻辑簇实例的端口重规划。
本申请按序依次对N个信号分别处理,即采用上述步骤S1选取种子端口、采用上述步骤S2进行端口交换,每个信号的处理过程均相同,完成对N个信号的处理后即完成所有负载点与端口的交换,比如在完成对SRC1、SRC2和SRC3的处理后,图4(a)所示的连接示意图变为如图4(b)所示。
本申请对N个信号的处理顺序可以有如下多种,而且处理顺序与上述从普通端口中选取种子端口的预定选取逻辑有一定的关联性,因此主要可以分为两类,这两类分别与种子端口的上述两种预定选取逻辑对应:
第一类,当选择可用资源数量最少的一个负载点作为第i个信号的种子端口时,对N个信号的选取顺序采用如下任意一种:
(1)对于每个可配置逻辑簇实例所连接的N个信号,按照负载点的数量从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择负载点数量相等的信号进行处理,则第i+1个信号的对应的负载点的数量小于等于第i个信号的对应的负载点。比如在图4(a)的示意图中,按照SRC1、SRC2、SRC3的顺序依次对这三个信号进行处理。
(2)对于每个可配置逻辑簇实例所连接的N个信号,按照信号在网表的总扇出数量(Net Fanout)从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择总扇出数量相等的信号进行处理,则第i+1个信号的对应的总扇出数量小于等于第i个信号的总扇出数量。
(3)对于每个可配置逻辑簇实例所连接的N个信号,按照信号的边界框(NetBounding Box)从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择边界框相等的信号进行处理,则第i+1个信号的边界框小于等于第i个信号的边界框。
第二类,当选择时延最短的一个负载点作为第i个信号的种子端口时,对于每个可配置逻辑簇实例所连接的N个信号,按照信号的时序余量从小到大的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择时序余量相等的信号进行处理,则第i+1个信号的时序余量大于等于第i个信号的时序余量。
当利用上述步骤S1~S3循环执行到i=N时,表示完成对N个信号的处理,也即N个信号对应的负载点都已经按照上述逻辑与对应端口进行交换后,并不直接完成对该可配置逻辑簇实例的端口重规划,而是还包括处理重叠端口的步骤,也即包括如下步骤S4:
步骤S4,检查可配置逻辑簇实例中是否存在端口同时连接至少两个不同的信号,若存在端口同时连接至少两个不同的信号则确定端口存在重叠现象,则将其中一个信号连接至端口所在的逻辑单元中其他未被占用的端口上,完成对可配置逻辑簇实例的端口重规划。若不存在端口同时连接至少两个不同的信号的情况,则完成对可配置逻辑簇实例的端口重规划。
三、基于重新规划的端口更新可配置逻辑簇实例网表以及逻辑表达式。在通过上述第二部分完成对一个可配置逻辑簇实例的端口重规划后,基于重新规划的端口更新该可配置逻辑簇实例网表以及逻辑表达式,使得同一个可配置逻辑簇实例在端口重规划前后的功能保持一致,具体根据端口更新网表和逻辑表达式的方法是本领域的常用技术,因此本申请不再详细介绍具体方案,比如图4所示,图4(a)所示结构经端口交换后变为图4(b),LUTD的逻辑表达式由LUTD:0=D1更新变为LUTD:0=D4,更新后的表达式基于交换后的端口且与端口交换前的功能相同,其余LUT的更新情况可以如图所示,本申请不详细追逐。
在完成对一个可配置逻辑簇实例的端口重规划以及网表和逻辑表达式的更新后,遍历布线网表获取下一个可配置逻辑簇实例进行重复执行,在循环过程中建立逻辑簇数据模型的建模步骤并不需要循环,具体循环过程可以参见图3。完成对所有可配置逻辑簇实例的处理后,即完成重新规划逻辑单元的过程,后续可以继续进行全局布线。
为了说明本申请增加的重新规划逻辑单元过程的有效性,本申请对其实现的效果进行简化对比说明如下,
假设开关盒与连接盒互连示意图如图7所示,设计网表中存在一条信号由一个配置逻辑簇实例CLC1的Q同时驱动另一个配置逻辑簇实例CLC2的A4和D1端口,如图8中的(a)所示,按照常规的布线方法的做法:布线器使用协商探路算法进行布线,根据不同的布线策略存在最优和最差的两种布线结果,最差的布线结果如图8中的(b)所示,布线器使用两条不同的路径,占用4个SWB开关和2条布线通道资源才能将Q与A4、D1进行连接。最优的布线结果如图8中的(c)所示,由于SWB中没有DEST可以同时驱动SRC1和SRC2开关,理想情况下布线器通过SWB的M端口进行过渡将A4与Q连通,这种情况需要4个SWB开关和1条布线通道。
按照本申请的布线方法加入重新规划逻辑单元过程后,根据布线资源连接盒结构对CLC占用的端口进行重新规划后会将CLC2的D1和D2进行端口等价交换,针对这种信号连接,布线结果如图8(d)所示,布线器将使用2个SWB开关和1条布线通道就可以将优化后逻辑单元的Q与A4、D1端口连通,相比优化前最优布线结果可以减少2个SWB开关,可以提升布线效率、使得布线结果更优。
为了更好的通过数据说明本申请增加的重新规划逻辑单元过程的有效性和布线效果,本文根据器件逻辑资源规模,从OpenCore网站上下载的测试用例,经过装箱及布局后,对逻辑资源利用率在30到90之间的测试用例分别完成优化前和优化后的测试,测试结果如表1所示。CLC数为该测试用例使用的CLC个数,利用率为CLC数占整个器件逻辑资源的百分比,布线运行时间百分比表示优化后减少运行时间的比率,布线开关资源使用百分比表示优化后布线开关使用降低的比率。从测试结果可以看出,优化后的布线流程,布线资源开关使用数量平均降低6.49%,最高降低10.33%;布线平均运行时间可以降低12.02%,最高可以降低21.63%。而布线运行时间是衡量布线优劣的关键指标之一,因此该方法可以有效降低布线时间、提升布线效率。
表1测试用例布线测试结果
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (13)
1.一种基于端口交换技术的用于提升布线速度的FPGA布线方法,其特征在于,在FPGA布线过程中,在构建布线网表之后、在进行全局布线之前,还包括:
确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,所述可配置逻辑簇实例中包括M个逻辑单元,每个逻辑单元分别包括若干个端口;所述可配置逻辑簇实例包含的所有端口共形成K个逻辑单元端口组,每个逻辑单元端口组包括分别包括M个逻辑单元中的一个端口,每个负载点分别为所述可配置逻辑簇实例中的一个端口;
从所述可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口,i为参数且i的起始值为1;
确定所述种子端口所在的逻辑单元端口组,并将所述第i个信号对应的除所述种子端口之外的其他各个负载点与所述逻辑单元端口组中的各个端口进行交换,交换的负载点与端口属于同一个逻辑单元;
令i=i+1并再次执行所述从所述可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口的步骤,直至i=N时完成对所述可配置逻辑簇实例的端口重规划并更新对应的可配置逻辑簇实例网表以及逻辑表达式;
遍历所述布线网表中的各个可配置逻辑簇实例,直至对所有可配置逻辑簇实例完成端口重规划;所述方法还包括:根据连接盒结构建立逻辑簇数据模型,所述逻辑簇数据模型包括所有信号与可配置逻辑簇的所有端口之间的映射关系;则对所有可配置逻辑簇实例完成端口重规划包括:遍历所述布线网表获取可配置逻辑簇实例并根据可配置逻辑簇实例重置逻辑簇数据模型的数据,根据重置后的逻辑簇数据模型确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,基于端口等价交换技术对一个可配置逻辑簇实例进行端口重新规划,在完成对一个可配置逻辑簇实例的端口重规划后,基于重新规划的端口更新可配置逻辑簇实例网表以及逻辑表达式,使得同一个可配置逻辑簇实例在端口重规划前后的功能保持一致。
2.根据权利要求1所述的方法,其特征在于,所述从所述可配置逻辑簇实例的第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
当所述第i个信号对应的所有负载点中包括预设的特殊端口时,直接选取所述特殊端口作为所述种子端口;
当所述第i个信号对应的所有负载点中不包括预设的特殊端口时,按照预定选取逻辑从所述第i个信号对应的所有负载点中选择一个负载点作为种子端口。
3.根据权利要求2所述的方法,其特征在于,所述按照预定选取逻辑从所述第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
选择可用资源数量最少的一个负载点作为所述第i个信号的种子端口,负载点的可用资源数量是所述负载点所在的逻辑单元端口组中未被占用的端口的数量。
4.根据权利要求2所述的方法,其特征在于,所述按照预定选取逻辑从所述第i个信号对应的所有负载点中选择一个负载点作为种子端口,包括:
选择时延最短的一个负载点作为所述第i个信号的种子端口。
5.根据权利要求1所述的方法,其特征在于,所述确定可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点,包括:
获取所述可配置逻辑簇实例并根据所述可配置逻辑簇实例重置所述逻辑簇数据模型,根据重置后的逻辑簇数据模型确定所述可配置逻辑簇实例所连接的N个信号以及每个信号对应的负载点。
6.根据权利要求1所述的方法,其特征在于,对于每个可配置逻辑簇实例,所述直至i=N时完成对所述可配置逻辑簇实例的端口重规划还包括:
当i=N时,检查所述可配置逻辑簇实例中是否存在端口同时连接至少两个不同的信号;
若存在端口同时连接至少两个不同的信号则确定所述端口存在重叠现象,则将其中一个信号连接至所述端口所在的逻辑单元中其他未被占用的端口上,完成对所述可配置逻辑簇实例的端口重规划;
若不存在端口同时连接至少两个不同的信号的情况,则完成对所述可配置逻辑簇实例的端口重规划。
7.根据权利要求6所述的方法,其特征在于,当所述可配置逻辑簇实例中存在至少两个逻辑单元包括存在重叠现象的端口时,按照逻辑单元包含的未被占用的端口数量由小到大的顺序依次对各个逻辑单元进行处理。
8.根据权利要求3所述的方法,其特征在于,对于每个可配置逻辑簇实例所连接的N个信号,按照负载点的数量从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择负载点数量相等的信号进行处理,则第i+1个信号的对应的负载点的数量小于等于第i个信号的对应的负载点。
9.根据权利要求3所述的方法,其特征在于,对于每个可配置逻辑簇实例所连接的N个信号,按照信号在网表的总扇出数量从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择总扇出数量相等的信号进行处理,则第i+1个信号的对应的总扇出数量小于等于第i个信号的总扇出数量。
10.根据权利要求3所述的方法,其特征在于,对于每个可配置逻辑簇实例所连接的N个信号,按照信号的边界框从大到小的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择边界框相等的信号进行处理,则第i+1个信号的边界框小于等于第i个信号的边界框。
11.根据权利要求4所述的方法,其特征在于,对于每个可配置逻辑簇实例所连接的N个信号,按照信号的时序余量从小到大的顺序依次选择信号进行处理,并按随机顺序或预定顺序依次选择时序余量相等的信号进行处理,则第i+1个信号的时序余量大于等于第i个信号的时序余量。
12.根据权利要求1所述的方法,其特征在于,所述可配置逻辑簇实例所连接的N个信号包括所述可配置逻辑簇实例所连接的所有信号,或者所述可配置逻辑簇实例所连接的其中部分信号。
13.根据权利要求12所述的方法,其特征在于,当所述N个信号是所述可配置逻辑簇实例所连接的部分信号时,所述N个信号是所述可配置逻辑簇实例所连接的所有信号中在网表的总扇出数量大于第一预定阈值的信号,或者,所述N个信号是所述可配置逻辑簇实例所连接的所有信号中边界框大于第二预定阈值的信号,或者,所述N个信号是所述可配置逻辑簇实例所连接的所有信号中时序余量小于第三预定阈值的信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011023776.7A CN112131813B (zh) | 2020-09-25 | 2020-09-25 | 基于端口交换技术的用于提升布线速度的fpga布线方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011023776.7A CN112131813B (zh) | 2020-09-25 | 2020-09-25 | 基于端口交换技术的用于提升布线速度的fpga布线方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131813A CN112131813A (zh) | 2020-12-25 |
CN112131813B true CN112131813B (zh) | 2022-02-18 |
Family
ID=73840713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011023776.7A Active CN112131813B (zh) | 2020-09-25 | 2020-09-25 | 基于端口交换技术的用于提升布线速度的fpga布线方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131813B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115204103B (zh) * | 2022-09-19 | 2023-03-24 | 中科亿海微电子科技(苏州)有限公司 | 基于cb分类的快速布线方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1192595A (zh) * | 1997-02-28 | 1998-09-09 | 阿尔卡塔尔-阿尔斯托姆通用电气公司 | 置换n个位组中的m个位组的接口装置、控制和逻辑单元 |
CN1902578A (zh) * | 2004-01-21 | 2007-01-24 | 国际商业机器公司 | 用于控制对逻辑单元的访问的方法和设备 |
CN106682290A (zh) * | 2016-12-13 | 2017-05-17 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件布线方法及装置 |
CN107194075A (zh) * | 2017-05-24 | 2017-09-22 | 上海安路信息科技有限公司 | 可编程逻辑器件的连线结构以及布线布局系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2933826B1 (fr) * | 2008-07-09 | 2011-11-18 | Univ Paris Curie | Reseau logique programmable, commutateur d'interconnexion et unite logique pour un tel reseau |
US20150262632A1 (en) * | 2014-03-12 | 2015-09-17 | Fusion-Io, Inc. | Grouping storage ports based on distance |
-
2020
- 2020-09-25 CN CN202011023776.7A patent/CN112131813B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1192595A (zh) * | 1997-02-28 | 1998-09-09 | 阿尔卡塔尔-阿尔斯托姆通用电气公司 | 置换n个位组中的m个位组的接口装置、控制和逻辑单元 |
CN1902578A (zh) * | 2004-01-21 | 2007-01-24 | 国际商业机器公司 | 用于控制对逻辑单元的访问的方法和设备 |
CN106682290A (zh) * | 2016-12-13 | 2017-05-17 | 深圳市紫光同创电子有限公司 | 可编程逻辑器件布线方法及装置 |
CN107194075A (zh) * | 2017-05-24 | 2017-09-22 | 上海安路信息科技有限公司 | 可编程逻辑器件的连线结构以及布线布局系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112131813A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9652576B2 (en) | Detailed placement with search and repair | |
US5956257A (en) | Automated optimization of hierarchical netlists | |
US6131182A (en) | Method and apparatus for synthesizing and optimizing control logic based on SRCMOS logic array macros | |
CN112257364B (zh) | 一种gpu加速计算的集成电路静态时序分析方法 | |
US8555218B2 (en) | Decision modules | |
JP2995963B2 (ja) | 階層的回路データベース最適化装置及び階層的回路データベース最適化方法 | |
US6415430B1 (en) | Method and apparatus for SAT solver architecture with very low synthesis and layout overhead | |
US20020059553A1 (en) | Creating optimized physical implementations from high-level descriptions of electronic design using placement-based information | |
US8860458B2 (en) | Integrated circuits with logic regions having input and output bypass paths for accessing registers | |
CN113779924B (zh) | 超导集成电路的布线优化方法和装置、存储介质和终端 | |
JP2002123563A (ja) | コンパイル方法および合成装置ならびに記録媒体 | |
US8181139B1 (en) | Multi-priority placement for configuring programmable logic devices | |
EP1958103A1 (en) | Timing constraint merging in hierarchical soc designs | |
CN112131813B (zh) | 基于端口交换技术的用于提升布线速度的fpga布线方法 | |
US20140143531A1 (en) | Automatic pipeline stage insertion | |
CN113158599B (zh) | 基于量子信息学的芯片和芯片化eda装置 | |
US6006023A (en) | Method of optimizing a logic circuit | |
JPWO2005098612A1 (ja) | 重要成分優先計算方式ならびに装置 | |
CN115577662B (zh) | 一种基于多fanout逻辑的时序器件资源优化方法 | |
CN111159967A (zh) | 一种基于网页排名算法的fpga电路布局与资源分配方法 | |
CN110728098B (zh) | Fpga重配置分区优化方法及系统 | |
US20100095262A1 (en) | Schematic Generation From Analog Netlists | |
US8904318B1 (en) | Method and apparatus for performing optimization using don't care states | |
US7516059B2 (en) | Logical simulation device | |
US6434728B1 (en) | Activation path simulation equipment and activation path simulation method |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |