時序約束出現(xiàn)時序違例(Slack為負(fù)數(shù)),如何處理?
答:
一. 首先指出一個誤區(qū):當(dāng)約束出現(xiàn)錯誤時,想當(dāng)然地認(rèn)為是“時序約束做得不對”,所以應(yīng)該怎么去改“時序約束”,從而讓這些錯誤消失,這是一個錯誤的觀念。
二. 時序約束的作用:在于檢查“設(shè)計(jì)是否滿足時序要求”,它是用來審視自己設(shè)計(jì)的,很多情況是,要改設(shè)計(jì)代碼來滿足時序要求。
三. 當(dāng)時序約束提示有錯誤時,應(yīng)該閱讀“時序報告”,從報告中分析時序路徑(數(shù)據(jù)到達(dá)時間、時鐘到達(dá)時間和數(shù)據(jù)要求時間等),根據(jù)報告分析錯誤的原因,并根據(jù)原因來實(shí)行不同的方法。
以建立時間違例,說明具體方法如下:
1. 時序報告中,找到提示錯誤的路徑,即目的寄存器,以及源寄存器。注意,這是兩個寄存器的點(diǎn)。
2. 首先判斷,源寄存器的時鐘,與目的寄存器的時鐘,是否相同。如果不同,可以認(rèn)為是異步時序,見步驟3;如果是相同,則看步驟4。
3. 如果是異步電路,那么處理方法如下:
A. 確認(rèn)做了異步處理。對于數(shù)據(jù),則是通過異步FIFO來做異步處理;如果是控制信號,則要經(jīng)過打兩拍來處理。
B. 確認(rèn)做了異步處理后,仍然會報“時序違例”的。這個時候,可以該路徑設(shè)置成set false path,不用再檢查。
4. 同步電路下,具體處理如下:
A. 查看兩個寄存器點(diǎn)之間,經(jīng)過了多少加法器、乘法器、除法器等。
B. 對于除法器,要特別留意,一般是1個時鐘計(jì)算不完的。那么可以 a.想辦法不用除法;b. 通過使能信號控制獲取除法器結(jié)果的時間。
C. 對于乘法器和加法器,或者其他組合電路較多的。想辦法分隔成流水線來實(shí)現(xiàn)。可以參考MDY 流水線的內(nèi)容。
5. 如果是IP核的違例,檢查是否時鐘不滿足IP核的要求。如果沒問題,就不用管。
6. 如果是ILA等在線調(diào)試工具路線的違例,則一般不用處理。
7. 如果是線延時太長的,可以嘗試打一拍處理。即A->B的線太長,可以打一拍,變成A->C->B,這樣線延時就小了。
審核編輯:湯梓紅
-
fifo
+關(guān)注
關(guān)注
3文章
390瀏覽量
43878 -
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30240 -
時序約束
+關(guān)注
關(guān)注
1文章
115瀏覽量
13462
發(fā)布評論請先 登錄
相關(guān)推薦
VIVADO時序約束及STA基礎(chǔ)
時序分析總結(jié)(以SDRAM時序約束為例)
ISE 時序約束
出現(xiàn)時序違例的原因及解決辦法
FPGA中的時序約束設(shè)計(jì)
![FPGA中的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>設(shè)計(jì)](https://file1.elecfans.com//web2/M00/A6/E9/wKgZomUMQTSAK-f9AABQURI8k0Q349.png)
深入了解時序約束以及如何利用時序約束實(shí)現(xiàn)FPGA 設(shè)計(jì)的最優(yōu)結(jié)果
![深入了解<b class='flag-5'>時序</b><b class='flag-5'>約束</b>以及如何利用<b class='flag-5'>時序</b><b class='flag-5'>約束</b>實(shí)現(xiàn)FPGA 設(shè)計(jì)的最優(yōu)結(jié)果](https://file1.elecfans.com//web2/M00/A6/F5/wKgZomUMQX2AfHrWAABNi0vIblQ301.png)
評論