在分析tree的结构时,应该如何分析
假设blobk中有5个source clock
1.如何知道哪些clock需要balance,哪些不需要balance?
2.交叉的clock应该注意些什么?
总之,在CTS之前应该如何分析tree的结构?万分感激!
问前端做代码的人,让它把结构介绍给你;然后用report_timing查一下
目前default的CTS方式还是用tool generate spec文件,做clockDesign。一般工具会考虑sdc、lib、netlist等的gen spec文件。一般的话如果你place opt timing基本都clean掉了,那cts之后的timing如果差距比较大的话就需要仔细看一下clock tree的结构了。如果postcts timign还可以的话,clock tree的结构也不太需要去看吧。
至于交叉的那些clock,在cts之前先报一下trace file,trace文件中会有提示,那些clock在那个cell/pin上有交叉点,一种处理办法是把这些cell都抓出来,先往后长tree,然后再把前边的tree长。(出问题的时候考虑)
一般出问题的时候会去看clock tree
很高兴收到您的回复,为什么当有问题时,先长交叉cell后面的clock tree,想了好久想不通。
分析clock tree从哪些角度入手?有哪些是需要关心的,感觉无从下手,哎,您那里有clock结构图吗?我想看一下
您好,其实我是不知道后端在做CTS之前应该怎样分析tree的结构,从哪些点切入,感觉没有方向
为什么从交叉的后边开始长,这个问题.........(假设你sdc有两个create clock,那么tool会gen出两个root点在spec file,而恰好这两个clock有交叉点,那么工具cts的时候长完第一条tree,长第二条tree的时候trace到交叉点之后,那么它会不会再交叉点之后又插cell呢?如果插入cell会不会影响你第一个tree latency skew呢?)
一般后端拿到数据的同时会有 前端说明啦,这份说明里边包含了很多信息,一般其中就有clock的信息了,如果想cts之前就了解的话,就只能从这方面入手了。(ps:我一般都是先按照工具gen spec file 用default flow做一遍cts。然后有问题的话(比如,latency很长,skew很大,level很多等等)就会去看出问题的点,进而再关注整个clock tree的结构,当然喽,如果专注以cts优化,是一开始就要了解clock tree的结构的。(ps还是看前端给的文件吧,如果没有的话,只能trace文件会有信息。但是听麻烦的;也可以通过clock debug gui来看tree结构。))
先从功能上了解始终之间的关系
您好,这个可以稍微具体解释下吗?非常感激
哎,我的经验有些少,可以分享几个您在CTS时遇到的几种最critial遇到的问题吗?是怎么debug的
其是您说的分析tree的结构:tree上结构其实就是ICG Div MUX ,还有clock之间的关系,以及每个clock给哪些reg送clock信号
找你的前端designer切入就对了,CTS之前的clk tree全是他写的。
1. 需不需要balance主要看两个时钟有没有timing关系,可以找前端。也可以从sdc里的set_clock_group等信息获得。2. 交叉时钟要看tool的行为和做tree的顺序,有可能时钟会被拉长或很难做平。edi是先在交叉点做tree,然后再从root做到交叉点。复杂的时钟构会有很多交叉点,可能有必要分段做tree。可以着重关注一下function clock交叉后与scan clock交叉的那个点。
14楼正解。
基本上了解时钟之间的功能关系,一个group的时钟是在功能上相关的,时序上相互check的,做tree的时候需要balance。
还有一种情况,模块级别如果两个不同的时钟端在顶层是同源的,那么需要balance_inter_clock 去约束两个时钟,当然后续eco也行。
至于scan_clock,和主功能时钟一起怎么做,那是另外一个问题。