FPGA与众多其它类型组件的不同之处在于,其核心电压、辅助电压和I/O电压电源需求取决于设计实现。因此,确定应用中FPGA的功耗比数据手册描述的情况更复杂一点,要实现正确的电源架构因此也具有一定的挑战性。这不仅要考虑到所需的静态电流、斜坡率和上电顺排序,还需要能为终端应用适当供电,同时保持器件结温在可接受的范围内。
XPE和XPA是什么?这是赛灵思推出的两款设计工具,能帮助您准确地进行FPGA设计的功耗分析。您可在设计早期阶段使用基于电子数据表的赛灵思功耗估计器(XPE),在完成实现后再使用赛灵思功耗分析器(XPA)。XPA能帮助您对设计的功耗要求做进一步的分析,并根据需要协助功耗优化。
初始步骤
首先启动开发项目时,很难有整个FPGA设计都到位的情况(如果幸运的话,或许能重复利用一些代码,这能为功耗预测提供更多准确信息)。因此,进行估算功耗首先可以从XPE电子数据表入手(参见: ucts/design_tools/logic_design/xpe.htm )。您可以根据工程团队对设计所需时钟、逻辑和其它资源量的初步考虑来进行最初功耗估算。
XPE的使用非常直观,更好的是,该工具能帮助您进行大量“假设”实现,从而明确不同设计方案选择对功耗估算的影响。如果您的解决方案耗电高,那么这种功能对帮助您找到最佳实现方案发挥着重要作用。
XPE能根据散热、气流和印制电路板层数预测器件结温,这一功能在设计早期阶段非常有用。它能告诉我们设计能否达到预期实现方案的额定结温。
在XPE中,您的第一步工作就是尽可能准确地完成设置。除了选择器件之外,还要特别注意封装、速度等级和温度等级都要正确设置,同样如果适用的话还要准确设置步进、工艺和功耗模式。所有这些参数,对所需的整体功耗有很大影响,尤其是工艺的设置,其设置分为“最大值”和“典型值”。典型值设置为您提供统计上应用所需的功耗,而最大值设置则能满足最差情况下的需求。要确保您的解决方案能应对最高用电需求情况,但这也有一定困难,因为较大型器件也有着更高的电流需求。
我们也可在此定义工作环境,包括环境温度、散热和气流等。在此定义最大环境温度能提高估算准确度,因为所需的功耗会随着器件结温的提升而升高。包括散热、气流或者这两者等,就能改进功耗估算。
在此阶段也不要忽略赛灵思ISE®优化设置。这种设置对功耗估算也有影响,因为不同的优化方案(比方说时序性能与面积最小化方案)都会带来不同的实现方案,每种实现方案都有自己的资源使用和扇出模式,也会影响功耗估算。
估算工作的下一阶段就是仔细检查XPE电子数据表底部的标签,尽可能准确地填写所建议的解决方案的细节。为了确保早期获得最准确的估算,至少应定义资源使用、时钟频率、触发率和启用率,这非常重要。同时也应做好一定应急准备,应对始终存在的要求变化问题。
这一进程完成后,XPE能在总结标签中提供整体功耗和结温估算,如图1所示。
估算完成后,您可根据需要,在总结页面上选择“导出文件”选项,将设置从XPE导出,以随后用于赛灵思功耗分析器(XPA)中。这能确保XPA的设置与您最初用于估算的相匹配。
随着开发工作向RTL制造、跟踪综合和布局布线推进,我们根据提供的更准确的信息,随时更新估算结果。要记住,硬件团队,尤其是负责电源设计的团队,应了解估算的任何变动。电源工程师应提供电源轨最糟糕情况下的最大电压,这能进一步提高估算精度。最差情况下最大电源电压升高,也会让功耗估算变大。
XPE非常智能,能在最差情况下最大电源电压超出器件可接受容限时将电子数据表上的电压单元标为橙色并发出警告,如图2所示。
进入XPA
设计实现后,我们能用赛灵思功耗分析器从功耗图片上获得精确得多的功耗估算。结果到底有多精确,这取决于您对工具的输入。您可点击ISE设计套件进程窗口中布局布线项下的Analyze Power Distribution打开XPA(见图3)。
一旦XPA打开,您又会看到类似于XPE的总结屏幕(图4)。您在此可定义环境并创建更多设置,也可从您的XPE分析中导入设置。
要包括.xpa文件或打开新项目,您应采用以下流程,其中包括:
• 本地电路设计(NCD)文件:定义物理FPGA实现方案。
• 设置文件: 定义从XPE导入的设置。
• 物理约束文件(PCF) : 包含时钟信息和映射以及UCF限制。
• 数值变更转储(VCD)或开关行为互换文件(SAIF)仿真文件,可用仿真工具生成,使得XPA能获得设计开关信息 。
自然,您直接包含的信息越多,功耗估算就越准确。XPA能提供估算可信度,这很有帮助,可信度分为低中高三级,并分为设计实现状态、时钟节点活动、I/O节点活动、内部节点活动和器件模型五大类。
这些不同的可信度可得出估算的整体可信度。XPA还能就如何提高各个不同类别的可信度提出建议,这也相当有用,从而有助于提升整体可信度(图5)。
为了获得功耗估算最高的可信度,您应该从门级仿真获得VCD或SAIF文件。这样,XPA就能了解内部节点的行为,从而提供更精确的估算。
从仿真获得VCD非常直观,不过根据您使用的工具(Mentor Graphics的ModelSim、赛灵思的ISim等)不同,所需的命令格式可能略有不同。如果您正在使用ModelSim工具,那么您就可用以下语法创建简单的VCD文件:
vcd file myvcd.vcd
—define the file name and location if desired
vcd add /memory_if_tb/ uut_apply/*
—the region of the design that is to be recorded
退出仿真时,结果将会保存在VCD文件中,您可在XPA中使用这个文件。如果您使用的是ISim工具,那么格式会略有不同:
vcd dumpfile myvcd.vcd —define the file name and location if desired
vcd dumpvars -m /memory_if_tb/uut_apply
—the region of the design that is to be recorded
Run Simulation
vcd dumpflush
—save results to the vcd file created
仿真工具中还有许多更高级的命令,您可用来生成VCD。在工具文档中有详细介绍。
由于包括了VCD文件,您的功耗估算可信度会有所提高。如果您不能提供仿真结果(有的运行需要很长时间),那么XPA会用其内置的分析引擎运行。在此情况下要做到准确,就应再次指定翻转率和启用率。
与XPE中一样,XPA中也应包括最差情况下的最大电源电压,这非常重要。我们也可将XPA设计导回XPE,让设计团队尝试进行更多试验性修改,从而明确这些改动对功耗和结温估算所产生的影响。
可信度还不够高该怎么办?
假设包括了仿真并提供有其它信息,那么您应该就能实现较高可信度的功耗估算和结温预测。在理想情况下,应用应该可以接受这种可信度。不过,如果实际情况下您还无法实现这样的可信度,工程师还有什么其他办法确保设计实现功耗预算目标或所需的结温呢?
为了实现所需的结果,我们可对以下设计的三处地方进行修改:源、实现和(就结温而言)物理模块设计。
在设计源中,您可采取以下步骤:
1. 删除任何异步复位。
2. 在较大组合函数之间包括流水线级。
3. 确保通过推理或实例化在器件中采用专用的资源。
综合和布局布线阶段的选项包括:
1. 针对面积最小化或功耗降低设定优化方案。
2. 检查设计约束,确保不过度约束器件。
3. 限制高扇出路径的扇出。
4. 只要有可能,状态机等就应采用RAM。
5. 确保启用重新定时。
希望通过以上步骤,功耗估算和结温预测都能得到改进。不过,如果以上还不行而且确实必要,您也可通过散热或强制气流来降低结温,只是这么做会影响项目的机械设计。
准确的估算
您可用赛灵思功耗估计器和赛灵思功耗分析器获得准确的FPGA设计功耗估算,这两款工具可共享有关信息。功耗估算的准确度取决于仿真和工程设计团队提供数据的质量。
您也应提供足够的应急方案来应对要求的变化,确保解决方案能应对电流功耗和电源电压斜率的要求。
评论
查看更多