一种高效fpga技术映射算法_3

文档序号:9727556阅读:来源:国知局
1,对应的面积流初始化为0;
[00M] 2.5.2)判断是否图G中所有的节点均已被访问,如果是,结束步骤2.5),转至步骤 2.6),否则继续执行步骤2.5.3);
[0096] 2.5.3)向前遍历按照PI-P0的拓扑顺序,在图G中取未被访问的节点V,在节点V所 有满足下式的划分中选择面积流最小的划分Xv :
[0097] d邱th(x) < Odepth-hei曲t(v);
[009引 X表示节点V的一个划分,depth(x)表示划分X的深度,Odepth表示最优深度, hei曲t(v)表示节点V的高度;
[0099] 其中,节点V的划分的面积流计算如下:
[0100]
[0101 ]其中,ξ为任意小的随机数,iedge(v)表示节点V的输入边集合,Αν表示节点V本身 对面积的影响,一般取值为1;
[0102] 2.5.4)更新节点v的深度和面积流分别为d邱th(Xv)和af(Xv);
[0103] 2.5.5)更新节点v的任意一条输出边e的深度为depth(Xv)+delay(e),面积流为
,其中,delay(e)表示输出边e的相关时延,oedge(v)表示节点V的输出边集合;返 回执行步骤2.5.2)。
[0104]需要说明的是,如图4所示,所述步骤2.6)的具体方法如下:
[0105] 2.6.1)向后遍历初始化:初始化root集合为所有PO节点,并将所有PO节点的高度 初始化为1;
[0106] 2.6.2)判断是否图G中所有节点均已被访问,如果是,则结束步骤2.6),否则继续 执行步骤2.6.3);
[0107] 2.6.3)按照P0-PI的逆拓扑顺序,从图G中取出未被访问的节点V,如果V在集合 root内,计算:
[010引 h=max{height(e) :eE0edge(v)};
[0109]其中,hei曲t(e)为节点V的输出边集合中的任意边的高度,h则为节点V的输出边 集合中所有边的高度的最大值;
[0110] 2.6.4)更新节点v的最优划分Xv内的任意节点u的高度为height(u)=max化eight (U),h},对于Xv的任意输入边e更新其高度hei曲t(e)=max化eight(e),delay(e)+h},更新 集合root为root U inode(Xv),inode(Xv)表示支撑节点V的最优划分Xv的输入边的尾节点; 然后返回步骤2.6.2)。
[0111] 需要说明的是,步骤2.8)的具体方法为:采用最终得到的集合rootW及集合内每 个节点的最优划分,对DAG图G进行LUT映射,形成最终的LUT网络。
[0112] 对于本领域的技术人员来说,可W根据W上的技术方案和构思,作出各种相应的 改变和变形,而所有的运些改变和变形都应该包括在本发明权利要求的保护范围之内。
【主权项】
1. 一种高效FPGA技术映射算法,其特征在于,包括如下步骤: Sl逻辑优化: 1.1) 初始化:为电路建立AIG图; 1.2) 对步骤1.1)中得到的AIG图进行分解优化,得到二输入电路; S2结构优化: 2.1) 为步骤Sl逻辑优化后得到的电路建立DAG图G,并设置最大迭代次数頂AX和执行结 果连续不变的最大次数M; 2.2) 为图G中每一个节点产生所有的k-可行划分,作为划分选择的集合; 2.3) 判断是否已经达到迭代次数MAX,如果是,则转至执行步骤2.8),否则执行步骤 2.4) ; 2.4) 判断执行结果是否连续M次不变,如果是,则转至执行步骤2.8),否则执行步骤 2.5) ; 2.5) 按照PI-PO的拓扑顺序向前遍历,为每一个节点选择最优划分; 2.6) 按照PO-PI的逆拓扑顺序向后遍历,选择可以作为LUT root的节点; 2.7) 返回执行步骤2.3); 2.8) 利用划分选择的结果进行LUT映射。2. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,步骤1.2)的具体方法如 下: 1.2.1) 采用平衡(balance)技术,在保证面积不变的情况下优化电路时延; 1.2.2) 在步骤1.2.1)的基础上,采用重写(rewrite)技术,优化电路面积; 1.2.3) 在步骤1.2.2)的基础上,采用重分解(refactor)技术,在保证时延不变的情况 下进一步优化电路的面积。3. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,步骤2.1)中所建立的 DAG图G中,每个节点为一个门电路、PI节点或PO节点。4. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,步骤2.2)的具体方法如 下: 从PI节点开始,按照PI-PO的拓扑顺序为每一个节点产生所有k-可行划分,每个节点产 生k-可行划分具体按照下式进行:其中,€>代表与,+代表或,k为LUT的输入限制,input(V)表示节点V的输入集,u为节点V 输入集中的一个节点,f (k,V)表示节点V的所有k-可行划分,f (k,u)表示节点u的所有k-可 行划分。5. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,步骤2.5)的具体方法如 下: 2.5.1) 向前遍历初始化:将所有PI节点的深度初始化为0,对应的面积流初始化为0; PI 节点输出边的深度初始化为1,对应的面积流初始化为〇; 2.5.2) 判断是否图G中所有的节点均已被访问,如果是,结束步骤2.5 ),转至步骤2.6), 否则继续执行步骤2.5.3); 2.5.3) 按照PI -PO的拓扑顺序向前遍历,在图G中取未被访问的节点v,在节点v所有满 足下式的划分中选择面积流最小的划分Xv作为最优划分: depth(x)< Odepth-height(v); x表示节点v的一个划分,depth(x)表示划分x的深度,Odepth表示最优深度,height (V) 表示节点V的高度; 其中,节点V的划分的面积流计算如下:其中,ξ为任意小的随机数,i edge (V)表示节点V的输入边集合,Av表示节点V本身对面积 的影响; 2.5.4) 更新节点V的深度和面积流分别为depth(Xv)和af (Xv); 2.5.5) 更新节点¥的任意一条输出边6的深度为(16口1:11(乂¥)+(16 137(6),面积流为,其中,delay (e)表示输出边e的相关时延,oedge(v)表示节点V的输出边集合;返 回执行步骤2.5.2)。6. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,所述步骤2.6)的具体方 法如下: 2.6.1) 向后遍历初始化:初始化root集合为所有PO节点,并将所有PO节点的高度初始 化为1; 2.6.2) 判断是否图G中所有节点均已被访问,如果是,则结束步骤2.6),否则继续执行 步骤 2.6.3); 2.6.3) 按照PO-PI的逆拓扑顺序,从图G中取出未被访问的节点V,如果V在集合root内, 计算: h=max{height(e) :eE〇edge(v)}; 其中,height (e)为节点v的输出边集合oedge(V)中的任意边的高度,h则为节点v的输 出边集合中所有边的高度的最大值; 2.6.4) 更新节点V在步骤2.5)中得到的最优划分Xv内的任意节点u的高度为height(u) = max{height(u),h},对于Xv的任意输入边e更新其高度height(e) = max{height(e), delay(e)+h},更新集合root为root U inode(Xv),inode(Xv)表示支撑节点v的最优划分Xv的 输入边的尾节点;然后返回步骤2.6.2)。7. 根据权利要求1所述的高效FPGA技术映射算法,其特征在于,步骤2.8)的具体方法 为:采用最终得到的集合root以及集合内每个节点的最优划分,对DAG图G进行LUT映射,形 成最终的LUT网络。
【专利摘要】本发明公开了一种高效FPGA技术映射算法,将技术映射划分为逻辑优化与结构优化,逻辑优化部分采用AIG模型以及balance、rewrite以及refactor等技术对电路进行优化;结构优化部分采用DAG模型,分为划分产生、划分选择以及LUT映射三步,划分产生采用了动态规划的思想,快速为每一个节点产生所有k-可行划分;划分选择基于一种迭代次数可以自适应改变的迭代启发式思想,通过多次向前遍历与向后遍历的迭代,最终选择出延时和面积同时被优化的划分集合,与此同时,本发明修正了节点面积流计算公式,提高了划分选择的随机性;LUT映射将划分选择产生的划分结合映射成为LUT网络。
【IPC分类】G06F17/50
【公开号】CN105488285
【申请号】CN201510883669
【发明人】段振华, 杨凯强, 黄伯虎, 田聪, 张南, 王小兵
【申请人】西安电子科技大学
【公开日】2016年4月13日
【申请日】2015年12月4日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1