From 4d5e0458dec18d833db8b4623351b27a33a0653f Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Tue, 17 Jan 2023 11:59:09 +0000
Subject: [PATCH] [MVAU] Update minimize accumulator width for bipolar case

---
 src/finn/custom_op/fpgadataflow/matrixvectoractivation.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/finn/custom_op/fpgadataflow/matrixvectoractivation.py b/src/finn/custom_op/fpgadataflow/matrixvectoractivation.py
index 9f34eb151..72128fda4 100644
--- a/src/finn/custom_op/fpgadataflow/matrixvectoractivation.py
+++ b/src/finn/custom_op/fpgadataflow/matrixvectoractivation.py
@@ -576,6 +576,10 @@ class MatrixVectorActivation(HLSCustomOp):
 
     def minimize_accumulator_width(self, model):
         weights = model.get_initializer(self.onnx_node.input[1])
+        # since in the calculation the values of the weight matrix are used,
+        # for the bipolar case they need to be converted to bipolar
+        if self.get_nodeattr("binaryXnorMode"):
+            weights = 2 * weights - 1
         if len(self.onnx_node.input) > 2:
             thresholds = model.get_initializer(self.onnx_node.input[2])
         else:
-- 
GitLab