国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在不改變RTL代碼的情況下,優化FPGA HLS設計

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

掃碼添加小助手

加入工程師交流群

用軟件從 C 轉化來的 RTL 代碼其實并不好理解。今天我們就來談談,如何在不改變 RTL 代碼的情況下,提升設計性能。

本項目所需應用與工具:賽靈思HLS、Plunify Cloud 以及 InTime。

前言
高層次的設計可以讓設計以更簡潔的方法捕捉,從而讓錯誤更少,調試更輕松。然而,這種方法最受詬病的是對性能的犧牲。在復雜的 FPGA 設計上實現高性能,往往需要手動優化 RTL 代碼,這也意味著從 C 轉化得到 RTL 基本不可能。其實,使用 FPGA 工具設置來優化設計可以最小限度地減少對性能的犧牲,這種方法是存在的。

高效地找到合適的FPGA工具設置
盡管工程師們知道 FPGA 工具的設置,但是這些設置往往并沒有充分利用。一般而言,工具設置只有在出現時序問題的時候才會派上用途。然而,對于已經達到性能目標的設計來說,如果繼續調整工具設計,仍然有10%-50%的性能提升潛力。

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

另一個難點就是不充裕的計算能力。典型的嵌入式應用是在單臺電腦上設計的。運行多個編譯需要更多的計算能力,這就要求更多的時間。如果您可以(使用云計算)并行運行,周轉時間就會變短。

如何優化高層次的設計 - “Sobel濾鏡”項目
這是一個用于視屏處理的參考設計,來自賽靈思的官網 https://china.xilinx.com/support/documentation/application_notes/xapp890... 。該設計的功能是 Sobel 濾鏡,目標器件是擁有雙核Dual ARM? Cortex?-A9MPCore 的 FPGA。

我們使用賽靈思 HLS 來打開這個設計。

圖一:參考設計– Sobel濾鏡

圖一:參考設計– Sobel濾鏡

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

圖二:當前時序結果

圖二:當前時序結果

導出成 RTL 項目
不需要改變 C++ 代碼,把設計輸出成一個RTL 的 Vivado 項目。在 “Solution”下面,選擇“Export RTL”。

圖三:從HLS輸出Vivado項目

圖三:從HLS輸出Vivado項目

它會在后臺執行 Vivado,并生成一個項目文件(XPR)。它同時也會編譯設計,您應該在控制臺(Console)看到真實的時序細節。一旦完成,您可以在 /solution/impl/verilog/ 文件夾下找到項目文件。

圖四:Vivado 項目文件

圖四:Vivado 項目文件

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

圖五:從 HLS 生成的 RTL

圖五:從 HLS 生成的 RTL

時序優化
下一步,是使用 InTime 設計探索工具,當然,您也可以自己寫腳本來嘗試 Vivado 工具中自帶的指令和策略。請申請 InTime 的免費試用在本地運行,也可以注冊一個 Plunify Cloud 云平臺的賬戶,試用所提供的免費云幣來在云端運行預置好的 FPGA 工具。

啟動 InTime 之后,打開項目文件。在選擇 Vivado 版本時,請使用“相同的”版本。例如,如果您使用2017.3 HLS,請選擇2017.3 Vivado。

選擇“Hot Start”配方(recipe)。此配方包含一系列更具以往其他設計的經驗而推薦的策略。

圖六:選擇

圖六:選擇 "Hot Start" 配方

點擊“Start Recipe”來開始優化。如果您在云端運行,您應該并行運行多個編譯來減少周轉時間。

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

我們在“HotStart_1”的結果上使用了第二個配方,叫做“Extra Opt Exploration”。這一輪將集中優化關鍵的路徑。這是一次迭代優化,并且只要仍有提升,就不斷地重復自己。如果達到時序目標或者不再提升的時候,它就會停止。

圖七:僅通過工具設置完成時序收斂

圖七:僅通過工具設置完成時序收斂

經過兩輪優化,總共15此編譯后,設計達到了目標時序,200MHz。而這一切完全沒有修改 RTL 源代碼。

讓性能更進一步
讓性能更進一步需要各方面的優化 – 結構設計、代碼和工具。工具設置的探索可以克服高層次設計的性能犧牲,并且不會讓生產效率的好處減少。對于高層次設計的工程師來說,這是一種共贏。

編輯:hfy


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1660

    文章

    22411

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    HLS設計中的BRAM使用優勢

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

    通過vivado HLS設計一個FIR低通濾波器

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

    何在vivadoHLS中使用.TLite模型

    測試 在Vivado HLS中運行綜合、高級綜合和RTL仿真,確保設計正確。 注意事項 以上步驟是一個簡化的示例,具體的實現可能因您的模型和需求而有所不同。在實際應用中,您可能需要進一步優化接口和數據傳輸,以滿足性能和資源要
    發表于 10-22 06:29

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

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

    當不同的數據放在同一個Flash頁面上時,請問如何在不影響其他數據的情況下更改一些單獨的數據?

    當不同的數據放在同一個Flash頁面上時,如何在不影響其他數據的情況下更改一些單獨的數據?
    發表于 08-22 06:25

    請問如何在keil μVision 5上進行ARM編譯器的代碼優化

    何在keil μVision 5上進行ARM編譯器的代碼優化
    發表于 08-20 07:37

    請問如何在Keil開發環境中查看代碼大小和SRAM使用情況

    何在Keil開發環境中查看代碼大小和SRAM使用情況
    發表于 08-20 06:38

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

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

    RTL級機器人電機控制器的FPGA設計

    借助Verilog,在FPGA中實現了帶編碼器的兩臺電機的電機控制系統的RTL級設計。
    的頭像 發表于 07-07 14:01 ?2903次閱讀
    <b class='flag-5'>RTL</b>級機器人電機控制器的<b class='flag-5'>FPGA</b>設計

    何在Unified IDE中創建視覺庫HLS組件

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

    如何使用AMD Vitis HLS創建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 來創建一個 HLS IP,通過 AXI4 接口從存儲器讀取數據、執行簡單的數學運算,然后將數據寫回存儲器。接著會在 AMD Vivado Design Suite 設計中使用此 HLS
    的頭像 發表于 06-13 09:50 ?1865次閱讀
    如何使用AMD Vitis <b class='flag-5'>HLS</b>創建<b class='flag-5'>HLS</b> IP

    FX2LP如何在不更改硬件的情況下對其進行重新編程?

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

    Vivado HLS設計流程

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

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

    我想在基于 LPC1227FBD48 系列的現有項目中使用 FreeRTOS,但我們沒有可用于控制器的 SDK。我們如何在沒有 SDK 的情況下配置 FreeRTOS。
    發表于 04-02 06:33

    英諾達推出RTL功耗優化工具

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