一种松弛度权重时序驱动布局方法与流程

文档序号:26104014发布日期:2021-07-30 18:15阅读:164来源:国知局
一种松弛度权重时序驱动布局方法与流程

本发明涉及集成电路技术领域,尤其涉及一种松弛度权重时序驱动布局方法。



背景技术:

现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)是一种具有丰富硬件资源、强大并行处理能力和灵活配置能力的逻辑器件。这些特征使得fpga在数据处理、通信、网络等很多领域得到了越来越多的广泛应用。

随着集成电路的快速发展,集成电路的规模的增大给fpga布局算法提出了更高的要求。在当前芯片时序驱动布局算法中,用户设计了不同时钟具有不同的频率,从而决定了不同路径的设计延迟。根据时延来调整芯片中各个模块的位置,并不能有效的利用芯片中的高性能资源。



技术实现要素:

有鉴于此,本申请实施例提供了一种松弛度权重时序驱动布局方法。根据待映射模块的松弛度来确定模块的重要性,将重要性较高的模块映射到fpga芯片的中心位置区域,将重要性相对较低的模块映射到fpga芯片的边缘位置区域,以提高fpga芯片的设计性能。

第一方面,本申请实施例提供了一种松弛度权重时序驱动布局方法,包括:

初始化网表,所述网表中包括至少一个模块;

从所述网表中确定第一目标模块,将所述第一目标模块映射到所述fpga芯片内部对应的物理位置上,并利用时序引擎得到所述目标模块的松弛度;

根据所述第一目标模块的松弛度,更新所述第一目标模块在所述fpga芯片上的布局区域。

可选地,根据所述第一目标模块的松弛度,确定所述第一目标模块在所述fpga芯片上的布局区域包括:

基于所述第一目标模块的松弛度为负值,将所述第一目标模块重新映射到所述fpga芯片的中心区域的至少一个逻辑块中;

基于所述第一目标模块的松弛度为正值,将所述第一目标模块重新映射到所述fpga芯片的边缘区域的至少一个逻辑块中。

可选地,所述基于所述第一目标模块的松弛度为负值,将所述第一目标模块重新映射到所述fpga芯片的中心区域的至少一个逻辑块中包括:

当所述fpga芯片的中心区域的至少一个逻辑块中存在已经映射完成的模块时,将所述第一目标模块映射到与所述至少一个逻辑块中任意一个逻辑块相邻的逻辑块中。

可选地,所述基于所述第一目标模块的松弛度为负值,将所述第一目标模块重新映射到所述fpga芯片中的中心区域的至少一个逻辑块中包括:

当所述fpga芯片的中心区域的至少一个逻辑块中存在已经映射完成的模块时,获取所述第一目标模块和所述中心区域中已经映射完成的多个模块中的每一个模块的松弛度,并按照松弛度的大小关系进行重新布局。

可选地,所述基于所述第一目标模块的松弛度为正值,将所述第一目标模块重新映射到所述fpga芯片的边缘区域的至少一个逻辑块中包括:

当确定所述第一目标模块的松弛度为正值时,确定所述第一目标模块的当前布局区域;

基于所述第一目标模块的当前布局区域为所述fpga模块的边缘区域时,保持所述第一目标模块的布局区域不变;

基于所述第一目标模块的当前布局区域为所述fpga模块的中心区域时,将所述第一目标模块重新映射到所述fpga芯片的边缘区域。

可选地,所述方法还包括:

从所述网表中确定第二目标模块,并获取第二目标模块映射到所述fpga芯片内部对应的物理位置上松弛度;

根据所述松弛度更新所述第二目标模块在所述fpga芯片上的布局区域。

本申请实施例提供一种松弛度权重时序驱动布局方法,根据fpga芯片上各个模块的松弛度来布局,将松弛度小的模块识别为需要优先处理的重要模块,放在芯片的中心重要位置,提高了用户的设计性能。将松弛度大的模块识别为不重要的模块,放在芯片的边缘不重要位置,节约了芯片的高性能资源。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种fpga芯片的设计流程图;

图2为本申请实施例提供的一种松弛度权重时序驱动布局方法流程图;

图3为本申请实施例提供的一种fpga芯片的结构示意图;

图4为本申请实施例提供的一种fpga芯片的时钟树示意图;

图5为本发明申请实施例提供的一种fpga芯片的区域时序示意图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

fpga的设计流程是指通过eda软件对fpga芯片进行开发的过程,通常包括设计输入、逻辑综合、布局、布线、时序仿真和配置文件等步骤,其实现的具体流程如图1所示。

逻辑综合是指把输入的设计源码从高层次的描述转化为低成次的描述的过程,并最终通过编译产生各种逻辑门的逻辑网表。

布局布线是将综合生成的逻辑网表配置到具体的fpga芯片上,将工程的逻辑和时序与器件的可用资源匹配。布局布线是其中最重要的过程,布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。

时序分析是指在布局布线结束以后,通过对实际的布线结果进行时序仿真,搜集实际电路设计中所有关键路径上的时延,并根据获取的时延信息进一步地优化fpga芯片上的布局布线。

码流文件生成是指当获取的时延信息满足预先设定的时延要求时,由软件生成最终的码流文件,并下载到实际的fpga芯片中来实现具体的电路功能。

在对fpga芯片进行设计的过程中,对芯片上的逻辑元件进行布局和布线是决定芯片性能至关重要的一步。

因此,本发明申请实施例提供了一种松弛度权重时序驱动布局方法。如图2所示,包括:步骤s201-步骤204。

步骤s201,初始化网表。

步骤s202,从网表中确定目标模块,并将目标模块映射到fpga芯片内部对应的物理位置上。

通过综合工具生成的网表文件中包括多个模块,将当前需要映射到fpga芯片上的模块作为目标模块。

如图3所示,图3为一种岛型的fpga结构示意图,包括:逻辑块、i/o块以及连接逻辑块和i/o块的布线要素(包括:布线通道、开关块和连接块)。将目标模块映射到fpga芯片上是指将目标模块映射到fpga芯片上的逻辑块中。

步骤s203,利用时序引擎获取目标模块的松弛度,并根据获取的松弛度,更新目标模块在fpga芯片上的布局区域。

电路的时序性能通常是用松弛度来表征的,松弛度是由信号的到达时间和要求到达时间计算得到的。对于一个设计松弛度为正则满足时序约束,若松弛度为负则不满足时序约束。

在一个示例中,图4为本申请实施例提供的一种fpga芯片的时钟树示意图。图5为本发明申请实施例提供的一种fpga芯片的区域时序示意图。如图4和图5所示,可以对fpga芯片中的区域进行划分,在将目标模块映射到fpga芯片的不同区域以后,可以通过时序引擎获取该目标模块的松弛度,当获取的目标模块的松弛度为负值时,更新该目标模块的布局区域为fpga芯片的中心区域。当目标模块的松弛度为正值时,更新将该目标模块的布局区域为fpga芯片的边缘区域。其中,将位于fpga芯片的几何中心位置的至少一个逻辑块所在的区域作为fpga的中心区域,将fpga芯片中与最外一圈布线通道相连的至少一个逻辑块所在的区域作为fpga芯片的边缘区域。如图3所示,将标号为6、7、10、11的逻辑块所在的区域作为该fpga芯片的中心区域,将标号为1、2、3、4、8、12、16、15、14、13、9、8、5的逻辑块所在的区域作为该fpga芯片的边缘区域。

当获取的目标模块的松弛度为负值时,将该目标模块重新映射到标号为6、7、10、11的逻辑块中的任意一个逻辑块中。

在一个示例中,获取的目标模块的松弛度为负值时,在将目标模块重新映射到fpga芯片的中心区域之前,判断位于fpga中心区域的模块(即标号为6、7、10、11的逻辑块)中是否存在已经映射完成的模块。当标号为6、7、10、11的逻辑块中均不存在引进映射完成的模块时,将目标模块映射到标号为6、7、10、11的逻辑块中的任意一个逻辑块中。

当标号为6、7、10、11的逻辑块中的至少一个逻辑块中存在已经映射完成的模块时,获取标号为6、7、10、11的逻辑块中的每一个逻辑块中的模块的松弛度。并根据松弛度的大小关系进行重新布局,具体包括:对获取的已经完成映射的各个模块的松弛度和目标模块的松弛度进行排序,将松弛度最小的模块映射位于fpga芯片中心区域的中心位置的逻辑块中。然后按照松弛度由小到大的顺序依次将剩余的各个模块映射到fpga中心区域的逻辑块中。

需要说明的是,在对fpga芯片中心区域的各个模块进行重新布局时,按照离中心区域的中心位置越远的模块的松弛度越大的方式进行布局。

在一个示例中,获取的目标模块的松弛度为正值时,确定目标模块的当前布局区域为fpga芯片的边缘区域时,不需要对该目标模块的布局区域进行更新。当确定目标模块的当前布局区域为fpga芯片的中心区域时,将目标模块重新映射到fpga芯片的边缘区域。

在将目标模块重新映射到fpga芯片的边缘区域的过程中,还需要计算目标模块的松弛度,以保证重新映射到fpga芯片边缘区域的目标模块的松弛度为正值。

当将网表中的目标模块布局到fpga芯片以后,还包括:

步骤s204,判断网表中是否还存在未映射到fpga芯片上的模块,当网表文件中还存在未映射到fpga芯片上的模块时,执行步骤s201。

在本申请实施例中,在将网表中的各个模块映射到fpga芯片上时,每映射一个模块到fpga芯片上时,都需要判断该模块的松弛度,并根据松弛度对映射到fpga芯片上的模块的布局区域进行调整,以保证芯片上的高性能资源得到最大化的利用。

进一步地,在将网表中的各个模块映射到fpga芯片上时,基于各个模块的松弛度来确定模块的重要性,当获取的模块的松弛度为负值时,该模块比较重要,需要将该模块映射到fpga芯片的中心区域。当获取的模块的松弛度为正值时,表示该模块的重要性相对较低,需要将该模块映射到fpga芯片的边缘区域。将重要性高的模块映射到芯片的中心位置,中心位置离其他模块相对较近,芯片时钟存在压降,使得映射到中心模块的电压相对较高,速度更快,提供更好的性能。将重要性相对较低的模块映射到芯片的边缘位置,以减少占用相对重要的中心位置,节约了芯片的高性能资源。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1