CCD 并发时钟数据优化
CCD 并发时钟数据优化
概念解析
定义与起源
术语定义:CCD(Concurrent Clock and Data,并发时钟数据优化)是Synopsys物理设计工具中的一项高级优化技术——在同一个优化引擎里同时调整时钟延迟和数据路径延迟。传统流程中CTS(时钟树综合)和Data Path Optimization是分开的——CTS先把时钟延迟固定了,然后优化数据路径在这个固定时钟延迟下满足时序。CCD打破了这一顺序——同时移动时钟和数据。
CCD的核心insight是:有时修数据路径不如修时钟路径。如果一条setup-violated路径的数据到达太晚——传统做法是加快数据路径。CCD说:为什么不把捕获时钟延迟一点?把时钟沿往后推——等于给数据更多时间。这就是useful skew——CCD自动找到最优的useful skew分配。
核心要义
第一,CCD打破了"CTS先、数据后"的线性流程。 传统流程:Placement→CTS(固定clock latency)→Post-CTS Optimization(调整数据路径)。CCD:Placement→CCD(Joint Optimization of clock+data)→Post-CCD Refinement。CCD可以在数据优化过程中调整时钟——如果发现某条路径的setup可以通过延迟捕获时钟解决——CCD会插入时钟buffer——不是数据buffer。
第二,CCD的优化空间=时钟延迟的"可借区间"。 你可以把捕获时钟延迟——但不能延迟超过一个时钟周期(否则数据就到了下一个周期)。每位时钟延迟——受hold margin限制(延迟太多会导致hold violation)。CCD在setup margin和hold margin之间找最优的时钟延迟分配。
第三,CCD特别适合高度不平衡的数据路径。 如果一条路径有30级逻辑(长路径、setup紧张)而相邻路径只有5级(短路径、hold紧张)——CCD可以给长路径的捕获时钟加延迟(帮setup)、给短路径的发射时钟加延迟(帮hold)。人工做这种逐路径的时钟偏斜几乎不可能。
实践应用
* CCD不是替代CTS——是增强CTS:CTS建立初始时钟树拓扑→CCD在初始拓扑上做精细调整。 * CCD的适用范围:对setup和hold都紧张的设计(高度优化)效果最好。对于hold-rich的设计(很多hold余量)也可以利用hold余量换setup。 * CCD和useful skew的关系:useful skew是概念——CCD是自动化工具。CCD自动发现并利用useful skew机会。
实战案例
某GPU的CCD救局:传统流程跑完后WNS=-30ps——修了3轮ECO还是负。开CCD——自动给8条关键路径的捕获时钟加5-15ps延迟——WNS变为+5ps。而这8条路径的hold全clean——hold margin正好够。
CCD vs 手工useful skew:某芯片的手工useful skew调了2周——只调了12条路径。CCD 3小时自动调了全部50万+路径——找到2300条可从useful skew受益的路径——WNS从-40ps变+15ps。
CCD的hold风险:CCD在某设计上过于激进——给200+条路径的时钟加了延迟——导致50条hold violation。调整CCD的hold margin约束后——降到5条hold violation——全部可手工修复。
常见误区
误区一:CCD能解决所有时序问题。 CCD擅长修复中等到轻微的setup violation。对于严重的violation(WNS<-100ps)——需要架构级修复(减少逻辑级数、增大驱动)。CCD是精修工具——不是重构工具。
误区二:CCD开了一定更好。 CCD在某些设计上可能过度优化——引入了过多的时钟调整——增加了OCV敏感度和hold violation风险。always run with hold margin check。
误区三:CCD=useful skew。 CCD包含useful skew——但还有更多:它同时优化data path logic restructuring、buffer sizing、VT swapping——不只是时钟偏斜。