微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > P&R后的仿真出现hold违例的原因

P&R后的仿真出现hold违例的原因

时间:10-02 整理:3721RD 点击:
我对综合后的电路进行仿真,仿真结果都是正确的,然后使用encounter进行P&R,在encounter中分析时序显示存在5条路径的hold违例,接着我用starrc抽取寄生参数,又使用PT进行静态时序分析,得到了eco列表,我重新回到encounter根据eco列表做eco操作,最后再次使用encounter进行时序分析,发现还有2条路径存在hold违例,对这个布线后的电路进行P&R后的仿真,结果的确不正确,出现很多x状态,并且提示某些信号保持时间不满足,这让我百思不得其解,按理来说综合后的电路既然不存在hold违例,那么P&R之后只会加入线网的延迟,如此以来信号延迟变大,hold时间的slack也应该变大才是,怎么会不满足了呢?求高人点拨!

顶一下,求帮助啊,不知道怎么解决~

坐等解决方案。高手们别藏着啦,出来回帖喽

你看一下clock latency,可能clock skew偏大了

看出现hold违例的路劲是哪些,一般是输入吧。

 嗨~你好
你要再encounter中把那5條有hold time violation的路徑一條一條報出來分析。
首先第一件事情,是先確認差了多少ns的違例。如果很大(譬如5~10ns以上)那你就要細細的分析一下是為什麼。
 最好不要再還沒分析過report之前,就帶入prime time用eco去修正。因為很有可能那是 假的違例 而你怎麼修也修不好的。
 大部分的design encounter都可以修到0的

 並且你在用dynamic simulation的時候,如果出現X狀態,不管是setup還是hold time,你都要先確認這一條路徑是不是非同步的。
 如果是非同步的訊號,那麼就應該忽略這個violation。

 一般來說,如果你的設計不是太複雜的東西,是不太容易出現有任何的setup和hold time的違例的。

 大部分的情況都是假的setup/hold time,並且搭配著非同步的訊號。
 導致你在post-sim的時候會一直以為你的design存在violation。
 建議你先在dynamic simulation的時候先確認一下你的X是哪一個訊號,如果是reset,sn之類的訊號那都是非同步的。
 以上是我的設計經驗和你分享一下。

十分十分感谢你的经验分享,我再按照你说的几个点去检查一下!

你好,弱弱地问一句,在encounter中如何报告hold或setup violation的路径?

下command的話是 report_timing
設定要看setup 還是 hold的話
去Timing ->Analysis condition -> specify analysis mode -> 改hold或setup
如果你要用command的話再查查 manul吧。
我的建議是先在合成完後用prime time分析一下hold time
這個stage下如果看到很大的violation就可以先找找原因了。
如果你合成完後 prime time報出的hold time都很輕微的話
那你encounter應該就會很容易修到好,我的經驗上是簡單的design 不會用到encounter 去找violation的路徑。
基本上前段合成完後的prime time分析,你要大概知道每一條為什麼會violation。
不要覺得是運氣問題,學生最喜歡改code然後一直重新合成,期待會突然出現沒有hold time的問題。
關鍵是你要很清楚你在設計什麼,也要清楚知道你用tool是在分析什麼。而不是只是照著書本一個步驟一個步驟操作。

 加油

受教了



谢谢了

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

网站地图

Top