布線延遲過大除了擁塞導(dǎo)致之外,還可能是其他因素。下圖顯示了降低布線延遲的另一流程(因其他因素導(dǎo)致布線延遲過大的處理流程)。
圖片來源: page 7, ug1292
首先,通過report_desigan_analysis分析路徑特征。有時(shí)還需要結(jié)合report_utilization和report_failfast兩個(gè)命令。
第1步:分析路徑的Hold Fix Detour是否大于0ps?
HoldFix Detour是工具為了修復(fù)保持時(shí)間違例而產(chǎn)生的繞線(該數(shù)值在design analysis報(bào)告中顯示,如果沒有顯示,可在報(bào)告標(biāo)題欄內(nèi)點(diǎn)擊右鍵,選擇HoldFix Detour)。如果該數(shù)值大于0,就有可能造成建立時(shí)間違例。這時(shí)其實(shí)應(yīng)關(guān)注的是該路徑對應(yīng)的保持時(shí)間報(bào)告,診斷為什么工具會(huì)通過繞線修復(fù)保持時(shí)間違例。
第2步:違例路徑的各個(gè)邏輯單元是否存在位置約束?
通常,設(shè)計(jì)中不可避免地會(huì)有一些物理約束,如管腳分配。除此之外,還可能會(huì)有其他位置約束,如通過create_macro或Pblock創(chuàng)建的位置約束。如果設(shè)計(jì)發(fā)生改變,就需要關(guān)注這些位置約束是否仍然合理,尤其是那些穿越多個(gè)Pblock的路徑。
第3步:違例路徑是否穿越SLR?
如果目標(biāo)芯片為多die芯片,那么在設(shè)計(jì)初期就要考慮到以下幾個(gè)因素,以改善設(shè)計(jì)性能。
在設(shè)計(jì)的關(guān)鍵層次邊界上以及跨die路徑上插入流水寄存器,尤其是跨die路徑,這些寄存器是必需的;
檢查每個(gè)SLR的資源利用率是否合理,這可通過report_failfast –by_slr實(shí)現(xiàn)。-by_slr選項(xiàng)只能在place_design或route_design生成的dcp中使用,這也不難理解,畢竟在布局階段工具才會(huì)把設(shè)計(jì)單元向相應(yīng)的SLR內(nèi)放置;
每個(gè)die的設(shè)計(jì)可以看作一個(gè)頂層,因此,要對每個(gè)頂層指定一個(gè)die,以確保相應(yīng)的設(shè)計(jì)單元被正確放置在目標(biāo)die內(nèi)。這可通過屬性USER_SLR_ASSIGNMENT實(shí)現(xiàn)(Vivado 2018.2開始支持);
如果上述屬性未能正確工作,可直接畫Pblock進(jìn)行約束;
在布局或布線之后如果仍有時(shí)序違例,可嘗試使用phys_opt_design -slr_crossing_opt。
第4步:唯一控制集百分比是否大于7.5%?
唯一控制集個(gè)數(shù)可通過report_failfast查看。如果控制集百分比超過7.5%,可通過如下方法降低控制集。
關(guān)注MAX_FANOUT屬性:
移除時(shí)鐘使能、置位或復(fù)位信號的MAX_FANOUT屬性。這是因?yàn)樵搶傩詴?huì)復(fù)制寄存器以降低扇出,但同時(shí)也增加了控制集;
在Synthesis階段:
-提高–control_set_opt_threshold的數(shù)值,可使工具將更多同步控制信號搬移到數(shù)據(jù)路徑,從而降低控制集;
-也可采用Block Level Synthesis技術(shù),對指定模塊設(shè)置該數(shù)值;
在opt_design階段:
-control_set_merge
-merge_equivalent_drivers
這兩個(gè)選項(xiàng)可幫助降低控制集。但這兩個(gè)選項(xiàng)不能與-directive同時(shí)使用,所以如果是工程模式下,可將其放置在Hook文件中(Tcl.pre或Tcl.post)。非工程模式下,可在執(zhí)行完-directive之后,再次執(zhí)行這兩個(gè)選項(xiàng);
關(guān)注低扇出信號:
對于低扇出的控制信號(同步使能、同步置位/同步復(fù)位),可對其連接的寄存器設(shè)置CONTROL_SET_REMAP屬性,將控制信號搬移到數(shù)據(jù)路徑上,從而降低控制集。
第5步:嘗試其他實(shí)現(xiàn)策略
Vivado提供了多種實(shí)現(xiàn)策略。因此,嘗試不同實(shí)現(xiàn)策略是達(dá)到時(shí)序收斂的一個(gè)手段。
嘗試多種place_design和phys_opt_design,這可通過設(shè)置不同的-directive實(shí)現(xiàn);
嘗試使用過約束(過約最大0.5ns),這可通過設(shè)置Clock Uncertainty實(shí)現(xiàn)。需要用到set_clock_uncertainty;
對關(guān)鍵時(shí)鐘域下的路徑設(shè)置更高的優(yōu)先級,使工具對其優(yōu)先布局布線,這可通過命令group_path實(shí)現(xiàn);
嘗試使用增量布局布線,繼承之前好的布局布線結(jié)果,并縮短編譯時(shí)間。
-
寄存器
+關(guān)注
關(guān)注
31文章
5301瀏覽量
119868 -
布線
+關(guān)注
關(guān)注
9文章
763瀏覽量
84276
原文標(biāo)題:深度解析ug1292(7)
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論