Interface Synthesis Lab 2: Port I/O Protocolをやっていこう。
Step1. Create and Open the Project
まずは、CUIでvivadoを起動してシミュレーションを実行する。
vivado_hls -f run_hls.tcl ... @I [APCC-3] Tmp directory is apcc_db @I [APCC-1] APCC is done. Generating csim.exe 10+20+30=60 20+30+40=90 30+40+50=120 40+50+60=150 50+60+70=180 ----------Pass!------------ ...
次に、GUIを立ち上げる。
vivado_hls -p adders_io_prj
ソースコード的には、以下のようになっている。
void adders_io(int in1, int in2, int *in_out1) { *in_out1 = in1 + in2 + *in_out1; }
現状でコンパイルすると、どのようになるだろう?
input ap_clk; input ap_rst; input ap_start; output ap_done; output ap_idle; output ap_ready; input [31:0] in1; input [31:0] in2; input [31:0] in_out1_i; output [31:0] in_out1_o; output in_out1_o_ap_vld;
制御信号の全く存在しないインタフェースになった。これをいろいろ改造していこう。
Step2. Specify the I/O Protocol for Ports
DIRECTIVEを変更していこう。modeに、ap_vldを変更して、"ap_vld"を設定する。
以降、in2, in_out1にも同様のディレクティブを設定していく。
############################################################ ## This file is generated automatically by Vivado HLS. ## Please DO NOT edit it. ## Copyright (C) 2015 Xilinx Inc. All rights reserved. ############################################################ set_directive_interface -mode ap_vld "adders_io" in1 set_directive_interface -mode ap_ack "adders_io" in2 set_directive_interface -mode ap_hs "adders_io" in_out1
これをSynthesizeするとどうなるかな。
input ap_clk; input ap_rst; input ap_start; output ap_done; output ap_idle; output ap_ready; input [31:0] in1; input in1_ap_vld; input [31:0] in2; output in2_ap_ack; input [31:0] in_out1_i; input in_out1_i_ap_vld; output in_out1_i_ap_ack; output [31:0] in_out1_o; output in_out1_o_ap_vld; input in_out1_o_ap_ack;
インタフェースが変更された。