[Cryptech-Commits] [core/util/keywrap] 04/95: Reworked code a bit to match what ISE expects to map to block RAM instances.

git at cryptech.is git at cryptech.is
Wed Mar 25 17:18:03 UTC 2020


This is an automated email from the git hooks/post-receive script.

paul at psgd.org pushed a commit to branch master
in repository core/util/keywrap.

commit 16f31cdf1c1b51e87486207fda89511cdb65cf5f
Author: Joachim Strömbergson <joachim at secworks.se>
AuthorDate: Thu Jun 21 23:03:08 2018 +0200

    Reworked code a bit to match what ISE expects to map to block RAM instances.
---
 src/rtl/keywrap_mem.v | 49 ++++++++++++++++++++++++++++++++++---------------
 1 file changed, 34 insertions(+), 15 deletions(-)

diff --git a/src/rtl/keywrap_mem.v b/src/rtl/keywrap_mem.v
index 2076a57..a9e80d8 100644
--- a/src/rtl/keywrap_mem.v
+++ b/src/rtl/keywrap_mem.v
@@ -55,8 +55,15 @@ module keywrap_mem
   );
 
 
-  reg [31 : 0] tmp_api_rd_data;
-  reg [63 : 0] tmp_core_rd_data;
+  //----------------------------------------------------------------
+  // Registers and memories including conntrol signals.
+  //----------------------------------------------------------------
+  reg [31 : 0] tmp_api_rd_data0;
+  reg [31 : 0] tmp_api_rd_data1;
+  reg [31 : 0] muxed_tmp_api_rd_data;
+
+  reg [31 : 0] tmp_core_rd_data0;
+  reg [31 : 0] tmp_core_rd_data1;
 
   reg [31 : 0] mem0 [0 : 255];
   reg [31 : 0] mem0_data;
@@ -72,33 +79,45 @@ module keywrap_mem
   //----------------------------------------------------------------
   // Assignments for ports.
   //----------------------------------------------------------------
-  assign api_rd_data = tmp_api_rd_data;
-  assign core_rd_data = tmp_core_rd_data;
+  assign api_rd_data = muxed_tmp_api_rd_data;
+  assign core_rd_data = {tmp_core_rd_data1, tmp_core_rd_data0};
 
 
   //----------------------------------------------------------------
-  // mem_access
-  //
-  // Clocked read and write to the memory banks.
+  // mem0_access
   //----------------------------------------------------------------
   always @(posedge clk)
-    begin : mem_access
-      tmp_core_rd_data <= {mem1[core_addr], mem0[core_addr]};
-
-      if (api_addr[0])
-        tmp_api_rd_data <= mem1[api_addr[8 : 1]];
-      else
-        tmp_api_rd_data <= mem0[api_addr[8 : 1]];
-
+    begin : mem0_access
+      tmp_core_rd_data0 <= mem0[core_addr];
+      tmp_api_rd_data0  <= mem0[api_addr[8 : 1]];
 
       if (mem0_we)
         mem0[mem0_addr] <= mem0_data;
+    end
+
+
+  //----------------------------------------------------------------
+  // mem1_access
+  //----------------------------------------------------------------
+  always @(posedge clk)
+    begin : mem1_access
+      tmp_core_rd_data1 <= mem1[core_addr];
+      tmp_api_rd_data1  <= mem1[api_addr[8 : 1]];
 
       if (mem1_we)
         mem1[mem1_addr] <= mem1_data;
     end
 
 
+  always @*
+    begin
+      if (api_addr[0])
+        muxed_tmp_api_rd_data = tmp_api_rd_data1;
+      else
+        muxed_tmp_api_rd_data = tmp_api_rd_data0;
+    end
+
+
   //----------------------------------------------------------------
   // write_mux
   // Mux that handles priority of writes and selection



More information about the Commits mailing list