默认情况下,“Report CDC”(CDC 报告)针对每个端点和每个时钟对仅报告 1 个违例。如果针对任一特定时钟对存在多个违例,则仅报告优先级最高的 CDC 违例。
CDC 规则按优先级从高到低排序,如下表所示。
规则 ID | CDC 拓扑结构 | 严重性 | 类别 |
---|---|---|---|
CDC-18 | 使用 HARD_SYNC 原语同步 | Info | Safe |
CDC-13、14 | 非 FD 原语上的 1 位和多位 CDC 路径 | Critical | Unsafe |
CDC-17 | MUX 保持类型 | Warning | Safe |
CDC-16 | MUX 类型 | Warning | Safe |
CDC-15 | CE 类型 | Warning | Safe |
CDC-26 | LUTRAM 读写潜在冲突 | Warning | Safe |
CDC-7 | 异步复位未同步 | Critical | Unknown |
CDC-1、4 | 1 位和多位 CDC 未同步 | Critical | Unknown |
CDC-12 | 多时钟扇入 | Critical | Unsafe |
CDC-10 | 同步器间检测到组合逻辑 | Critical | Unsafe |
CDC-11 | 从启动触发器扇出到目标域 | Critical | Unsafe |
CDC-9 | 异步复位,使用 ASYNC_REG 属性同步 | Info | Safe |
CDC-6 | 多位,使用 ASYNC_REG 属性同步 | Warning | Unsafe |
CDC-3 | 1 位,使用 ASYNC_REG 属性同步 | Info | Safe |
CDC-8 | 异步复位,使用缺失的 ASYNC_REG 属性同步 | Warning | Safe |
CDC-2、5 | 1 位和多位 CDC,使用缺失的 ASYNC_REG 属性同步 | Warning | Safe |
注释: 以上列出的严重性为“Warning”的部分规则的优先级比其他严重性为“Critical”的规则的优先级更高,原因是这些规则实际上因 CDC 拓扑结构不同而并未应用于相同端点。
当任一端点具有多个 CDC 违例时,如果优先级最高的违例享有豁免,则报告的违例为按优先级排序次之的违例。
要为设计创建豁免,较为简便的方法是在单次运行中针对单一端点报告所有 CDC 违例,忽略规则优先级。使用 report_cdc
命令行选项 -all_checks_per_endpoint
可生成 1 份包含设计中所有 CDC 违例的详尽报告。
注释:
-all_checks_per_endpoint
只能通过 Tcl 控制台运行,在“Report CDC”(CDC 报告)对话框中不予支持。但可使用 -name
选项在 Vivado IDE 中显示 -all_checks_per_endpoint
的结果。