1. 程式人生 > >vivado xdc約束基礎知識12:VIVADO時序分析練習(synthesis及implementation時序優化策略選擇)

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時鐘,具體步驟如下: 

:更改時鐘之後進行綜合,並開啟timing analysis 
1
:通過report clock可以檢視全域性時鐘樹的情況 
2

  • :通過report timing summary可以看到出現了12個時序問題,總的時序問題達到9個ns多,說明時序問題已經比較糟糕了 
    3

  • :在timing窗口裡面可以檢視相關的時序違例資訊,這裡只顯示了10個,可以在report timing summary中選擇要檢視的個數,比如選擇100個 
    4

5

  • :我們可以開啟setting ->synthesis,更改strategy裡面VIVADO提供的優化strategy來進行相關的優化,不同的strategy對應不同的綜合模式 
    6


    也可以在design runs裡面,右鍵點選相應的sunth->change run settings來修改不同的綜合方案 
    7 
    8

  • :這裡我們選擇Flow_PerfOptimized_high來進行綜合(也可以一個一個的嘗試),綜合完成之後,可以看到,違例的現象優化到了8條,總的違例時間減少了1ns。 
    9

  • :小編在嘗試各種綜合方案之後,發現並不能夠優化很好,所以我們開始進行下一步操作——Run Implementation,看看通過Implementation VIVADO能夠把時序問題優化到什麼程度。 
    10

完成佈局佈線之後,可以看到先前的時序問題通過佈局佈線已經被優化了,現在沒有了時序問題,但是最差的餘量只有0.152ns,這個結果並不是很理想。 
11

  • :通過檢視時序路徑詳情,可以看到時序的餘量很不理想 
    12

那麼我們可以通過修改Implementation的方案來進行優化,在settings裡面找到Implementation的strategy,選擇不同的方案進行嘗試 

  • :這裡我們選擇Performance Explore進行嘗試,可以看到通過更改Implementation的strategy,時序被優化了,最差的餘量達到了0.556ns,比之前更好了,但是似乎還可以再進行優化,需要不斷的嘗試,從而找到最優的結果。 
    13

14

  • :在synthesis的strategy和Implementation的strategy裡面可以看到其他的一些選項,都可以嘗試,比如在Implementation的strategy裡面有一個Flow quick的模式,選擇Flow quick模式對比之前的模式可以發現,VIVADO在這個模式下進行佈局佈線會快很多,但是時序也變的一塌糊塗。小編認為這種模式可以在一些比較大的工程裡,比較趕時間的情況下嘗試使用。 
    15

  • 十一:同樣的,我們還可以通過report power來檢視功耗情況,並通過更改一些策略進行優化,其他的一些功能小編也在探索中。 
    16