vivado xdc約束基礎知識12:VIVADO時序分析練習(synthesis及implementation時序優化策略選擇)
在xdc中增加時鐘約束
create_clock -period 10.000 -name clk_100 -waveform {0.000 5.000} [get_ports i_clk_100]
create_clock -period 5.000 -name clk_200 -waveform {0.000 2.500} [get_ports i_clk_200]
時序分析在FPGA設計中是分析工程很重要的手段,時序分析的原理和相關的公式小編在這裡不再介紹,這篇文章是小編在練習VIVADO軟體時序分析的筆記,小編這裡使用的是18.1版本的VIVADO。
這次的練習選擇的是ZYNQ的晶片,原本工程是工作在100MHz的時鐘,但是作為練習,我們可以把時鐘調到一個極限的程度來進行優化。
首先,開啟一個工程,更改一下時鐘頻率,使得工程能夠有一些時序問題,我們再通過時序分析的方法對它進行優化。我們這裡把原本的100M時鐘改成了200M時鐘,具體步驟如下:
- 一
- 二:通過report clock可以檢視全域性時鐘樹的情況
-
三:通過report timing summary可以看到出現了12個時序問題,總的時序問題達到9個ns多,說明時序問題已經比較糟糕了
-
四:在timing窗口裡面可以檢視相關的時序違例資訊,這裡只顯示了10個,可以在report timing summary中選擇要檢視的個數,比如選擇100個
-
五:我們可以開啟setting ->synthesis,更改strategy裡面VIVADO提供的優化strategy來進行相關的優化,不同的strategy對應不同的綜合模式
也可以在design runs裡面,右鍵點選相應的sunth->change run settings來修改不同的綜合方案
-
六:這裡我們選擇Flow_PerfOptimized_high來進行綜合(也可以一個一個的嘗試),綜合完成之後,可以看到,違例的現象優化到了8條,總的違例時間減少了1ns。
-
七:小編在嘗試各種綜合方案之後,發現並不能夠優化很好,所以我們開始進行下一步操作——Run Implementation,看看通過Implementation VIVADO能夠把時序問題優化到什麼程度。
完成佈局佈線之後,可以看到先前的時序問題通過佈局佈線已經被優化了,現在沒有了時序問題,但是最差的餘量只有0.152ns,這個結果並不是很理想。
- 八:通過檢視時序路徑詳情,可以看到時序的餘量很不理想
那麼我們可以通過修改Implementation的方案來進行優化,在settings裡面找到Implementation的strategy,選擇不同的方案進行嘗試
- 九:這裡我們選擇Performance Explore進行嘗試,可以看到通過更改Implementation的strategy,時序被優化了,最差的餘量達到了0.556ns,比之前更好了,但是似乎還可以再進行優化,需要不斷的嘗試,從而找到最優的結果。
-
十:在synthesis的strategy和Implementation的strategy裡面可以看到其他的一些選項,都可以嘗試,比如在Implementation的strategy裡面有一個Flow quick的模式,選擇Flow quick模式對比之前的模式可以發現,VIVADO在這個模式下進行佈局佈線會快很多,但是時序也變的一塌糊塗。小編認為這種模式可以在一些比較大的工程裡,比較趕時間的情況下嘗試使用。
-
十一:同樣的,我們還可以通過report power來檢視功耗情況,並通過更改一些策略進行優化,其他的一些功能小編也在探索中。