From 79d6414823ea13a1e299da73a232d9f37a588da9 Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <maltanar@gmail.com>
Date: Wed, 19 Oct 2022 11:32:37 +0200
Subject: [PATCH] [Pad] use contiguous, 4b-aligned config addrs for RTL variant

---
 finn-rtllib/fmpadding/hdl/axi2we.sv              |  2 +-
 finn-rtllib/fmpadding/hdl/fmpadding.sv           | 15 +++++++--------
 finn-rtllib/fmpadding/hdl/fmpadding_axi.sv       |  8 ++++----
 finn-rtllib/fmpadding/hdl/fmpadding_template.v   |  4 ++--
 src/finn/custom_op/fpgadataflow/fmpadding_rtl.py | 12 ++++++------
 5 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/finn-rtllib/fmpadding/hdl/axi2we.sv b/finn-rtllib/fmpadding/hdl/axi2we.sv
index 0740eac5f..842ba3632 100644
--- a/finn-rtllib/fmpadding/hdl/axi2we.sv
+++ b/finn-rtllib/fmpadding/hdl/axi2we.sv
@@ -57,7 +57,7 @@ module axi2we #(
 	// Reading tied to all-ones
 	input	       s_axilite_ARVALID,
 	output	       s_axilite_ARREADY,
-	input	[3:0]  s_axilite_ARADDR,
+	input	[ADDR_BITS-1:0]  s_axilite_ARADDR,
 
 	output	        s_axilite_RVALID,
 	input	        s_axilite_RREADY,
diff --git a/finn-rtllib/fmpadding/hdl/fmpadding.sv b/finn-rtllib/fmpadding/hdl/fmpadding.sv
index 08bcf9043..904c7c381 100644
--- a/finn-rtllib/fmpadding/hdl/fmpadding.sv
+++ b/finn-rtllib/fmpadding/hdl/fmpadding.sv
@@ -53,7 +53,7 @@ module fmpadding #(
 
 	// Parameter Configuration ----------
 	input	logic         we,
-	input	logic [ 2:0]  wa,
+	input	logic [ 4:0]  wa,
 	input	logic [31:0]  wd,
 
 	//- AXI Stream - Input --------------
@@ -125,13 +125,12 @@ module fmpadding #(
 	always_ff @(posedge clk) begin
 		if(we) begin
 			unique case(wa)
-			0:  XOn  <= wd;
-			1:  XOff <= wd;
-			2:  XEnd <= wd;
-
-			4:  YOn  <= wd;
-			5:  YOff <= wd;
-			6:  YEnd <= wd;
+			0*4:  XOn  <= wd;
+			1*4:  XOff <= wd;
+			2*4:  XEnd <= wd;
+			3*4:  YOn  <= wd;
+			4*4:  YOff <= wd;
+			5*4:  YEnd <= wd;
 
 			default:  assert(0) else begin
 				$error("Illegal write address.");
diff --git a/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv b/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv
index c2d4fd2e7..5948341d0 100644
--- a/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv
+++ b/finn-rtllib/fmpadding/hdl/fmpadding_axi.sv
@@ -55,7 +55,7 @@ module fmpadding_axi #(
 	// Writing
 	input	       s_axilite_AWVALID,
 	output	       s_axilite_AWREADY,
-	input	[2:0]  s_axilite_AWADDR,
+	input	[4:0]  s_axilite_AWADDR,
 
 	input	        s_axilite_WVALID,
 	output	        s_axilite_WREADY,
@@ -69,7 +69,7 @@ module fmpadding_axi #(
 	// Reading
 	input	       s_axilite_ARVALID,
 	output	       s_axilite_ARREADY,
-	input	[3:0]  s_axilite_ARADDR,
+	input	[4:0]  s_axilite_ARADDR,
 
 	output	        s_axilite_RVALID,
 	input	        s_axilite_RREADY,
@@ -89,9 +89,9 @@ module fmpadding_axi #(
 
 	// AXI-Lite Adapter
 	uwire         we;
-	uwire [ 2:0]  wa;
+	uwire [ 4:0]  wa;
 	uwire [31:0]  wd;
-	axi2we #(.ADDR_BITS(3)) axilight_adapter (
+	axi2we #(.ADDR_BITS(5)) axilight_adapter (
 		.ap_clk, .ap_rst_n,
 
 		.s_axilite_AWVALID, .s_axilite_AWREADY, .s_axilite_AWADDR,
diff --git a/finn-rtllib/fmpadding/hdl/fmpadding_template.v b/finn-rtllib/fmpadding/hdl/fmpadding_template.v
index 25062a81c..0b0f40f86 100644
--- a/finn-rtllib/fmpadding/hdl/fmpadding_template.v
+++ b/finn-rtllib/fmpadding/hdl/fmpadding_template.v
@@ -40,7 +40,7 @@ input	ap_rst_n,
 // Writing
 input	       s_axilite_AWVALID,
 output	       s_axilite_AWREADY,
-input	[2:0]  s_axilite_AWADDR,
+input	[4:0]  s_axilite_AWADDR,
 
 input	        s_axilite_WVALID,
 output	        s_axilite_WREADY,
@@ -54,7 +54,7 @@ output	[1:0]  s_axilite_BRESP,
 // Reading
 input	       s_axilite_ARVALID,
 output	       s_axilite_ARREADY,
-input	[3:0]  s_axilite_ARADDR,
+input	[4:0]  s_axilite_ARADDR,
 
 output	        s_axilite_RVALID,
 input	        s_axilite_RREADY,
diff --git a/src/finn/custom_op/fpgadataflow/fmpadding_rtl.py b/src/finn/custom_op/fpgadataflow/fmpadding_rtl.py
index a85c765a0..c47f9d52a 100644
--- a/src/finn/custom_op/fpgadataflow/fmpadding_rtl.py
+++ b/src/finn/custom_op/fpgadataflow/fmpadding_rtl.py
@@ -284,12 +284,12 @@ class FMPadding_rtl(HLSCustomOp):
         idt = self.get_input_datatype()
         code_gen_dict = self.get_template_values(ifm_dims, pads, chans, simd, idt)
         config = {
-            "XON": (0, (code_gen_dict["INIT_XON"])),
-            "XOFF": (1, (code_gen_dict["INIT_XOFF"])),
-            "XEND": (2, (code_gen_dict["INIT_XEND"])),
-            "YON": (4, (code_gen_dict["INIT_YON"])),
-            "YOFF": (5, (code_gen_dict["INIT_YOFF"])),
-            "YEND": (6, (code_gen_dict["INIT_YEND"])),
+            "XON": (0 * 4, (code_gen_dict["INIT_XON"])),
+            "XOFF": (1 * 4, (code_gen_dict["INIT_XOFF"])),
+            "XEND": (2 * 4, (code_gen_dict["INIT_XEND"])),
+            "YON": (3 * 4, (code_gen_dict["INIT_YON"])),
+            "YOFF": (4 * 4, (code_gen_dict["INIT_YOFF"])),
+            "YEND": (5 * 4, (code_gen_dict["INIT_YEND"])),
         }
         return config
 
-- 
GitLab