0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Vivado中的重定時(shí)概述和應(yīng)用

Xilinx賽靈思官微 ? 來源:djl ? 作者:賽靈思 ? 2019-07-25 16:07 ? 次閱讀

重定時(shí)概述

重定時(shí)是一種順序優(yōu)化技術(shù),旨在不會(huì)影響電路的輸入/輸出行為的前提下在組合邏輯之間移動(dòng)寄存器,以提高設(shè)計(jì)性能。圖 1 所示電路的關(guān)鍵路徑使用了一個(gè) 6 輸入加法器。以紅色突出顯示的路徑是對(duì)整個(gè)電路的性能起限制作用的路徑。

Vivado中的重定時(shí)概述和應(yīng)用

圖 1:寄存器到寄存器路徑設(shè)計(jì)示例:使用 6 個(gè)輸入加法器邏輯

通過將加法器輸出上的寄存器重定時(shí)到電路的組合邏輯,可以提升這里所示電路的性能。

電路的整體時(shí)延為 4。圖 2 顯示移動(dòng)寄存器使邏輯最小化的一種方法。將輸出寄存器移動(dòng)到邏輯錐中被稱為后向重定時(shí)。完成此操作后,關(guān)鍵路徑將減少為只使用一個(gè) 2 輸入加法器。

Vivado中的重定時(shí)概述和應(yīng)用

圖 2:寄存器到寄存器路徑設(shè)計(jì)示例:通過應(yīng)用反向重定時(shí)使用一個(gè) 2 輸入加法器

注意:在上述示例中,寄存器的數(shù)量改變了。

圖 1 使用了 9 條不同的寄存器總線。圖 2 使用了 12 條不同的寄存器總線。這樣做的原因是,當(dāng)執(zhí)行向后重定時(shí)時(shí),即當(dāng)它從輸出移動(dòng)到輸入時(shí),門的兩個(gè)輸入一定各有一個(gè)寄存器。

有兩種不同類型的重定時(shí):后向重定時(shí)和前向重定時(shí)。后向重定時(shí)從門的輸出中移除寄存器,并在同一個(gè)門的輸入處創(chuàng)建新的寄存器。前向重定時(shí)完全相反,它從門的輸入端移除寄存器,并在輸出端創(chuàng)建一個(gè)新的寄存器。

要執(zhí)行后向重定時(shí)操作,組合邏輯必須僅驅(qū)動(dòng)寄存器,而不是扇出到其他邏輯。要執(zhí)行前向重定時(shí)操作,門的每個(gè)輸入必須由具有相同控制邏輯的寄存器驅(qū)動(dòng)。圖 3 顯示的是采用前向或后向重定時(shí)的同一個(gè)電路。

Vivado中的重定時(shí)概述和應(yīng)用

圖 3:前向重定時(shí)或后向后重定時(shí)的與門

全局重定時(shí)與局部后重定時(shí)

在 Vivado 綜合中,有兩種啟用重定時(shí)的方式:“全局”和“局部”。

全局重定時(shí)對(duì)整個(gè)設(shè)計(jì)進(jìn)行重定時(shí),并根據(jù)設(shè)計(jì)時(shí)序在大型組合邏輯結(jié)構(gòu)中移動(dòng)寄存器。

它會(huì)對(duì)設(shè)計(jì)中的所有邏輯進(jìn)行分析,并在最壞情況的路徑中移動(dòng)寄存器,以便設(shè)計(jì)能夠跑得更快。為了完成此操作,設(shè)計(jì)必須在 .xdc 文件中含有準(zhǔn)確的時(shí)序約束。使用 synth_design 命令行中或 Vivado GUI 中綜合設(shè)置下的 -retiming 開關(guān)啟用全局重定時(shí)。 此外,此功能還可以與綜合中的 BLOCK_SYNTH 功能一起使用,作用于您設(shè)計(jì)中的特定模塊。

局部重定時(shí)是指用戶明確告訴工具使用 retiming_forward/retiming_backward RTL 屬性執(zhí)行重定時(shí)時(shí)的邏輯。

在執(zhí)行局部重定時(shí)時(shí)應(yīng)小心,由于這種重定向不是時(shí)序驅(qū)動(dòng)的,工具會(huì)完全按照要求進(jìn)行操作。

如需了解更多有關(guān)使用重定時(shí)的信息,請(qǐng)參閱《Vivado Design Suite 用戶指南:綜合》 (UG901)。

分析日志文件中的消息,圖 4 顯示的是可以改善邏輯層次的重定時(shí)示例。該結(jié)構(gòu)的關(guān)鍵路徑有 3 個(gè)來自 37 位的與門的邏輯層次。源寄存器被稱為 din1_dly_reg,目標(biāo)寄存器被稱為 tmp1_reg,在 tmp1_reg 后面還有一個(gè)邏輯層次為 0 的額外寄存器。

這是重新定時(shí)的理想途徑,因?yàn)槲覀兛梢园岩粋€(gè)有 3 個(gè)邏輯層次的路徑(后跟邏輯層次為 0 的路徑)切換到有 2 個(gè)邏輯層次的路徑(后跟一個(gè)有 1 或 2 個(gè)邏輯層次的路徑)。

Vivado中的重定時(shí)概述和應(yīng)用

圖 4:可以向后重定時(shí)的電路

綜合日志文件類似于以下內(nèi)容:

INFO: [Synth 8-5816] Retiming module "test"

Effective logic levels on critical path before retiming is: 3

Total number of crtical paths = 30

Optimizing at the module level

Optimizing locally to improve critical paths (may not reduce worst delay)

Effective logic levels on critical path after retiming is: 2

Total number of crtical paths = 30

Numbers of forward move = 0, and backward move = 1

Retimed registers names:

tmp1_reg_bret

tmp1_reg_bret__0

INFO: [Synth 8-5816] Retiming module "test" done

從此日志文件中,您可以看到重新定時(shí)之前和之后報(bào)告的邏輯層次,以及創(chuàng)建的新寄存器的名稱。當(dāng)綜合從重定時(shí)創(chuàng)建新寄存器時(shí),它會(huì)對(duì)后向重新定時(shí)的寄存器使用后綴“bret”、對(duì)前向重定時(shí)的寄存器使用“fret”。

圖 5 中顯示的電路展示的是不兼容的寄存器元件會(huì)讓重定時(shí)變?yōu)榉欠ú僮鳌T摻Y(jié)構(gòu)使用的仍是一個(gè)名為 din1_dly_reg 的啟動(dòng)寄存器,通過一個(gè) 37 位的與門,產(chǎn)生 3 個(gè)邏輯層次,然后最后是一個(gè)名為 din1_dly_reg 的寄存器。此外,與門還有另一個(gè)以粉紅色突出顯示的寄存器扇出。

Vivado中的重定時(shí)概述和應(yīng)用

圖 5:無法重定時(shí)的電路示例

由于以粉色突出顯示的寄存器的存在,此示例無法重新定時(shí)。該寄存器采用了異步復(fù)位,而 tmp1_reg 沒有采用異步復(fù)位。由于兩個(gè)寄存器的控制集不相同,因此它們無法后向重定時(shí)到與門邏輯。此示例中的日志文件會(huì)顯示以下內(nèi)容:

INFO: [Synth 8-5816] Retiming module "test"

Effective logic levels on critical path before retiming is: 3

Total number of crtical paths = 60

Optimizing at the module level

Cannot find a feasible solution:

backward propagation for flip-flop tmp1_reg:FD along instance tmp1_i_1:LUT2 fails due to incompatible flip-flops

Optimizing locally to improve critical paths (may not reduce worst delay)

Effective logic levels on critical path after retiming is: 3

Total number of crtical paths = 60

Numbers of forward move = 0, and backward move = 0

Retimed registers names:

tmp1_reg_bret

tmp1_reg_bret__0

INFO: [Synth 8-5816] Retiming module "test" done

日志文件內(nèi)含有關(guān)不兼容觸發(fā)器的消息,并且之前和之后的邏輯層次不會(huì)改變。

在以下情況下不能進(jìn)行重定時(shí):

寄存器上加有時(shí)序異常約束(多周期路徑、可忽略路徑、最大延遲)。

存器有保留類型的屬性(DONT_TOUCH、MARK_DEBUG)。

帶有不同控制集的寄存器。

寄存器驅(qū)動(dòng)輸出或由輸入驅(qū)動(dòng)(除非設(shè)計(jì)被標(biāo)記為 out-of-context)。

重定時(shí)無法提升反饋循環(huán)中的關(guān)鍵路徑的示例

當(dāng)路徑的源寄存器和目標(biāo)寄存器相同時(shí),重定時(shí)優(yōu)化有可能無法改善邏輯層次。

例如:

寄存器“dout_reg”的關(guān)鍵路徑以紅色突出顯示。它通過一個(gè)減位與運(yùn)算符,并在同一寄存器的復(fù)位引腳處結(jié)束。減位與運(yùn)算符將基于我們采用的寬度(即 16 位)占用 2 個(gè)邏輯層次。

Vivado中的重定時(shí)概述和應(yīng)用

下面的屏幕截圖顯示綜合對(duì)關(guān)鍵路徑的性質(zhì)的描述。

它還提到了作為關(guān)鍵路徑一部分的單元名稱。

INFO: [Synth 8-5816] Retiming module "test"

Effective logic levels on critical path before retiming is: 2

Total number of crtical paths = 192

Optimizing at the module level

Cannot find a feasible solution:

Worst path is a self-loop from dout_reg[14] to dout_reg[14]

Optimizing locally to improve critical paths (may not reduce worst delay)

Effective logic levels on critical path after retiming is: 2

Total number of crtical paths = 192

Numbers of forward move = 0, and backward move = 0

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電路
    +關(guān)注

    關(guān)注

    172

    文章

    5828

    瀏覽量

    171811
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5301

    瀏覽量

    119866
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CC2650無線連接三概述

    `CC2650無線連接三概述`
    發(fā)表于 02-25 10:13

    Vivado綜合操作定時(shí)(Retiming)

    synth_design或Vivado GUI綜合設(shè)置下通過-retiming命令啟用全局定時(shí),此外該特性還可以與合成的BLOCK_SYNTH特性一起用于設(shè)計(jì)
    發(fā)表于 03-14 12:32

    如何在Vivado 2016.1進(jìn)行寄存器平衡/寄存器重定時(shí)?

    vivado 2016.1可以選擇重新定時(shí)。我有這種層次數(shù)據(jù)路徑設(shè)計(jì),其中觸發(fā)器處于最頂層,我希望在重新定時(shí)完成后,應(yīng)將觸發(fā)器移動(dòng)到較低層次以匹配時(shí)序。但重新
    發(fā)表于 05-01 06:33

    如何為管道設(shè)計(jì)插入寄存器并進(jìn)行定時(shí)?

    大家好,我需要為管道設(shè)計(jì)插入寄存器并進(jìn)行定時(shí)以改善負(fù)面松弛。在vivado是否有內(nèi)置的方法來執(zhí)行此操作。我嘗試了phys_opt_design -retime,但它沒有改善松弛。此
    發(fā)表于 05-01 14:51

    Vivado 全局定時(shí)vs 局部定時(shí)

    限制。在synth_design或Vivado GUI綜合設(shè)置下通過-retiming命令啟用全局定時(shí),此外該特性還可以與合成的BLOCK_SYNTH特性一起用于設(shè)計(jì)
    發(fā)表于 11-24 07:00

    基于vivado的fir ip核的采樣設(shè)計(jì)與實(shí)現(xiàn)

    本文基于xilinx 的IP核設(shè)計(jì),源于音頻下采樣這一需求。 創(chuàng)建vivado工程 1. 首先打開vivado,創(chuàng)建一個(gè)新的project(勾選create project subdirectory
    發(fā)表于 02-08 02:25 ?4732次閱讀
    基于<b class='flag-5'>vivado</b>的fir ip核的<b class='flag-5'>重</b>采樣設(shè)計(jì)與實(shí)現(xiàn)

    Vivado 2017.1和Vivado 2016.4性能對(duì)比分析

    ??傮w而言,Vivado 2017.1比Vivado2016.4給出了更好的效果。雖然在測(cè)試1的結(jié)果有些相似,但是Vivado2017.1從測(cè)試2和3
    的頭像 發(fā)表于 07-04 11:23 ?1w次閱讀
    <b class='flag-5'>Vivado</b> 2017.1和<b class='flag-5'>Vivado</b> 2016.4性能對(duì)比分析

    Tcl在Vivado的基礎(chǔ)應(yīng)用

    Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級(jí)到Vivado的信心。本文介紹了Tcl在Vivado的基礎(chǔ)應(yīng)用,希望起到拋磚引玉的作用,指引使用者在短時(shí)間內(nèi)
    發(fā)表于 11-18 03:52 ?4913次閱讀
    Tcl在<b class='flag-5'>Vivado</b><b class='flag-5'>中</b>的基礎(chǔ)應(yīng)用

    如何在Vivado Design Suite 中進(jìn)行IP加密

    此視頻概述Vivado Design Suite的IP加密。 它涵蓋了IP加密工具流程,如何準(zhǔn)備加密IP以及如何在Vivado運(yùn)行加
    的頭像 發(fā)表于 11-20 06:34 ?6428次閱讀

    在ISE和VivadoXADC的向?qū)а菔?/a>

    該視頻快速概述了ISE和Vivado可用的XADC向?qū)?b class='flag-5'>中的界面,功能和功能。 對(duì)于希望實(shí)例化基本設(shè)計(jì)的數(shù)字設(shè)計(jì)人員來說,這是一個(gè)很好的工具。
    的頭像 發(fā)表于 11-20 06:19 ?4634次閱讀

    Vivado 2014.1的許可和激活概述

    了解如何使用2014.1引入的新激活許可為Vivado工具生成許可證。 另外,了解Vivado 2014.1的許可更改如何影響您,以及如何在激活客戶端中使用新的
    的頭像 發(fā)表于 11-22 07:10 ?2976次閱讀

    Vivado綜合操作定時(shí)(Retiming)

    有兩種不同的定時(shí)方法,向后定時(shí)和向前定時(shí)。向后
    的頭像 發(fā)表于 03-14 16:26 ?1.9w次閱讀
    <b class='flag-5'>Vivado</b>綜合操作<b class='flag-5'>中</b>的<b class='flag-5'>重</b><b class='flag-5'>定時(shí)</b>(Retiming)

    轉(zhuǎn)接驅(qū)動(dòng)器和定時(shí)器的比較

    六零年代,隨著電信數(shù)字載波系統(tǒng)T1和E1的出現(xiàn),數(shù)字定時(shí)器開始受到關(guān)注。這些系統(tǒng)在屏蔽雙絞線上承載多條語音電路信道,每隔幾千英尺需安裝一個(gè)數(shù)字定時(shí)器。當(dāng)時(shí)這些設(shè)備比較先進(jìn),它們采用
    發(fā)表于 02-12 10:05 ?1637次閱讀

    Vivado設(shè)計(jì)約束功能概述

    XDC約束可以用一個(gè)或多個(gè)XDC文件,也可以用Tcl腳本實(shí)現(xiàn);XDC文件或Tcl腳本都要加入到工程的某個(gè)約束集(set);雖然一個(gè)約束集可以同時(shí)添加兩種類型約束,但是Tcl腳本不受Vivado工具管理,因此無法修改其中的約束;
    的頭像 發(fā)表于 06-30 11:27 ?3673次閱讀

    Vivado設(shè)計(jì)套件用戶指南(設(shè)計(jì)流程概述)

    電子發(fā)燒友網(wǎng)站提供《Vivado設(shè)計(jì)套件用戶指南(設(shè)計(jì)流程概述).pdf》資料免費(fèi)下載
    發(fā)表于 09-15 09:55 ?2次下載
    <b class='flag-5'>Vivado</b>設(shè)計(jì)套件用戶指南(設(shè)計(jì)流程<b class='flag-5'>概述</b>)