1.實驗目的
通過例程探索Vivado HLS設計流
- 用圖形使用者界面和TCL腳本兩種方式建立Vivado HLS項目
- 用各種HLS指令綜合接口
- 優化Vivado HLS設計來滿足各種限制
- 用不用的指令來探索多個HLS解決方案
2.實驗内容
實驗中檔案中包含一個矩陣乘法器的實作,實作兩個矩陣inA和inB相乘得出結果,并且提供了一個包含了計算結果的testbench檔案來與所得結果進行對比驗證。
3.實驗步驟
3.1.在Vivado HLS GUI界面中建立項目
3.1.1.啟動Vivado HLS 2018.1
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNjRzMlRTMmFzYhdTNmljYkVzYkJDOkZmYmBzYzIWYm9CX4IzLcZDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.png)
3.1.2.建立一個新的工程
添加提前建立好的源檔案進來,因為我們探索的是設計流而不是程式設計:
添加提前建立好的測試檔案進來:
對于具體的FPGA進行解決方案配置,如圖所示:
工程建立完成,綜合界面如圖所示:
3.2.在Vivado HLS 指令行中快速建立項目
在3.1節中采用GUI界面完成了建立工程的工作,這個工程命名和添加檔案建立工程的工作可以由一個TCL腳本完成,可以大幅提高我們的效率~
3.2.1.打開Vivado HLS 指令行界面
3.2.2.編寫建立工程TCL腳本
建立一個檔案run_hls_pynq.tcl,然後編寫以下工程配置:
# 建立工程
open_project -reset matrix_mult_prj
# 添加源檔案和測試檔案
add_files matrix_mult.cpp
add_files matrix_mult.h
add_files -tb matrix_mult_test.cpp
# 設定工程頂層
set_top matrix_mult
# 建立解決方案
open_solution -reset solution1
# 選擇具體的FPGA晶片配置
set_part {xc7z010clg400-1}
create_clock -period 5
# 模拟C代碼
csim_design
exit
3.2.3.在Vivado HLS指令行運作TCL腳本
在剛剛打開的Vivado HLS指令行界面中輸入cd <腳本及源檔案所在絕對路徑>,然後輸入目錄所在盤符,進入目錄後使用指令vivado_hls -f run_hls_pynq.tcl即可運作腳本,完整過程如圖所示:
這樣一個工程就建立好了;
3.2.4.在Vivado HLS指令行打開建立的工程
使用指令vivado_hls -p matrix_mult_prj即可在GUI界面打開工程,如圖:
3.3.Vidavo HLS中的設計優化
3.3.1.檔案作用c
- matrix_mult.cpp 包含了疊代計算矩陣乘法的代碼
- matrix_mult.h 包含了宏定義和函數聲明
- matrix_mult_test.cpp 測試檔案,包含了使用HLS硬體解決方案計算和軟體計算的結果,并計算驗證
3.3.2.運作C仿真
點選Run C Simulation按鈕,然後不用選擇,直接下一步,可以看到控制台輸出:
3.3.2.使用HLS綜合C++代碼
點選C Synthesis按鈕,Vivado HLS會開始綜合C++代碼,綜合完成後會自動打開綜合報告,其中詳細的描述了設計的時序以及FPGA資源占用估算等:
3.3.3.C/RTL共同協作
點選Run C/RTL Cosimulation按鈕,選擇生成verilog語言檔案,設計完成後會自動彈出結果,如圖所示:
3.3.4.建立一個解決方案進行對比
點選New Solution按鈕建立一個解決方案:
然後打開matrix_mult.cpp檔案,選擇右邊的directive視圖,右擊Product,選擇Inser Directive,然後選擇PIPELINE,确定之後運作C綜合來綜合出RTL設計,完成後同樣會彈出設計資訊:
然後可以将報告與之前solution1的報告進行對比,
3.3.5.分析
進入Analysis視圖:
3.3.6.建立一個流水線解決方案
3.3.7.解決方案對比
3.4.接口綜合
3.4.1.TCL腳本建立工程
在F:\SOC\PYNQ-Z2\HLSproject\hls\tut3C檔案夾,使用指令:
vivado_hls -f run_hls_pynq.tcl
3.4.2.打開工程
3.4.3.C Synthesis
4.實驗總結