diff --git a/finn-rtllib/checksum/checksum.cpp b/finn-rtllib/checksum/checksum.cpp index 494adee8504e635040f8a00e897d57d492e6ca4a..3ea3870d354a494b2d840688b8762cbc3cca9c44 100644 --- a/finn-rtllib/checksum/checksum.cpp +++ b/finn-rtllib/checksum/checksum.cpp @@ -33,19 +33,4 @@ * *******************************************************************************/ #include "checksum.hpp" - - -using T = ap_uint<32>; - -void checksum_top( - hls::stream<T> &src, - hls::stream<T> &dst, - ap_uint<32> &chk -) { -#pragma HLS interface port=src axis -#pragma HLS interface port=dst axis -#pragma HLS interface port=chk ap_ovld -#pragma HLS interface port=return ap_ctrl_none -#pragma HLS dataflow - checksum<60, 4>(src, dst, chk); -} +CHECKSUM_TOP(WORDS_PER_FRAME, WORD_SIZE, ITEMS_PER_WORD) diff --git a/finn-rtllib/checksum/checksum.hpp b/finn-rtllib/checksum/checksum.hpp index ed45b5d5700685bfe735b7e7eb5bc3bad47626f6..e38b66b0b08d9cf1d506e2e2a74e287453430273 100644 --- a/finn-rtllib/checksum/checksum.hpp +++ b/finn-rtllib/checksum/checksum.hpp @@ -112,3 +112,20 @@ void checksum( #pragma HLS reset variable=cnt chk = (cnt++, s); } + +#define CHECKSUM_TOP_(WORDS_PER_FRAME, WORD_SIZE, ITEMS_PER_WORD) \ + using T = ap_uint<WORD_SIZE>; \ + void checksum_ ## WORDS_PER_FRAME ## _ ## WORD_SIZE ## _ ## ITEMS_PER_WORD ( \ + hls::stream<T> &src, \ + hls::stream<T> &dst, \ + ap_uint<32> &chk \ + ) { \ + _Pragma("HLS interface port=src axis") \ + _Pragma("HLS interface port=dst axis") \ + _Pragma("HLS interface port=chk s_axilite") \ + _Pragma("HLS interface port=return ap_ctrl_none") \ + _Pragma("HLS dataflow") \ + checksum<WORDS_PER_FRAME, ITEMS_PER_WORD>(src, dst, chk); \ + } +#define CHECKSUM_TOP(WORDS_PER_FRAME, WORD_SIZE, ITEMS_PER_WORD) \ + CHECKSUM_TOP_(WORDS_PER_FRAME, WORD_SIZE, ITEMS_PER_WORD)