精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

如何解決FPGA布局布線的擁塞問題呢?有哪些方法?

Hack電子 ? 來源:Hack電子 ? 2024-03-20 17:33 ? 次閱讀

解決布線擁塞問題

1.問題①的解決方法

14.2節(jié)提到的問題①,即設(shè)計中有很大的扇出,對于如何獲知該扇出信號有多種途徑。常見的途徑是通過FPGAEditor(Xilinx)或者Fitter里Resource Section中的Control Signals 或者 Non Global Hign Fan-out Signal(Altera)查看扇出信號的大小排序。以Altera為例(下面的例子只是一個示范,并非說該例子是扇出過大導(dǎo)致布線問題),編譯完成后,查看Fitter報告即可查看扇出,如圖14-2所示。

51bbc498-e68c-11ee-a297-92fbcf53809c.png

可以看到,rst這個復(fù)位信號的扇出有33個,ena_dly有8個。該設(shè)計對應(yīng)的RTL代碼如下:

51cbe17a-e68c-11ee-a297-92fbcf53809c.png

51dc69f0-e68c-11ee-a297-92fbcf53809c.png

從代碼中可以看到,控制信號enadly有效時才對輸入信號inl和in2的寄存信號進(jìn)行或操作,因此該控制信號直接控制著輸出寄存器ut[7:0]的翻轉(zhuǎn),該控制信號的扇出量為8個寄存器。所以,通過對編譯結(jié)果的查詢可以知道扇出信號較大的為哪些,結(jié)合代碼對其進(jìn)行修改即可。注意,本段RTL代碼只是舉例說明如何查找和定位扇出信號,并不表明扇出信號為8就會導(dǎo)致時序問題。實際上非全局信號的扇出多少才是合理的要看具體的布線情況,且要視FPGA器件而定。在編寫代碼階段要養(yǎng)成時刻警惕扇出過大的問題,一般而言,如果一個信號扇出到幾百個寄存器或者邏輯單元,則

最好對該信號做邏輯復(fù)制。知道如何定位控制信號的扇出后,我們就要著手于如何修改。對于此類修改,一般有兩種方法:第一種是讓工具自己做扇出復(fù)制;第二種是設(shè)計者在代碼中手動修改,讓工具自己做扇出復(fù)制。以Altera為例,在settings中,單擊Fitter Settings,然后單擊More Settings,彈出如圖 14-3的界面。

51e0016e-e68c-11ee-a297-92fbcf53809c.png

對圖14-3 中 Auto Register Duplication 和 Logic Cell Insertion -Logic Duplication中的Auto全部改為On,則工具會對由扇出引起的布線時序問題做邏輯復(fù)制。而在手動做扇出寄存器/信號復(fù)制的情況下,則對該信號做復(fù)制。以上面的RTL為例子,假設(shè)要把enable信號的扇出控制到4,那么只須做如下調(diào)整:

51f22cfe-e68c-11ee-a297-92fbcf53809c.png

51f614ae-e68c-11ee-a297-92fbcf53809c.png

520a0d1a-e68c-11ee-a297-92fbcf53809c.png

可以看到,對ena_dly做了寄存器復(fù)制,多了一個ena_dly_dup,這樣ena_dly的信號扇出就減少了一半,另外一半由ena_dly_dup代替。注意,聲明該寄存器時有“/*synthesispreserve*/;"語句,這是為了告訴編譯器不要對該信號做優(yōu)化,因為在通常情況下,編譯器會對多余或者等效的寄存器做優(yōu)化,只保留一個。從圖14-4可以看出,ena_dly的扇出減少了一半。

2.問題②的解決方法

關(guān)于第二個問題,即復(fù)位信號造成的布局布線問題,一般有如下解決方法:

521aa3dc-e68c-11ee-a297-92fbcf53809c.png

對于復(fù)位信號,如果是異步復(fù)位、同步釋放,那么將會對removal路徑做時序分析,該路徑要求所有的復(fù)位信號在同一個節(jié)拍內(nèi)撤離且滿足removal的時序要求。對于這種情況,如果能夠確定設(shè)計里所有的寄存器在復(fù)位不在同一個節(jié)拍內(nèi)無效的情況下也能正常工作,那么可以對該路徑做falsepath處理,即在時序約束里對復(fù)位信號到所有相關(guān)寄存器的路徑做不分析處理。

另外一個方式是降低復(fù)位信號的扇出,沒有必要對所有的寄存器都加上復(fù)位信號,作者推薦數(shù)據(jù)路徑上的流水線寄存器可以不加復(fù)位信號,只對控制路徑上的寄存器(如計數(shù)器、數(shù)據(jù)使能信號)等加上復(fù)位信號,從而大幅度降低復(fù)位信號的扇出。另外,在Xilinx器件中,不推薦對BIockRAMDSP48中的流水線寄存器等加入復(fù)位信號。

3.問題③解決方法

關(guān)于第三個問題的解決思路,一般來說設(shè)計者應(yīng)該極力避免使用FPGA的BlockRAM IP來生成大容量的BlockRAM。比如說,用Block Memory Generator生成一個位寬為16,深度為1M的BIockRAM。因為在這種情況下,IP生成工具是把很多Block RAM單元(以AlteraCycloneIV為例,其BlockRAM基本單元為 M9K,即一個BlockRAM的存儲容量為9kbit,其最大讀寫位寬和深度是確定的)拼接在一起形成-個大的BIocKRAM。這種情況下,IP生成工具生成的BlockRAM由于多片拼接在起,有可能造成各個BlockRAM基本單元間的距離過大,進(jìn)而造成走線過長,從而產(chǎn)生擁塞和布線困難問題,如圖14-5所示。

如圖14-5所示,FPGA中每個BlockRAM單元(以M9K為例)在基底中都是列狀分布,如果生成的BIocKRAM容量太大,那么將會使用一列甚至是兩列M9K來拼接。而對于外部信號來說,就只有ADDR總線、DATA總線、WR信號等對其操作,這就要求ADDR、DATA、WR等信號的輸出寄存器到各個M9K的時序路徑都要滿足而如果M9K過多,那么基本上這是不可能達(dá)到的,如此即會造成布線擁塞。

正確的解決方法是把一個大的BlockRAM手動拼接,假設(shè)要生成一個位寬為16bit、深度為1M的Block RAM,那么可以把其拆分成10個位寬為16bit、深度為100K的Block RAM,然后再由這些較小的BlockRAM來組成一個大的BIockRAM。讀者可能會問,這跟上面的有何區(qū)別?區(qū)別就是設(shè)計者可以對ADDR、DATA、WR等信號進(jìn)行邏輯復(fù)制,即一共有10個相同的ADDR,DATA,WR分別操作這10個BlockRAM,然后根據(jù)操

521e1f12-e68c-11ee-a297-92fbcf53809c.png

作結(jié)果進(jìn)行選擇輸出,從而降低了ADDR、DATA、WR等信號到達(dá)各個M9K的扇出提高布線成功率,如圖14-6所示。如圖14-6所示,原來一個大的BIockRAM被拆分成了N個,每個都由一套等效的ADDR、DATA和WR進(jìn)行控制,從而降低了ADDR、DATA和WR在操作大的BlockRAM時的扇出,增加了可布線和時序收斂性。另外,在各個BIockRAM的輸出MUX里要多打幾級pipeline,有助于時序收斂。同理,對于DSP硬CORE使用過多造成的布線時序問題,作者推薦對DSP硬CORE的輸入輸出進(jìn)行多級pipeline。

4.問題④的解決方法

對于設(shè)計中的電路交叉線過多引起的布局布線問題的解決,有可能需要對電路/邏輯結(jié)構(gòu)進(jìn)行優(yōu)化或者再設(shè)計。這跟PCB布局布線是一個道理,如果一個設(shè)計在PCB布線時發(fā)現(xiàn),原理圖設(shè)計者對IC之間引腳的連線比較隨意,造成交叉線過多,比如說MCU的通用I/O跟外部芯片的連接,那么這時候可以選擇調(diào)換MCU通用I/O引腳來降低連線之間的交叉,進(jìn)而降低布局布線難度。比如說,一個邏輯設(shè)計的結(jié)構(gòu)如圖14-7所示。

這種結(jié)構(gòu)的數(shù)據(jù)流很容易造成布線擁塞或者布線困難,因為輸入數(shù)據(jù)流之間是交

52312184-e68c-11ee-a297-92fbcf53809c.png

叉的,而輸出又有反饋環(huán)節(jié)。如果輸入輸出的位寬很大,那么將會導(dǎo)致布線困難的問題。對于此類問題,一般來說由于是邏輯電路架構(gòu)/功能所導(dǎo)致,修改需要花費(fèi)很大的力氣。一般來說,在不修改整體架構(gòu)的情況下,在數(shù)據(jù)的輸入輸出之間最好做多級流水線寄存器,目的并不是減少組合邏輯的層數(shù),而是減少寄存器到寄存器之間的走線。圖14-7的硬件結(jié)構(gòu)存在大量交叉,因此很多內(nèi)部互連需要繞很遠(yuǎn),從而大大增加了走線延時。這樣就只能增加寄存器的流水級數(shù),降低寄存器到寄存器之間的走線延時。

5.問題⑤的解決方法

還有一種情況是FPGA引腳分配不合理導(dǎo)致數(shù)據(jù)流出現(xiàn)大量交叉進(jìn)而導(dǎo)致時序收斂困難或者布線失敗。在FPGA的基底里面,引腳的排布跟外面封裝的引腳排布是不一樣的,FPGA基底里面的引腳排布大部分位于芯片的左邊、右邊、上邊和下邊,如圖14-8所示。

對于很多BGA封裝的FPGA,盡管從其封裝圖上看,引腳分布在芯片內(nèi)部,如圖14-9所示,但是實際上在芯片內(nèi)部,引腳的排布卻是跟圖14-8類似。因此,當(dāng)引腳分配不合理時,在FPGA內(nèi)部的數(shù)據(jù)流有可能造成交叉,或者輸入輸出混在一起,如圖14-10所示。

5242d30c-e68c-11ee-a297-92fbcf53809c.png

如果引腳分配不合理,輸入和輸出的I/O在FPGA的基底引腳中的距離都放得很近的話,那么當(dāng)數(shù)據(jù)很多且內(nèi)部邏輯處理占用資源較多時,將會帶來很大的布線問題因此可酌情對引腳進(jìn)行調(diào)整,力爭做到數(shù)據(jù)流是順著的,如圖14-11所示。

5259d14c-e68c-11ee-a297-92fbcf53809c.png

其實這一步應(yīng)該在FPGA原理圖設(shè)計階段的FPGAPinLocation時就要考慮到寧可在前期的方案設(shè)計方面多花一點(diǎn)功夫,也不要匆匆上馬,欠缺考慮,只有在前期做足準(zhǔn)備,到后面才會事半功倍。

小 結(jié)

本章講述了常見的導(dǎo)致FPGA布局布線失敗的典型情況,并給出了解決問題的思路和例子。隨著設(shè)計規(guī)模越來越大,FPGA時序收斂的問題日益凸現(xiàn)。因此,在遇到此類問題時要心中有數(shù),最好在方案規(guī)劃和編碼階段就對此有準(zhǔn)備和考慮,降低此類問題發(fā)生的概率。




審核編輯:劉清

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

    關(guān)注

    1626

    文章

    21678

    瀏覽量

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

    關(guān)注

    31

    文章

    5325

    瀏覽量

    120048
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59710
  • PCB布線
    +關(guān)注

    關(guān)注

    20

    文章

    463

    瀏覽量

    42031

原文標(biāo)題:FPGA布局布線失敗怎么辦(三)

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    PADS Layout布局布線什么技巧

    PADS Layout布局布線什么技巧什么心得分享下吧,沒找到感覺啊。。。。
    發(fā)表于 12-31 11:20

    FPGA去耦電容如何布局布線

    `各位大神,請問FPGA去耦電容如何布局布線?1.根據(jù)文檔,一般去耦電容的數(shù)量都少于電源引腳,那么去耦電容要放到哪些管腳旁邊?2.以下三種方案哪種好?2.1電容放在PCB top層
    發(fā)表于 08-22 14:57

    如何判斷PCB布局布線合理?謝謝

    如何判斷PCB布局布線合理?謝謝
    發(fā)表于 11-21 22:39

    如何應(yīng)對FPGA擁塞問題

    的邏輯電路之間應(yīng)該相互緊鄰。擁塞問題十分常見,賽靈思,英特爾和 Plunify 的應(yīng)對方法又是什么?賽靈思FPGA 中特定的資源會提供某些機(jī)制,使
    發(fā)表于 06-26 15:19

    PCB布局布線的設(shè)計技巧哪些?

    PCB布局布線的設(shè)計技巧哪些?
    發(fā)表于 04-25 07:30

    高速PCB的布局布線優(yōu)化

    本內(nèi)容詳細(xì)介紹了高速PCB設(shè)計的布局布線優(yōu)化方法,歡迎大家下載學(xué)習(xí)
    發(fā)表于 09-27 16:22 ?0次下載
    高速PCB的<b class='flag-5'>布局</b><b class='flag-5'>布線</b>優(yōu)化

    FPGA設(shè)計的塑封式布局布線介紹

    在一個環(huán)境中實施從合成到塑封式布局布線以及比特流生成的全套 FPGA 設(shè)計。界面中內(nèi)置了用于運(yùn)行布局布線的常用選項,并在與合成結(jié)果相同的
    的頭像 發(fā)表于 05-17 06:06 ?2859次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計的塑封式<b class='flag-5'>布局</b>和<b class='flag-5'>布線</b>介紹

    FPGA布局布線

    布局布線 PlaceRoute 1 布局 我們前面做的那些設(shè)計流程得到的LUT門級網(wǎng)表就好比一個購物清單,即LUT門級網(wǎng)表。網(wǎng)表里提供的僅僅是從邏輯關(guān)系上一些LUT結(jié)構(gòu)的連接。我們需要將這些LUT
    的頭像 發(fā)表于 10-25 10:25 ?8240次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>布局</b><b class='flag-5'>布線</b>

    MCM布局布線的軟件實現(xiàn)

    本設(shè)計按照圖1所示的MCM布局布線設(shè)計流程,以檢測器電路為例,詳細(xì)闡述了利用信號完整性分析工具進(jìn)行MCM布局布線設(shè)計的方法。首先對封裝零件庫
    的頭像 發(fā)表于 11-20 16:37 ?3182次閱讀

    FPGA布線為什么會擁塞?如何解

    此類問題是FPGA設(shè)計實現(xiàn)中比較棘手的問題,Xilinx針對7系列及以后的UltraScale/UltraScale+等,提出了UltraFast設(shè)計方法論,用于指導(dǎo)該系列器件的成功設(shè)計和實現(xiàn),完成復(fù)雜系統(tǒng)設(shè)計。
    發(fā)表于 08-25 11:56 ?1574次閱讀

    FPGA布線擁塞主要原因及解決方法

    此類問題是FPGA設(shè)計實現(xiàn)中比較棘手的問題,Xilinx針對7系列及以后的UltraScale/UltraScale+等,提出了UltraFast設(shè)計方法論,用于指導(dǎo)該系列器件的成功設(shè)計和實現(xiàn),完成復(fù)雜系統(tǒng)設(shè)計。
    的頭像 發(fā)表于 12-07 10:22 ?1233次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>布線</b><b class='flag-5'>擁塞</b>主要原因及解決<b class='flag-5'>方法</b>

    PCB布局布線技巧104問

    在電子產(chǎn)品設(shè)計中,PCB布局布線是最重要的一步,PCB布局布線的好壞將直接影響電路的性能。現(xiàn)在,雖然很多軟件可以實現(xiàn)PCB自動
    發(fā)表于 05-05 15:34 ?0次下載

    何解決高速信號的手工布線和自動布線之間的矛盾?

    何解決高速信號的手工布線和自動布線之間的矛盾? 高速信號的手工布線和自動布線之間存在矛盾主要是因為高速信號傳輸需要考慮到許多影響因素,包括
    的頭像 發(fā)表于 11-24 14:38 ?613次閱讀

    fpga布局布線算法加速

    任務(wù)是將邏輯元件與連接線路進(jìn)行合理的布局布線,以實現(xiàn)性能優(yōu)化和電路連接的可靠性。然而,FPGA布局布線的過程通常是一項繁瑣且耗時的任務(wù),因
    的頭像 發(fā)表于 12-20 09:55 ?801次閱讀

    FPGA布局布線的可行性 FPGA布局布線失敗怎么辦

    隨著電子技術(shù)的進(jìn)步.FPGA邏輯電路能完成的功能越來越多,同樣也帶來了一個很大的問題,即邏輯電路的規(guī)模越來越大,這意味著RTL代碼到FPGA的映射、布局布線所花費(fèi)的時間也越來越長。
    的頭像 發(fā)表于 03-18 10:57 ?763次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>布局</b><b class='flag-5'>布線</b>的可行性 <b class='flag-5'>FPGA</b><b class='flag-5'>布局</b><b class='flag-5'>布線</b>失敗怎么辦