Spyglass CDC中Ac_cdc01d规则默认禁用原因及同频时钟CDC报错咨询
关于Spyglass CDC验证中同频同相时钟误报的解决方法
核心问题分析
当设计中存在同频同相时钟时,Spyglass的cdc_verify模块默认不会自动推断时钟的相位与频率关联,仍会将它们视为独立时钟域,从而触发不必要的快到慢时钟保持检查报错。
解决步骤
1. 用.sgdc约束明确时钟关系(优先方案)
无需额外命令行参数,只需在.sgdc文件中通过显式约束告知工具两个时钟的同频同相关系:
- 方式一:将两个时钟归为同一同步时钟组
set_clock_group -name same_freq_phase_group -asynchronous false -group [get_clocks clk_a] -group [get_clocks clk_b]
- 方式二:直接指定时钟间的频率与相位关系
set_clock_relationship -from [get_clocks clk_a] -to [get_clocks clk_b] -same_frequency -phase 0
添加上述约束后,工具会识别两个时钟属于同一同步域,自动跳过跨时钟域的保持检查。
2. 关于fa_holdmargin的使用评估
用fa_holdmargin调整保持裕度能消除报错,但这属于临时 workaround而非根本解决手段:
- 若两个时钟确实完全同频同相,这种调整只是掩盖工具误判,不会引入风险,但不如显式时钟约束规范;
- 若时钟实际存在微小相位差/频率偏差,盲目加大
fa_holdmargin会掩盖真实时序问题,可能导致流片后功能故障。
验证建议
- 先添加上述时钟组约束,重新运行
cdc_verify,确认误报是否消除; - 若仍有残留报错,检查时钟定义路径(比如是否因不同时钟生成模块导致工具无法关联);
- 避免过度依赖
fa_holdmargin,仅在时钟关系无法通过约束明确时,再作为临时手段使用,且需记录调整原因与裕度值。
内容的提问来源于stack exchange,提问作者Sujan Kumar
相关产品推荐
相关产品推荐

