時序路徑分析是sta中非常重要的乙個部分,任何一條時序路徑都是由下面的三條路徑構成的:
當設計較為簡單,不涉及多時鐘域的情況下,destination clock也來自於source clock。由source clock發起的資料啟動時鐘邊沿我們稱之為launch edge,反之由destination clock產生的捕獲資料時鐘沿稱之為capture edge。
在了解了這些基礎知識後我們就可以開始進行建立時間分析和保持時間分析了(setup and hold analysis)。
setup and hold analysis中有乙個重要的引數slack (俺不知道這個中文怎麼翻譯,鬆弛度量?),slack指的就是資料需要的時間和資料到達時間之間的差值,當setup slack和hold slack均為正數的時候,說明滿足ff的時序要求,資料能夠在兩個ff之間安全的傳輸,而不會產生亞穩態現象。
為了簡單起見,這裡分析單條時鐘路徑,如下圖所示:
資料在第乙個時鐘週期從ff1傳送出去並第二個時鐘週期被ff2捕獲,這裡的data arrival time即時鐘launch edge的時間t_launch,也就是時鐘到達ff1的c埠需要的時間,加上源時鐘的路徑延遲,即c到q端需要的時間t_clk2q,在加上資料的傳播延遲t_datapath:
data require time即clk到達ff2所需要的時間t_capture加上1clk_period的時間,在減去ff2的建立時間t_setup:
此時的setup slack只要滿足:
即可滿足setup check。
同樣的,資料在到達後需要保持一段時間,即在捕獲沿有效後儲存一段時間,由上圖可知,
data arrival time是和之前相同的,這裡的data require time 為捕獲沿的延時t_capture 加上 ff2的保持時間t_hold:
此時要保證時序要求需要滿足:
至於 recover和removal check和上面的setup and hold check類似,不同之處在於其同樣適用於非同步復位和清零訊號。
[1]劉峰. 積體電路靜態時序分析與建模[m]. 機械工業出版社, 2016.
[2] ug903-vivado-using-constraints
sqlite解決中文路徑問題
sqlite解決中文路徑問題,以前研究sqlite時候遇到的中文路徑問題的解決方法 ansistring cb中的字串類,其它編譯器用std string替換即可.multibytetowidechar是windows api ansistring filename intstrsize filen...
git svn 解決中文路徑名亂碼
windows下,git svn clone乙個版本庫,如果目錄有中文,就會出現亂碼情況,導致clone失敗,解決方法如下 1 使用git svn init 版本庫位址 初始化版本庫 2 在.git config檔案下,追加 svn pathnameencoding gbk 3 在目錄中,使用git...
git svn 解決中文路徑名亂碼
windows下,git svn clone乙個版本庫,如果目錄有中文,就會出現亂碼情況,導致clone失敗,解決方法如下 1 使用git svn init 版本庫位址 初始化版本庫 2 在.git config檔案下,追加 svn pathnameencoding gbk 3 在目錄中,使用git...