为什么说ICG放在较高层次时enable信号的setup不容易收敛呢?
不懂的问
看你的clk tree结构,如果ICG后面的和ENABLE是一个tree,那么ICG cell放到高的层次就要考虑,enable本身的latency就比较大了。ICG的clock源是基本上是这个树的root。所以setup就会是问题。
非线性的关系,越往上受到的......
确切的描述应该是:
在CTS后,如果ICG放在离clock root很近(clock insertion delay很短)的地方,为什么enable信号的setup不容易收敛?
因为一般enable信号来自某个FF,那个FF是clock tree上的一个叶子节点,那么到FF的clock path就是整个clock tree的delay(假设skew很小),而那个ICG的clock path不足一个clock tree的delay,当然就容易出现setup的违法了。
也就是launching path太长, capture path只是clock path的部分(因为icg)的原因造成的,
这也就是icg 放的位置的tradeoff问题,
放的前面(high level), clock gating的效果好,可以关断更多的flops,但是setup timing难收敛
放在后面(low level) ,timing好收敛, gating效果一般
一般都是有多级ICG,可以控制各个级别的gating, tradeoff一下
CTS阶段如何设置使icg cell 尽量离clock root远点而离ff近点?
多级ICG展平放到1级,放到leaf cell 旁边如何?
还有就是如果clock tree delay 小于clock cycle, icg的setup time应该也比较容易meet吧.
上面是理论的。实际的是:
一般说来,EN信号是采用high-fanout的方式进行解析,而clock 多采用clock-tree 的模式。
可以把EN 定义为clock-tree 方式解high-fanout,多半满足时序了。
CTS阶段如何设置使icg cell 尽量离clock root远点而离ff近点?
我查了下ICC的命令,也没找到控制这个的相关命令呢,请高手指点哦!
这个问题有人解答下吗?
set_clock_gating_check 多留些margin, 让tool自动去放好了。 或者create_bound
小编,请问一下能否从缩短 FF/Q---ICG/E 之间的组合逻辑路径角度来解决enable的setup违反么,为什么
同问
刚入行不久,说说我的就拙见。
首先明确:我们讨论的这个问题主要是指hierarchy的ICG cell,他们一般在RTL代码里面就例化好了的。也就是说从FF的Q出来到ICG enable之间之间的逻辑级数是由前端设计决定的。
一般来说后端实现只有通过过约束来让tool尽可能地优化这段逻辑。以及在物理位置上让他们尽量地靠近在一起,
对于一个好的设计来说,这种ICG enable的setup不应该成为整个设计的critical path。
很有见地,非常佩服