From ecbda8ae18fe6aff409e3de2c90c904f46f8dd86 Mon Sep 17 00:00:00 2001
From: dwf1m12 <d.w.flynn@soton.ac.uk>
Date: Tue, 3 Dec 2024 08:56:34 +0000
Subject: [PATCH] extio synchronizers reset high to suppress spurious requests

---
 extio8x4-axis/rtl/extio8x4_axis_initiator.v | 23 ++++++++++++++-------
 extio8x4-axis/rtl/extio8x4_sync.v           |  7 ++++---
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/extio8x4-axis/rtl/extio8x4_axis_initiator.v b/extio8x4-axis/rtl/extio8x4_axis_initiator.v
index 5224cc7..2289a5b 100644
--- a/extio8x4-axis/rtl/extio8x4_axis_initiator.v
+++ b/extio8x4-axis/rtl/extio8x4_axis_initiator.v
@@ -55,8 +55,12 @@ extio8x4_sync u_extio8x4_sync_ioack
   .sig_s(ioack_s)
   );
 
-extio8x4_sync u_extio8x4_sync_iodata0
-  (
+// async status on iodata4 is active-low so preset synchronizers to avoid spurious requests
+
+extio8x4_sync  # (
+  .RESET_VALUE(1'b1)
+  )
+  u_extio8x4_sync_iodata0 (
   .clk(clk),
   .resetn(resetn),
   .testmode(testmode),
@@ -64,8 +68,9 @@ extio8x4_sync u_extio8x4_sync_iodata0
   .sig_s(iodata4_s[0])
   );
 
-extio8x4_sync u_extio8x4_sync_iodata1
-  (
+extio8x4_sync  # (
+  .RESET_VALUE(1'b1)
+  ) u_extio8x4_sync_iodata1 (
   .clk(clk),
   .resetn(resetn),
   .testmode(testmode),
@@ -73,8 +78,9 @@ extio8x4_sync u_extio8x4_sync_iodata1
   .sig_s(iodata4_s[1])
   );
 
-extio8x4_sync u_extio8x4_sync_iodata2
-  (
+extio8x4_sync  # (
+  .RESET_VALUE(1'b1)
+  ) u_extio8x4_sync_iodata2 (
   .clk(clk),
   .resetn(resetn),
   .testmode(testmode),
@@ -82,8 +88,9 @@ extio8x4_sync u_extio8x4_sync_iodata2
   .sig_s(iodata4_s[2])
   );
 
-extio8x4_sync u_extio8x4_sync_iodata3
-  (
+extio8x4_sync   # (
+  .RESET_VALUE(1'b1)
+  ) u_extio8x4_sync_iodata3 (
   .clk(clk),
   .resetn(resetn),
   .testmode(testmode),
diff --git a/extio8x4-axis/rtl/extio8x4_sync.v b/extio8x4-axis/rtl/extio8x4_sync.v
index ed8d53f..55a03e1 100644
--- a/extio8x4-axis/rtl/extio8x4_sync.v
+++ b/extio8x4-axis/rtl/extio8x4_sync.v
@@ -10,8 +10,9 @@
 // Copyright (c) 2024, SoC Labs (www.soclabs.org)
 //-----------------------------------------------------------------------------
 
-module extio8x4_sync
-  (
+module extio8x4_sync #(
+    parameter    RESET_VALUE = 1'b0
+  )(
   input  wire clk,
   input  wire resetn,
   input  wire testmode,
@@ -24,7 +25,7 @@ reg [2:1] sig_r;
 always @(posedge clk or negedge resetn)
 begin
   if (!resetn)
-    sig_r <= 2'b00; // default
+    sig_r <= {2{RESET_VALUE}}; // support active-low/high reset initial values
   else
     sig_r <= {sig_r[1], sig_a}; // shift left
 end
-- 
GitLab