FPGA+SoC+Linuxのブートシーケンス(Device Tree Overlay+FPGA Manager編)
FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)
FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)
そうすれば、SDSoCのライセンスは必要ありません。
また、ボードに対するSDSoC用のプラットフォームも用意する必要はありません。
また、ボードに対するSDSoC用のプラットフォームも用意する必要はありません。
パラメータを設定する setup 関数部のモジュールと kernel 関数部を 下記の図のような構成にして、
それぞれ、Vivado HLS用のコードを出力すればいいと思うんですが、いかがでしょうか?
それぞれ、Vivado HLS用のコードを出力すればいいと思うんですが、いかがでしょうか?

こうすることで、SDSoCが不要になり、ビルド時間も短くなります。
GUINNESSは吐き出すコードの各レイヤーはVivado HLSコードなので、
最上位部をSDSoCでなく、Vivado HLS用コードにすればできると思います。
最上位部をSDSoCでなく、Vivado HLS用コードにすればできると思います。
追記)2017.11.25
本日(2017.11.25)発売のインターフェース、2018年1月号に中原先生ご自身によるGUINNESSについての記事(8頁もの)が掲載されています。
なんとラズパイ3の800倍! リアルタイムPython①...高速ディープ・ラーニングに挑戦 <= クリックすると、見本の最初のページのPDFがダウンロードされます。
なんとラズパイ3の800倍! リアルタイムPython①...高速ディープ・ラーニングに挑戦 <= クリックすると、見本の最初のページのPDFがダウンロードされます。
また、Vivado HLS用コードについては、中原先生から直接、そのようなコードにはなっていることをを教えてもらいました。
サンプルコードのTinyCNNでは、sdsoc/cnn.cppのBinCNN関数は、下記のようになっていますが、
#pragma HLSの部分をコメントアウトして、Vivado HLSで合成すればいいようです。
サンプルコードのTinyCNNでは、sdsoc/cnn.cppのBinCNN関数は、下記のようになっていますが、
#pragma HLSの部分をコメントアウトして、Vivado HLSで合成すればいいようです。
{
//--------------------------------------------------------------------
// Top Function for a Binarized CNN
//--------------------------------------------------------------------
#ifdef __SDSCC__
#pragma SDS data access_pattern(t_bin_convW: SEQUENTIAL)
#pragma SDS data access_pattern(t_BNFb: SEQUENTIAL)
#pragma SDS data access_pattern(t_in_img: SEQUENTIAL)
#pragma SDS data zero_copy(t_bin_convW[0:224192])
#pragma SDS data zero_copy(t_BNFb[0:330])
#pragma SDS data zero_copy(t_in_img[0:32*32])
#endif
void BinCNN(
#ifdef __SDSCC__
int *t_bin_convW,
int *t_BNFb,
ap_int<64> t_in_img[32*32],
int fc_result[10],
int init
#else
int t_bin_convW[224192],
int t_BNFb[330],
ap_int<64> t_in_img[32*32],
int fc_result[10],
int init
#endif
)
{
/*
#pragma HLS INTERFACE s_axilite register port=t_bin_convW bundle=slv0
#pragma HLS INTERFACE s_axilite register port=t_BNFb bundle=slv0
#pragma HLS INTERFACE s_axilite register port=t_in_img bundle=slv0
#pragma HLS INTERFACE s_axilite register port=fc_result bundle=slv0
#pragma HLS INTERFACE s_axilite register port=init bundle=slv0
#pragma HLS INTERFACE s_axilite register port=return bundle=slv0
*/
if( init == 1)
setup( t_bin_convW, t_BNFb);
else
kernel( t_in_img, fc_result);
}