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