微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 如何找到Violation Path的公共路径?

如何找到Violation Path的公共路径?

时间:10-02 整理:3721RD 点击:
在fix setup 时,效率较低的方法是: 针对出问题的path进行size_cell 或者 insert_buffer。
同样,对于fix hold , 效率较低的方法是:针对出问题的path的起点、终点或者 path 插入buffer/delay cell。

效率高一些的方法,自然是找到这些出Violation Path的公共path,但是怎么通过timing报告,来抓取到公共Path呢?

通过timing_path的属性可以得到 slack,start_point,end_point,但是似乎不容易找到公共的Path。
这个是不是需要去理解Verilog 代码结构?
在ICC中,看到的只有Register与Register的关系,网表的连接结构好像从后端的角度,关心得比较少。

Up up

如果想偷懒的话,synopsys有个现成的叫DMSA的东东,就是用来干这个的。
如果想自己开发的话,这是gate level的东西看RTL貌似帮助不大。timing_path属性中有points的,电路对应的数据结构是有向图。

DMSA=Distributed Multi-Scenario Analysis,是吧。
这也是工具再用fix_eco_timing来fix timing。
其实我是想知道基本的原理,怎么根据那些Violation path来找到公共的Path

具体分析path level 上的fanout and fanin 是相对比较省事的方法。

在有大的fanout上来insert buffer或者 size up 这个driver 解决?但是这也不一定是公共的Path呀?

好像你没注意到3楼的第二句:)
path有个points属性,那么,最直观的一个算法,就是:
for {所有violating path} {
for {path上的所有point} {
point_name_counter++;
}
}

最后看看那个point得票最多呗。

pt command:
report_bottleneck

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

网站地图

Top