作者稱謂:wonder
個人介紹:前瞻性的眼光,和持之以恆的學習
微信公眾號:數字晶片實驗室
純粹的單時鐘同步設計是一種奢望。大部分的ASIC設計都由多個異步時鐘驅動,並且對數據信號和控制信號都需要特殊的處理,以確保設計的魯棒性。
大多數學校的課程任務都是完全同步(單時鐘)的邏輯。在真正的ASIC設計領域,單時鐘設計非常少。
亞穩態
上圖顯示了在一個時鐘域中生成的信號被採樣時發生的同步故障,因為數據變化太接近另一個時鐘域的時鐘信號的上升沿。
同步失敗是由於亞穩態在下一次採樣時還未收斂到穩定狀態引起的。下圖是亞穩態在整個設計中繼續傳播的事例
設計中使用的每個觸發器都具有指定的建立(時鐘上升沿之前數據必須保持不變)和保持(時鐘上升沿之後數據必須保持不變)時間。由建立和保持時間指定的時間窗口保證數據信號變化不會太接近時鐘信號的採樣時間,從而防止設計變成亞穩態。
同步器
同步器是對異步信號進行採樣並同步到採樣時鐘的模塊。
數字設計人員使用的最常見的同步器是兩級觸發器同步器,如下圖所示
第一個觸發器將異步輸入信號採樣到新的時鐘域並等待一個完整的時鐘周期,以使得階段1輸出信號上的亞穩態衰減。然後對階段1信號進行採樣進入階段2,此時階段2信號是一個穩定有效的信號,並且同步到了新的時鐘域。
理論上,在階段1信號被採樣時,也可能仍然是亞穩態,使得階段2信號也變為亞穩態。
平均故障間隔時間(MTBF)是包括用於產生數據和採樣數據的時鐘頻率等多個變量的函數。
對於大多數情況,兩個觸發器同步器足以消除所有可能的亞穩態。
靜態時序分析
靜態時序分析是驗證設計中的每個信號路徑是否滿足所需時序要求的過程。靜態時序分析不是用於驗證設計的功能,只驗證設計是否符合時序目標。從理論上講,時序驗證可以通過運行完備的布局布線之後的門級仿真來實現,其中利用SDF文件反標了實際的延時值。這通常被稱為動態時序驗證。
靜態時序分析與動態時序驗證相比有三個主要優點:(1)靜態時序分析工具可以驗證任何兩個時序器件之間的每條路徑,(2)靜態時序分析不需要生成任何測試向量,(3)靜態時序分析工具比動態時序驗證快幾個數量級。
對具有異步時鐘的模塊進行時序分析是不準確的,並且大部分都是毫無價值的,因為異步時鐘之間的時序關係總是在變化。因此,靜態時序分析工具必須檢查異步時鐘之間的無限數量的相位關係。
事實是,我們可以假設一個時鐘域傳遞到另一個時鐘域的信號總是會違反時序器件上的建立時間和保持時間。
這就是為什麼需要同步器來緩解信號從一個時鐘域傳遞到另一個時鐘域時亞穩態問題的原因。
對於具有兩個或更多異步時鐘的RTL模塊,設計人員需要通過「setting false paths」來指示靜態時序分析工具忽略從一個時鐘域到另一個時鐘域的信號路徑的時序檢查。
除非遵守接下來的指南,異步時鐘分析將會是一項單調乏味且容易出錯的工作。
時鐘命名約定
指南:使用時鐘命名約定來識別設計中每個信號的時鐘源。
原因:命名約定可幫助所有團隊成員識別設計中每個信號的時鐘域,還可以使用腳本中的正則表達式來對信號進行分組,以便更容易地進行時序分析。
每個設計團隊都有自己的時鐘命名約定。例如, uClk前綴標誌微處理器時鐘,vClk前綴標誌視頻時鐘,dClk前綴標誌顯示時鐘。
每個信號都與設計中的一個時鐘域同步,所以每個信號名稱必須包含一個標識該信號時鐘域的前綴字符。任何屬於uClk時鐘域的信號都會有u前綴,例如uaddr,udata,uwrite等。任何屬於vClk時鐘域的信號都會有一個v-prefix,例如vdata,vhsync,vframe等。設計中其他時鐘域中的信號命名都是用類似的方式命令。
命名約定對設計團隊的生產力有很大貢獻。使用這種技術,ASIC設計團隊的任何工程師都可以輕鬆識別任何時鐘域的信號,因此設計團隊中存在更少的混淆。
設計劃分
指南:每個模塊只允許一個時鐘。
原因:在單時鐘模塊上更容易實現靜態時序分析和創建綜合腳本。
指南:為從一個時鐘域傳遞到另一個時鐘域的每組信號創建一個同步器模塊。
原因:信號從一個時鐘域傳遞到另一個時鐘域都會有建立時間和保持時間的問題。
綜合腳本和時序分析
遵循之前的準則,只允許每個模塊只有一個時鐘驅動,進入異步時鐘域的信號都需要經過同步器同步。
這時,多時鐘域的綜合現在變成了時序路徑分組問題,識別false path然後執行最小-最大時序分析。
分組
將所有非同步器模塊根據時鐘域進行分組。每個時鐘域內的邏輯都是同步設計。
識別false path
通常,只有同步器模塊的輸入需要"set_false_path"命令。如果時鐘前綴使用了前面的命名方案,然後可用通配符輕鬆地識別所有異步輸入。
例如,sync_u2v 模塊的所有輸入應以字母"u"開頭的。以下 dc_shell 命令足以設置時序分析中的相關虛假路徑:
set_false_path-from { u* }
執行最小-最大時序分析
每個時鐘域的模塊現在都是一個完全同步的設計。Design Compiler或 Prime Time等工具,可用於執行最小-最大時序分析,驗證setup time和hold time時序是否為例。
參考資料
《Synthesis and Scripting Techniques for Designing MultiAsynchronous ClockDesigns》
大同學吧,是全國100+重點高校IT電子類等理工科大學生都在關注的校招、內推、實習的求職服務平臺,提供海量網際網路及半導體行業實習、校招等招聘信息,免費分享面經筆經、求職內推、行業乾貨,助力學子順利拿下理想offer!!我們歡迎任何形式的合作,發布招聘信息,請添加微信號:lgsdt188。
每日學習1個新知識,讓好的習慣成就更優秀的你!