Vivado時序分析方法——report_design_analysis(一)


report_design_analysis可以用來對時序問題的根本原因進行分析,進而尋找合適的時序優化方案,達到時序收斂的目的。

一、分析時序違例路徑

 Vivado工具會優先對最差的路徑進行時序優化,最終並不一定成為critical path。因此分析時序違例路徑時,並不僅僅關注critical 路徑。以下tcl命令可以報告最差的50條setup timing path。    

report_design_analysis -max_paths 50 -setup

 時序報告如下圖所示:

首先關注邏輯延時(Logic Delay)和線延時(Net Delay)根據邏輯延時和線延時的比例不同,路徑分析方向也略有不同。  

1、邏輯延時較長

a)邏輯級數過多(Logic Levels):一般可以修改代碼,增加寄存降低邏輯級數

report_design_analysis -logic_level_distribution -logic_level_dist_paths 5000 -name design_analysis_prePlace
//分析設計中邏輯級數的分布

 通過上述命令可以對設計中的邏輯級數分布進行分析,進而判斷是否存在不滿足時序要求的邏輯級數。報告如下所示,該設計最長邏輯延時為5,推薦最長邏輯級數根據時鍾頻率和器件不同而不同。

如果需要進一步確定邏輯級數最長的路徑可以采用如下命令:

report_timing -name longPaths -of_objects [get_timing_paths -setup -to [get_clocks cpuClk_5] -max_paths 5000 

-filter {LOGIC_LEVELS>=16 && LOGIC_LEVELS<=20}] //篩選cpuClk_5時鍾域邏輯級數在[16,20]之間的路徑

b)存在DONT_TOUCH或者MARK_DEBUG等約束,阻礙工具進行邏輯優化

c)路徑上存在邏輯延時較長的單元,比如DSP和BRAM等

2、線延時較長

a)扇出較大:加max_fanout選項或修改代碼手動復制高扇出信號

 report_high_fanout_nets -fanout_greater_than 50 -max_nets 100

 執行上述tcl命令可以報告扇出大於50的100條最長路徑。

命令生成的報告如上,可以分析fanout和驅動類型,推薦最大fanout與器件和設計頻率相關。

對於較大的fanout,最好改為寄存輸出,如下所示的LUT輸出是不推薦的。

b)物理位置較遠(比如分屬不同的pblock)

c)SSI器件是否存在跨die信號

d)擁塞引起走線不正常

一般可以通過device視圖中觀察,如果走線路徑比較扭曲,明顯不是最優路徑,可以考慮是由於擁塞引起,需要進一步分析該區域的congestion程序

 二、經驗總結

1、時序分析應該貫穿整個綜合實現流程,綜合后就可以采用report_design_analysis命令對扇出、邏輯級數等進行分析,增加迭代速度;

2、優先采用default策略進行實現,可以避免工具過多的優化設計,更好地暴露時序問題的根本原因;

3、不同器件、不同設計頻率下,推薦最大邏輯級數和扇出不同,例如ultrascale器件,設計頻率大於400MHz時,最長邏輯級數盡量控制在3以下;

4、跨SLR信號建議源和目的模塊各寄存一級

注:參考文檔為《ug906-vivado-design-analysis》。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM