diff --git a/flist/nanosoc_busmatrix.flist b/flist/nanosoc_busmatrix.flist
index 26272a2137b2e4d8a771b404b580ce9fdababd64..838d8317d532a712f37adfc43fdcc7f32a2dd3ba 100644
--- a/flist/nanosoc_busmatrix.flist
+++ b/flist/nanosoc_busmatrix.flist
@@ -16,8 +16,6 @@
 +libext+.v+.vlib
 
 // =============    NanoSoC BusMatrix IP search path    =============
--incdir $(SOCLABS_NANOSOC_TECH_DIR)/system/nanosoc_busmatrix/verilog/nanosoc_busmatrix
-
 $(SOCLABS_NANOSOC_TECH_DIR)/system/nanosoc_busmatrix/verilog/nanosoc_busmatrix/nanosoc_arbiter_BOOTROM_0.v
 $(SOCLABS_NANOSOC_TECH_DIR)/system/nanosoc_busmatrix/verilog/nanosoc_busmatrix/nanosoc_arbiter_DMEM_0.v
 $(SOCLABS_NANOSOC_TECH_DIR)/system/nanosoc_busmatrix/verilog/nanosoc_busmatrix/nanosoc_arbiter_EXPRAM_H.v
diff --git a/hal/nanosoc_ip.waive b/hal/nanosoc_ip.waive
index e4aa3d06fe7d6cbd2e241ff50a405001400add5e..8050d6e427b68a4aaa204d744c95234b6d419acf 100644
--- a/hal/nanosoc_ip.waive
+++ b/hal/nanosoc_ip.waive
@@ -27,10 +27,62 @@ lint_checking designunit = nanosoc_chip
     CBPAHI off;
 }
 
+lint_checking designunit = nanosoc_ss_cpu
+{
+    // SYS Clock name renamed to just Clock
+    DIFCLK {"SYS_"} off;
+    
+    // Not Top-level in design_info
+    IOCOMB off;
+    TPOUNR off;
+    
+    // Some AHB Signals Unused 
+    USEPRT {"HBURST|HMASTLOCK"} off;
+}
+
+lint_checking designunit = nanosoc_region_bootrom_0
+{   
+    // Some Bits of AHB Signals not Used
+    URDPRT {"HADDR|HTRANS|HSIZE|HWDATA|HPROT"} off;
+}
+
+lint_checking designunit = nanosoc_region_imem_0
+{   
+    // Some Bits of AHB Signals not Used
+    URDPRT {"HADDR|HTRANS|HSIZE|HWDATA|HPROT"} off;
+}
+
+lint_checking designunit = nanosoc_region_dmem_0
+{   
+    // Some Bits of AHB Signals not Used
+    URDPRT {"HADDR|HTRANS|HSIZE|HWDATA|HPROT"} off;
+}
+
+lint_checking designunit = nanosoc_bootrom_cpu_0
+{
+    // Bootrom Clock name different to HCLK
+    DIFCLK {"HCLK"} off;
+    
+    // AHB Reponse Contant for Bootrom other than rdata
+    TIELOG {"HREADYOUT|HRESP"} off;
+    
+    // Some Bits of AHB Signals not Used
+    URDPRT {"HADDR|HTRANS|HSIZE|HWDATA"} off;
+}
+
 lint_checking designunit = bootrom
 {
     // Combinatorial wiring through multiple levels of hierarchy to bootrom (wrappers)
     CBPAHI off;
+    
+    // Default Case used for simulation
+    CDEFCV off;
+    
+    // Bootrom has no Reset
+    FFWNSR off;
+    
+    // States in Case Statements needs to be more than 40
+    LMTSTS off;
 }
 
 lint_checking designunit = nanosoc_clkctrl
diff --git a/makefile b/makefile
index 2f099f1f661e13c432ff545a3549edc3c604d19c..486da09ae8356d26a634a09e3cfc0774ad49dabe 100644
--- a/makefile
+++ b/makefile
@@ -113,6 +113,8 @@ LINT_INFO_DIR = $(SOCLABS_NANOSOC_TECH_DIR)/hal
 LINT_INFO_SLCOREM0_DIR = $(SOCLABS_SLCOREM0_TECH_DIR)/hal
 LINT_INFO_SLDMA230_DIR = $(SOCLABS_SLDMA230_TECH_DIR)/hal
 
+LINT_TOP = nanosoc_chip_pads
+
 # MTI option
 #DF#MTI_OPTIONS    = -novopt
 MTI_OPTIONS    = -suppress 2892
@@ -202,7 +204,7 @@ compile_xm : bootrom
 lint_xm: bootrom
 	@rm -rf $(LINT_DIR) 
 	@mkdir -p $(LINT_DIR)
-	cd $(LINT_DIR); hal -f $(DESIGN_VC) $(DEFINES_VC) +debug -XMVERILOGARGS "-timescale 1ps/1ps" -top nanosoc_chip_pads $(HAL_BLACK_BOX) $(HAL_WAIVE) $(LINT_NOCHECK)
+	cd $(LINT_DIR); hal -f $(DESIGN_VC) $(DEFINES_VC) +debug -XMVERILOGARGS "-timescale 1ps/1ps" -top $(LINT_TOP) $(HAL_BLACK_BOX) $(HAL_WAIVE) $(LINT_NOCHECK)
 	
 # Note : If coverage is required, you can add -coverage all to xmelab
 
diff --git a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
index c4efcb0e727bf4bd55f9f1c32131e4c830e2f870..3fb13942bacd98cca1e55ce90885de10f83ce32e 100644
--- a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
+++ b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
@@ -13,7 +13,6 @@ module nanosoc_bootrom_cpu_0 #(
   parameter AW       = 10 // Address width
 )(
   input  wire          HCLK,      // Clock
-  input  wire          HRESETn,   // Reset
   input  wire          HSEL,      // Device select
   input  wire [AW-1:0] HADDR,     // Address
   input  wire    [1:0] HTRANS,    // Transfer control
@@ -25,14 +24,23 @@ module nanosoc_bootrom_cpu_0 #(
   output wire   [31:0] HRDATA,    // Read data output
   output wire          HRESP      // Device response (always OKAY)
 );
-
+  //------------------------
+  // Internal Wiring
+  //------------------------
+  wire   EN;
+  assign EN = HSEL & HTRANS[1] & HREADY & !HWRITE;
+  
+  //------------------------
+  // Bootrom Instantiation
+  //------------------------
   bootrom u_bootrom (
-    .CLK   (HCLK),
-    .EN    (HSEL & HTRANS[1] & HREADY & !HWRITE),
-    .ADDR  (HADDR[AW-1:2]),
-    .RDATA (HRDATA)
+    .CLK     (HCLK),
+    .EN      (EN),
+    .W_ADDR  (HADDR[AW-1:2]),
+    .RDATA   (HRDATA)
   );
   
+  // Output Signal Response Constant other than Data
   assign HREADYOUT = 1'b1;
   assign HRESP = 1'b0;
 
diff --git a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
index fd393c962e27b33c19282e8012d0e7dded7c3800..6a537e9160d712781c5aef532e8dd4affe81c08f 100644
--- a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
+++ b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
@@ -17,7 +17,6 @@ module nanosoc_region_bootrom_0 #(
     parameter    BOOTROM_ADDR_W = 10   // Size of Bootrom (Based on Address Width) - Default 1KB
   )(
     input  wire                   HCLK,       // Clock
-    input  wire                   HRESETn,    // Reset
 
     // AHB connection to Initiator
     input  wire                   HSEL,
@@ -38,7 +37,6 @@ module nanosoc_region_bootrom_0 #(
     .AW (BOOTROM_ADDR_W)  
   ) u_bootrom_cpu_0 (
     .HCLK             (HCLK),
-    .HRESETn          (HRESETn),
     .HSEL             (HSEL),
     .HADDR            (HADDR[9:0]),
     .HTRANS           (HTRANS),
diff --git a/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v b/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
index a2b921eb6338d1a79745113800358bc00a2f0747..06803c3020f6ffd9248ca97fb6ea770a15b8e12e 100644
--- a/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
+++ b/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
@@ -36,8 +36,8 @@ module nanosoc_region_dmem_0 #(
 
     // SRAM Instantiation
     sl_ahb_sram #(
-        .SYS_ADDR_W (SYS_ADDR_W),
         .SYS_DATA_W (SYS_DATA_W),
+        .RAM_DATA_W (DMEM_RAM_DATA_W),
         .RAM_ADDR_W (DMEM_RAM_ADDR_W)
     ) u_dmem_0 (
         // AHB Inputs
diff --git a/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v b/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
index 78b3f189d60cd885b3ab0eddbdcaa7f5255eca66..69d35a387e5cb328fb2cbd212c29819bb5881e8c 100644
--- a/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
+++ b/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
@@ -37,9 +37,9 @@ module nanosoc_region_expram_h #(
     
     // AHB to SRAM bridge
     sl_ahb_sram #(
-        .SYS_ADDR_W (SYS_ADDR_W),
         .SYS_DATA_W (SYS_DATA_W),
-        .RAM_ADDR_W (EXPRAM_H_RAM_ADDR_W)
+        .RAM_ADDR_W (EXPRAM_H_RAM_ADDR_W),
+        .RAM_DATA_W (EXPRAM_H_RAM_DATA_W)
     ) u_expram_h (
         // AHB Inputs
         .HCLK       (HCLK),
diff --git a/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v b/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
index b3db3698e295cf78f7b557d74a211e77a3270df5..76f078f5c2dd3f3bcdbcbd617bfd6b1cf27daa65 100644
--- a/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
+++ b/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
@@ -37,9 +37,9 @@ module nanosoc_region_expram_l #(
     
     // SRAM Instantiation
     sl_ahb_sram #(
-        .SYS_ADDR_W (SYS_ADDR_W),
         .SYS_DATA_W (SYS_DATA_W),
-        .RAM_ADDR_W (EXPRAM_L_RAM_ADDR_W)
+        .RAM_ADDR_W (EXPRAM_L_RAM_ADDR_W),
+        .RAM_DATA_W (EXPRAM_L_RAM_DATA_W)
     ) u_expram_l (
         // AHB Inputs
         .HCLK       (HCLK),
diff --git a/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v b/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
index fd172639448e92f39ee5b330fa4b8bbb97f0a1f0..672a0f134488ee7cce7911a17f6c2bca18256aef 100644
--- a/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
+++ b/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
@@ -38,9 +38,9 @@ module nanosoc_region_imem_0 #(
 
     // SRAM Instantiation
     sl_ahb_sram #(
-        .SYS_ADDR_W (SYS_ADDR_W),
         .SYS_DATA_W (SYS_DATA_W),
         .RAM_ADDR_W (IMEM_RAM_ADDR_W),
+        .RAM_DATA_W (IMEM_RAM_DATA_W),
         .FILENAME   (IMEM_RAM_FPGA_IMG)
     ) u_imem_0 (
         // AHB Inputs
diff --git a/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v b/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
index b4e47027ec201aceb29d648d33d5edd847c0d20d..8580b3996701b2b6a705188d225938a39e64f18f 100644
--- a/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
+++ b/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
@@ -85,13 +85,13 @@ module nanosoc_ss_cpu #(
     input  wire    [3:0] BOOTROM_0_HPROT,        // Protection control
     input  wire   [31:0] BOOTROM_0_HWDATA,       // Write data
     input  wire          BOOTROM_0_HMASTLOCK,    // Locked Sequence
+    input  wire          BOOTROM_0_HREADY,       // HREADY feedback
     output wire   [31:0] BOOTROM_0_HRDATA,       // Read data bus
-    output wire          BOOTROM_0_HREADY,       // HREADY feedback
     output wire          BOOTROM_0_HRESP,        // Transfer response
     output wire          BOOTROM_0_HREADYOUT,    // AHB ready out
     
     // IMEM 0 AHB Lite port
-    input  wire          IMEM_0_HSEL,             // Select
+    input  wire          IMEM_0_HSEL,            // Select
     input  wire   [31:0] IMEM_0_HADDR,           // Address bus
     input  wire    [1:0] IMEM_0_HTRANS,          // Transfer type
     input  wire          IMEM_0_HWRITE,          // Transfer direction
@@ -100,8 +100,8 @@ module nanosoc_ss_cpu #(
     input  wire    [3:0] IMEM_0_HPROT,           // Protection control
     input  wire   [31:0] IMEM_0_HWDATA,          // Write data
     input  wire          IMEM_0_HMASTLOCK,       // Locked Sequence
+    input  wire          IMEM_0_HREADY,          // HREADY feedback
     output wire   [31:0] IMEM_0_HRDATA,          // Read data bus
-    output wire          IMEM_0_HREADY,          // HREADY feedback
     output wire          IMEM_0_HRESP,           // Transfer response
     output wire          IMEM_0_HREADYOUT,       // AHB ready out
     
@@ -115,8 +115,8 @@ module nanosoc_ss_cpu #(
     input  wire    [3:0] DMEM_0_HPROT,           // Protection control
     input  wire   [31:0] DMEM_0_HWDATA,          // Write data
     input  wire          DMEM_0_HMASTLOCK,       // Locked Sequence
+    input  wire          DMEM_0_HREADY,          // HREADY feedback
     output wire   [31:0] DMEM_0_HRDATA,          // Read data bus
-    output wire          DMEM_0_HREADY,          // HREADY feedback
     output wire          DMEM_0_HRESP,           // Transfer response
     output wire          DMEM_0_HREADYOUT,       // AHB ready out
 
@@ -213,9 +213,8 @@ module nanosoc_ss_cpu #(
         .SYS_DATA_W      (SYS_DATA_W),
         .BOOTROM_ADDR_W  (BOOTROM_ADDR_W)
     ) u_region_bootrom_0 (
-        // Clock and Reset
+        // Clock (No Reset on Bootrom)
         .HCLK(SYS_HCLK),
-        .HRESETn(SYS_HRESETn),
 
         // AHB connection to Initiator
         .HSEL(BOOTROM_0_HSEL),
diff --git a/testcodes/bootloader/bootrom_gen.py b/testcodes/bootloader/bootrom_gen.py
index a053642b52d5dd3acf2c431913ce2044e7c1261e..dc308d365300f8d6dfba78f51a18ab76a16de272 100755
--- a/testcodes/bootloader/bootrom_gen.py
+++ b/testcodes/bootloader/bootrom_gen.py
@@ -30,15 +30,17 @@ v_template_head = f"""//--------------------------------------------------------
 module bootrom (
   input  wire CLK,
   input  wire EN,
-  input  wire [$address_width:2] ADDR,
+  input  wire [$word_address_width:0] W_ADDR,
   output reg [31:0] RDATA );
-always @(posedge CLK)
-if (EN)
-  case(ADDR[$address_width:2])
+always @(posedge CLK) begin
+if (EN) begin
+  case(W_ADDR)
 """
 
-v_template_foot = """    default : RDATA <= 32'h0;
-  endcase
+v_template_foot = """       default : RDATA <= 32'd0;
+      endcase
+    end
+  end
 endmodule"""
 
 
@@ -89,6 +91,7 @@ def output_construct(input_hex, address_width):
     temp_bootrom_obj = Template(v_template_head)
     temp_verilog = temp_bootrom_obj.substitute(
         address_width=address_width+1,
+        word_address_width=address_width-1,
         date=date_str
     )
     bootrom_verilog = temp_verilog
@@ -98,9 +101,9 @@ def output_construct(input_hex, address_width):
     # Append Hex Data to File
     for i, word in enumerate(hex_data):
         if address_width > 8:
-            temp_verilog = f"""    {address_width:d}'h{i:03x} : RDATA <= 32'h{word:08x}; // 0x{i*4:04x}\n"""
+            temp_verilog = f"""       {address_width:d}'h{i:03x} : RDATA <= 32'h{word:08x}; // 0x{i*4:04x}\n"""
         else:
-            temp_verilog = f"""    {address_width:d}'h{i:02x} : RDATA <= 32'h{word:08x}; // 0x{i*4:04x}\n"""
+            temp_verilog = f"""       {address_width:d}'h{i:02x} : RDATA <= 32'h{word:08x}; // 0x{i*4:04x}\n"""
         temp_binary = f"""{word:032b}\n"""
         bootrom_verilog += temp_verilog
         bootrom_binary  += temp_binary