1. CDC与复位验证全景

多时钟域设计(Multi-Clock Domain, MCD)是现代SoC的常态:一颗芯片里往往同时存在CPU核时钟、总线时钟、DDR控制器时钟、外设低速时钟、以及各类分频/倍频生成的派生时钟。只要信号从一个时钟域进入另一个时钟域,就产生了跨时钟域(CDC)问题。CDC验证的目标不是"让设计跑起来",而是在RTL签核阶段就证明:所有跨域路径要么被同步器安全处理,要么被明确约束为伪路径或静态常量,不存在被遗漏的亚稳态传播风险。

一、多时钟域设计的四类核心风险

CDC问题可以归纳为四类,它们对应不同的物理机理和不同的检查手段:

  • 亚稳态传播(Metastability):源域触发器在目的域时钟采样窗口内发生跳变时,目的域触发器可能进入既非0也非1的中间态,并在不确定时间后随机收敛。若该亚稳态信号直接驱动多个目的域负载,不同负载可能采到不同值,造成功能错误。
  • 数据丢失/重复采样:多比特总线跨域时,若各比特到达时间不一致,目的域可能采到"半新半旧"的组合值,即数据一致性被破坏。
  • 握手/脉冲丢失:单比特脉冲跨域时,若脉冲宽度小于目的域时钟周期,可能被完全漏采;握手信号若未正确同步,可能造成请求-应答死锁。
  • 复位域交叉:复位信号本身也是跨域信号。异步复位在释放(de-assert)时刻若未与目的域时钟同步,会导致不同触发器在不同时钟沿退出复位,形成复位释放偏斜,进而引发状态机跑飞或亚稳态。

二、亚稳态传播的物理过程

理解亚稳态是理解CDC检查的基础。当源域信号在目的域时钟的建立/保持窗口内变化时,目的域触发器的内部节点被推到亚稳态点附近,输出在一段时间内处于不确定电平。这个不确定时间服从指数分布,无法从理论上完全消除,只能通过平均无故障时间(MTBF)来量化风险。两级同步器的MTBF近似为:

MTBF ≈ e^(t_r / τ) / (T_0 × f_clk × f_data)

其中:
  t_r   = 留给亚稳态收敛的时间(约等于一个目的域时钟周期)
  τ     = 触发器亚稳态时间常数(工艺相关,典型几十ps)
  T_0   = 亚稳态窗口常数(典型几十ps)
  f_clk = 目的域时钟频率
  f_data= 源域信号跳变频率

从公式可见:提高MTBF最有效的手段是增加同步器级数(每增加一级,t_r增加一个时钟周期,MTBF指数级提升),其次是降低目的域时钟频率或源域数据跳变率。工程上通常要求MTBF大于芯片寿命的若干倍,例如10^9小时量级。

三、复位域交叉问题

复位域交叉常被忽视,但危害极大。典型场景是:一个异步复位信号同时复位多个时钟域的触发器,复位释放时未做同步。由于各时钟域相位不同,某些触发器可能在本域时钟沿先退出复位,而另一些还在复位中,导致跨域状态机进入非法状态。正确的做法是采用复位同步器:异步置位、同步释放(Async Assert, Sync De-assert),即复位有效沿异步拉低,释放沿经两级触发器同步到目的域时钟。

复位同步器本身也是CDC结构,必须被CDC工具识别并豁免,否则会被误报为跨域违规。因此复位树需要在约束中明确声明复位源、复位同步器位置和各复位域边界。

四、SpyGlass CDC在RTL签核流程中的定位

SpyGlass CDC属于静态结构检查,在RTL阶段即可运行,不需要测试激励。它通过分析时钟树、复位树、跨域路径和同步器结构,自动识别CDC违规。其典型签核流程为:

  1. 时钟/复位定义:在SGDC约束文件中声明时钟源、频率、复位源和复位同步器。
  2. 结构检查:识别所有跨域路径,检查是否经过合法同步器(两级触发器、握手、异步FIFO、脉冲同步器等)。
  3. 协议检查:对多比特总线检查是否使用格雷码或握手保护,对FIFO检查指针同步和满空逻辑。
  4. 复位检查:检查复位释放是否同步、复位域边界是否清晰。
  5. 违例分类与签核:将违例分为真实违规、需约束豁免、需人工确认三类,逐条闭环。

SpyGlass CDC的价值在于:它在RTL阶段就暴露结构性问题,避免问题流到综合后或硅后,显著降低修复成本。它与形式验证、仿真验证形成互补——仿真难以覆盖所有跨域时序组合,而CDC静态检查可以穷举结构路径。

CDC与复位验证全景:风险、机理与SpyGlass签核定位 源时钟域 clk_a FF_A FF_B 数据跳变频率 f_data 时钟频率 f_clk_a 信号在窗口内跳变 → 亚稳态 目的时钟域 clk_b SYNC1 SYNC2 两级同步器 MTBF ∝ e^(t_r/τ) 亚稳态收敛后输出稳定 跨时钟域信号 亚稳态传播示意 不确定收敛时间 → 多负载可能采到不同值 复位域交叉风险 异步复位释放未同步 → 各域退出复位时刻不同 → 状态机跑飞 / 亚稳态 / 功能错误 正确做法:异步置位、同步释放(两级同步器) SpyGlass CDC 签核定位 RTL阶段静态结构检查,无需激励 时钟/复位定义 → 结构检查 → 协议检查 → 违例闭环 与仿真/形式验证互补,穷举跨域结构路径

五、签核检查清单(示例)

下表给出一个可直接用于项目起步的CDC/复位检查清单示例,字段和判断依据均围绕RTL签核场景设计:

检查项检查内容判断依据常见违例
时钟定义所有时钟源、频率、相位关系是否在SGDC中声明未声明时钟导致跨域路径漏检派生时钟未约束
单比特同步跨域单比特是否经过两级触发器同步器级数≥2,且无组合逻辑插入直接跨域、组合逻辑跨域
多比特总线总线跨域是否使用格雷码或握手各比特到达时间一致二进制计数器直接跨域
脉冲同步窄脉冲跨域是否使用脉冲同步器脉冲宽度≥目的域时钟周期脉冲丢失
复位释放复位释放是否同步到各目的域异步置位、同步释放复位释放偏斜
FIFO指针异步FIFO读写指针是否格雷码同步指针同步器+满空逻辑正确指针多比特跨域
本章是全景导论,后续章节将逐一展开:时钟树与复位树建模、SGDC约束编写、同步器识别规则、多比特协议检查、复位域交叉专项检查、违例分类与签核标准。建议在阅读后续章节时,反复回到本章的四类风险框架,把每个具体检查项映射到对应的风险类别上。

总结来说,CDC与复位验证的核心逻辑是:识别跨域路径 → 判断是否被合法同步结构保护 → 检查同步结构本身的协议正确性 → 确认复位释放同步性。SpyGlass CDC把这套逻辑自动化、结构化,使RTL签核从"靠仿真碰运气"转变为"靠结构穷举保底"。掌握这一全景,是后续所有具体操作和约束编写的基础。