[top] First draft PR to enlarge memories

- Enlarge memories to include ECC
- Disable parity generation
- tlul_adapter level and above still assume previous width
- Follow-on PR will introduce more changes upstream

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index d195761..93ca392 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -7332,6 +7332,7 @@
       base_addr: 0x00008000
       swaccess: ro
       size: 0x4000
+      integ_width: 7
       inter_signal_list:
       [
         {
@@ -7369,6 +7370,7 @@
       base_addr: 0x10000000
       size: 0x20000
       byte_write: "true"
+      integ_width: 7
       exec: "1"
       inter_signal_list:
       [
@@ -7432,6 +7434,7 @@
       base_addr: 0x40600000
       size: 0x1000
       byte_write: "true"
+      integ_width: 7
       exec: "0"
       inter_signal_list:
       [
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 78cfabd..fb9a27b 100755
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -539,7 +539,9 @@
       type: "rom",
       base_addr: "0x00008000",
       swaccess: "ro",
-      size: "0x4000"
+      size: "0x4000",
+      // data integrity width
+      integ_width: 7,
       inter_signal_list: [
         { struct: "tl"
           package: "tlul_pkg"
@@ -557,6 +559,8 @@
       base_addr: "0x10000000",
       size: "0x20000",
       byte_write: "true",
+      // data integrity width
+      integ_width: 7,
       exec: "1",
       inter_signal_list: [
         { struct: "tl"
@@ -589,6 +593,8 @@
       base_addr: "0x40600000",
       size: "0x1000",
       byte_write: "true",
+      // data integrity width
+      integ_width: 7,
       exec: "0",
       inter_signal_list: [
         { struct: "tl"
diff --git a/hw/top_earlgrey/data/top_earlgrey.sv.tpl b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
index 75f483b..69a0b60 100644
--- a/hw/top_earlgrey/data/top_earlgrey.sv.tpl
+++ b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
@@ -343,6 +343,7 @@
   % if m["type"] == "ram_1p_scr":
 <%
      data_width = int(top["datawidth"])
+     full_data_width = data_width + int(m["integ_width"])
      dw_byte = data_width // 8
      addr_width = ((int(m["size"], 0) // dw_byte) -1).bit_length()
      sram_depth = (int(m["size"], 0) // dw_byte)
@@ -353,9 +354,9 @@
   logic ${lib.bitarray(1,          max_char)} ${m["name"]}_gnt;
   logic ${lib.bitarray(1,          max_char)} ${m["name"]}_we;
   logic ${lib.bitarray(addr_width, max_char)} ${m["name"]}_addr;
-  logic ${lib.bitarray(data_width, max_char)} ${m["name"]}_wdata;
-  logic ${lib.bitarray(data_width, max_char)} ${m["name"]}_wmask;
-  logic ${lib.bitarray(data_width, max_char)} ${m["name"]}_rdata;
+  logic ${lib.bitarray(full_data_width, max_char)} ${m["name"]}_wdata;
+  logic ${lib.bitarray(full_data_width, max_char)} ${m["name"]}_wmask;
+  logic ${lib.bitarray(full_data_width, max_char)} ${m["name"]}_rdata;
   logic ${lib.bitarray(1,          max_char)} ${m["name"]}_rvalid;
   logic ${lib.bitarray(2,          max_char)} ${m["name"]}_rerror;
 
@@ -379,15 +380,15 @@
     .addr_o      (${m["name"]}_addr),
     .wdata_o     (${m["name"]}_wdata),
     .wmask_o     (${m["name"]}_wmask),
-    .rdata_i     (${m["name"]}_rdata),
+    .rdata_i     (${m["name"]}_rdata[${data_width-1}:0]),
     .rvalid_i    (${m["name"]}_rvalid),
     .rerror_i    (${m["name"]}_rerror)
   );
 
   prim_ram_1p_scr #(
-    .Width(${data_width}),
+    .Width(${full_data_width}),
     .Depth(${sram_depth}),
-    .EnableParity(1),
+    .EnableParity(0),
     .CfgWidth(8)
   ) u_ram1p_${m["name"]} (
     % for key in clocks:
@@ -405,8 +406,8 @@
     .gnt_o    (${m["name"]}_gnt),
     .write_i  (${m["name"]}_we),
     .addr_i   (${m["name"]}_addr),
-    .wdata_i  (${m["name"]}_wdata),
-    .wmask_i  (${m["name"]}_wmask),
+    .wdata_i  (${full_data_width}'(${m["name"]}_wdata)),
+    .wmask_i  (${full_data_width}'(${m["name"]}_wmask)),
     .rdata_o  (${m["name"]}_rdata),
     .rvalid_o (${m["name"]}_rvalid),
     .rerror_o (${m["name"]}_rerror),
@@ -419,6 +420,7 @@
   % elif m["type"] == "rom":
 <%
      data_width = int(top["datawidth"])
+     full_data_width = data_width + int(m['integ_width'])
      dw_byte = data_width // 8
      addr_width = ((int(m["size"], 0) // dw_byte) -1).bit_length()
      rom_depth = (int(m["size"], 0) // dw_byte)
@@ -427,7 +429,7 @@
   // ROM device
   logic ${lib.bitarray(1,          max_char)} ${m["name"]}_req;
   logic ${lib.bitarray(addr_width, max_char)} ${m["name"]}_addr;
-  logic ${lib.bitarray(data_width, max_char)} ${m["name"]}_rdata;
+  logic ${lib.bitarray(full_data_width, max_char)} ${m["name"]}_rdata;
   logic ${lib.bitarray(1,          max_char)} ${m["name"]}_rvalid;
 
   tlul_adapter_sram #(
@@ -452,13 +454,13 @@
     .addr_o      (${m["name"]}_addr),
     .wdata_o     (),
     .wmask_o     (),
-    .rdata_i     (${m["name"]}_rdata),
+    .rdata_i     (${m["name"]}_rdata[${data_width-1}:0]),
     .rvalid_i    (${m["name"]}_rvalid),
     .rerror_i    (2'b00)
   );
 
   prim_rom_adv #(
-    .Width(${data_width}),
+    .Width(${full_data_width}),
     .Depth(${rom_depth}),
     .MemInitFile(BootRomInitFile)
   ) u_rom_${m["name"]} (
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 6136207..20f916b 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -726,7 +726,7 @@
   // ROM device
   logic        rom_req;
   logic [11:0] rom_addr;
-  logic [31:0] rom_rdata;
+  logic [38:0] rom_rdata;
   logic        rom_rvalid;
 
   tlul_adapter_sram #(
@@ -747,13 +747,13 @@
     .addr_o      (rom_addr),
     .wdata_o     (),
     .wmask_o     (),
-    .rdata_i     (rom_rdata),
+    .rdata_i     (rom_rdata[31:0]),
     .rvalid_i    (rom_rvalid),
     .rerror_i    (2'b00)
   );
 
   prim_rom_adv #(
-    .Width(32),
+    .Width(39),
     .Depth(4096),
     .MemInitFile(BootRomInitFile)
   ) u_rom_rom (
@@ -771,9 +771,9 @@
   logic        ram_main_gnt;
   logic        ram_main_we;
   logic [14:0] ram_main_addr;
-  logic [31:0] ram_main_wdata;
-  logic [31:0] ram_main_wmask;
-  logic [31:0] ram_main_rdata;
+  logic [38:0] ram_main_wdata;
+  logic [38:0] ram_main_wmask;
+  logic [38:0] ram_main_rdata;
   logic        ram_main_rvalid;
   logic [1:0]  ram_main_rerror;
 
@@ -793,15 +793,15 @@
     .addr_o      (ram_main_addr),
     .wdata_o     (ram_main_wdata),
     .wmask_o     (ram_main_wmask),
-    .rdata_i     (ram_main_rdata),
+    .rdata_i     (ram_main_rdata[31:0]),
     .rvalid_i    (ram_main_rvalid),
     .rerror_i    (ram_main_rerror)
   );
 
   prim_ram_1p_scr #(
-    .Width(32),
+    .Width(39),
     .Depth(32768),
-    .EnableParity(1),
+    .EnableParity(0),
     .CfgWidth(8)
   ) u_ram1p_ram_main (
     .clk_i   (clkmgr_aon_clocks.clk_main_infra),
@@ -815,8 +815,8 @@
     .gnt_o    (ram_main_gnt),
     .write_i  (ram_main_we),
     .addr_i   (ram_main_addr),
-    .wdata_i  (ram_main_wdata),
-    .wmask_i  (ram_main_wmask),
+    .wdata_i  (39'(ram_main_wdata)),
+    .wmask_i  (39'(ram_main_wmask)),
     .rdata_o  (ram_main_rdata),
     .rvalid_o (ram_main_rvalid),
     .rerror_o (ram_main_rerror),
@@ -831,9 +831,9 @@
   logic        ram_ret_aon_gnt;
   logic        ram_ret_aon_we;
   logic [9:0] ram_ret_aon_addr;
-  logic [31:0] ram_ret_aon_wdata;
-  logic [31:0] ram_ret_aon_wmask;
-  logic [31:0] ram_ret_aon_rdata;
+  logic [38:0] ram_ret_aon_wdata;
+  logic [38:0] ram_ret_aon_wmask;
+  logic [38:0] ram_ret_aon_rdata;
   logic        ram_ret_aon_rvalid;
   logic [1:0]  ram_ret_aon_rerror;
 
@@ -853,15 +853,15 @@
     .addr_o      (ram_ret_aon_addr),
     .wdata_o     (ram_ret_aon_wdata),
     .wmask_o     (ram_ret_aon_wmask),
-    .rdata_i     (ram_ret_aon_rdata),
+    .rdata_i     (ram_ret_aon_rdata[31:0]),
     .rvalid_i    (ram_ret_aon_rvalid),
     .rerror_i    (ram_ret_aon_rerror)
   );
 
   prim_ram_1p_scr #(
-    .Width(32),
+    .Width(39),
     .Depth(1024),
-    .EnableParity(1),
+    .EnableParity(0),
     .CfgWidth(8)
   ) u_ram1p_ram_ret_aon (
     .clk_i   (clkmgr_aon_clocks.clk_io_div4_infra),
@@ -875,8 +875,8 @@
     .gnt_o    (ram_ret_aon_gnt),
     .write_i  (ram_ret_aon_we),
     .addr_i   (ram_ret_aon_addr),
-    .wdata_i  (ram_ret_aon_wdata),
-    .wmask_i  (ram_ret_aon_wmask),
+    .wdata_i  (39'(ram_ret_aon_wdata)),
+    .wmask_i  (39'(ram_ret_aon_wmask)),
     .rdata_o  (ram_ret_aon_rdata),
     .rvalid_o (ram_ret_aon_rvalid),
     .rerror_o (ram_ret_aon_rerror),
diff --git a/hw/top_englishbreakfast/data/top_englishbreakfast.hjson b/hw/top_englishbreakfast/data/top_englishbreakfast.hjson
index 76676ff..8921bcc 100644
--- a/hw/top_englishbreakfast/data/top_englishbreakfast.hjson
+++ b/hw/top_englishbreakfast/data/top_englishbreakfast.hjson
@@ -389,7 +389,8 @@
       type: "rom",
       base_addr: "0x00008000",
       swaccess: "ro",
-      size: "0x4000"
+      size: "0x4000",
+      integ_width: 7,
       inter_signal_list: [
         { struct: "tl"
           package: "tlul_pkg"
@@ -407,6 +408,7 @@
       base_addr: "0x10000000",
       size: "0x10000",
       byte_write: "true",
+      integ_width: 7,
       exec: "1",
       inter_signal_list: [
         { struct: "tl"
@@ -439,6 +441,7 @@
       base_addr: "0x40600000",
       size: "0x1000",
       byte_write: "true",
+      integ_width: 7,
       exec: "0",
       inter_signal_list: [
         { struct: "tl"