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