RDC 复位域交叉是什么?和 CDC 有何不同?
更新时间:2026-09-21。问题驱动短答页。RDC 电路设计见 RDC 复位域交叉,复位设计见 复位设计,复位同步见 异步复位同步释放。
一句话回答
CDC 关注“不同时钟域之间数据怎么安全传递”(亚稳态);RDC 关注“不同复位域之间,一个域在复位、另一个域却在正常工作时会发生什么”。当 A 域被复位、它发给正在运行的 B 域的信号被强制为常量或 X,B 域可能据此进入非法状态;复位释放的时刻相对 B 时钟也不确定,普通两拍同步器此时自身正处在复位中、保护不了你。处理 RDC 要做复位树规划(上电顺序、谁等谁)、对跨复位域信号做隔离或有效保持、异步断言同步释放,并用专门的 RDC lint 工具(如 SpyGlass RDC)签核,不能只靠 CDC 检查。
CDC 与 RDC
| 维度 | CDC | RDC |
|---|---|---|
| 起因 | 时钟不同源/异步 | 复位状态/释放不一致 |
| 风险 | 亚稳态、多 bit 不一致 | X 传播、非法控制、复位期误动作 |
| 典型结构 | 两拍同步/FIFO/握手 | 复位排序、隔离、复位同步器 |
| 同步器是否够 | 对单 bit 够 | 不够:同步器自己也在复位 |
| 检查工具 | CDC lint | RDC lint |
典型问题场景
- A 域复位后输出变成 0,B 域把这个“valid=0/ready=0”误当正常协议事件,握手死锁。
- 复位信号在时钟沿附近释放,接收域触发器进入亚稳(这是复位同步器要解决的,见 异步复位同步释放)。
- 跨域控制位在上电顺序未完成时是 X,仿真和门级行为分叉。
- 部分可复位/部分不复位(或不同复位源)的模块互通,状态假设不成立。
常用处理
- 复位树/上电顺序:明确全局 POR、各功能复位的层级与等待关系,见 系统复位/POR/WDT。
- 异步断言、同步释放:保证复位立即生效、释放与时钟对齐。
- 隔离(isolation)/保持:复位域拉低期间,把发给运行域的输出钳到安全值(valid 拉低、ready 给安全值),类似电源门控的隔离单元思路。
- 握手允许状态:让接收端只在对方“出复位且就绪”后采样。
- RDC 签核:用专用工具列违例并逐条 waiver/修复,和 CDC 报告分开看。
常见坑
- 只跑 CDC 检查,以为覆盖了复位场景。
- 复位中跨域 valid/ready 被强行拉成非法组合,唤醒后死锁。
- 多个复位源混用(POR、功能复位、调试复位)却没画清复位拓扑。
- 复位释放不做同步,偶发上电不启动。
总结
CDC 解决时钟非同步导致的亚稳,RDC 解决复位域状态不一致:当一个域在复位、另一个域在运行,跨域信号可能被钳成常量或 X、复位释放时刻也不确定,普通同步器自身正被复位而失效;正确做法是规划复位树与上电顺序、用异步断言同步释放、对跨复位域输出加隔离/安全值,并通过专门的 RDC lint 工具签核,它和 CDC 是两套互补而不能互相替代的检查。