最近调一块 FPGA 板子,功耗比预算高了近 30%,查了一圈,问题不在逻辑规模,而在时钟和电源域没划干净,分享几点实测经验。
一、先拆功耗账。动态功耗看翻转率最高的几个时钟域,静态功耗看高温下的漏电。别一上来就全局降频,先用功耗报告定位前三的域,多数情况下一个域就占了大头。
二、时钟门控要防毛刺。使能信号必须同步到目标时钟域再参与门控,否则毛刺会让下游时序时好时坏。我习惯把使能先打两拍,综合时再检查门控单元是否被正确推断,而不是被优化成普通逻辑。
三、电源域划分量力而行。常开域只留唤醒逻辑和配置保持电路,其余域关断时要加隔离单元,输出钳位到安全电平,否则关断域的浮空输出会把常开域带偏。上电顺序也要写进约束和测试用例,靠人工上电顺序迟早会漏。
四、实测别只看标称电流。用采样电阻加示波器抓唤醒瞬间和满载切换的电流波形,静态电流在高温箱里再测一遍,常温下合格不代表高温合格。
你们项目里时钟门控实际省了多少功耗?有没有遇到过门控引入的时序问题?