数字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}