由于path很长最后导致design的reg2regTNS以及violation path变差的情况,如何fix tns
图2是其中最worst path
>>>>>>>>>>>before ecoroute>>>>>>>>>>>>>>
##############before ecoroute###########################
------------------------------------------------------------
timeDesign Summary
------------------------------------------------------------
+--------------------+---------+---------+---------+---------+---------+---------+
|Setup mode|all| reg2reg | in2reg| reg2out | in2out| clkgate |
+--------------------+---------+---------+---------+---------+---------+---------+
|WNS (ns):| -0.527| -0.527 |0.430|N/A|N/A| -0.449|
|TNS (ns):| -2620.9 | -2576.3 |0.000|N/A|N/A| -44.555 |
|Violating Paths:|12906|12629 |0|N/A|N/A|277|
|All Paths:|1.95e+05 |1.85e+05 |3213|N/A|N/A|7957|
+--------------------+---------+---------+---------+---------+---------+---------+
+----------------+-------------------------------+------------------+
||Real|Total|
|DRVs+------------------+------------+------------------|
||Nr nets(terms)| Worst Vio|Nr nets(terms)|
+----------------+------------------+------------+------------------+
|max_cap|0 (0)|0.000|217 (217)|
|max_tran|22 (718)|-0.063|3702 (21833)|
|max_fanout|0 (0)|0|0 (0)|
|max_length|0 (0)|0|0 (0)|
+----------------+------------------+------------+------------------+
>>>>>>>>>>
Note:我为了降低这个path的长度,靠左move了path 的begin port的reg以及path经过的一些cells
下面是作为ecoroute之后的结果
>>>>>>>>>>>>>
##############after ecoroute###########################
------------------------------------------------------------
timeDesign Summary
------------------------------------------------------------
+--------------------+---------+---------+---------+---------+---------+---------+---------+
|Setup mode|all| reg2reg | in2reg| reg2out | in2out| clkgate | default |
+--------------------+---------+---------+---------+---------+---------+---------+---------+
|WNS (ns):| -1.276| -1.276|0.377|N/A|N/A| -0.692|0.000|
|TNS (ns):| -3508.8 | -3508.8 |0.000|N/A|N/A| -62.019 |0.000|
|Violating Paths:|13477|13477|0|N/A|N/A|303|0|
|All Paths:|1.95e+05 |1.93e+05 |3266|N/A|N/A|7957|0|
+--------------------+---------+---------+---------+---------+---------+---------+---------+
+----------------+-------------------------------+------------------+
||Real|Total|
|DRVs+------------------+------------+------------------|
||Nr nets(terms)| Worst Vio|Nr nets(terms)|
+----------------+------------------+------------+------------------+
|max_cap|2 (2)|-0.051|219 (219)|
|max_tran|23 (676)|-0.610|3686 (21764)|
|max_fanout|0 (0)|0|0 (0)|
|max_length|0 (0)|0|0 (0)|
+----------------+------------------+------------+------------------+
>>>>>>>>>>>>>>>
我发现timing 变差了,是由于begin port的reg会形成一个loop,有net detour。
我也尝试move begin port and end port这些方法多失效了。
所以我对于这类path too long的violation感到非常困惑,不知道如何去fix.
请大家帮忙分析一下,谢谢!
如图1所示:
不好意思,上传图1失败,我又重新上传了!
谢谢!大家!
对encounter的timing report不是很熟,但从图上可以很明显看出worst transition 更差了,你可以看看是不是你动过的那条path的cell之间的距离被你拉大了。然后导致net delay和celldelay变大。不知道你说的“path too long” 指的是path上的逻辑门很长还是layout里cell之间的距离长。你可以先检查一下sdc,看看constraint是不是合理的,sdc没问题的话先分析data path,比如看看是否可以将一串小buffer或inverter换成一个大buffer 有没有transition问题导致delay很大,sizeup cell等等。data path实在修不下去的时候可以考虑useful skew。我一般也做clk 的design,所以我会先看clk再看data,clk调齐再去修timing。有的大公司修timing 的时候clk是不能动的。
不过lz貌似还没到最后修timing阶段,这样你前期place阶段可以试着多加点margin,如把feq提高点或uncertainty加大点,还可以设几个path group。
hi ,vien_gao
多谢你的热心回复!
1) path too long” 指的是path上的逻辑门很长还是layout里cell之间的距离长?
a) 我这里说path很长是指我path 的begin reg 和end reg的cell距离很长
2)sdc,看看constraint是不是合理的?
b)clock以及sdc的constraint不能够修改的
c)我也重新定义了几个pathgroup,但是最后的TNS还是很差。
不知道还有什么 方法可以fix TNS。
谢谢!
是startpoint和endpoint之间物理距离长吗?你在place优化的时候有加max_length和max_transition之类的constraint吗?没有的话加上试试,但max_length不要给太小,不然工具会加很多buffer进去,你可以估计一下一个x16的buffer 能推多远。还有就是把频率调高点或者uncertainty加大点,报timing的时候再改回来。
hi vien_gao
多谢你的热心回复,是两个cells的物理距离很远,在place阶段加了max_length 和max_transition的constraint了。
我再调整period 和uncertainly 试试!
谢谢!