CTS :clock tree synthesis ,CTS在flow中也就是 clock ,clock_opt两部分。CTS可以说是数字后端最核心最重要的部分,关注着block的timing的的好坏,一旦不能有一个良好的时钟树,则会为block的后期带来很多预想不到的麻烦。
CTS是干什么的? 如下图CTS的目标就是将design的所有的flip-flop的clock pin一级一级的连接起来,形成一个类似树形的结构,即clock tree。
clock tree 形状:
所以说,我们clock tree的质量的好坏则和timing息息相关。
在长clock tree之前我们首先需要了解一下几个名词。
1 clock skew : 汉语意思就是clock的差值,其实就是指的一级一级clock path之间的差值,例如上图的clock skew就是clk2 - clk1.
看到这里你可能会想,clk2 - clk1 肯定越大越好啊,这样setup不就满足了嘛,但是实际上并不是这样,我们不能只局限到一组的reg2reg的timing,我们需要做到的是全局的balance,所以说,我们希望每一级的clock skew都尽量的小,这也就意味着我们block的时钟才会均衡。这样才会即有一个好的timing、又不影响时钟的频率的结果。
2 clock latency : 也就是clock source点到reg的clk pin的时间。一般我们最长的latency要进行限制。并且希望其越短越好。
3 common path : 就是clock source 点到launch 和 capture的交界点的路径,就叫做 common path
4 common point : launch 和 capture的交界的点 ,叫做common point
cts阶段的希望: latency 短 ,skew 小 ,common path长。