chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何在不改變RTL代碼的情況下,優(yōu)化FPGA HLS設(shè)計(jì)

454398 ? 來源:賽靈思中文社區(qū) ? 作者:賽靈思中文社區(qū) ? 2020-12-20 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

用軟件從 C 轉(zhuǎn)化來的 RTL 代碼其實(shí)并不好理解。今天我們就來談?wù)?,如何在不改?RTL 代碼的情況下,提升設(shè)計(jì)性能。

本項(xiàng)目所需應(yīng)用與工具:賽靈思HLS、Plunify Cloud 以及 InTime。

前言
高層次的設(shè)計(jì)可以讓設(shè)計(jì)以更簡(jiǎn)潔的方法捕捉,從而讓錯(cuò)誤更少,調(diào)試更輕松。然而,這種方法最受詬病的是對(duì)性能的犧牲。在復(fù)雜的 FPGA 設(shè)計(jì)上實(shí)現(xiàn)高性能,往往需要手動(dòng)優(yōu)化 RTL 代碼,這也意味著從 C 轉(zhuǎn)化得到 RTL 基本不可能。其實(shí),使用 FPGA 工具設(shè)置來優(yōu)化設(shè)計(jì)可以最小限度地減少對(duì)性能的犧牲,這種方法是存在的。

高效地找到合適的FPGA工具設(shè)置
盡管工程師們知道 FPGA 工具的設(shè)置,但是這些設(shè)置往往并沒有充分利用。一般而言,工具設(shè)置只有在出現(xiàn)時(shí)序問題的時(shí)候才會(huì)派上用途。然而,對(duì)于已經(jīng)達(dá)到性能目標(biāo)的設(shè)計(jì)來說,如果繼續(xù)調(diào)整工具設(shè)計(jì),仍然有10%-50%的性能提升潛力。

真正的難點(diǎn)在于選擇正確的工具設(shè)置,畢竟各種 FPGA 工具一般都有有30-70個(gè)不同的布局布線設(shè)置,可選的設(shè)置組合實(shí)在是太多了。您可以寫腳本來運(yùn)行不同的推薦指令/策略。市面上也有工具,來自動(dòng)管理并運(yùn)行設(shè)計(jì)探索。

另一個(gè)難點(diǎn)就是不充裕的計(jì)算能力。典型的嵌入式應(yīng)用是在單臺(tái)電腦上設(shè)計(jì)的。運(yùn)行多個(gè)編譯需要更多的計(jì)算能力,這就要求更多的時(shí)間。如果您可以(使用云計(jì)算)并行運(yùn)行,周轉(zhuǎn)時(shí)間就會(huì)變短。

如何優(yōu)化高層次的設(shè)計(jì) - “Sobel濾鏡”項(xiàng)目
這是一個(gè)用于視屏處理的參考設(shè)計(jì),來自賽靈思的官網(wǎng) https://china.xilinx.com/support/documentation/application_notes/xapp890... 。該設(shè)計(jì)的功能是 Sobel 濾鏡,目標(biāo)器件是擁有雙核Dual ARM? Cortex?-A9MPCore 的 FPGA。

我們使用賽靈思 HLS 來打開這個(gè)設(shè)計(jì)。

圖一:參考設(shè)計(jì)– Sobel濾鏡

圖一:參考設(shè)計(jì)– Sobel濾鏡

它的時(shí)鐘周期是5.00ns,也就是200MHz。從下圖的時(shí)序預(yù)估中可以看出,它離時(shí)序目標(biāo)還差506ps(181MH1),也就是比目標(biāo)速率還差10%。

圖二:當(dāng)前時(shí)序結(jié)果

圖二:當(dāng)前時(shí)序結(jié)果

導(dǎo)出成 RTL 項(xiàng)目
不需要改變 C++ 代碼,把設(shè)計(jì)輸出成一個(gè)RTL 的 Vivado 項(xiàng)目。在 “Solution”下面,選擇“Export RTL”。

圖三:從HLS輸出Vivado項(xiàng)目

圖三:從HLS輸出Vivado項(xiàng)目

它會(huì)在后臺(tái)執(zhí)行 Vivado,并生成一個(gè)項(xiàng)目文件(XPR)。它同時(shí)也會(huì)編譯設(shè)計(jì),您應(yīng)該在控制臺(tái)(Console)看到真實(shí)的時(shí)序細(xì)節(jié)。一旦完成,您可以在 /solution/impl/verilog/ 文件夾下找到項(xiàng)目文件。

圖四:Vivado 項(xiàng)目文件

圖四:Vivado 項(xiàng)目文件

找到這個(gè) XPR 文件之后,您可以用 Vivado 打開它來驗(yàn)證。您將看到生成好的 RTL 源文件。

圖五:從 HLS 生成的 RTL

圖五:從 HLS 生成的 RTL

時(shí)序優(yōu)化
下一步,是使用 InTime 設(shè)計(jì)探索工具,當(dāng)然,您也可以自己寫腳本來嘗試 Vivado 工具中自帶的指令和策略。請(qǐng)申請(qǐng) InTime 的免費(fèi)試用在本地運(yùn)行,也可以注冊(cè)一個(gè) Plunify Cloud 云平臺(tái)的賬戶,試用所提供的免費(fèi)云幣來在云端運(yùn)行預(yù)置好的 FPGA 工具。

啟動(dòng) InTime 之后,打開項(xiàng)目文件。在選擇 Vivado 版本時(shí),請(qǐng)使用“相同的”版本。例如,如果您使用2017.3 HLS,請(qǐng)選擇2017.3 Vivado。

選擇“Hot Start”配方(recipe)。此配方包含一系列更具以往其他設(shè)計(jì)的經(jīng)驗(yàn)而推薦的策略。

圖六:選擇

圖六:選擇 "Hot Start" 配方

點(diǎn)擊“Start Recipe”來開始優(yōu)化。如果您在云端運(yùn)行,您應(yīng)該并行運(yùn)行多個(gè)編譯來減少周轉(zhuǎn)時(shí)間。

優(yōu)化過程和結(jié)果
第一輪結(jié)束之后 (“Hot Start”配方),最好的結(jié)果是“hotstart_1”策略。然而,它仍然距離目標(biāo)時(shí)序90ns。

我們?cè)凇癏otStart_1”的結(jié)果上使用了第二個(gè)配方,叫做“Extra Opt Exploration”。這一輪將集中優(yōu)化關(guān)鍵的路徑。這是一次迭代優(yōu)化,并且只要仍有提升,就不斷地重復(fù)自己。如果達(dá)到時(shí)序目標(biāo)或者不再提升的時(shí)候,它就會(huì)停止。

圖七:僅通過工具設(shè)置完成時(shí)序收斂

圖七:僅通過工具設(shè)置完成時(shí)序收斂

經(jīng)過兩輪優(yōu)化,總共15此編譯后,設(shè)計(jì)達(dá)到了目標(biāo)時(shí)序,200MHz。而這一切完全沒有修改 RTL 源代碼。

讓性能更進(jìn)一步
讓性能更進(jìn)一步需要各方面的優(yōu)化 – 結(jié)構(gòu)設(shè)計(jì)、代碼和工具。工具設(shè)置的探索可以克服高層次設(shè)計(jì)的性能犧牲,并且不會(huì)讓生產(chǎn)效率的好處減少。對(duì)于高層次設(shè)計(jì)的工程師來說,這是一種共贏。

編輯:hfy


聲明:本文內(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)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1660

    文章

    22415

    瀏覽量

    636494
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HLS設(shè)計(jì)中的BRAM使用優(yōu)勢(shì)

    高層次綜合(HLS)是一種將高級(jí)編程語言(如C、C++或SystemC)轉(zhuǎn)換為硬件描述語言(HDL)的設(shè)計(jì)方法。在FPGA設(shè)計(jì)中,設(shè)計(jì)者可以靈活地利用FPGA內(nèi)部的資源,如塊RAM(BRAM)。雖然
    的頭像 發(fā)表于 01-28 14:36 ?254次閱讀

    通過vivado HLS設(shè)計(jì)一個(gè)FIR低通濾波器

    Vivado HLS是一款強(qiáng)大的高層次綜合工具,可將C/C++代碼轉(zhuǎn)換為硬件描述語言(HDL),顯著提升FPGA開發(fā)效率。
    的頭像 發(fā)表于 01-20 16:19 ?318次閱讀
    通過vivado <b class='flag-5'>HLS</b>設(shè)計(jì)一個(gè)FIR低通濾波器

    何在vivadoHLS中使用.TLite模型

    測(cè)試 在Vivado HLS中運(yùn)行綜合、高級(jí)綜合和RTL仿真,確保設(shè)計(jì)正確。 注意事項(xiàng) 以上步驟是一個(gè)簡(jiǎn)化的示例,具體的實(shí)現(xiàn)可能因您的模型和需求而有所不同。在實(shí)際應(yīng)用中,您可能需要進(jìn)一步優(yōu)化接口和數(shù)據(jù)傳輸,以滿足性能和資源要
    發(fā)表于 10-22 06:29

    何在“SD 卡 NAND 閃存”的情況下使用 Non-OS NVTFAT?

    何在“SD 卡 NAND 閃存”的情況下使用 Non-OS NVTFAT
    發(fā)表于 09-01 07:58

    當(dāng)不同的數(shù)據(jù)放在同一個(gè)Flash頁面上時(shí),請(qǐng)問如何在不影響其他數(shù)據(jù)的情況下更改一些單獨(dú)的數(shù)據(jù)?

    當(dāng)不同的數(shù)據(jù)放在同一個(gè)Flash頁面上時(shí),如何在不影響其他數(shù)據(jù)的情況下更改一些單獨(dú)的數(shù)據(jù)?
    發(fā)表于 08-22 06:25

    請(qǐng)問如何在keil μVision 5上進(jìn)行ARM編譯器的代碼優(yōu)化?

    何在keil μVision 5上進(jìn)行ARM編譯器的代碼優(yōu)化?
    發(fā)表于 08-20 07:37

    請(qǐng)問如何在Keil開發(fā)環(huán)境中查看代碼大小和SRAM使用情況?

    何在Keil開發(fā)環(huán)境中查看代碼大小和SRAM使用情況?
    發(fā)表于 08-20 06:38

    何在沒有 NuLink 編程器的情況下執(zhí)行 SWD 解鎖序列?

    我迫切需要知道如何在沒有 NuLink 編程器的情況下執(zhí)行 SWD 解鎖序列。
    發(fā)表于 08-18 07:04

    RTL級(jí)機(jī)器人電機(jī)控制器的FPGA設(shè)計(jì)

    借助Verilog,在FPGA中實(shí)現(xiàn)了帶編碼器的兩臺(tái)電機(jī)的電機(jī)控制系統(tǒng)的RTL級(jí)設(shè)計(jì)。
    的頭像 發(fā)表于 07-07 14:01 ?2913次閱讀
    <b class='flag-5'>RTL</b>級(jí)機(jī)器人電機(jī)控制器的<b class='flag-5'>FPGA</b>設(shè)計(jì)

    何在Unified IDE中創(chuàng)建視覺庫HLS組件

    最近我們分享了開發(fā)者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 傳統(tǒng) IDE)和開發(fā)者分享|AMD Vitis HLS 系列 2:AMD
    的頭像 發(fā)表于 07-02 10:55 ?1455次閱讀
    如<b class='flag-5'>何在</b>Unified IDE中創(chuàng)建視覺庫<b class='flag-5'>HLS</b>組件

    如何使用AMD Vitis HLS創(chuàng)建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 來創(chuàng)建一個(gè) HLS IP,通過 AXI4 接口從存儲(chǔ)器讀取數(shù)據(jù)、執(zhí)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算,然后將數(shù)據(jù)寫回存儲(chǔ)器。接著會(huì)在 AMD Vivado Design Suite 設(shè)計(jì)中使用此 HLS
    的頭像 發(fā)表于 06-13 09:50 ?1892次閱讀
    如何使用AMD Vitis <b class='flag-5'>HLS</b>創(chuàng)建<b class='flag-5'>HLS</b> IP

    FX2LP如何在不更改硬件的情況下對(duì)其進(jìn)行重新編程?

    我正在使用 FX2LP/ CY7C68013A-128AXC設(shè)備(定制板),我有一些問題需要您的幫助。 1如果我的 EEPROM 已經(jīng)有固件并且正在運(yùn)行,如何在不更改硬件的情況下對(duì)其進(jìn)行重新
    發(fā)表于 05-06 11:16

    Vivado HLS設(shè)計(jì)流程

    直接使用C、C++或 System C 來對(duì) Xilinx 系列的 FPGA 進(jìn)行編程,從而提高抽象的層級(jí),大大減少了使用傳統(tǒng) RTL描述進(jìn)行 FPGA 開發(fā)所需的時(shí)間。
    的頭像 發(fā)表于 04-16 10:43 ?1634次閱讀
    Vivado <b class='flag-5'>HLS</b>設(shè)計(jì)流程

    LPC1227FBD48如何在沒有SDK的情況下配置FreeRTOS?

    我想在基于 LPC1227FBD48 系列的現(xiàn)有項(xiàng)目中使用 FreeRTOS,但我們沒有可用于控制器的 SDK。我們?nèi)?b class='flag-5'>何在沒有 SDK 的情況下配置 FreeRTOS。
    發(fā)表于 04-02 06:33

    英諾達(dá)推出RTL功耗優(yōu)化工具

    英諾達(dá)(成都)電子科技有限公司隆重推出芯片設(shè)計(jì)早期RTL級(jí)功耗優(yōu)化工具—EnFortius RTL Power Explorer(ERPE),該工具可以高效、全面地在RTL設(shè)計(jì)階段進(jìn)行
    的頭像 發(fā)表于 03-20 17:06 ?1179次閱讀