使用ISE设计工具优化FPGA的功耗

技术分类: EDA工具与服务  可编程器件  | 2008-04-07
来源:Xilinx公司Subodh Gupta博士 Jason Anderson博士

  因为进行布局时还没有实际线路,所以导线长度成本是依据导线长度估算。同理,时间成本是依据用户提供的限制条件和连接延迟的估算值。为了优化功耗,我们用为成本函数增加功耗成分的方法扩展了解析布局和局部优化,如图 1 右侧所示。修改后的成本函数如下:

公式

  其中,Pdynamic 是估算的动态功耗(如前述定义),c 是标量加权系数。可以从仿真中提取信号开关活动率数据,然后将其提供给工具。反之,如果不提供任何开关活动率数据,则工具根据逻辑功能为初始输入和后续输出假定一个默认的开关活动率,并且将活动率推广到其余信号。要获得最佳结果,需要有用户提供的开关活动率数据。

  本文讨论的布局和布线优化旨在降低互连架构中的功耗。

  在布局过程中,信号的电容是未知的,因此必须估算。根据布局过程中已有的信号参数,我们建立了一个电容估算经验模型:

公式

  其中,f 表示普通数学函数;Ci 是信号 i 的电容;FOi 是信号 i 的扇出数;XSi 和 YSi 分别是布局中信号 i 的 X 跨度和 Y 跨度。这些参数独立于架构,并且在布局过程中已经具备。

  为建立此模型,我们提取了从 Xilinx 的客户那里收集的一组设计中每个信号的电容、扇出数、X 跨度和 Y 跨度。

  然后,我们用最小平方回归分析法将电容整理成模型参数的一个二次函数。就各种设计平均而言,该解析公式的误差为 30%。

  布线

  一旦将逻辑块分配到 FPGA 上的物理位置,我们就必须为各块之间的连接进行布线。布线器采用一种协商拥塞布线算法,该算法在初始迭代中允许信号间短路。在后续迭代中,对短路的产生逐渐加大处罚,直到仅剩一个信号使用布线导体。对时间关键型连接布线的方式,应尽量缩短其延迟,这涉及到计算密集型 RC 延时计算。不过,大多数连接并非时间关键型。

  在功耗监控型布线器中,我们选择优化这类非关键型连接的电容。为达到这一目的,我们针对非时间关键型连接修改了布线器的成本函数,以便考虑电容,这与上述根据其他因素(如估算的延迟或不足)的方法截然相反。为了解这种算法,请看图 2 中的布线图。

带节点电容成本的布线图

  该布线图中的每个节点表示一个布线导体或逻辑块引脚,每条边线表示一个可编程布线开关。布线器必须在源引脚和目标引脚之间选择一条路径。图中各节点内部所示为该节点的原始成本和电容成本。若要尽量降低原始成本,源引脚和目标引脚之间的布线就应采纳蓝色路径。然而,在功耗监控型流程中,布线器会使用绿色路径,因为这条路径的总体电容较低。

  功耗监控型布局与布线的结果

  我们使用传统布局布线流程和上述功耗型流程两种方法对一组工业设计进行了布局布线。这些设计的初始输入附加一个基于线性反馈移位寄存器 (LFSR-based) 的伪随机矢量生成器,从而增加了内置的自动输入矢量生成功能。这样,我们无需大量使用外部波形就能完成动态功耗的板级测量。

  我们把这些工业设计映射到了 Spartan-3、Virtex-4 和 Virtex-5 器件中。结果显示,动态功耗降低率对于 Spartan-3 FPGA 达 14%,对于 Virtex-4 FPGA 达 11%,对于 Virtex-5 FPGA 达 12%。就所有设计平均而言,动态功耗降低率对于 Spartan-3 FPGA 为 12%,对于 Virtex-4 FPGA 为 5%,对于 Virtex-5 FPGA 为 7%。就所有系列平均而言,速度性能下降在 3% 和 4% 之间,我们认为这样小的性能损失在注重功耗的设计中是可以接受的。考虑到这些仅仅是软件修改的初始结果,我们认为所取得的功耗效益是令人振奋的。

  降低逻辑块内部功耗

  本文讨论的布局和布线优化旨在降低互连架构中的功耗。我们还设计了一种降低逻辑块内部功耗的方法,尤其是在未使用全部查找表 (LUT) 时,降低 LUT 中的功耗(图 3)。K 输入 LUT 是一种小存储器,用区区几 K 输入即可实现任意逻辑功能。图 3 所示为用一个假设的三输入 LUT(具有输入 A1、A2 和 A3)实现二输入逻辑“与”功能的过程。多路复用器树左侧的 LUT SRAM 所示内容为逻辑“与”的真值表。

优化 LUT 内部功耗

  请注意,图 3 中的输入 A3 未使用。通常,未使用的输入作为“无关项”处理,假设为 0 或 1。所以,为了在图 3 所示的情况下说明这一点,Xilinx 软件在 LUT SRAM 存储器内容的上下两半部分中“重复”了该逻辑功能。客户设计中经常出现未使用的 LUT 输入,特别是 Virtex-5 设计,其中的 LUT 有六个输入。

  在 Virtex-5 硬件中,把未使用的 LUT 提升为逻辑 1;这一特性是我们优化的根本。如果把 A3 提升为逻辑 1,那么对树中最深层二输入多路复用器的下半部输入就永远不会被选中。不过,因为逻辑功能在 LUT 存储器内容的上下两半部分重复,所以内部多路复用器节点 n1 和 n2 会根据信号输入 A1 和 A2 的变化发生翻转。这种翻转白白耗费动态功率,因为 n1 和 n2 上的跃迁永远不会传输到 LUT 的输出端。

  这种优化需要在后期布线阶段检测未使用的 LUT 输入,并且将 LUT 存储器内容设置为逻辑 0,从而在不破坏逻辑功能的情况下排除不必要的内部翻转。回到图 3 的例子,LUT 存储器内容的下半部分将设置为逻辑 0。内部节点 n1 和 n2 上不会发生翻转,因此不会由于对 n1 和 n2 充放电而消耗动态功耗。

  为了评价在工业设计上进行的这一优化,我们进行了板级功耗测量,发现动态功耗节省了若干个百分点。这些结果说明大有前途,因为可以在布线后进行优化,不会造成面积或性能损失,从这种意义上讲,这种优化是“免费”的。

1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销