数字后端流程--cts

Clock Tree Synthesis(Cts)

Place完成后此时所有的器件均已放进core内,可是所有的std cell放好就代表可以绕线了吗,当然不是,中间还有关键的一步——时钟树综合。这部分在整个后端实现都是非常重要的,因为时钟树质量和后续时序收敛难度有直接关系,好的时钟树可以很大程度上减少后续时序收敛的工作量。那什么叫cts?cts要做哪些工作呢?其实Cts就是在约束下,把clock信号从root通过buffer/invertor一级一级送到所有的sink点,并且尽量降低latency和skew的过程。

首先补充几个概念:

  • Root pin:指时钟产生点,通常由create_clock定义
  • Sink pin:包括reg的CK端,memory/IP的CK端
  • Leaf net:指sink点和它前一级buf/inv之间的clock net
  • Trunk net:指出去leaf net剩余的clock net

下面这张电路图可以帮我们理清楚上述几个概念:

由上图可以看到,时钟树其实就是由buf/inv一级一级组成的,每一个分结点就划分成一级,这里的buf/inv就是库里专门用来长时钟树的clkbuf/clkinv。

但是时钟树也不是长了就一定可以的,还要分析它的质量是否能达到标准,一般衡量时钟树质量的指标有:

  • Latency
  • Skew

而做高质量时钟树的目的就是为了时序服务的,这里需要关注的时序包括setup,hold,drv。

Latency

包括source latency和network latency两部分,source latency是指时钟源头到模块clock port的延时,network latency是指模块的clk port到sink点的延时。

Skew

是指同一时钟到达该时钟域内不同reg的时间偏差,分为global skew和local skew。

Global skew即同一时钟域内,任意两个路径的最大skew(path 3 & path 4)。

Local skew即同一时钟域内,任意两个有逻辑关系的路径最大skew(path 1 & path 2)。

Cts策略内容:

  • Clk buf/inv以及fix hold cell选型
  • Ndr rule
  • Sheilding
  • Cts约束(包括useful_skew,insertion_delay,max_fanout length等)

关键cmd--ccopt_design

可通过innovus gui查看时钟树结果以及debug

最后,如果好奇不做cts会发生什么也可以测试下,文中也有答案。这部分内容太多,技术细节和注意事项后续文章我们再慢慢展开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值