現(xiàn)在的硬件設(shè)計(jì)中,大量的時(shí)鐘之間彼此相互連接是很典型的現(xiàn)象。為了保證Vivado優(yōu)化到關(guān)鍵路徑,我們必須要理解時(shí)鐘之間是如何相互作用,也就是同步和異步時(shí)鐘之間是如何聯(lián)系。
同步時(shí)鐘是彼此聯(lián)系的時(shí)鐘。例如,由MMCM或PLL生成的兩個(gè)相同周期的時(shí)鐘是典型的同步時(shí)鐘。如果MMCM或PLL生成了不同周期的時(shí)鐘,那么我們最好把他們當(dāng)作異步時(shí)鐘處理,需要用到相應(yīng)的同步技術(shù)。你可以通過(guò)運(yùn)行report_clock_interaction生成報(bào)告,然后看報(bào)告中的“Path Req (WNS)”列、“Clock Pair Classification”列和 “Clock Pair Classification”列可以容易的辨別出同步時(shí)鐘。下面是3個(gè)場(chǎng)景,你需要使用合適的時(shí)鐘約束處理異步時(shí)鐘之間的關(guān)系。
1. 如果時(shí)鐘互聯(lián)報(bào)告有很多(或者一個(gè))紅色的"Timed (unsafe)" 或者還有桔色的"Partial False Path (unsafe)"方框,那你應(yīng)該是沒(méi)有正確地對(duì)異步時(shí)鐘約束。如果你的設(shè)計(jì)中有大量的跨時(shí)鐘域的異步時(shí)鐘,那么你需要對(duì)那些時(shí)鐘互聯(lián)約束。
2. 在時(shí)鐘互聯(lián)報(bào)告中看"Clock Pair Classification" 和 "Inter-Clock Constraints"這兩列。如果時(shí)鐘對(duì)類型是"No Common Clock" 或者 "No Common Period"或者Inter-clock約束顯示"Timed (unsafe)",就要把這種互聯(lián)當(dāng)作異步時(shí)鐘。
3. 如果“Path Requirement (WNS)”列顯示時(shí)序非常緊,典型的是小于1ns,或者“Inter-Clock Constraints”列標(biāo)記為時(shí)序“Unsafe”,或者“Partial False Path (unsafe)”,那么你需要把這種時(shí)鐘互聯(lián)看作異步時(shí)鐘。
如果“WNS Path Requirement (ns)”這一列的值是合理的(>1 ns), 并且"Inter-Clock Constraints”是滿足的,同時(shí),“Clock Pair Classification”是“干凈”的,那么這樣的時(shí)鐘互聯(lián)可以被看作是同步的,你不需要添加任何時(shí)序約束。時(shí)序工具會(huì)自動(dòng)的把那些路徑當(dāng)作同步路徑處理。
為了正確約束跨時(shí)鐘域的路徑,需要考慮以下4個(gè)方面:
1. 如果兩個(gè)時(shí)鐘之間沒(méi)有路徑,在兩個(gè)時(shí)鐘之間可以簡(jiǎn)單的使用set_clock_groups 或者set_false_path約束
2. 如果跨時(shí)鐘域路徑都是一位的,那么你可以在兩個(gè)時(shí)鐘之間使用set_clock_groups 或者 set_false_path。
3. 如果路徑都是多位的路徑,你需要考慮延遲和數(shù)據(jù)位的偏移,然后使用set_max_delay –datapath_only 和set_bus_skew約束。
4. 如果在兩個(gè)時(shí)鐘域之間存在單位和多位混合的跨時(shí)鐘域路徑,那么對(duì)于單位的跨時(shí)鐘域路徑要明確的對(duì)每一條路徑設(shè)置偽路徑來(lái)約束,對(duì)于多位的跨時(shí)鐘域路徑,使用set_max_delay –datapath_only 和 set_bus_skew約束。
如果時(shí)鐘是同步的,不需要任何約束。vivado的靜態(tài)時(shí)鐘分析工具會(huì)自動(dòng)的設(shè)定路徑的時(shí)序。
-
異步時(shí)鐘
+關(guān)注
關(guān)注
0文章
17瀏覽量
9417
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論