CDC是Clock Domain Crossing的缩写,当芯片中有多个异步时钟域,信号从一个时钟域到另一个时钟域时,这是数字IC设计中最关键的问题之一。
同步时钟显示恒定相位关系,而非同步时钟显示可变相位关系。因此,当信号在两个异步时钟域之间交叉时,在目标触发器上可能会建立或保持时序违例。这将导致目标时钟域中的亚稳态传播和数据丢失,如以下波形所示。
如何避免跨时钟域的亚稳态传播问题?
答案是否定的。在异步时钟域之间交叉时,我们无法避免亚稳态或时序违例,因为交叉信号是非同步的,当被目标触发器捕获时,其到达时间是不可预测的。请注意,STA工具将这些时序路径(异步时钟域之间的交叉)视为false path,在综合期间没有时序优化。因此,可能会发生违反时序的情况,这会导致亚稳态。
然而,通过使用同步电路,可以避免将亚稳态传播到芯片的其他部分。根据信号功能,需要不同类型的同步器来避免这些跨时钟域问题。
Cadence和Synopsys都有相应的工具(JasperGold CDC和SpyGlass)来验证芯片(RTL)是否存在任何CDC问题(缺少同步器),以便在设计周期中尽早检查。