P&R后的仿真出现hold违例的原因
顶一下,求帮助啊,不知道怎么解决~
坐等解决方案。高手们别藏着啦,出来回帖喽
你看一下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是在分析什麼。而不是只是照著書本一個步驟一個步驟操作。
加油
受教了
谢谢了