You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同频异步双时钟STA:需添加哪些约束暴露CDC缺失的时序违例?

异步同频跨域时钟的时序约束建模方案

假设某设计包含2路输入时钟,二者标称频率相同,但来自不同源,因此彼此异步。时钟定义如下:

create_clock -name {clock_a} -period 10.000 -waveform { 0.000 5.000 } [get_ports {i_clock_a}]
create_clock -name {clock_b} -period 10.000 -waveform { 0.000 5.000 } [get_ports {i_clock_b}]

设计中,同步于clock_a的数据跨域至clock_b,但未实现CDC机制。已知STA工具会计算多周期最坏时序裕量以查找时序违例,但此场景下时钟看似同频同相。请问需添加哪些约束对时钟的频率和相位不确定性建模,以发现实际存在的时序违例?

核心约束添加方案

1. 显式声明时钟异步关系

首先必须明确告诉STA工具两个时钟无固定相位关联,避免工具误按同步时钟分析:

set_clock_groups -asynchronous -group [get_clocks clock_a] -group [get_clocks clock_b]

这条约束是基础,确保工具采用异步跨域的最坏时序分析逻辑,而非默认的同相假设。

2. 时钟不确定性约束

针对时钟自身的抖动、偏斜,以及跨域时钟的相位偏差建模:

  • 单时钟内部的不确定性(比如时钟树偏斜、固有抖动):
    set_clock_uncertainty -setup 0.5 [get_clocks clock_a]
    set_clock_uncertainty -setup 0.5 [get_clocks clock_b]
    
  • 跨时钟域的额外不确定性(两个异步时钟的相位偏移叠加):
    set_clock_uncertainty -setup 1.0 -from [get_clocks clock_a] -to [get_clocks clock_b]
    
    数值需根据实际时钟源的规格(比如相位误差范围、抖动最大值)设定,目的是让STA计算时覆盖两个时钟沿的最大偏差情况。

3. 时钟抖动约束(可选,更精准建模)

如果需要单独区分时钟的固有抖动,可以添加:

set_clock_jitter 0.3 [get_clocks clock_a]
set_clock_jitter 0.3 [get_clocks clock_b]

抖动会导致时钟沿偏离标称位置,加入后STA会把这部分偏差纳入时序裕量计算,进一步贴近真实场景。

约束作用说明

标称同频同相的异步时钟,实际必然存在微小频率偏差、随机抖动、固定相位偏移,这些因素会导致跨域路径出现建立/保持时间违例。通过上述约束,STA工具会跳出理想同相假设,按照异步时钟的最坏情况分析时序,从而发现隐藏的违例问题。

内容的提问来源于stack exchange,提问作者shaiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:32:23