RDC复位域跨域验证技术教程 - 第2节

2.1 为什么先理解复位?从验证视角看“起点稳定性”

在跨时钟域(CDC)验证中,复位是设计进入确定性初始状态的首要前提;而在复位域跨域(RDC)验证中,需要额外确认:跨域路径两端是否处于同一复位域?复位释放顺序是否正确?是否存在异步复位导致的亚稳态传播?这些问题,都建立在“同步复位 vs 异步复位”和“复位信号特性”这两个基础之上。

2.2 核心概念:三种基础复位方式

复位方式 触发条件 信号要求 典型场景
同步复位 仅在时钟有效沿到来时接收复位 复位信号需要满足时钟沿建立/保持时间 集成设计中局部逻辑复位,偏好DFT/ATPG的设计
异步复位 复位有效信号立即触发,无需等待时钟沿 对复位释放时机敏感,存在恢复/移除时间约束 芯片级全局复位、低功耗快速唤醒逻辑
异步复位同步释放 置位异步生效,释放通过同步器与目标时钟同步 释放沿对齐目标时钟域,规避亚稳态 主流SoC多时钟域复位树设计
RDC验证视角的结论: 复位域验证最关注的是“异步复位同步释放”结构,因为它同时涉及复位跨域和时钟跨域,是复位信号特性与CDC交汇的核心场景。

2.3 原理机制:复位信号在跨域中的关键特性

2.3.1 同步复位:与时钟强绑定

同步复位逻辑相当于把复位当作一种特殊的“数据输入”,其动作必须出现在时钟有效沿。因此复位信号与时钟之间天然存在时序关系(建立保持),在CDC验证中通常不会引入复位引入的亚稳态;但复位信号若来自异步时钟域,则必须先经过同步器,否则会产生“数据沿”违规。

2.3.2 异步复位:置位即时、释放危险

异步复位的主要问题不在“置位”,而在“释放”。如果复位释放时刻靠近时钟有效沿,触发器输出可能进入亚稳态——这种亚稳态通过复位树传播到多个触发器,会造成大范围数据不稳定。

// 异步复位同步释放(推荐写法)
always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        rst_sync_1 <= 1'b0;
        rst_sync_2 <= 1'b0;
    end else begin
        rst_sync_1 <= 1'b1;
        rst_sync_2 <= rst_sync_1;
    end
end
assign rst_sync_n = rst_sync_2;

2.3.3 复位信号的核心参数

参数 定义 验证关注点
恢复时间 Recovery 复位释放沿到下一个时钟有效沿的最短时间 约束检查:释放沿与时钟沿可能形成竞争
移除时间 Removal 时钟有效沿到复位释放沿的最短时间 约束检查:释放沿如果在时钟后过近,触发亚稳态
复位同步延迟 从复位释放到全部寄存器退出复位态的传播延迟 多级同步器的级数验证;跨域同步后的对齐性检查
复位树偏斜 复位叶子节点之间的释放时间差 影响多异步时钟域协同恢复的确定性

2.4 复位策略流程图:如何选择与验证

下面这张图给出 RDC 验证中的复位策略判断路径:从复位源出发,识别复位类型,明确是否异步释放,并最终落入验证方法。

复位源信号 rst_n / reset_tree 复位类型判断 同步/异步 释放路径检查 同步释放 or 直接释放 复位域冲突 需CDC/RDC专项检查 RDC验证执行 同步器+复位检查+CDS/CDR
流程图说明: 在“复位类型判断”节点中,如果判断为异步复位,则必须继续检查“释放路径”是否存在同步器;若存在同步器,还应进一步确认同步器是否使用目标时钟域的时钟,否则视为复位域冲突。

2.5 案例说明:异步复位同步释放典型场景

假设一个子系统同时使用 clk_a 和 clk_b 两个异步时钟,全局复位 rst_n 为异步复位源。设计上为每个时钟域分别做 rst_sync 同步释放,模块内部的同步逻辑代码已在上文给出。RDC验证时需要重点检查:

  1. clk_a 域产生的复位同步器释放沿,是否被 clk_b 域逻辑直接使用;
  2. 两域复位释放先后顺序是否影响跨域握手信号(例如 ready/valid 被复位释放后过早置位);
  3. 复位释放沿是否通过组合逻辑形成额外 PLL 门控或时钟门控条件。

2.6 同步复位与异步复位:综合对比表

对比维度 同步复位 异步复位
时钟依赖 必须有时钟 无需时钟可置位
复位释放 天然对齐时钟沿 易产生释放亚稳态
DFT友好性 较高,便于scan插入 需要额外release逻辑
毛刺过滤 可被时钟采样过滤 毛刺直接触发复位
RDC验证重点 同步器跳变对齐检查 恢复/移除时间约束与释放同步器
低功耗优势 复位释放功耗波动集中 快速唤醒,减少时钟等待

2.7 误区提醒

误区1:异步复位信号可以在所有时钟域直接使用。
实际上异步复位信号在不同时钟域使用时,必须分别做同步释放;否则释放沿进入不同时钟域时,可能在一个域已释放、另一个域未释放,形成长时间“复位态不一致”。
误区2:只用功能仿真就能验证复位释放。
功能仿真默认 0 延迟,无法体现恢复/移除时间竞争;必须使用门级仿真、形式化验证或基于断言的CDC/RDC工具检查释放路径时序关系。

2.8 实践清单:复位基础检查要点

  • 【识别】列出所有复位源,标注是否为异步复位;
  • 【检查】为每个时钟域确认是否存在复位同步器;
  • 【验证】检查复位释放路径上的同步器是否使用目标时钟域的时钟;
  • 【约束】为每个异步复位配置恢复/移除时间断言;
  • 【交叉】确认跨异步时钟域的握手信号在复位释放后的时序是否满足协议;
  • 【报告】获取 RDC 检查报告,确认复位树跨域路径全部覆盖。
本章小结: 同步复位与异步复位本质区别在于“动作与时钟沿的关系”,而RDC验证中最关键的是复位释放路径的同步性。掌握恢复/移除时间、复位同步器结构和复位树跨域路径,是后续理解“复位域约束传递”和“复位域跨域检查”的基础。