本小節對時序約束做最終的總結。如圖1所示,前幾節內容依次講述了時序約束的四大步驟。第一是生成時鐘約束;第二是輸入端口約束input delay;第三是輸出端口約束output delay;最后是時序例外。前幾節內容把這些情況都歸納起來,對每種情況仔細劃分,然后按照對應的情況進行時序約束即可。
圖1 時序約束四大步驟
再強調一點,在工程項目開始階段就要設置時鐘約束和生成時鐘約束。時鐘約束又包括輸入時鐘、PLL等衍生時鐘、自己分頻得到的時鐘。每種都有對應的要求和特點,根據需要查找對應的方式去完成約束。
在項目開發過程中,內部實際邏輯都寫完了,并且全部滿足時序要求,仿真沒有問題了,不報告錯誤了,這時再對輸入端口和輸出端口設置相應的約束。比如跟外圍器件的一個設置之類的。這時再去設置input delay 和 output delay。為什么要先保證內部邏輯設計是正確的再對端口進行約束呢?如果在內部時序不滿足的情況下,對輸入端口和輸出端口進行約束了,這時如果出現錯誤,將無法確定是內部時序造成的錯誤,還是端口約束不對造成的錯誤。
input delay 和 output delay 一般有系統同步、源同步等幾種,源同步又有SDR、DDR。雖然總的類型比較多,但是對應實際項目中的一種接口,必定是這其中的一種類型,此時只要按照對應情況去進行設置即可。開發人員確定待約束的輸入信號的硬件接口到底是系統同步還是源同步?如果是源同步,是SDR還是DDR?如果是SDR,是中心對齊還是邊緣對齊的?這樣就可以逐步找到對應的情況進行約束。
而output delay 也是同樣道理,根據實際的接口類型查找相應的約束方法即可。要注意兩點,其一是 input delay 和 output delay 對應的公式是什么,代表什么含義。另外公式中的數據從何處獲取,或者說怎么獲取,只有獲取有效的數據才能進行正確的約束。而且 input delay 約束和output delay 約束其實就是告知綜合軟件一些我們知道而綜合軟件不知道的參數,比如上游或下游芯片接口寄存器的建立時間、保持時間、PCB走線延遲等FPGA之外的數據。上游和下游芯片接口寄存器的建立時間、保持時間是可以通過數據手冊以及示波器測量得到的,而PCB走線延遲也可以估算得到,最后將這些數據綜合考慮成輸入、輸出接口的最大傳輸延遲、最小傳輸延遲告知綜合軟件,綜合軟件就可以根據這些參數對FPGA的時序進行調整,最后生成相應的時序報告。
當時鐘約束、輸入和輸出端口約束都處理完了,沒有問題后,最后做時序例外相關約束。目的是告知綜合軟件某些路徑可能需要多個時鐘周期才能得到正確輸出,或者某些路徑已經人為處理過了,時序是滿足的,綜合軟件不需要對這些路徑進行檢查分析了。其中最重要的就是異步時鐘的處理。
異步時鐘是FPGA里面最多最常用也是最核心的一個部分內容,特別強調一定要做異步處理之后,才能將該路徑force掉,時序例外掉。如果沒做時序處理,就把它例外,排除掉,可能會出現嚴重的錯誤,開發人員還找不到原因,因為錯誤報告被屏蔽掉了。
上面就是時序約束的一個步驟,大家不需要記是怎么樣格式去約束,只要按照的步驟去約束,查找對應的約束類型,然后按照對應要求約束即可,不要去記很多無用的東西,只要把約束類型歸類好就可以了。
假如讀者所在公司要求不一樣,比如說順序不一樣,那就按照公司的要求去做。明德揚是按照前面介紹的步驟去做的,而且是成功的。當然不同的公司,有不同的做法、不同的要求,合理設置即可。
另外假如以后遇到一些情況,在這里面沒有列明的。就需要按照這個表把它歸納到某種方式,補充完整,之后就可以使用了,這個表可以應付絕大部分的場合了。
審核編輯:湯梓紅
-
DDR
+關注
關注
11文章
730瀏覽量
66327 -
時鐘
+關注
關注
11文章
1875瀏覽量
132792 -
時序約束
+關注
關注
1文章
118瀏覽量
13610
發布評論請先 登錄
VIVADO時序約束及STA基礎
FPGA時序約束之衍生時鐘約束和時鐘分組約束
【潘文明至簡設計法】系列連載教程 FPGA時序約束視頻教程
時序約束的步驟分析

評論