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

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

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

如何運(yùn)用Retiming優(yōu)化Block RAM的使用

FPGA技術(shù)驛站 ? 來源:Copyright @ FPGA技術(shù)驛站 ? 2024-04-18 10:05 ? 次閱讀

對(duì)于邏輯級(jí)數(shù)較大的路徑,常用的時(shí)序收斂的方法之一就是采用Retiming(中文翻譯為重定時(shí))。Retiming到底是怎么回事呢?我們可以通過下圖理解。圖中通過搬移觸發(fā)器的位置減小了關(guān)鍵路徑的邏輯級(jí)數(shù)。無論是把觸發(fā)器向前搬移還是向后搬移,搬移后整個(gè)路徑的Latency和搬移前的Latency保持一致。可以看到Retiming的前提是相鄰路徑有可供搬移的觸發(fā)器,換言之,相鄰路徑的時(shí)序裕量較為“富余”,從這些“富余”中拿出一部分給時(shí)序較為緊張的路徑。這樣,時(shí)序緊張的路徑其邏輯級(jí)數(shù)降低了,而相鄰的時(shí)序“富余”的路徑邏輯級(jí)數(shù)增加了,達(dá)到整體邏輯級(jí)數(shù)的平衡。

045b40bc-fd24-11ee-a297-92fbcf53809c.jpg

Vivado提供了多種方法實(shí)現(xiàn)Retiming。在綜合選項(xiàng)設(shè)置界面提供了-retiming,如下圖所示。在這里,它是一個(gè)全局選項(xiàng),作用于設(shè)計(jì)中的所有模塊。除此之外,Vivado還提供了模塊級(jí)綜合技術(shù),可針對(duì)關(guān)鍵模塊使用Retiming,此時(shí)需要借助屬性BLOCK_SYNTH.RETIMING實(shí)現(xiàn)。顯然,這個(gè)綜合屬性是針對(duì)指定模塊的,所以這是一種更精細(xì)的設(shè)置方法。實(shí)踐證明往往全局選項(xiàng)-retiming加上模塊級(jí)Retiming能獲得更好的效果。

04f17f82-fd24-11ee-a297-92fbcf53809c.jpg

上述兩種方法人工干預(yù)度都較低,如果用戶能夠判定哪些路徑上的觸發(fā)器可搬移以改善相鄰路徑的時(shí)序,那么就可以使用Vivado提供的綜合屬性RETIMING_BACKWARD或RETIMING_FORWARD,直接將其作用于指定的觸發(fā)器。另外,在PSIP階段還可以使用屬性PSIP_RETIMING_BACKWARD或PSIP_RETIMING_FORWARD實(shí)現(xiàn)Retiming。對(duì)用戶而言,這一過程還是有一定難度的,好在Vivado提供了另外一種方式就是QoR建議,有時(shí)該報(bào)告就會(huì)包含Retiming的相關(guān)設(shè)置,如下圖所示。這樣用戶只需將該建議添加到工程中直接使用即可。

04ff8dfc-fd24-11ee-a297-92fbcf53809c.jpg

0511fe4c-fd24-11ee-a297-92fbcf53809c.jpg

此外,phys_opt_design還提供了-directive AddRetime,既可在布局之后執(zhí)行也可在布線之后執(zhí)行。本質(zhì)是是因?yàn)閜hys_opt_design提供了選項(xiàng)-retime。

審核編輯:黃飛

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

    關(guān)注

    8

    文章

    1354

    瀏覽量

    114438
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61010
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    804

    瀏覽量

    66221

原文標(biāo)題:如何對(duì)Block RAM使用Retiming(1)

文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FIFOPrimitive在Block RAM上有什么優(yōu)勢(shì)?

    我今天正在實(shí)現(xiàn)FIFO,我想知道FIFOPrimitive和Block RAM實(shí)現(xiàn)之間的區(qū)別是什么。根據(jù)我的理解,它們使用相同的底層RAM原語,但FIFOPrimitive不能有不同的R / W方面
    發(fā)表于 02-27 14:16

    Block RAM的功耗始終為0mW

    大家好。我設(shè)計(jì)并模擬了簡單的RTL with Block RAMin Kintex 7。在合成和實(shí)現(xiàn)之后,vivado用于功率估計(jì)。當(dāng)我使用分布式RAM時(shí),會(huì)正確報(bào)告每個(gè)RAM的功耗。但是
    發(fā)表于 03-13 14:21

    請(qǐng)幫助我解決Block RAM問題?

    ,維克多Rdp_fifo3.v 3 KB以上來自于谷歌翻譯以下為原文I am trying to use the block ram on Xilinx Spartan 3AN (XC3S400AN
    發(fā)表于 06-04 09:08

    創(chuàng)建Block RAM IP不起作用

    DCM_SP為spartan 3E創(chuàng)建50Mhz DCM時(shí)鐘的IP,并且它可以工作。我不確定為什么當(dāng)我嘗試創(chuàng)建Block RAM IP時(shí)它不起作用。我真的很感激一些幫助。歡迎來到Xilinx CORE
    發(fā)表于 06-05 13:39

    請(qǐng)問9K Block RAM設(shè)計(jì)中那些2 9K Block RAM在哪里?

    嗨,我想為我的設(shè)計(jì)使用比特流加密,我遇到了一個(gè)關(guān)于9K Block RAM的問題,在答案記錄39999中描述了r然后我決定在我的設(shè)計(jì)中刪除所有9k Block RAM并將它們更改為16
    發(fā)表于 06-06 07:23

    SPARTAN-3AN怎么使用標(biāo)準(zhǔn)JTAG命令讀取Block RAM內(nèi)容

    嗨,為了調(diào)試系統(tǒng),我需要在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)讀取Block-RAM內(nèi)容....我只有JTAG線,我不能在FPGA中制作一個(gè)特定的塊用于讀取內(nèi)容并通過JTAG等發(fā)送它們。我可以使用ISMP 13.2作為
    發(fā)表于 06-11 07:36

    用INIT_XX初始化Block RAM的方法有哪些?

    嗨,我正在使用“RAMB16_S36”原始實(shí)現(xiàn)一個(gè)512內(nèi)存寬度的Block Ram。我通讀了XAPP463用戶指南,但我顯然不了解初始化屬性。INIT_00是否對(duì)應(yīng)于[255:0] Block
    發(fā)表于 07-22 08:10

    為什么Spartan 6 block ram有2個(gè)時(shí)鐘延遲?

    我正在運(yùn)行Spartan 6 block ram的模擬。時(shí)鐘速度為100Mhz。塊ram的寫作運(yùn)作良好。我可以在內(nèi)存中看到數(shù)據(jù)。但是當(dāng)我讀取數(shù)據(jù)時(shí),輸出有2個(gè)時(shí)鐘的延遲。在塊ram用戶
    發(fā)表于 07-25 08:15

    請(qǐng)問分布式RAMBlock RAM的芯片中有menexternalmemory或內(nèi)存嗎?

    嗨!我有一個(gè)關(guān)于分布式RAMBlock RAM的問題。芯片中有menexternalmemory或內(nèi)存嗎?請(qǐng)?jiān)敿?xì)告訴我。謝謝!
    發(fā)表于 11-07 09:07

    怎么使用virtex 5上的Block RAM來實(shí)現(xiàn)延遲線?

    我正在嘗試使用virtex 5上的Block RAM來實(shí)現(xiàn)延遲線。延遲線需要將數(shù)據(jù)延遲一個(gè)時(shí)鐘周期。這可能使用Block RAM嗎?我嘗試使用簡單的雙端口
    發(fā)表于 06-18 15:40

    如何使用Block RAM及利用其功能和性能優(yōu)勢(shì)

    了解新的Block RAM級(jí)聯(lián)功能,如何使用它,以及如何利用其功能和性能優(yōu)勢(shì)。
    的頭像 發(fā)表于 11-23 06:56 ?4820次閱讀

    xilinx 7系列FPGA里面的Block RAM

    些大材小用,因此xilinx公司在其FPGA內(nèi)部專門集成了很多存儲(chǔ)器模塊,稱作Block RAM,其猶如slice海洋當(dāng)中的一顆顆明珠,專門實(shí)現(xiàn)數(shù)據(jù)暫存功能,且每個(gè)時(shí)鐘區(qū)域都布置了若干個(gè)Block
    的頭像 發(fā)表于 11-23 14:08 ?7918次閱讀
    xilinx 7系列FPGA里面的<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>

    關(guān)于Block RAM的寄存器輸出

    關(guān)于Block RAM的寄存器輸出,我們?cè)凇锻ㄟ^RTL改善時(shí)序的技巧之Block RAM的輸出》中介紹過。如果我們?cè)跁r(shí)序報(bào)告中關(guān)鍵路徑上看到這樣一條信息: 在第一級(jí)的C2Q delay
    的頭像 發(fā)表于 03-26 15:50 ?1781次閱讀
    關(guān)于<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>的寄存器輸出

    FPGA中block ram的特殊用法列舉

    在FPGA中block ram是很常見的硬核資源,合理的利用這些硬件資源一定程度上可以優(yōu)化整個(gè)設(shè)計(jì),節(jié)約資源利用率,充分開發(fā)FPGA芯片中的潛在價(jià)值,本文結(jié)合安路科技FPGA做簡單總結(jié),說明基本原理。
    的頭像 發(fā)表于 12-24 14:28 ?1212次閱讀

    超高數(shù)據(jù)流通量FPGA新品類中的Block RAM級(jí)聯(lián)架構(gòu)

    本文主要講述了Speedster7t FPGA的片上SRAM,也就是Block RAM針對(duì)傳統(tǒng)的結(jié)構(gòu)所做出的一些優(yōu)化
    的頭像 發(fā)表于 07-13 17:24 ?509次閱讀
    超高數(shù)據(jù)流通量FPGA新品類中的<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>級(jí)聯(lián)架構(gòu)