37. ROBUSKEYデモ作成で行った作業
■ 全体の作業フロー
a. Vivado IPIで対象アルゴリズムを組み込むプラットフォームの設計
b. PC上でSW実装のアルゴリズムから、HW化する処理を抽出
c. Vivado HLS上で、抽出した処理の移植(処理の最適化も実施)
d. Vivado HLSでアルゴリズムのcsim/CoSimで確認しIP化
e. Vivado IPIで作成したIPを結合し合成、インプリメンテーション
f. SDKでアプリケーションSW、BSP、Bootの作成
周辺回路やIPといった部品から作成し、それらを統合して最後に
SWを書くという点で作業工程は「ボトムアップ型」
38. HLSでのアルゴリズムFPGA化は作業のごく一部
■ 高位合成に関する作業はIP作成部分のみ
a. Vivado IPIで対象アルゴリズムを組み込むプラットフォームの設計
b. PC上でSW実装のアルゴリズムから、HW化する処理を抽出
c. Vivado HLS上で、抽出した処理の移植(処理の最適化も実施)
d. Vivado HLSでアルゴリズムのcsim/CoSimで確認しIP化
e. Vivado IPIで作成したIPを結合し合成、インプリメンテーション
f. SDKでアプリケーションSW、BSP、Bootの作成
作業的にはc,dで1ヶ月、その他a,b,e,fで計1ヶ月
そもそも、高位合成でのIPを作成以外にもソフトウェア技術者に
とってはハードルの高い作業が沢山ある。
63. ソフトウェア技術者に必要なHWの感覚
■ SWには無い「物理リソース」の感覚
■ 例1)HLSで記述した関数の引数 W,X,Y,Zは「どんなIFにすべきか?」
void dut(din_t W, din_t X, dout_t *Y, dout_t Z[5])
■ FPGA内部での配置と面積(使用するリソース量)の感覚
■ 例2)階層化された関数は、どのように「配置されるのか」?
SWは時間軸で展開
A B C D
A
B
D
C
HWは空間的に展開
「ソフトウェア技術者は処理を時間軸で、HW技術者は処理を空間に配置」