微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > ICC中setup 违例是由于net delay大,如何解决

ICC中setup 违例是由于net delay大,如何解决

时间:10-02 整理:3721RD 点击:
经常在eetop的帖子里看到关于如何fix setup violation,经常看到如下的一种方法:

“If you find the timing violation cause by longtime path(net delay),Try to modify cell position.Move the cellstogether”


我想问下,在ICC中是怎么做的?


(1) 手动移动cell? 但是这样每次都是使这条path的timing的更差,或者又导致了更多其它path的违例;


(2)使用move bound,然后重新place_opt?我试过,move bound貌似也不好用;


不知道上面那种方法到底是如何做的;

真的可以这样修吗?net delay大,是因为transition造成的吧,这种,在最开始就该修完。transition修完了,一般不会有delay大的net。
移动cell这方法,不靠谱,往左边移,和右边cell的距离就远了,net delay就变大了。移动cell,不如直接upsize cell来得靠谱。或者,net delay太大,就插一级buf,这就相当于手工解transition,这种本来是工具可以干的活。话说,手工插buf,buf本身也有delay,插不好,反而导致整条net的delay更大。

我也觉得这种方法不靠谱,但是很多帖子里 总有人这么说;也不知道他们是怎么做的

这种方法不是绝对的方法,一般是在up size或者insert buffer不能解决的情况下可以考虑(当然可能有人喜欢用这种move cell的方法),move cell可用的情况比较窄,要是遇到setup violation的问题都手动move cell那岂不是烦死,当然有时候我们在build clock tree的时候就可以根据实际情况用scripts把cell放在特定的位置。有时候move cell会减小delay,但有时候可能没用。

修setup很难的,通常还是工具修,useful skew再搞下, 换lvt再来下,

你说的cts时候把某些cell放在一块,是说的icg吗?放在一块 你是使用的move bound吧

上NDR

我没有说放在一块,我是说放在特定的位置。clock trees的生长是可以人为干预的。

我碰到过这样的情况,一条path都是x16LVT的cell,但是这些x16cell之间的net,有的很长有的很短,分布很不合理,只能手动调位置

请教,你是如何手动调位置的;

请问如何upsize cell 具体命令是什么呢

upsize cell use command "replace_cell_reference"

请问,您是通过写脚本在placement时来放哪些cell?ICG?MUX?还是div?为什么要那么做?可以指教下吗

限制max net length,收紧SC的max tran,fplan的时候将SC的放置区域尽量集中,尽量不要搞成L型,T型的CORE区域,就像小编和前面几位朋友说的,有时候修setup要多种方法配合,在skew尽量小的前提下,size up,换lvt,使用NDR布线,然后配合工具的威力,opt命令 的timing effort弄成high什么的,最后就是CCD/useful skew了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top