首页 / 专利库 / 电脑编程 / 算法 / 一种基于多层次方法和赋权超图的层次式FPGA布局布线方法

一种基于多层次方法和赋权超图的层次式FPGA布局布线方法

阅读:2发布:2020-10-05

专利汇可以提供一种基于多层次方法和赋权超图的层次式FPGA布局布线方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于多层次方法和赋权超图的层次式FPGA布局布线方法,其采用赋权超图来构造层次式FPGA布局布线过程中逻辑网表的数学模型, 电路 逻辑单元表示为赋权超图中的结点,电路单元间的连线表示为赋权超图中的超边。采用多层次方法作为层次式FPGA布局和布线的方法,以有效满足VLSI对运行效率和处理能 力 更高的要求。它既可通过自底向上的结群阶段逐步缩小问题的规模、降低方法的时间复杂度,又可借助自顶向下的投影优化阶段逐层处理问题的细节、提高方法的求解准确性,与研究对象的层次特性自然地结合在一起。采用本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法,可有效地降低FPGA物理设计的时间复杂度,提高FPGA设计能力和性能。,下面是一种基于多层次方法和赋权超图的层次式FPGA布局布线方法专利的具体信息内容。

1.一种基于多层次方法和赋权超图的层次式FPGA布局布线方法,其特征在于,具体步骤如下:
步骤1,用硬件描述语言描述该FPGA设计,综合生成该FPGA设计的网表文件;
步骤2,网表文件的词法分析,从左到右一个个读入该FPGA设计的网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词;
步骤3,网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的网表文件;
步骤4,网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;
步骤5,网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示;
步骤6,构造网表文件对应的赋权超图,基于中间代码构造文本描述的电路对应的逻辑网表,经过逻辑网表到赋权超图的转换之后,采用改进压缩的内存存储格式在物理存储空间表示赋权超图;
步骤7,用XML语言描述该FPGA芯片的版图和布线结构,得到该FPGA的“.xml”格式的结构描述文件;
步骤8,结构描述文件的词法分析,从左到右一个个读入该FPGA的结构描述文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词;
步骤9,结构描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据结构描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件;
步骤10,结构描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;
步骤11,结构描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示;
步骤12,构造结构描述文件对应FPGA的多层次布线资源图,基于中间代码构造以为根结点的树状结构,对树状结构的逻辑复合对应的子树进行递归遍历,构建结构描述文件对应FPGA的多层次布线资源图;
步骤13,启动基于多层次方法的层次式FPGA布局布线程序,输入在物理存储空间中表示的赋权超图和多层次布线资源图,进行基于多层次方法和赋权超图的层次式FPGA布局布线,输出层次式FPGA的布局布线结果;
上述的步骤6中,所述的赋权超图的改进压缩的内存存储格式如下;
步骤6.1,使用vwgts数组存储赋权超图中结点的权值信息,且vwgts数组的大小为赋权超图中的结点个数;
步骤6.2,使用xadj数组存储每个结点所有邻接赋权超边列表的起始位置信息,即第i个结点的终止位置为第i+1个结点的起始位置减1,且xadj数组的大小为赋权超图中的结点个数加1,xadj数组最后一个元素用于存放最后一个结点的终止位置;
步骤6.3,使用adjncy数组存储每个结点所有邻接赋权超边的列表信息,第i个结点的邻接赋权超边列表存储在adjncy数组中,从adjncy[xadj[i]]到adjncy[xadj[i+1]-1];
步骤6.4,使用eptr数组存储每条赋权超边所包含的结点列表的起始位置信息,即第j条赋权超边的终止位置为第j+1条赋权超边的起始位置减1,且eptr数组的大小为赋权超图中的赋权超边条数加1,eptr数组最后一个元素用于存放最后一条赋权超边的终止位置;
步骤6.5,使用eind数组存储每条赋权超边所包含结点的列表信息,其中每条赋权超边的尾端结点只有1个,且每条赋权超边尾端结点的所有直接前驱结点都包含在该赋权超边的源端子集中;第j条赋权超边的结点列表存储在eind数组中,从eind[eptr[j]]到eind[eptr[j+1]-1],其中第j条赋权超边的源端结点为eind[eptr[j]]到eind[eptr[j+1]-2],第j条赋权超边的尾端结点为eind[eptr[j+1]-1];
步骤6.6,使用hewgts数组存储赋权超边的权值信息,且hewgts数组的大小为赋权超图中的赋权超边数目;
上述的步骤13中,所述的基于多层次方法的层次式FPGA布局布线程序的步骤如下;
步骤13.1,进入到多层次方法的结群阶段,在多层次布线资源图的布线通道容量约束条件下,逐层对逻辑网表进行结群,采用赋权超图的结点结群程序将当前平层结群赋权超图的某些结点结合在一起,得到下一水平层的结群赋权超图,重复此过程直到结群赋权超图足够小为止,即得到一个最小结群超图;
步骤13.2,进入到多层次方法的在初始布局布线阶段,基于其特征向量刻画结点间相对距离的思想,采用谱方法对最高层次逻辑网表对应的最小结群超图进行划分,计算得到最高层次逻辑网表的最小割划分,进而基于最高层次逻辑网表的最小割划分,在最高层次布线资源图的资源约束条件下,完成布局与全局布线;
步骤13.3,进入到多层次方法的投影优化阶段,随着高层次的布局布线自顶向下地逐层投影到低层次的逻辑网表上,得到每一层次超图的近似非劣最优布局布线,在相应层次布线资源图的资源约束条件下,利用结群单元迁移的线长收益值启发式信息,采用多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布,直至最高层次逻辑网表的布局布线最终投影到原始逻辑网表上,在完成结群单元的迁移优化及相应线网的拆线重布后,输出层次式FPGA的布局布线;
上述的步骤13.1中,所述的结点结群程序的步骤如下;
步骤13.1.1,标注当前水平层结群赋权超图中所有结点处于未匹配状态;
步骤13.1.2,运行赋权超图的结点核值计算程序,基于结点属性函数值进行当前水平层结群赋权超图中所有结点的核值求解,并按照结点的核值进行非严格降序排序;
步骤13.1.3,基于结点核值的非严格降序访问处于未结群状态的结点,依据结群结果可布性的规则对其进行结群,从而将连接性好的结点合并在一起,从而更好地优化低层次的局部互连线,以获得更优的结群效果;
步骤13.1.4,重复步骤13.1.3,直至所有结点访问结束;
上述的步骤13.1.2中,所述的赋权超图的结点核值计算程序的步骤如下;
步骤13.1.2.1,计算出所有结点的属性函数值;
步骤13.1.2.2,对所有结点的属性函数值进行非严格降序排序;
步骤13.1.2.3,按照结点属性函数值的非严格降序次序访问每个结点,计算每个结点的核值;
上述的步骤13.1.2.2中,所述的对所有结点的属性函数值进行非严格降序排序的步骤如下;
步骤13.1.2.2.1,根据结点的属性函数值属于在一定范围内的整数的特点,扫描所有结点的属性函数值,统计每一种属性函数值的结点个数,存储在计数辅助数组bin中;
步骤13.1.2.2.2,针对每一种属性函数值,借助计数辅助数组bin,计算出在所有结点的属性函数值中,小于该属性函数值的结点个数,存储在位置辅助数组pos中;
步骤13.1.2.2.3,扫描所有结点的属性函数值,针对每一个结点的属性函数值,借助位置辅助数组pos,得到该结点的属性函数值在非严格降序排序的次序,并将该次序存储在次序辅助数组vert中;
上述的步骤13.1.2.3中,所述的计算结点v的核值的步骤如下;
步骤13.1.2.3.1,将结点v的属性函数值作为核值输出;
步骤13.1.2.3.2,标记结点v从所在的超边e中删除;
步骤13.1.2.3.3,如果超边e删除结点v后,仍包含两个及以上未被标记删除的结点,则超边e仍然存在,否则删除超边e;
步骤13.1.2.3.4,重新计算结点v的邻接结点u的属性函数值;
步骤13.1.2.3.5,如果邻接结点u的属性函数值大于结点v的属性函数值,更新邻接结点u的属性函数值为结点v的属性函数值,并且借助计数辅助数组bin、位置辅助数组pos和次序辅助数组vert的信息,快速更新邻接结点u在所有结点的属性函数值非严格降序排序的次序;否则不更新邻接结点u的属性函数值及其排序的次序;
上述的步骤13.1.3中,所述的结群结果可布性的规则的步骤如下;
步骤13.1.3.1,在候选结群子群的搜索过程中,使用面向结群的布线算法检验候选结群子群的内部线网和外部线网是否满足相应层次布线资源图的布线通道容量约束条件;
步骤13.1.3.2,如果满足条件,则意味着结群结果可布线,且可避免布局与布线之间的不匹配,则进行结群;否则检验下一个候选结群子群;
上述的步骤13.3中,所述的采用多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布程序的步骤如下;
步骤13.3.1,结群单元映射到离散群智能的初始化,针对每个结群单元设定一一对应的粒子,并依据结群单元所处布线资源图的子区域位置及拓扑连接关系,初始化对应粒子的自身位置向量、自身速度向量、自身历史最优位置向量,进而初始化全体粒子的全局历史最优位置向量;
步骤13.3.2,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身位置向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身位置向量;粒子在当前水平层的细化赋权超图的每个维度空间的位置代表着该维度空间对应的当前层次逻辑网表的布局布线,即个体在每个维度空间的位置代表该维度空间对应结群单元所处布线资源图的子区域位置及拓扑连接关系;
步骤13.3.3,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身速度向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身速度向量,即粒子在当前水平层细化赋权超图的每个维度空间的速度;
步骤13.3.4,遍历每个粒子,并依据每个粒子的当前水平层细化赋权超图的自身位置向量,计算每个粒子迁移的线长收益值 ;
步骤13.3.5,遍历每个粒子,并依据每个粒子迁移的线长收益值,快速计算每个粒子在当前水平层的细化赋权超图的自身位置向量的总线长;
步骤13.3.6,循环初始化,初始化循环计数器COUNT为0;
步骤13.3.7,遍历每个粒子在当前水平层的细化赋权超图的所有维度,基于结群单元迁移的线长收益值启发式信息,更新每个粒子在每个维度的自身速度、自身位置,进而得到每个粒子的自身速度向量和自身位置向量;
步骤13.3.8,依据粒子的自身位置向量更新计算粒子的迁移的线长收益值;
步骤13.3.9,基于粒子迁移的线长收益值启发式信息,利用个体聚集协同表现出的智能行为,搜索多约束条件下、多目标组合的Pareto有效解,使非劣迁移优化解向着Pareto-最优面逼近,实现对粒子有选择性的迁移优化,并对相应线网进行拆线重布;
步骤13.3.10,遍历每个粒子,并依据每个粒子的自身位置向量和迁移的线长收益值,快速计算每个粒子的当前水平层细化赋权超图的自身位置向量的总线长;如果该粒子的自身位置向量的总线长小于自身历史最优位置向量的总线长,则更新该粒子的历史最优位置向量为当前的自身位置向量;如果该粒子的自身位置向量的总线长小于全体粒子的全局历史最优位置向量的总线长,则更新全体粒子的全局历史最优位置向量为该粒子当前的自身位置向量;
步骤13.3.11,重复步骤13.3.7、13.3.8、13.3.9、13.3.10和循环计数器COUNT加1,直至循环计数器COUNT到达给定的上限。

说明书全文

一种基于多层次方法和赋权超图的层次式FPGA布局布线方法

技术领域

[0001] 本发明涉及一种FPGA布局布线方法,具体涉及一种基于多层次方法和赋权超图的层次式FPGA布局布线方法。

背景技术

[0002] 随着超大规模集成电路 (VLSI) 技术的发展,VLSI的制造工艺已从深亚微米工艺时代进入纳米工艺时代。国际半导体技术蓝图报告预测,2020年VLSI特征尺寸将减少到5nm,现场可编程阵列(FPGA)规模膨胀化和结构复杂化将给FPGA物理设计带来新的挑战。
布局布线作为FPGA物理设计的关键环节,决定着逻辑网表与物理器件的映射关系和拓扑连接关系,布局布线质量的好坏直接影响着FPGA电路最终的性能、功耗和可靠性。然而,超大规模集成电路制造技术的特征尺寸正在以指数级速度不断地减少,FPGA向着高性能、高集成度方向发展,其逻辑资源和布线资源将变得非常复杂且难以管理,与之相应的布局和布线方法运行时间呈指数倍数增加,导致无法在可接受的运行时间范围内求出可行解。因此,平面均匀分布模式的孤岛式和行阵式结构难以满足FPGA资源管理和设计周期等方面的需求。
[0003] 本发明涉及的层次式FPGA,采用基于完全k叉树的新型独特的布局和布线资源组织架构,借助高层次的布线资源来实现低层次各个子区域之间的互连,在保证同一层次各个子区域之间相对独立的同时,有效地将较大区域的布局布线问题分割为多个子区域的布局布线问题。层次式FPGA将逻辑资源分层和分组地管理,布线资源细分为高层次的全局互连线和低层次的局部互连线,不仅具备了更优的组织结构和集成能,而且能有效地减少布线面积和信号时延,更好地适应FPGA逻辑容量迅速增加的需要。和传统的孤岛式、行阵式等结构的FPGA相比,层次式FPGA已被证明在相同布通率的情况下可有效地减少布线面积和信号时延。
[0004] 因此,研究适用于层次式FPGA的资源模型和与之配套的高效快速布局布线方法是当前学术界和工业界亟待解决的问题,该问题的解决将有效地提高FPGA设计能力和性能,促进FPGA产业的迅速发展。
[0005] 为解决上述问题,本发明基于赋权超图和多层次方法进行层次式FPGA布局布线。
[0006] 一、本发明采用赋权超图来构造层次式FPGA布局布线过程中逻辑网表的数学模型,其中电路逻辑单元表示为赋权超图中的结点,电路单元间的连线表示为赋权超图中的超边。相比赋权无向图而言,赋权超图的多对多关系提供了精确描述逻辑网表的手段:每条超边可以连接两个以上的结点,对应于逻辑网表中的互连线可以连接两个以上的逻辑单元。
[0007] 二、本发明采用多层次方法作为层次式FPGA布局和布线的方法,以有效满足VLSI对运行效率和处理能力更高的要求。它既可通过自底向上的结群阶段逐步缩小问题的规模、降低方法的时间复杂度,又可借助自顶向下的投影优化阶段逐层处理问题的细节、提高方法的求解准确性,与研究对象的层次特性自然地结合在一起。
[0008] 多层次方法的概念。Karypis针对结点规模达到几百万的划分问题,提出了多层次方法的概念,在相对较短的时间内可以得到高质量的划分。该方法包含粗化、初始划分和迁移优化三个阶段。首先,它采用随机匹配策略将某些结点结合在一起,得到下一平层的粗化图,重复此过程直到粗化图足够小为止,即得到一个最小图。然后,采用划分方法对最小图进行对分,得到一个初始划分。之后,将最小图投影回初始图,在每一水平层的细化划分中,按照贪心原则选择收益值最大的结点进行迁移优化,得到最后的结点划分结果。
[0009] 多层次方法在电路划分和计算任务调度中的应用。自多层次方法的概念提出以来,得到了广泛地重视,并应用在电路划分和云计算任务调度等多个研究领域。
[0010] 2008年中国专利局公告的由冷明、郁松年和孙凌宇申报,中国专利号为200710043765.3号《基于多水平方法的大规模集成电路划分方法》的发明专利,针对现有技术方案中因采用随机策略进行匹配和贪心原则进行迁移优化,导致无法逃离局部最优的划分,提供了一种改进的基于多水平方法的大规模集成电路划分方法,有效地提高了大规模集成电路划分的效率和性能。该发明专利在多水平划分方法的粗化阶段,通过对结点属性进行赋权无向图中所有结点的核值求解排序,按照基于结点核值的非严格降序访问处于未匹配状态的结点,依据一定规则对其进行匹配,从而将连接性好的结点合并在一起;在多水平划分方法的优化阶段,采用免疫克隆优化程序改进贪心原则的局部搜索方法,对在每一水平层投影的划分进行优化,借助克隆操作、克隆变异操作、接种免疫疫苗操作和克隆选择操作,使得改进后的方法在利用启发信息搜索局部最优解的同时,能更自由地对具有潜力的解空间进行搜索,增加全局搜索能力。
[0011] 2012年中国专利局公告的由孙凌宇、冷明和冷子阳申报,中国专利号为201210155738.6号《基于多水平方法和赋权超图的大规模集成电路划分方法》的发明专利,针对采用赋权无向图作为大规模集成电路划分问题的数学模型,存在着赋权无向图最优划分和大规模集成电路最优划分的不一致性,提供了一种基于多水平方法和赋权无向超图的大规模集成电路划分方法,进一步提高了大规模集成电路划分的效率和性能。该发明采用赋权无向超图对电路划分问题进行数学建模,其中电路逻辑单元表示为赋权无向超图中的结点,电路单元间的连线表示为赋权无向超图中的超边。相比赋权无向图而言,赋权无向超图为电路提供了更为精确的模型:每条超边可以连接两个以上的结点,对应于电路单元间的信号可以连接两个以上的电路逻辑单元。该发明将大规模集成电路划分问题转换为赋权无向超图划分问题,其中大规模集成电路划分问题要求每个电路子集所包含的电路逻辑单元数目相等,对应于赋权无向超图划分问题的平衡约束条件,划分结果使得这些电路子集之间的内连线数据达到最小,对应于赋权无向超图划分问题的最小化总割切。
[0012] 2014年中国专利局公告的由孙凌宇、冷明和冷子阳申报,中国专利号为201410136320.X号《基于多水平方法和赋权有向超图的云计算任务调度方法》的发明专利,提供了一种基于多水平方法和赋权有向超图的云计算任务调度方法,进一步提高了任务调度的效率和性能。该发明采用赋权有向超图来构造任务划分问题的数学模型,描述任务的资源需求及依赖关系,其中任务表示为赋权有向超图的结点,任务结点间的先后依赖关系表示为赋权有向超图中的有向超边,并生成相应的赋权有向超图文件;然后启动基于多水平划分方法的赋权有向超图划分程序,对生成的赋权有向超图进行划分;最后依据赋权有向超图的划分结果构造任务子集,通过MapReduce任务调度模型对其进行映射和调度。
[0013] 2015年中国专利局公告的由孙凌宇、冷明和冷子阳申报,中国专利号为201510135672.8号《基于多层次方法和离散粒子群的赋权超图优化划分方法》的发明专利,提供了一种基于多层次方法和离散粒子群的赋权超图优化划分方法,进一步有效地缩短了划分所需的运行时间,减少了划分所需的存储空间。该发明在多层次方法的粗化阶段,通过对赋权超图中所有结点进行基于结点属性函数的核值求解排序,进而基于结点核值的非严格降序访问处于未匹配状态的结点,依据一定规则对其进行匹配,从而将连接性好的结点合并在一起,为多层次划分的后续阶段提供更优的粗化赋权超图。在多层次方法的优化阶段,采用多目标的离散粒子群搜索程序改进贪心原则的局部搜索方法,对在每一水平层粗化赋权超图投影的划分进行优化,其中粒子所处|V|维空间位置对应于一个划分方案,即粒子在每个维度空间的位置代表该维度空间对应结点所处划分的结点子集;伴随着优化阶段的细化过程,每个粒子解决方案代表的划分投影到当前水平层的细化赋权超图上,且粒子的自由度随着空间维度|V|的增加而增大;粒子之间进行直接通信或者间接通信,利用它们聚集协同表现出的智能行为,有效地搜索多约束条件下、多目标组合的Pareto有效解,使非劣迁移优化解向着Pareto-最优面逼近,增强迁移优化方法的多目标搜索能力。

发明内容

[0014] 本发明涉及的层次式FPGA布局布线方法,是将逻辑网表映射到树状架构的FPGA器件资源中,并合理正确地选择布线资源连接各个器件及I/O模
[0015] 本发明的目的在于针对已有技术存在的不足,提供一种基于多层次方法和赋权超图的层次式FPGA布局布线方法,有效地降低FPGA物理设计的时间复杂度,提高FPGA设计能力和性能。为达到上述目的,本发明的构思如下。
[0016] 一、逻辑网表到赋权超图的转换;首先,对网表文件进行相应编译器的词法分析、语法分析和中间代码生成;进而,依据中间代码构造基于赋权超图的逻辑网表,实现逻辑网表在物理存储空间中的赋权超图表示;最后,启动基于多层次方法的布局布线程序,对生成的赋权超图进行布局布线。
[0017] 二、多层次方法的结群阶段,通过对赋权超图中所有结点进行基于结点属性函数的核值求解排序,进而基于结点核值的非严格降序访问处于未匹配状态的结点,依据一定规则对其进行匹配,从而将连接性好的结点合并在一起,从而更好地优化低层次的局部互连线,以获得更优的结群效果。
[0018] 三、多层次方法的初始布局布线阶段,采用谱方法对最高层次逻辑网表对应的最小结群超图进行划分,基于其特征向量刻画结点间相对距离的思想,为初始布局布线阶段提供最小割的划分;进而依据最高层次逻辑网表的最小割划分,在最高层次布线资源图的资源约束条件下,进行布局和全局布线,从而有效地减少高层次的全局互连线。
[0019] 四、多层次方法的优化阶段,采用多目标的离散群智能方法进行结群单元多目标迁移优化技术及局部拆线重布,其中个体所处|V|维空间位置(V代表当前层次的结群单元集合)对应于当前层次逻辑网表的布局布线,即个体在每个维度空间的位置代表该维度空间对应结群单元所处布线资源图的子区域位置及拓扑连接关系;伴随着自顶向下、逐步细化的投影优化过程,每个个体解决方案代表的布局布线投影到低层次的逻辑网表上,个体的自由度随着结群单元的分离(即空间维度|V|的增加)而增大;进而基于结群单元迁移的线长收益值等启发式信息,利用个体聚集协同表现出的智能行为,有效地搜索多约束条件下、多目标组合的Pareto有效解,使非劣迁移优化解向着Pareto-最优面逼近,实现对结群单元有选择性的迁移优化,并对相应线网进行拆线重布,避免布局布线陷入局部最优解。
[0020] 根据上述的发明构思,本发明的技术方案是这样实现的:一种基于多层次方法和赋权超图的层次式FPGA布局布线方法,其特征在于,具体步骤如下。
[0021] 步骤1,用硬件描述语言描述该FPGA设计,综合生成该FPGA设计的网表文件。
[0022] 步骤2,网表文件的词法分析,从左到右一个个读入该FPGA设计的网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
[0023] 步骤3,网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的网表文件。
[0024] 步骤4,网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
[0025] 步骤5,网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
[0026] 步骤6,构造网表文件对应的赋权超图,基于中间代码构造文本描述的电路对应的逻辑网表,经过逻辑网表到赋权超图的转换之后,采用改进压缩的内存存储格式在物理存储空间表示赋权超图。
[0027] 步骤7,用XML语言描述该FPGA芯片的版图和布线结构,得到该FPGA的“.xml”格式的结构描述文件。
[0028] 步骤8,结构描述文件的词法分析,从左到右一个个读入该FPGA的结构描述文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词。
[0029] 步骤9,结构描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语,依据结构描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件。
[0030] 步骤10,结构描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息。
[0031] 步骤11,结构描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码,用内部中间格式表示。
[0032] 步骤12,构造结构描述文件对应FPGA的多层次布线资源图,基于中间代码构造以为根结点的树状结构,对树状结构的逻辑复合块对应的子树进行递归遍历,构建结构描述文件对应FPGA的多层次布线资源图。
[0033] 步骤13,启动基于多层次方法的层次式FPGA布局布线程序,输入在物理存储空间中表示的赋权超图和多层次布线资源图,进行基于多层次方法和赋权超图的层次式FPGA布局布线,输出层次式FPGA的布局布线结果。
[0034] 上述的步骤6中,所述的赋权超图的改进压缩的内存存储格式如下。
[0035] 步骤6.1,使用vwgts数组存储赋权超图中结点的权值信息,且vwgts数组的大小为赋权超图中的结点个数。
[0036] 步骤6.2,使用xadj数组存储每个结点所有邻接赋权超边列表的起始位置信息,即第i个结点的终止位置为第i+1个结点的起始位置减1,且xadj数组的大小为赋权超图中的结点个数加1,xadj数组最后一个元素用于存放最后一个结点的终止位置。
[0037] 步骤6.3,使用adjncy数组存储每个结点所有邻接赋权超边的列表信息,第i个结点的邻接赋权超边列表存储在adjncy数组中,从adjncy[xadj[i]]到adjncy[xadj[i+1]-1]。
[0038] 步骤6.4,使用eptr数组存储每条赋权超边所包含的结点列表的起始位置信息,即第j条赋权超边的终止位置为第j+1条赋权超边的起始位置减1,且eptr数组的大小为赋权超图中的赋权超边条数加1,eptr数组最后一个元素用于存放最后一条赋权超边的终止位置。
[0039] 步骤6.5,使用eind数组存储每条赋权超边所包含结点的列表信息,其中每条赋权超边的尾端结点只有1个,且每条赋权超边尾端结点的所有直接前驱结点都包含在该赋权超边的源端子集中;第j条赋权超边的结点列表存储在eind数组中,从eind[eptr[j]]到eind[eptr[j+1]-1],其中第j条赋权超边的源端结点为eind[eptr[j]]到eind[eptr[j+1]-2],第j条赋权超边的尾端结点为eind[eptr[j+1]-1]。
[0040] 步骤6.6,使用hewgts数组存储赋权超边的权值信息,且hewgts数组的大小为赋权超图中的赋权超边数目。
[0041] 上述的步骤13中,所述的基于多层次方法的层次式FPGA布局布线程序的步骤如下。
[0042] 步骤13.1,进入到多层次方法的结群阶段,在多层次布线资源图的布线通道容量约束条件下,逐层对逻辑网表进行结群,采用赋权超图的结点结群程序将当前水平层结群赋权超图的某些结点结合在一起,得到下一水平层的结群赋权超图,重复此过程直到结群赋权超图足够小为止,即得到一个最小结群超图。
[0043] 步骤13.2,进入到多层次方法的在初始布局布线阶段,基于其特征向量刻画结点间相对距离的思想,采用谱方法对最高层次逻辑网表对应的最小结群超图进行划分,计算得到最高层次逻辑网表的最小割划分,进而基于最高层次逻辑网表的最小割划分,在最高层次布线资源图的资源约束条件下,完成布局与全局布线。
[0044] 步骤13.3,进入到多层次方法的投影优化阶段,随着高层次的布局布线自顶向下地逐层投影到低层次的逻辑网表上,得到每一层次超图的近似非劣最优布局布线,在相应层次布线资源图的资源约束条件下,利用结群单元迁移的线长收益值等启发式信息,采用多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布,直至最高层次逻辑网表的布局布线最终投影到原始逻辑网表上,在完成结群单元的迁移优化及相应线网的拆线重布后,输出层次式FPGA的布局布线。
[0045] 上述的步骤13.1中,所述的结点结群程序的步骤如下。
[0046] 步骤13.1.1,标注当前水平层结群赋权超图中所有结点处于未匹配状态。
[0047] 步骤13.1.2,运行赋权超图的结点核值计算程序,基于结点属性函数值进行当前水平层结群赋权超图中所有结点的核值求解,并按照结点的核值进行非严格降序排序。
[0048] 步骤13.1.3,基于结点核值的非严格降序访问处于未结群状态的结点,依据结群结果可布性的规则对其进行结群,从而将连接性好的结点合并在一起,从而更好地优化低层次的局部互连线,以获得更优的结群效果。
[0049] 步骤13.1.4,重复步骤13.1.3,直至所有结点访问结束。
[0050] 上述的步骤13.1.2中,所述的赋权超图的结点核值计算程序的步骤如下。
[0051] 步骤13.1.2.1,计算出所有结点的属性函数值。
[0052] 步骤13.1.2.2,对所有结点的属性函数值进行非严格降序排序。
[0053] 步骤13.1.2.3,按照结点属性函数值的非严格降序次序访问每个结点,计算每个结点的核值。
[0054] 上述的步骤13.1.2.2中,所述的对所有结点的属性函数值进行非严格降序排序的步骤如下。
[0055] 步骤13.1.2.2.1,根据结点的属性函数值属于在一定范围内的整数的特点,扫描所有结点的属性函数值,统计每一种属性函数值的结点个数,存储在计数辅助数组bin中。
[0056] 步骤13.1.2.2.2,针对每一种属性函数值,借助计数辅助数组bin,计算出在所有结点的属性函数值中,小于该属性函数值的结点个数,存储在位置辅助数组pos中。
[0057] 步骤13.1.2.2.3,扫描所有结点的属性函数值,针对每一个结点的属性函数值,借助位置辅助数组pos,得到该结点的属性函数值在非严格降序排序的次序,并将该次序存储在次序辅助数组vert中。
[0058] 上述的步骤13.1.2.3中,所述的计算结点v的核值的步骤如下。
[0059] 步骤13.1.2.3.1,将结点v的属性函数值作为核值输出。
[0060] 步骤13.1.2.3.2,标记结点v从所在的超边e中删除。
[0061] 步骤13.1.2.3.3,如果超边e删除结点v后,仍包含两个及以上未被标记删除的结点,则超边e仍然存在,否则删除超边e。
[0062] 步骤13.1.2.3.4,重新计算结点v的邻接结点u的属性函数值。
[0063] 步骤13.1.2.3.5,如果邻接结点u的属性函数值大于结点v的属性函数值,更新邻接结点u的属性函数值为结点v的属性函数值,并且借助计数辅助数组bin、位置辅助数组pos和次序辅助数组vert的信息,快速更新邻接结点u在所有结点的属性函数值非严格降序排序的次序;否则不更新邻接结点u的属性函数值及其排序的次序。
[0064] 上述的步骤13.1.3中,所述的结群结果可布性的规则的步骤如下。
[0065] 步骤13.1.3.1,在候选结群子群的搜索过程中,使用面向结群的布线算法检验候选结群子群的内部线网和外部线网是否满足相应层次布线资源图的布线通道容量约束条件。
[0066] 步骤13.1.3.2,如果满足条件,则意味着结群结果可布线,且可避免布局与布线之间的不匹配,则进行结群;否则检验下一个候选结群子群。
[0067] 上述的步骤13.3中,所述的采用多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布程序的步骤如下。
[0068] 步骤13.3.1,结群单元映射到离散群智能的初始化,针对每个结群单元设定一一对应的粒子,并依据结群单元所处布线资源图的子区域位置及拓扑连接关系,初始化对应粒子的自身位置向量、自身速度向量、自身历史最优位置向量,进而初始化全体粒子的全局历史最优位置向量。
[0069] 步骤13.3.2,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身位置向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身位置向量。粒子在当前水平层的细化赋权超图的每个维度空间的位置代表着该维度空间对应的当前层次逻辑网表的布局布线,即个体在每个维度空间的位置代表该维度空间对应结群单元所处布线资源图的子区域位置及拓扑连接关系。
[0070] 步骤13.3.3,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身速度向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身速度向量,即粒子在当前水平层细化赋权超图的每个维度空间的速度。
[0071] 步骤13.3.4,遍历每个粒子,并依据每个粒子的当前水平层细化赋权超图的自身位置向量,计算每个粒子迁移的线长收益值 。
[0072] 步骤13.3.5,遍历每个粒子,并依据每个粒子迁移的线长收益值,快速计算每个粒子在当前水平层的细化赋权超图的自身位置向量的总线长。
[0073] 步骤13.3.6,循环初始化,初始化循环计数器COUNT为0。
[0074] 步骤13.3.7,遍历每个粒子在当前水平层的细化赋权超图的所有维度,基于结群单元迁移的线长收益值等启发式信息,更新每个粒子在每个维度的自身速度、自身位置,进而得到每个粒子的自身速度向量和自身位置向量。
[0075] 步骤13.3.8,依据粒子的自身位置向量更新计算粒子的迁移的线长收益值。
[0076] 步骤13.3.9,基于粒子迁移的线长收益值等启发式信息,利用个体聚集协同表现出的智能行为,搜索多约束条件下、多目标组合的Pareto有效解,使非劣迁移优化解向着Pareto-最优面逼近,实现对粒子有选择性的迁移优化,并对相应线网进行拆线重布。
[0077] 步骤13.3.10,遍历每个粒子,并依据每个粒子的自身位置向量和迁移的线长收益值,快速计算每个粒子的当前水平层细化赋权超图的自身位置向量的总线长;如果该粒子的自身位置向量的总线长小于自身历史最优位置向量的总线长,则更新该粒子的历史最优位置向量为当前的自身位置向量;如果该粒子的自身位置向量的总线长小于全体粒子的全局历史最优位置向量的总线长,则更新全体粒子的全局历史最优位置向量为该粒子当前的自身位置向量。
[0078] 步骤13.3.11,重复步骤13.3.7、13.3.8、13.3.9、13.3.10和循环计数器COUNT加1,直至循环计数器COUNT到达给定的上限。
[0079] 本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著优点。
[0080] 1、结群阶段,在保证结群结果可布性的同时,有效地减少布局与布线之间的不匹配性。
[0081] 本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法在结群阶段,对于宏单元面积和位置的FPGA硬件固有约束,将宏单元视为粒度较大的结群单元,在相同粒度级别的结群层次上进行匹配,无缝地嵌入到自底向上的多层次结群过程中。此外,借助多层次优化方法的结群阶段,既能极大地提高布局布线问题的求解速度,又能有效地优化低层次的局部互连线。
[0082] 2、初始布局布线阶段,有效地减少高层次的全局互连线。
[0083] 本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法在初始布局布线阶段,基于最高层次逻辑网表的最小割划分进行布局和全局布线,通过将连接性好的结群单元布局在同一个子区域中,不仅有效地抑制了子区域之间的互连需求,更好地优化了高层次的全局互连线,而且将结群与划分算法自然地融合在多层次优化方法中,充分地发挥了各自算法的优势。
[0084] 3、投影优化阶段,避免布局布线陷入局部最优解。
[0085] 本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法在投影优化阶段,随着高层次的布局布线自顶向下地逐层投影到低层次的逻辑网表上,通过部分结群单元的迁移优化及相应线网的拆线重布,不仅逐层地优化了互连线的总线长,而且有效地解决了布局与布线之间、全局布线与详细布线之间的匹配问题。附图说明
[0086] 通过以下对本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法的实例结合其附图的描述,可以进一步理解本发明的目的、具体结构特征和优点。
[0087] 图1是本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法的流程图
[0088] 图2是本发明的赋权超图的改进压缩的内存存储格式。
[0089] 图3是基于多层次方法和赋权超图的层次式FPGA布局布线过程中投影优化阶段,多目标的离散群智能方法结群单元的迁移优化及相应线网的拆线重布程序的流程图。

具体实施方式

[0090] 为了能够更清楚地理解本发明基于多层次方法和赋权超图的层次式FPGA布局布线方法的技术内容,特举以下实例详细说明。
[0091] 本实施例的基于多层次方法和赋权超图的层次式FPGA布局布线方法的流程图如图1所示,用硬件描述语言描述该FPGA设计101,综合生成该FPGA设计的网表文件103;网表文件的词法分析,从左到右一个个读入该FPGA设计的网表文件,对构成源代码的字符流进行扫描和分解,从而识别出一个个单词104;网表文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语105,依据网表文件的语法规则,确定整个字符流是否构成一个语法上正确的网表文件;网表文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;网表文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码106,用内部中间格式表示;构造网表文件对应的赋权超图,基于中间代码构造文本描述的电路对应的逻辑网表111,经过逻辑网表到赋权超图的转换之后,采用改进压缩的内存存储格式在物理存储空间表示赋权超图115;用XML语言描述该FPGA芯片结构102的版图和布线结构,得到该FPGA的“.xml”格式的结构描述文件源代码107;结构描述文件的词法分析,从左到右一个个读入该FPGA的结构描述文件,对构成源代码107的字符流进行扫描和分解,从而识别出一个个单词108;结构描述文件的语法分析,在词法分析的基础上将单词序列分解成各类语法短语109,依据结构描述文件的语法规则,确定整个字符流是否构成一个语法上正确的结构描述文件;结构描述文件的语义分析,在语法分析的基础上审核源代码有无语义错误,为中间代码生成阶段收集类型信息;,结构描述文件的中间代码生成,在语法分析和语义分析的基础上,将源代码生成中间代码110,用内部中间格式表示;构造结构描述文件对应FPGA的多层次布线资源图,基于中间代码构造以为根结点的树状结构,对树状结构的逻辑复合块对应的子树进行递归遍历,构建结构描述文件对应FPGA的多层次布线资源图119;启动基于多层次方法的层次式FPGA布局布线程序,输入在物理存储空间中表示的赋权超图115和多层次布线资源图119,进行基于多层次方法和赋权超图的层次式FPGA布局布线,输出层次式FPGA的布局布线结果123。其中,本实施例的基于多层次方法的层次式FPGA布局布线程序的流程图如图1所示,进入到多层次方法的结群阶段,在多层次布线资源图120的布线通道容量约束条件下,逐层对逻辑网表进行结群,采用赋权超图的结点结群程序将当前水平层结群赋权超图的某些结点结合在一起,得到下一水平层的结群赋权超图116,重复此过程直到结群赋权超图足够小为止,即得到一个最小结群超图117;进入到多层次方法的在初始布局布线阶段,基于其特征向量刻画结点间相对距离的思想,采用谱方法对最高层次逻辑网表对应的最小结群超图进行划分,计算得到最高层次逻辑网表的最小割划分,进而基于最高层次逻辑网表的最小割划分,在最高层次布线资源图121的资源约束条件下,完成布局与全局布线。进入到多层次方法的投影优化阶段,随着高层次的布局布线自顶向下地逐层投影到低层次的逻辑网表上,得到每一层次超图的近似非劣最优布局布线118,在相应层次布线资源图122的资源约束条件下,利用结群单元迁移的线长收益值等启发式信息,采用多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布,直至最高层次逻辑网表的布局布线最终投影到原始逻辑网表上,在完成结群单元的迁移优化及相应线网的拆线重布后,输出层次式FPGA的布局布线123。
[0092] 本实施例的赋权超图的改进压缩的内存存储格式如图2所示。存储结构使用adjncy数组204存储每个结点所有邻接超边的列表信息。使用xadj数组203存储每个结点所有邻接超边列表的起始位置信息,即第i条结点的终止位置为第i+1条结点的起始位置减1,且xadj数组203的大小为赋权超图中的结点个数加1, xadj数组203最后一个元素用于存放最后一条结点的终止位置。使用eind数组207存储每条超边所包含结点的列表信息。使用eptr数组206存储每条超边所包含的结点列表的起始位置信息,即第j条超边的终止位置为第j+1条超边的起始位置减1,且eptr数组206的大小为赋权超图中的超边个数加1, eptr数组206最后一个元素用于存放最后一条超边的终止位置。使用vwgts数组202存储结点的权值信息,且vwgts数组202的大小为赋权超图中的结点个数。使用hewgts数组205存储超边的权值信息,且hewgts数组205的大小为赋权超图中的超边个数。假设数组地址从零开始,结点编号从零开始,则第i条结点的邻接超边列表存储在adjncy数组204中,从adjncy[xadj[i]]到adjncy[xadj[i+1]-1];第j条超边的邻接结点列表存储在eind数组207中,从eind[eptr[j]]到eind[eptr[j+1]-1]。图例201包含总共7个结点和8条超边,其中第6个结点的权值为7,有2条邻接超边f、h,对应的权值为4、1,且相应的邻接结点分别为结点7、3、6和结点4、6。
[0093] 本实施例的赋权超图的结点核值计算程序参见在先技术[1] “孙凌宇,冷明,冷子阳.基于结点属性函数的大规模集成电路的核值计算方法 [P].2012. 发明专利申请号201210150329.7.”。
[0094] 本实施例的基于多层次方法和赋权超图的层次式FPGA布局布线过程中投影优化阶段,多目标的离散群智能方法进行结群单元的迁移优化及相应线网的拆线重布程序的流程图如图3所示,步骤如下。
[0095] A01,结群单元映射到离散群智能的初始化,针对每个结群单元设定一一对应的粒子,并依据结群单元所处布线资源图的子区域位置及拓扑连接关系,初始化对应粒子的自身位置向量、自身速度向量、自身历史最优位置向量,进而初始化全体粒子的全局历史最优位置向量。
[0096] A02,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身位置向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身位置向量。粒子在当前水平层的细化赋权超图的每个维度空间的位置代表着该维度空间对应的当前层次逻辑网表的布局布线,即个体在每个维度空间的位置代表该维度空间对应结群单元所处布线资源图的子区域位置及拓扑连接关系。
[0097] A03,遍历每个粒子,并依据每个粒子的上一水平层结群赋权超图的自身速度向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身速度向量,即粒子在当前水平层细化赋权超图的每个维度空间的速度。
[0098] A04,遍历每个粒子,并依据每个粒子的当前水平层细化赋权超图的自身位置向量,计算每个粒子迁移的线长收益值 。
[0099] A05,遍历每个粒子,并依据每个粒子迁移的线长收益值,快速计算每个粒子在当前水平层的细化赋权超图的自身位置向量的总线长。
[0100] A06,循环初始化,初始化循环计数器COUNT为0。
[0101] A07,遍历每个粒子在当前水平层的细化赋权超图的所有维度,基于结群单元迁移的线长收益值等启发式信息,更新每个粒子在每个维度的自身速度、自身位置,进而得到每个粒子的自身速度向量和自身位置向量。
[0102] A08,依据粒子的自身位置向量更新计算粒子的迁移的线长收益值。
[0103] A09,基于粒子迁移的线长收益值等启发式信息,利用个体聚集协同表现出的智能行为,搜索多约束条件下、多目标组合的Pareto有效解,使非劣迁移优化解向着Pareto-最优面逼近,实现对粒子有选择性的迁移优化,并对相应线网进行拆线重布。
[0104] A10,遍历每个粒子,并依据每个粒子的自身位置向量和迁移的线长收益值,快速计算每个粒子的当前水平层细化赋权超图的自身位置向量的总线长;如果该粒子的自身位置向量的总线长小于自身历史最优位置向量的总线长,则更新该粒子的历史最优位置向量为当前的自身位置向量;如果该粒子的自身位置向量的总线长小于全体粒子的全局历史最优位置向量的总线长,则更新全体粒子的全局历史最优位置向量为该粒子当前的自身位置向量。
[0105] A11,重复A07、A08、A09、A010和循环计数器COUNT加1,直至循环计数器COUNT到达给定的上限。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈