From d20837dba6d4b024ce758e046b2c57c352199ed9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20B=2E=20Preu=C3=9Fer?= <thomas.preusser@xilinx.com>
Date: Thu, 5 May 2022 13:44:53 +0100
Subject: [PATCH] Generic top-level macro customizable through command-line
 defines.

---
 finn-rtllib/checksum/checksum.cpp | 17 +----------------
 finn-rtllib/checksum/checksum.hpp | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/finn-rtllib/checksum/checksum.cpp b/finn-rtllib/checksum/checksum.cpp
index 494adee85..3ea3870d3 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 ed45b5d57..e38b66b0b 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)
-- 
GitLab