FPGA開(kāi)發(fā)過(guò)程中,vivado和quartus等開(kāi)發(fā)軟件都會(huì)提供時(shí)序報(bào)告,以方便開(kāi)發(fā)者判斷自己的工程時(shí)序是否滿足時(shí)序要求。
本文將詳細(xì)介紹如何讀懂Vivado時(shí)序報(bào)告,包括報(bào)告的基本結(jié)構(gòu)和如何分析報(bào)告。
一、新建工程
使用vivado創(chuàng)建一個(gè)新的工程,添加verilog代碼文件,內(nèi)容如下:
module xdc_test
(
input wire clk,
input wire reset,
output reg [3:0] data_cnt
);
always @(posedge clk or posedge reset)begin
if(reset)
data_cnt <= 'b0;
else
data_cnt <= data_cnt + 1'b1;
end
endmodule
創(chuàng)建xdc文件,并添加時(shí)序約束:
create_clock -period 6.6667 -name clk -waveform {0.000 5.000} [get_ports clk]
如果需要了解時(shí)序約束如何添加,可以看下上一篇文章《FPGA時(shí)序約束--實(shí)戰(zhàn)篇(Vivado添加時(shí)序約束)》
點(diǎn)擊“generate bitestream”,開(kāi)始綜合、布線和生成bit文件。
綜合完成后,可以在“Design run”界面,看到整個(gè)工程時(shí)序滿足情況,主要資源消耗、編譯時(shí)間等等信息,如下圖。
二、時(shí)序報(bào)告分析
1、打開(kāi)時(shí)序報(bào)告界面
(1)方法1
點(diǎn)擊“實(shí)現(xiàn)implementation”下的“report timing summary”選項(xiàng)。
彈出時(shí)序顯示設(shè)置界面,如下圖所示,點(diǎn)擊OK。
(2)方法2
點(diǎn)擊功能欄“∑”,在“Timing”界面下,點(diǎn)擊“Implementation Timing Report”。
2、時(shí)序報(bào)告界面介紹
Timing界面左側(cè)是時(shí)序信息總覽、時(shí)鐘和時(shí)序路徑分類,右側(cè)是時(shí)序信息總覽詳細(xì)信息,包括Setup、Hold以及Pulse Width檢查最差的各10條路徑。
這里有幾個(gè)重要的參數(shù)信息名稱:
WNS (Worst Negative Slack) :最差負(fù)時(shí)序裕量
TNS(Total Negative Slack) :總的負(fù)時(shí)序裕量 ,也就是負(fù)時(shí)序裕量路徑之和。WHS (Worst Hold Slack) :最差保持時(shí)序裕量
THS (Total Hold Slack) :總的保持時(shí)序裕量,也就是負(fù)保持時(shí)序裕量路徑之和。
這些參數(shù)如果為負(fù)或者顏色變?yōu)榧t色,則表示出現(xiàn)了時(shí)序違例,否則表示時(shí)序正常。
3、時(shí)序路徑分析
點(diǎn)擊時(shí)序報(bào)告界面中WNS的數(shù)值,如上面報(bào)告中的“5.875ns”,則會(huì)直接跳轉(zhuǎn)到時(shí)序最差路徑的界面。
主要參數(shù)信息含義如下:
slack:時(shí)間裕量
level:邏輯級(jí)數(shù),表示兩個(gè)寄存器之間存在的組合邏輯層數(shù)
fanout:扇出數(shù),表示一個(gè)信號(hào)驅(qū)動(dòng)的所有接收端的數(shù)量
from:路徑起始位置,包含HDL代碼中的起始寄存器
to:路徑結(jié)束位置,包含HDL代碼中的起始寄存器的下一級(jí)寄存器
Total Delay:整個(gè)路徑的總體延時(shí)
Logic Delay:整個(gè)路徑的邏輯延時(shí)
Source Clock:路徑起始寄存器的時(shí)鐘
Destination Clock:路徑終點(diǎn)寄存器的時(shí)鐘
Requirement:時(shí)鐘周期,即路徑延時(shí)最大值
如果slack出現(xiàn)紅色值,且為負(fù)值,則表示出現(xiàn)了時(shí)序違例。
另外通過(guò)看level和fanout,可以看到路徑時(shí)序違例的原因,level值過(guò)大,則表示邏輯層數(shù)太多,需要考慮將這條路徑對(duì)應(yīng)HDL代碼分成幾拍完成;如果fanout值過(guò)大,則表示該寄存器的扇出過(guò)大。
雙擊任意一條時(shí)序路徑,以“path1”為例,即可進(jìn)入該路徑的時(shí)序具體信息,主要包括summary(總覽)、Source Clock Path(源時(shí)鐘路徑)、Data Path(數(shù)據(jù)路徑)、Destination Clock Path(目的時(shí)鐘路徑)。
這里可以查看到具體的時(shí)序布線情況,以及時(shí)序違例的原因。
三、總結(jié)
時(shí)序報(bào)告是Vivado中必不可少的工具,它可以幫助我們了解電路的時(shí)序性能,并找出潛在的時(shí)序問(wèn)題。通過(guò)分析時(shí)序報(bào)告,我們可以確定關(guān)鍵路徑延遲、slack和每個(gè)信號(hào)路徑的延遲等信息,并找到需要優(yōu)化和調(diào)整的地方。如果存在時(shí)序問(wèn)題,我們可以通過(guò)修改代碼、時(shí)序約束或重新布局/重分配電路來(lái)進(jìn)行優(yōu)化。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618628 -
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124550 -
時(shí)序
+關(guān)注
關(guān)注
5文章
398瀏覽量
37959 -
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68794
發(fā)布評(píng)論請(qǐng)先 登錄
VIVADO時(shí)序約束及STA基礎(chǔ)
一文詳解Vivado時(shí)序約束

vivado:時(shí)序分析與約束優(yōu)化
Vivado下顯示指定路徑時(shí)序報(bào)告的流程
關(guān)于Vivado時(shí)序分析介紹以及應(yīng)用

新Vivado報(bào)告命令的了解
Vivado時(shí)序案例分析之解脈沖寬度違例

VIVADO中時(shí)序報(bào)告中WNS、WHS、TNS、THS有什么含義

如何讀懂時(shí)序分析報(bào)告
Vivado使用進(jìn)階:讀懂用好Timing Report

如何在Vivado中添加時(shí)序約束呢?

如何讀懂FPGA開(kāi)發(fā)過(guò)程中的Vivado時(shí)序報(bào)告?

Vivado時(shí)序問(wèn)題分析
Vivado使用小技巧

評(píng)論