Xilinx(赛灵思)是全球领先的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。客户使用Xilinx及其合作伙伴的自动化软件工具和IP核对器件进行编程,从而完成特定的逻辑操作。Xilinx公司成立于 1984年,Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。目前Xilinx满足了全世界对FPGA产品一半以上的需求。
自从Xilinx推出FPGA二十多年来,研发工作大大提高了FPGA的速度和面积效率,缩小了FPGA与ASIC(Application Specific Integrated Circuit的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路)之间的差距,使FPGA成为实现数字电路的优选平台。现如今FPGA在各种电路设计中广泛应用,如何对FPGA系统进行低功耗优化成为一个重要的现实问题。从最早的FPGA功耗模型的建,到较完善的FPGA功耗估算模型,再到现在功耗估算工具的出现,FPGA设计时对功耗的预估已经越来越准确,节约功耗的方法也越来越多样降低 FPGA 功耗是缩减封装和散热成本、提高器件可靠性以及打开移动电子设备等新兴市场之门的关键。Xilinx在提供低功耗 FPGA 解决方案方面一马当先。本文说明如何应用计算机辅助设计(CAD,CAD-Computer Aided Design)利用计算机及其图形设备帮助设计人员进行设计工作) 技术,如 Xilinx? ISE? 9.2i 软件中采纳的技术,来有效降低功耗。
ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。ISE除了我们功能完整,使用方便外,它的设计性能也非常好,拿ISE 9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。先进的综合和实现算法将动态功耗降低了10%。
CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体,电压控制的一种放大器件。是组成CMOS数字集成电路的基本单元) 电路中的功耗由静态(漏电)功耗和动态功耗两部分组成。静态功耗主要由晶体管的泄漏电流和FPGA偏置电流引起,它与工艺技术、晶体管特性、晶体管个数、采用的绝缘介质等因素有关,这些是由FPGA本身决定的,与电路活动无关。晶体管的泄漏电流主要由三部分组成:亚阈值漏电流、栅极漏电流和源漏极反偏漏电流动态功耗是指电容充放电功耗和短路功耗,是由电路的翻转造成的,符合以下公式:
其中,Ci 表示信号 i 的电容;fi 称为“开关活动率”,表示信号 i 上的跃迁速率;V 是电源电压。
静态功耗是指漏电流功耗,是电路状态稳定时的功耗,其数量级很小,主要是亚阈值漏电流和栅极氧化层漏电流。截止 MOS 晶体管属不完全绝缘体,允许其漏极与源极之间有亚阀值漏电流。栅极氧化层漏电流是由通过晶体管栅极流向其管体、漏极和源极的隧道电流所致。
工艺尺寸缩小(如近期采纳 65 纳米工艺的趋势)意味着更低的电源电压和更小的晶体管尺寸,致使导线长度缩短、电容量减小以及总体动态功耗降低。较小的工艺几何尺寸还意味着较短的晶体管沟道和较薄的栅极氧化层,致使静态功耗随着工艺尺寸缩小而增加。
FPGA工作原理
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及个模块之间或模块与I/O间的连接方式,并最终决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA中的功耗
对于实现给定的逻辑电路而言,FPGA的可编程性和灵活性使其功耗效率比定制ASIC要低。目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。FPGA的配置电路和配置存储器占用硅片面积,致使导线延长和互连电容增加。在FPGA中,预制金属导线段上附加的可编程布线开关产生互连,从而加重了信号产生的电容性负载。
虽然静态电流与动态电流相比可以忽略不计,然而对电池供电的手持设备就显得十分重要,在设备通电而不工作时更是如此。静态电流的因素众多,包括处于没有完全关断或接通的状态下的I/O以及内部晶体管的工作电流、内部连线的电阻、输入与三态电驱动器的上拉或下拉电阻。在易失性技术中,保持编程信息也需一定的静态功率。抗熔断是一种非易失性技术,因此信息存储不消耗静态电流。动态功耗是在时钟工作且输入正在开关时的功耗。对CMOS电路,动态功耗基本上确定了总功耗。动态功耗包括几个成分,主要是电容负载充电与放电(内部与I/O)以及短路电流。如果器件驱动多个I/O负载,大量的动态电流构成总功耗的主要部分。
FPGA中的动态功耗大部分消耗在可编程布线架构中。同理,静态功耗与晶体管总宽度成正比。FPGA的晶体管有相当一部分是互连架构,这是造成漏电流的主要因素。因此,互连架构应该是FPGA功耗优化的主要攻关目标。
当然,可以通过工艺技术、硬件架构或电路级修改来解决功耗问题。例如,Virtex?-5 FPGA 含有“对角线”互连资源,允许用较少的布线导体构成连接,从而减少互连电容。在晶体管级,Virtex-4 和 Virtex-5 两种 FPGA 都是采用三栅极氧化层工艺技术来抑制漏电流。根据其速度、功耗和可靠性要求,可以为每个晶体管使用三倍氧化层厚度。与在标准 FPGA 架构中实现同样功能相比,DSP 和处理器等硬 IP 模块的数量激增和推广使用也可以降低功耗。
也有可能,不必耗费巨资更改硬件,就可以降低功耗。可以通过功耗驱动的新型CAD算法和设计流程(如 ISE 9.2i 软件中采纳的算法和设计流程)来解决功耗问题。
ISE 9.2i 设计工具中的功耗优化
ISE 9.2i 软件在布局布线中体现了功耗优化,并且通过一种后期布线技术来降低逻辑块的内部功耗。
布局
Xilinx布局器中的核心算法采用了解析(数学)技术。这种算法以有重叠的初始设计布局开始,然后使用强行抽象法从高度拥挤区去除逻辑块,最终形成可行的无重叠布局。一旦完成解析布局,便在已布局的设计上运行交换式局部优化,以进一步细化布局。本布局器中使用的传统成本函数按以下公式考虑导线长度和时间:
其中,W 和 T 分别是导线长度成本和时间成本,a和b是标量加权系数。a和b的值可以根据时间对导线长度的相对优先级设定。布局器的成本核算方案如图1所示。
因为进行布局时还没有实际线路,所以导线长度成本是依据导线长度估算。同理,时间成本是依据用户提供的限制条件和连接延迟的估算值。为了优化功耗,我们用为成本函数增加功耗成分的方法扩展了解析布局和局部优化,如图 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所示内容为逻辑“与”的真值表。
请注意,图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充放电而消耗动态功耗。
为了评价在工业设计上进行的这一优化,我们进行了板级功耗测量,发现动态功耗节省了若干个百分点。这些结果说明大有前途,因为可以在布线后进行优化,不会造成面积或性能损失,从这种意义上讲,这种优化是“免费”的。
结论
在用设计工具进一步降低功耗方面,存在着多种发展趋势。在前端HDL(Hardware Description Language,是硬件描述语言。顾名思义,硬件描述语言就是指对硬件电路进行行为描述、寄存器传输描述或者结构化描述的一种新兴语言)综合中,FPGA可以借鉴ASIC领域中成熟的优化方法,如时钟门控法和运算元隔离法。也可以使用针对FPGA的功耗优化方法,例如,将逻辑映射到可用的Block RAM(可以用作大型ROM)中,以此取代使用 LUT(显示查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。它把数据事先写入RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出) 和普通架构的方法。
将功耗监控型逻辑综合和活动率驱动的工艺映射到 LUT 的方法在文献中已有充分报道,这些方法将使Xilinx FPGA 大大降低功耗。在布局方面,电容估算精度的提高会更大幅度地降低功耗。
我们感觉特别有潜力的两个方面是伪信号优化和漏电流优化。伪信号是由电路中路径延迟不均衡所致在信号上发生的伪跃迁。这种跃迁是不必要的,但在动态功耗中却占据着重要位置。抑制伪信号的CAD技术包括均衡路径延迟或者沿伪信号最多的路径插入寄存器。数字CMOS电路中的漏电路在很大程度上取决于电路使用的输入状态。因此,在CAD中减少漏电流的一种方法是自动修改电路,使其信号值在漏电流状态下保持较长时间。
结果显示,在通过ISE设计工具降低功耗方面已经取得长足的进步。对电子系统来说,减少功耗可以带来很多好处,除了简化系统的散热处理及系统集成方面的工序、节约成本外,还能提高系统可靠性、降低热噪声干扰等。对便携式仪器、野外工作仪器等电池供电的系统来说,还能延长电池寿命,减少更换电池的麻烦。在用软件进一步降低功耗方面,我们认为前景一片光明。注重功耗的解决方案由功耗监控型CAD算法和功耗优化器件(如 Virtex-5 FPGA)组成,这一成功故事本身就颇为耐人寻味。低功耗软硬件的不断进步将为Xilinx FPGA打开进入新兴功耗敏感型市场的大门。
全部0条评论
快来发表一下你的评论吧 !