使用ISE设计工具优化FPGA的功耗
发布时间:2008/5/28 0:00:00 访问次数:632
降低fpga功耗是降低封装和散热成本、提高器件可靠性以及打开移动电子设备等新兴
市场之门的关键。
xilinx在提供低功耗fpga解决方案方面较有经验。本文说明如何应用计算机辅助设计(cad)技术,如xilinx ise(集成软件环境)9.2i版本软件使功能有效降低。
cmos电路中的功耗由静态(漏电)功耗和动态功耗两部分组成。动态功耗是由电路信号
上的瞬变所致,由下式决定:
式中ci表示信号i的电容;fi为"开关率",表示信号i上的瞬变率;v是电源电压。
静态功耗是电路在静止、空闲状态下的功耗。工艺尺寸缩小(如65纳米工艺)意味着更低的电源电压和更小的晶体管尺寸,致使导线长度缩短、电容量减小以及总动态功耗降低。较小的工艺几何尺寸还意味着较短的晶体管沟道和较薄的栅极氧化层,致使静态功耗随着工艺尺寸缩小而增加。
fpga的功耗
对于实现给定的逻辑电路而言,fpga的可编程性和灵活性使其功耗效率比定制asic要低。fpga的配置电路和配置存储器要占用硅片面积,致使导线延长和互连电容增加。在fpga中,预制金属导线段上附加的可编程布线开关产生互连,从而加重了信号产生的电容性负载。
fpga中的动态功耗大部分消耗在可编程布线架构中。同理,静态功耗与晶体管总宽度成正比。fpga的晶体管有相当一部分是互连架构,这是造成漏电流的主要因素。因此,互连架构应该是fpga功耗优化的主要攻关目标。
当然,可以通过工艺技术、硬件架构或电路级修改来解决功耗问题。例如,virtex-5fpga含有"对角线"互连资源,允许用较少的布线导体构成连接,从而减少互连电容。在晶体管级,virex-4和virtex-5两种fpga都是采用三氧化层工艺技术来抑制漏电流。根据其速度、功耗和可靠性要求,可以为每个晶体管使用三种氧化层厚度。与在标准fpga架构中实现同样功能相比,扩大使用dsp和处理器等硬ip模块也可以降低功耗。
不必花费钱去更改硬件,也可以降低功耗。您可以通过新型的功率驱动的cad算法和设计流程(如ise9.2i软件中采纳的算法和设计流程)来解决功耗问题。
布局
xilinx布局器的核心算法采用了解析(数学)技术。这种算法从有重叠的初始设计布局开始,然后使用强化抽象法从高度拥挤区去除逻辑块,最终形成可行的无重叠布局。一旦完成解析布局,便在已布局的设计上运行交换式局部优化,以进一步细化布局。本布局器使用的传统成本函数按下式考虑导线长度和时间:
总成本=a×w+bt
式中w和t分别是导线长度成本和时间成本,a和b是标量加权系数。a和b的值可以根据时间对导线长度的相对优先级设定。布局器的成本核算方案如图1所示。
因为进行布局时还没有实际线路,所以导线长度成本是依据导线长度估算。同理,时间成本是依据用户提供的限制条件和连接延迟的估算值。为了优化功耗,我们用为成本函数增加功耗成分的方法扩展了解析布局和局部优化,如图1右侧所示。修改后的成本函数如下:
总成本=a×w+b×t+c×pdynamic
式中pdynamic是估算的动态功耗,c是标量加权系数。可以从仿真中提取信号开关率数据,然后将其提供给工具。反之,如果不提供任何开关率数据,则工具根据逻辑功能为初始输入,为后续输出假定一个默认的开关率,并且将开关率推广到其余信号。为了获得最佳结果,需要有用户提供的开关率数据。
在布局过程中,信号的电容是未知的,因此必须估算。根据布局过程中已有的信号参数,我们建立一个电容估算经验模型:
式中f是普通数学函数;ci是信号i的电容;fo是信号i的扇出数;xsi和ysi分别是布局中信号i的x跨度和y跨度。这些参数与架构无关,并且在布局过程中已经具备。
为建立此模型,我们提取了从xilinx客户那里收集的一组设计中每个信号的电容、扇出数、x跨度和y跨度。然后,我们用最小平方回归分析法,将电容整理成模型参数的一个二次函数。就各种设计平均而言,该解析公式的误差为30%。
布线
一旦将逻辑块分配到fpga上的物理位置,我们就必须为各块之间的连接进行布线。布线器采用一种协商拥挤布线算法,该算法在初始迭代中允许信号间短路。在后续迭代中,对短路的产生逐渐加大处罚,直到仅剩一个信号使用布线导体。对时间关键型连接布线的方式,应尽量缩短其延迟,这涉及密集型的rc延时计算。不过,大多数连接并非时间关键型。 在功耗监控型布线器中,我们选择优化这类非关键型连接的电容。为达到这一目的,我们
降低fpga功耗是降低封装和散热成本、提高器件可靠性以及打开移动电子设备等新兴
市场之门的关键。
xilinx在提供低功耗fpga解决方案方面较有经验。本文说明如何应用计算机辅助设计(cad)技术,如xilinx ise(集成软件环境)9.2i版本软件使功能有效降低。
cmos电路中的功耗由静态(漏电)功耗和动态功耗两部分组成。动态功耗是由电路信号
上的瞬变所致,由下式决定:
式中ci表示信号i的电容;fi为"开关率",表示信号i上的瞬变率;v是电源电压。
静态功耗是电路在静止、空闲状态下的功耗。工艺尺寸缩小(如65纳米工艺)意味着更低的电源电压和更小的晶体管尺寸,致使导线长度缩短、电容量减小以及总动态功耗降低。较小的工艺几何尺寸还意味着较短的晶体管沟道和较薄的栅极氧化层,致使静态功耗随着工艺尺寸缩小而增加。
fpga的功耗
对于实现给定的逻辑电路而言,fpga的可编程性和灵活性使其功耗效率比定制asic要低。fpga的配置电路和配置存储器要占用硅片面积,致使导线延长和互连电容增加。在fpga中,预制金属导线段上附加的可编程布线开关产生互连,从而加重了信号产生的电容性负载。
fpga中的动态功耗大部分消耗在可编程布线架构中。同理,静态功耗与晶体管总宽度成正比。fpga的晶体管有相当一部分是互连架构,这是造成漏电流的主要因素。因此,互连架构应该是fpga功耗优化的主要攻关目标。
当然,可以通过工艺技术、硬件架构或电路级修改来解决功耗问题。例如,virtex-5fpga含有"对角线"互连资源,允许用较少的布线导体构成连接,从而减少互连电容。在晶体管级,virex-4和virtex-5两种fpga都是采用三氧化层工艺技术来抑制漏电流。根据其速度、功耗和可靠性要求,可以为每个晶体管使用三种氧化层厚度。与在标准fpga架构中实现同样功能相比,扩大使用dsp和处理器等硬ip模块也可以降低功耗。
不必花费钱去更改硬件,也可以降低功耗。您可以通过新型的功率驱动的cad算法和设计流程(如ise9.2i软件中采纳的算法和设计流程)来解决功耗问题。
布局
xilinx布局器的核心算法采用了解析(数学)技术。这种算法从有重叠的初始设计布局开始,然后使用强化抽象法从高度拥挤区去除逻辑块,最终形成可行的无重叠布局。一旦完成解析布局,便在已布局的设计上运行交换式局部优化,以进一步细化布局。本布局器使用的传统成本函数按下式考虑导线长度和时间:
总成本=a×w+bt
式中w和t分别是导线长度成本和时间成本,a和b是标量加权系数。a和b的值可以根据时间对导线长度的相对优先级设定。布局器的成本核算方案如图1所示。
因为进行布局时还没有实际线路,所以导线长度成本是依据导线长度估算。同理,时间成本是依据用户提供的限制条件和连接延迟的估算值。为了优化功耗,我们用为成本函数增加功耗成分的方法扩展了解析布局和局部优化,如图1右侧所示。修改后的成本函数如下:
总成本=a×w+b×t+c×pdynamic
式中pdynamic是估算的动态功耗,c是标量加权系数。可以从仿真中提取信号开关率数据,然后将其提供给工具。反之,如果不提供任何开关率数据,则工具根据逻辑功能为初始输入,为后续输出假定一个默认的开关率,并且将开关率推广到其余信号。为了获得最佳结果,需要有用户提供的开关率数据。
在布局过程中,信号的电容是未知的,因此必须估算。根据布局过程中已有的信号参数,我们建立一个电容估算经验模型:
式中f是普通数学函数;ci是信号i的电容;fo是信号i的扇出数;xsi和ysi分别是布局中信号i的x跨度和y跨度。这些参数与架构无关,并且在布局过程中已经具备。
为建立此模型,我们提取了从xilinx客户那里收集的一组设计中每个信号的电容、扇出数、x跨度和y跨度。然后,我们用最小平方回归分析法,将电容整理成模型参数的一个二次函数。就各种设计平均而言,该解析公式的误差为30%。
布线
一旦将逻辑块分配到fpga上的物理位置,我们就必须为各块之间的连接进行布线。布线器采用一种协商拥挤布线算法,该算法在初始迭代中允许信号间短路。在后续迭代中,对短路的产生逐渐加大处罚,直到仅剩一个信号使用布线导体。对时间关键型连接布线的方式,应尽量缩短其延迟,这涉及密集型的rc延时计算。不过,大多数连接并非时间关键型。 在功耗监控型布线器中,我们选择优化这类非关键型连接的电容。为达到这一目的,我们