Vivado HLS(High-level Synthesis)筆記七:函數層面的優化

一. 代碼風格

在這裏插入圖片描述

  • 從函數這個角度來說代碼風格,主要是看參數的數據類型,C++中的數據類型是以8爲邊界的,而實際硬件中我們可能會遇到任意精度的數據類型,因此我們一定在C++中定義爲任意精度的數據類型;

二. lnline

在這裏插入圖片描述在這裏插入圖片描述

  • 對函數的Inline實際是去除函數的層次化,帶來的好處是可以改善資源,不再需要調用函數的相關邏輯,對於小函數HLS會自動Inline,如果我們不希望,可以通過directive中的 -off這個選型來實現;

三. Allocation

在這裏插入圖片描述在這裏插入圖片描述

  • allocation定義了函數與相應的RTL model之間的關係;
  • allocation的影響,它實際上是在Latency和Area上做折衷;

四. Task Level Pipelining: Dataflow

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

  • 實際上是做並行處理,可以看到用到了channel,channel可以是ping-pong RAM,也可以是FIFO;
  • Dataflow可以作用於一些順序處理的任務,比如函數或者循環,或者兩者都有;
  • Dataflow是將順序處理變爲並行處理,使得當前任務不需要前面的任務結束才執行,可以並行處理,所以Dataflow允許任務之間有交疊,提高了數據吞吐量,降低了Latency;

總結:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章