Bootstrap

数字IC后端实现时钟树综合系列教程 | Clock Tree,Clock Skew Group之间的区别和联系

Q: Clock,Clock Tree和Skew Group有何区别?Innovus CCOPT引擎是如何使用这些的?

Clock是时序约束SDC中的时钟定义点。

create_clock -name clk_osc -period $period_24m [get_ports xin_osc0_func]

在这里插入图片描述
时钟树综合(Clock Tree Synthesis)之前应该做好哪些工作?

想成为数字IC时钟树综合(clock tree synthesis)专家,建议好好看看这个

它的目的有如下几个:

1)确保每个寄存器/Memory/IP的时钟端都接到具体的时钟上

2)确保每个寄存器/Memory/IP的时钟工作频率是已知的

3)它是用来做STA静态时序分析用的

ccopt 引擎不会直接调用Clock。

在这里插入图片描述

Clock Tree就是我们通常针对某个clock做时钟树综合的那条时钟树。

在长clock tree前我们会对clock tree做如下的timing和physical constraint。

1)slew and slew violations
2)capacitance and capacitance violations
3)number of clock gates/buffers/inverters
4)area
5)NDR

当我们查看时钟结构报告时我们会发现这个报告中会列出sdc中每个clock对应的clock tree。

在这里插入图片描述

但是需要注意的是这里所说的sdc不一定是前面说的placement sdc,而是用来长clock tree的sdc。也就是我们一直给大家科普的分段长tree会用到的另外一个sdc。对数字IC后端分段长clock tree项目实操的,可以联系小编。

Skew Group是Cadence工具引入的概念。它是innovus工具把sdc中的clock相关约束转换成CTS engine认识的clock spec文件。而这个clock spec是CTS engine用来长clock tree的约束文件。

在这里插入图片描述
从clock tree spec文件或者innovus cts log文件都可以看到skew group就是在原来create_clock名字后面加一个constraint mode,比如clockA/cts。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

PS: Clock spec文件中的每条命令都需要彻底搞懂它的含义,即知道每条命令会如何引导工具长clock tree的。

我们可以通过下面的命令来报告出所有skew group的summary信息。

report_ccopt_skew_groups -summary

Skew Group Summary:


Timing Corner Skew Group ID Target Min ID Max ID Avg ID Std.Dev. ID Skew Target Type Skew Target Skew Skew window occupancy

dtmf_corner_max:setup.late vclk1/common none 0.456 0.533 0.495 0.018 auto computed 0.168 0.077 100% {0.456, 0.492, 0.533}
vclk2/common none 0.247 0.391 0.368 0.032 auto computed 0.168 0.144 92.8% {0.296, 0.380, 0.391}

;