概述
高扇出信號線 (HFN) 是具有大量負(fù)載的信號線。作為用戶,您可能遇到過高扇出信號線相關(guān)問題,因為將所有負(fù)載都連接到 HFN 的驅(qū)動程序需要使用大量布線資源,并有可能導(dǎo)致布線擁塞。鑒于負(fù)載分散,導(dǎo)致進(jìn)一步增大信號線延遲,因此在高扇出信號線上也可能難以滿足時序。

圖 1:違例達(dá) 0.978 ns 的時序路徑
通過觀察數(shù)據(jù)路徑即可發(fā)現(xiàn),高扇出信號線 Net A 是由 LUT 驅(qū)動,它造成了 2.418 ns 延遲。優(yōu)化此高扇出信號線有助于解決此時序路徑問題。
如何查詢高扇出信號線
您可使用 report_high_fanout_nets 命令來識別設(shè)計中的非時鐘高扇出信號線。此命令有多個選項可用于打印有關(guān)高扇出信號線的詳細(xì)信息,包括驅(qū)動程序信息、時序信息 (-timing) 和負(fù)載位置信息 (-slr)。如需獲取這些選項的完整列表,請參閱 UG906:
https://docs.amd.com/r/zh-CN/ug906-vivado-design-analysis
如果您的設(shè)計中具有導(dǎo)致 QoR 問題的高扇出信號線,那么強(qiáng)烈建議您在實現(xiàn)的中間步驟轉(zhuǎn)儲該報告。

圖 2:“report_high_fanout_nets -histogram”的結(jié)果

圖 3:“report_high_fanout_nets –timing”的結(jié)果
查詢高扇出信號線的另一種方法是采用以下表達(dá)式:
set fanout [expr {[get_property FLAT_PIN_COUNT [get_nets $Net_A] -1 }]
如何在不同實現(xiàn)階段應(yīng)對高扇出信號線

圖 4:此圖呈現(xiàn)了在實現(xiàn)的不同部分中影響高扇出信號線優(yōu)化的命令選項和屬性。
DON'T_TOUCH 屬性、KEEP HIERARCHY 屬性和 MARK_DEBUG 屬性會阻止執(zhí)行任何 HFN 優(yōu)化。其他屬性包括 MAX_FANOUT、CLOCK_BUFFER_TYPE 和 MAX_FANOUT_MODE,這些屬性全都會影響 HFN 優(yōu)化。
綜合
MAX_FANOUT
在綜合期間,您可使用 MAX_FANOUT 屬性來強(qiáng)制復(fù)制寄存器。該屬性用于控制發(fā)生寄存器復(fù)制的時機(jī)。如果某條信號線的扇出大于 MAX_FANOUT 值,就會考慮對該寄存器進(jìn)行復(fù)制。請注意,無論時序如何,都會應(yīng)用該屬性,因此務(wù)必謹(jǐn)慎使用,過量使用會因過度復(fù)制而導(dǎo)致更多問題(當(dāng) HFN 位于寄存器控制信號上時尤其如此)。建議在綜合期間慎用該屬性。
set_property MAX_FANOUT [get_nets -hier ]
建議不要在驅(qū)動程序與負(fù)載之間設(shè)置額外的組合邏輯,否則會妨礙某些復(fù)制優(yōu)化操作。
有些屬性可能會阻礙執(zhí)行此類有益的復(fù)制操作,其中包括:
DONT_TOUCH:阻止在設(shè)計元素上發(fā)生任何修改或復(fù)制
KEEP_HIERARCHY:指示工具在復(fù)制期間保留層級(如果 HFN 驅(qū)動程序及其負(fù)載位于同一模塊內(nèi),則會阻止復(fù)制)
MARK_DEBUG:禁止呈現(xiàn)某條信號線以供調(diào)試
如需了解有關(guān)這些屬性的更多詳情,請參閱 UG901:
https://docs.amd.com/r/en-US/ug901-vivado-synthesis/KEEP_HIERARCHY
以下是一個簡單的示例。如果該信號線的 MAX_FANOUT 屬性設(shè)為 3,則該信號線的驅(qū)動程序必須復(fù)制 2 次,如下所示:

圖 5:通過復(fù)制源寄存器來減少扇出的簡單示例。
同樣,如果有個源,其中有 10,000 負(fù)載分布在整個設(shè)計中,并且您通過將 MAX_FANOUT 設(shè)為 1,000 來限制扇出,那么,該工具會將該源復(fù)制 10 次,然后為復(fù)制的每個源分配 1,000 負(fù)載。
邏輯優(yōu)化
在邏輯優(yōu)化 (opt_design) 期間,有多種間接的方式可用于控制高扇出信號線。以下部分選項可能有用:
BUFG 插入
默認(rèn)在邏輯優(yōu)化中,會在滿足某些要求的高扇出控制信號線上插入 BUFG 或 BUFG_FABRIC 時鐘緩沖器(在 Versal 架構(gòu)中)。這是很有效的,因為全局時鐘布線資源可以減少互連結(jié)構(gòu)布線上的擁塞,從而幫助緩解時序問題。
非時鐘信號線的扇出必須大于 25k 才符合此條件。 使用 BUFG 插入時,該工具較為保守,對于 Ultrascale+/Versal,限制是 24 個 BUFG(此限制不包括 BUFG_GT)
用戶指定的 BUFG 插入
如果信號線沒有插入 BUFG,您可以通過 CLOCK_BUFFER_TYPE 屬性強(qiáng)制執(zhí)行 BUFG 插入。該工具會為任何指定的信號線添加 BUFG/BUFG_FABRIC,并且不會將其計入先前提及的限值 24,前提是有走線可用。

BUFG 負(fù)載拆分
在某些情況下,插入 BUFG 的過程中會拆分時鐘網(wǎng)絡(luò),使其分別驅(qū)動組合負(fù)載與時序負(fù)載。發(fā)生拆分時,時序負(fù)載由 BUFG 驅(qū)動,組合負(fù)載則由原始驅(qū)動程序來驅(qū)動。針對 opt_design 插入的 BUFG 和用戶插入的 BUFG 都會發(fā)生此拆分操作。當(dāng) BUFG 輸出信號線驅(qū)動組合負(fù)載與非時鐘時序負(fù)載(例如,高扇出復(fù)位)時,預(yù)計會發(fā)生負(fù)載拆分。
層級復(fù)制
用戶還可通過該工具使用 -hier_fanout_limit 選項根據(jù)高扇出信號線的邏輯層級來復(fù)制該信號線的驅(qū)動程序。該工具會在層級內(nèi)查找,如果發(fā)現(xiàn)驅(qū)動程序所驅(qū)動的負(fù)載超出指定限值,那么該工具就會復(fù)制驅(qū)動程序。
這有助于緩解高扇出信號線所導(dǎo)致的擁塞。這是一種基于規(guī)則的復(fù)制,無法感知時序,因此建議謹(jǐn)慎使用。
注釋:為 -hier_fanout_limit 選項指定的最小限值為 512。

圖 6:扇出為 60,000 的信號線
當(dāng) -hier_fanout_limit 設(shè)為 1000 時,HFN 驅(qū)動程序會復(fù)制 59 次,每次復(fù)制的驅(qū)動程序都會驅(qū)動 1000 個負(fù)載。
您可使用以下命令實現(xiàn)此目的:
opt_design -hier_fanout_limit 1000
了解對某個設(shè)計要素進(jìn)行了哪些優(yōu)化是很有幫助的。OPT_MODIFIED 屬性會明示對設(shè)計要素執(zhí)行了哪些優(yōu)化(按優(yōu)化的執(zhí)行順序)。同樣,OPT_SKIPPED 會顯示設(shè)計要素上跳過了哪些優(yōu)化。在某些情況下,DONT_TOUCH 或類似屬性可能阻止優(yōu)化。建議搜索日志,查找有關(guān)跳過某一項優(yōu)化的具體原因的更多信息。與前述屬性類似,PHYS_OPT_MODIFIED 與 PHYS_OPT_SKIPPED 是用于物理優(yōu)化的等效屬性。

圖 7:含 opt_design 選項與對應(yīng) OPT_MODIFIED 值的表
如果您在 opt_design 中遇到因使用 hier_fanout_limit 選項而導(dǎo)致復(fù)制的驅(qū)動程序,那么您會發(fā)現(xiàn) OPT_MODIFIED 屬性與 HIER_FANOUT_LIMIT 相等。
-
負(fù)載
+關(guān)注
關(guān)注
2文章
642瀏覽量
35960 -
寄存器
+關(guān)注
關(guān)注
31文章
5503瀏覽量
128337 -
信號線
+關(guān)注
關(guān)注
2文章
185瀏覽量
22136 -
時序
+關(guān)注
關(guān)注
5文章
401瀏覽量
38564
原文標(biāo)題:開發(fā)者分享|高扇出信號線優(yōu)化技巧(上)
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
高扇出信號線優(yōu)化技巧(下)
如何在模擬電路PCB板上做好信號線的布局走線?
音頻信號線的工作原理和制作要求
Altium Designer信號線束的使用
信號線是怎么傳輸?shù)?/a>
信號線有哪些
信號線和屏蔽線的區(qū)別 屏蔽線可以當(dāng)信號線用嗎?
差分信號線與單端信號線的區(qū)別
信號線是什么線
差分信號線的選擇與處理
信號線和光纖線的區(qū)別是什么
信號線和屏蔽線有什么區(qū)別

高扇出信號線優(yōu)化技巧(上)
評論