diff --git a/flist/IP/CG092_cache.flist b/flist/IP/CG092_cache.flist
index 506a61ef86b5f90d44e5b6fb01ef0149ce13868f..70a24dfc4cd970c5e6ae1dd099bd77eb1095ab44 100644
--- a/flist/IP/CG092_cache.flist
+++ b/flist/IP/CG092_cache.flist
@@ -2,6 +2,7 @@
 // ============= Verilog library extensions ===========
 +libext+.v+.vlib
 
++incdir+$(ARM_IP_LIBRARY_PATH)/CG092/CG092-BU-50000-r2p0-00rel0/p_flash_cache_f0/logical/p_flash_cache_f0/verilog
 
 $(ARM_IP_LIBRARY_PATH)/CG092/CG092-BU-50000-r2p0-00rel0/p_flash_cache_f0/logical/p_flash_cache_f0/verilog/p_flash_cache_f0_bus_logic.v
 $(ARM_IP_LIBRARY_PATH)/CG092/CG092-BU-50000-r2p0-00rel0/p_flash_cache_f0/logical/p_flash_cache_f0/verilog/p_flash_cache_f0_mrb.v
diff --git a/flist/Top/ahb_QSPI.flist b/flist/Top/ahb_QSPI.flist
index a2a9b0e4a6b18583f854d8d3fac7537743fa4da2..c8b04005a79d359a5c623acc07633c71d89d822a 100644
--- a/flist/Top/ahb_QSPI.flist
+++ b/flist/Top/ahb_QSPI.flist
@@ -2,9 +2,9 @@
 
 $(SOCLABS_AHB_QSPI_DIR)/logical/top_ahb_qspi/logical/top_ahb_qspi.v
 $(SOCLABS_AHB_QSPI_DIR)/logical/apb_qspi_regs/logical/apb_qspi_regs.v
-$(SOCLABS_AHB_QSPI_DIR)/logical/ahb_qspi_interface/logical/ahb_qspi_interface.v
+$(SOCLABS_AHB_QSPI_DIR)/logical/ahb_qspi_interface/logical/ahb_qspi_interface.sv
 
-$(SOCLABS_AHB_QSPI_DIR)/logical/qspi_controller/logical/qspi_controller.v
+$(SOCLABS_AHB_QSPI_DIR)/logical/qspi_controller/logical/qspi_controller.sv
 $(SOCLABS_AHB_QSPI_DIR)/logical/qspi_controller/logical/qspi_controller_mux.v
 
 $(SOCLABS_AHB_QSPI_DIR)/logical/cache_subsytem/logical/cache_subsystem.v
diff --git a/flows/makefile.lint b/flows/makefile.lint
index 8f21a44a2388bb5c0bd4fefd2299c9eab00f0a2a..f17a4cf7a42b0a4aefe90fcc5a6fde8a51463d40 100644
--- a/flows/makefile.lint
+++ b/flows/makefile.lint
@@ -10,7 +10,6 @@
 #-----------------------------------------------------------------------------
 
 # Include Lint Checks
-include $(SOCLABS_SOCTOOLS_FLOW_DIR)/resources/hal/makefile.hal_checks
 
 # Lint-related Directories
 LINT_DIR = $(SOCLABS_AHB_QSPI_DIR)/lint/ahb_qspi
diff --git a/logical/ahb_qspi_interface/logical/ahb_qspi_interface.v b/logical/ahb_qspi_interface/logical/ahb_qspi_interface.sv
similarity index 64%
rename from logical/ahb_qspi_interface/logical/ahb_qspi_interface.v
rename to logical/ahb_qspi_interface/logical/ahb_qspi_interface.sv
index 00d5163f5cc2139f482549bd40014df608391f28..27243df5c819d367ffb2151d9e6fb4e9740de53b 100644
--- a/logical/ahb_qspi_interface/logical/ahb_qspi_interface.v
+++ b/logical/ahb_qspi_interface/logical/ahb_qspi_interface.sv
@@ -26,7 +26,7 @@ module ahb_qspi_interface #(
     output wire                 AHB_QSPI_WRITE,
     output wire                 AHB_QSPI_ADDR_EN,
     output wire [3:0]           AHB_QSPI_DUMMY_CYCLES,
-    output wire [3:0]           AHB_QSPI_N_RW_BYTES,
+    output reg [3:0]            AHB_QSPI_N_RW_BYTES,
     output reg  [21:0]          AHB_QSPI_ADDR,
     output wire [127:0]         AHB_QSPI_WDATA,
 
@@ -38,15 +38,21 @@ module ahb_qspi_interface #(
 );
 
 assign HRESP = 1'b0;
-
 assign AHB_QSPI_CMD = 8'h0B;
 assign AHB_QSPI_ADDR_EN = 1'b1;
 assign AHB_QSPI_DUMMY_CYCLES = 4'h4;
-assign AHB_QSPI_N_RW_BYTES = 4'hF;
 assign AHB_QSPI_READ=1'b1;
 assign AHB_QSPI_WRITE=1'b0;
 assign AHB_QSPI_WDATA = HWDATA;
 
+
+wire [31:0] AHB_QSPI_RDATA_W0 = {AHB_QSPI_RDATA[71:64],AHB_QSPI_RDATA[79:72],AHB_QSPI_RDATA[87:80],AHB_QSPI_RDATA[95:88]}; //AHB_QSPI_RDATA[95:64];
+wire [31:0] AHB_QSPI_RDATA_W1 = {AHB_QSPI_RDATA[39:32], AHB_QSPI_RDATA[47:40], AHB_QSPI_RDATA[55:48], AHB_QSPI_RDATA[63:56]}; //AHB_QSPI_RDATA[63:32]; //94000049
+wire [31:0] AHB_QSPI_RDATA_W2 = {AHB_QSPI_RDATA[7:0], AHB_QSPI_RDATA[15:8], AHB_QSPI_RDATA[23:16], AHB_QSPI_RDATA[31:24]};
+wire [31:0] AHB_QSPI_RDATA_W3 = {AHB_QSPI_RDATA[103:96],AHB_QSPI_RDATA[111:104],AHB_QSPI_RDATA[119:112],AHB_QSPI_RDATA[127:120]};//AHB_QSPI_RDATA[127:96];
+
+wire [127:0] AHB_QSPI_RDATA_i = {AHB_QSPI_RDATA_W3,AHB_QSPI_RDATA_W0, AHB_QSPI_RDATA_W1, AHB_QSPI_RDATA_W2};
+
 // AHB FSM
 enum {IDLE, WAIT_READ, WAIT_WRITE, WRITE, READ} current_state, next_state;
 
@@ -55,6 +61,7 @@ reg                 last_HSEL;
 reg [ADDR_W-1:0]    last_HADDR;
 reg                 last_HWRITE;
 reg [1:0]           last_HTRANS;
+reg [2:0]           last_HSIZE;
 
 // 
 reg         qspi_ready;
@@ -68,6 +75,7 @@ always @(posedge HCLK or negedge HRESETn) begin
         last_HADDR  <= {ADDR_W{1'b0}};
         last_HWRITE <= 1'b0;
         last_HTRANS <= 2'b00;
+        last_HSIZE  <= 3'h0;
 
         current_state <= IDLE;
     end else begin 
@@ -75,6 +83,7 @@ always @(posedge HCLK or negedge HRESETn) begin
         last_HADDR  <= HADDR;
         last_HWRITE <= HWRITE;
         last_HTRANS <= HTRANS;
+        last_HSIZE  <= HSIZE;
 
         current_state <= next_state;
     end
@@ -82,13 +91,33 @@ end
 
 always @(*) begin
     next_state = IDLE;
+
     case(current_state)
         IDLE:           if(HTRANS==2'b00)
                             next_state = IDLE;
-                        else if(HSELx & HWRITE & ~qspi_ready)
+                        else if(HSELx & HWRITE & ~qspi_ready) begin
+                            case(HSIZE)
+                                3'b000: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b001: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b010: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b011: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b100: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                default: AHB_QSPI_N_RW_BYTES = 4'hF;
+                            endcase
+
                             next_state = WAIT_WRITE;
-                        else if(HSELx & ~qspi_ready)
+                        end
+                        else if(HSELx & ~qspi_ready) begin
+                            case(HSIZE)
+                                3'b000: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b001: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b010: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b011: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                3'b100: AHB_QSPI_N_RW_BYTES = 4'hF;
+                                default: AHB_QSPI_N_RW_BYTES = 4'hF;
+                            endcase
                             next_state = WAIT_READ;
+                        end
         WAIT_WRITE:     if(qspi_ready)
                             next_state = WRITE;
                         else 
@@ -120,14 +149,14 @@ always @(posedge HCLK or negedge HRESETn) begin
                 AHB_QSPI_ENABLE <= 1'b0;
             if(qspi_started==1'b1) begin 
                 if(AHB_QSPI_BUSY==1'b0) begin
-                    HRDATA <= AHB_QSPI_RDATA;
+                    HRDATA <= AHB_QSPI_RDATA_i;
                     qspi_ready <= 1'b1;
                 end
             end
         end else begin 
             qspi_started <= 1'b0;
             qspi_ready <=1'b0;
-            AHB_QSPI_ADDR <= HADDR;
+            AHB_QSPI_ADDR <= {HADDR[ADDR_W-1:4],4'b0000};
         end
     end
 
diff --git a/logical/qspi_controller/logical/qspi_controller.v b/logical/qspi_controller/logical/qspi_controller.sv
similarity index 100%
rename from logical/qspi_controller/logical/qspi_controller.v
rename to logical/qspi_controller/logical/qspi_controller.sv
diff --git a/logical/top_ahb_qspi/logical/top_ahb_qspi.v b/logical/top_ahb_qspi/logical/top_ahb_qspi.v
index daa7173d68366ec23527083e993dad5b8718529a..f4dae70a2be81f6b63285160f7a07c375b01a920 100644
--- a/logical/top_ahb_qspi/logical/top_ahb_qspi.v
+++ b/logical/top_ahb_qspi/logical/top_ahb_qspi.v
@@ -1,4 +1,24 @@
-
+//-----------------------------------------------------------------------------
+// AHB QSPI Top level
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// Daniel Newbrook (d.newbrook@soton.ac.uk)
+// 
+// Copyright � 2021-4, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+// Purpose:
+//   
+//  
+//-----------------------------------------------------------------------------
+// Modules instantiated:
+//  cmsdk_apb_slave_mux (u_cmsdk_apb_slave_mux)
+//  cache_subsystem     (u_cache_subsystem)
+//  qspi_controller_mux (u_qspi_controller_mux)
+//  apb_qspi_regs       (u_apb_qspi_regs)
+//  ahb_qspi_interface  (u_ahb_qspi_interface)
+//  qspi_controller     (u_qspi_controller)
 
 module top_ahb_qspi #(
     parameter ADDR_W = 32,
@@ -128,7 +148,7 @@ cache_subsystem u_cache_subsystem(
     .HSELS(HSELx),
     .HADDRS(HADDR[21:0]),
     .HBURSTS(HBURST),
-    .HMASTLOCKS(1'b1),
+    .HMASTLOCKS(1'b0),
     .HTRANSS(HTRANS),
     .HSIZES(HSIZE),
     .HPROTS(HPROT),
diff --git a/verif/cocotb/makefile b/verif/cocotb/makefile
index e5ec2d91353ec704a200057be032d63aaa24c360..6db4f3607f3fd229ee793d031468104008bb16ed 100644
--- a/verif/cocotb/makefile
+++ b/verif/cocotb/makefile
@@ -20,7 +20,7 @@
 
 TOPLEVEL_LANG = verilog
 
-SIM ?= icarus
+SIM ?= questa
 WAVES ?= 0
 GUI ?= 0