这一篇在干嘛?

FPGA 的可编程性是有代价的:同等功能的 ASIC,功耗只有 FPGA 的 1/50 到 1/100。本篇讲功耗的三大来源、估计方法、真实芯片的功耗构成,以及映射/聚类/RTL/行为级各层和架构层面的省电手段,最后看综述作者眼中 FPGA EDA 的未来挑战。

功耗的三张面孔

FPGA 功耗 = 动态功耗 + 静态功耗,其中动态功耗再分两块:

  • 开关功耗(switching):给负载电容充放电。模型是: 白话解释:功耗与频率 、电源电压平方 、每个节点的负载电容 和翻转密度 (单位时间平均翻转次数)成正比。电压平方项说明降压是省动态功耗的第一大杀器;翻转密度则是逻辑优化能动的部分。
  • 短路功耗(short-circuit):信号翻转的瞬间,上拉和下拉晶体管同时导通一小段时间,从 Vdd 到 GND 直通漏电。它取决于输入信号翻转时间和负载电容。在 FPGA 里信号翻转时间偏大,短路功耗可观的某些设计里能占到全局互连动态功耗的 70%。
  • 静态功耗(leakage,漏电):没有翻转也在漏。三种来源——亚阈值漏电(栅压低于阈值时源漏间的弱反导电流,是主导项)、反偏 pn 结漏电、栅氧隧穿漏电。亚阈值漏电与阈值电压、温度呈指数关系: 白话解释:器件越宽(W 大)、栅源电压越接近阈值、温度越高,漏电按指数级暴涨。90nm 以下,静态功耗开始统治总功耗——而FPGA 满地都是的配置 SRAM 和可编程开关恰恰是漏电大户

图6.1 MOS管中的各类漏电流示意:亚阈值、反偏结、栅氧隧穿

功耗估计:算准才能省

互连是主角

亚微米 FPGA 里互连功耗占总功耗的 75~85%,所以 FPGA 功耗估计必须把布线互连电容算进去。越靠近设计流程下游(布局布线后)估计越准,但高层估计快——两者是精度与速度的权衡。

动态功耗估计

关键两件事:负载电容(门电容好查,线电容要靠布线提取或 Rent 规则线长估计)和翻转活动估计。翻转活动三大流派:

  1. 实测表征:上板测量,套用厂商的经验公式,如 Xilinx 的 白话解释:内部功耗 = 核心电压 × 工艺常数 × 最高时钟 × 使用的逻辑单元数 × 平均翻转率——把整个设计当成”逻辑单元总数 × 平均活跃度”的宏观账。
  2. 统计模型:信号取 1 的概率记 ,对 LUT 函数 ,输出翻转活动由布尔差分传播: 白话解释: 是把输入 分别钉成 1 和 0 后的函数(余因子),两者异或就是”输入变一下、输出跟着变”的条件。把每个输入引起输出翻转的概率乘上该输入自己的翻转率,加起来就是输出翻转率。缺点:常假设输入独立、概率 0.5,且抓不住 glitch。
  3. 仿真模型:布后延迟回注 + 门级仿真,最准(能抓 glitch),就是慢。

短路功耗一般按开关功耗的比例折算,或用输入翻转时间的线性函数精细建模。

静态功耗估计

  • 解析法:代入工艺参数算亚阈值公式,平均误差约 13.4%;
  • 宏建模法:SPICE 仿真代表性输入向量(按汉明距离归类,避免向量爆炸),为不同尺寸 LUT/缓冲器建查表模型,平均误差可到 8%。

功耗构成:钱花在哪了

几份真实分解数据:

  • 架构研究中(100nm):最小延迟架构(块大小 6、LUT 输入 7)与最小能量架构(块大小 8、LUT 输入 4)的能耗差 48%、延迟差 12%——架构参数本身就是功耗旋钮

图6.2 最小能量架构的功耗分解

  • Stratix II(90nm,99 个真实设计统计):总功耗 = 核心动态 + 核心静态 + I/O 功耗。这里的漏电占比明显低于前图,原因是商用架构做了电路级漏电优化(非关键路径用高 、长沟道晶体管)。

图6.3 Stratix II平均设计的功耗分解:核心动态、核心静态与I/O三大部分

  • Spartan-3:静态功耗约 10%;动态功耗里布线开关是最大头,静态里布线开关与配置 SRAM 同为大户——再次印证”可编程性的代价”。

图6.4 Spartan-3功耗分解:动态部分布线开关最大,静态部分布线开关与配置SRAM为主

综合层级的省电手段

低功耗工艺映射

映射对功耗优化是 NP-hard,主流思路都是压总翻转活动(对照开关功耗公式):

  • 经典启发式:把翻转活动高的节点藏进 LUT 内部,让 LUT 输出端(会驱动互连的地方)翻转更少;
  • 割枚举版:让高翻转活动网络不上布线轨道;允许放松映射深度一级时还能再省 8~10%;
  • 带成本函数的割选择(翻转率、扇出数、复制考量一起打分)、限制割数量的省内存版本、网络流前瞻式映射等,各有 8%~14% 的能耗收益。

低功耗聚类

思路与映射呼应:把高翻转活动网络吸进逻辑块内部(块内连线比块间连线电容小),比 T-VPack 省 12.6% 能耗;Rent 规则驱动的方法兼顾布通性与功耗;延迟最优聚类算法(树最优)用 3% 功耗开销换 9% 延迟改善。

RTL 与行为级综合

  • RTL 侧:上板表征各种加法器实现(行波、超前进位、条件和等)的功耗/延迟数据,迭代地在 RTL 组件的不同实现间权衡功耗与速度。

图6.5 基于组件功耗表征的RTL低功耗优化流程:迭代选择不同实现权衡功耗与速度

  • 行为级侧:模拟退火引擎同时做资源选择、调度、功能单元绑定、寄存器绑定、MUX 与互连估计,五种移动全是绑定操作——Reselect(换同功能的另一种实现)、Swap(两个绑定互换)、Merge(两个功能单元合一)、Split(一拆二)、Mix(先合再按 slack 排序拆)。对比 Synopsys Behavioral Compiler 省电 35.8%。

图6.6 行为级功耗优化引擎:退火移动作用于绑定,每次移动完整生成数据通路评估总代价

  • 零成本技巧:LUT 里信号与其补码互换无任何面积/延迟代价——挑好极性让硬件多数时间待在低漏电状态,平均降 25% 有效漏电;映射布局布线后用 SPFD 重综合,把驱动大负载的 CLB 改成低翻转密度实现,省 12% 功耗且不动布局布线。

省电架构:把低功耗做进芯片

架构层面的总思路是多 Vdd(压动态)+ 多 Vth(压漏电)+ 电源门控(压闲置),但 FPGA 没有 ASIC 那种”版图上随意安放不同电压/阈值器件”的自由——资源必须出厂预布,这是独特难点。

漏电削减

  • 配置 SRAM 用高 :SRAM 单元不在关键路径上(只影响配置速度),提高 可让 SRAM 漏电降 15 倍,配置时间只多 13%。下图 4-LUT 分成高 区(Region I)和低 区(Region II):

图6.7 双阈值4-LUT:Region I高Vth管配置SRAM漏电,Region II低Vth保速度

  • 冗余存储单元:传统两级传输管 MUX 里,未选通路径的中间节点被拉到 Vdd,关不掉的传输管照样漏电;加冗余 SRAM 把不活跃路径断开,配合高 ,漏电减半(面积多 15~30%)。

图6.8 两级传输管MUX:(a)传统结构未选通路径仍漏电,(b)加冗余存储单元关闭不活跃路径

  • 区域电源门控:把 fabric 切成小区域,各自用 sleep 晶体管开关电源,没被设计占用的区域直接断电。布局器还要刻意”抱团”以增加可门控的区域数。
  • Pika 低功耗 FPGA 核:三板斧——低漏电配置 SRAM(中氧高 ,待机功耗省 43%)+ tile 级电源门控(配置 SRAM 不门控以保持状态保留模式)+ 堵死大电流通路。待机功耗降 99%,代价是 27% 性能和 40% 面积,唤醒只要 100ns——电池供电场景的样板。

图6.9 Pika的电源门控架构:tile级sleep晶体管,配置SRAM不门控以保留状态

动态功耗削减:可配置电压

  • 固定双 Vdd 图案:高低电压区域出厂固定。省面积、供电简单,但把布局引擎捆死了——关键路径单元未必恰好落在高电压区,实测省不了多少电。
  • CLB 级可配置 Vdd:在每个 CLB 与高低电压轨之间插两个 PMOS,CLB 可配置成高压/低压/门控。布局器就能把关键路径放高压 CLB、非关键路径放低压 CLB(面积开销 24%、延迟 5%),总功耗降 14%;互连开关也有三态版本(高/低/门控)。
  • 双 Vdd 下的映射与聚类:映射算法为 LUT 和电平转换器建全套延迟/功耗模型,穷举双电压下 LUT 连接的各种情况扩大搜索空间,比单 Vdd 再省 11.6%;聚类算法构建”延迟-功耗-电压”非劣解曲线传播(树最优),多输出簇版本再省 13.5%。注意:跨电压域需要电平转换器,它的延迟/功耗必须计入模型。

未来趋势:作者留下的挑战清单

物理设计

  1. 编译时间:布局布线占编译大头,目标是”全芯片物理设计一小时、增量五分钟”;
  2. 并行化:多核工作站将普及,需要商业强度的并行/分布式布局布线算法;
  3. 工艺偏差:65nm 以下偏差影响剧增,需要统计式优化算法,并指望 FPGA 的规则结构替设计者挡掉大部分变异性;
  4. 缺陷容忍:32nm 及以下的”极限 CMOS”芯片可能带缺陷出厂,需要缺陷容忍架构 + 缺陷感知物理设计协同。

逻辑/物理综合

  1. LEKO/LEKU 实验表明映射与逻辑优化联合空间仍有巨大改进余地;大 LUT、多电压等新架构特征需要新映射技术;
  2. 物理综合要管到布线与布通性(不只布局),高利用率下预测的收益才不会在布线时蒸发;还要让物理信息反向影响高层决策(数据通路架构、片上存储资源选择)。

行为综合

未来 FPGA 将集成数百个异构核、多层存储/互连层次、多 Vdd、电源/时钟门控、自适应阈值等特性——映射应用到这些架构上会极其复杂,行为综合将是控制复杂度的关键,两个方向:

  1. 尽早引入物理规划:综合引擎直接利用布局信息决定调度与绑定,利用电源门控、多 Vdd 等架构特性,输出 RTL + 物理/时序约束的”打包方案”;
  2. 通信综合:对片上点对点、总线、NoC 等不同协议与拓扑,建立接口模型、做高效的通信综合。

常见坑/误区

最常见的功耗认知坑是”只看动态、无视静态”和”翻车在互连”。90nm 以下静态功耗可与动态分庭抗礼,而 FPGA 总功耗的 75~85% 在互连上——优化 LUT 内部逻辑而放任高翻转信号走长全局布线,省电效果会被互连吃掉。另外别忘了固定双 Vdd 图案的教训:电压区域不能自由分配时,“支持多电压”≠“真能省电”。

通关标准:

学完本篇你应该理解:开关/短路/静态三种功耗的物理来源与两个关键公式()的含义;动态功耗估计的三大流派及布尔差分传播翻转率的原理;真实 FPGA 功耗构成中互连与布线开关的主导地位;从映射/聚类到行为级到架构(多 Vdd/多 Vth/门控)各层省电手段的思想;FPGA EDA 的四大未来挑战。