| #include <iostream> |
|
|
| #include "myproject.h" |
| #include "parameters.h" |
|
|
|
|
| void myproject( |
| hls::stream<input_t> &x, |
| hls::stream<result_t> &layer40_out |
| ) { |
|
|
| |
| #pragma HLS INTERFACE axis port=x,layer40_out |
| #pragma HLS DATAFLOW |
|
|
| |
| #ifndef __SYNTHESIS__ |
| static bool loaded_weights = false; |
| if (!loaded_weights) { |
| nnet::load_weights_from_txt<conv1_0_weight_t, 72>(w2, "w2.txt"); |
| nnet::load_weights_from_txt<conv1_0_bias_t, 8>(b2, "b2.txt"); |
| nnet::load_weights_from_txt<conv1_2_weight_t, 576>(w4, "w4.txt"); |
| nnet::load_weights_from_txt<conv1_2_bias_t, 8>(b4, "b4.txt"); |
| nnet::load_weights_from_txt<conv2_0_weight_t, 1152>(w7, "w7.txt"); |
| nnet::load_weights_from_txt<conv2_0_bias_t, 16>(b7, "b7.txt"); |
| nnet::load_weights_from_txt<conv2_2_weight_t, 2304>(w9, "w9.txt"); |
| nnet::load_weights_from_txt<conv2_2_bias_t, 16>(b9, "b9.txt"); |
| nnet::load_weights_from_txt<conv3_0_weight_t, 4608>(w12, "w12.txt"); |
| nnet::load_weights_from_txt<conv3_0_bias_t, 32>(b12, "b12.txt"); |
| nnet::load_weights_from_txt<conv3_2_weight_t, 9216>(w14, "w14.txt"); |
| nnet::load_weights_from_txt<conv3_2_bias_t, 32>(b14, "b14.txt"); |
| nnet::load_weights_from_txt<conv4_0_weight_t, 18432>(w17, "w17.txt"); |
| nnet::load_weights_from_txt<conv4_0_bias_t, 64>(b17, "b17.txt"); |
| nnet::load_weights_from_txt<conv4_2_weight_t, 36864>(w19, "w19.txt"); |
| nnet::load_weights_from_txt<conv4_2_bias_t, 64>(b19, "b19.txt"); |
| nnet::load_weights_from_txt<deconv3_0_weight_t, 27648>(w23, "w23.txt"); |
| nnet::load_weights_from_txt<deconv3_0_bias_t, 32>(b23, "b23.txt"); |
| nnet::load_weights_from_txt<deconv3_2_weight_t, 9216>(w25, "w25.txt"); |
| nnet::load_weights_from_txt<deconv3_2_bias_t, 32>(b25, "b25.txt"); |
| nnet::load_weights_from_txt<deconv2_0_weight_t, 6912>(w29, "w29.txt"); |
| nnet::load_weights_from_txt<deconv2_0_bias_t, 16>(b29, "b29.txt"); |
| nnet::load_weights_from_txt<deconv2_2_weight_t, 2304>(w31, "w31.txt"); |
| nnet::load_weights_from_txt<deconv2_2_bias_t, 16>(b31, "b31.txt"); |
| nnet::load_weights_from_txt<deconv1_0_weight_t, 1728>(w35, "w35.txt"); |
| nnet::load_weights_from_txt<deconv1_0_bias_t, 8>(b35, "b35.txt"); |
| nnet::load_weights_from_txt<deconv1_2_weight_t, 576>(w37, "w37.txt"); |
| nnet::load_weights_from_txt<deconv1_2_bias_t, 8>(b37, "b37.txt"); |
| nnet::load_weights_from_txt<final_conv_weight_t, 8>(w39, "w39.txt"); |
| nnet::load_weights_from_txt<final_conv_bias_t, 1>(b39, "b39.txt"); |
| loaded_weights = true; } |
| #endif |
| |
| |
| |
|
|
| |
|
|
| hls::stream<layer44_t> layer44_out("layer44_out"); |
| #pragma HLS STREAM variable=layer44_out depth=4356 |
|
|
| hls::stream<conv1_0_result_t> layer2_out("layer2_out"); |
| #pragma HLS STREAM variable=layer2_out depth=4096 |
|
|
| hls::stream<layer3_t> layer3_out("layer3_out"); |
| #pragma HLS STREAM variable=layer3_out depth=4096 |
|
|
| hls::stream<layer45_t> layer45_out("layer45_out"); |
| #pragma HLS STREAM variable=layer45_out depth=4356 |
|
|
| hls::stream<conv1_2_result_t> layer4_out("layer4_out"); |
| #pragma HLS STREAM variable=layer4_out depth=4096 |
|
|
| hls::stream<layer5_t> layer5_out("layer5_out"); |
| #pragma HLS STREAM variable=layer5_out depth=4096 |
|
|
| hls::stream<layer5_t> layer41_cpy1("layer41_cpy1"); |
| #pragma HLS STREAM variable=layer41_cpy1 depth=4096 |
|
|
| hls::stream<layer5_t> layer41_cpy2("layer41_cpy2"); |
| #pragma HLS STREAM variable=layer41_cpy2 depth=4096 |
|
|
| hls::stream<layer6_t> layer6_out("layer6_out"); |
| #pragma HLS STREAM variable=layer6_out depth=1024 |
|
|
| hls::stream<layer46_t> layer46_out("layer46_out"); |
| #pragma HLS STREAM variable=layer46_out depth=1156 |
|
|
| hls::stream<conv2_0_result_t> layer7_out("layer7_out"); |
| #pragma HLS STREAM variable=layer7_out depth=1024 |
|
|
| hls::stream<layer8_t> layer8_out("layer8_out"); |
| #pragma HLS STREAM variable=layer8_out depth=1024 |
|
|
| hls::stream<layer47_t> layer47_out("layer47_out"); |
| #pragma HLS STREAM variable=layer47_out depth=1156 |
|
|
| hls::stream<conv2_2_result_t> layer9_out("layer9_out"); |
| #pragma HLS STREAM variable=layer9_out depth=1024 |
|
|
| hls::stream<layer10_t> layer10_out("layer10_out"); |
| #pragma HLS STREAM variable=layer10_out depth=1024 |
|
|
| hls::stream<layer10_t> layer42_cpy1("layer42_cpy1"); |
| #pragma HLS STREAM variable=layer42_cpy1 depth=1024 |
|
|
| hls::stream<layer10_t> layer42_cpy2("layer42_cpy2"); |
| #pragma HLS STREAM variable=layer42_cpy2 depth=1024 |
|
|
| hls::stream<layer11_t> layer11_out("layer11_out"); |
| #pragma HLS STREAM variable=layer11_out depth=256 |
|
|
| hls::stream<layer48_t> layer48_out("layer48_out"); |
| #pragma HLS STREAM variable=layer48_out depth=324 |
|
|
| hls::stream<conv3_0_result_t> layer12_out("layer12_out"); |
| #pragma HLS STREAM variable=layer12_out depth=256 |
|
|
| hls::stream<layer13_t> layer13_out("layer13_out"); |
| #pragma HLS STREAM variable=layer13_out depth=256 |
|
|
| hls::stream<layer49_t> layer49_out("layer49_out"); |
| #pragma HLS STREAM variable=layer49_out depth=324 |
|
|
| hls::stream<conv3_2_result_t> layer14_out("layer14_out"); |
| #pragma HLS STREAM variable=layer14_out depth=256 |
|
|
| hls::stream<layer15_t> layer15_out("layer15_out"); |
| #pragma HLS STREAM variable=layer15_out depth=256 |
|
|
| hls::stream<layer15_t> layer43_cpy1("layer43_cpy1"); |
| #pragma HLS STREAM variable=layer43_cpy1 depth=256 |
|
|
| hls::stream<layer15_t> layer43_cpy2("layer43_cpy2"); |
| #pragma HLS STREAM variable=layer43_cpy2 depth=256 |
|
|
| hls::stream<layer16_t> layer16_out("layer16_out"); |
| #pragma HLS STREAM variable=layer16_out depth=64 |
|
|
| hls::stream<layer50_t> layer50_out("layer50_out"); |
| #pragma HLS STREAM variable=layer50_out depth=100 |
|
|
| hls::stream<conv4_0_result_t> layer17_out("layer17_out"); |
| #pragma HLS STREAM variable=layer17_out depth=64 |
|
|
| hls::stream<layer18_t> layer18_out("layer18_out"); |
| #pragma HLS STREAM variable=layer18_out depth=64 |
|
|
| hls::stream<layer51_t> layer51_out("layer51_out"); |
| #pragma HLS STREAM variable=layer51_out depth=100 |
|
|
| hls::stream<conv4_2_result_t> layer19_out("layer19_out"); |
| #pragma HLS STREAM variable=layer19_out depth=64 |
|
|
| hls::stream<layer20_t> layer20_out("layer20_out"); |
| #pragma HLS STREAM variable=layer20_out depth=64 |
|
|
| hls::stream<layer21_t> layer21_out("layer21_out"); |
| #pragma HLS STREAM variable=layer21_out depth=256 |
|
|
| hls::stream<cat_result_t> layer22_out("layer22_out"); |
| #pragma HLS STREAM variable=layer22_out depth=256 |
|
|
| hls::stream<layer52_t> layer52_out("layer52_out"); |
| #pragma HLS STREAM variable=layer52_out depth=324 |
|
|
| hls::stream<deconv3_0_result_t> layer23_out("layer23_out"); |
| #pragma HLS STREAM variable=layer23_out depth=256 |
|
|
| hls::stream<layer24_t> layer24_out("layer24_out"); |
| #pragma HLS STREAM variable=layer24_out depth=256 |
|
|
| hls::stream<layer53_t> layer53_out("layer53_out"); |
| #pragma HLS STREAM variable=layer53_out depth=324 |
|
|
| hls::stream<deconv3_2_result_t> layer25_out("layer25_out"); |
| #pragma HLS STREAM variable=layer25_out depth=256 |
|
|
| hls::stream<layer26_t> layer26_out("layer26_out"); |
| #pragma HLS STREAM variable=layer26_out depth=256 |
|
|
| hls::stream<layer27_t> layer27_out("layer27_out"); |
| #pragma HLS STREAM variable=layer27_out depth=1024 |
|
|
| hls::stream<cat_1_result_t> layer28_out("layer28_out"); |
| #pragma HLS STREAM variable=layer28_out depth=1024 |
|
|
| hls::stream<layer54_t> layer54_out("layer54_out"); |
| #pragma HLS STREAM variable=layer54_out depth=1156 |
|
|
| hls::stream<deconv2_0_result_t> layer29_out("layer29_out"); |
| #pragma HLS STREAM variable=layer29_out depth=1024 |
|
|
| hls::stream<layer30_t> layer30_out("layer30_out"); |
| #pragma HLS STREAM variable=layer30_out depth=1024 |
|
|
| hls::stream<layer55_t> layer55_out("layer55_out"); |
| #pragma HLS STREAM variable=layer55_out depth=1156 |
|
|
| hls::stream<deconv2_2_result_t> layer31_out("layer31_out"); |
| #pragma HLS STREAM variable=layer31_out depth=1024 |
|
|
| hls::stream<layer32_t> layer32_out("layer32_out"); |
| #pragma HLS STREAM variable=layer32_out depth=1024 |
|
|
| hls::stream<layer33_t> layer33_out("layer33_out"); |
| #pragma HLS STREAM variable=layer33_out depth=4096 |
|
|
| hls::stream<cat_2_result_t> layer34_out("layer34_out"); |
| #pragma HLS STREAM variable=layer34_out depth=4096 |
|
|
| hls::stream<layer56_t> layer56_out("layer56_out"); |
| #pragma HLS STREAM variable=layer56_out depth=4356 |
|
|
| hls::stream<deconv1_0_result_t> layer35_out("layer35_out"); |
| #pragma HLS STREAM variable=layer35_out depth=4096 |
|
|
| hls::stream<layer36_t> layer36_out("layer36_out"); |
| #pragma HLS STREAM variable=layer36_out depth=4096 |
|
|
| hls::stream<layer57_t> layer57_out("layer57_out"); |
| #pragma HLS STREAM variable=layer57_out depth=4356 |
|
|
| hls::stream<deconv1_2_result_t> layer37_out("layer37_out"); |
| #pragma HLS STREAM variable=layer37_out depth=4096 |
|
|
| hls::stream<layer38_t> layer38_out("layer38_out"); |
| #pragma HLS STREAM variable=layer38_out depth=4096 |
|
|
| hls::stream<final_conv_result_t> layer39_out("layer39_out"); |
| #pragma HLS STREAM variable=layer39_out depth=4096 |
|
|
| nnet::zeropad2d_cl<input_t, layer44_t, config44>(x, layer44_out); |
|
|
| nnet::conv_2d_cl<layer44_t, conv1_0_result_t, config2>(layer44_out, layer2_out, w2, b2); |
|
|
| nnet::relu<conv1_0_result_t, layer3_t, relu_config3>(layer2_out, layer3_out); |
|
|
| nnet::zeropad2d_cl<layer3_t, layer45_t, config45>(layer3_out, layer45_out); |
|
|
| nnet::conv_2d_cl<layer45_t, conv1_2_result_t, config4>(layer45_out, layer4_out, w4, b4); |
|
|
| nnet::relu<conv1_2_result_t, layer5_t, relu_config5>(layer4_out, layer5_out); |
|
|
| nnet::clone_stream<layer5_t, layer5_t, 32768>(layer5_out, layer41_cpy1, layer41_cpy2); |
|
|
| nnet::pooling2d_cl<layer5_t, layer6_t, config6>(layer41_cpy1, layer6_out); |
|
|
| nnet::zeropad2d_cl<layer6_t, layer46_t, config46>(layer6_out, layer46_out); |
|
|
| nnet::conv_2d_cl<layer46_t, conv2_0_result_t, config7>(layer46_out, layer7_out, w7, b7); |
|
|
| nnet::relu<conv2_0_result_t, layer8_t, relu_config8>(layer7_out, layer8_out); |
|
|
| nnet::zeropad2d_cl<layer8_t, layer47_t, config47>(layer8_out, layer47_out); |
|
|
| nnet::conv_2d_cl<layer47_t, conv2_2_result_t, config9>(layer47_out, layer9_out, w9, b9); |
|
|
| nnet::relu<conv2_2_result_t, layer10_t, relu_config10>(layer9_out, layer10_out); |
|
|
| nnet::clone_stream<layer10_t, layer10_t, 16384>(layer10_out, layer42_cpy1, layer42_cpy2); |
|
|
| nnet::pooling2d_cl<layer10_t, layer11_t, config11>(layer42_cpy1, layer11_out); |
|
|
| nnet::zeropad2d_cl<layer11_t, layer48_t, config48>(layer11_out, layer48_out); |
|
|
| nnet::conv_2d_cl<layer48_t, conv3_0_result_t, config12>(layer48_out, layer12_out, w12, b12); |
|
|
| nnet::relu<conv3_0_result_t, layer13_t, relu_config13>(layer12_out, layer13_out); |
|
|
| nnet::zeropad2d_cl<layer13_t, layer49_t, config49>(layer13_out, layer49_out); |
|
|
| nnet::conv_2d_cl<layer49_t, conv3_2_result_t, config14>(layer49_out, layer14_out, w14, b14); |
|
|
| nnet::relu<conv3_2_result_t, layer15_t, relu_config15>(layer14_out, layer15_out); |
|
|
| nnet::clone_stream<layer15_t, layer15_t, 8192>(layer15_out, layer43_cpy1, layer43_cpy2); |
|
|
| nnet::pooling2d_cl<layer15_t, layer16_t, config16>(layer43_cpy1, layer16_out); |
|
|
| nnet::zeropad2d_cl<layer16_t, layer50_t, config50>(layer16_out, layer50_out); |
|
|
| nnet::conv_2d_cl<layer50_t, conv4_0_result_t, config17>(layer50_out, layer17_out, w17, b17); |
|
|
| nnet::relu<conv4_0_result_t, layer18_t, relu_config18>(layer17_out, layer18_out); |
|
|
| nnet::zeropad2d_cl<layer18_t, layer51_t, config51>(layer18_out, layer51_out); |
|
|
| nnet::conv_2d_cl<layer51_t, conv4_2_result_t, config19>(layer51_out, layer19_out, w19, b19); |
|
|
| nnet::relu<conv4_2_result_t, layer20_t, relu_config20>(layer19_out, layer20_out); |
|
|
| nnet::resize_nearest<layer20_t, config21>(layer20_out, layer21_out); |
|
|
| nnet::concatenate3d<layer21_t, layer15_t, cat_result_t, config22>(layer21_out, layer43_cpy2, layer22_out); |
|
|
| nnet::zeropad2d_cl<cat_result_t, layer52_t, config52>(layer22_out, layer52_out); |
|
|
| nnet::conv_2d_cl<layer52_t, deconv3_0_result_t, config23>(layer52_out, layer23_out, w23, b23); |
|
|
| nnet::relu<deconv3_0_result_t, layer24_t, relu_config24>(layer23_out, layer24_out); |
|
|
| nnet::zeropad2d_cl<layer24_t, layer53_t, config53>(layer24_out, layer53_out); |
|
|
| nnet::conv_2d_cl<layer53_t, deconv3_2_result_t, config25>(layer53_out, layer25_out, w25, b25); |
|
|
| nnet::relu<deconv3_2_result_t, layer26_t, relu_config26>(layer25_out, layer26_out); |
|
|
| nnet::resize_nearest<layer26_t, config27>(layer26_out, layer27_out); |
|
|
| nnet::concatenate3d<layer27_t, layer10_t, cat_1_result_t, config28>(layer27_out, layer42_cpy2, layer28_out); |
|
|
| nnet::zeropad2d_cl<cat_1_result_t, layer54_t, config54>(layer28_out, layer54_out); |
|
|
| nnet::conv_2d_cl<layer54_t, deconv2_0_result_t, config29>(layer54_out, layer29_out, w29, b29); |
|
|
| nnet::relu<deconv2_0_result_t, layer30_t, relu_config30>(layer29_out, layer30_out); |
|
|
| nnet::zeropad2d_cl<layer30_t, layer55_t, config55>(layer30_out, layer55_out); |
|
|
| nnet::conv_2d_cl<layer55_t, deconv2_2_result_t, config31>(layer55_out, layer31_out, w31, b31); |
|
|
| nnet::relu<deconv2_2_result_t, layer32_t, relu_config32>(layer31_out, layer32_out); |
|
|
| nnet::resize_nearest<layer32_t, config33>(layer32_out, layer33_out); |
|
|
| nnet::concatenate3d<layer33_t, layer5_t, cat_2_result_t, config34>(layer33_out, layer41_cpy2, layer34_out); |
|
|
| nnet::zeropad2d_cl<cat_2_result_t, layer56_t, config56>(layer34_out, layer56_out); |
|
|
| nnet::conv_2d_cl<layer56_t, deconv1_0_result_t, config35>(layer56_out, layer35_out, w35, b35); |
|
|
| nnet::relu<deconv1_0_result_t, layer36_t, relu_config36>(layer35_out, layer36_out); |
|
|
| nnet::zeropad2d_cl<layer36_t, layer57_t, config57>(layer36_out, layer57_out); |
|
|
| nnet::conv_2d_cl<layer57_t, deconv1_2_result_t, config37>(layer57_out, layer37_out, w37, b37); |
|
|
| nnet::relu<deconv1_2_result_t, layer38_t, relu_config38>(layer37_out, layer38_out); |
|
|
| nnet::pointwise_conv_2d_cl<layer38_t, final_conv_result_t, config58>(layer38_out, layer39_out, w39, b39); |
|
|
| nnet::sigmoid<final_conv_result_t, result_t, sigmoid_config40>(layer39_out, layer40_out); |
|
|
| } |
|
|
|
|