diff --git a/controller/verilog/socdebug_ft1248_control.v b/controller/verilog/socdebug_ft1248_control.v
index 69bd9753d28f6832a3682e72628ec8223581957f..14fc26a75ca941cf26aa353b8041626dec5d5a8d 100755
--- a/controller/verilog/socdebug_ft1248_control.v
+++ b/controller/verilog/socdebug_ft1248_control.v
@@ -110,13 +110,13 @@ module socdebug_ft1248_control #(
 
   generate 
     if (FT1248_WIDTH == 1) begin
-      assign ft_rdmasked[7:1] =  7'b1111111;
+      assign ft_rdmasked[7:1] =  {7{1'b1}};
     end
   endgenerate
 
   assign ft_rdmasked[0] = ft_miosio_i[0];
   assign ft_miosio_o[0] =  ft_reg[0];
-  assign ft_miosio_e[0]  =  ft_state[1];
+  assign ft_miosio_e[0] =  ft_state[1];
   assign ft_miosio_z[0] = ~ft_state[1];
 
   assign ft_clk_o =  ft_state[0];
@@ -139,12 +139,12 @@ module socdebug_ft1248_control #(
   always @(posedge clk or negedge resetn )
   begin
     if (!resetn) begin
-      ft_clkcnt_r <= 0;
-      ft_clken    <= 0;
+      ft_clkcnt_r <= 8'h00;
+      ft_clken    <= 1'b0;
       end
     else begin
       ft_clken    <= (ft_clkcnt_r == ft_clkdiv);
-      ft_clkcnt_r <= (ft_clkcnt_r == ft_clkdiv) ? 0 : (ft_clkcnt_r +1);
+      ft_clkcnt_r <= (ft_clkcnt_r == ft_clkdiv) ? 8'h00 : ((ft_clkcnt_r + 8'h01) & 8'hff);
       end
   end
 
@@ -161,10 +161,10 @@ module socdebug_ft1248_control #(
   always @(posedge clk or negedge resetn )
   begin
     if (!resetn) begin
-      ft_miso_i_sync_1   <= 1;
-      ft_miosio_i0_sync_1 <= 1;
-      ft_miso_i_sync     <= 1;
-      ft_miosio_i0_sync   <= 1;
+      ft_miso_i_sync_1   <= 1'b1;
+      ft_miosio_i0_sync_1 <= 1'b1;
+      ft_miso_i_sync     <= 1'b1;
+      ft_miosio_i0_sync   <= 1'b1;
       end
     else begin
       ft_miso_i_sync_1   <= ft_miso_i;
@@ -213,35 +213,49 @@ module socdebug_ft1248_control #(
 
   reg ssn_del;
   always @(posedge clk or negedge resetn)
-    if (!resetn)
+  begin
+    if (!resetn) begin
       ssn_del  <= 1'b1;
-    else if (ft_clken)
+      end
+    else if (ft_clken) begin
         ssn_del  <= ft_ssn_o;
+        end
+  end
   wire ssn_start = ft_ssn_o & ssn_del;
 
   // FTDI1248 state machine
 
   always @(posedge clk or negedge resetn)
+  begin
     if (!resetn) begin
       ft_state <= FT_0_IDLE;
-      ft_reg   <= 0;
-      txdata   <= 0;
-      rxdone   <= 0;
-      ft_wcyc  <= 0;
-      ft_txf   <= 1; // ftdi channel  TXE# ('1' full)
-      ft_rxe   <= 1; // ftdi channel  RXF# ('1' empty)
-      ft_nak   <= 0;
+      ft_reg   <= {9{1'b0}};
+      txdata   <= {9{1'b0}};
+      rxdone   <= 1'b0;
+      ft_wcyc  <= 1'b0;
+      ft_txf   <= 1'b1; // ftdi channel  TXE# ('1' full)
+      ft_rxe   <= 1'b1; // ftdi channel  RXF# ('1' empty)
+      ft_nak   <= 1'b0;
     end else begin
       ft_txf <= (ft_state==FT_0_IDLE) ? (ft_miosio_i[0] | ft_miosio_i0_sync) : 1'b1; //ft_txf & !( ft_wcyc &(ft_state==FT_ZBT_CLKHI) & ft_miso_i);
       ft_rxe <= (ft_state==FT_0_IDLE) ? (ft_miso_i | ft_miso_i_sync)  : 1'b1; //ft_rxe & !(!ft_wcyc & (ft_state==FT_ZBT_CLKHI) & ft_miso_i);
       txdata[8] <= txdata[8] & !txd_tready; // tx_valid handshake
       rxdone   <= (ft_clken & (ft_state==FT_ZWD_CLKLO) & !ft_nak) | (rxdone & !rxd_tvalid); // hold until acknowledged
-      if (ft_clken)
+      if (ft_clken) begin
         case (ft_state)
         FT_0_IDLE: begin // RX req priority
-          if (ssn_start & ft_rxreq) begin ft_reg <= rcmdpatt; ft_state <= FT_ZCMD_CLKLO; end
-          else if (ssn_start & ft_txreq) begin ft_reg <= wcmdpatt; ft_state <= FT_ZCMD_CLKLO; ft_wcyc <= 1; end
-          else ft_state <= (!ft_txf | !ft_rxe | (FT1248_CLKON!=0)) ? FT_1_IDLE : FT_0_IDLE;
+          if (ssn_start && ft_rxreq) begin
+            ft_reg <= rcmdpatt;
+            ft_state <= FT_ZCMD_CLKLO;
+            end
+          else if (ssn_start && ft_txreq) begin
+            ft_reg <= wcmdpatt;
+            ft_state <= FT_ZCMD_CLKLO;
+            ft_wcyc <= 1'b1;
+            end
+          else begin
+            ft_state <= (!ft_txf || !ft_rxe || (FT1248_CLKON != 0)) ? FT_1_IDLE : FT_0_IDLE;
+            end
           end
         FT_1_IDLE:
           ft_state <= FT_0_IDLE;
@@ -250,42 +264,115 @@ module socdebug_ft1248_control #(
         FT_CMD_CLKHI:
           ft_state <= FT_CMD_CLKLO;
         FT_CMD_CLKLO: // 2, 4 or 7 shifts
-          if      (bwid8) begin ft_reg <= FT_ZBT_CLKHI; end 
-          else if (bwid4) begin ft_reg <= {4'b0000,ft_reg[8:4]}; ft_state <= (|ft_reg[8:5]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI; end 
-          else if (bwid2) begin ft_reg <= {  2'b00,ft_reg[8:2]}; ft_state <= (|ft_reg[8:3]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI; end 
-          else            begin ft_reg <= {   1'b0,ft_reg[8:1]}; ft_state <= (|ft_reg[8:3]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI; end 
+          if (bwid8) begin
+            ft_state <= FT_ZBT_CLKHI;
+            end 
+          else if (bwid4) begin
+            ft_reg <= {4'b0000,ft_reg[8:4]};
+            ft_state <= (|ft_reg[8:5]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI;
+            end 
+          else if (bwid2) begin
+            ft_reg <= {  2'b00,ft_reg[8:2]};
+            ft_state <= (|ft_reg[8:3]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI;
+            end 
+          else begin
+            ft_reg <= {   1'b0,ft_reg[8:1]};
+            ft_state <= (|ft_reg[8:3]) ? FT_CMD_CLKHI : FT_ZBT_CLKHI;
+            end 
         FT_ZBT_CLKHI:
           ft_state <= FT_ZBT_CLKLO;
         FT_ZBT_CLKLO:
-          if    (ft_wcyc) begin ft_reg <= {1'b1,rxd_tdata}; ft_state <= FT_WD_CLKHI; end
-          else            begin ft_reg <=  9'b011111111;    ft_state <= FT_RD_CLKHI; end
+          if    (ft_wcyc) begin
+            ft_reg <= {1'b1,rxd_tdata};
+            ft_state <= FT_WD_CLKHI;
+            end
+          else begin
+            ft_reg <=  9'b011111111;
+            ft_state <= FT_RD_CLKHI;
+            end
         FT_WD_CLKHI:
-          if (ft_miso_i & ft_reg[8]) begin ft_nak <= 1'b1; ft_state <= FT_ZWD_CLKLO; end // NAK terminate on first cycle
-          else if (bwid8) ft_state <=  (ft_reg[8])   ? FT_WD_CLKLO : FT_ZWD_CLKLO; // special case repeat on write data
-          else if (bwid4) ft_state <= (|ft_reg[8:5]) ? FT_WD_CLKLO : FT_ZWD_CLKLO; 
-          else if (bwid2) ft_state <= (|ft_reg[8:3]) ? FT_WD_CLKLO : FT_ZWD_CLKLO; 
-          else            ft_state <= (|ft_reg[8:2]) ? FT_WD_CLKLO : FT_ZWD_CLKLO; 
+          if (ft_miso_i && ft_reg[8]) begin
+            ft_nak <= 1'b1;
+            ft_state <= FT_ZWD_CLKLO;
+            end // NAK terminate on first cycle
+          else if (bwid8) begin
+            ft_state <=  (ft_reg[8])   ? FT_WD_CLKLO : FT_ZWD_CLKLO; // special case repeat on write data
+            end
+          else if (bwid4) begin
+            ft_state <= (|ft_reg[8:5]) ? FT_WD_CLKLO : FT_ZWD_CLKLO;
+            end
+          else if (bwid2) begin
+             ft_state <= (|ft_reg[8:3]) ? FT_WD_CLKLO : FT_ZWD_CLKLO;
+             end
+          else begin
+            ft_state <= (|ft_reg[8:2]) ? FT_WD_CLKLO : FT_ZWD_CLKLO;
+            end
         FT_WD_CLKLO:
-          if      (bwid8) begin ft_reg <= {   1'b0,ft_reg[7:0]}; ft_state <= FT_WD_CLKHI; end // clear top flag
-          else if (bwid4) begin ft_reg <= {4'b0000,ft_reg[8:4]}; ft_state <= FT_WD_CLKHI; end // shift 4 bits right
-          else if (bwid2) begin ft_reg <= {  2'b00,ft_reg[8:2]}; ft_state <= FT_WD_CLKHI; end // shift 2 bits right
-          else            begin ft_reg <= {   1'b0,ft_reg[8:1]}; ft_state <= FT_WD_CLKHI; end // shift 1 bit right
+          if      (bwid8) begin
+            ft_reg <= {   1'b0,ft_reg[7:0]};
+            ft_state <= FT_WD_CLKHI;
+            end // clear top flag
+          else if (bwid4) begin
+            ft_reg <= {4'b0000,ft_reg[8:4]};
+            ft_state <= FT_WD_CLKHI;
+            end // shift 4 bits right
+          else if (bwid2) begin
+            ft_reg <= {  2'b00,ft_reg[8:2]};
+            ft_state <= FT_WD_CLKHI;
+            end // shift 2 bits right
+          else begin
+            ft_reg <= {   1'b0,ft_reg[8:1]};
+            ft_state <= FT_WD_CLKHI;
+            end // shift 1 bit right
         FT_ZWD_CLKLO:
-          if (ft_nak) begin ft_nak<= 1'b0; ft_state <= FT_0_IDLE;  ft_wcyc <= 1'b0; end // terminate without TX handshake
-          else begin ft_state <= FT_0_IDLE;  ft_wcyc <= 1'b0; end
+          if (ft_nak) begin
+            ft_nak<= 1'b0;
+            ft_state <= FT_0_IDLE;
+            ft_wcyc <= 1'b0;
+            end // terminate without TX handshake
+          else begin
+            ft_state <= FT_0_IDLE;
+            ft_wcyc <= 1'b0;
+            end
         FT_RD_CLKHI: // capture iodata pins end of CLKHI phase
-          if (ft_miso_i & (&ft_reg[7:0])) begin ft_nak <= 1'b1; ft_state <= FT_RD_CLKLO; end // NAK terminate on first cycle
-          else if (bwid8) begin ft_reg <= (ft_reg[0]) ? {ft_rdmasked[7:0],1'b1} : {ft_reg[8:1],1'b0}; ft_state <= FT_RD_CLKLO; end // 8-bit read twice
-          else if (bwid4) begin ft_reg <= {ft_rdmasked[3:0],ft_reg[8:4]}; ft_state <= FT_RD_CLKLO; end 
-          else if (bwid2) begin ft_reg <= {ft_rdmasked[1:0],ft_reg[8:2]}; ft_state <= FT_RD_CLKLO; end 
-          else            begin ft_reg <= {ft_rdmasked[  0],ft_reg[8:1]}; ft_state <= FT_RD_CLKLO; end 
+          if (ft_miso_i && (&ft_reg[7:0])) begin
+            ft_nak <= 1'b1;
+            ft_state <= FT_RD_CLKLO;
+            end // NAK terminate on first cycle
+          else if (bwid8) begin
+            ft_reg <= (ft_reg[0]) ? {ft_rdmasked[7:0],1'b1} : {ft_reg[8:1],1'b0};
+            ft_state <= FT_RD_CLKLO;
+            end // 8-bit read twice
+          else if (bwid4) begin
+            ft_reg <= {ft_rdmasked[3:0],ft_reg[8:4]};
+            ft_state <= FT_RD_CLKLO;
+            end 
+          else if (bwid2) begin
+            ft_reg <= {ft_rdmasked[1:0],ft_reg[8:2]};
+            ft_state <= FT_RD_CLKLO;
+            end 
+          else begin
+            ft_reg <= {ft_rdmasked[  0],ft_reg[8:1]};
+            ft_state <= FT_RD_CLKLO;
+            end 
         FT_RD_CLKLO:
-          if (ft_nak) begin ft_nak<= 1'b0; ft_state <= FT_0_IDLE; txdata <= 9'b0; end // terminate without TX handshake
-          else if (ft_reg[0]) begin ft_state <= FT_RD_CLKHI; ft_reg[0] <= !(bwid8); end // loop until all 8 bits shifted in (or 8-bit read repeated)
-          else begin ft_state <= FT_0_IDLE; txdata <= {1'b1,ft_reg[8:1]}; end
+          if (ft_nak) begin
+            ft_nak<= 1'b0;
+            ft_state <= FT_0_IDLE;
+            txdata <= 9'b000000000;
+            end // terminate without TX handshake
+          else if (ft_reg[0]) begin
+            ft_state <= FT_RD_CLKHI;
+            ft_reg[0] <= !(bwid8);
+            end // loop until all 8 bits shifted in (or 8-bit read repeated)
+          else begin
+            ft_state <= FT_0_IDLE;
+            txdata <= {1'b1,ft_reg[8:1]};
+            end
         default:
           ft_state <= FT_0_IDLE;
         endcase
+        end
       end
-    
+    end
 endmodule
diff --git a/hal/socdebug_controller_ip.waive b/hal/socdebug_controller_ip.waive
index 1aafd2125bb6c8a60e85f389e807ea4d95625121..47c71fbc412bb056f03bb73407d888fddfbd0d4c 100644
--- a/hal/socdebug_controller_ip.waive
+++ b/hal/socdebug_controller_ip.waive
@@ -40,3 +40,13 @@ lint_checking designunit = socdebug_adp_control
     INSYNC off;
     
 }
+
+lint_checking designunit = socdebug_ft1248_control
+{    
+    // Not Top-level in design_info
+    TPOUNR off;
+    
+    // single bit bus configuration permitted
+    ONPNSG off;
+    
+}
diff --git a/makefile b/makefile
index 73b6378362a81b590391f70e64fd26d28184e2b3..4efba84ff06680c305c80408a648d50b8bdff5b7 100644
--- a/makefile
+++ b/makefile
@@ -12,7 +12,7 @@
 include $(SOCLABS_SOCTOOLS_FLOW_DIR)/resources/hal/makefile.hal_checks
 
 LINT_DIR = $(SOCLABS_PROJECT_DIR)/lint/socdebug
-LINT_INFO_DIR = $(SOCLABS_SOCDEBUG_TECH_DIR)/hal 
+LINT_INFO_DIR = $(SOCLABS_SOCDEBUG_TECH_DIR)/hal
 
 # Core Design Filelist
 DESIGN_VC   ?= $(SOCLABS_SOCDEBUG_TECH_DIR)/flist/socdebug.flist