From 2fb8526bfb657b256f1fc441ac0d9fe86e0fd561 Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <maltanar@gmail.com>
Date: Fri, 1 May 2020 18:57:20 +0100
Subject: [PATCH] [HLSCustomOp] allow ops to produce extra HLS directives

---
 src/finn/custom_op/fpgadataflow/__init__.py  | 5 +++++
 src/finn/custom_op/fpgadataflow/templates.py | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/finn/custom_op/fpgadataflow/__init__.py b/src/finn/custom_op/fpgadataflow/__init__.py
index 9a6f66087..4ef6f0212 100644
--- a/src/finn/custom_op/fpgadataflow/__init__.py
+++ b/src/finn/custom_op/fpgadataflow/__init__.py
@@ -194,6 +194,7 @@ class HLSCustomOp(CustomOp):
         self.code_gen_dict["$FINNHLSLIBDIR$"] = ["/workspace/finn-hlslib"]
         self.code_gen_dict["$TOPFXN$"] = [node.name]
         self.code_gen_dict["$CLKPERIOD$"] = [str(clk)]
+        self.code_gen_dict["$EXTRA_DIRECTIVES$"] = self.ipgen_extra_directives()
 
         template = self.ipgentcl_template
 
@@ -207,6 +208,10 @@ class HLSCustomOp(CustomOp):
         f.close()
         self.code_gen_dict.clear()
 
+    def ipgen_extra_directives(self):
+        "Return a list of extra tcl directives for HLS synthesis."
+        return []
+
     def ipgen_singlenode_code(self):
         """Builds the bash script for ip generation using the IPGenBuilder from
         finn.util.fpgadataflow."""
diff --git a/src/finn/custom_op/fpgadataflow/templates.py b/src/finn/custom_op/fpgadataflow/templates.py
index 6313bb79c..5f526aa2a 100644
--- a/src/finn/custom_op/fpgadataflow/templates.py
+++ b/src/finn/custom_op/fpgadataflow/templates.py
@@ -79,7 +79,7 @@ $DOCOMPUTE$
 }
 """
 
-# tcl script
+# tcl script for IP generation
 ipgentcl_template = """
 set config_proj_name $PROJECTNAME$
 puts "HLS project: $config_proj_name"
@@ -101,6 +101,7 @@ set_part $config_proj_part
 
 config_interface -m_axi_addr64
 config_rtl -auto_prefix
+$EXTRA_DIRECTIVES$
 
 create_clock -period $config_clkperiod -name default
 csynth_design
-- 
GitLab