芯片低功耗设计停钟前如何判定数据通路已经空闲

在芯片时钟门控、模块休眠流程里,停钟前确认数据通路空闲,核心目标就是保证所有流水线、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 全部排空,无待同步数据

二、空闲检查的执行步骤

  1. 收到休眠请求,先锁死上游新请求,禁止新的数据打入通路
  2. 状态机持续轮询所有判定信号,等待现有事务自然走完
  3. 等待所有 FIFO 为空、流水线清空、总线回到 IDLE 状态
  4. 增加固定安全等待周期,规避跨时钟域同步延迟、信号组合逻辑毛刺
  5. 全部空闲条件满足后,拉高通路 idle 汇总信号,给到 ICG 时钟门控
  6. 确认时钟关闭;唤醒时先开时钟,再放开上游请求

三、不同通路类型的空闲判断要点对比

通路类型核心判断条件风险点
AXI/AHB 总线所有 master 无 outstanding 传输,HREADY 高、TRANS=IDLE只看 master 空闲,忽略 slave 侧还在返回数据
Valid/Ready 数据流valid 持续低,没有 valid&ready 同时握手周期valid 已经撤掉,但下游寄存器还锁着数据
流水线通路每一级 valid 标记全部为 0,无 in-flight 数据只看入口,中段还有数据在流动
跨时钟域 FIFOwr_empty、rd_empty 同时成立,无同步 pending写域停钟,读域还在采样

四、验证手段(用来确认空闲逻辑可靠)

  1. 仿真断言:SVA 断言,只要停钟使能有效,就强制检查所有通路无有效事务
  2. 形式验证:证明不存在 “存在 in-flight 数据同时发出停钟请求” 的场景
  3. 功耗仿真 + bug 注入:在事务中途强行发休眠请求,看是否出现死锁、数据损坏
  4. 硬件 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

赞 (0)

今日大家都在搜的词:

发表回复

本站作者后才能评论

评论列表(4条)

  • 杏岭蜜柿
    杏岭蜜柿 2026年11月11日

    我是诚邦网的签约作者“杏岭蜜柿”!

  • 杏岭蜜柿
    杏岭蜜柿 2026年11月11日

    希望本篇文章《芯片低功耗设计停钟前如何判定数据通路已经空闲》能对你有所帮助!

  • 杏岭蜜柿
    杏岭蜜柿 2026年11月11日

    本站[诚邦网]内容主要涵盖:互联网行业的追踪与探索

  • 杏岭蜜柿
    杏岭蜜柿 2026年11月11日

    本文概览:在芯片时钟门控、模块休眠流程里,停钟前确认数据通路空闲,核心目标就是保证所有流水线、FIFO、总线、跨域接口里没有正在传输、还没收尾的事务,避免时钟中途关掉导致数据丢失、总线卡死、寄存器状态错乱,行业主流做法是靠 idle busy 状态信号、valid-ready 握手、FIFO 空标志、总线协议状态组合判断,再配合状态机做等待延时,等通路全部排空之后,才释放时钟使能信号关闭 ICG 时钟单元,不能只看单一信号就直接停钟。很多新手容易踩坑,只看模块顶层 busy 信号,忽略内部流水线还有 in-flight 飞行数据、跨时钟域同步还没完成、FIFO 里还有残留数据,一旦此时切断时钟,当前半段事务直接卡住,上电唤醒之后也没法自动恢复。整套判断逻辑要覆盖整条通路的上下游:发送端、流水线各级、FIFO、接收端、总线接口,所有节点都要满足空闲条件,同时仿真和形式验证要单独加断言,检查有没有在事务进行中触发停钟的场景。

联系我们

联系:143 0457 151

工作时间:周一至周五,9:30-18:30,节假日休息

关注我们