Fpga中进行电子设计自动化的逻辑单元装箱方法

文档序号:6535264阅读:208来源:国知局
Fpga中进行电子设计自动化的逻辑单元装箱方法
【专利摘要】本发明公开了一种FPGA中进行电子设计自动化的逻辑单元装箱方法,主要解决现有技术装箱后电路时延过大,可配置逻辑单元CLB消耗过多的问题。其装箱过程是:将工艺映射,单元划分处理后的电路用有向无环图表示;通过电路中查询表LUT之间的连接方式对有向无环图中的时延信息进行初始化;通过广度优先遍历法计算每个节点的松散度,并结合每个节点对电路关键路径的影响计算出它的关键度;根据每个节点的关键度并结合查询表LUT的线网个数和可配置逻辑单元CLB中已使用的线网个数,计算每个查询表LUT的线网增益值,根据线网增益值对查询表LUT进行选择填装。本发明极大地降低了最终电路的时延,同时极大地减少了最终电路消耗的可配置逻辑单元CLB的数量。
【专利说明】FPGA中进行电子设计自动化的逻辑单元装箱方法
【技术领域】
[0001]本发明属于计算机【技术领域】,特别涉及一种电子设计自动化设计装箱打包方法,可用于同构,异构等多种FPGA芯片的应用设计。
【背景技术】
[0002]80年代中期,美国Xilinx公司首先推出了现场可编程门阵列器件FPGA,它是在可编程逻辑阵列PLA和通用阵列逻辑GAL的基础上进一步发展的产物。随着集成电路的深亚微米制造技术和设计技术的迅速发展,集成电路进入了系统级SOC时代。Xilinx公司推出的百万门Virtex系列的FPGA,为解决系统级设计问题提供了新的FPGA平台。目前,国外FPGA的设计技术和加工工艺成熟,产品门类齐全,可以提供上百个系列品种,芯片集成度已达到上百万门,并广泛应用于通信、航天、航空、导航、遥感、遥测等国防领域。美国Xilinx、Altera、Lattice和Actel等公司垄断了全球可编程逻辑器件市场。而国内的芯片发展基本上处于一穷二白的阶段,没有自主产权的核心工艺技术,所以研发我国自主的FPGA芯片已经刻不容缓。
[0003]使用FPGA芯片必须要有支持FPGA开发的电子设计自动化软件,开发基于FPGA的电子设计自动化软件的设计流程包括:逻辑综合,工艺映射,单元划分,逻辑单元装箱,布局,布线,编程下载等步骤,如图1所示。其中:
[0004]网表优化,用于实现消除冗余的逻辑,减少电路实际所需的面积;
[0005]工艺映射,用于将优化后的网表转化为由查询表LUT和时序单元组成的电路,实现在满足输入约束的条件下,将更多的组合逻辑放入到一个查询表LUT,以减少所需FPGA的容量;
[0006]单元划分,用于将规模大小超过FPGA容量的LUT集成单元,划分成几个能分别放进到给定的FPGA中的小的LUT单元组;
[0007]逻辑单元装箱,用于根据划分后的LUT单元组之间的互连时延信息,计算LUT之间的互连延迟并算出每个LUT的权重值,然后按照权重值的大小对LUT进行排序,将一个个LUT单元按照顺序依次装箱到可配置逻辑单元CLB中;
[0008]布局,用于将装箱之后的CLB单元映射到实际FPGA的各个逻辑位置,以达到减少CLB之间连线的交错度,缓解布线模块的压力;
[0009]布线,用于实现将CLB之间的各个连接采用FPGA内部已经存在的连线资源连接起来,使整个电路被完全映射到给定的FPGA芯片上;
[0010]编码下载,根据布线映射好的电路,通过编译生成所要使用的位数据流文件,然后将此数据文件下载到FPGA芯片中。
[0011]所述的逻辑单元装箱,通常依赖于FPGA的结构,目前比较流行的FPGA结构就是在一个可配置逻辑单元CLB内部含多个查询表LUT,这些查询表LUT之间共享输入,同时它们的输出也可以通过互连资源反馈到输入端。现有的逻辑单元装箱方法基本分为以下两种:
[0012]一种是通过牺牲可配置逻辑单元CLB的数量来提高最终电路的时延性能,例如T-vpack逻辑单元装箱方法,该方法就是在计算时延阶段通过反复的回朔计算来提高最终电路的时延,即在对每一个查询表LUT填装完成后,都会去对整个电路的时延信息进行更新,同时计算查询表LUT所对应的时延权值。这种方法虽然能保证电路时延性能的高效,但却没有对最终电路的面积,即消耗的可配置逻辑单元CLB的数量进行很好的优化控制,使得最终加载到FPGA开发板上的电路消耗的可配置逻辑单元CLB过多。
[0013]另一种是通过牺牲电路的时延性能来减小最终电路的可配置逻辑单元CLB消耗,例如R-pack逻辑单元装箱方法,该方法就是将最终电路消耗可配置逻辑单元CLB的个数作为首要的优化目标对查询表LUT进行装箱打包,并为了保证对查询表LUT装箱的连续性,在计算时延阶段对电路的时延信息不进行回朔更新。这种方法虽在保证查询表LUT连续装填的情况下,能充分控制最终电路消耗的可配置逻辑单元CLB的数量,但却忽略了对电路最终延迟性能的保障,使得最终加载到FPGA开发板上的电路运行时间过长。

【发明内容】

[0014]本发明的目的在于针对上述已有技术的不足,提出一种FPGA中进行电子设计自动化的逻辑单元装箱方法,以综合考虑电路的最终的时延性能以及消耗的可配置逻辑单元CLB的数量,使得最终设计出来的电路达到尽可能高的性能。
[0015]实现本发明目的的技术方案,包括如下步骤:
[0016]A.计算电路中每个查询表LUT的关键度B:
[0017](Al)将经过工艺映射,单元划分处理后的电路作为一个有向无环图DAG,该有向无环图中的节点表示具有存储电路逻辑功能的查询表LUT;有向无环图中的边表示查询表LUT之间的线网连线,根据查询表LUT之间的实际连接关系对有向无环图中的每条边赋上相应的时延权重值;
[0018](A2)从电路的源端节点开始,根据有向无环图中边所对应的时延权重值,采用广度优先遍历的方法计算出有向无环图中节点i的最晚到达时间Ta(i),其中i表示有向无环图中的第i个节点的标号,i的取值范围为I?N,N表示电路中节点的总数,节点i的输入节点集合用In⑴表示,集合In⑴中的节点总数用el表示,节点i的输出节点集合用On⑴表示,集合On⑴中的节点总数用e2表示;
[0019](A3)从电路的末端节点开始,结合每条边对应的时延权重值,采用广度优先遍历的方法计算出有向无环图中节点i的最晚需要达到时间Tr(i);
[0020](A4)根据得到的有向无环图中节点i的最晚到达时间Ta(i)和最晚需要达到时间Tr(i),得到第节点i对应的松散度:s(i) =Tr⑴-Ta(i);
[0021](A5)根据松散度计算有向无环图中节点i的时延度:C(i) = l_s(i)/Ms,其中Ms表示有向无环图中所有节点松散度的最大值;
[0022](A6)计算有向无环图中节点i对关键路径的影响权值:
[0023]TA(i) = IA(i)+0A(i),
[0024]其中:IA(i)表示节点i所对应的输入节点在关键路径上的节点总数,OA⑴表示节点i所对应的输出节点在关键路径上的节点总数;
[0025](A7)根据节点i的时延度C(i)和该节点对有向无环图中关键路径的影响权值TA(i),计算节点i的关键度:= W)+ HW(Z)其中λ取0.01;[0026]B.选择查询表LUT装填到新的可配置逻辑单元CLB:
[0027](BI)对于步骤(A7)中所得到的每个节点的关键度进行排序,选出关键度最高的那个节点所对应的查询表LUT,填装到一个新的可配置逻辑单元CLB中去;
[0028](B2)将装填到可配置逻辑单元CLB中的查询表LUT标记为H,计算与H相连接的第j个查询表LUT的线网关联增益I (j),其中j表示与H相连接的第j个查询表LUT,j的取值范围为I?M,M表示与H相连接的查询表LUT的总个数;
[0029](B3)对计算得到的所有查询表LUT的线网关联增益值I (j)进行排序,选择线网关联增益值最大的那个查询表LUT将其填装到上述新的可配置逻辑单元CLB中去;
[0030](B4)重复步骤(B2)和步骤(B3),直到上述新的可配置逻辑单元CLB被填装满为止;
[0031 ] C.更新电路时延信息,继续对查询表LUT进行填装:
[0032](Cl)对于一个已经被填装满的可配置逻辑单元CLB,根据它和电路中其他查询表LUT的连接方式,重新设置电路中边的时延权重值,形成新的有向无环图DAG’ ;
[0033](C2)利用新的有向无环图DAG’,重复步骤(A2)和步骤(B4),直到电路中所有的查询表LUT被装填完成为止。
[0034]本发明与现有技术相比所具有如下优点:
[0035](I)本发明在选择查询表LUT装填到新的可配置逻辑单元CLB时,通过计算线网关联增益的方法对查询表LUT进行选择,使得可配置逻辑单元CLB中的空间可以充分的得到利用,减少了使用可配置逻辑单元CLB的数量;
[0036](2)本发明在装箱过程中对电路的时延信息进行全局的更新,当有一个可配置逻辑单元CLB被填装满后,根据它和电路中其他查询表LUT的连接方式,重新计算电路中边的时延权重值,使得最终电路的延迟达到最优,降低了电路最终的运行时间。
【专利附图】

【附图说明】
[0037]图1是现有在FPGA中进行电子自动化设计的流程图;
[0038]图2是本发明的整个装箱实现总流程图;
[0039]图3是本发明中计算整个电路查询表LUT的关键度子流程图;
[0040]图4是本发明中根据查询表LUT的关键度进行选择填装的子流程图。
【具体实施方式】
[0041]参照图2,本发明的实现步骤如下:
[0042]步骤1,将经过工艺映射,单元划分处理后的电路设置为有向无环图DAG。
[0043]工艺映射是将电路转化为查询表LUT集成单元,如果该集成单元的规模大小超过了 FPGA的容量,则要通过单元划分将查询表LUT集成单元划分成多个能放进到给定FPGA中的查询表LUT单元组。由于该单元组是由多个查询表LUT相互连接组成,因此可以把该电路看成一个有向无环图DAG,即电路中将具有存储电路逻辑功能的查询表LUT看成是有向无环图中的一个节点,将查询表LUT之间的线网连线看成是有向无环图中的边;
[0044]根据查询表LUT之间的连接关系对有向无环图中的每条边赋上相应的时延权重值,本实例将有向无环图中所有边的时延权重值设置为0.1。[0045]步骤2,计算电路中每个查询表LUT的关键度,即有向无环图中每个节点的关键度B:
[0046]参照图3,本步骤的实现如下:
[0047](2a)采用广度优先遍历的方法计算有向无环图中节点i的最晚到达时间Ta⑴和最晚需要达到时间Tr(i),其中i表示有向无环图中的第i个节点的标号,i的取值范围为I~N, N表示电路中节点的总数:
[0048](2al)设节点i的输入节点集合为In(i),集合In⑴中的节点总数用el表示,节点i的输出节点集合为0n(i),集合On (i)中的节点总数用e2表示;
[0049](2a2)从电路的源端节点开始,结合每条边对应的时延权重值计算有向无环图中节点i的最晚到达时间:
[0050]Ta (i) = max {Ta (m) +t (m, i)},
[0051]其中m表示节点i的输入节点集合In (i)中的第m个节点,m的取值范围为:1~el ;t(m, i)表示集合In(i)中的第m个节点与有向无环图中节点i之间的时延权重值;
[0052](2a3)从电路的末端节点开始,结合每条边对应的时延权重值计算有向无环图中节点i的最晚需要达到时间:
[0053]Tr (i) = min {Tr (n) -t (i, η)},
[0054]其中η表示节点i的输出节点集合On⑴中的第η个节点,η的取值范围为:1~e2;t(i,n)表示集合0n(i)中的第η个节点与有向无环图中的节点i之间的时延权重值; [0055](2b)根据得到的有向无环图中节点i的最晚到达时间Ta(i)和最晚需要达到时间Tr(i),得到节点i的松散度:s(i) = Tr⑴-Ta(i);
[0056](2c)根据松散度计算有向无环图中节点i的时延度:
[0057]C (i) = 1-s (i) /Ms,
[0058]其中Ms表示有向无环图中所有节点松散度的最大值;
[0059](2d)计算有向无环图中节点i对关键路径的影响权值:
[0060]TA(i) = IA (i) +OA (i),
[0061]其中:IA(i)表示节点i所对应的输入节点在关键路径上的节点总数,OA⑴表示节点i所对应的输出节点在关键路径上的节点总数;
[0062](2e)根据节点i的时延度C(i)和该节点对有向无环图中关键路径的影响权值TA(i),计算节点i的关键度』= +其中χ取值为0.01。
[0063]步骤3,选择查询表LUT,并将其装填到新的可配置逻辑单元CLB。
[0064]参照图4,本步骤的实现如下:
[0065](3a)对步骤(2e)中所得到的每个节点的关键度进行排序,选出关键度最高的那个节点所对应的查询表LUT,填装到一个新的可配置逻辑单元CLB中去;
[0066](3b)将上述装填的查询表LUT标记为H,继续选择其他的查询表LUT填装到上述的可配置逻辑单元CLB中:
[0067](3bI)计算与H相连接的第j个查询表LUT的线网关联增益I (j):
[0068](3b 11)计算第j个查询表LUT的线网权值:
[0069]w (j) = 2.0/k,
[0070]其中k表示第j个查询 表LUT的线网总数;j表示与H相连接的第j个查询表LUT的标号,j的取值范围为I?M ;M表示与H相连接的查询表LUT的总个数;
[0071 ] (3bl2)根据得到的第j个查询表LUT的线网权值w (j),计算第j个查询表LUT的线网增益:
[0072]I (j) = μ *w (j) * (1+a),
[0073]其中,a表示第j个查询表LUT和H所属的可配置逻辑单元CLB所共用的线网个数,H为装填到可配置逻辑单元CLB中的查询表LUT,μ表示线网增益系数,当第j个查询表LUT的线网全部被包含在H所属的可配置逻辑单元CLB中时,μ的值为10.0,否则μ的值为1.0 ;
[0074](3b2)对得到的所有查询表LUT的线网关联增益值I (j)进行排序,选择线网关联增益值最大的那个查询表LUT,将其填装到上述新的可配置逻辑单元CLB中去;
[0075](3c)重复步骤(3b),直到上述新的可配置逻辑单元CLB被填装满为止;
[0076](3d)更新电路时延信息,继续对查询表LUT进行填装:
[0077](3dl)对于一个已经被填装满的可配置逻辑单元CLB,根据它和电路中其他查询表LUT的连接方式,将该CLB内查询表LUT之间的线网连线的时延权重值重新设置为1.0,形成新的有向无环图DAG’ ;
[0078](3d2)利用新的有向无环图DAG’,重复步骤2和步骤3,直到电路中所有的查询表LUT被装填完成为止,整个装箱过程结束。
[0079]整个装箱过程结束后进入FPGA电子设计自动化设计布局阶段,即将形成的可配置逻辑单元CLB单元映射到FPGA的各个逻辑位置,以减少可配置逻辑单元CLB之间连线的交错度,充分合理的利用FPGA开发板上现有的资源。
[0080]本发明的效果可以通过以下的仿真实验进一步的说明
[0081]1.仿真条件
[0082]选用国际标准电路中经过工艺映射和单元划分工具ABC处理后的大规模电路
[0083]2.仿真内容
[0084]将上述经过工艺映射和单元划分处理后的大模规电路,分别采用本发明的装箱方法和国际上常用的T-vpack装箱方法进行仿真实验,对装箱后的电路分别统计它们的时延和面积结果。其中时延表示最终电路关键路径上的长度,它决定了这个电路最终的运行时间;面积表示最终电路所要用到的可配置逻辑单元CLB的个数。
[0085]每次仿真重复20次,对仿真实验结果求平均值,得到两种方法仿真对比,如表I所示:
[0086]表I本发明的装箱方法与现有T-vpack装箱方法的结果对比
[0087]
【权利要求】
1.一种FPGA中进行电子设计自动化的逻辑单元装箱方法,包括如下步骤: A.计算电路中每个查询表LUT的关键度B: (Al)将经过工艺映射,单元划分处理后的电路作为一个有向无环图DAG,该有向无环图中的节点表示具有存储电路逻辑功能的查询表LUT ;有向无环图中的边表示查询表LUT之间的线网连线,根据查询表LUT之间的实际连接关系对有向无环图中的每条边赋上相应的时延权重值; (A2)从电路的源端节点开始,根据有向无环图中边所对应的时延权重值,采用广度优先遍历的方法计算出有向无环图中节点i的最晚到达时间Ta(i),其中i表示有向无环图中的第i个节点的标号,i的取值范围为I~N,N表示电路中节点的总数,节点i的输入节点集合用In⑴表示,集合In⑴中的节点总数用el表示,节点i的输出节点集合用On⑴表示,集合0n(i)中的节点总数用e2表示; (A3)从电路的末端节点开始,结合每条边对应的时延权重值,采用广度优先遍历的方法计算出有向无环图中节点i的最晚需要达到时间Tr(i); (A4)根据得到的有向无环图中节点i的最晚到达时间Ta(i)和最晚需要达到时间Tr (i),得到第节点i对应的松散度:s(i) = Tr⑴-Ta (i); (A5)根据松散度计算有向无环图中节点i的时延度:C(i) = 1-s (i)/Ms,其中Ms表示有向无环图中所有节点松散度的最大值; (A6)计算有向无环图中节 点i对关键路径的影响权值: TA(i) = IA ⑴+OA ⑴, 其中:IA(i)表示节点i所对应的输入节点在关键路径上的节点总数,0A(i)表示节点i所对应的输出节点在关键路径上的节点总数; (A7)根据节点i的时延度C(i)和该节点对有向无环图中关键路径的影响权值TA(i),计算节点i的关键度:B{i) = C{i) + X-TA{i)其中久取0.01; B.选择查询表LUT装填到新的可配置逻辑单元CLB: (BI)对于步骤(A7)中所得到的每个节点的关键度进行排序,选出关键度最高的那个节点所对应的查询表LUT,填装到一个新的可配置逻辑单元CLB中去; (B2)将装填到可配置逻辑单元CLB中的查询表LUT标记为H,计算与H相连接的第j个查询表LUT的线网关联增益I (j),其中j表示与H相连接的第j个查询表LUT,j的取值范围为I~M,M表示与H相连接的查询表LUT的总个数; (B3)对计算得到的所有查询表LUT的线网关联增益值I (j)进行排序,选择线网关联增益值最大的那个查询表LUT将其填装到上述新的可配置逻辑单元CLB中去; (B4)重复步骤(B2)和步骤(B3),直到上述新的可配置逻辑单元CLB被填装满为止; C.更新电路时延信息,继续对查询表LUT进行填装: (Cl)对于一个已经被填装满的可配置逻辑单元CLB,根据它和电路中其他查询表LUT的连接方式,重新设置电路中边的时延权重值,形成新的有向无环图DAG’ ; (C2 )利用新的有向无环图DAG’,重复步骤(A2 )和步骤(B4 ),直到电路中所有的查询表LUT被装填完成为止。
2.根据权利要求1所述的装箱方法,其中所述(A2)中采用广度优先遍历的方法计算电路中节点i的最晚到达时间Ta(i),通过如下公式计算:
Ta (i) = max {Ta (m) +t (m, i)}, 其中m表示节点i的输入节点集合In(i)中的第m个节点,m的取值范围为:1~el ;t(m, i)表示集合In⑴中的第m个节点与有向无环图中节点i之间的时延权重值。
3.根据权利要求1所述的装箱方法,其中所述(A3)中采用广度优先遍历的方法计算出有向无环图中的节点i的最晚需要达到时间Tr (i),通过如下公式计算:
Tr (i) = min {Tr (n) -t (i, η)}, 其中η表示节点i的输出节点集合中On (i)中的第η个节点,η的取值范围为:1~e2 ;t(i, η)表示集合0n(i)中的第η个节点与有向无环图中节点i之间的时延权重值。
4.根据权利要求1所述的装箱方法,其中所述(B2)中计算与查询表LUTH相连接的第j个查询表LUT的线网关联增益I (j),按如下步骤进行: (B21)计算第j个查询表LUT的线网权值:
w(j) = 2.0/k, 其中k表示第j个查询表LUT的线网总数; (B22)根据得到的第j个查询表LUT的线网权值,计算第j个查询表LUT的线网增益:
I (j) = μ *w(j)*(l+a), 其中,a表示第j个查询表LUT和H所属的可配置逻辑单元CLB所共用的线网个数,H为装填到可配置逻辑单元CLB中的查询表LUT,u表示线网增益系数,当第j个查询表LUT的线网全部被包含在H所属的可配置逻辑单元CLB中时,u的值为10.0,否则u的值为1.0。
5.根据权利要求1所述的装箱方法,其中所述(Cl)中重新设置电路中边的时延权重值:对于一个已经被填装满的可配置逻辑单元CLB,根据它和电路中其他查询表LUT的连接方式,将该CLB内查询表LUT之间的线网连线的时延权重值重新设置为1.0,形成新的有向无环图DAG’。
【文档编号】G06F17/50GK103745057SQ201410008483
【公开日】2014年4月23日 申请日期:2014年1月8日 优先权日:2014年1月8日
【发明者】段振华, 李虎, 黄伯虎 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1