这一篇在干嘛?
FPGA 的可编程性是有代价的:同等功能的 ASIC,功耗只有 FPGA 的 1/50 到 1/100。本篇讲功耗的三大来源、估计方法、真实芯片的功耗构成,以及映射/聚类/RTL/行为级各层和架构层面的省电手段,最后看综述作者眼中 FPGA EDA 的未来挑战。
功耗的三张面孔
FPGA 功耗 = 动态功耗 + 静态功耗,其中动态功耗再分两块:
- 开关功耗(switching):给负载电容充放电。模型是: 白话解释:功耗与频率 、电源电压平方 、每个节点的负载电容 和翻转密度 (单位时间平均翻转次数)成正比。电压平方项说明降压是省动态功耗的第一大杀器;翻转密度则是逻辑优化能动的部分。
- 短路功耗(short-circuit):信号翻转的瞬间,上拉和下拉晶体管同时导通一小段时间,从 Vdd 到 GND 直通漏电。它取决于输入信号翻转时间和负载电容。在 FPGA 里信号翻转时间偏大,短路功耗可观的某些设计里能占到全局互连动态功耗的 70%。
- 静态功耗(leakage,漏电):没有翻转也在漏。三种来源——亚阈值漏电(栅压低于阈值时源漏间的弱反导电流,是主导项)、反偏 pn 结漏电、栅氧隧穿漏电。亚阈值漏电与阈值电压、温度呈指数关系: 白话解释:器件越宽(W 大)、栅源电压越接近阈值、温度越高,漏电按指数级暴涨。90nm 以下,静态功耗开始统治总功耗——而FPGA 满地都是的配置 SRAM 和可编程开关恰恰是漏电大户。

功耗估计:算准才能省
互连是主角
亚微米 FPGA 里互连功耗占总功耗的 75~85%,所以 FPGA 功耗估计必须把布线互连电容算进去。越靠近设计流程下游(布局布线后)估计越准,但高层估计快——两者是精度与速度的权衡。
动态功耗估计
关键两件事:负载电容(门电容好查,线电容要靠布线提取或 Rent 规则线长估计)和翻转活动估计。翻转活动三大流派:
- 实测表征:上板测量,套用厂商的经验公式,如 Xilinx 的 白话解释:内部功耗 = 核心电压 × 工艺常数 × 最高时钟 × 使用的逻辑单元数 × 平均翻转率——把整个设计当成”逻辑单元总数 × 平均活跃度”的宏观账。
- 统计模型:信号取 1 的概率记 ,对 LUT 函数 ,输出翻转活动由布尔差分传播: 白话解释:、 是把输入 分别钉成 1 和 0 后的函数(余因子),两者异或就是”输入变一下、输出跟着变”的条件。把每个输入引起输出翻转的概率乘上该输入自己的翻转率,加起来就是输出翻转率。缺点:常假设输入独立、概率 0.5,且抓不住 glitch。
- 仿真模型:布后延迟回注 + 门级仿真,最准(能抓 glitch),就是慢。
短路功耗一般按开关功耗的比例折算,或用输入翻转时间的线性函数精细建模。
静态功耗估计
- 解析法:代入工艺参数算亚阈值公式,平均误差约 13.4%;
- 宏建模法:SPICE 仿真代表性输入向量(按汉明距离归类,避免向量爆炸),为不同尺寸 LUT/缓冲器建查表模型,平均误差可到 8%。
功耗构成:钱花在哪了
几份真实分解数据:
- 架构研究中(100nm):最小延迟架构(块大小 6、LUT 输入 7)与最小能量架构(块大小 8、LUT 输入 4)的能耗差 48%、延迟差 12%——架构参数本身就是功耗旋钮。

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

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

综合层级的省电手段
低功耗工艺映射
映射对功耗优化是 NP-hard,主流思路都是压总翻转活动(对照开关功耗公式):
- 经典启发式:把翻转活动高的节点藏进 LUT 内部,让 LUT 输出端(会驱动互连的地方)翻转更少;
- 割枚举版:让高翻转活动网络不上布线轨道;允许放松映射深度一级时还能再省 8~10%;
- 带成本函数的割选择(翻转率、扇出数、复制考量一起打分)、限制割数量的省内存版本、网络流前瞻式映射等,各有 8%~14% 的能耗收益。
低功耗聚类
思路与映射呼应:把高翻转活动网络吸进逻辑块内部(块内连线比块间连线电容小),比 T-VPack 省 12.6% 能耗;Rent 规则驱动的方法兼顾布通性与功耗;延迟最优聚类算法(树最优)用 3% 功耗开销换 9% 延迟改善。
RTL 与行为级综合
- RTL 侧:上板表征各种加法器实现(行波、超前进位、条件和等)的功耗/延迟数据,迭代地在 RTL 组件的不同实现间权衡功耗与速度。

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

- 零成本技巧:LUT 里信号与其补码互换无任何面积/延迟代价——挑好极性让硬件多数时间待在低漏电状态,平均降 25% 有效漏电;映射布局布线后用 SPFD 重综合,把驱动大负载的 CLB 改成低翻转密度实现,省 12% 功耗且不动布局布线。
省电架构:把低功耗做进芯片
架构层面的总思路是多 Vdd(压动态)+ 多 Vth(压漏电)+ 电源门控(压闲置),但 FPGA 没有 ASIC 那种”版图上随意安放不同电压/阈值器件”的自由——资源必须出厂预布,这是独特难点。
漏电削减
- 配置 SRAM 用高 :SRAM 单元不在关键路径上(只影响配置速度),提高 可让 SRAM 漏电降 15 倍,配置时间只多 13%。下图 4-LUT 分成高 区(Region I)和低 区(Region II):

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

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

动态功耗削减:可配置电压
- 固定双 Vdd 图案:高低电压区域出厂固定。省面积、供电简单,但把布局引擎捆死了——关键路径单元未必恰好落在高电压区,实测省不了多少电。
- CLB 级可配置 Vdd:在每个 CLB 与高低电压轨之间插两个 PMOS,CLB 可配置成高压/低压/门控。布局器就能把关键路径放高压 CLB、非关键路径放低压 CLB(面积开销 24%、延迟 5%),总功耗降 14%;互连开关也有三态版本(高/低/门控)。
- 双 Vdd 下的映射与聚类:映射算法为 LUT 和电平转换器建全套延迟/功耗模型,穷举双电压下 LUT 连接的各种情况扩大搜索空间,比单 Vdd 再省 11.6%;聚类算法构建”延迟-功耗-电压”非劣解曲线传播(树最优),多输出簇版本再省 13.5%。注意:跨电压域需要电平转换器,它的延迟/功耗必须计入模型。
未来趋势:作者留下的挑战清单
物理设计
- 编译时间:布局布线占编译大头,目标是”全芯片物理设计一小时、增量五分钟”;
- 并行化:多核工作站将普及,需要商业强度的并行/分布式布局布线算法;
- 工艺偏差:65nm 以下偏差影响剧增,需要统计式优化算法,并指望 FPGA 的规则结构替设计者挡掉大部分变异性;
- 缺陷容忍:32nm 及以下的”极限 CMOS”芯片可能带缺陷出厂,需要缺陷容忍架构 + 缺陷感知物理设计协同。
逻辑/物理综合
- LEKO/LEKU 实验表明映射与逻辑优化联合空间仍有巨大改进余地;大 LUT、多电压等新架构特征需要新映射技术;
- 物理综合要管到布线与布通性(不只布局),高利用率下预测的收益才不会在布线时蒸发;还要让物理信息反向影响高层决策(数据通路架构、片上存储资源选择)。
行为综合
未来 FPGA 将集成数百个异构核、多层存储/互连层次、多 Vdd、电源/时钟门控、自适应阈值等特性——映射应用到这些架构上会极其复杂,行为综合将是控制复杂度的关键,两个方向:
- 尽早引入物理规划:综合引擎直接利用布局信息决定调度与绑定,利用电源门控、多 Vdd 等架构特性,输出 RTL + 物理/时序约束的”打包方案”;
- 通信综合:对片上点对点、总线、NoC 等不同协议与拓扑,建立接口模型、做高效的通信综合。
常见坑/误区
最常见的功耗认知坑是”只看动态、无视静态”和”翻车在互连”。90nm 以下静态功耗可与动态分庭抗礼,而 FPGA 总功耗的 75~85% 在互连上——优化 LUT 内部逻辑而放任高翻转信号走长全局布线,省电效果会被互连吃掉。另外别忘了固定双 Vdd 图案的教训:电压区域不能自由分配时,“支持多电压”≠“真能省电”。
通关标准:
学完本篇你应该理解:开关/短路/静态三种功耗的物理来源与两个关键公式( 与 )的含义;动态功耗估计的三大流派及布尔差分传播翻转率的原理;真实 FPGA 功耗构成中互连与布线开关的主导地位;从映射/聚类到行为级到架构(多 Vdd/多 Vth/门控)各层省电手段的思想;FPGA EDA 的四大未来挑战。
自测:为什么降压(降 Vdd)是省动态功耗最狠的手段?
开关功耗 与电压的平方成正比:电压减半,动态功耗降到约四分之一。代价是门变慢,所以只能对非关键路径降电压——这正是多 Vdd 架构和时序感知电压分配的出发点。
自测:布尔差分 在功耗估计里起什么作用?
它刻画”输入 翻转时输出 是否跟着翻转”:把 钉成 1 和 0 得到两个余因子函数,两者不同(异或为 1)的输入组合正是会引起输出翻转的情形。其静态概率乘上 自身的翻转率,加总即输出翻转率——这是统计式翻转活动传播的核心。
自测:为什么配置 SRAM 提高 Vth 几乎没有性能代价?
配置 SRAM 只在下载比特流时被写入,正常工作期间不需要快速翻转;提高其 Vth 只拖慢配置速度(约 13%),换来 SRAM 漏电降 15 倍。而逻辑路径上的器件提高 Vth 会直接拖慢关键路径,所以商用 FPGA 才在”非关键路径用高 Vth/长沟道”上做文章。
自测:固定双 Vdd 图案架构为什么失败了?
高/低电压区域出厂固定,布局引擎只能在既定图案上摆放。关键路径上的逻辑未必恰好落在高电压区域内,非关键路径也未必能挤进低压区——电压分配与时序需求错位,省电空间被固定图案的强约束锁死。改进是 CLB 级可配置 Vdd(插 PMOS 切换电压轨),让布局器自由分配。
自测:FPGA 功耗的"可编程性代价"具体体现在哪两处?
一是互连:大量预制的布线轨道和可编程开关(传输管/缓冲器)电容大、翻转即耗电,动态功耗里布线开关是最大头,且互连占总功耗 75
85%;二是配置存储:海量 SRAM 单元持续漏电,是静态功耗大户。这解释了为何同功能 FPGA 比 ASIC 多耗电 50100 倍。