《UltraFast 設計方法時序收斂快捷參考指南》提供了以下分步驟流程, 用于根據《UltraFast設計方法指南》( UG949 )中的建議快速完成時序收斂:
1初始設計檢查:在實現(xiàn)設計前審核資源利用率、邏輯層次和時序約束。
2時序基線設定:在每個實現(xiàn)步驟后檢查并解決時序違例,從而幫助布線后收斂時序。
3時序違例解決:識別建立時間違例或保持時間違例的根源,并解決時序違例。
01
初始設計檢查詳細介紹
在賽靈思器件上實現(xiàn)設計,是一個自動化程度相當高的任務。但是,要實現(xiàn)更高的性能、解決時序或布線違例帶來的編譯問題,則是一項復雜且耗時的工作。僅根據簡單的日志消息或由工具生成的實現(xiàn)后時序報告,可能難以明確失敗原因。因此,按步驟進行設計開發(fā)和編譯非常必要,其中就包括復查中間結果,以確保設計能繼續(xù)執(zhí)行下一個實現(xiàn)步驟。
第一步是確保所有的初始設計檢查都已經完成。在下列層次復查檢查結果:
由定制 RTL 構成或者由 Vivado HLS 生成的每個內核。注意:檢查目標時鐘頻率約束是否現(xiàn)實。
與子系統(tǒng)逐一對應的每個主要層級,例如有多個內核、IP 塊和連接邏輯的 Vivado IP integrator 模塊框圖。
如果設計使用布局規(guī)劃約束, 如超級邏輯區(qū)域( SLR )分配或分配給 Pblock 的邏輯,請復查每項物理約束的估算的資源利用率,確保符合資源利用率準則。
02
時序基線設定示例
時序基線設定的目的是,通過在每個實現(xiàn)步驟后分析和解決時序問題,確保設計滿足時序要求。在編譯流程中,盡早糾正設計問題和約束問題能實現(xiàn)更高性能,并帶來更廣泛的影響。通過創(chuàng)建如下中間報告,在進入下一步前復查并解決時序違例:
03
分析建立時間違例流程
設計性能主要由三個因素決定:一、時鐘偏差與時鐘不確定性,主要包括時鐘如何高效實現(xiàn);二、邏輯延遲所涉及到每個時鐘周期內遍歷的邏輯量;三、信號線延遲或布線延遲,如Vivado 如何高效實現(xiàn)設計的布局布線。
使用時序路徑或設計分析報告內的信息,有助于識別時序違例主要由哪些因素引發(fā),以及確定如何迭代提升 QoR。
(提示:如果需要,可在每個步驟后打開 DCP 以生成更多報告,詳細流程請查看完整版指南。)
04
解決保持時間違例的方法
避免保持時間要求為正值
在使用多周期路徑約束放寬建立時間檢查時,需做到:
調整同一路徑上的保持時間檢查,以便在保持時間分析中使用相同的發(fā)送沿和捕獲沿。否則會導致保持時間要求(一個或多個時鐘周期)為正值,無法實序收斂。
指定端點管腳, 而不僅僅是單元或時鐘。例如, 端點單元REGB有三個輸入管腳:C、EN 和 D。只有 REGB/D 管腳需交由多周期路徑例外來約束(時鐘使能(EN)管腳不用),因為 EN 管腳在每個時鐘周期都會發(fā)生改變。如果將約束連接至單元而不是管腳,那么所有有效的端點管腳(包括 EN 管腳)都在約束的考慮范圍內。
在布線前降低 WHS 和 THS
嚴重的估算保持時間違例會增大布線難度, 且并非總能通過route_design解決。布局后phys_opt_design 命令提供多種保持時間修復選項:
在時序元件之間插入反向邊緣觸發(fā)寄存器會將時序路徑分為兩條半周期路徑,從而顯著減少保持時間違例。這種最優(yōu)化只能在不劣化建立時序的情況下執(zhí)行。
插入 LUT 1 緩沖器會導致數(shù)據路徑延遲, 這樣即可減少保持時間違例,而不會造成建立時間違例。