在先前博文在 Vivado 中利用 report_qor_suggestions 提升 QoR和利用 RQA 和 RQS 實(shí)現(xiàn)設(shè)計(jì)收斂中,我們了解了“Report QOR Suggestions (RQS)”(QoR 建議報(bào)告)如何借助時(shí)鐘設(shè)置、使用率、擁塞和時(shí)序建議來幫助達(dá)成設(shè)計(jì)收斂。
在本篇博文中,我們來聊聊“RQS_CLOCK-12”時(shí)鐘設(shè)置建議以及它如何幫助達(dá)成時(shí)序收斂。
要求:
掌握如何生成和應(yīng)用report_qor_suggestions
基本掌握 CLOCK_LOW_FANOUT 約束。
RQS_CLOCK-12:
RQS_CLOCK-12 建議屬于專為 UltraScale 和 UltraScale+ 器件生成的自動增量式友好建議。
它使用“CLOCK_LOW_FANOUT”屬性,并將該屬性分配給時(shí)鐘信號線或者一組寄存器,由全局時(shí)鐘緩沖器根據(jù)其負(fù)載數(shù)目來驅(qū)動。
1. 將該屬性應(yīng)用于時(shí)鐘信號線時(shí),全局時(shí)鐘緩沖器的負(fù)載將被約束并放置到單個(gè)時(shí)鐘區(qū)域內(nèi)。
2. 將該屬性應(yīng)用于一組寄存器時(shí),在 opt_design 期間創(chuàng)建的現(xiàn)有全局時(shí)鐘緩沖器的基礎(chǔ)上,還會并行復(fù)制一個(gè)全新的全局時(shí)鐘緩沖器。新全局時(shí)鐘緩沖器的負(fù)載僅適用于該屬性應(yīng)用到的各組寄存器,并約束到單個(gè)時(shí)鐘區(qū)域。
現(xiàn)在我們來看看 RQS_CLOCK-12 建議如何應(yīng)用 CLOCK_LOW_FANOUT 來降低時(shí)鐘偏差,進(jìn)而幫助設(shè)計(jì)達(dá)成時(shí)序收斂。
假設(shè)已布線的設(shè)計(jì)中存在如下兩個(gè)場景,其中存在錯(cuò)誤的時(shí)鐘偏差,導(dǎo)致從寄存器到全局緩沖器的控制管腳 (CE/CLR) 的路徑上存在時(shí)序違例。
場景 1:
在這條時(shí)序收斂失敗的路徑中,時(shí)鐘緩沖器 BUFGCE1 (clockout3_buf)、寄存器及其驅(qū)動程序 BUFGCE2 (bufce_i) 全都布局在同一個(gè)時(shí)鐘區(qū)域內(nèi)。驅(qū)動寄存器的 BUFGCE1 存在高扇出 (6419),且負(fù)載導(dǎo)致其時(shí)鐘信號線遍布整個(gè)器件,如圖高亮所示。
該工具所選的 CLOCK_ROOT 位置遠(yuǎn)離驅(qū)動它的全局時(shí)鐘緩沖器,導(dǎo)致時(shí)鐘信號線延遲過高且時(shí)鐘偏差過高。
場景 1 的解決辦法:
對寄存器應(yīng)用 CLOCK_LOW_FANOUT,這樣即可復(fù)制 opt_design 期間創(chuàng)建的原始 BUFGCE1 以創(chuàng)建新的 BUFGCE (clkout3_buf_replica),且僅將其用于驅(qū)動此關(guān)鍵寄存器。這樣將把信號線約束到單個(gè)時(shí)鐘區(qū)域內(nèi),從而減少時(shí)鐘信號線延遲。
并且,由于時(shí)鐘源和負(fù)載都位于相同時(shí)鐘區(qū)域內(nèi),CLOCK_LOW_FANOUT 會強(qiáng)制將 clock root(時(shí)鐘根)包含在相同時(shí)鐘區(qū)域內(nèi),從而幫助降低時(shí)鐘偏差。
對關(guān)鍵寄存器應(yīng)用 CLOCK_LOW_FANOUT 后的板級原理圖:
在 opt_design 的 BUFG 最優(yōu)化階段,在為 CLOCK_LOW_FANOUT 屬性創(chuàng)建的全局時(shí)鐘緩沖器上應(yīng)該會顯示一條消息。
例如:
INFO: [Opt 31-1077] Phase BUFG optimization inserted 1 global clock buffer(s) for CLOCK_LOW_FANOUT.
語法:
set_property CLOCK_LOW_FANOUT TRUE [get_cells ]
場景 2:
在這條時(shí)序收斂失敗的路徑中,時(shí)鐘緩沖器 BUFGCE1 (clkout1_BUFG_inst)、寄存器及其驅(qū)動程序 BUFGCE2 同樣全都布局在同一個(gè)時(shí)鐘區(qū)域內(nèi)。BUFGCE1 驅(qū)動寄存器的扇出較低 (16),但負(fù)載分布于多個(gè)時(shí)鐘區(qū)域(以紅色標(biāo)記)。由此導(dǎo)致該工具所選的 CLOCK_ROOT 不同于驅(qū)動它的全局時(shí)鐘緩沖器,進(jìn)而導(dǎo)致時(shí)鐘信號線延遲過高且時(shí)鐘偏差過高。
場景 2 的解決辦法:
當(dāng) BUFGCE1 扇出較低 (
現(xiàn)在,時(shí)鐘源和負(fù)載都位于相同時(shí)鐘區(qū)域內(nèi),因此 CLOCK_LOW_FANOUT 會強(qiáng)制將 clock root 包含在相同時(shí)鐘區(qū)域內(nèi),從而幫助降低時(shí)鐘偏差。
對時(shí)鐘信號線應(yīng)用 CLOCK_LOW_FANOUT 后的板級原理圖:
語法:
set_property CLOCK_LOW_FANOUT TRUE [get_nets ]
總結(jié)
在本篇博文中,我們學(xué)習(xí)了 2 個(gè)設(shè)計(jì)示例,其中演示了如何生成 RQS_CLOCK-12 建議以將 CLOCK_LOW_FANOUT 屬性應(yīng)用于由全局時(shí)鐘緩沖器直接驅(qū)動的寄存器或時(shí)鐘信號線。
-
寄存器
+關(guān)注
關(guān)注
31文章
5250瀏覽量
119200 -
緩沖器
+關(guān)注
關(guān)注
6文章
1903瀏覽量
45324 -
時(shí)序
+關(guān)注
關(guān)注
5文章
370瀏覽量
37186
發(fā)布評論請先 登錄
相關(guān)推薦
評論