通常如果你的設計在較低時鐘頻率時通過了仿真,但是在較高時鐘頻率時卻失敗了,你的第一個問題應該是你的設計在某個較高時鐘頻率時是否達到了時序約束的要求。然而這里我們將舉這樣一個例子,就是對于某個較高時鐘頻率你已經檢查了靜態時序分析 (STA),而且時序約束也是正確的。這種情況是什么引起的較高時鐘頻率仿真失敗呢?
可能的原因就是仿真方式、設計本身或者testbench 設置方式有問題。
在較低時鐘頻率通過了仿真這個事實就排除了設計 /testbench/ 仿真在設置上的問題。排除了上面兩項,下一個可能就是脈沖拒絕(reject)或者脈沖錯誤。
“脈沖拒絕(reject)”和“脈沖錯誤”是Verilog仿真中的概念。這些概念說的是脈沖的持續時間小于某個值(pulse_r)就不會通過某個電路元件。當然脈沖持續時間大于 pulse_r,但是如果小于另一個值 pulse_e 盡管會通過,但是在仿真中顯示的是“x”。這個持續時間是以通過某元器件延遲的百分比來表示的。比如通過某元件的延遲是 1ns。0.5ns 的脈沖表示為 50% 的持續時間。
現在假設設計采用的頻率是 200MHz。對應的周期就是 5ns,那么一半就是 2.5ns。在仿真中時鐘每隔 2.5ns 變化一次,也就是時鐘脈沖的寬度是 2.5ns。讓我們假設內部時鐘網絡某一脈沖寬度是 2.8ns (也就是大于 2.5ns)。分析結果,pulse-duration(脈沖持續時間)<100%。這個脈沖可能就會被“拒絕(rejected)”,也就是說盡管時鐘信號能夠到達某個具體網絡的輸入端,但是卻不能從這個網絡輸出。因此盡管 STA 分析顯示 200MHz 很合適,但是仿真卻不能通過。設計其他模塊將不能獲得時鐘脈沖。
解決這個仿真問題的方法是在仿真設置中修改脈沖拒絕和錯誤(reject/error)限制。
例如在 ModelSim 中我們可以設置:
+transport_path_delays +transport_int_delays +pulse_r/0 +pulse_e/0
后續操作還有:
1. 將 pulse-rejection 限制修改為 0。(不會拒絕任何一個脈沖)
2.將 pulse-error 限制修改為 0。(脈沖寬度低于某個值時不會顯示輸出為“x”)
同時要將 interconnect 延遲模式修改為 transport,其實是修改了脈沖濾波選項。
最后的問題是我們做這么多的修改就是為了能通過仿真測試嗎?
在真正的硅片中的實際情況是怎樣的?
在硅片中大部分內部互連線在每隔幾皮秒后就會設置一個 repeater(中繼器)。因此幾納秒的脈沖會順利通過(合適的延遲),這不會存在問題。具體出現問題的情形可能是這樣的:
1. 頻率增加(脈沖寬度更小了)
2. 器件尺寸增加(某個路徑的內部延遲可能變大了,導致內部延遲時間大于脈沖達到的傳輸時間)
賽靈思公司工具與方法學應用專家,1993年畢業于印度理工學院電子工程專業,一直從事 VLSI 和 EDA 相關領域的工作。2011年加入賽靈思公司,專攻庫特性描述與建模,HDL,仿真與綜合,靜態時序分析以及跨時鐘域(CDC)與同步相關內容。
-
脈沖
+關注
關注
20文章
884瀏覽量
95538 -
靜態時序分析
+關注
關注
0文章
28瀏覽量
9572
發布評論請先 登錄
相關推薦
評論