時序不滿足約束,會導(dǎo)致以下問題:
? 編譯時間長的令人絕望
? 運行結(jié)果靠運氣——時對時錯
導(dǎo)致時序問題的成因及其發(fā)生的概率如下表:
由上表可見,造成時序問題的主要原因除了約束不完整,就是路徑問題,本文就時序路徑分析問題作一介紹:
1、時鐘網(wǎng)絡(luò)分析
時鐘網(wǎng)絡(luò)反映了時鐘從時鐘引腳進(jìn)入FPGA后在FPGA內(nèi)部的傳播路徑。
報告時鐘網(wǎng)絡(luò)命令可以從以下位置運行:
① Vivado?IDE中的Flow Navigator
② Tcl命令:report_clock_networks -name {network_1}
報告時鐘網(wǎng)絡(luò)提供設(shè)計中時鐘樹的樹視圖。 如下圖。每個時鐘樹顯示從源到端點的時鐘網(wǎng)絡(luò),端點按類型排序。
時鐘樹:
? 顯示由用戶定義或由工具自動生成的時鐘。
? 報告從I / O端口加載的時鐘。
? 可用于查找驅(qū)動其他BUFGs的BUFGs。
? 顯示驅(qū)動非時鐘負(fù)載的時鐘。
溫馨提醒:完整的時鐘樹僅在報告的GUI形式中詳細(xì)說明。此報告的文本版本僅顯示時鐘根的名稱。
以vivado自帶的例子wavegen為例。點擊Synthesis的Report CLock Networks如下圖所示:
時鐘clk_pin_p從輸入引腳輸入之后,經(jīng)過IBUFDS,再通過MMCM生成時鐘,同時顯示了各個時鐘的頻率。如果我們未添加時鐘約束,報告將顯示Unconstrained(未約束的時鐘,root clock).可以選中未約束的時鐘右擊選擇Create Clock創(chuàng)建時鐘。
如下圖所示:
2、 跨時鐘域路徑分析
若要查看跨時鐘域路徑分析報告,可選擇以下內(nèi)容之一來查看:
? Reports > Timing > Report Clock Interaction
? Flow Navigator > Synthesis > Report Clock Interaction
? Flow Navigator > Implementation > Report Clock Interaction
? Tcl command: report_clock_interaction -name clocks_1
如下圖所示,點擊Synthesis–>Report Clock Interaction.
跨時鐘域路徑分析報告分析從一個時鐘域(源時鐘)跨越到另一個時鐘域(目標(biāo)時鐘)的時序路徑??鐣r鐘域路徑分析報告有助于識別可能存在數(shù)據(jù)丟失或亞穩(wěn)態(tài)問題的情況.
運行“Report Clock Interaction”命令后,結(jié)果將在“時鐘交互”窗口中打開。如下圖所示,時鐘交互報告顯示為時鐘域矩陣,源時鐘位于垂直軸,目標(biāo)時鐘位于水平軸。
No Path --用黑色框來表示:沒有從源時鐘到目標(biāo)時鐘的定時路徑。在這種情況下,沒有時鐘交互,也沒有任何報告。
Timed – 用綠色框來表示:源時鐘和目標(biāo)時鐘具有同步關(guān)系,并安全地被約束在一起。當(dāng)兩個時鐘具有共同的主時鐘和簡單的周期比時,該狀態(tài)由定時引擎確定。
User Ignored Paths–用深藍(lán)色框來表示:用戶定義的假路徑或時鐘組約束涵蓋從源時鐘到目標(biāo)時鐘的所有路徑。
Partial False Path–用淡藍(lán)色框來表示:用戶定義的偽路徑約束覆蓋了從源時鐘到目標(biāo)時鐘的一些時序路徑,其中源時鐘和目標(biāo)時鐘具有同步關(guān)系。
Timed (Unsafe)–用紅色框來表示:源時鐘和目標(biāo)時鐘具有異步關(guān)系。在這種情況下,沒有共同的主時鐘或沒有可擴(kuò)展的時段。
Partial False Path (Unsafe)–用橘橙色框來表示:此類別與Timed(Unsafe)相同,只是由于偽路徑異常,從源時鐘到目標(biāo)時鐘的至少一條路徑被忽略。
Max Delay Datapath Only --用紫色框來表示:set_max_delay -datapath_only約束涵蓋從源時鐘到目標(biāo)時鐘的所有路徑。
Report_clock_interaction呈現(xiàn)的報告并不是根據(jù)時序約束生成的,但是和時序約束有關(guān),它反映出用戶定義的偽路徑。
以wavegen工程為示例,點擊Report Clock Interaction,如下圖所示:
ID: 正在顯示的源/目標(biāo)時鐘對的數(shù)字ID。
Source Clock: 路徑源時鐘域。
Destination Clock: 路徑終端的時鐘域。
Edges (WNS):用于計算最大延遲分析(設(shè)置/恢復(fù))的最差裕度的時鐘邊緣。
WNS (Worst Negative Slack):為跨越指定時鐘域的各種路徑計算的最差裕度時間。負(fù)裕量時間表示路徑違反了所需的建立(或恢復(fù))時間的問題。
TNS (Total Negative Slack):屬于跨越指定時鐘域的路徑的所有端點的最差松弛違規(guī)的總和。
Failing Endpoints (TNS): 交叉路徑中的端點數(shù)量無法滿足時序要求。違規(guī)的總和對應(yīng)于TNS。
Total Endpoints (TNS):交叉路徑中端點的總數(shù)。
Path Req (WNS):定時路徑要求對應(yīng)于WNS列中報告的路徑。如果兩個時鐘中的至少一個時鐘的上升沿和下降沿都有效,則在任何時鐘對之間可能存在若干路徑要求,或者在兩個時鐘之間的路徑上應(yīng)用了一些時序異常。本專欄中報告的值并不總是最具挑戰(zhàn)性的要求。
Clock Pair Classification: 提供有關(guān)公共節(jié)點和時鐘對之間的公共周期的信息。從最高優(yōu)先級到最低優(yōu)先級:忽略,虛擬時鐘,無公共時鐘,無公共周期,部分公共節(jié)點,無公共節(jié)點和清除。
Inter-Clock Constraints: 顯示源時鐘和目標(biāo)時鐘之間所有路徑的約束摘要。
-
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66470 -
時序路徑
+關(guān)注
關(guān)注
0文章
12瀏覽量
1397
發(fā)布評論請先 登錄
相關(guān)推薦
評論