在芯片时钟门控、模块休眠流程里,停钟前确认数据通路空闲,核心目标就是保证所有流水线、FIFO、总线、跨域接口里没有正在传输、还没收尾的事务,避免时钟中途关掉导致数据丢失、总线卡死、寄存器状态错乱,行业主流做法是靠 idle/busy 状态信号、valid-ready 握手、FIFO 空标志、总线协议状态组合判断,再配合状态机做等待延时,等通路全部排空之后,才释放时钟使能信号关闭 ICG 时钟单元,不能只看单一信号就直接停钟。很多新手容易踩坑,只看模块顶层 busy 信号,忽略内部流水线还有 in-flight 飞行数据、跨时钟域同步还没完成、FIFO 里还有残留数据,一旦此时切断时钟,当前半段事务直接卡住,上电唤醒之后也没法自动恢复。整套判断逻辑要覆盖整条通路的上下游:发送端、流水线各级、FIFO、接收端、总线接口,所有节点都要满足空闲条件,同时仿真和形式验证要单独加断言,检查有没有在事务进行中触发停钟的场景。
一、常用空闲判定信号清单
- busy/idle:模块自身输出忙信号,busy=0 代表模块无任务
- valid/ready 握手:所有接口 valid 拉低,没有正在握手的传输
- fifo_empty:输入、输出 FIFO 为空,没有排队待处理数据
- 总线状态:AHB/AXI 等总线,HTRANS/AXI 事务标识回到 IDLE,HREADY 拉高,无 in-flight 传输
- 流水线标记:流水线每一级都标记无有效数据,没有飞行指令
- 跨域同步:跨时钟域同步寄存器、同步 FIFO 全部排空,无待同步数据
二、空闲检查的执行步骤
- 收到休眠请求,先锁死上游新请求,禁止新的数据打入通路
- 状态机持续轮询所有判定信号,等待现有事务自然走完
- 等待所有 FIFO 为空、流水线清空、总线回到 IDLE 状态
- 增加固定安全等待周期,规避跨时钟域同步延迟、信号组合逻辑毛刺
- 全部空闲条件满足后,拉高通路 idle 汇总信号,给到 ICG 时钟门控
- 确认时钟关闭;唤醒时先开时钟,再放开上游请求
三、不同通路类型的空闲判断要点对比
| 通路类型 | 核心判断条件 | 风险点 |
|---|---|---|
| AXI/AHB 总线 | 所有 master 无 outstanding 传输,HREADY 高、TRANS=IDLE | 只看 master 空闲,忽略 slave 侧还在返回数据 |
| Valid/Ready 数据流 | valid 持续低,没有 valid&ready 同时握手周期 | valid 已经撤掉,但下游寄存器还锁着数据 |
| 流水线通路 | 每一级 valid 标记全部为 0,无 in-flight 数据 | 只看入口,中段还有数据在流动 |
| 跨时钟域 FIFO | wr_empty、rd_empty 同时成立,无同步 pending | 写域停钟,读域还在采样 |
四、验证手段(用来确认空闲逻辑可靠)
- 仿真断言:SVA 断言,只要停钟使能有效,就强制检查所有通路无有效事务
- 形式验证:证明不存在 “存在 in-flight 数据同时发出停钟请求” 的场景
- 功耗仿真 + bug 注入:在事务中途强行发休眠请求,看是否出现死锁、数据损坏
- 硬件 FPGA 原型:反复跑休眠唤醒压力测试,复现边界场景
【相关 FAQ】
问题 1:芯片停钟前确认数据通路空闲,只看模块顶层 busy 信号够不够?
回答 1:不够,芯片停钟前确认数据通路空闲,只看顶层 busy 容易漏掉流水线 in-flight 数据、FIFO 残留、跨域同步未完成的情况,必须组合 FIFO 空、握手信号、总线状态一起判断。
问题 2:使用 AXI 总线的芯片,停钟前确认数据通路空闲,重点要看哪些总线信号?
回答 2:AXI 总线芯片停钟前确认数据通路空闲,需要确认所有读写通道没有 outstanding 事务,AWVALID/ARVALID/RVALID/WVALID 全部拉低,返回通道完成应答,总线回到 IDLE 状态。
问题 3:芯片跨时钟域数据通路,停钟前确认通路空闲有什么额外注意点?
回答 3:跨时钟域通路停钟前确认数据通路空闲,不能只看单一侧信号,要保证同步 FIFO 读写两端都为空,同步寄存器没有待采样数据,避免一侧停钟另一侧数据丢失。
问题 4:芯片设计里,数据通路已经判定空闲,为什么还要再加一段等待周期再停钟?
回答 4:虽然数据通路判定空闲,但组合逻辑、跨时钟域信号存在传播延迟,增加等待周期可以过滤毛刺,保证所有信号稳定之后再关时钟,防止误停。
【参考资料】
[2026-10-22](时钟门控安全设计:总线与数据流通路 idle 检查)VLSI Mentor
[2026-09-15](AXI 低功耗休眠流程,in-flight 事务排空机制)ChipVerify
[2026-08-03](Valid-Ready 接口、FIFO 通路的空闲检测 SVA 断言)IEEE VLSI
[2026-07-10](SoC 低功耗设计:停钟、断电前通路排空方案)半导体行业观察
【免责声明】
本文仅为芯片 RTL 低功耗设计的技术方案整理,不替代项目中完整的 STA、形式验证、仿真验证;不同工艺、总线协议、项目约束下停钟空闲判断策略存在差异,最终方案需要结合项目 spec 和验证结果确定。
本文来自作者[杏岭蜜柿]投稿,不代表诚邦网立场,如若转载,请注明出处:https://www.cbpmc.com.cn/qyzx/202611/255.html
评论列表(4条)
我是诚邦网的签约作者“杏岭蜜柿”!
希望本篇文章《芯片低功耗设计停钟前如何判定数据通路已经空闲》能对你有所帮助!
本站[诚邦网]内容主要涵盖:互联网行业的追踪与探索
本文概览:在芯片时钟门控、模块休眠流程里,停钟前确认数据通路空闲,核心目标就是保证所有流水线、FIFO、总线、跨域接口里没有正在传输、还没收尾的事务,避免时钟中途关掉导致数据丢失、总线卡死、寄存器状态错乱,行业主流做法是靠 idle busy 状态信号、valid-ready 握手、FIFO 空标志、总线协议状态组合判断,再配合状态机做等待延时,等通路全部排空之后,才释放时钟使能信号关闭 ICG 时钟单元,不能只看单一信号就直接停钟。很多新手容易踩坑,只看模块顶层 busy 信号,忽略内部流水线还有 in-flight 飞行数据、跨时钟域同步还没完成、FIFO 里还有残留数据,一旦此时切断时钟,当前半段事务直接卡住,上电唤醒之后也没法自动恢复。整套判断逻辑要覆盖整条通路的上下游:发送端、流水线各级、FIFO、接收端、总线接口,所有节点都要满足空闲条件,同时仿真和形式验证要单独加断言,检查有没有在事务进行中触发停钟的场景。