當前位置:
首頁 > 科技 > 如何正確的約束時鐘

如何正確的約束時鐘

作者:balacha

現在的硬體設計中,大量的時鐘之間彼此相互連接是很典型的現象。為了保證Vivado優化到關鍵路徑,我們必須要理解時鐘之間是如何相互作用,也就是同步和非同步時鐘之間是如何聯繫。

同步時鐘是彼此聯繫的時鐘。例如,由MMCM或PLL生成的兩個相同周期的時鐘是典型的同步時鐘。如果MMCM或PLL生成了不同周期的時鐘,那麼我們最好把他們當作非同步時鐘處理,需要用到相應的同步技術。你可以通過運行report_clock_interaction生成報告,然後看報告中的「Path Req (WNS)」列、「Clock Pair Classification」列和 「Clock Pair Classification」列可以容易的辨別出同步時鐘。下面是3個場景,你需要使用合適的時鐘約束處理非同步時鐘之間的關係。

1. 如果時鐘互聯報告有很多(或者一個)紅色的"Timed (unsafe)" 或者還有桔色的"Partial False Path (unsafe)"方框,那你應該是沒有正確地對非同步時鐘約束。如果你的設計中有大量的跨時鐘域的非同步時鐘,那麼你需要對那些時鐘互聯約束。

2. 在時鐘互聯報告中看"Clock Pair Classification" 和 "Inter-Clock Constraints"這兩列。如果時鐘對類型是"No Common Clock" 或者 "No Common Period"或者Inter-clock約束顯示"Timed (unsafe)",就要把這種互聯當作非同步時鐘。

3. 如果「Path Requirement (WNS)」列顯示時序非常緊,典型的是小於1ns,或者「Inter-Clock Constraints」列標記為時序「Unsafe」,或者「Partial False Path (unsafe)」,那麼你需要把這種時鐘互聯看作非同步時鐘。

如果「WNS Path Requirement (ns)」這一列的值是合理的(>1 ns), 並且"Inter-Clock Constraints」是滿足的,同時,「Clock Pair Classification」是「乾淨」的,那麼這樣的時鐘互聯可以被看作是同步的,你不需要添加任何時序約束。時序工具會自動的把那些路徑當作同步路徑處理。

如何正確的約束時鐘

為了正確約束跨時鐘域的路徑,需要考慮以下4個方面:

1. 如果兩個時鐘之間沒有路徑,在兩個時鐘之間可以簡單的使用set_clock_groups 或者set_false_path約束

2. 如果跨時鐘域路徑都是一位的,那麼你可以在兩個時鐘之間使用set_clock_groups 或者 set_false_path。

3. 如果路徑都是多位的路徑,你需要考慮延遲和數據位的偏移,然後使用set_max_delay –datapath_only 和set_bus_skew約束。

4. 如果在兩個時鐘域之間存在單位和多位混合的跨時鐘域路徑,那麼對於單位的跨時鐘域路徑要明確的對每一條路徑設置偽路徑來約束,對於多位的跨時鐘域路徑,使用set_max_delay –datapath_only 和 set_bus_skew約束。

如果時鐘是同步的,不需要任何約束。vivado的靜態時鐘分析工具會自動的設定路徑的時序。

作者簡介

Balachander Krishnamurthy是SDSoC的高級產品營銷經理。 他負責賽靈思Vivado SDx設計軟體的產品規劃,營銷執行等。 他擁有聖何塞州立大學電氣工程碩士學位。 他曾在SUN系統公司和Altera工作多年,擔任驗證,RTL設計,首次晶元和電路板調試以及ASIC產品經理等多個角色。 他在GPU,CPU,ASIC和FPGA行業擁有超過17年的經驗。 他目前的工作重點是關注FPGA的綜合,實現和時序收斂設計。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 電子創新設計 的精彩文章:

數據披露:WAGO萬可公布2017年財報,增長勢頭強勁
創新驅動科技 COMPUTEX 2018連結全球初創團隊

TAG:電子創新設計 |