在数字IC后端设计实现过程中,我们一直强调做时钟树综合要把clock skew做到最小。原因是clock skew的存在对整体设计的timing是不利的。
但是具体到某些timing path,可能它的local clock skew对timing是有帮助的,比如如下图所示。
第一级FF到第二级FF的setup原来存在-1ns的violation。经过借用后一级的timing margin把第二个FF的tree做长1ns后这条timing path的setup slack变成0ns,即meet了。而且我们发现第二级FF到第三级FF的setup slack虽然从原来的2ns slack变成1ns的slack,但依然还是正的slack。
所以,这个人为引入的clock skew对我们的setup是有利的,所以把这个技术称作usefu skew。
所以EDA工具无论是Synopsys还是Cadence的,在时序优化阶段都支持clock和data的同步优化功能。
在没有这个功能时,我们需要一个个去分析到底哪些点的sink需要做长做短。现在我们可以直接通过模式和选项的设置让工具自己帮助我们来利用好useful skew。