(C) by T.IZUMI, Oct 2015
Ver. 2015.10.06a
高位合成による回路設計チュートリアル
Xilinx チュートリアル(UG871)の補足
ソースコードを含むアーカイブ一式はこちら:
http://www.ritsumei.ac.jp/se/re/izumilab/lecture/15VivadoHlsTut.zip
この課題はXilinxのチュートリアルの補足である。
Vivado Design Suite Tutorial - High-Level Synthesis (UG871)
ug871-vivado-high-level-synthesis-tutorial.pdf
ug871-design-files.zip
まず
Xilinx のサイトから上記ファイルをダウンロードし、内容を確認すること。
- ターゲットボード
- ZYBO or ZedBoard
- ※ZYBOで実行する場合はボード定義ファイルをインストールしておくこと。
https://reference.digilentinc.com/vivado:boardfiles
また、IP Integrator 用のボード定義ファイル(ZYBO_zynq_def.xml)もダウンロードしておくこと
https://www.digilentinc.com/Products/Detail.cfm?Prod=ZYBO
- ターゲットFPGA
- XC7Z010-1CLG400 or XC7Z020-1CLG484
- 開発環境
- Xilinx Vivado 2015.2
- Xilinx SDK 2015.2
- この課題では次の項目を習得する。
- Vivado HLS の基本的な使い方(Chapter2)
- Cシミュレーションによる検証(Chapter3)
- 外界とのインターフェースの設計(Chapter4)
- データと演算の精度を指定しての設計(Chapter5)
- 合成結果の解析・評価方法(Chapter6)
- 設計最適化、チューンアップ(Chapter7)
- RTLシミュレーションによる検証(Chapter8)
- 合成したモジュールを RTL から使用する例(Chapter 9)
- 合成したモジュールを Zynq から使用する例(Chapter 10)
- 合成したモジュールを DSP generator で使用する例(Chapter 11)
- この課題は次の項目を習得済みの者を対象とする。
- Verilog HDLによるRTL設計とシミュレーション
- C言語によるプログラミング
- Vivado による RTL 設計の基礎(→推奨)
- Zynq ベースの設計の基礎(→推奨)
- Vivado HLS による設計の基礎(→推奨)
- 以下、特に指定の無い項目は規定値(デフォルト、最初から入っている値)を設定する。
- Vivado は深くフォルダを掘ってトラブルを起こすので、
課題を実行するフォルダにドライブ文字を割り当てておくとよい。
subst_dir.bat のフォルダ名を変更して実行すると良い。
Chapter 1...8
- UG871 に沿って課題をすすめる。
- 1〜8章ではボードを動かさないので、ボードの設定を変更する必要はない。
Chapter 9
Chapter 10
- UG871 との相違点を以下に挙げる
- ボードを選ぶ際 … ZC702 ではなく ZYBO あるいは ZedBoard
- デバイス(part)を選ぶ際 … ZYBOはxc7z010clg400-1、ZedBoardはxc7z020clg484-1。
- p.217, 3. … Using_IP_with_Zynq/lab1/hls_macc/run_hls.tcl を Lab10-1_run_hls.tclに差し替え(同名で上書きコピー)て部品名をxc7z010clg400-1あるいはxc7z020clg484-1に編集
- p.229, 3. および Fig 10-15 …
IP Integrator の Processing System の Recustomize の際、
BoardPreset にZYBOは出てこないので、
代わりに Import XPS Settings して
ボード定義ファイル ZYBO_zynq_def.xml を読み込む。
その際、
MIO Configration の UART1 および GPIO/GPIO MIO にチェックが入っていることを確認
(入っていなければチェック)
- p.240, Step7 … ドライバの関数名がバージョンによって異なるようだ。
Using_IP_with_Zynq/lab1/project_1/project_1.sdk/Zynq_Design_wrapper_hw_platform_0/drivers/hls_macc_v1_0/src 参照。
Zynq_Design_Test/src の下の helloworld.c を Delete して、
Lab10-1_zynq_design_test.cをコピーする。(Windows の File Explorer から SDK の Projec Explorer の src の下にドラッグ&ドロップ)
- p.244, 2. …
Using_IP_with_Zynq/lab2/hls_designs/ をLab10-2_run_hls.tcl に差し替え(同名で上書きコピー)て部品名をxc7z010clg400-1あるいはxc7z020clg484-1に編集
- p.244, 2. …
Using_IP_with_Zynq/lab2/hls_designs/xfft2real.cpp をLab10-2_xfft2real.cppに差し替え(同名で上書きコピー)
(「#pragma HLS DATA_PACK variable=dout」を削除。恐らくチュートリアルファイルのバグ。)
- (誤)p.256, Figure 10-44 … 正しくは次のようなもの
- (誤)p.259, Figure 10-46 … 恐らく冗長なもの
- 参考:Lab 1
macc の高位合成の結果
- 参考:Lab 2
real2xfft の高位合成の結果
- 参考:Lab 2
xfft2real の高位合成の結果